MOM6
mom_domains::pass_vector_start Interface Reference

Detailed Description

Definition at line 81 of file MOM_domains.F90.

Private functions

integer function pass_vector_start_3d (u_cmpt, v_cmpt, MOM_dom, direction, stagger, complete, halo)
 
integer function pass_vector_start_2d (u_cmpt, v_cmpt, MOM_dom, direction, stagger, complete, halo)
 

Functions and subroutines

◆ pass_vector_start_2d()

integer function mom_domains::pass_vector_start::pass_vector_start_2d ( 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,
logical, intent(in), optional  complete,
integer, intent(in), optional  halo 
)
private
Parameters
[in,out]u_cmptThe nominal zonal (u) component of the vector pair which is having its halos points exchanged.
[in,out]v_cmptThe nominal meridional (v) component of the vector pair 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]directionAn 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]staggerAn 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]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.
Returns
The integer index for this update.

Definition at line 680 of file MOM_domains.F90.

680  real, dimension(:,:), intent(inout) :: u_cmpt !< The nominal zonal (u) component of the vector
681  !! pair which is having its halos points
682  !! exchanged.
683  real, dimension(:,:), intent(inout) :: v_cmpt !< The nominal meridional (v) component of the
684  !! vector pair which is having its halos points
685  !! exchanged.
686  type(mom_domain_type), intent(inout) :: mom_dom !< The MOM_domain_type containing the mpp_domain
687  !! needed to determine where data should be
688  !! sent.
689  integer, optional, intent(in) :: direction !< An optional integer indicating which
690  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
691  !! TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional
692  !! scalars discretized at the typical vector component locations. For example, TO_EAST sends
693  !! the data to the processor to the east, so the halos on the western side are filled. TO_ALL
694  !! is the default if omitted.
695  integer, optional, intent(in) :: stagger !< An optional flag, which may be one of A_GRID,
696  !! BGRID_NE, or CGRID_NE, indicating where the two components of the vector are
697  !! discretized. Omitting stagger is the same as setting it to CGRID_NE.
698  logical, optional, intent(in) :: complete !< An optional argument indicating whether the
699  !! halo updates should be completed before progress resumes.
700  !! Omitting complete is the same as setting complete to .true.
701  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
702  !! halo by default.
703  integer :: pass_vector_start_2d !< The integer index for this
704  !! update.
705 ! Arguments: u_cmpt - The nominal zonal (u) component of the vector pair which
706 ! is having its halos points exchanged.
707 ! (inout) v_cmpt - The nominal meridional (v) component of the vector pair
708 ! which is having its halos points exchanged.
709 ! (in) MOM_dom - The MOM_domain_type containing the mpp_domain needed to
710 ! determine where data should be sent.
711 ! (in) direction - An optional integer indicating which directions the
712 ! data should be sent. It is TO_ALL or the sum of any of
713 ! TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly
714 ! plus SCALAR_PAIR if these are paired non-directional
715 ! scalars discretized at the typical vector component
716 ! locations. For example, TO_EAST sends the data to the
717 ! processor to the east, so the halos on the western
718 ! side are filled. TO_ALL is the default if omitted.
719 ! (in) stagger - An optional flag, which may be one of A_GRID, BGRID_NE,
720 ! or CGRID_NE, indicating where the two components of the
721 ! vector are discretized. Omitting stagger is the same as
722 ! setting it to CGRID_NE.
723 ! (in) complete - An optional argument indicating whether the halo updates
724 ! should be initiated immediately or wait for second
725 ! pass_..._start call. Omitting complete is the same as
726 ! setting complete to .true.
727 ! (in,opt) halo - The size of the halo to update - the full halo by default.
728 ! (return value) - The integer index for this update.
729  integer :: stagger_local
730  integer :: dirflag
731 
732  stagger_local = cgrid_ne ! Default value for type of grid
733  if (present(stagger)) stagger_local = stagger
734 
735  dirflag = to_all ! 60
736  if (present(direction)) then ; if (direction > 0) dirflag = direction ; endif
737 
738  if (present(halo) .and. mom_dom%thin_halo_updates) then
739  pass_vector_start_2d = mpp_start_update_domains(u_cmpt, v_cmpt, &
740  mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local, &
741  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
742  else
743  pass_vector_start_2d = mpp_start_update_domains(u_cmpt, v_cmpt, &
744  mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local)
745  endif
746 

◆ pass_vector_start_3d()

integer function mom_domains::pass_vector_start::pass_vector_start_3d ( 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,
logical, intent(in), optional  complete,
integer, intent(in), optional  halo 
)
private
Parameters
[in,out]u_cmptThe nominal zonal (u) component of the vector pair which is having its halos points exchanged.
[in,out]v_cmptThe nominal meridional (v) component of the vector pair 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]directionAn 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]staggerAn 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]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.
Returns
The integer index for this update.

