atl_modg_bnd_module Module

Module collects all routines, datatypes, etc. to set boundary contitions for the MOdal Discontinuous Galerkin scheme.


Uses

Used by

  • module~~atl_modg_bnd_module~~UsedByGraph module~atl_modg_bnd_module atl_modg_bnd_module module~atl_covolume_boundary_module atl_covolume_boundary_module module~atl_covolume_boundary_module->module~atl_modg_bnd_module proc~preprocess_rhs_cubes preprocess_rhs_cubes proc~preprocess_rhs_cubes->module~atl_modg_bnd_module module~atl_stabilize_module atl_stabilize_module module~atl_stabilize_module->module~atl_covolume_boundary_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

Functions

private function modg_bnd_extrapolate(nVals, faceOp) result(modalFace)

Function to extrapolate face values for a given boundary condition in physical or modal space.

Arguments

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

The number of coefficients to extrapolate

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

Modal representation on the face of the neighboring element.

Return Value real(kind=rk), allocatable, (:)

The extrapolated modal representation.

private function modg_bnd_mirrorPoint(bc, varSys, time, currentFace, currentLevel, nPoints) result(pointFace)

Function to mirror pointvalues for a given boundary conditions.

Arguments

Type IntentOptional Attributes Name
type(tem_bc_state_type), intent(in) :: bc

The boundary state.

type(tem_varSys_type), intent(in) :: varSys

Global variable system

type(tem_time_type), intent(in) :: time

The current absolute time.

integer, intent(in) :: currentFace

current face used to compute correct index in indices array

integer, intent(in) :: currentLevel

current level

integer, intent(in) :: nPoints

The number of point values to be mirrored.

Return Value real(kind=rk), (npoints)

The mirrored isNodalScheme representation.


Subroutines

public subroutine atl_modg_set_bnd(bc, boundary, facedata, equation, time, mesh, poly_proj, nodalBnd, material, currentLevel, statedata)

Subroutine to set face values to impose boundary conditions at a certain point of the domain. The subroutine is operating levelwise.

Read more…

Arguments

Type IntentOptional Attributes Name
type(atl_boundary_type), intent(in) :: bc(:)

The global description of the boundaries.

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

The levelwise collection of boundary elements and boundary faces.

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

The face data on the current level

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

The underlying equation system

type(tem_time_type), intent(in) :: time

The absolute time point.

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

The description of the mesh on the current level.

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

Data for the projection methods

logical, intent(in) :: nodalBnd

Set boundaries in nodal fashion by default? If set to false, the boundaries may still be set in nodal way whenever necessary (e.g. boundaries which have space-time dependence, etc.)

type(atl_faceMaterialData_type), intent(in), optional :: material(3)

Material description of the faces contained in boundary. One entry for each spatial direction, i.e. x,y,z.

integer, intent(in) :: currentLevel

the level to compute on

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

The state data on the current level

public subroutine atl_modg_bnd(bc, faceOp, poly_proj, nDerivatives, equation, normalRot, isNodalScheme, time, currentFace, currentLevel, nQuadPoints, ndofs, oversamp_dofs, modalFace, faceMaterial)

Subroutine to create the modal representation for a ceratin boundary face.

Arguments

Type IntentOptional Attributes Name
type(atl_boundary_type), intent(in) :: bc

The boundary condition to generate the modal representation for.

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

The modal representation on the face of the neighboring element.

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

Data for the projection methods

integer, intent(in) :: nDerivatives

The number of derivative boundaries to be set

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

The equation system you use.

type(coordRotation_type), intent(in) :: normalRot

Rotation indices to rotate global coordinate system into face normal coordinate system.

logical, intent(in) :: isNodalScheme

Does the solver require isNodalScheme information anyway?

type(tem_time_type), intent(in) :: time

The absolute time point.

integer, intent(in) :: currentFace

current face to compute on, used for index array

integer, intent(in) :: currentLevel

the level to compute on

integer, intent(in) :: nQuadPoints

Number of quadurature points on the face

integer, intent(in) :: ndofs

Number of quadurature points on the face

integer, intent(in) :: oversamp_dofs

Number of quadurature points on the face

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

The modal representation on the boundary face.

real(kind=rk), intent(in), optional :: faceMaterial(:,:)

The material of the boundary face. First dimension is the number of points on the face. Second dimension is the number of material parameters.

private subroutine modg_nodal_bnd(bc, faceOp, poly_proj, equation, normalRot, time, currentFace, currentLevel, nDerivatives, nQuadPoints, oversamp_dofs, modalFace, faceMaterial)

Set boundary values in a nodal way

Arguments

Type IntentOptional Attributes Name
type(atl_boundary_type), intent(in) :: bc

The boundary condition to generate the modal representation for.

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

The modal representation on the face of the neighboring element.

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

Data for the projection methods

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

The equation system you use.

type(coordRotation_type), intent(in) :: normalRot

Rotation indices to rotate global coordinate system into face normal coordinate system.

type(tem_time_type), intent(in) :: time

The absolute time point.

integer, intent(in) :: currentFace

current face to compute on, used for index

integer, intent(in) :: currentLevel

the level to compute on

integer, intent(in) :: nDerivatives

The number of derivative boundaries to be set

integer, intent(in) :: nQuadPoints

Number of quadurature points on the face andi Number of Dofs for the face

integer, intent(in) :: oversamp_dofs

Number of quadurature points on the face andi Number of Dofs for the face

real(kind=rk), intent(out) :: modalFace(:,:)

result of the bnd routine, modal coefficent on the boundary faces

real(kind=rk), intent(in), optional :: faceMaterial(:,:)

The material of the boundary face First dimension is the number of points on the face. Second dimension is the number of material parameters.

private subroutine modg_modal_bnd(bc, faceOp, poly_proj, equation, normalRot, time, currentFace, currentLevel, nQuadPoints, nDofs, oversamp_dofs, modalFace, faceMaterial)

Set boundary values in a modal way

Arguments

Type IntentOptional Attributes Name
type(atl_boundary_type), intent(in) :: bc

The boundary condition to generate the modal representation for.

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

The modal representation on the face of the neighboring element.

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

Data for the projection methods

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

The equation system you use.

type(coordRotation_type), intent(in) :: normalRot

Rotation indices to rotate global coordinate system into face normal coordinate system.

type(tem_time_type), intent(in) :: time

The absolute time point.

integer, intent(in) :: currentFace
integer, intent(in) :: currentLevel

the level to compute on

integer, intent(in) :: nQuadPoints

Number of quadurature points and Number of Dofs for the face

integer, intent(in) :: nDofs

Number of quadurature points and Number of Dofs for the face

integer, intent(in) :: oversamp_dofs

Number of quadurature points and Number of Dofs for the face

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

The modal representation on the boundary face.

real(kind=rk), intent(in), optional :: faceMaterial(:,:)

current face to compute on, used for getting index The material of the boundary face. First dimension is the number of points on the face. Second dimension is the number of material parameters.