template<class R = double>
class Dune::PDELab::InstationaryLocalOperatorDefaultMethods< R >
Default class for additional methods in instationary local operators.
The algorithm used by the InstationaryGridOperator and the OneStepMethod to advance one step in time is as follows:
-
Call the method preStep(start_time_of_step, step_size, nstages) on each localoperator.
-
For each stage1 in [1, nstages]
-
Call preStage(time_of_stage1, number_of_stage1) on each localoperator.
-
Assemble constant part of residual: For each stage2 in [0, number_of_stage1-1]
-
Call setTime(time_of_stage2) for each local operator.
-
Iterate over grid and evaluate the local operator.
-
Call setTime(time_of_stage1) for each local operator.
-
Apply solver: Iterate over grid (possibly multiple times and evaluate local operator.
-
Call postStage() on each local operator.
-
Call postStep() on the temporal local operator.
The algorithm used by the InstationaryGridOperator and the ExplicitOneStepMethod to advance one step in time is as follows:
-
Call the method preStep(start_time_of_step, step_size, nstages) on each localoperator.
-
For each stage1 in [1, nstages]
-
Call preStage(time_of_stage1, number_of_stage1) on each localoperator.
-
Assemble constant part of residual: For each stage2 in [0, number_of_stage1-1]
-
Call setTime(time_of_stage2) for each local operator.
-
Iterate over grid and evaluate the local operator.
-
Call setTime(time_of_stage1) for each local operator.
-
Assemble matrices to be solved: Iterate over the grid and evaluate the local operator.
-
If stage1 == 1:
-
Possibly call suggestTimeStep() and adjust the time step accordingly.
-
Call postStage() on each local operator.
-
Call postStep() on the temporal local operator.
The algorithm used by the MultiStepGridOperator and the MultiStepMethod to advance one step in time is as follows:
-
Call the method preStep(start_time_of_step, step_size, 1) on each localoperator.
-
Call the method preStage(end_time_of_step, 1) on each local operator.
-
Assemble constant part of residual: For each step in [1, number_of_steps]
-
Call setTime(end_time_of_step-step_size*number_of_step) for each local operator.
-
Iterate over grid and evaluate the local operators.
-
Call setTime(end_time_of_step) for each local operator.
-
Apply solver: Iterate over grid (possibly multiple times and evaluate local operator.
-
Call postStage() on each local operator.
-
Call postStep() on each local operator.