bt_wide_copy_in Subroutine

private subroutine bt_wide_copy_in(this, grid, bt_eta, bt_H_ref, bt_ubt, bt_vbt, bt_ubt_prev, bt_vbt_prev, bt_rem_u, bt_rem_v, force_u, force_v)

Offset-copy normal-width input arrays into the wide shadow arrays. Dispatches to the non-polymorphic _impl body to avoid the class-box GPU descriptor issue (same pattern as enter/exit_data).

Type Bound

bt_wide_t

Arguments

Type IntentOptional Attributes Name
class(bt_wide_t), intent(inout) :: this
type(hgrid_t), intent(in) :: grid
real(kind=wp), intent(in) :: bt_eta(grid%nx_total,grid%ny_total)
real(kind=wp), intent(in) :: bt_H_ref(grid%nx_total,grid%ny_total)
real(kind=wp), intent(in) :: bt_ubt(grid%nx_total+1,grid%ny_total)
real(kind=wp), intent(in) :: bt_vbt(grid%nx_total,grid%ny_total+1)
real(kind=wp), intent(in) :: bt_ubt_prev(grid%nx_total+1,grid%ny_total)
real(kind=wp), intent(in) :: bt_vbt_prev(grid%nx_total,grid%ny_total+1)
real(kind=wp), intent(in) :: bt_rem_u(grid%nx_total+1,grid%ny_total)
real(kind=wp), intent(in) :: bt_rem_v(grid%nx_total,grid%ny_total+1)
real(kind=wp), intent(in) :: force_u(grid%nx_total+1,grid%ny_total)
real(kind=wp), intent(in) :: force_v(grid%nx_total,grid%ny_total+1)

Calls

proc~~bt_wide_copy_in~~CallsGraph proc~bt_wide_copy_in bt_wide_t%bt_wide_copy_in proc~bt_wide_copy_in_impl bt_wide_copy_in_impl proc~bt_wide_copy_in->proc~bt_wide_copy_in_impl local local proc~bt_wide_copy_in_impl->local

Called by

proc~~bt_wide_copy_in~~CalledByGraph proc~bt_wide_copy_in bt_wide_t%bt_wide_copy_in proc~run_stage_split run_stage_split proc~run_stage_split->proc~bt_wide_copy_in proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step_split proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Source Code

   subroutine bt_wide_copy_in(this, grid, &
                              bt_eta, bt_H_ref, bt_ubt, bt_vbt, &
                              bt_ubt_prev, bt_vbt_prev, &
                              bt_rem_u, bt_rem_v, &
                              force_u, force_v)
      !! Offset-copy normal-width input arrays into the wide shadow arrays.
      !! Dispatches to the non-polymorphic `_impl` body to avoid the
      !! class-box GPU descriptor issue (same pattern as enter/exit_data).
      class(bt_wide_t), intent(inout) :: this
      type(hgrid_t), intent(in) :: grid
      real(wp), intent(in) :: bt_eta(grid%nx_total, grid%ny_total)
      real(wp), intent(in) :: bt_H_ref(grid%nx_total, grid%ny_total)
      real(wp), intent(in) :: bt_ubt(grid%nx_total + 1, grid%ny_total)
      real(wp), intent(in) :: bt_vbt(grid%nx_total, grid%ny_total + 1)
      real(wp), intent(in) :: bt_ubt_prev(grid%nx_total + 1, grid%ny_total)
      real(wp), intent(in) :: bt_vbt_prev(grid%nx_total, grid%ny_total + 1)
      real(wp), intent(in) :: bt_rem_u(grid%nx_total + 1, grid%ny_total)
      real(wp), intent(in) :: bt_rem_v(grid%nx_total, grid%ny_total + 1)
      real(wp), intent(in) :: force_u(grid%nx_total + 1, grid%ny_total)
      real(wp), intent(in) :: force_v(grid%nx_total, grid%ny_total + 1)
      select type (this)
      type is (bt_wide_t)
         call bt_wide_copy_in_impl(this, grid, &
                                   bt_eta, bt_H_ref, bt_ubt, bt_vbt, &
                                   bt_ubt_prev, bt_vbt_prev, &
                                   bt_rem_u, bt_rem_v, force_u, force_v)
      end select
   end subroutine bt_wide_copy_in