Initiate a non-blocking halo update on an array.
Definition at line 59 of file MOM_domains.F90.
|
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...
|
|
◆ 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] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An 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] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The 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
289 type(MOM_domain_type),
intent(inout) :: MOM_dom
292 integer,
optional,
intent(in) :: sideflag
296 integer,
optional,
intent(in) :: position
299 logical,
optional,
intent(in) :: complete
303 integer,
optional,
intent(in) :: halo
305 integer,
optional,
intent(in) :: clock
307 integer :: pass_var_start_2d
311 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_begin(clock) ;
endif
314 if (
present(sideflag))
then ;
if (sideflag > 0) dirflag = sideflag ;
endif
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)
321 pass_var_start_2d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
322 flags=dirflag, position=position)
325 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_end(clock) ;
endif
◆ 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] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An 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] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The 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
334 type(MOM_domain_type),
intent(inout) :: MOM_dom
337 integer,
optional,
intent(in) :: sideflag
341 integer,
optional,
intent(in) :: position
344 logical,
optional,
intent(in) :: complete
348 integer,
optional,
intent(in) :: halo
350 integer,
optional,
intent(in) :: clock
352 integer :: pass_var_start_3d
356 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_begin(clock) ;
endif
359 if (
present(sideflag))
then ;
if (sideflag > 0) dirflag = sideflag ;
endif
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)
366 pass_var_start_3d = mpp_start_update_domains(array, mom_dom%mpp_domain, &
367 flags=dirflag, position=position)
370 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_end(clock) ;
endif
The documentation for this interface was generated from the following file:
- /glade/work/altuntas/cesm.sandboxes/cesm2_2_alpha_X_mom/components/mom/MOM6/src/framework/MOM_domains.F90