atl_facedata_module Module

Collects routines and datatypes related to face information.



Variables

Type Visibility Attributes Name Initial
real(kind=rk), public, parameter, dimension(2) :: atl_elemfaceToNormal_prp = reshape((/-1.0_rk, 1.0_rk/), (/2/))

outer unit surface normal coefficient.

Maps left or right face to its outer unit surface normal. Because of our cubical elements we do not need full 3-dimensional vectors here and we store only the non-zero components. Use \link tem_face_module:tem_leftface_prp \endlink and \link tem_face_module:tem_rightface_prp \endlink to access this mapping.


Interfaces

public interface atl_init_facedata

  • private subroutine atl_init_facedata_sym(faces, facedata, minLevel, maxLevel, nDim, nScalars, nFaceDofs, boundary)

    Creates the datastructures for modal representations on the faces. This routine creates symmetric representations, i.e. state and fluxes have the same number of variables on the face.

    Arguments

    Type IntentOptional Attributes Name
    type(tem_face_type), intent(in) :: faces(minLevel:maxLevel)

    Description of the faces (levelwise).

    type(atl_facedata_type), intent(out), allocatable :: facedata(:)

    The face data to be initialized (levelwise, running from minLevel to maxLevel).

    integer, intent(in) :: minLevel

    The minimum refinement level of the mesh.

    integer, intent(in) :: maxLevel

    The maximum refinement level of the mesh.

    integer, intent(in) :: nDim

    The number of dimensions of the used scheme.

    integer, intent(in) :: nScalars

    The number of scalar variables to store on the faces.

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

    The number of degrees of freedoms on the face (one value for each level).

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

    The boundary description for the faces on all levels of the mesh.

  • private subroutine atl_init_facedata_asym(faces, facedata, minLevel, maxLevel, nDim, nScalarsState, nScalarsFlux, nFaceDofs, boundary)

    Creates the datastructures for modal representations on the faces. This routine creates asymmetric representations, i.e. state and fluxes have different number of variables on the face.

    Arguments

    Type IntentOptional Attributes Name
    type(tem_face_type), intent(in) :: faces(minLevel:maxLevel)

    Description of the faces (levelwise).

    type(atl_facedata_type), intent(out), allocatable :: facedata(:)

    The face data to be initialized (levelwise, running from minLevel to maxLevel).

    integer, intent(in) :: minLevel

    The minimum refinement level of the mesh.

    integer, intent(in) :: maxLevel

    The maximum refinement level of the mesh.

    integer, intent(in) :: nDim

    The number of dimensions of the used scheme.

    integer, intent(in) :: nScalarsState

    The number of scalar variables to store on the faces for the state.

    integer, intent(in) :: nScalarsFlux

    The number of scalar variables to store on the faces for the flux.

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

    The number of degrees of freedoms on the face (one value for each level).

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

    The boundary description for the faces on all levels of the mesh.


Derived Types

type, public ::  atl_faceRep_type

Representation of a solution on a set of faces (all of them in a fixed spatial direction).

Components

Type Visibility Attributes Name Initial
integer, public :: nFaces = 0

The number of faces with a face representation.

real(kind=rk), public, allocatable :: dat(:,:,:,:)

Data for the face representation. The size of this array is: \n (nFaces, nFaceDofs, nScalars,2) -> 2 because of left and right face.

type, public ::  atl_facedata_type

Datatype to represent data defined on the faces of a cubical element.

Components

Type Visibility Attributes Name Initial
type(atl_faceRep_type), public :: faceRep(3)

Representation of the state on the face. We handle it for each spatial direction (x,y,z) separately.

type(atl_faceRep_type), public :: faceFlux(3)

Representation of the flux on the face. We handle it for each spatial direction (x,y,z) separately.


Subroutines

private subroutine atl_init_facedata_sym(faces, facedata, minLevel, maxLevel, nDim, nScalars, nFaceDofs, boundary)

Initializes the face data by a given set of faces.

Read more…

Arguments

Type IntentOptional Attributes Name
type(tem_face_type), intent(in) :: faces(minLevel:maxLevel)

Description of the faces (levelwise).

type(atl_facedata_type), intent(out), allocatable :: facedata(:)

The face data to be initialized (levelwise, running from minLevel to maxLevel).

integer, intent(in) :: minLevel

The minimum refinement level of the mesh.

integer, intent(in) :: maxLevel

The maximum refinement level of the mesh.

integer, intent(in) :: nDim

The number of dimensions of the used scheme.

integer, intent(in) :: nScalars

The number of scalar variables to store on the faces.

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

The number of degrees of freedoms on the face (one value for each level).

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

The boundary description for the faces on all levels of the mesh.

private subroutine atl_init_facedata_asym(faces, facedata, minLevel, maxLevel, nDim, nScalarsState, nScalarsFlux, nFaceDofs, boundary)

Initializes the face data by a given set of faces (asymmetrically).

Read more…

Arguments

Type IntentOptional Attributes Name
type(tem_face_type), intent(in) :: faces(minLevel:maxLevel)

Description of the faces (levelwise).

type(atl_facedata_type), intent(out), allocatable :: facedata(:)

The face data to be initialized (levelwise, running from minLevel to maxLevel).

integer, intent(in) :: minLevel

The minimum refinement level of the mesh.

integer, intent(in) :: maxLevel

The maximum refinement level of the mesh.

integer, intent(in) :: nDim

The number of dimensions of the used scheme.

integer, intent(in) :: nScalarsState

The number of scalar variables to store on the faces for the state.

integer, intent(in) :: nScalarsFlux

The number of scalar variables to store on the faces for the flux.

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

The number of degrees of freedoms on the face (one value for each level).

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

The boundary description for the faces on all levels of the mesh.

private subroutine atl_init_facerep(nScalars, nFaceDofs, faceRep, dimLevelDesc, dir, boundary)

Initializes the face data by a given set of faces.

Read more…

Arguments

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

The number of scalar variables to store on the faces.

integer, intent(in) :: nFaceDofs

The number of degrees of freedoms on the face.

type(atl_faceRep_type), intent(out) :: faceRep

The face representation to be initialized.

type(tem_levelDesc_type), intent(in) :: dimLevelDesc

Dimension-by-dimension level description of the mesh.

integer, intent(in) :: dir

The spatial direciton:\n 1 -> x direction \n 2 -> y direction \n 3 -> z direction

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

The boundary description for the faces on the current level.