Subroutine for timestepping with explicit runge kutta of order 4. It contains four Euler forwarding substeps: 0.1 temp = u0 1.1 u1 = rk4_substep(temp) = rhs(temp) 1.2 temp = u0 + dt/2 * u1 2.1 u2 = rk4_substep(temp) = rhs(temp) 2.2 temp = u0 + dt/2 * u2 3.1 u3 = rk4_substep(temp) = rhs(temp) 3.2 temp = u0 + dt * u3 4.1 u4 = rk4_substep(temp) = rhs(temp) 4.2 u0 = u0 + dt/6 * ( u1 + 2*(u2+u3) + u4 ) After each substep, the results are stabilized
VK call tem_startTimer( timerHandle = atl_timerHandles%preciceWrite ) VK call tem_stopTimer( timerHandle = atl_timerHandles%preciceWrite )
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(minLevel:) | List of levelwise timestepping algorihtms |
||
integer, | intent(in) | :: | nSteps | The number of steps of the time stepping scheme (assumed to be 4) |
||
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 |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | iLevel | ||||
integer, | private | :: | iStep | ||||
type(atl_statedata_type), | private | :: | statedata_list_temp(minLevel:maxLevel) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | iSubstep | the substep within the RK4 |
||
integer, | intent(in) | :: | currentLevel | The level the timestep has to be performed for. |
||
integer, | intent(in) | :: | minLevel | The minimum refinement level of the mesh. |
||
integer, | intent(in) | :: | maxLevel | The maximum refinement level of the mesh. |
||
type(atl_cube_container_type), | intent(inout) | :: | cubes | Container for the cubical elements. |
||
type(treelmesh_type), | intent(in) | :: | tree | treelm mesh |
||
type(atl_statedata_type), | intent(inout) | :: | statedata_list_temp(minLevel:maxLevel) | Temporary state data |
||
type(ply_poly_project_type), | intent(inout) | :: | poly_proj_list(:) | unique list for projection methods |
||
type(atl_timestep_type), | intent(inout) | :: | timestep_list(minLevel:) | List of levelwise timestepping algorihtms |
||
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 | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nTotal | |||
integer, | intent(in) | :: | nDofs | |||
integer, | intent(in) | :: | nScalars | |||
real(kind=rk), | intent(out) | :: | state_tmp(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state1(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state2(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | factor |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nTotal | |||
integer, | intent(in) | :: | nDofs | |||
integer, | intent(in) | :: | nScalars | |||
real(kind=rk), | intent(out) | :: | state(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state0(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state1(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state2(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state3(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | state4(nTotal,nDofs,nScalars) | |||
real(kind=rk), | intent(in) | :: | dt |