atl_modg_2d_multilevel_module Module

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

Due to a compiler problem in Intel 15, we had to replace array syntax by do loops below, and use OMP DO instead of WORKSHARE constructs.


Uses

Used by

  • module~~atl_modg_2d_multilevel_module~~UsedByGraph module~atl_modg_2d_multilevel_module atl_modg_2d_multilevel_module module~atl_stabilize_module atl_stabilize_module module~atl_stabilize_module->module~atl_modg_2d_multilevel_module proc~preprocess_rhs_cubes preprocess_rhs_cubes proc~preprocess_rhs_cubes->module~atl_modg_2d_multilevel_module proc~compute_rhs_cubes_modg_2d compute_rhs_cubes_modg_2d proc~compute_rhs_cubes_modg_2d->module~atl_modg_2d_multilevel_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_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 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

Contents


Subroutines

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

Interpolate modal face representation from coarse to next finer faces (level

Read more…

Arguments

TypeIntentOptionalAttributesName
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_2d_fineToCoarseFace(minLevel, maxLevel, currentLevel, mesh, facedata, scheme, nScalars)

Interpolate modal face representation from next finer faces to coarse level (level

Read more…

Arguments

TypeIntentOptionalAttributesName
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_fineToCoarseElem_2d(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

TypeIntentOptionalAttributesName
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_coarseToFineElem_2d(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

TypeIntentOptionalAttributesName
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.

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

Project modal representation on a face to a semi-refined face (i.e. on a face

Read more…

Arguments

TypeIntentOptionalAttributesName
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 the MODG scheme.

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

The parameters of your MODG scheme on the coarse level.

type(atl_modg_2d_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_2d_semiCoarseFace(modalRepFace, modg_basis, schemeCoarse, schemeFine, coarseDir, fineFaceShift, modalCoarsed)

Project modal representation of a semi-refined face (i.e. on a face

Read more…

Arguments

TypeIntentOptionalAttributesName
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 the MODG scheme.

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

The parameters of your MODG scheme on the coarse level.

type(atl_modg_2d_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.

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

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

Arguments

TypeIntentOptionalAttributesName
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 the MODG scheme.

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

The parameters of your MODG scheme on the coarse level.

type(atl_modg_2d_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_semiRefineElem_2d(modalRepFace, modg_basis, schemeCoarse, schemeFine, refineDir, fineElemShift, modalRefined)

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

Arguments

TypeIntentOptionalAttributesName
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 the MODG scheme.

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

The parameters of your MODG scheme on the coarse level.

type(atl_modg_2d_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.