CRMSecElTermGenerator Derived Type

type, public, extends(TermGenerator) :: CRMSecElTermGenerator

TermGenerator object used to generate secondary electron source/sink terms based on associated variables in species list and CRM modelbound data.


Components

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

True only if user explicitly sets it to true

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

Population change associated with each source term reaction

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

Individual term variable data including densities and required modelbound data

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

Evolved distribution name

type(StringArray), private, allocatable, dimension(:) :: implicitVars

Implicit density names (corresponding to last inState in transitions)

type(EnvironmentWrapper), private, pointer :: envPointer => null()

Finalization Procedures

final :: finalizeCRMSecElGenerator


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 :: setImplicitTerms

  • interface

    private module subroutine setImplicitTerms(this, impTerms)

    Move allocation of impTerms to this%implicitTerms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    type(MatTermContainer), intent(inout), allocatable, dimension(:) :: impTerms

procedure, public :: setGeneralTerms

  • interface

    private module subroutine setGeneralTerms(this, genTerms)

    Move allocation of genTerms to this%generalTerms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    type(TermContainer), intent(inout), allocatable, dimension(:) :: genTerms

procedure, public :: setGeneratorPrefix

  • interface

    private module subroutine setGeneratorPrefix(this, prefix)

    Set prefix for added term names

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    character(len=*), intent(in) :: prefix

procedure, public :: getNumImplicitTerms

  • interface

    private pure module function getNumImplicitTerms(this) result(numTerms)

    Get size of this%implicitTerms

    Arguments

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

    Return Value integer(kind=ik)

procedure, public :: getNumGeneralTerms

  • interface

    private pure module function getNumGeneralTerms(this) result(numTerms)

    Get size of this%generalTerms

    Arguments

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

    Return Value integer(kind=ik)

procedure, public :: moveTerms

  • interface

    private module subroutine moveTerms(this, modelObj, impTermImpGroups, impTermGenGroups, genTermGroups)

    Move terms to modelObj

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    class(Model), intent(inout) :: modelObj
    type(IntArray), intent(in), optional, dimension(:) :: impTermImpGroups
    type(IntArray), intent(in), optional, dimension(:) :: impTermGenGroups
    type(IntArray), intent(in), optional, dimension(:) :: genTermGroups

procedure, public :: init => initCRMSecElTermGenerator

  • interface

    private module subroutine initCRMSecElTermGenerator(this, envObj, crmData, distributionName, generatorTag, includedTransitionIndices)

    Constructor routine for CRM secondary electron source/sink term generator

    Arguments

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

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

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

    CRM data object used to get transition data

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

    Evolved distribution name

    character(len=*), intent(in) :: generatorTag
    integer(kind=ik), intent(in), optional, dimension(:) :: includedTransitionIndices

    Optional list of transitions to be included in source calculations by this generator. Defaults to all transitions

procedure, public :: generate => generateSecElSourceTerms

  • interface

    private module subroutine generateSecElSourceTerms(this, mbData)

    Generates and allocates parent implicit secondary electron source/sink terms

    Arguments

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