BasicNormalization Derived Type

type, public, extends(Normalization) :: BasicNormalization

Basic normalization based on electron quantities and containing most common values


Components

Type Visibility Attributes Name Initial
logical, public :: userDefined = .false.

True only if user explicitly sets it to true


Type-Bound Procedures

procedure, public :: isDefined => isDefinedObject

  • interface

    private pure module function isDefinedObject(this) result(defined)

    Getter for userDefined

    Arguments

    Type IntentOptional Attributes Name
    class(Object), intent(in) :: this

    Return Value logical

procedure, public :: makeDefined => makeDefinedObject

  • interface

    private pure module subroutine makeDefinedObject(this)

    Set userDefined to .true.

    Arguments

    Type IntentOptional Attributes Name
    class(Object), intent(inout) :: this

procedure, public :: makeUndefined => makeUndefinedObject

  • interface

    private pure module subroutine makeUndefinedObject(this)

    Set userDefined to .false.

    Arguments

    Type IntentOptional Attributes Name
    class(Object), intent(inout) :: this

procedure, public :: getNormalizationValue

  • interface

    private pure module function getNormalizationValue(this, name) result(val)

    Get normalization value associated with passed name

    Arguments

    Type IntentOptional Attributes Name
    class(Normalization), intent(in) :: this
    character(len=*), intent(in) :: name

    Return Value real(kind=rk)

procedure, public :: getCustomNormalization

  • interface

    private pure module function getCustomNormalization(this, names, powers, multConst) result(val)

    Get normalization value calculated as the product of normalization values with passed names raised to corresponding powers and optionally multiplied by a constant

    Arguments

    Type IntentOptional Attributes Name
    class(Normalization), intent(in) :: this
    type(StringArray), intent(in), dimension(:) :: names
    real(kind=rk), intent(in), dimension(:) :: powers
    real(kind=rk), intent(in), optional :: multConst

    Return Value real(kind=rk)

procedure, public :: setNormalizationVals

  • interface

    private pure module subroutine setNormalizationVals(this, normVals)

    Set normalization values array of normalization object

    Arguments

    Type IntentOptional Attributes Name
    class(Normalization), intent(inout) :: this
    type(NamedReal), intent(in), dimension(:) :: normVals

procedure, public :: init => initNormalizationFromJSON

  • interface

    private module subroutine initNormalizationFromJSON(this, jsonCont, mpiCont)

    Initialize normalization based on config.json, loading temperature, density, and reference ion charge. The resulting object will have the following normalization quantities:

    1. density (in m^{-3})
    2. temperature (in eV)
    3. reference ion Z
    4. velocity (used for the velocity grid)
    5. speed (here equal to the velocity)
    6. time (normalized to e-i collision time)
    7. length (velocity * time)
    8. EField (here elMass * velocity/(elCharge * time))
    9. heatFlux (here elMass * density * velocity^3 /2)
    10. crossSection (here 1/(timedensityvelocity))

    All names taken from key_names module

    Arguments

    Type IntentOptional Attributes Name
    class(BasicNormalization), intent(inout) :: this
    type(JSONController), intent(inout) :: jsonCont

    JSONController used to get parameters from ./config.json

    type(MPIController), intent(inout) :: mpiCont

    MPIController used with JSONController