This module keeps the generic routines and datatypes for the timestepping methods.
It provides the methods to perform both, single step time integration and multistep in a single framework.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | explicitEuler | = | 1 | Explicit euler in time. |
integer, | public, | parameter | :: | explicitRungeKutta | = | 2 | Explicit Runge Kutta in time. |
integer, | public, | parameter | :: | explicitSSPRungeKutta | = | 3 | Explicit Strong-Stability-Preserving Runge Kutta in time. |
integer, | public, | parameter | :: | explicitLocalPredictorGlobalCorrector | = | 4 | Explicit Local-Predictor Global-Corrector Approach in time |
integer, | public, | parameter | :: | explicitRungeKuttaTaylor | = | 5 | Explicit Runge-Kutta-Taylor in time. |
integer, | public, | parameter | :: | imexRungeKutta | = | 6 | IMEX Runge-Kutta in time. |
Interface definition for meshwise timestepping routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel | The minimum refinement level of the mesh. |
||
integer, | intent(in) | :: | maxLevel | The maximum refinement level of the mesh. |
||
integer, | intent(in) | :: | currentLevel | The level the timestep has to be performed for. |
||
type(atl_cube_container_type), | intent(inout) | :: | cubes | Container for the cubical elements. |
||
type(treelmesh_type), | intent(in) | :: | tree | treelm mesh |
||
type(atl_timestep_type), | intent(inout) | :: | timestep_list(:) | List of levelwise timestepping algorihtms |
||
integer, | intent(in) | :: | nSteps | The number of steps of the time stepping scheme |
||
type(atl_Equations_type), | intent(inout) | :: | equation | The equation you are operating with. |
||
type(tem_general_type), | intent(inout) | :: | general | General treelm settings |
||
integer, | intent(inout) | :: | commStateTimer | Timer for measuring the communication time inside this routine. |
||
type(ply_poly_project_type), | intent(inout) | :: | poly_proj_list(:) | unique list for projection methods |
Datatype to represent the control of timesteps.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private | :: | cfl | The cfl number that has to be satisfied by the timestep (for the convective part of the equation). |
|||
real(kind=rk), | private | :: | cfl_visc | The cfl number that has to be satisfied by the timestep (for the viscous part of the equation). |
|||
logical, | private | :: | use_modal_estimate | = | .false. | Flag to indicate whether to use modal min/max estimations in computation of timestep limitation. |
|
real(kind=rk), | private | :: | fixed_dt | Fixed timestep length |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | timestepType | = | 0 | The type of the timestepping. See the parameters above: |
|
integer, | private | :: | nSteps | = | 0 | The number of steps in the time-stepping scheme |
|
type(atl_timestep_control_type), | private | :: | control | The data controlling the timestep sizes. |
|||
procedure(mesh_timestep), | private, | pointer, nopass | :: | meshStep | => | null() | The final timestep stage. |
real(kind=rk), | private, | allocatable | :: | timestepCoeff(:) | Additional storage for multisptep/multistage timestepping schemes where additional coefficients are required. The usage and the dimensions of this array is left to the solver and is therefore varying for different timestepping schemes. |
||
type(atl_timestep_type), | private, | allocatable | :: | elementSteps(:) | Datatypes for elementwise timestepping. One for each level. |