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