integrator_abstract_procedures Submodule

Contains getters and setters for the abstract Integrator class


Uses


Module Functions

pure module function getTimestep(this) result(timestep)

Getter for dt

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value real(kind=rk)

pure module function getTermGroups(this) result(groups)

Getter for termGroups

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value type(IntArray), allocatable, dimension(:)

pure module function getModelIndices(this) result(indices)

Getter for modelIndices

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value integer(kind=ik), allocatable, dimension(:)

pure module function isTimeEvolving(this) result(evo)

Check if this Integrator is allowed to evolve a time variable if present

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value logical

pure module function hasTimestepController(this) result(hasController)

Check if this Integrator has an allocated timestep controller

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value logical

module function getTimestepFromController(this, inputVars) result(timestep)

Get the individual timestep size if Integrator has a timestep controller

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
class(VariableContainer), intent(in) :: inputVars

Return Value real(kind=rk)

pure module function isCommunicationNeeded(this) result(commNeeded)

Check whether this Integrator requires MPI communication

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value logical

pure module function getCommunicationData(this) result(commData)

Getter for commData

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value type(CommunicationData), allocatable

pure module function getUpdateRules(this) result(updateRules)

Getter for updateOnInternalIteration

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value type(LogicalArray), dimension(:), allocatable

pure module function hasNonTrivialUpdate(this) result(nonTrivialUpdate)

Getter for nonTrivialUpdate

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value logical

pure module function getModelDataUpdateRules(this) result(updateRules)

Getter for updateModelDataOnInternalIteration

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value logical, dimension(:), allocatable

pure module function hasNonTrivialModelDataUpdate(this) result(nonTrivialUpdate)

Getter for nonTrivialModelDataUpdate

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(in) :: this

Return Value logical


Module Subroutines

pure module subroutine setTimestep(this, timestep)

Setter for dt

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
real(kind=rk), intent(in) :: timestep

pure module subroutine setTermGroups(this, groups)

Setter for termGroups

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
type(IntArray), intent(in), dimension(:) :: groups

pure module subroutine setModelIndices(this, indices)

Setter for modelIndices

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
integer(kind=ik), intent(in), dimension(:) :: indices

pure module subroutine setTimeEvolving(this, evo)

Setter for evolvesTimeVar

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
logical, intent(in) :: evo

pure module subroutine setTimestepController(this, controller)

Setter for dtController

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
class(TimestepController), intent(in) :: controller

pure module subroutine setCommunicationNeeded(this, commNeeded)

Setter for communicationNeeded

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
logical, intent(in) :: commNeeded

pure module subroutine setCommunicationData(this, commData)

Setter for commData

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
type(CommunicationData), intent(in) :: commData

pure module subroutine setUpdateRules(this, updateRules)

Setter for updateOnInternalIteration

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
type(LogicalArray), intent(in), dimension(:) :: updateRules

pure module subroutine setNonTrivialUpdate(this, nonTrivialUpdate)

Setter for nonTrivialUpdate

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
logical, intent(in) :: nonTrivialUpdate

pure module subroutine setModelDataUpdateRules(this, updateRules)

Setter for updateModelDataOnInternalIteration

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
logical, intent(in), dimension(:) :: updateRules

pure module subroutine setNonTrivialModelDataUpdate(this, nonTrivialUpdate)

Setter for nonTrivialModelDataUpdate

Arguments

Type IntentOptional Attributes Name
class(Integrator), intent(inout) :: this
logical, intent(in) :: nonTrivialUpdate