y-face (v) 2D north fold (negate + fold-line projection).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxt,nyf) |
y-face field (nx_total, ny_total+1). |
||
| integer, | intent(in) | :: | nxt | |||
| integer, | intent(in) | :: | nyf | |||
| 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_v_2d(fld, nxt, nyf, nx_phys, ny_phys, ng, device_resident) !! y-face (v) 2D north fold (negate + fold-line projection). integer, intent(in) :: nxt, nyf, nx_phys, ny_phys, ng real(wp), intent(inout) :: fld(nxt, nyf) !! y-face field (nx_total, ny_total+1). 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_V, fx_ng)) call ocean_fold_pack(fld, nxt, nyf, FOLD_STAG_V, device_resident) call ocean_fold_exchange(device_resident) call ocean_fold_unpack(fld, nxt, nyf, FOLD_STAG_V, .true., device_resident) call ocean_fold_end() else call fold_north_v_face(fld, nxt, nyf, nx_phys, ny_phys, ng) end if end subroutine fold_v_2d