ocean_halo_face_x_2d_wide Subroutine

public subroutine ocean_halo_face_x_2d_wide(fld, ng_wide, device_resident)

Width-parameterized face-x-2D halo exchange.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(oh_nx_local+2*ng_wide+1,oh_ny_local+2*ng_wide)

x-face 2D field (nx_local + 2ng_wide + 1, ny_local + 2ng_wide)

integer, intent(in) :: ng_wide

Wide ghost cell width (>= oh_nghost)

logical, intent(in), optional :: device_resident

If .false., operate on host memory. Default = .true.


Calls

proc~~ocean_halo_face_x_2d_wide~~CallsGraph proc~ocean_halo_face_x_2d_wide ocean_halo_face_x_2d_wide proc~ocean_halo_buffers_ensure_wide ocean_halo_buffers_ensure_wide proc~ocean_halo_face_x_2d_wide->proc~ocean_halo_buffers_ensure_wide proc~ocean_halo_face_x_2d_impl ocean_halo_face_x_2d_impl 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~wide_halo_guards wide_halo_guards proc~ocean_halo_face_x_2d_wide->proc~wide_halo_guards 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_face_x_2d_impl->comm_irecv_real_sp_array_n comm_isend_real_sp_array_n comm_isend_real_sp_array_n proc~ocean_halo_face_x_2d_impl->comm_isend_real_sp_array_n proc~comm_env_compute_comm comm_env_compute_comm proc~ocean_halo_face_x_2d_impl->proc~comm_env_compute_comm proc~ew_rank_east ew_rank_east proc~ocean_halo_face_x_2d_impl->proc~ew_rank_east proc~ew_rank_west ew_rank_west proc~ocean_halo_face_x_2d_impl->proc~ew_rank_west proc~needs_flags needs_flags proc~ocean_halo_face_x_2d_impl->proc~needs_flags proc~ns_rank_north ns_rank_north proc~ocean_halo_face_x_2d_impl->proc~ns_rank_north proc~ns_rank_south ns_rank_south 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~oh_count_msgs oh_count_msgs proc~ocean_halo_face_x_2d_impl->proc~oh_count_msgs waitall waitall proc~ocean_halo_face_x_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~~ocean_halo_face_x_2d_wide~~CalledByGraph proc~ocean_halo_face_x_2d_wide ocean_halo_face_x_2d_wide proc~bt_wide_entry_exchange_impl bt_wide_entry_exchange_impl proc~bt_wide_entry_exchange_impl->proc~ocean_halo_face_x_2d_wide proc~bt_wide_entry_exchange bt_wide_t%bt_wide_entry_exchange proc~bt_wide_entry_exchange->proc~bt_wide_entry_exchange_impl 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

Source Code

   subroutine ocean_halo_face_x_2d_wide(fld, ng_wide, device_resident)
      !! Width-parameterized face-x-2D halo exchange.
      integer, intent(in) :: ng_wide
         !! Wide ghost cell width (>= oh_nghost)
      real(wp), intent(inout) :: fld(oh_nx_local + 2*ng_wide + 1, oh_ny_local + 2*ng_wide)
         !! x-face 2D field (nx_local + 2*ng_wide + 1, ny_local + 2*ng_wide)
      logical, intent(in), optional :: device_resident
         !! If .false., operate on host memory.  Default = .true.

      call oh_count_face_x_2d()
      call wide_halo_guards(ng_wide, "ocean_halo_face_x_2d_wide")
      call ocean_halo_buffers_ensure_wide(ng_wide)
      call ocean_halo_face_x_2d_impl(fld, ng_wide, device_resident)
   end subroutine ocean_halo_face_x_2d_wide