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 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_rktaylor_module atl_rktaylor_module module~atl_rktaylor_module->module~atl_compute_module module~atl_ssprk2_module atl_ssprk2_module module~atl_ssprk2_module->module~atl_compute_module proc~global_corrector_substep global_corrector_substep proc~global_corrector_substep->module~atl_compute_module proc~imexrk_substep imexrk_substep proc~imexrk_substep->module~atl_compute_module module~atl_global_time_integration_module atl_global_time_integration_module module~atl_global_time_integration_module->module~atl_fwdeuler_module module~atl_global_time_integration_module->module~atl_rk4_module module~atl_global_time_integration_module->module~atl_rktaylor_module module~atl_global_time_integration_module->module~atl_ssprk2_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 module~atl_initialize_module atl_initialize_module module~atl_initialize_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

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

    Type IntentOptional Attributes Name
    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

    Type IntentOptional Attributes Name
    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

    Type IntentOptional Attributes Name
    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.

    Read more…

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

Type IntentOptional Attributes Name
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)

c o m p u t e

t h e

r i g h t

h a n d

s i d e

o f

y o u r

d i s c r e t e

e q u a t i o n .

Read more…

Arguments

Type IntentOptional Attributes Name
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)

A p p l i e s

t h e

p o s t p r o c e s s i n g

s t e p

o f

t h e

c o m p u t e

s t e p .

Read more…

Arguments

Type IntentOptional Attributes Name
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)

c o m p u t e

t h e

r i g h t

h a n d

s i d e

o f

y o u r

d i s c r e t e

e q u a t i o n .

Read more…

Arguments

Type IntentOptional Attributes Name
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.

Read more…

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

Type IntentOptional Attributes Name
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.

Read more…

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

Type IntentOptional Attributes Name
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.

Read more…

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

Type IntentOptional Attributes Name
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.

Read more…

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

Type IntentOptional Attributes Name
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.

Read more…

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

Type IntentOptional Attributes Name
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.

Read more…

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

Arguments

Type IntentOptional Attributes Name
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.

Read more…