atl_compute_module Module

All routines, which are usually used inside the time step iteration loop, are collected inside this module. The computation of the right hand side is decomposed into 3 main steps: pre-process, compute_rhs and post-process.


Uses

Used by

  • module~~atl_compute_module~~UsedByGraph module~atl_compute_module atl_compute_module proc~imexrk_substep imexrk_substep proc~imexrk_substep->module~atl_compute_module module~atl_ssprk2_module atl_ssprk2_module module~atl_ssprk2_module->module~atl_compute_module module~atl_rktaylor_module atl_rktaylor_module module~atl_rktaylor_module->module~atl_compute_module proc~global_corrector_substep global_corrector_substep proc~global_corrector_substep->module~atl_compute_module module~atl_fwdeuler_module atl_fwdEuler_module module~atl_fwdeuler_module->module~atl_compute_module module~atl_rk4_module atl_rk4_module module~atl_rk4_module->module~atl_compute_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_fwdeuler_module module~atl_global_time_integration_module->module~atl_rk4_module module~atl_container_module atl_container_module module~atl_container_module->module~atl_global_time_integration_module module~atl_program_module atl_program_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 program~atl_harvesting atl_harvesting program~atl_harvesting->module~atl_container_module program~atl_harvesting->module~atl_program_module module~atl_initialize_module atl_initialize_module module~atl_initialize_module->module~atl_container_module

Contents


Interfaces

public interface atl_preprocess_rhs

  • private subroutine preprocess_rhs_cubes(minLevel, maxLevel, currentLevel, mesh_list, tree, statedata_list, facedata_list, boundary_list, bc, scheme_list, poly_proj_list, equation, material_list, general)

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: minLevel

    The minimum level of the mesh.

    integer, intent(in) :: maxLevel

    The maximum level of the mesh.

    integer, intent(in) :: currentLevel

    the level to compute on

    type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

    List of mesh parts. For each level we have one.

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

    treelm mesh

    type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

    List of states you want to calc the rhs for. For each level we have one.

    type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

    List of face states you want to calc the rhs for. For each level we have one.

    type(atl_level_boundary_type), intent(inout) :: boundary_list(minLevel:maxLevel)

    List of boundaries, for each level.

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

    The global boundary description.

    type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

    List of schemes, for each level.

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

    unique list for projection methods

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

    The equation you are operating with.

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

    Information about the material parameters of the equation.

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

    General treelm settings.

public interface atl_postprocess_rhs

  • private subroutine postprocess_rhs_cubes(mesh, kerneldata, statedata, scheme, timestep, equation)

    Arguments

    TypeIntentOptionalAttributesName
    type(atl_cube_elem_type), intent(inout) :: mesh

    List of mesh parts. For each level we have one.

    type(atl_kerneldata_type), intent(inout) :: kerneldata

    List of kerneldatas. For each level we have one

    type(atl_statedata_type), intent(inout) :: statedata

    List of states you want to calc the rhs for. For each level we have one.

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

    List of schemes, for each level.

    type(atl_timestep_type), intent(inout) :: timestep

    List of levelwise timestepping algorihtms

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

    The equation you are operating with.

public interface atl_compute_rhs

  • private subroutine compute_rhs_cubes(minLevel, maxLevel, currentLevel, mesh_list, tree, kerneldata_list, statedata_list, facedata_list, source, penalizationdata_list, scheme_list, poly_proj_pos, poly_proj_list, equation, material_list, general, computePenalization)

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: minLevel

    The minimum level of the mesh.

    integer, intent(in) :: maxLevel

    The maximum level of the mesh.

    integer, intent(in) :: currentLevel

    The level of the mesh you are computing the rhs for.

    type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

    List of mesh parts. For each level we have one.

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

    treelm mesh

    type(atl_kerneldata_type), intent(inout) :: kerneldata_list(minLevel:maxLevel)

    List of kerneldatas. For each level we have one

    type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

    List of states you want to calc the rhs for. For each level we have one.

    type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

    List of facedatas. For each level we have one

    type(atl_source_type), intent(inout) :: source

    Levelwise list of sources

    type(atl_penalizationData_type), intent(inout) :: penalizationdata_list(minLevel:maxLevel)

    Levelwise list of penalization data

    type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

    List of schemes, for each level.

    integer, intent(in) :: poly_proj_pos(minLevel:maxLevel)

    List of levelwise position of projection method in unique projection_list

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

    unique list for projection methods

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

    The equation you are operating with.

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

    Material parameter description.

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

    General treelm settings

    logical, intent(in), optional :: computePenalization

    Flag to indicate whether penalization terms should be computed or not.

    This is used to switch off the application of penalizing terms from the convective computation and instead compute it in an implicit update, see the atl_imexrk_module. Default is .true.!


