poison_face_y_3d Subroutine

private subroutine poison_face_y_3d(fld, nxl, nyl, ng, nz, qnan, pw, pe, ps, pn)

Poison y-face 3D ghost bands. Seam-face exclusion: see poison_face_y_2d.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng,nyl+2*ng+1,nz)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
integer, intent(in) :: nz
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn

Called by

proc~~poison_face_y_3d~~CalledByGraph proc~poison_face_y_3d poison_face_y_3d proc~ocean_poison_ghost_bands ocean_poison_ghost_bands proc~ocean_poison_ghost_bands->proc~poison_face_y_3d proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~ocean_poison_ghost_bands proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step_split proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: j
integer, private :: k
integer, private :: nxt
integer, private :: nyf

Source Code

   subroutine poison_face_y_3d(fld, nxl, nyl, ng, nz, qnan, pw, pe, ps, pn)
      !! Poison y-face 3D ghost bands.  Seam-face exclusion: see poison_face_y_2d.
      integer, intent(in) :: nxl, nyl, ng, nz
      real(wp), intent(inout) :: fld(nxl + 2*ng, nyl + 2*ng + 1, nz)
      real(wp), intent(in) :: qnan
      logical, intent(in) :: pw, pe, ps, pn

      integer :: nxt, nyf, i, j, k

      nxt = nxl + 2*ng
      nyf = nyl + 2*ng + 1

      if (pw) then
         do concurrent(k=1:nz, j=1:nyf, i=1:ng)
            fld(i, j, k) = qnan
         end do
      end if
      if (pe) then
         do concurrent(k=1:nz, j=1:nyf, i=ng + nxl + 1:nxt)
            fld(i, j, k) = qnan
         end do
      end if
      if (ps) then
         do concurrent(k=1:nz, j=1:ng, i=1:nxt)
            fld(i, j, k) = qnan
         end do
      end if
      if (pn) then
         do concurrent(k=1:nz, j=ng + nyl + 2:nyf, i=1:nxt)
            fld(i, j, k) = qnan
         end do
      end if
   end subroutine poison_face_y_3d