tem_dimByDim_construction Subroutine

private subroutine tem_dimByDim_construction(tree, boundary, commPattern, proc, levelDescX, levelDescY, levelDescZ)

Creates dimension by dimension level descriptors.

Arguments

Type IntentOptional Attributes Name
type(treelmesh_type), intent(inout) :: tree

Tree representation of the mesh.

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

The boundaries of your simulation domain

type(tem_commPattern_type), intent(in) :: commPattern

The communication pattern you use for the buffer.

type(tem_comm_env_type), intent(in) :: proc

Process description to use.

type(tem_levelDesc_type), intent(out), allocatable :: levelDescX(:)

Level descriptor for each spatial direction and each level of your mesh. The level descriptor have to be constructed with the dimension by dimension stencils (+1, 0, -1) for each spatial direction.

type(tem_levelDesc_type), intent(out), allocatable :: levelDescY(:)

Level descriptor for each spatial direction and each level of your mesh. The level descriptor have to be constructed with the dimension by dimension stencils (+1, 0, -1) for each spatial direction.

type(tem_levelDesc_type), intent(out), allocatable :: levelDescZ(:)

Level descriptor for each spatial direction and each level of your mesh. The level descriptor have to be constructed with the dimension by dimension stencils (+1, 0, -1) for each spatial direction.


Calls

proc~~tem_dimbydim_construction~~CallsGraph proc~tem_dimbydim_construction tem_dimByDim_construction interface~tem_stencil_dump tem_stencil_dump proc~tem_dimbydim_construction->interface~tem_stencil_dump proc~tem_create_leveldesc tem_create_levelDesc proc~tem_dimbydim_construction->proc~tem_create_leveldesc proc~tem_define_dimstencil tem_define_dimStencil proc~tem_dimbydim_construction->proc~tem_define_dimstencil proc~tem_stencilelement_dump tem_stencilElement_dump interface~tem_stencil_dump->proc~tem_stencilelement_dump proc~tem_stencilheader_dump tem_stencilHeader_dump interface~tem_stencil_dump->proc~tem_stencilheader_dump proc~tem_build_horizontaldependencies tem_build_horizontalDependencies proc~tem_create_leveldesc->proc~tem_build_horizontaldependencies proc~tem_build_verticaldependencies tem_build_verticalDependencies proc~tem_create_leveldesc->proc~tem_build_verticaldependencies proc~tem_cleanupdependencyarrays tem_cleanupDependencyArrays proc~tem_create_leveldesc->proc~tem_cleanupdependencyarrays proc~tem_find_allelements tem_find_allElements proc~tem_create_leveldesc->proc~tem_find_allelements proc~tem_init_elemlevels tem_init_elemLevels proc~tem_create_leveldesc->proc~tem_init_elemlevels interface~init~24 init proc~tem_define_dimstencil->interface~init~24

Called by

proc~~tem_dimbydim_construction~~CalledByGraph proc~tem_dimbydim_construction tem_dimByDim_construction proc~tem_build_face_info tem_build_face_info proc~tem_build_face_info->proc~tem_dimbydim_construction

Source Code

  subroutine tem_dimByDim_construction( tree, boundary, commPattern, proc, &
    &                                   levelDescX, levelDescY, levelDescZ )
    ! --------------------------------------------------------------------------
    !> Tree representation of the mesh.
    type(treelmesh_type), intent(inout) :: tree
    !> The boundaries of your simulation domain
    type(tem_bc_prop_type), intent(in) :: boundary
    !> The communication pattern you use for the buffer.
    type(tem_commpattern_type), intent(in) :: commPattern
    !> Level descriptor for each spatial direction and each level of your mesh.
    !! The level descriptor have to be constructed with the dimension by
    !! dimension stencils (+1, 0, -1) for each spatial direction.
    type(tem_levelDesc_type), allocatable, intent(out) :: levelDescX(:)
    !> Level descriptor for each spatial direction and each level of your mesh.
    !! The level descriptor have to be constructed with the dimension by
    !! dimension stencils (+1, 0, -1) for each spatial direction.
    type(tem_levelDesc_type), allocatable, intent(out) :: levelDescY(:)
    !> Level descriptor for each spatial direction and each level of your mesh.
    !! The level descriptor have to be constructed with the dimension by
    !! dimension stencils (+1, 0, -1) for each spatial direction.
    type(tem_levelDesc_type), allocatable, intent(out) :: levelDescZ(:)
    !> Process description to use.
    type(tem_comm_env_type), intent(in) :: proc
    ! --------------------------------------------------------------------------
    ! The dimension-by-dimension stencil list.
    type(tem_stencilHeader_type) :: stencilList(3)
    ! --------------------------------------------------------------------------

    ! Create the dimension by dimension stencils
    write(logUnit(3),*) 'Creating dimension by dimension stencils for face ' &
      &                 //  'descriptor...'
    call tem_define_dimStencil( stencilList(1), tree%nElems, 1 )
    call tem_define_dimStencil( stencilList(2), tree%nElems, 2 )
    call tem_define_dimStencil( stencilList(3), tree%nElems, 3 )

    ! Dump the stencils we used.
    call tem_stencil_dump( stencilList( 1 ))
    call tem_stencil_dump( stencilList( 2 ))
    call tem_stencil_dump( stencilList( 3 ))

    ! Now, build the level descriptors for each of the stencils.
    call tem_create_levelDesc( tree, stencilList(1), boundary, commPattern, &
      &                        levelDescX, proc                             )
    call tem_create_levelDesc( tree, stencilList(2), boundary, commPattern, &
      &                        levelDescY, proc                             )
    call tem_create_levelDesc( tree, stencilList(3), boundary, commPattern, &
      &                        levelDescZ, proc                             )

  end subroutine tem_dimByDim_construction