Subroutines

public subroutine atl_initialize_state_der(state_der)

This routine is used to initialize an array in an OpenMP PARALLEL region. Usually this is done using a WORKSHARE directive, but due to a bug in Intel 15 we cannot make use of WORKSHARE.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(inout) :: state_der(:,:,:)

The state derivates of the kerneldata.

private subroutine preprocess_rhs_cubes(minLevel, maxLevel, currentLevel, mesh_list, tree, statedata_list, facedata_list, boundary_list, bc, scheme_list, poly_proj_list, equation, material_list, general)

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel

The minimum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

the level to compute on

type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

List of mesh parts. For each level we have one.

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

treelm mesh

type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

List of states you want to calc the rhs for. For each level we have one.

type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

List of face states you want to calc the rhs for. For each level we have one.

type(atl_level_boundary_type), intent(inout) :: boundary_list(minLevel:maxLevel)

List of boundaries, for each level.

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

The global boundary description.

type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

List of schemes, for each level.

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

unique list for projection methods

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

The equation you are operating with.

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

Information about the material parameters of the equation.

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

General treelm settings.

private subroutine postprocess_rhs_cubes(mesh, kerneldata, statedata, scheme, timestep, equation)

Arguments

TypeIntentOptionalAttributesName
type(atl_cube_elem_type), intent(inout) :: mesh

List of mesh parts. For each level we have one.

type(atl_kerneldata_type), intent(inout) :: kerneldata

List of kerneldatas. For each level we have one

type(atl_statedata_type), intent(inout) :: statedata

List of states you want to calc the rhs for. For each level we have one.

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

List of schemes, for each level.

type(atl_timestep_type), intent(inout) :: timestep

List of levelwise timestepping algorihtms

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

The equation you are operating with.

private subroutine compute_rhs_cubes(minLevel, maxLevel, currentLevel, mesh_list, tree, kerneldata_list, statedata_list, facedata_list, source, penalizationdata_list, scheme_list, poly_proj_pos, poly_proj_list, equation, material_list, general, computePenalization)

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel

The minimum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The level of the mesh you are computing the rhs for.

type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

List of mesh parts. For each level we have one.

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

treelm mesh

type(atl_kerneldata_type), intent(inout) :: kerneldata_list(minLevel:maxLevel)

List of kerneldatas. For each level we have one

type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

List of states you want to calc the rhs for. For each level we have one.

type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

List of facedatas. For each level we have one

type(atl_source_type), intent(inout) :: source

Levelwise list of sources

type(atl_penalizationData_type), intent(inout) :: penalizationdata_list(minLevel:maxLevel)

Levelwise list of penalization data

type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

List of schemes, for each level.

integer, intent(in) :: poly_proj_pos(minLevel:maxLevel)

List of levelwise position of projection method in unique projection_list

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

unique list for projection methods

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

The equation you are operating with.

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

Material parameter description.

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

General treelm settings

logical, intent(in), optional :: computePenalization

Flag to indicate whether penalization terms should be computed or not.

This is used to switch off the application of penalizing terms from the convective computation and instead compute it in an implicit update, see the atl_imexrk_module. Default is .true.!

private subroutine compute_rhs_cubes_modg(minLevel, maxLevel, currentLevel, mesh_list, kerneldata_list, statedata_list, facedata_list, source, penalizationdata_list, scheme_list, poly_proj_pos, poly_proj_list, equation, material_list, general, computePenalization)

Computes the right hand side for cubical elements and MODG scheme.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel

The minimum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The level of the mesh you are computing the rhs for.

type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

List of mesh parts. For each level we have one.

type(atl_kerneldata_type), intent(inout) :: kerneldata_list(minLevel:maxLevel)

List of kerneldatas. For each level we have one

type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

List of states you want to calc the rhs for. For each level we have one.

type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

List of facedatas. For each level we have one

