DerivedTransition Derived Type

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

  • 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 => initDerivedTransition

  • 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

procedure, public :: update => updateRates

  • 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

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(DerivedTransition), intent(in) :: this

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