ice_tau_mirror_impl Subroutine

private 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).

Arguments

Type IntentOptional 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

Called by

proc~~ice_tau_mirror_impl~~CalledByGraph proc~ice_tau_mirror_impl ice_tau_mirror_impl proc~ice_ocean_stress_flux ice_ocean_stress_flux proc~ice_ocean_stress_flux->proc~ice_tau_mirror_impl proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ice_ocean_stress_flux proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step_ice proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step_ice proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: j

Source Code

   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