atl_modg_multilevel_module Module

Collections of operations and datatypes related to multilevel simulations for the MODG scheme.

To workaround a buggy workshare implementation in Intel 15, we replaced array syntax constructs and workshares in the code below by collapsed do loops with OpenMP Do directives.


Uses

  • module~~atl_modg_multilevel_module~~UsesGraph module~atl_modg_multilevel_module atl_modg_multilevel_module env_module env_module module~atl_modg_multilevel_module->env_module module~atl_cube_elem_module atl_cube_elem_module module~atl_modg_multilevel_module->module~atl_cube_elem_module module~atl_facedata_module atl_facedata_module module~atl_modg_multilevel_module->module~atl_facedata_module module~atl_kerneldata_module atl_kerneldata_module module~atl_modg_multilevel_module->module~atl_kerneldata_module module~atl_scheme_module atl_scheme_module module~atl_modg_multilevel_module->module~atl_scheme_module module~atl_timer_module atl_timer_module module~atl_modg_multilevel_module->module~atl_timer_module module~ply_modg_basis_module ply_modg_basis_module module~atl_modg_multilevel_module->module~ply_modg_basis_module mpi mpi module~atl_modg_multilevel_module->mpi tem_element_module tem_element_module module~atl_modg_multilevel_module->tem_element_module tem_faceData_module tem_faceData_module module~atl_modg_multilevel_module->tem_faceData_module tem_timer_module tem_timer_module module~atl_modg_multilevel_module->tem_timer_module tem_topology_module tem_topology_module module~atl_modg_multilevel_module->tem_topology_module module~atl_cube_elem_module->env_module module~atl_cube_elem_module->tem_faceData_module tem_construction_module tem_construction_module module~atl_cube_elem_module->tem_construction_module tem_geometry_module tem_geometry_module module~atl_cube_elem_module->tem_geometry_module tem_logging_module tem_logging_module module~atl_cube_elem_module->tem_logging_module treelmesh_module treelmesh_module module~atl_cube_elem_module->treelmesh_module module~atl_facedata_module->env_module module~atl_facedata_module->tem_faceData_module module~atl_boundary_module atl_boundary_module module~atl_facedata_module->module~atl_boundary_module module~atl_facedata_module->tem_construction_module module~atl_kerneldata_module->env_module module~ply_dof_module ply_dof_module module~atl_kerneldata_module->module~ply_dof_module tem_time_module tem_time_module module~atl_kerneldata_module->tem_time_module module~atl_scheme_module->env_module module~atl_scheme_module->module~ply_modg_basis_module aot_table_module aot_table_module module~atl_scheme_module->aot_table_module aotus_module aotus_module module~atl_scheme_module->aotus_module module~atl_modg_1d_scheme_module atl_modg_1d_scheme_module module~atl_scheme_module->module~atl_modg_1d_scheme_module module~atl_modg_2d_scheme_module atl_modg_2d_scheme_module module~atl_scheme_module->module~atl_modg_2d_scheme_module module~atl_modg_scheme_module atl_modg_scheme_module module~atl_scheme_module->module~atl_modg_scheme_module module~atl_stabilization_module atl_stabilization_module module~atl_scheme_module->module~atl_stabilization_module tem_aux_module tem_aux_module module~atl_scheme_module->tem_aux_module module~atl_scheme_module->tem_logging_module tem_stencil_module tem_stencil_module module~atl_scheme_module->tem_stencil_module tem_tools_module tem_tools_module module~atl_scheme_module->tem_tools_module module~atl_timer_module->env_module module~atl_timer_module->tem_timer_module soi_revision_module soi_revision_module module~atl_timer_module->soi_revision_module tem_general_module tem_general_module module~atl_timer_module->tem_general_module module~atl_timer_module->tem_logging_module module~atl_timer_module->treelmesh_module module~ply_modg_basis_module->env_module module~ply_modg_basis_module->module~ply_dof_module module~ply_space_integration_module ply_space_integration_module module~ply_modg_basis_module->module~ply_space_integration_module

