MOM6
mom_domains::pass_var_complete Interface Reference

Detailed Description

Complete a non-blocking halo update on an array.

Definition at line 69 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...
 

Detailed Description

Complete a non-blocking halo update on an array.

Definition at line 69 of file MOM_domains.F90.

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 CENTER by default and is often CORNER, but could also be EAST_FACE or NORTH_FACE.
[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 400 of file MOM_domains.F90.

400  integer, intent(in) :: id_update !< The integer id of this update which has
401  !! been returned from a previous call to
402  !! pass_var_start.
403  real, dimension(:,:), intent(inout) :: array !< The array which is having its halos points
404  !! exchanged.
405  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
406  !! needed to determine where data should be
407  !! sent.
408  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
409  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
410  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
411  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
412  integer, optional, intent(in) :: position !< An optional argument indicating the position.
413  !! This is CENTER by default and is often CORNER,
414  !! but could also be EAST_FACE or NORTH_FACE.
415  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
416  !! halo by default.
417  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
418  !! started then stopped to time this routine.
419 
420  integer :: dirflag
421 
422  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
423 
424  dirflag = to_all ! 60
425  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
426 
427  if (present(halo) .and. mom_dom%thin_halo_updates) then
428  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
429  flags=dirflag, position=position, &
430  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
431  else
432  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
433  flags=dirflag, position=position)
434  endif
435 
436  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
437 

◆ 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 CENTER by default and is often CORNER, but could also be EAST_FACE or NORTH_FACE.
[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 443 of file MOM_domains.F90.

443  integer, intent(in) :: id_update !< The integer id of this update which has
444  !! been returned from a previous call to
445  !! pass_var_start.
446  real, dimension(:,:,:), intent(inout) :: array !< The array which is having its halos points
447  !! exchanged.
448  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
449  !! needed to determine where data should be
450  !! sent.
451  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
452  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
453  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
454  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
455  integer, optional, intent(in) :: position !< An optional argument indicating the position.
456  !! This is CENTER by default and is often CORNER,
457  !! but could also be EAST_FACE or NORTH_FACE.
458  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
459  !! halo by default.
460  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
461  !! started then stopped to time this routine.
462 
463  integer :: dirflag
464 
465  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
466 
467  dirflag = to_all ! 60
468  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
469 
470  if (present(halo) .and. mom_dom%thin_halo_updates) then
471  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
472  flags=dirflag, position=position, &
473  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
474  else
475  call mpp_complete_update_domains(id_update, array, mom_dom%mpp_domain, &
476  flags=dirflag, position=position)
477  endif
478 
479  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
480 

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