Create a face level descriptor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(treelmesh_type), | intent(inout) | :: | tree | Tree representation of the mesh. |
||
type(tem_stencilHeader_type), | intent(inout) | :: | stencil(1) | The stencil to create the level descriptor for. |
||
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_levelDesc_type), | intent(out), | allocatable | :: | levelDesc(:) | The created level descriptor. |
|
type(tem_comm_env_type), | intent(in) | :: | proc | Process description to use. |
subroutine tem_create_levelDesc( tree, stencil, boundary, commPattern, &
& levelDesc, proc )
! --------------------------------------------------------------------------
!> Tree representation of the mesh.
type(treelmesh_type), intent(inout) :: tree
!> The stencil to create the level descriptor for.
type(tem_stencilHeader_type), intent(inout) :: stencil(1)
!> 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
!> The created level descriptor.
type(tem_levelDesc_type), allocatable, intent(out) :: levelDesc(:)
!> Process description to use.
type(tem_comm_env_type), intent(in) :: proc
! --------------------------------------------------------------------------
integer, allocatable :: levelPointer(:)
! --------------------------------------------------------------------------
call tem_init_elemLevels( me = levelDesc, &
& boundary = boundary, &
& tree = tree, &
& stencils = stencil )
call tem_find_allElements( tree = tree, &
& levelDesc = levelDesc, &
& levelPointer = levelPointer, &
& computeStencil = stencil, &
& commpattern = commPattern, &
& proc = proc )
! JQ: allocated in tem_init_elemLevels
! do iLevel=tree%global%minlevel,tree%global%maxlevel
! allocate(levelDesc(iLevel)%neigh(1))
! end do
call tem_build_HorizontalDependencies( iStencil = 1, &
& levelDesc = levelDesc, &
& tree = tree, &
& computeStencil = stencil(1) )
call tem_build_VerticalDependencies( levelDesc = levelDesc, &
& minLevel = tree%global%minLevel, &
& maxLevel = tree%global%maxLevel )
call tem_cleanupDependencyArrays( levelDesc = levelDesc )
end subroutine tem_create_levelDesc