crm_variable_boltzmann_term_generator_class Module

Houses TermGenerator object used to generate Boltzmann terms with variable inelastic mappings based on associated variables in species list and CRM modelbound data TODO: Could be merged with fixed boltzmann term generator in refactor



Interfaces

interface

  • private module subroutine initCRMVarBoltzTermGenerator(this, envObj, normObj, crmData, distributionName, includedTransitionIndices, evolvedHarmonic, generatorTag, absorptionTerms, superelasticTerms, associatedVariableIndex)

    Constructor routine for CRM Variable Boltzmann term generator

    Arguments

    Type IntentOptional Attributes Name
    class(CRMVarBoltzTermGenerator), intent(inout) :: this
    type(EnvironmentWrapper), intent(in), target :: envObj

    Environment wrapper used to get species data, partition info, etc.

    class(Normalization), intent(in) :: normObj

    Normalization object used to calculate the normalization constant for the generated terms

    type(ModelboundCRMData), intent(in) :: crmData

    CRM data object used to get transition data

    character(len=*), intent(in) :: distributionName

    Evolved and implicit distribution name

    integer(kind=ik), intent(in), dimension(:) :: includedTransitionIndices

    List of transitions to be included in calculations by this generator.

    integer(kind=ik), intent(in) :: evolvedHarmonic

    Index of harmonic for which this generator should be generating terms

    character(len=*), intent(in) :: generatorTag
    logical, intent(in), optional :: absorptionTerms

    True if this is an absorption term stencil generator. Defaults to false.

    logical, intent(in), optional :: superelasticTerms

    True if this is a superelastic term stencil generator. Defaults to false.

    integer(kind=ik), intent(in), optional :: associatedVariableIndex

    Density index in associated variable array. Defaults to 1.

interface

  • private module subroutine generateVarBoltzTerms(this, mbData)

    Generates and allocates parent implicit variable Boltzmann terms

    Arguments

    Type IntentOptional Attributes Name
    class(CRMVarBoltzTermGenerator), intent(inout) :: this
    class(ModelboundData), intent(in), optional :: mbData

interface

  • private elemental module subroutine finalizeCRMVarBoltzTermGenerator(this)

    Deallocate pointer component

    Arguments

    Type IntentOptional Attributes Name
    type(CRMVarBoltzTermGenerator), intent(inout) :: this

Derived Types

type, public, extends(TermGenerator) ::  CRMVarBoltzTermGenerator

TermGenerator object used to generate electron Boltzmann terms with variable inelastic mappings based on associated variables in species list and CRM modelbound data. Assumes that all passed transition indices correspond to variable inlastic mapping transitions. Assumes that the cross-section values in the transitions include any nonlinear normalization dependence (e.g. recombination etc.)

Components

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

True only if user explicitly sets it to true

type(VarData), private, allocatable, dimension(:) :: vData

Individual term variable data including densities and required modelbound data

character(len=:), private, allocatable :: distributionName

Evolved and implicit distribution name

integer(kind=ik), private, allocatable, dimension(:) :: transitionIndices

Included transition indices

logical, private :: absorptionTerms

True if generating absorption terms. Defaults to false.

logical, private :: superelasticTerms

True if generating superelastic terms. Defaults to false.

integer(kind=ik), private :: evolvedHarmonic

Index of harmonic for which this generator should be generating terms

type(EnvironmentWrapper), private, pointer :: envPointer => null()
real(kind=rk), private :: normConst

Normalization constant for the generated terms

Finalizations Procedures

final :: finalizeCRMVarBoltzTermGenerator

Type-Bound Procedures

procedure, public :: isDefined => isDefinedObject
procedure, public :: makeDefined => makeDefinedObject
procedure, public :: makeUndefined => makeUndefinedObject
procedure, public :: setImplicitTerms
procedure, public :: setGeneralTerms
procedure, public :: setGeneratorPrefix
procedure, public :: getNumImplicitTerms
procedure, public :: getNumGeneralTerms
procedure, public :: moveTerms
procedure, public :: init => initCRMVarBoltzTermGenerator
procedure, public :: generate => generateVarBoltzTerms