Abstract Integrator object
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | userDefined | = | .false. |
True only if user explicitly sets it to true |
|
real(kind=rk), | private | :: | dt |
The timestep this Integrator needs to take |
|||
type(IntArray), | private, | allocatable, dimension(:) | :: | termGroups |
Term groups for each model this Integrator is responsible for |
||
integer(kind=ik), | private, | allocatable, dimension(:) | :: | modelIndices |
Model indices this Integrator is responsible for |
||
logical, | private | :: | evolvesTimeVar |
If true and a variable named "time" exists in passed variable container the Integrator will be allowed to evolve it |
|||
class(TimestepController), | private, | allocatable | :: | dtController |
Optional timestep controller that computes the timestep based on input variables |
||
logical, | public | :: | communicationNeeded |
True if this Integrator requires MPI communication during evolution |
|||
type(CommunicationData), | public | :: | commData |
Communication data object for this Integrator |
|||
type(LogicalArray), | private, | allocatable, dimension(:) | :: | updateOnInternalIteration |
Array that conforms to termGroups and is true when given group should be updated on each internal iteration, otherwise they are only to be updated every timestep |
||
logical, | public | :: | nonTrivialUpdate |
True if this integrator should perform non-trivial updates of terms |
|||
logical, | private, | allocatable, dimension(:) | :: | updateModelDataOnInternalIteration |
Array that conforms with modelIndices and is true when the given model has model data that should be updated on every internal iteration |
||
logical, | public | :: | nonTrivialModelDataUpdate |
True if this integrator should perform non-trivial updates of model data |
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 |
Transform inputVars data to outputVars data based on this Manipulator and passed Modeller callback
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Manipulator), | intent(inout) | :: | this | |||
class(ModellerSurrogate), | intent(inout) | :: | manipulatedModeller |
Modeller to be used in callback data manipulation |
||
class(VariableContainer), | intent(inout) | :: | outputVars |
VariableContainer object to store the manipulation output |
||
class(VariableContainer), | intent(in) | :: | inputVars |
VariableContainer object housing input data for the manipulation routine |
Setter for dt
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
real(kind=rk), | intent(in) | :: | timestep |
Getter for dt
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for termGroups
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
type(IntArray), | intent(in), | dimension(:) | :: | groups |
Getter for termGroups
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for modelIndices
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
integer(kind=ik), | intent(in), | dimension(:) | :: | indices |
Getter for modelIndices
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for evolvesTimeVar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | evo |
Check if this Integrator is allowed to evolve a time variable if present
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for dtController
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
class(TimestepController), | intent(in) | :: | controller |
Check if this Integrator has an allocated timestep controller
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Get the individual timestep size if Integrator has a timestep controller
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
class(VariableContainer), | intent(in) | :: | inputVars |
Check whether this Integrator requires MPI communication
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for communicationNeeded
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | commNeeded |
Getter for commData
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for commData
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
type(CommunicationData), | intent(in) | :: | commData |
Getter for updateOnInternalIteration
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for updateOnInternalIteration
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
type(LogicalArray), | intent(in), | dimension(:) | :: | updateRules |
Getter for updateModelDataOnInternalIteration
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for updateModelDataOnInternalIteration
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
logical, | intent(in), | dimension(:) | :: | updateRules |
Getter for nonTrivialUpdate
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for nonTrivialUpdate
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | nonTrivialUpdate |
Getter for nonTrivialModelDataUpdate
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(in) | :: | this |
Setter for nonTrivialModelDataUpdate
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Integrator), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | nonTrivialUpdate |