
ouses abstract Integrator object, a ,anipulator with a timestep size and term group component and corresponding getters/setters
Getter for dt
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Getter for termGroups
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Getter for modelIndices
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Check if this Integrator is allowed to evolve a time variable if present
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
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 |
Getter for commData
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Getter for updateOnInternalIteration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Getter for nonTrivialUpdate
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Getter for updateModelDataOnInternalIteration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Getter for nonTrivialModelDataUpdate
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(in) | :: | this |
Setter for dt
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| real(kind=rk), | intent(in) | :: | timestep |
Setter for termGroups
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| type(IntArray), | intent(in), | dimension(:) | :: | groups |
Setter for modelIndices
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| integer(kind=ik), | intent(in), | dimension(:) | :: | indices |
Setter for evolvesTimeVar
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| logical, | intent(in) | :: | evo |
Setter for dtController
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| class(TimestepController), | intent(in) | :: | controller |
Setter for communicationNeeded
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| logical, | intent(in) | :: | commNeeded |
Setter for commData
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| type(CommunicationData), | intent(in) | :: | commData |
Setter for updateOnInternalIteration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| type(LogicalArray), | intent(in), | dimension(:) | :: | updateRules |
Setter for nonTrivialUpdate
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| logical, | intent(in) | :: | nonTrivialUpdate |
Setter for updateModelDataOnInternalIteration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| logical, | intent(in), | dimension(:) | :: | updateRules |
Setter for nonTrivialModelDataUpdate
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Integrator), | intent(inout) | :: | this | |||
| logical, | intent(in) | :: | nonTrivialUpdate |
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 |
| procedure, public :: isDefined => isDefinedObject | |
| procedure, public :: makeDefined => makeDefinedObject | |
| procedure, public :: makeUndefined => makeUndefinedObject | |
| procedure(manipulation), public, deferred :: affect | |
| procedure, public :: setTimestep | |
| procedure, public :: getTimestep | |
| procedure, public :: setTermGroups | |
| procedure, public :: getTermGroups | |
| procedure, public :: setModelIndices | |
| procedure, public :: getModelIndices | |
| procedure, public :: setTimeEvolving | |
| procedure, public :: isTimeEvolving | |
| procedure, public :: setTimestepController | |
| procedure, public :: hasTimestepController | |
| procedure, public :: getTimestepFromController | |
| procedure, public :: isCommunicationNeeded | |
| procedure, public :: setCommunicationNeeded | |
| procedure, public :: getCommunicationData | |
| procedure, public :: setCommunicationData | |
| procedure, public :: getUpdateRules | |
| procedure, public :: setUpdateRules | |
| procedure, public :: getModelDataUpdateRules | |
| procedure, public :: setModelDataUpdateRules | |
| procedure, public :: hasNonTrivialUpdate | |
| procedure, public :: setNonTrivialUpdate | |
| procedure, public :: hasNonTrivialModelDataUpdate | |
| procedure, public :: setNonTrivialModelDataUpdate |