Houses container/controller for multiple integration routines
Getter for currentTime
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(in) | :: | this |
Composite integraotr initialization routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this | |||
| real(kind=rk), | intent(in) | :: | initialTime |
Time value before first step |
||
| real(kind=rk), | intent(in) | :: | initialTimestep |
Default timestep |
||
| integer(kind=ik), | intent(in) | :: | numIntegrators |
Number of integrators expected |
||
| class(TimestepController), | intent(in), | optional | :: | dtController |
Optional timestep controller |
Add Integrator object to composite integrator
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this | |||
| class(Integrator), | intent(in) | :: | integ |
Add integration stage to composite integrator
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this | |||
| type(IntegratorCallStep), | intent(in) | :: | integStage |
Setter for dtController
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this | |||
| class(TimestepController), | intent(in) | :: | controller |
Setter for requestedTimestep
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this | |||
| real(kind=rk), | intent(in) | :: | timestep |
Resets the requested timestep to the initial timestep
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this |
Call all integrators based on the integration stages and global timestep. The global timestep is updated at the start if there is an allocated timestep controller.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CompositeIntegrator), | intent(inout) | :: | this | |||
| class(ModellerSurrogate), | intent(inout) | :: | manipulatedModeller |
Modeller object used in callback |
||
| class(VariableContainer), | intent(inout) | :: | outputVars |
Container for integration output |
||
| class(VariableContainer), | intent(in) | :: | inputVars |
Integration input variables |
Container allowing for heterogeneous Integrator arrays
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(Integrator), | public, | allocatable | :: | entry |
Object containing data pertaining to single integration step
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=ik), | public | :: | integratorIndex |
Index of integrator active during this step |
|||
| type(IntArray), | public, | allocatable, dimension(:) | :: | groupIndices |
Term groups evolved during step |
||
| integer(kind=ik), | public, | allocatable, dimension(:) | :: | modelIndices |
Model indices of evolved groups |
||
| real(kind=rk), | public | :: | globalStepFraction |
Fraction of global timestep allocated to this integration stage |
|||
| logical, | public | :: | allowTimeEvolution | = | .false. |
Set to true to allow this step to change "time" variable if it is present |
|
| logical, | public | :: | useInitialInput | = | .false. |
Set to true to make this timestep use data from the start of the composite integration |
|
| logical, | public | :: | communicationNeeded | = | .false. |
Set to true to make integrator perform communication |
|
| logical, | public | :: | nonTrivialUpdate | = | .false. |
Set to true to update terms during internal integrator iterations |
|
| logical, | public | :: | nonTrivialModelDataUpdate | = | .false. |
Set to true to update model data during internal integrator iterations |
|
| type(CommunicationData), | public | :: | commData |
Data used for communication if applicable |
|||
| type(LogicalArray), | public, | allocatable, dimension(:) | :: | updatesOnInternalIterations |
True for those terms to be updated during internal integrator iterations |
||
| logical, | public, | allocatable, dimension(:) | :: | updatesOnInternalIterationsModelData |
True for those models whose data should be updated during internal integrator iterations |
Composite integrator object allowing for different integration stages
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | userDefined | = | .false. |
True only if user explicitly sets it to true |
|
| type(IntegratorContainer), | private, | allocatable, dimension(:) | :: | integrators |
Integrators contained in this composite integrator |
||
| integer(kind=ik), | private | :: | numIntegratorsAdded |
Counter keeping track of how many integrators have been added |
|||
| real(kind=rk), | private | :: | currentTime |
Current time value (should agree with "time" variable if present) |
|||
| real(kind=rk), | private | :: | globalTimestep |
Global timestep value |
|||
| real(kind=rk), | private | :: | initialTimestep |
Initial timestep value |
|||
| real(kind=rk), | private | :: | requestedTimestep |
Externally requested timestep, the global timestep will be set to the minimum between this value and the initialTimestep |
|||
| type(VariableContainer), | private, | allocatable | :: | stepBuffer |
Variable container buffer used between steps |
||
| type(IntegratorCallStep), | private, | allocatable, dimension(:) | :: | integrationStage |
Integration stages |
||
| logical, | private | :: | allIntegratorsAdded |
True when all integrators have been allocated |
|||
| class(TimestepController), | private, | allocatable | :: | dtController |
Optional timestep controller object at composite integrator level |
| procedure, public :: isDefined => isDefinedObject | |
| procedure, public :: makeDefined => makeDefinedObject | |
| procedure, public :: makeUndefined => makeUndefinedObject | |
| procedure, public :: affect => integrateAll | |
| procedure, public :: getCurrentTime | |
| procedure, public :: addIntegrator | |
| procedure, public :: addIntegrationStage | |
| procedure, public :: setTimestepController | |
| procedure, public :: setRequestedTimestep | |
| procedure, public :: resetRequestedTimestep | |
| procedure, public :: init => initCompositeIntegrator |