Contains module procedures associated with the explicit RK integrator class
Constructs an RK integrator with initial evaluated model indices and correspoding term groups if those are present. If neither order or tableau are provided defaults to forward Euler time-stepping. Possible order values are 1,2,3,4 where 2 is the midpoint method, 3 is SSPRK3, and 4 is the standard RK4 method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitRKIntegrator), | intent(inout) | :: | this | |||
integer(kind=ik), | intent(in), | optional, | dimension(:) | :: | modelList |
List of models this integrator will be responsible for |
type(IntArray), | intent(in), | optional, | dimension(:) | :: | termGroups |
Term groups this integrator is responsible for - should conform with modelList |
integer(kind=ik), | intent(in), | optional | :: | order |
Runge-Kutta order |
|
type(BTableau), | intent(in), | optional | :: | tableau |
User-defined Butcher tableau |
|
logical, | intent(in), | optional | :: | evolvesTimeVar |
Set to true if this integrator is allowed to change the "time" varible (if present in passed variable container) |
|
class(TimestepController), | intent(in), | optional | :: | dtController |
User-supplied timestep controller object |
|
real(kind=rk), | intent(in), | optional | :: | initialTimestep |
Default timestep |
Implementation of abstract manipulate routine for the case of Runge-Kutta integrator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ExplicitRKIntegrator), | intent(inout) | :: | this | |||
class(ModellerSurrogate), | intent(inout) | :: | manipulatedModeller |
Modeller to be used in callbacks during integration |
||
class(VariableContainer), | intent(inout) | :: | outputVars |
VariableContainer object to store the integration output |
||
class(VariableContainer), | intent(in) | :: | inputVars |
VariableContainer object housing input data for the integration routine |