tem_faceDep_type Derived Type

type, private :: tem_faceDep_type

Datatype to represent dependencies (in up- and downward direction) of the faces in a TREELM mesh. We only store face dependencies between the two adjacent refinement levels (i.e. vertical dependencies consider only a refinement level jump of 1 in both refinement directions).


Inherited by

type~~tem_facedep_type~~InheritedByGraph type~tem_facedep_type tem_faceDep_type type~tem_face_descriptor_type tem_face_descriptor_type type~tem_face_descriptor_type->type~tem_facedep_type faceDep type~tem_face_type tem_face_type type~tem_face_type->type~tem_face_descriptor_type faces

Components

Type Visibility Attributes Name Initial
integer(kind=long_k), public, allocatable :: parentFaceId(:)

Todo

JZ: currently we store vertical dependencies for all faces in the face,even if a face does not require a vertical dependency. Maybe we can replace this by a dynamic strucutre to avoid exessive memory consumption. The upwards (current level -> coarser level) facial dependencies. The size of this array is the number of faces. The array holds the face ids of the parent elements. If any element has no parent face (i.e. no upward dependency is necessary) this array holds a -1 at the element's position.

integer, public, allocatable :: parentFacePos(:)

The parent elements position in the face description of the next coarser level. If any element does not have a parent face this array will hold a -1 entry at its position.

integer(kind=long_k), public, allocatable :: childFaceId(:,:)

The downwards (current level -> finer level) facial dependencies. The size of this array is 4 (as we have 4 child faces) and the number of faces on the current level. If a face does not have/require child faces its entries are set to -1.

integer(kind=long_k), public, allocatable :: childFaceIdOp(:,:)
integer, public, allocatable :: childFacePos(:,:)

The child element positions in the face desciption of the next finer level. If any element does not have child faces, its entries will be set to -1.

integer, public, allocatable :: childFacePosOp(:,:)

Source Code

  type tem_faceDep_type
    !> @todo JZ: currently we store vertical dependencies for all faces in the
    !! face,even if a face does not require a vertical dependency. Maybe we can
    !! replace this by a dynamic strucutre to avoid exessive memory consumption.

    !> The upwards (current level -> coarser level) facial dependencies. The
    !! size of this array is the number of faces. The array holds the face ids
    !! of the parent elements.
    !! If any element has no parent face (i.e. no upward dependency is
    !! necessary) this array holds a -1 at the element's position.
    integer(kind=long_k), allocatable :: parentFaceId(:)
    !> The parent elements position in the face description of the next coarser
    !! level. If any element does not have a parent face this array will hold a
    !! -1 entry at its position.
    integer, allocatable :: parentFacePos(:)
    !> The downwards (current level -> finer level) facial dependencies. The
    !! size of this array is 4 (as we have 4 child faces) and the number of
    !! faces on the current level. If a face does not have/require child faces
    !! its entries are set to -1.
    integer(kind=long_k), allocatable :: childFaceId(:,:)
    integer(kind=long_k), allocatable :: childFaceIdOp(:,:)
    !> The child element positions in the face desciption of the next finer
    !! level. If any element does not have child faces, its entries will be set
    !! to -1.
    integer, allocatable :: childFacePos(:,:)
    integer, allocatable :: childFacePosOp(:,:)
  end type tem_faceDep_type