Definition at line 750 of file MOM_domains.F90.

750  real, dimension(:,:,:), intent(inout) :: u_cmpt !< The nominal zonal (u) component of the vector
751  !! pair which is having its halos points
752  !! exchanged.
753  real, dimension(:,:,:), intent(inout) :: v_cmpt !< The nominal meridional (v) component of the
754  !! vector pair which is having its halos points
755  !! exchanged.
756  type(mom_domain_type), intent(inout) :: mom_dom !< The MOM_domain_type containing the mpp_domain
757  !! needed to determine where data should be
758  !! sent.
759  integer, optional, intent(in) :: direction !< An optional integer indicating which
760  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
761  !! TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional
762  !! scalars discretized at the typical vector component locations. For example, TO_EAST sends
763  !! the data to the processor to the east, so the halos on the western side are filled. TO_ALL
764  !! is the default if omitted.
765  integer, optional, intent(in) :: stagger !< An optional flag, which may be one of A_GRID,
766  !! BGRID_NE, or CGRID_NE, indicating where the two components of the vector are
767  !! discretized. Omitting stagger is the same as setting it to CGRID_NE.
768  logical, optional, intent(in) :: complete !< An optional argument indicating whether the
769  !! halo updates should be completed before progress resumes.
770  !! Omitting complete is the same as setting complete to .true.
771  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
772  !! halo by default.
773  integer :: pass_vector_start_3d !< The integer index for this
774  !! update.
775 ! Arguments: u_cmpt - The nominal zonal (u) component of the vector pair which
776 ! is having its halos points exchanged.
777 ! (inout) v_cmpt - The nominal meridional (v) component of the vector pair
778 ! which is having its halos points exchanged.
779 ! (in) MOM_dom - The MOM_domain_type containing the mpp_domain needed to
780 ! determine where data should be sent.
781 ! (in) direction - An optional integer indicating which directions the
782 ! data should be sent. It is TO_ALL or the sum of any of
783 ! TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly
784 ! plus SCALAR_PAIR if these are paired non-directional
785 ! scalars discretized at the typical vector component
786 ! locations. For example, TO_EAST sends the data to the
787 ! processor to the east, so the halos on the western
788 ! side are filled. TO_ALL is the default if omitted.
789 ! (in) stagger - An optional flag, which may be one of A_GRID, BGRID_NE,
790 ! or CGRID_NE, indicating where the two components of the
791 ! vector are discretized. Omitting stagger is the same as
792 ! setting it to CGRID_NE.
793 ! (in) complete - An optional argument indicating whether the halo updates
794 ! should be initiated immediately or wait for second
795 ! pass_..._start call. Omitting complete is the same as
796 ! setting complete to .true.
797 ! (in,opt) halo - The size of the halo to update - the full halo by default.
798 ! (return value) - The integer index for this update.
799  integer :: stagger_local
800  integer :: dirflag
801 
802  stagger_local = cgrid_ne ! Default value for type of grid
803  if (present(stagger)) stagger_local = stagger
804 
805  dirflag = to_all ! 60
806  if (present(direction)) then ; if (direction > 0) dirflag = direction ; endif
807 
808  if (present(halo) .and. mom_dom%thin_halo_updates) then
809  pass_vector_start_3d = mpp_start_update_domains(u_cmpt, v_cmpt, &
810  mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local, &
811  whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
812  else
813  pass_vector_start_3d = mpp_start_update_domains(u_cmpt, v_cmpt, &
814  mom_dom%mpp_domain, flags=dirflag, gridtype=stagger_local)
815  endif
816 

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