FixedECSTransition Derived Type

type, public, extends(Transition) :: FixedECSTransition

Transition object with a fixed transition energy and cross-section, which takes moments of a distribution function to calculate rates


Components

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

True only if user explicitly sets it to true

real(kind=rk), private :: transitionEnergy
type(VSpace), private, pointer :: vSpaceRef

Reference to velocity space object used in moment-taking

logical, private :: takeMomentumMoment

True if the momentum rate should be allocated and updated by taking the first moment of the l = 1 harmonic

integer(kind=ik), private :: l1HarmonicInd

Index of the l=1 m = 0 harmonic on the harmonic grid

integer(kind=ik), private :: distFunVarIndex

Variable index of the distribution function to be used in moment-taking

integer(kind=ik), private :: locNumX

Size of local rate vectors

integer(kind=ik), private :: fixedWIndex

Index of the inelastic weigth array corresponding to this transition


Finalization Procedures

final :: finalizeFixedECSTransition


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

  • interface

    private pure module function getIngoingStates(this) result(inStates)

    Getter for ingoingStates

    Arguments

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

    Return Value integer(kind=ik), allocatable, dimension(:)

procedure, public :: getOutgoingStates

  • interface

    private pure module function getOutgoingStates(this) result(outStates)

    Getter for outgoingStates

    Arguments

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

    Return Value integer(kind=ik), allocatable, dimension(:)

procedure, public :: setStates

  • interface

    private pure module subroutine setStates(this, inStates, outStates)

    Setter for both ingoing and outgoing states

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    integer(kind=ik), intent(in), dimension(:) :: inStates

    Ingoing state IDs

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

    Outgoing state IDs

procedure, public :: setRate

  • interface

    private pure module subroutine setRate(this, rate)

    Setter for rate values

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    real(kind=rk), intent(in), dimension(:) :: rate

procedure, public :: getRate

  • interface

    private pure module function getRate(this) result(rate)

    Getter for rate values

    Arguments

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

    Return Value real(kind=rk), allocatable, dimension(:)

procedure, public :: setRateMomentum

  • interface

    private pure module subroutine setRateMomentum(this, rate)

    Setter for rateMomentum values

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    real(kind=rk), intent(in), dimension(:) :: rate

procedure, public :: getRateMomentum

  • interface

    private pure module function getRateMomentum(this) result(rate)

    Getter for rateMomentum values

    Arguments

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

    Return Value real(kind=rk), allocatable, dimension(:)

procedure, public :: setRateEnergy

  • interface

    private pure module subroutine setRateEnergy(this, rate)

    Setter for rateEnergy

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    real(kind=rk), intent(in), dimension(:) :: rate

procedure, public :: getRateEnergy

  • interface

    private pure module function getRateEnergy(this) result(rate)

    Getter for rateEnergy

    Arguments

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

    Return Value real(kind=rk), allocatable, dimension(:)

procedure, public :: setCrossSection

  • interface

    private pure module subroutine setCrossSection(this, crossSection)

    Setter for crossSection

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    real(kind=rk), intent(in), dimension(:,:) :: crossSection

procedure, public :: setCrossSectionCol

  • interface

    private pure module subroutine setCrossSectionCol(this, crossSection, col)

    Set cross-section values in column col

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    real(kind=rk), intent(in), dimension(:) :: crossSection
    integer(kind=ik), intent(in) :: col

procedure, public :: getCrossSectionCol

  • interface

    private pure module function getCrossSectionCol(this, col) result(crossSection)

    Get cross-section values from column col

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(in) :: this
    integer(kind=ik), intent(in) :: col

    Return Value real(kind=rk), allocatable, dimension(:)

procedure, public :: includesElDensity

  • interface

    private pure module function includesElDensity(this) result(includesDens)

    Check whether rates in this transition include an electron density factor

    Arguments

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

    Return Value logical

procedure, public :: setIncludeElectronDensity

  • interface

    private pure module subroutine setIncludeElectronDensity(this, includeDens)

    Setter for rateContainsElDensity

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    logical, intent(in) :: includeDens

procedure, public :: setCSDim

  • interface

    private pure module subroutine setCSDim(this, csDim)

    Setter for csDim

    Arguments

    Type IntentOptional Attributes Name
    class(Transition), intent(inout) :: this
    integer(kind=ik), intent(in) :: csDim

procedure, public :: getCSDim

  • interface

    private pure module function getCSDim(this) result(csDim)

    Getter for csDim

    Arguments

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

    Return Value integer(kind=ik)

procedure, public :: getRateSize

  • interface

    private pure module function getRateSize(this) result(rateSize)

    Getter for rate array length

    Arguments

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

    Return Value integer(kind=ik)

procedure, public :: init => initFixedECSTransition

  • interface

    private pure module subroutine initFixedECSTransition(this, locNumX, inStates, outStates, energy, crossSection, distVarIndex, refVSpace, fixedWIndex, momentumMoment, l1Index)

    Initialization routine for FixedECSTransition object

    Arguments

    Type IntentOptional Attributes Name
    class(FixedECSTransition), intent(inout) :: this
    integer(kind=ik), intent(in) :: locNumX

    Local number of spatial cells

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

    Pre-transition states

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

    Post-transition states

    real(kind=rk), intent(in) :: energy

    Transition energy

    real(kind=rk), intent(in), dimension(:,:) :: crossSection

    Cross-section harmonics

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

    Distribution function variable index

    type(VSpace), intent(inout), target :: refVSpace

    Target for the reference pointer

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

    Index of the inelastic weight array corresponding to this transition

    logical, intent(in), optional :: momentumMoment

    Set to true if the momentum rate should be calculated

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

    Index of the l=1 harmonic - must be provided if calculating momentum rate

procedure, public :: update => updateRates

  • interface

    private module subroutine updateRates(this, varCont, hostModel, hostData, updatePriority)

    Update transition and moment exchange rate (if applicable)

    Arguments

    Type IntentOptional Attributes Name
    class(FixedECSTransition), intent(inout) :: this
    type(VariableContainer), intent(in) :: varCont

    Variable container used in update

    class(ModelSurrogate), intent(in), optional :: hostModel

    Host model - unused

    class(ModelboundData), intent(in), optional :: hostData

    Host data used to determine emitting cells for discrete cross-section

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

    Priority for this update call - unused

procedure, public :: getTransitionEnergy => getEnergy

  • interface

    private pure module function getEnergy(this) result(energyCost)

    Returns array representing energy cost of this transition

    Arguments

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

    Return Value real(kind=rk), allocatable, dimension(:)