Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel |
Minimum level of your mesh. |
||
integer, | intent(in) | :: | maxLevel |
Maximum level of your mesh. |
||
type(tem_face_type), | intent(inout) | :: | faces(minLevel:maxLevel) |
Face descriptor where the faces will be appended to. |
||
integer, | intent(in) | :: | nEligibleChildren |
The number of eligible children for the vertical face dependency |
subroutine tem_faceDep_vertical(minLevel, maxLevel, faces, nEligibleChildren )
! --------------------------------------------------------------------------
!> Minimum level of your mesh.
integer, intent(in) :: minLevel
!> Maximum level of your mesh.
integer, intent(in) :: maxLevel
!> Face descriptor where the faces will be appended to.
type(tem_face_type),intent(inout) :: faces(minLevel:maxLevel)
!> The number of eligible children for the vertical face dependency
integer, intent(in) :: nEligibleChildren
! --------------------------------------------------------------------------
integer :: iLevel, iDir
! --------------------------------------------------------------------------
! Initialize the container for the vertical face dependencies.
levelLoop: do iLevel = minLevel, maxLevel
do iDir = 1, 3
call tem_init_faceDep( faces(iLevel)%faces(iDir), nEligibleChildren )
end do
end do levelLoop
! build the dependencies downward (coarse face -> finer faces)
levelLoopDown: do iLevel = minLevel, maxLevel-1
do iDir = 1, 3
call tem_faceDep_verticalDown( faces(iLevel)%faces(iDir), &
& faces(iLevel+1)%faces(iDir), iDir, &
& nEligibleChildren )
end do
end do levelLoopDown
! build the dependencies upward (fine face -> coarse face)
levelLoopUp: do iLevel = maxLevel, minLevel+1, -1
do iDir = 1, 3
call tem_faceDep_verticalUp( faces(iLevel)%faces(iDir), &
& faces(iLevel-1)%faces(iDir) )
end do
end do levelLoopUp
end subroutine tem_faceDep_vertical