Creates dimension by dimension level descriptors.
Type | Intent | Optional | 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. |
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