Wide-halo (march-in) entry point for the nonlinear barotropic fast
loop. Unpacks the wide shadow arrays (w_*, wide grid/metrics, wide
f_corner) and forwards them to barotropic_substep_nonlinear with
bt_halo = bt_wide%bt_halo, so the ~20-array plumbing lives here once
rather than at the call site. bc propagates by absence. Tides
(eta_forcing) are a configure-time exclusion on the wide path, so
none is forwarded. Interior twin: barotropic_substep_nonlinear_interior.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(bt_wide_t), | intent(inout) | :: | bt_wide | |||
| type(barotropic_workstate_t), | intent(inout) | :: | bt_work | |||
| integer, | intent(in) | :: | n_steps | |||
| real(kind=wp), | intent(in) | :: | dt_inner | |||
| type(ocean_bc_state_t), | intent(inout), | optional | :: | bc |
subroutine bt_wide_substep(bt_wide, bt_work, n_steps, dt_inner, bc) !! Wide-halo (march-in) entry point for the nonlinear barotropic fast !! loop. Unpacks the wide shadow arrays (`w_*`, wide grid/metrics, wide !! `f_corner`) and forwards them to `barotropic_substep_nonlinear` with !! `bt_halo = bt_wide%bt_halo`, so the ~20-array plumbing lives here once !! rather than at the call site. `bc` propagates by absence. Tides !! (`eta_forcing`) are a configure-time exclusion on the wide path, so !! none is forwarded. Interior twin: `barotropic_substep_nonlinear_interior`. type(bt_wide_t), intent(inout) :: bt_wide type(barotropic_workstate_t), intent(inout) :: bt_work integer, intent(in) :: n_steps real(wp), intent(in) :: dt_inner type(ocean_bc_state_t), intent(inout), optional :: bc call barotropic_substep_nonlinear(bt_wide%grid_w, & bt_work, & bt_wide%w_force_u, bt_wide%w_force_v, & n_steps, dt_inner, & bt_eta=bt_wide%w_eta, bt_H_ref=bt_wide%w_H_ref, & bt_eta_new=bt_wide%w_eta_new, & bt_ke_centre=bt_wide%w_ke, & eta_sum=bt_wide%w_eta_sum, & bt_eta_end=bt_wide%w_eta_end, & bt_ubt=bt_wide%w_ubt, & bt_ubt_prev=bt_wide%w_ubt_prev, & bt_rem_u=bt_wide%w_rem_u, & ubt_sum=bt_wide%w_ubt_sum, & uhbt_sum=bt_wide%w_uhbt_sum, & bt_uhbt=bt_wide%w_uhbt, & bt_ubt_end=bt_wide%w_ubt_end, & bt_vbt=bt_wide%w_vbt, & bt_vbt_prev=bt_wide%w_vbt_prev, & bt_rem_v=bt_wide%w_rem_v, & vbt_sum=bt_wide%w_vbt_sum, & vhbt_sum=bt_wide%w_vhbt_sum, & bt_vhbt=bt_wide%w_vhbt, & bt_vbt_end=bt_wide%w_vbt_end, & bt_zeta_corner=bt_wide%w_zeta, & f_corner=bt_wide%f_corner_w, & area_cu=bt_wide%metrics_w%areaCu, area_cv=bt_wide%metrics_w%areaCv, & dx_cu=bt_wide%metrics_w%dxCu, dx_cv=bt_wide%metrics_w%dx_cv, & dy_cu=bt_wide%metrics_w%dy_cu, dy_cv=bt_wide%metrics_w%dyCv, & iarea_bu=bt_wide%metrics_w%iareaBu, iarea_t=bt_wide%metrics_w%iareaT, & idx_cu=bt_wide%metrics_w%idxCu, idy_cv=bt_wide%metrics_w%idyCv, & bc=bc, bt_halo=bt_wide%bt_halo) end subroutine bt_wide_substep