Used by

  • module~~atl_modg_multilevel_module~~UsedByGraph module~atl_modg_multilevel_module atl_modg_multilevel_module module~atl_stabilize_module atl_stabilize_module module~atl_stabilize_module->module~atl_modg_multilevel_module proc~compute_rhs_cubes_modg compute_rhs_cubes_modg proc~compute_rhs_cubes_modg->module~atl_modg_multilevel_module proc~preprocess_rhs_cubes preprocess_rhs_cubes proc~preprocess_rhs_cubes->module~atl_modg_multilevel_module module~atl_fwdeuler_module atl_fwdEuler_module module~atl_fwdeuler_module->module~atl_stabilize_module module~atl_imexrk_module atl_imexrk_module module~atl_imexrk_module->module~atl_stabilize_module module~atl_rk4_module atl_rk4_module module~atl_rk4_module->module~atl_stabilize_module module~atl_rktaylor_module atl_rktaylor_module module~atl_rktaylor_module->module~atl_stabilize_module module~atl_ssprk2_module atl_ssprk2_module module~atl_ssprk2_module->module~atl_stabilize_module program~atl_harvesting atl_harvesting program~atl_harvesting->module~atl_stabilize_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_imexrk_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

Subroutines

public subroutine atl_modg_coarseToFineFace(minLevel, maxLevel, currentLevel, mesh, facedata, scheme, nScalars)

I n t e r p o l a t e

m o d a l

f a c e

r e p r e s e n t a t i o n

f r o m

c o a r s e

t o

n e x t

f i n e r

f a c e s

