PR 63. Device copy of the blend’s OUTPUT into the restart-carried
mirror fields — deliberately NOT fused into
ice_ocean_stress_flux_impl (that kernel stays untouched so the
tau_coupling bitwise gate is unaffected by this PR).
Explicit-shape + decl-order (integer dims before the arrays that
use them).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(out) | :: | tau_ocn_x(nx+1,ny) | |||
| real(kind=wp), | intent(out) | :: | tau_ocn_y(nx,ny+1) | |||
| real(kind=wp), | intent(in) | :: | tau_x(nx+1,ny) | |||
| real(kind=wp), | intent(in) | :: | tau_y(nx,ny+1) | |||
| integer, | intent(in) | :: | nx | |||
| integer, | intent(in) | :: | ny |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | i | ||||
| integer, | private | :: | j |
pure subroutine ice_tau_mirror_impl(tau_ocn_x, tau_ocn_y, tau_x, tau_y, nx, ny) !! PR 63. Device copy of the blend's OUTPUT into the restart-carried !! mirror fields — deliberately NOT fused into !! `ice_ocean_stress_flux_impl` (that kernel stays untouched so the !! `tau_coupling` bitwise gate is unaffected by this PR). !! Explicit-shape + decl-order (integer dims before the arrays that !! use them). integer, intent(in) :: nx, ny real(wp), intent(out) :: tau_ocn_x(nx + 1, ny) real(wp), intent(out) :: tau_ocn_y(nx, ny + 1) real(wp), intent(in) :: tau_x(nx + 1, ny) real(wp), intent(in) :: tau_y(nx, ny + 1) integer :: i, j do concurrent(j=1:ny, i=1:nx + 1) tau_ocn_x(i, j) = tau_x(i, j) end do do concurrent(j=1:ny + 1, i=1:nx) tau_ocn_y(i, j) = tau_y(i, j) end do end subroutine ice_tau_mirror_impl