x-face (u) 3D north fold (negate).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxf,nyt,nz) |
x-face field (nx_total+1, ny_total, nz). |
||
| integer, | intent(in) | :: | nxf | |||
| integer, | intent(in) | :: | nyt | |||
| integer, | intent(in) | :: | nz | |||
| integer, | intent(in) | :: | nx_phys | |||
| integer, | intent(in) | :: | ny_phys | |||
| integer, | intent(in) | :: | ng | |||
| logical, | intent(in), | optional | :: | device_resident |
Exchange path only: |
subroutine fold_u_3d(fld, nxf, nyt, nz, nx_phys, ny_phys, ng, device_resident) !! x-face (u) 3D north fold (negate). integer, intent(in) :: nxf, nyt, nz, nx_phys, ny_phys, ng real(wp), intent(inout) :: fld(nxf, nyt, nz) !! x-face field (nx_total+1, ny_total, nz). logical, intent(in), optional :: device_resident !! Exchange path only: `.false.` ⇒ host arrays. if (ocean_fold_is_distributed()) then call ocean_fold_begin(fold_stagger_nrows(FOLD_STAG_U, fx_ng)*nz) call ocean_fold_pack(fld, nxf, nyt, nz, FOLD_STAG_U, device_resident) call ocean_fold_exchange(device_resident) call ocean_fold_unpack(fld, nxf, nyt, nz, FOLD_STAG_U, .true., device_resident) call ocean_fold_end() else call fold_north_u_face(fld, nxf, nyt, nz, nx_phys, ny_phys, ng) end if end subroutine fold_u_3d