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 |