atl_stabilize_module Module

Routines for stabilization of a spectral scheme.


Uses

Used by

  • module~~atl_stabilize_module~~UsedByGraph module~atl_stabilize_module atl_stabilize_module module~atl_ssprk2_module atl_ssprk2_module module~atl_ssprk2_module->module~atl_stabilize_module module~atl_rktaylor_module atl_rktaylor_module module~atl_rktaylor_module->module~atl_stabilize_module module~atl_imexrk_module atl_imexrk_module module~atl_imexrk_module->module~atl_stabilize_module module~atl_fwdeuler_module atl_fwdEuler_module module~atl_fwdeuler_module->module~atl_stabilize_module program~atl_harvesting atl_harvesting program~atl_harvesting->module~atl_stabilize_module module~atl_container_module atl_container_module program~atl_harvesting->module~atl_container_module module~atl_program_module atl_program_module program~atl_harvesting->module~atl_program_module module~atl_rk4_module atl_rk4_module module~atl_rk4_module->module~atl_stabilize_module module~atl_global_time_integration_module atl_global_time_integration_module module~atl_global_time_integration_module->module~atl_ssprk2_module module~atl_global_time_integration_module->module~atl_rktaylor_module module~atl_global_time_integration_module->module~atl_imexrk_module module~atl_global_time_integration_module->module~atl_fwdeuler_module module~atl_global_time_integration_module->module~atl_rk4_module module~atl_container_module->module~atl_global_time_integration_module module~atl_program_module->module~atl_global_time_integration_module module~atl_program_module->module~atl_container_module program~ateles ateles program~ateles->module~atl_container_module program~ateles->module~atl_program_module module~atl_initialize_module atl_initialize_module module~atl_initialize_module->module~atl_container_module

Contents


Derived Types

type, private :: atl_adaptive_orders_type

Components

TypeVisibilityAttributesNameInitial
real(kind=rk), private, allocatable:: orders(:)

Functions

private function solve_admissible_state(isen_coef, my_eps, mean, limitedDens, momEnerg) result(t)

Solve for admissible state of the conservative positivity preserving limiter.

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: isen_coef
real(kind=rk), intent(in) :: my_eps
real(kind=rk), intent(in) :: mean(5)
real(kind=rk), intent(in) :: limitedDens
real(kind=rk), intent(in) :: momEnerg(2:5)

Return Value real(kind=rk)

private function solve_admissible_state_2d(isen_coef, my_eps, mean, limitedDens, momEnerg) result(t)

Solve for admissible state of the conservative positivity preserving limiter.

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: isen_coef
real(kind=rk), intent(in) :: my_eps
real(kind=rk), intent(in) :: mean(4)
real(kind=rk), intent(in) :: limitedDens
real(kind=rk), intent(in) :: momEnerg(2:4)

Return Value real(kind=rk)


Subroutines

public subroutine atl_stabilize(minlevel, maxlevel, statedata_list, statedata_stab_list, mesh_list, scheme_list, poly_proj_pos, poly_proj_list, equation, tree, bc, boundary, general, commStateTimer, material_list)

Subroutine to apply the stabilization procedure to the state vector.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel
integer, intent(in) :: maxlevel
type(atl_statedata_type), intent(inout) :: statedata_list(minlevel:maxlevel)
type(atl_statedata_type), intent(inout) :: statedata_stab_list(minlevel:maxlevel)
type(atl_cube_elem_type), intent(inout) :: mesh_list(minlevel:maxlevel)
type(atl_scheme_type), intent(inout) :: scheme_list(minlevel:maxlevel)
integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)
type(ply_poly_project_type), intent(inout) :: poly_proj_list(:)
type(atl_Equations_type), intent(in) :: equation
type(treelmesh_type), intent(in) :: tree

treelm mesh

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

type(atl_material_type), intent(in) :: material_list(minlevel:maxlevel)

public subroutine atl_cons_positivity_preserv(state, mesh, filter, euler, poly_proj)

Apply conservative limitation of denisty and energy to ensure positivity for density and pressure.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_cons_positivity_preserv_type), intent(in) :: filter
type(atl_euler_type), intent(in) :: euler
type(ply_poly_project_type), intent(inout) :: poly_proj

public subroutine atl_cons_positivity_preserv_2d(state, mesh, filter, euler, poly_proj)

Apply conservative limitation of denisty and energy to ensure positivity for density and pressure.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_cons_positivity_preserv_type), intent(in) :: filter
type(atl_euler_type), intent(in) :: euler
type(ply_poly_project_type), intent(inout) :: poly_proj

public subroutine atl_positivity_preserv(state, mesh, filter, euler, poly_proj)

Apply pointwise limitation of denisty and energy to ensure positivity for density and pressure.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_positivity_preserv_type), intent(in) :: filter
type(atl_euler_type), intent(in) :: euler
type(ply_poly_project_type), intent(inout) :: poly_proj

public subroutine atl_positivity_preserv_2d(state, mesh, filter, euler, poly_proj)

Apply pointwise limitation of denisty and energy to ensure positivity for density and pressure.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_positivity_preserv_type), intent(in) :: filter
type(atl_euler_type), intent(in) :: euler
type(ply_poly_project_type), intent(inout) :: poly_proj

private subroutine atl_covolume(minlevel, maxlevel, state, state_stab, mesh, filter, scheme, equation, tree, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer, adaptive_orders)

Covolume filtering for 3D equation.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered (input and output)

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_covolume_type), intent(in) :: filter

The actual co-volume filter to be applied.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

type(atl_adaptive_orders_type), intent(in), optional :: adaptive_orders(minlevel:maxlevel)

