bt_wide_entry_exchange Subroutine

private subroutine bt_wide_entry_exchange(this)

One wide grouped exchange (eta+ubt+vbt) + wide singles for the other 7 input arrays (H_ref, ubt_prev, rem_u, force_u, vbt_prev, rem_v, force_v). Fills the entire wide ghost band before the fast loop. Counter effect: +1 bt_group, +1 centre_2d, +3 face_x_2d, +3 face_y_2d. Dispatches to the non-polymorphic _impl body.

Type Bound

bt_wide_t

Arguments

Type IntentOptional Attributes Name
class(bt_wide_t), intent(inout) :: this

Calls

proc~~bt_wide_entry_exchange~~CallsGraph proc~bt_wide_entry_exchange bt_wide_t%bt_wide_entry_exchange proc~bt_wide_entry_exchange_impl bt_wide_entry_exchange_impl proc~bt_wide_entry_exchange->proc~bt_wide_entry_exchange_impl proc~ocean_halo_bt_group_2d_wide ocean_halo_bt_group_2d_wide proc~bt_wide_entry_exchange_impl->proc~ocean_halo_bt_group_2d_wide proc~ocean_halo_centre_2d_wide ocean_halo_centre_2d_wide proc~bt_wide_entry_exchange_impl->proc~ocean_halo_centre_2d_wide proc~ocean_halo_face_x_2d_wide ocean_halo_face_x_2d_wide proc~bt_wide_entry_exchange_impl->proc~ocean_halo_face_x_2d_wide proc~ocean_halo_face_y_2d_wide ocean_halo_face_y_2d_wide proc~bt_wide_entry_exchange_impl->proc~ocean_halo_face_y_2d_wide proc~profiler_start profiler_start proc~bt_wide_entry_exchange_impl->proc~profiler_start proc~profiler_stop profiler_stop proc~bt_wide_entry_exchange_impl->proc~profiler_stop proc~ocean_halo_buffers_ensure_wide ocean_halo_buffers_ensure_wide proc~ocean_halo_bt_group_2d_wide->proc~ocean_halo_buffers_ensure_wide proc~ocean_halo_centre_2d_impl ocean_halo_centre_2d_impl proc~ocean_halo_bt_group_2d_wide->proc~ocean_halo_centre_2d_impl proc~ocean_halo_face_x_2d_impl ocean_halo_face_x_2d_impl proc~ocean_halo_bt_group_2d_wide->proc~ocean_halo_face_x_2d_impl proc~ocean_halo_face_y_2d_impl ocean_halo_face_y_2d_impl proc~ocean_halo_bt_group_2d_wide->proc~ocean_halo_face_y_2d_impl proc~oh_count_bt_group oh_count_bt_group proc~ocean_halo_bt_group_2d_wide->proc~oh_count_bt_group proc~oh_count_suppress_off oh_count_suppress_off proc~ocean_halo_bt_group_2d_wide->proc~oh_count_suppress_off proc~oh_count_suppress_on oh_count_suppress_on proc~ocean_halo_bt_group_2d_wide->proc~oh_count_suppress_on proc~wide_halo_guards wide_halo_guards proc~ocean_halo_bt_group_2d_wide->proc~wide_halo_guards proc~ocean_halo_centre_2d_wide->proc~ocean_halo_buffers_ensure_wide proc~ocean_halo_centre_2d_wide->proc~ocean_halo_centre_2d_impl proc~oh_count_centre_2d oh_count_centre_2d proc~ocean_halo_centre_2d_wide->proc~oh_count_centre_2d proc~ocean_halo_centre_2d_wide->proc~wide_halo_guards proc~ocean_halo_face_x_2d_wide->proc~ocean_halo_buffers_ensure_wide proc~ocean_halo_face_x_2d_wide->proc~ocean_halo_face_x_2d_impl proc~oh_count_face_x_2d oh_count_face_x_2d proc~ocean_halo_face_x_2d_wide->proc~oh_count_face_x_2d proc~ocean_halo_face_x_2d_wide->proc~wide_halo_guards proc~ocean_halo_face_y_2d_wide->proc~ocean_halo_buffers_ensure_wide proc~ocean_halo_face_y_2d_wide->proc~ocean_halo_face_y_2d_impl proc~oh_count_face_y_2d oh_count_face_y_2d proc~ocean_halo_face_y_2d_wide->proc~oh_count_face_y_2d proc~ocean_halo_face_y_2d_wide->proc~wide_halo_guards proc~find_or_create_region find_or_create_region proc~profiler_start->proc~find_or_create_region proc~get_wall_time get_wall_time proc~profiler_start->proc~get_wall_time proc~nvtx_range_push nvtx_range_push proc~profiler_start->proc~nvtx_range_push proc~profiler_stop->proc~get_wall_time proc~nvtx_range_pop nvtx_range_pop proc~profiler_stop->proc~nvtx_range_pop to_string to_string proc~ocean_halo_buffers_ensure_wide->to_string warning warning proc~ocean_halo_buffers_ensure_wide->warning comm_irecv_real_sp_array_n comm_irecv_real_sp_array_n proc~ocean_halo_centre_2d_impl->comm_irecv_real_sp_array_n comm_isend_real_sp_array_n comm_isend_real_sp_array_n proc~ocean_halo_centre_2d_impl->comm_isend_real_sp_array_n proc~comm_env_compute_comm comm_env_compute_comm proc~ocean_halo_centre_2d_impl->proc~comm_env_compute_comm proc~ew_rank_east ew_rank_east proc~ocean_halo_centre_2d_impl->proc~ew_rank_east proc~ew_rank_west ew_rank_west proc~ocean_halo_centre_2d_impl->proc~ew_rank_west proc~needs_flags needs_flags proc~ocean_halo_centre_2d_impl->proc~needs_flags proc~ns_rank_north ns_rank_north proc~ocean_halo_centre_2d_impl->proc~ns_rank_north proc~ns_rank_south ns_rank_south proc~ocean_halo_centre_2d_impl->proc~ns_rank_south proc~ocean_periodic_wrap_centre_2d ocean_periodic_wrap_centre_2d proc~ocean_halo_centre_2d_impl->proc~ocean_periodic_wrap_centre_2d proc~oh_count_msgs oh_count_msgs proc~ocean_halo_centre_2d_impl->proc~oh_count_msgs waitall waitall proc~ocean_halo_centre_2d_impl->waitall proc~ocean_halo_face_x_2d_impl->comm_irecv_real_sp_array_n proc~ocean_halo_face_x_2d_impl->comm_isend_real_sp_array_n proc~ocean_halo_face_x_2d_impl->proc~comm_env_compute_comm proc~ocean_halo_face_x_2d_impl->proc~ew_rank_east proc~ocean_halo_face_x_2d_impl->proc~ew_rank_west proc~ocean_halo_face_x_2d_impl->proc~needs_flags proc~ocean_halo_face_x_2d_impl->proc~ns_rank_north proc~ocean_halo_face_x_2d_impl->proc~ns_rank_south proc~ocean_periodic_wrap_face_x_2d ocean_periodic_wrap_face_x_2d proc~ocean_halo_face_x_2d_impl->proc~ocean_periodic_wrap_face_x_2d proc~ocean_halo_face_x_2d_impl->proc~oh_count_msgs proc~ocean_halo_face_x_2d_impl->waitall proc~ocean_halo_face_y_2d_impl->comm_irecv_real_sp_array_n proc~ocean_halo_face_y_2d_impl->comm_isend_real_sp_array_n proc~ocean_halo_face_y_2d_impl->proc~comm_env_compute_comm proc~ocean_halo_face_y_2d_impl->proc~ew_rank_east proc~ocean_halo_face_y_2d_impl->proc~ew_rank_west proc~ocean_halo_face_y_2d_impl->proc~needs_flags proc~ocean_halo_face_y_2d_impl->proc~ns_rank_north proc~ocean_halo_face_y_2d_impl->proc~ns_rank_south proc~ocean_periodic_wrap_face_y_2d ocean_periodic_wrap_face_y_2d proc~ocean_halo_face_y_2d_impl->proc~ocean_periodic_wrap_face_y_2d proc~ocean_halo_face_y_2d_impl->proc~oh_count_msgs proc~ocean_halo_face_y_2d_impl->waitall error error proc~wide_halo_guards->error proc~wide_halo_guards->to_string comm_world comm_world proc~comm_env_compute_comm->comm_world proc~decomp_rank_from_coords decomp_rank_from_coords proc~ew_rank_east->proc~decomp_rank_from_coords proc~ew_rank_west->proc~decomp_rank_from_coords proc~ns_rank_north->proc~decomp_rank_from_coords proc~ns_rank_south->proc~decomp_rank_from_coords

Called by

proc~~bt_wide_entry_exchange~~CalledByGraph proc~bt_wide_entry_exchange bt_wide_t%bt_wide_entry_exchange proc~run_stage_split run_stage_split proc~run_stage_split->proc~bt_wide_entry_exchange 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_entry_exchange(this)
      !! One wide grouped exchange (eta+ubt+vbt) + wide singles for the other
      !! 7 input arrays (H_ref, ubt_prev, rem_u, force_u, vbt_prev, rem_v,
      !! force_v).  Fills the entire wide ghost band before the fast loop.
      !! Counter effect: +1 bt_group, +1 centre_2d, +3 face_x_2d, +3 face_y_2d.
      !! Dispatches to the non-polymorphic `_impl` body.
      class(bt_wide_t), intent(inout) :: this
      select type (this)
      type is (bt_wide_t)
         call bt_wide_entry_exchange_impl(this)
      end select
   end subroutine bt_wide_entry_exchange