evp_copy_u_impl Subroutine

private pure subroutine evp_copy_u_impl(ui, u_tmp, nx, ny)

u_tmp = ui (full array — the v-momentum MUST read pre-update u, D4). Explicit do concurrent element copy rather than a bare whole-array assignment (repo convention for device-resident arrays — see rdb_ml_dynamics’s h_layer0 save pattern).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: ui(nx+1,ny)
real(kind=wp), intent(out) :: u_tmp(nx+1,ny)
integer, intent(in) :: nx
integer, intent(in) :: ny

Called by

proc~~evp_copy_u_impl~~CalledByGraph proc~evp_copy_u_impl evp_copy_u_impl proc~ice_evp_dynamics_impl ice_evp_dynamics_impl proc~ice_evp_dynamics_impl->proc~evp_copy_u_impl proc~ice_evp_dynamics ice_evp_dynamics proc~ice_evp_dynamics->proc~ice_evp_dynamics_impl proc~ice_evp_step ice_evp_step proc~ice_evp_step->proc~ice_evp_dynamics proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ice_evp_step 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

Variables

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

Source Code

   pure subroutine evp_copy_u_impl(ui, u_tmp, nx, ny)
      !! `u_tmp = ui` (full array — the v-momentum MUST read pre-update
      !! u, D4). Explicit `do concurrent` element copy rather than a bare
      !! whole-array assignment (repo convention for device-resident
      !! arrays — see `rdb_ml_dynamics`'s `h_layer0` save pattern).
      integer, intent(in) :: nx, ny
      real(wp), intent(in) :: ui(nx + 1, ny)
      real(wp), intent(out) :: u_tmp(nx + 1, ny)
      integer :: i, j

      do concurrent(j=1:ny, i=1:nx + 1)
         u_tmp(i, j) = ui(i, j)
      end do
   end subroutine evp_copy_u_impl