Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | userDefined | = | .false. |
True only if user explicitly sets it to true |
|
logical, | public | :: | communicationNeeded |
True if this Integrator requires MPI communication during evolution |
|||
type(CommunicationData), | public | :: | commData |
Communication data object for this Integrator |
|||
logical, | public | :: | nonTrivialUpdate |
True if this integrator should perform non-trivial updates of terms |
|||
logical, | public | :: | nonTrivialModelDataUpdate |
True if this integrator should perform non-trivial updates of model data |
|||
type(c_ptr), | private | :: | sunctx |
Sundials context |
|||
type(SUNLinearSolver), | private, | pointer | :: | sunls |
Sundials linear solver pointer |
||
type(N_Vector), | private, | pointer | :: | sunVecY |
Solution and RHS sundials vector objects |
||
type(N_Vector), | private, | pointer | :: | sunVecYDot |
Solution and RHS sundials vector objects |
||
type(c_ptr), | private | :: | cvode |
CVODE solver context |
|||
type(SUNMatrix), | private, | pointer | :: | sunmat |
Sundials matrix (will be nulled) |
||
real(kind=c_double), | private, | pointer, dimension(:) | :: | rhsVec |
Pointers used for accessing the underlying N_Vectors |
||
real(kind=c_double), | private, | pointer, dimension(:) | :: | yVec |
Pointers used for accessing the underlying N_Vectors |
||
type(VariableContainer), | private, | allocatable | :: | bufferRHS |
ReMKiT1D variable containers corresponding to the RHS and solutions - enable derivation and communication calls |
||
type(VariableContainer), | private, | allocatable | :: | bufferY |
ReMKiT1D variable containers corresponding to the RHS and solutions - enable derivation and communication calls |
||
real(kind=rk), | private, | allocatable, dimension(:) | :: | copyBufferVals |
Buffer for moving data between the C pointers and the ReMKiT1D variable containers |
||
type(StringArray), | private, | allocatable, dimension(:) | :: | evolvedVars |
List of variables evolved by this solver |
||
type(MPI_Comm), | private | :: | mpiComm |
MPI communicator object needed by some CVODE routines |
|||
integer(kind=ik), | private | :: | numProcs |
Number of processes needed for initialising the number of variables/equations in CVODE |
|||
type(CVODEOptions), | private | :: | options | ||||
character(len=:), | private, | allocatable | :: | integratorName |
Integrator named used in printing |
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 |
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 |
Implementation of abstract manipulate routine for the case of Runge-Kutta integrator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CVODEIntegrator), | 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 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CVODEIntegrator), | intent(inout) | :: | this | |||
type(MPIController), | intent(in) | :: | mpiCont |
MPI Controller used to initialise the sundials context |
||
type(CVODEOptions), | intent(in) | :: | options |
Options object containing CVODE options |
||
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 |
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 |
|
character(len=*), | intent(in), | optional | :: | integratorName |
Name of integrator used in printing |