Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel |
The minimum refinement level of your mesh. |
||
integer, | intent(in) | :: | maxLevel |
The maximum refinement level of your mesh. |
||
type(tem_face_type), | intent(inout) | :: | faces(minLevel:maxLevel) |
The communication pattern you want use for the buffer. The created face descriptor. |
||
type(tem_levelDesc_type), | intent(in) | :: | levelDesc(1:3,minLevel:maxLevel) |
Dimension-by-dimension level descriptors |
subroutine tem_build_faceBuffers( minLevel, maxLevel, faces, levelDesc )
! --------------------------------------------------------------------------
!> The minimum refinement level of your mesh.
integer, intent(in) :: minLevel
!> The maximum refinement level of your mesh.
integer, intent(in) :: maxLevel
!> The communication pattern you want use for the buffer.
! type(tem_commpattern_type), intent(in) :: commPattern
!> The created face descriptor.
type(tem_face_type),intent(inout) :: faces(minLevel:maxLevel)
!> Dimension-by-dimension level descriptors
type(tem_levelDesc_type), intent(in) :: levelDesc(1:3,minLevel:maxLevel)
! --------------------------------------------------------------------------
integer :: iLevel, iDir
! --------------------------------------------------------------------------
! Create the face buffers for which I will receive information before
! my rank can do the timestep. Attention: this is consistent with the
! definition of a compute face.
do iLevel = minLevel, maxLevel
do iDir = 1, 3
! buffer for the state
call tem_build_faceRecvBuffers( &
& faces = faces(iLevel)%faces(iDir), &
& levelDesc = levelDesc(iDir, iLevel), &
& buf = faces(iLevel)%faces(iDir)%recvBuffer_state )
! buffer for the flux
call tem_build_faceRecvBuffers( &
& faces = faces(iLevel)%faces(iDir), &
& levelDesc = levelDesc(iDir, iLevel), &
& buf = faces(iLevel)%faces(iDir)%recvBuffer_flux )
end do
end do
! Create the face buffers for which I will send information before
! the other ranks can the timestep.
do iLevel = minLevel, maxLevel
do iDir = 1, 3
! buffer for the state
call tem_build_faceSendBuffers( &
& faces = faces(iLevel)%faces(iDir), &
& levelDesc = levelDesc(iDir, iLevel), &
& buf = faces(iLevel)%faces(iDir)%sendBuffer_state )
! buffer for the flux
call tem_build_faceSendBuffers( &
& faces = faces(iLevel)%faces(iDir), &
& levelDesc = levelDesc(iDir, iLevel), &
& buf = faces(iLevel)%faces(iDir)%sendBuffer_flux )
end do
end do
end subroutine tem_build_faceBuffers