Transition with fixed energy where the cross-section is calculated using SOL-KiT's version of discrete detailed balance
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 |
|||
logical, | private | :: | strictDB |
Set to false if strict detailed balance should not be enforced by scaling cross-sections. Defaults to true. |
|||
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 | :: | directTransitionIndex |
Index of the direct transition in the host model data |
|||
integer(kind=ik), | private | :: | fixedWIndexDirect |
Index of the direct transition inelastic weight matrix in the host model inelastic data object |
|||
integer(kind=ik), | private | :: | temperatureVarIndex |
Index of the temperature variable used to calculate the detailed balance cross-section |
|||
integer(kind=ik), | private | :: | fixedWIndex |
Index of this transition's inelastic weight matrix in the host model inelastic data object |
|||
integer(kind=ik), | private | :: | maxCSl |
Highest harmonic of the cross-section to calculate |
|||
real(kind=rk), | private | :: | degeneracyRatio |
Ratio of the degeneracy of the initial and final states of the transition |
|||
class(Derivation), | private, | allocatable | :: | degeneracyFun |
Optional derivation object when the degeneracy is a function of variables in the variable container |
||
integer(kind=ik), | private, | allocatable, dimension(:) | :: | degeneracyFunIndices |
Variable indices needed for the degeneracy function calculation |
||
integer(kind=ik), | private | :: | csUpdatePriority |
Update priority for cross-section data |
|||
type(SparseRowData), | private, | allocatable | :: | directFixedW |
Local copy to avoid expensive copy routines |
||
type(RealArray), | private, | allocatable, dimension(:) | :: | discreteEnergyErrors |
Difference between discrete and analytic transition energies for each row/column of directFixedW |
Getter for userDefined
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Object), | intent(in) | :: | this |
Set userDefined to .true.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Object), | intent(inout) | :: | this |
Set userDefined to .false.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Object), | intent(inout) | :: | this |
Getter for ingoingStates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Getter for outgoingStates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Setter for both ingoing and outgoing states
Type | Intent | Optional | 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 |
Setter for rate values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in), | dimension(:) | :: | rate |
Getter for rate values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Setter for rateMomentum values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in), | dimension(:) | :: | rate |
Getter for rateMomentum values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Setter for rateEnergy
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in), | dimension(:) | :: | rate |
Getter for rateEnergy
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Setter for crossSection
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in), | dimension(:,:) | :: | crossSection |
Set cross-section values in column col
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in), | dimension(:) | :: | crossSection | ||
integer(kind=ik), | intent(in) | :: | col |
Get cross-section values from column col
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this | |||
integer(kind=ik), | intent(in) | :: | col |
Check whether rates in this transition include an electron density factor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Setter for rateContainsElDensity
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | includeDens |
Setter for csDim
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(inout) | :: | this | |||
integer(kind=ik), | intent(in) | :: | csDim |
Getter for csDim
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Getter for rate array length
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Transition), | intent(in) | :: | this |
Initialization routine for DBTransition object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(DBTransition), | 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 |
||
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) | :: | directTransitionIndex |
Index of the direct transition in the host model data |
||
integer(kind=ik), | intent(in) | :: | fixedWIndexDirect |
Index of the direct transition inelastic weight matrix in the host model inelastic data object |
||
integer(kind=ik), | intent(in) | :: | fixedWIndex |
Index of this transition's inelastic weight matrix in the host model inelastic data object |
||
integer(kind=ik), | intent(in) | :: | temperatureVarIndex |
Index of the temperature variable used to calculate the detailed balance cross-section |
||
integer(kind=ik), | intent(in) | :: | maxCSl |
Highest harmonic of the cross-section to calculate |
||
real(kind=rk), | intent(in) | :: | degeneracyRatio |
Ratio of the degeneracy of the initial and final states of the transition |
||
class(Derivation), | intent(in), | optional | :: | degeneracyFun |
Optional derivation object when the degeneracy is a function of variables in the variable container |
|
integer(kind=ik), | intent(in), | optional, | dimension(:) | :: | degeneracyFunIndices |
Variable indices needed for the degeneracy function calculation |
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 |
|
integer(kind=ik), | intent(in), | optional | :: | csUpdatePriority |
Update priority for cross-section data. Defaults to highest priority (0) |
|
logical, | intent(in), | optional | :: | strictDB |
Set to false if strict detailed balance should not be enforced by scaling cross-sections. Defaults to true. |
Update cross-section and transition and moment exchange rates (if applicable)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(DBTransition), | 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 access direct transition data |
|
integer(kind=ik), | intent(in), | optional | :: | updatePriority |
Priority for this update call used to determine if cross-sections should be updated |
Returns array representing energy cost of this transition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(DBTransition), | intent(in) | :: | this |