MOM6
mom_domains::pass_var_complete Interface Reference

Detailed Description

Complete a non-blocking halo update on an array.

Definition at line 64 of file MOM_domains.F90.

Private functions

subroutine pass_var_complete_3d (id_update, array, MOM_dom, sideflag, position, halo, clock)
 pass_var_complete_3d completes a halo update for a three-dimensional array. More...
 
subroutine pass_var_complete_2d (id_update, array, MOM_dom, sideflag, position, halo, clock)
 pass_var_complete_2d completes a halo update for a two-dimensional array. More...
 

Functions and subroutines

◆ pass_var_complete_2d()

subroutine mom_domains::pass_var_complete::pass_var_complete_2d ( integer, intent(in)  id_update,
real, dimension(:,:), intent(inout)  array,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  sideflag,
integer, intent(in), optional  position,
integer, intent(in), optional  halo,
integer, intent(in), optional  clock 
)
private

pass_var_complete_2d completes a halo update for a two-dimensional array.

Parameters
[in]id_updateThe integer id of this update which has been returned from a previous call to pass_var_start.
[in,out]arrayThe array which is having its halos points exchanged.
[in,out]mom_domThe MOM_domain_type containing the mpp_domain needed to determine where data should be sent.
[in]sideflagAn optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
[in]positionAn optional argument indicating the position. This is usally CORNER, but is CENTER by default.
[in]haloThe size of the halo to update - the full halo by default.
[in]clockThe handle for a cpu time clock that should be started then stopped to time this routine.

Definition at line 377 of file MOM_domains.F90.

377  integer, intent(in) :: id_update !< The integer id of this update which has
378  !! been returned from a previous call to
379  !! pass_var_start.
380  real, dimension(:,:), intent(inout) :: array !< The array which is having its halos points
381  !! exchanged.
382  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
383  !! needed to determine where data should be
384  !! sent.
385  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
386  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
387  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
388  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
389  integer, optional, intent(in) :: position !< An optional argument indicating the position.
390  !! This is usally CORNER, but is CENTER
391  !! by default.
392  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
393  !! halo by default.
394  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
395  !! started then stopped to time this routine.
396 
397  integer :: dirflag
398 
399  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
400 
401  dirflag = to_all ! 60
402  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
403 
404  if (present(halo) .and. mom_dom%thin_halo_updates) then
405  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
406  flags=dirflag, position=position, &
407  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
408  else
409  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
410  flags=dirflag, position=position)
411  endif
412 
413  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
414 

◆ pass_var_complete_3d()

subroutine mom_domains::pass_var_complete::pass_var_complete_3d ( integer, intent(in)  id_update,
real, dimension(:,:,:), intent(inout)  array,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  sideflag,
integer, intent(in), optional  position,
integer, intent(in), optional  halo,
integer, intent(in), optional  clock 
)
private

pass_var_complete_3d completes a halo update for a three-dimensional array.

Parameters
[in]id_updateThe integer id of this update which has been returned from a previous call to pass_var_start.
[in,out]arrayThe array which is having its halos points exchanged.
[in,out]mom_domThe MOM_domain_type containing the mpp_domain needed to determine where data should be sent.
[in]sideflagAn optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
[in]positionAn optional argument indicating the position. This is usally CORNER, but is CENTER by default.
[in]haloThe size of the halo to update - the full halo by default.
[in]clockThe handle for a cpu time clock that should be started then stopped to time this routine.

Definition at line 420 of file MOM_domains.F90.

420  integer, intent(in) :: id_update !< The integer id of this update which has
421  !! been returned from a previous call to
422  !! pass_var_start.
423  real, dimension(:,:,:), intent(inout) :: array !< The array which is having its halos points
424  !! exchanged.
425  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
426  !! needed to determine where data should be
427  !! sent.
428  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
429  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
430  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
431  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
432  integer, optional, intent(in) :: position !< An optional argument indicating the position.
433  !! This is usally CORNER, but is CENTER
434  !! by default.
435  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
436  !! halo by default.
437  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
438  !! started then stopped to time this routine.
439 
440  integer :: dirflag
441 
442  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
443 
444  dirflag = to_all ! 60
445  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
446 
447  if (present(halo) .and. mom_dom%thin_halo_updates) then
448  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
449  flags=dirflag, position=position, &
450  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
451  else
452  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
453  flags=dirflag, position=position)
454  endif
455 
456  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
457 

The documentation for this interface was generated from the following file: