derived_transition_class Module

Houses fixed energy transition with a rate calculated using a derivation object


Used by


Interfaces

interface

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

    Returns array representing energy cost of this transition

    Arguments

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

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

interface

  • private pure module subroutine initDerivedTransition(this, locNumX, inStates, outStates, energy, rateDeriv, rateDerivIndices, momentumRateDeriv, momentumRateDerivIndices, energyRateDeriv, energyRateDerivIndices)

    Initialization routine for DerivedTransition object

    Arguments

    Type IntentOptional Attributes Name
    class(DerivedTransition), 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

    class(Derivation), intent(in) :: rateDeriv

    Derivation object used in rate calculation

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

    Indices for rate derivation

    class(Derivation), intent(in), optional :: momentumRateDeriv

    Derivation object used in momentum rate calculation

    integer(kind=ik), intent(in), optional, dimension(:) :: momentumRateDerivIndices

    Indices for momentum rate derivation

    class(Derivation), intent(in), optional :: energyRateDeriv

    Derivation object used in energy rate calculation

    integer(kind=ik), intent(in), optional, dimension(:) :: energyRateDerivIndices

    Indices for energy rate derivation

interface

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

    Update transition rates using derivation object

    Arguments

    Type IntentOptional Attributes Name
    class(DerivedTransition), 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 - unused

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

    Priority for this update call - unused


Derived Types

type, public, extends(Transition) ::  DerivedTransition

Transition where the rate is calculated using a derivation object and with a fixed transition energy. Optionally, momentum and energy rates can be calculated using derivation objects

Components

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

True only if user explicitly sets it to true

real(kind=rk), private :: transitionEnergy
class(Derivation), private, allocatable :: rateDeriv

Derivation object used in rate calculation

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

Indices for rate derivation

class(Derivation), private, allocatable :: momentumRateDeriv

Derivation object used in momentum rate calculation

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

Indices for momentum rate derivation

class(Derivation), private, allocatable :: energyRateDeriv

Derivation object used in energy rate calculation

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

Indices for energy rate derivation

integer(kind=ik), private :: locNumX

Size of local rate vectors

Type-Bound Procedures

procedure, public :: isDefined => isDefinedObject
procedure, public :: makeDefined => makeDefinedObject
procedure, public :: makeUndefined => makeUndefinedObject
procedure, public :: getIngoingStates
procedure, public :: getOutgoingStates
procedure, public :: setStates
procedure, public :: setRate
procedure, public :: getRate
procedure, public :: setRateMomentum
procedure, public :: getRateMomentum
procedure, public :: setRateEnergy
procedure, public :: getRateEnergy
procedure, public :: setCrossSection
procedure, public :: setCrossSectionCol
procedure, public :: getCrossSectionCol
procedure, public :: includesElDensity
procedure, public :: setIncludeElectronDensity
procedure, public :: setCSDim
procedure, public :: getCSDim
procedure, public :: getRateSize
procedure, public :: init => initDerivedTransition
procedure, public :: update => updateRates
procedure, public :: getTransitionEnergy => getEnergy