The filters orders, if adaptive filter is applied

private subroutine atl_covolume_tocovolume(minlevel, maxlevel, iDir, state, state_stab, mesh, filter, scheme, equation, tree, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer, adaptive_orders)

Recursive routine to project the state from primal mesh to covolume mesh.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

integer, intent(in) :: iDir

The spatial direction for the projection: 1 -> x direction \n 2 -> y direction \n 3 -> z direction \n

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_covolume_type), intent(in) :: filter

The actual co-volume filter to be applied.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

type(atl_adaptive_orders_type), intent(in), optional :: adaptive_orders(minlevel:maxlevel)

The filters orders, if adaptive filter is applied

private recursive subroutine atl_interpolate_elemstate(minlevel, maxlevel, iLevel, iDir, state, state_stab, mesh, scheme, equation, tree, dimen, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer)

Recursive interpolation of element states among the levels of the mesh.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

integer, intent(in) :: iLevel

The current level.

integer, intent(in) :: iDir

The direction to interpolate

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered (input and output)

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

integer, intent(in) :: dimen

The spatial dimension under consideration.

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

private subroutine atl_covolume_2d(minlevel, maxlevel, state, state_stab, mesh, filter, scheme, equation, tree, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer, adaptive_orders)

Covolume filtering for 2D equation.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered (input and output)

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_covolume_type), intent(in) :: filter

The actual co-volume filter to be applied.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

type(atl_adaptive_orders_type), intent(in), optional :: adaptive_orders(minlevel:maxlevel)

The filters orders, if adaptive filter is applied

private subroutine atl_covolume_tocovolume_2d(minlevel, maxlevel, iDir, state, state_stab, mesh, filter, scheme, equation, tree, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer, adaptive_orders)

Recursive routine to project the state from primal mesh to covolume mesh.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

integer, intent(in) :: iDir

The spatial direction for the projection: 1 -> x direction \n 2 -> y direction \n 3 -> z direction \n

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_covolume_type), intent(in) :: filter

The actual co-volume filter to be applied.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

type(atl_adaptive_orders_type), intent(in), optional :: adaptive_orders(minlevel:maxlevel)

The filters orders, if adaptive filter is applied

private subroutine atl_covolume_1d(minlevel, maxlevel, state, state_stab, mesh, filter, scheme, equation, tree, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer)

Covolume filtering for 1D equation.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered (input and output)

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_covolume_type), intent(in) :: filter

The actual co-volume filter to be applied.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

private subroutine atl_covolume_tocovolume_1d(minlevel, maxlevel, iDir, state, state_stab, mesh, filter, scheme, equation, tree, poly_proj, poly_proj_pos, bc, boundary, general, commStateTimer)

Recursive routine to project the state from primal mesh to covolume mesh.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minlevel

The minimal refinement level of the mesh.

integer, intent(in) :: maxlevel

The maximal refinement level of the mesh.

integer, intent(in) :: iDir

The spatial direction for the projection: 1 -> x direction \n 2 -> y direction \n 3 -> z direction \n

type(atl_statedata_type), intent(inout) :: state(minlevel:maxlevel)

State to be filtered

type(atl_statedata_type), intent(inout) :: state_stab(minlevel:maxlevel,1:3)
type(atl_cube_elem_type), intent(inout) :: mesh(minlevel:maxlevel)

Mesh information for all the levels.

type(atl_covolume_type), intent(in) :: filter

The actual co-volume filter to be applied.

type(atl_scheme_type), intent(inout) :: scheme(minlevel:maxlevel)

List of numerical schemes for all the levels.

type(atl_Equations_type), intent(in) :: equation

Equation kind information

type(treelmesh_type), intent(in) :: tree

treelm mesh

type(ply_poly_project_type), intent(inout) :: poly_proj(:)

The list of projections.

integer, intent(inout) :: poly_proj_pos(minlevel:maxlevel)

The mapping from each level to the projections.

type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

type(atl_level_boundary_type), intent(in) :: boundary(minlevel:maxlevel)

The levelwise collection of boundary elements and boundary faces.

type(tem_general_type), intent(inout) :: general

General treelm settings.

integer, intent(inout) :: commStateTimer

Timer for measuring the communication time inside this routine.

private subroutine atl_spectral_visc_1d(state, mesh, filter, maxPolyDeg)

Damp )the modal coefficients of the state vector by a given spectral viscosity method.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_spectral_visc_type), intent(in) :: filter
integer, intent(in) :: maxPolyDeg

private subroutine atl_spectral_visc_2d(state, mesh, filter, maxPolyDeg, orders)

Damp )the modal coefficients of the state vector by a given spectral viscosity method.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_spectral_visc_type), intent(in) :: filter
integer, intent(in) :: maxPolyDeg
real(kind=rk), intent(in), optional :: orders(:)

private subroutine atl_spectral_visc_3d(state, mesh, filter, maxPolyDeg, orders)

Damp )the modal coefficients of the state vector by a given spectral viscosity method.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_spectral_visc_type), intent(in) :: filter
integer, intent(in) :: maxPolyDeg
real(kind=rk), intent(in), optional :: orders(:)

private subroutine atl_cheb_spectral_visc_1d(state, mesh, filter, poly_proj, maxPolyDeg)

Damp the modal coefficients of the state vector by a given spectral viscosity method.

Arguments

TypeIntentOptionalAttributesName
type(atl_statedata_type), intent(inout) :: state
type(atl_cube_elem_type), intent(in) :: mesh
type(atl_spectral_visc_type), intent(in) :: filter
type(ply_poly_project_type), intent(inout) :: poly_proj
integer, intent(in) :: maxPolyDeg