Complete a halo update on a pair of arrays representing the two components of a vector.
Definition at line 74 of file MOM_domains.F90.
|
subroutine | pass_vector_complete_3d (id_update, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo, clock) |
| pass_vector_complete_3d completes a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector. More...
|
|
subroutine | pass_vector_complete_2d (id_update, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo, clock) |
| pass_vector_complete_2d completes a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector. More...
|
|
◆ pass_vector_complete_2d()
subroutine mom_domains::pass_vector_complete::pass_vector_complete_2d |
( |
integer, intent(in) |
id_update, |
|
|
real, dimension(:,:), intent(inout) |
u_cmpt, |
|
|
real, dimension(:,:), intent(inout) |
v_cmpt, |
|
|
type(mom_domain_type), intent(inout) |
MOM_dom, |
|
|
integer, intent(in), optional |
direction, |
|
|
integer, intent(in), optional |
stagger, |
|
|
integer, intent(in), optional |
halo, |
|
|
integer, intent(in), optional |
clock |
|
) |
| |
|
private |
pass_vector_complete_2d completes a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector.
- Parameters
-
[in] | id_update | The integer id of this update which has been returned from a previous call to pass_var_start. |
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair 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] | direction | 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, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. 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 omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[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. |
Definition at line 781 of file MOM_domains.F90.
781 integer,
intent(in) :: id_update
784 real,
dimension(:,:),
intent(inout) :: u_cmpt
787 real,
dimension(:,:),
intent(inout) :: v_cmpt
790 type(MOM_domain_type),
intent(inout) :: MOM_dom
793 integer,
optional,
intent(in) :: direction
799 integer,
optional,
intent(in) :: stagger
802 integer,
optional,
intent(in) :: halo
804 integer,
optional,
intent(in) :: clock
807 integer :: stagger_local
810 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_begin(clock) ;
endif
812 stagger_local = cgrid_ne
813 if (
present(stagger)) stagger_local = stagger
816 if (
present(direction))
then ;
if (direction > 0) dirflag = direction ;
endif
818 if (
present(halo) .and. mom_dom%thin_halo_updates)
then
819 call mpp_complete_update_domains(id_update, u_cmpt, v_cmpt, &
820 mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local, &
821 whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
823 call mpp_complete_update_domains(id_update, u_cmpt, v_cmpt, &
824 mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local)
827 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_end(clock) ;
endif
◆ pass_vector_complete_3d()
subroutine mom_domains::pass_vector_complete::pass_vector_complete_3d |
( |
integer, intent(in) |
id_update, |
|
|
real, dimension(:,:,:), intent(inout) |
u_cmpt, |
|
|
real, dimension(:,:,:), intent(inout) |
v_cmpt, |
|
|
type(mom_domain_type), intent(inout) |
MOM_dom, |
|
|
integer, intent(in), optional |
direction, |
|
|
integer, intent(in), optional |
stagger, |
|
|
integer, intent(in), optional |
halo, |
|
|
integer, intent(in), optional |
clock |
|
) |
| |
|
private |
pass_vector_complete_3d completes a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector.
- Parameters
-
[in] | id_update | The integer id of this update which has been returned from a previous call to pass_var_start. |
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair 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] | direction | 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, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. 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 omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[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. |
Definition at line 835 of file MOM_domains.F90.
835 integer,
intent(in) :: id_update
838 real,
dimension(:,:,:),
intent(inout) :: u_cmpt
841 real,
dimension(:,:,:),
intent(inout) :: v_cmpt
844 type(MOM_domain_type),
intent(inout) :: MOM_dom
847 integer,
optional,
intent(in) :: direction
853 integer,
optional,
intent(in) :: stagger
856 integer,
optional,
intent(in) :: halo
858 integer,
optional,
intent(in) :: clock
861 integer :: stagger_local
864 if (
present(clock))
then ;
if (clock>0)
call cpu_clock_begin(clock) ;
endif
866 stagger_local = cgrid_ne
867 if (
present(stagger)) stagger_local = stagger
870 if (
present(direction))
then ;
if (direction > 0) dirflag = direction ;
endif
872 if (
present(halo) .and. mom_dom%thin_halo_updates)
then
873 call mpp_complete_update_domains(id_update, u_cmpt, v_cmpt, &
874 mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local, &
875 whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
877 call mpp_complete_update_domains(id_update, u_cmpt, v_cmpt, &
878 mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local)
881 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