MOM6
mom_domains::pass_var_start Interface Reference

Detailed Description

Initiate a non-blocking halo update on an array.

Definition at line 64 of file MOM_domains.F90.

Private functions

integer function pass_var_start_3d (array, MOM_dom, sideflag, position, complete, halo, clock)
 pass_var_start_3d starts a halo update for a three-dimensional array. More...
 
integer function pass_var_start_2d (array, MOM_dom, sideflag, position, complete, halo, clock)
 pass_var_start_2d starts a halo update for a two-dimensional array. More...
 

Detailed Description

Initiate a non-blocking halo update on an array.

Definition at line 64 of file MOM_domains.F90.

Functions and subroutines

◆ pass_var_start_2d()

integer function mom_domains::pass_var_start::pass_var_start_2d ( real, dimension(:,:), intent(inout)  array,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  sideflag,
integer, intent(in), optional  position,
logical, intent(in), optional  complete,
integer, intent(in), optional  halo,
integer, intent(in), optional  clock 
)
private

pass_var_start_2d starts a halo update for a two-dimensional array.

Parameters
[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]completeAn optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true.
[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.
Returns
The integer index for this update.

Definition at line 310 of file MOM_domains.F90.

310  real, dimension(:,:), intent(inout) :: array !< The array which is having its halos points
311  !! exchanged.
312  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
313  !! needed to determine where data should be
314  !! sent.
315  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
316  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
317  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
318  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
319  integer, optional, intent(in) :: position !< An optional argument indicating the position.
320  !! This is CENTER by default and is often CORNER,
321  !! but could also be EAST_FACE or NORTH_FACE.
322  logical, optional, intent(in) :: complete !< An optional argument indicating whether the
323  !! halo updates should be completed before
324  !! progress resumes. Omitting complete is the
325  !! same as setting complete to .true.
326  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
327  !! halo by default.
328  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
329  !! started then stopped to time this routine.
330  integer :: pass_var_start_2d !<The integer index for this update.
331 
332  integer :: dirflag
333 
334  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
335 
336  dirflag = to_all ! 60
337  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
338 
339  if (present(halo) .and. mom_dom%thin_halo_updates) then
340  pass_var_start_2d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
341  flags=dirflag, position=position, &
342  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
343  else
344  pass_var_start_2d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
345  flags=dirflag, position=position)
346  endif
347 
348  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
349 

◆ pass_var_start_3d()

integer function mom_domains::pass_var_start::pass_var_start_3d ( real, dimension(:,:,:), intent(inout)  array,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  sideflag,
integer, intent(in), optional  position,
logical, intent(in), optional  complete,
integer, intent(in), optional  halo,
integer, intent(in), optional  clock 
)
private

pass_var_start_3d starts a halo update for a three-dimensional array.

Parameters
[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]completeAn optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true.
[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.
Returns
The integer index for this update.

Definition at line 355 of file MOM_domains.F90.

355  real, dimension(:,:,:), intent(inout) :: array !< The array which is having its halos points
356  !! exchanged.
357  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
358  !! needed to determine where data should be
359  !! sent.
360  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
361  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
362  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
363  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
364  integer, optional, intent(in) :: position !< An optional argument indicating the position.
365  !! This is CENTER by default and is often CORNER,
366  !! but could also be EAST_FACE or NORTH_FACE.
367  logical, optional, intent(in) :: complete !< An optional argument indicating whether the
368  !! halo updates should be completed before
369  !! progress resumes. Omitting complete is the
370  !! same as setting complete to .true.
371  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
372  !! halo by default.
373  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
374  !! started then stopped to time this routine.
375  integer :: pass_var_start_3d !< The integer index for this update.
376 
377  integer :: dirflag
378 
379  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
380 
381  dirflag = to_all ! 60
382  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
383 
384  if (present(halo) .and. mom_dom%thin_halo_updates) then
385  pass_var_start_3d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
386  flags=dirflag, position=position, &
387  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
388  else
389  pass_var_start_3d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
390  flags=dirflag, position=position)
391  endif
392 
393  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
394 

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