type(atl_source_type), intent(inout) :: source

Levelwise list of sources

type(atl_penalizationData_type), intent(inout) :: penalizationdata_list(minLevel:maxLevel)

Levelwise list of penalization data

type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

List of schemes, for each level.

integer, intent(in) :: poly_proj_pos(minLevel:maxLevel)

List of levelwise position of projection method in unique list

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

unique list for projection methods

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

The equation you are operating with.

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

Information about the material parameters of the equation.

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

General treelm settings

logical, intent(in), optional :: computePenalization

Flag to indicate whether penalization terms should be computed or not.

This is used to switch off the application of penalizing terms from the convective computation and instead compute it in an implicit update, see the atl_imexrk_module. Default is .true.!

private subroutine modg_compute_project_physFlux(mesh, equation, kerneldata, statedata, dirVec, poly_proj, material, scheme, dl_prod, apply_pen, penalizationdata, minLevel, currentLevel, maxLevel, eval_phy, usePenalization)

TODO NA - Move this routine to the atl_modg_kernel_module

Arguments

TypeIntentOptionalAttributesName
type(atl_cube_elem_type), intent(in) :: mesh

Descritption of the cubical elements in the mesh

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

The equation description.

type(atl_kerneldata_type), intent(inout) :: kerneldata

The data of the kernel. Holds the physical fluxes.

type(atl_statedata_type), intent(inout) :: statedata

The representation on the face + representation of the flux.

integer, intent(in) :: dirVec(3,3)

vector for direction indicators

type(ply_poly_project_type) :: poly_proj

Data for projection method

type(atl_material_type), intent(inout) :: material

Material parameters (mu, epsilon) for all elements

type(atl_scheme_type), intent(inout) :: scheme(minLevel:maxLevel)

The parameters of the MODG scheme

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

stored scalar products of the testfunction and anstaz function

type(atl_penalization_pointer_type) :: apply_pen(2)
type(atl_penalizationData_type), intent(inout) :: penalizationdata
integer, intent(in) :: minLevel
integer, intent(in) :: currentLevel
integer, intent(in) :: maxLevel
type(atl_physflux_pointer_type) :: eval_phy(2)
logical, intent(in) :: usePenalization

Flag indicating whether to apply the penalization or not.

When a implicit scheme is used to integrate the penalized parts, this can be used to switch it off here.

private subroutine compute_rhs_cubes_modg_2d(minLevel, maxLevel, currentLevel, mesh_list, kerneldata_list, statedata_list, facedata_list, source, penalizationdata_list, scheme_list, poly_proj_pos, poly_proj_list, equation, material_list, general, computePenalization)

Computes the right hand side for cubical elements and 2D MODG scheme.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel

The minimum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The level of the mesh you are computing the rhs for.

type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

List of mesh parts. For each level we have one.

type(atl_kerneldata_type), intent(inout) :: kerneldata_list(minLevel:maxLevel)

List of kerneldatas. For each level we have one

type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

List of states you want to calc the rhs for. For each level we have one.

type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

List of facedatas. For each level we have one

type(atl_source_type), intent(inout) :: source

Levelwise list of sources

type(atl_penalizationData_type), intent(inout) :: penalizationdata_list(minLevel:maxLevel)

Levelwise list of penalization data

type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

List of schemes, for each level.

integer, intent(in) :: poly_proj_pos(minLevel:maxLevel)

List of levelwise position of projection method in unique projection_list

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

unique list for projection methods

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

The equation you are operating with.

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

Information about the material parameters of the equation.

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

General treelm settings

logical, intent(in), optional :: computePenalization

Flag to indicate whether penalization terms should be computed or not.

This is used to switch off the application of penalizing terms from the convective computation and instead compute it in an implicit update, see the atl_imexrk_module. Default is .true.!

private subroutine modg_2d_compute_project_physFlux(mesh, equation, kerneldata, statedata, scheme, poly_proj, dl_prod, penalizationdata, material, minLevel, maxLevel, currentLevel, eval_phy, apply_pen, usePenalization)

This subroutine computes the physical fluxes for various equation system

Read more…

Arguments

TypeIntentOptionalAttributesName
type(atl_cube_elem_type), intent(in) :: mesh

Descritption of the cubical elements in the mesh

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

The equation description.

type(atl_kerneldata_type), intent(inout) :: kerneldata

