MOM6
mom_domains::pass_var_start Interface Reference

Detailed Description

Initiate a non-blocking halo update on an array.

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

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 usally CORNER, but is CENTER by default.
[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 287 of file MOM_domains.F90.

287  real, dimension(:,:), intent(inout) :: array !< The array which is having its halos points
288  !! exchanged.
289  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
290  !! needed to determine where data should be
291  !! sent.
292  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
293  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
294  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
295  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
296  integer, optional, intent(in) :: position !< An optional argument indicating the position.
297  !! This is usally CORNER, but is CENTER
298  !! by default.
299  logical, optional, intent(in) :: complete !< An optional argument indicating whether the
300  !! halo updates should be completed before
301  !! progress resumes. Omitting complete is the
302  !! same as setting complete to .true.
303  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
304  !! halo by default.
305  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
306  !! started then stopped to time this routine.
307  integer :: pass_var_start_2d !<The integer index for this update.
308 
309  integer :: dirflag
310 
311  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
312 
313  dirflag = to_all ! 60
314  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
315 
316  if (present(halo) .and. mom_dom%thin_halo_updates) then
317  pass_var_start_2d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
318  flags=dirflag, position=position, &
319  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
320  else
321  pass_var_start_2d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
322  flags=dirflag, position=position)
323  endif
324 
325  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
326 

◆ 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 usally CORNER, but is CENTER by default.
[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 332 of file MOM_domains.F90.

332  real, dimension(:,:,:), intent(inout) :: array !< The array which is having its halos points
333  !! exchanged.
334  type(MOM_domain_type), intent(inout) :: MOM_dom !< The MOM_domain_type containing the mpp_domain
335  !! needed to determine where data should be
336  !! sent.
337  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
338  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
339  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
340  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
341  integer, optional, intent(in) :: position !< An optional argument indicating the position.
342  !! This is usally CORNER, but is CENTER
343  !! by default.
344  logical, optional, intent(in) :: complete !< An optional argument indicating whether the
345  !! halo updates should be completed before
346  !! progress resumes. Omitting complete is the
347  !! same as setting complete to .true.
348  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
349  !! halo by default.
350  integer, optional, intent(in) :: clock !< The handle for a cpu time clock that should be
351  !! started then stopped to time this routine.
352  integer :: pass_var_start_3d !< The integer index for this update.
353 
354  integer :: dirflag
355 
356  if (present(clock)) then ; if (clock>0) call cpu_clock_begin(clock) ; endif
357 
358  dirflag = to_all ! 60
359  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
360 
361  if (present(halo) .and. mom_dom%thin_halo_updates) then
362  pass_var_start_3d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
363  flags=dirflag, position=position, &
364  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
365  else
366  pass_var_start_3d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
367  flags=dirflag, position=position)
368  endif
369 
370  if (present(clock)) then ; if (clock>0) call cpu_clock_end(clock) ; endif
371 

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