mesh_timestep_predcor_cerk4 Subroutine

private subroutine mesh_timestep_predcor_cerk4(minLevel, maxLevel, currentLevel, cubes, tree, timestep_list, nSteps, equation, general, commStateTimer, poly_proj_list)

Subroutine for timestepping with explicit runge kutta of order 4.

Stabilize the intermediate result of this stage of the predcor_cerk4 scheme

Stabilize the intermediate result of this stage of the predcor_cerk4 scheme

Stabilize the intermediate result of this stage of the predcor_cerk4 scheme

Arguments

TypeIntentOptionalAttributesName
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


Calls

proc~~mesh_timestep_predcor_cerk4~~CallsGraph proc~mesh_timestep_predcor_cerk4 mesh_timestep_predcor_cerk4 none~update_state update_state proc~mesh_timestep_predcor_cerk4->none~update_state none~compute_intermediate1 compute_intermediate1 proc~mesh_timestep_predcor_cerk4->none~compute_intermediate1 none~compute_intermediate3 compute_intermediate3 proc~mesh_timestep_predcor_cerk4->none~compute_intermediate3 none~compute_intermediate2 compute_intermediate2 proc~mesh_timestep_predcor_cerk4->none~compute_intermediate2 proc~global_corrector_substep global_corrector_substep proc~mesh_timestep_predcor_cerk4->proc~global_corrector_substep proc~local_predictor_substep local_predictor_substep proc~mesh_timestep_predcor_cerk4->proc~local_predictor_substep none~compute_prediction compute_prediction proc~mesh_timestep_predcor_cerk4->none~compute_prediction interface~atl_postprocess_rhs atl_postprocess_rhs proc~global_corrector_substep->interface~atl_postprocess_rhs interface~atl_preprocess_rhs atl_preprocess_rhs proc~global_corrector_substep->interface~atl_preprocess_rhs interface~atl_compute_rhs atl_compute_rhs proc~global_corrector_substep->interface~atl_compute_rhs interface~atl_preprocess_local_rhs atl_preprocess_local_rhs proc~local_predictor_substep->interface~atl_preprocess_local_rhs proc~postprocess_rhs_cubes postprocess_rhs_cubes interface~atl_postprocess_rhs->proc~postprocess_rhs_cubes proc~preprocess_rhs_cubes preprocess_rhs_cubes interface~atl_preprocess_rhs->proc~preprocess_rhs_cubes proc~compute_rhs_cubes compute_rhs_cubes interface~atl_compute_rhs->proc~compute_rhs_cubes proc~preprocess_local_rhs_cubes preprocess_local_rhs_cubes interface~atl_preprocess_local_rhs->proc~preprocess_local_rhs_cubes

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iStep
type(atl_statedata_type), private :: statedata_list_temp(minLevel:maxLevel)
integer, private :: nElems

Subroutines

subroutine compute_intermediate1(nTotal, nDofs, nScalars, state_tmp, state, state1, dt)

Arguments

TypeIntentOptionalAttributesName
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) :: state(nTotal,nDofs,nScalars)
real(kind=rk), intent(in) :: state1(nTotal,nDofs,nScalars)
real(kind=rk), intent(in) :: dt

subroutine compute_intermediate2(nTotal, nDofs, nScalars, state_tmp, state, state1, state2, dt)

Arguments

TypeIntentOptionalAttributesName
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) :: state(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) :: dt

subroutine compute_intermediate3(nTotal, nDofs, nScalars, state_tmp, state, state1, state2, state3, dt)

Arguments

TypeIntentOptionalAttributesName
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) :: state(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) :: dt

subroutine compute_prediction(nTotal, nDofs, nScalars, state_tmp, state, state1, state2, state3, state4, dt, theta)

Arguments

TypeIntentOptionalAttributesName
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) :: state(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
real(kind=rk), intent(in) :: theta

subroutine update_state(nTotal, nDofs, nScalars, nElems, state, state_der, factor)

Limit the second index by an upper bound of nDofs, as there potentially is a padding on this index.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: nTotal
integer, intent(in) :: nDofs
integer, intent(in) :: nScalars
integer, intent(in) :: nElems
real(kind=rk), intent(inout) :: state(nTotal,nDofs,nScalars)
real(kind=rk), intent(in) :: state_der(:,:,:)

The state derivatives, passed with assumed shape because of a potential padding applied for odd polynomial degrees.

real(kind=rk), intent(in) :: factor