( l e v e l

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: minLevel

The minumum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The current level (i.e. the coarse level).

type(atl_cube_elem_type), intent(in) :: mesh(minLevel:maxLevel)

The mesh representation.

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

The face representations (finer faces are interpolated from coarser ones).

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

The schemes on the different levels.

integer, intent(in) :: nScalars

The number of scalar variables in your equation system.

public subroutine atl_modg_coarseToFineElem(minLevel, maxLevel, currentLevel, iDir, mesh, state_stab, scheme, nScalars)

Project coarse parent element to its 8 finer child elements by a simple L2 projection.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: minLevel

The minumum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The current level (i.e. the coarse level).

integer, intent(in) :: iDir

The direction to project

type(atl_cube_elem_type), intent(in) :: mesh(minLevel:maxLevel)

The mesh representation.

type(atl_statedata_type), intent(inout) :: state_stab(minLevel:maxLevel,1:3)

The face representations (finer faces are interpolated from coarser ones).

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

The schemes on the different levels.

integer, intent(in) :: nScalars

The number of scalar variables in your equation system.

public subroutine atl_modg_fineToCoarseElem(minLevel, maxLevel, currentLevel, iDir, mesh, state_stab, scheme, nScalars)

Project data from 8 smaller elements to its parent element in terms of L2 projections.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: minLevel

The minumum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The current level (i.e. the coarse level).

integer, intent(in) :: iDir

The direction to interpolate.

type(atl_cube_elem_type), intent(in) :: mesh(minLevel:maxLevel)

The mesh representation.

type(atl_statedata_type), intent(inout) :: state_stab(minLevel:maxLevel,1:3)

The face representations (finer faces are interpolated from coarser ones).

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

The schemes on the different levels.

integer, intent(in) :: nScalars

The number of scalar variables in your equation system.

public subroutine atl_modg_fineToCoarseFace(minLevel, maxLevel, currentLevel, mesh, facedata, scheme, nScalars)

I n t e r p o l a t e

m o d a l

f a c e

r e p r e s e n t a t i o n

f r o m

n e x t

f i n e r

f a c e s

t o

c o a r s e

l e v e l

( l e v e l

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: minLevel

The minumum level of the mesh.

integer, intent(in) :: maxLevel

The maximum level of the mesh.

integer, intent(in) :: currentLevel

The current level (i.e. the coarse level).

type(atl_cube_elem_type), intent(in) :: mesh(minLevel:maxLevel)

The mesh representation.

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

The face representations (finer faces are interpolated from coarser ones).

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

The schemes on the different levels.

integer, intent(in) :: nScalars

The number of scalar variables in your equation system.

private subroutine modg_semiRefineElem(modalRepFace, modg_basis, schemeCoarse, schemeFine, refineDir, fineElemShift, modalRefined)

Subroutine to semi-refine an element with modal polynomial representation into its semi-children.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: modalRepFace(:,:)

Modal representation of a function on the non-refined face. Dimensions are: (modg%maxPolyDegree+1)^2 for the first dimension and nScalars for the second dimension.

type(ply_modg_basis_type) :: modg_basis

Informations about the polynomial basis of a MODG scheme.

type(atl_modg_scheme_type), intent(in) :: schemeCoarse

The parameters of your MODG scheme on the coarse level.

type(atl_modg_scheme_type), intent(in) :: schemeFine

The parameters of your MODG scheme on the fine level.

integer, intent(in) :: refineDir

The direction of the semi-refinement. Either 1 or 2. Have a look at the function description.

integer, intent(in) :: fineElemShift

The semi-refined element you want to obtain.

real(kind=rk), intent(inout) :: modalRefined(:,:)

The modal representation of modalRepFace restricted to the semi-refined element.

private subroutine modg_semiRefineFace(modalRepFace, modg_basis, schemeCoarse, schemeFine, refineDir, fineFaceShift, modalRefined)

P r o j e c t

m o d a l

r e p r e s e n t a t i o n

o n

a

f a c e

t o

a

s e m i - r e f i n e d

f a c e

( i . e .

o n

a

f a c e

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: modalRepFace(:,:)

Modal representation of a function on the non-refined face. Dimensions are: (modg%maxPolyDegree+1)^2 for the first dimension and nScalars for the second dimension.

type(ply_modg_basis_type) :: modg_basis

Informations about the polynomial basis of a MODG scheme.

type(atl_modg_scheme_type), intent(in) :: schemeCoarse

The parameters of your MODG scheme on the coarse level.

type(atl_modg_scheme_type), intent(in) :: schemeFine

The parameters of your MODG scheme on the fine level.

integer, intent(in) :: refineDir

The direction of the semi-refinement. Either 1 or 2. Have a look at the function description.

integer, intent(in) :: fineFaceShift

The semi-refined element you want to obtain.

real(kind=rk), intent(inout) :: modalRefined(:,:)

The modal representation of modalRepFace restricted to the semi-refined element.

private subroutine modg_semiCoarseElem(modalRepFace, modg_basis, schemeCoarse, schemeFine, coarseDir, fineElemShift, modalCoarsed)

Subroutine to semi-coarsen an element with modal polynomial representation to its semi-parent.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: modalRepFace(:,:)

Modal representation of a function on one of refined element. Which fine element is determined by fineFaceShift Dimensions are: (modg%maxPolyDegree+1)^3 for the first dimension and nScalars for the second dimension.

type(ply_modg_basis_type) :: modg_basis

Informations about the polynomial basis of a MODG scheme.

type(atl_modg_scheme_type), intent(in) :: schemeCoarse

The parameters of your MODG scheme on the coarse level.

type(atl_modg_scheme_type), intent(in) :: schemeFine

The parameters of your MODG scheme on the fint level.

integer, intent(in) :: coarseDir

The direction of the semi-coarsening. Either 1 or 2 or 3. Have a look at the function description.

integer, intent(in) :: fineElemShift

The semi-refined element you want to obtain.

real(kind=rk), intent(inout) :: modalCoarsed(:,:)

The modal representation of modalRepFace on the coarser element, restricted to the given fine element.

private subroutine modg_semiCoarseFace(modalRepFace, modg_basis, schemeCoarse, schemeFine, coarseDir, fineFaceShift, modalCoarsed)

P r o j e c t

m o d a l

r e p r e s e n t a t i o n

o f

a

s e m i - r e f i n e d

f a c e

( i . e .

o n

a

f a c e

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: modalRepFace(:,:)

Modal representation of a function on one of refined face. Which fine face is determined by fineFaceShift Dimensions are: (modg%maxPolyDegree+1)^2 for the first dimension and nScalars for the second dimension.

type(ply_modg_basis_type) :: modg_basis

Informations about the polynomial basis of a MODG scheme.

type(atl_modg_scheme_type), intent(in) :: schemeCoarse

The parameters of your MODG scheme on the coarse level.

type(atl_modg_scheme_type), intent(in) :: schemeFine

The parameters of your MODG scheme on the fint level.

integer, intent(in) :: coarseDir

The direction of the semi-coarsening. Either 1 or 2. Have a look at the function description.

integer, intent(in) :: fineFaceShift

The semi-refined element you want to obtain.

real(kind=rk), intent(inout) :: modalCoarsed(:,:)

The modal representation of modalRepFace on the coarser element, restricted to the given fine element.