Fold a 2D cell-centred η field (driver-level SSH wrap site). No-op when not folding.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(hgrid_t), | intent(in) | :: | grid | |||
| type(ocean_bc_state_t), | intent(in) | :: | bc | |||
| real(kind=wp), | intent(inout) | :: | eta(:,:) | |||
| logical, | intent(in), | optional | :: | device_resident |
px > 1 only: |
subroutine ocean_fold_wrap_eta_2d(grid, bc, eta, device_resident) !! Fold a 2D cell-centred η field (driver-level SSH wrap site). !! No-op when not folding. type(hgrid_t), intent(in) :: grid type(ocean_bc_state_t), intent(in) :: bc real(wp), intent(inout) :: eta(:, :) logical, intent(in), optional :: device_resident !! px > 1 only: `.false.` for host-side calls. if (.not. bc%north_fold) return if (ocean_fold_is_distributed()) then call ocean_fold_begin(grid%nghost) call ocean_fold_pack(eta, grid%nx_total, grid%ny_total, FOLD_STAG_T, device_resident) call ocean_fold_exchange(device_resident) call ocean_fold_unpack(eta, grid%nx_total, grid%ny_total, FOLD_STAG_T, .false., & device_resident) call ocean_fold_end() return end if call fold_north_centre(eta, grid%nx_total, grid%ny_total, & grid%nx_phys, grid%ny_phys, grid%nghost) end subroutine ocean_fold_wrap_eta_2d