Cell-centred 3D north fold (copy).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxt,nyt,nz) |
Cell-centred field (nx_total, ny_total, nz). |
||
| integer, | intent(in) | :: | nxt | |||
| 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_centre_3d(fld, nxt, nyt, nz, nx_phys, ny_phys, ng, device_resident) !! Cell-centred 3D north fold (copy). integer, intent(in) :: nxt, nyt, nz, nx_phys, ny_phys, ng real(wp), intent(inout) :: fld(nxt, nyt, nz) !! Cell-centred field (nx_total, 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_T, fx_ng)*nz) call ocean_fold_pack(fld, nxt, nyt, nz, FOLD_STAG_T, device_resident) call ocean_fold_exchange(device_resident) call ocean_fold_unpack(fld, nxt, nyt, nz, FOLD_STAG_T, .false., device_resident) call ocean_fold_end() else call fold_north_centre(fld, nxt, nyt, nz, nx_phys, ny_phys, ng) end if end subroutine fold_centre_3d