Houses abstract explicit term interfaces
Default multiplicative function - returns a real vector of ones based on evolvedVarName. In general should use passed variable container and indexing data to construct a vector conforming to the evolved variable
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(in) | :: | this | |||
type(VariableContainer), | intent(in) | :: | varCont | |||
type(ExplicitTermIndexingData), | intent(in) | :: | indexingData |
Getter for normalizationConst
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(in) | :: | this |
Evaluates the term as multConst * multFun [* operatorTerm%actOn(
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(in) | :: | this | |||
type(VariableContainer), | intent(in) | :: | varCont |
Getter for multConst
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(in) | :: | this |
Get name of the evolved variable of this term
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(in) | :: | this |
Default update function - just calls update on Operator if allocated
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(inout) | :: | this | |||
type(VariableContainer), | intent(in) | :: | varCont |
Variable container used in update |
||
class(ModelboundData), | intent(in), | optional | :: | modelData |
Reference model data - unused |
|
class(ModelSurrogate), | intent(in), | optional | :: | hostModel |
Host model - unused |
Setter for termOperator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(inout) | :: | this | |||
class(Operator), | intent(in) | :: | op |
Setter for normalizationConst
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in) | :: | norm |
Set variable names required by the multiplicative function and find their indices in variable container
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(inout) | :: | this | |||
type(StringArray), | intent(in), | dimension(:) | :: | reqVars | ||
type(VariableContainer), | intent(in) | :: | varCont |
Set evolved and operated (if applicable) variable names
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(inout) | :: | this | |||
character(len=*), | intent(in) | :: | evolvedVarName | |||
character(len=*), | intent(in), | optional | :: | operatedVarName |
Setter for multConst
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitTerm), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in), | dimension(:) | :: | multConst |
Indexing data used by the default abstract explicit term
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=ik), | public, | allocatable, dimension(:) | :: | reqVarIndices |
Indices of variables required by the multiplicative function |
||
character(len=:), | public, | allocatable | :: | evolvedVarName |
Name of evolved variable |
||
character(len=:), | public, | allocatable | :: | operatedVarName |
Name of variable to which the term's operator should be applied |
Abstract term providing basic interfaces for build terms used in explicit timestepping
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | userDefined | = | .false. |
True only if user explicitly sets it to true |
|
real(kind=rk), | private, | allocatable, dimension(:) | :: | multConst |
Multiplicative constant with size conforming to the variable being evolved |
||
real(kind=rk), | private | :: | normalizationConst | = | real(1.0d0, kind=rk) |
Normalization constant of this term |
|
type(ExplicitTermIndexingData), | private | :: | indexingData |
Indexing data used by this term |
|||
class(Operator), | private, | allocatable | :: | termOperator |
Optional operator used by this term |
procedure, public :: isDefined => isDefinedObject | |
procedure, public :: makeDefined => makeDefinedObject | |
procedure, public :: makeUndefined => makeUndefinedObject | |
procedure, public :: setOperator | |
procedure, public :: setNormalizationConst | |
procedure, public :: getNormalizationConst | |
procedure, public :: setReqVars | |
procedure, public :: setEvolvedAndOperatedVar | |
procedure, public :: evaluate => evaluateExpTerm | |
procedure, public :: getMultConst | |
procedure, public :: setMultConst | |
procedure, private :: multFun => unityFun | |
procedure, public :: update => simpleUpdate | |
procedure, public :: getVarName => getEvolvedVarName |