The data of the kernel. Holds the physical fluxes.

type(atl_statedata_type), intent(in) :: statedata

The representation on the face + representation of the flux.

type(atl_scheme_type), intent(inout) :: scheme(minLevel:maxLevel)

The parameters of the MODG scheme

type(ply_poly_project_type) :: poly_proj

Data for projection method

real(kind=rk), intent(in) :: dl_prod(2,scheme(currentLevel)%modg_2d%maxPolyDegree+1)

stored scalar products of the testfunction and anstaz function

type(atl_penalizationData_type), intent(inout) :: penalizationdata
type(atl_material_type), intent(inout) :: material

Material parameters (mu, epsilon) for all elements

integer, intent(in) :: minLevel

the levels of the geometry

integer, intent(in) :: maxLevel

the levels of the geometry

integer, intent(in) :: currentLevel

the levels of the geometry

type(atl_physflux_pointer_type) :: eval_phy(2)
type(atl_penalization_pointer_type) :: apply_pen(2)
logical, intent(in) :: usePenalization

Flag indicating whether to apply the penalization or not.

When a implicit scheme is used to integrate the penalized parts, this can be used to switch it off here.

private subroutine compute_rhs_cubes_modg_1d(minLevel, maxLevel, currentLevel, mesh_list, tree, kerneldata_list, statedata_list, facedata_list, source, penalizationdata_list, scheme_list, poly_proj_pos, poly_proj_list, equation, material_list, general, computePenalization)

Computes the right hand side for cubical elements and 1D MODG scheme.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: minLevel

The minimum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The level of the mesh you are computing the rhs for.

type(atl_cube_elem_type), intent(inout) :: mesh_list(minLevel:maxLevel)

List of mesh parts. For each level we have one.

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

treelm mesh

type(atl_kerneldata_type), intent(inout) :: kerneldata_list(minLevel:maxLevel)

List of kerneldatas. For each level we have one

type(atl_statedata_type), intent(inout) :: statedata_list(minLevel:maxLevel)

List of states you want to calc the rhs for. For each level we have one.

type(atl_facedata_type), intent(inout) :: facedata_list(minLevel:maxLevel)

List of facedatas. For each level we have one

type(atl_source_type), intent(inout) :: source

Levelwise list of sources

type(atl_penalizationData_type), intent(inout) :: penalizationdata_list(minLevel:maxLevel)

Levelwise list of penalization data

type(atl_scheme_type), intent(inout) :: scheme_list(minLevel:maxLevel)

List of schemes, for each level.

integer, intent(in) :: poly_proj_pos(minLevel:maxLevel)

List of levelwise position of projection method in unique projection_list

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

unique list for projection methods

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

The equation you are operating with.

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

Material parameter description.

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

General treelm settings

logical, intent(in), optional :: computePenalization

Flag to indicate whether penalization terms should be computed or not.

This is used to switch off the application of penalizing terms from the convective computation and instead compute it in an implicit update, see the atl_imexrk_module. Default is .true.!

private subroutine modg_1d_compute_project_physFlux(mesh, equation, material, kerneldata, statedata, scheme, poly_proj, penalizationdata, minLevel, maxLevel, currentLevel, usePenalization)

Arguments

TypeIntentOptionalAttributesName
type(atl_cube_elem_type), intent(in) :: mesh

Descritption of the cubical elements in the mesh

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

The equation description.

type(atl_material_type), intent(in) :: material

Description of the material parameters.

type(atl_kerneldata_type), intent(inout) :: kerneldata

The data of the kernel. Holds the physical fluxes.

type(atl_statedata_type), intent(in) :: statedata

The representation on the face + representation of the flux.

type(atl_scheme_type), intent(inout) :: scheme(minLevel:maxLevel)

The parameters of the MODG scheme

type(ply_poly_project_type) :: poly_proj

Data for projection method

type(atl_penalizationData_type), intent(inout) :: penalizationdata

Penalization terms

integer, intent(in) :: minLevel

the levels of the geometry

integer, intent(in) :: maxLevel

the levels of the geometry

integer, intent(in) :: currentLevel

the levels of the geometry

logical, intent(in) :: usePenalization

Flag indicating whether to apply the penalization or not.

When a implicit scheme is used to integrate the penalized parts, this can be used to switch it off here.