\hypertarget{interfacemom__domains_1_1pass__vector__start}{}\section{mom\+\_\+domains\+:\+:pass\+\_\+vector\+\_\+start Interface Reference}
\label{interfacemom__domains_1_1pass__vector__start}\index{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start@{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start}}


\subsection{Detailed Description}
Initiate a halo update on a pair of arrays representing the two components of a vector. 

Definition at line 74 of file M\+O\+M\+\_\+domains.\+F90.

\subsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
integer function \hyperlink{interfacemom__domains_1_1pass__vector__start_afcd13d423d6f7428a61cc14a31f6519b}{pass\+\_\+vector\+\_\+start\+\_\+3d} (u\+\_\+cmpt, v\+\_\+cmpt, M\+O\+M\+\_\+dom, direction, stagger, complete, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+vector\+\_\+start\+\_\+3d starts a halo update for a pair of three-\/dimensional arrays representing the compontents of a three-\/dimensional horizontal vector. \end{DoxyCompactList}\item 
integer function \hyperlink{interfacemom__domains_1_1pass__vector__start_ae89f5b81804c86807a7a7e6e2de1e1bb}{pass\+\_\+vector\+\_\+start\+\_\+2d} (u\+\_\+cmpt, v\+\_\+cmpt, M\+O\+M\+\_\+dom, direction, stagger, complete, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+vector\+\_\+start\+\_\+2d starts a halo update for a pair of two-\/dimensional arrays representing the compontents of a two-\/dimensional horizontal vector. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Initiate a halo update on a pair of arrays representing the two components of a vector. 

Definition at line 74 of file M\+O\+M\+\_\+domains.\+F90.



\subsection{Functions and subroutines}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__vector__start_ae89f5b81804c86807a7a7e6e2de1e1bb}\label{interfacemom__domains_1_1pass__vector__start_ae89f5b81804c86807a7a7e6e2de1e1bb}} 
\index{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start@{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start}!pass\+\_\+vector\+\_\+start\+\_\+2d@{pass\+\_\+vector\+\_\+start\+\_\+2d}}
\index{pass\+\_\+vector\+\_\+start\+\_\+2d@{pass\+\_\+vector\+\_\+start\+\_\+2d}!mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start@{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start}}
\subsubsection{\texorpdfstring{pass\+\_\+vector\+\_\+start\+\_\+2d()}{pass\_vector\_start\_2d()}}
{\footnotesize\ttfamily integer function mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start\+::pass\+\_\+vector\+\_\+start\+\_\+2d (\begin{DoxyParamCaption}\item[{real, dimension(\+:,\+:), intent(inout)}]{u\+\_\+cmpt,  }\item[{real, dimension(\+:,\+:), intent(inout)}]{v\+\_\+cmpt,  }\item[{type(\hyperlink{structmom__domains_1_1mom__domain__type}{mom\+\_\+domain\+\_\+type}), intent(inout)}]{M\+O\+M\+\_\+dom,  }\item[{integer, intent(in), optional}]{direction,  }\item[{integer, intent(in), optional}]{stagger,  }\item[{logical, intent(in), optional}]{complete,  }\item[{integer, intent(in), optional}]{halo,  }\item[{integer, intent(in), optional}]{clock }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



pass\+\_\+vector\+\_\+start\+\_\+2d starts a halo update for a pair of two-\/dimensional arrays representing the compontents of a two-\/dimensional horizontal vector. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em u\+\_\+cmpt} & The nominal zonal (u) component of the vector pair which is having its halos points exchanged.\\
\hline
\mbox{\tt in,out}  & {\em v\+\_\+cmpt} & The nominal meridional (v) component of the vector pair which is having its halos points exchanged.\\
\hline
\mbox{\tt in,out}  & {\em mom\+\_\+dom} & The M\+O\+M\+\_\+domain\+\_\+type containing the mpp\+\_\+domain needed to determine where data should be sent.\\
\hline
\mbox{\tt in}  & {\em direction} & An optional integer indicating which directions the data should be sent. It is T\+O\+\_\+\+A\+LL or the sum of any of T\+O\+\_\+\+E\+A\+ST, T\+O\+\_\+\+W\+E\+ST, T\+O\+\_\+\+N\+O\+R\+TH, and T\+O\+\_\+\+S\+O\+U\+TH, possibly plus S\+C\+A\+L\+A\+R\+\_\+\+P\+A\+IR if these are paired non-\/directional scalars discretized at the typical vector component locations. For example, T\+O\+\_\+\+E\+A\+ST sends the data to the processor to the east, so the halos on the western side are filled. T\+O\+\_\+\+A\+LL is the default if omitted.\\
\hline
\mbox{\tt in}  & {\em stagger} & An optional flag, which may be one of A\+\_\+\+G\+R\+ID, B\+G\+R\+I\+D\+\_\+\+NE, or C\+G\+R\+I\+D\+\_\+\+NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to C\+G\+R\+I\+D\+\_\+\+NE.\\
\hline
\mbox{\tt in}  & {\em 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.\\
\hline
\mbox{\tt in}  & {\em halo} & The size of the halo to update -\/ the full halo by default.\\
\hline
\mbox{\tt in}  & {\em clock} & The handle for a cpu time clock that should be started then stopped to time this routine.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The integer index for this update. 
\end{DoxyReturn}


Definition at line 691 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}
691   \textcolor{keywordtype}{real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: u\_cmpt\textcolor{comment}{   !< The nominal zonal (u) component of the vector}
692 \textcolor{comment}{                                                    !! pair which is having its halos points}
693 \textcolor{comment}{                                                    !! exchanged.}
694   \textcolor{keywordtype}{real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: v\_cmpt\textcolor{comment}{   !< The nominal meridional (v) component of the}
695 \textcolor{comment}{                                                    !! vector pair which is having its halos points}
696 \textcolor{comment}{                                                    !! exchanged.}
697   \textcolor{keywordtype}{type}(mom\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: mom\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}
698 \textcolor{comment}{                                                    !! needed to determine where data should be}
699 \textcolor{comment}{                                                    !! sent.}
700   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: direction\textcolor{comment}{ !< An optional integer indicating which}
701 \textcolor{comment}{      !! directions the data should be sent.  It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}
702 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH, possibly plus SCALAR\_PAIR if these are paired non-directional}
703 \textcolor{comment}{      !! scalars discretized at the typical vector component locations.  For example, TO\_EAST sends}
704 \textcolor{comment}{      !! the data to the processor to the east, so the halos on the western side are filled. TO\_ALL}
705 \textcolor{comment}{      !! is the default if omitted.}
706   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: stagger\textcolor{comment}{  !< An optional flag, which may be one of A\_GRID,}
707 \textcolor{comment}{                     !! BGRID\_NE, or CGRID\_NE, indicating where the two components of the vector are}
708 \textcolor{comment}{                     !! discretized. Omitting stagger is the same as setting it to CGRID\_NE.}
709   \textcolor{keywordtype}{logical},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: complete\textcolor{comment}{ !< An optional argument indicating whether the}
710 \textcolor{comment}{                                     !! halo updates should be completed before progress resumes.}
711 \textcolor{comment}{                                     !! Omitting complete is the same as setting complete to .true.}
712   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update - the full}
713 \textcolor{comment}{                                                    !! halo by default.}
714   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}
715 \textcolor{comment}{                                                    !! started then stopped to time this routine.}
716   \textcolor{keywordtype}{integer}                               :: pass\_vector\_start\_2d\textcolor{comment}{ !< The integer index for this}
717 \textcolor{comment}{                                                                !! update.}
718 
719   \textcolor{comment}{! Local variables}
720   \textcolor{keywordtype}{integer} :: stagger\_local
721   \textcolor{keywordtype}{integer} :: dirflag
722 
723   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(clock)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (clock>0) \textcolor{keyword}{call }cpu\_clock\_begin(clock) ;\textcolor{keywordflow}{ endif}
724 
725   stagger\_local = cgrid\_ne \textcolor{comment}{! Default value for type of grid}
726   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(stagger)) stagger\_local = stagger
727 
728   dirflag = to\_all \textcolor{comment}{! 60}
729   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(direction)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (direction > 0) dirflag = direction ;\textcolor{keywordflow}{ endif}
730 
731   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom%thin\_halo\_updates) \textcolor{keywordflow}{then}
732     pass\_vector\_start\_2d = mpp\_start\_update\_domains(u\_cmpt, v\_cmpt, &
733         mom\_dom%mpp\_domain, flags=dirflag, gridtype=stagger\_local, &
734         whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
735   \textcolor{keywordflow}{else}
736     pass\_vector\_start\_2d = mpp\_start\_update\_domains(u\_cmpt, v\_cmpt, &
737         mom\_dom%mpp\_domain, flags=dirflag, gridtype=stagger\_local)
738 \textcolor{keywordflow}{  endif}
739 
740   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(clock)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (clock>0) \textcolor{keyword}{call }cpu\_clock\_end(clock) ;\textcolor{keywordflow}{ endif}
741 
\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__vector__start_afcd13d423d6f7428a61cc14a31f6519b}\label{interfacemom__domains_1_1pass__vector__start_afcd13d423d6f7428a61cc14a31f6519b}} 
\index{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start@{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start}!pass\+\_\+vector\+\_\+start\+\_\+3d@{pass\+\_\+vector\+\_\+start\+\_\+3d}}
\index{pass\+\_\+vector\+\_\+start\+\_\+3d@{pass\+\_\+vector\+\_\+start\+\_\+3d}!mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start@{mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start}}
\subsubsection{\texorpdfstring{pass\+\_\+vector\+\_\+start\+\_\+3d()}{pass\_vector\_start\_3d()}}
{\footnotesize\ttfamily integer function mom\+\_\+domains\+::pass\+\_\+vector\+\_\+start\+::pass\+\_\+vector\+\_\+start\+\_\+3d (\begin{DoxyParamCaption}\item[{real, dimension(\+:,\+:,\+:), intent(inout)}]{u\+\_\+cmpt,  }\item[{real, dimension(\+:,\+:,\+:), intent(inout)}]{v\+\_\+cmpt,  }\item[{type(\hyperlink{structmom__domains_1_1mom__domain__type}{mom\+\_\+domain\+\_\+type}), intent(inout)}]{M\+O\+M\+\_\+dom,  }\item[{integer, intent(in), optional}]{direction,  }\item[{integer, intent(in), optional}]{stagger,  }\item[{logical, intent(in), optional}]{complete,  }\item[{integer, intent(in), optional}]{halo,  }\item[{integer, intent(in), optional}]{clock }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



pass\+\_\+vector\+\_\+start\+\_\+3d starts a halo update for a pair of three-\/dimensional arrays representing the compontents of a three-\/dimensional horizontal vector. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em u\+\_\+cmpt} & The nominal zonal (u) component of the vector pair which is having its halos points exchanged.\\
\hline
\mbox{\tt in,out}  & {\em v\+\_\+cmpt} & The nominal meridional (v) component of the vector pair which is having its halos points exchanged.\\
\hline
\mbox{\tt in,out}  & {\em mom\+\_\+dom} & The M\+O\+M\+\_\+domain\+\_\+type containing the mpp\+\_\+domain needed to determine where data should be sent.\\
\hline
\mbox{\tt in}  & {\em direction} & An optional integer indicating which directions the data should be sent. It is T\+O\+\_\+\+A\+LL or the sum of any of T\+O\+\_\+\+E\+A\+ST, T\+O\+\_\+\+W\+E\+ST, T\+O\+\_\+\+N\+O\+R\+TH, and T\+O\+\_\+\+S\+O\+U\+TH, possibly plus S\+C\+A\+L\+A\+R\+\_\+\+P\+A\+IR if these are paired non-\/directional scalars discretized at the typical vector component locations. For example, T\+O\+\_\+\+E\+A\+ST sends the data to the processor to the east, so the halos on the western side are filled. T\+O\+\_\+\+A\+LL is the default if omitted.\\
\hline
\mbox{\tt in}  & {\em stagger} & An optional flag, which may be one of A\+\_\+\+G\+R\+ID, B\+G\+R\+I\+D\+\_\+\+NE, or C\+G\+R\+I\+D\+\_\+\+NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to C\+G\+R\+I\+D\+\_\+\+NE.\\
\hline
\mbox{\tt in}  & {\em 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.\\
\hline
\mbox{\tt in}  & {\em halo} & The size of the halo to update -\/ the full halo by default.\\
\hline
\mbox{\tt in}  & {\em clock} & The handle for a cpu time clock that should be started then stopped to time this routine.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The integer index for this update. 
\end{DoxyReturn}


Definition at line 748 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}
748   \textcolor{keywordtype}{real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: u\_cmpt\textcolor{comment}{   !< The nominal zonal (u) component of the vector}
749 \textcolor{comment}{                                                    !! pair which is having its halos points}
750 \textcolor{comment}{                                                    !! exchanged.}
751   \textcolor{keywordtype}{real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: v\_cmpt\textcolor{comment}{   !< The nominal meridional (v) component of the}
752 \textcolor{comment}{                                                    !! vector pair which is having its halos points}
753 \textcolor{comment}{                                                    !! exchanged.}
754   \textcolor{keywordtype}{type}(mom\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: mom\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}
755 \textcolor{comment}{                                                    !! needed to determine where data should be}
756 \textcolor{comment}{                                                    !! sent.}
757   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: direction\textcolor{comment}{ !< An optional integer indicating which}
758 \textcolor{comment}{      !! directions the data should be sent.  It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}
759 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH, possibly plus SCALAR\_PAIR if these are paired non-directional}
760 \textcolor{comment}{      !! scalars discretized at the typical vector component locations.  For example, TO\_EAST sends}
761 \textcolor{comment}{      !! the data to the processor to the east, so the halos on the western side are filled. TO\_ALL}
762 \textcolor{comment}{      !! is the default if omitted.}
763   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: stagger\textcolor{comment}{  !< An optional flag, which may be one of A\_GRID,}
764 \textcolor{comment}{                     !! BGRID\_NE, or CGRID\_NE, indicating where the two components of the vector are}
765 \textcolor{comment}{                     !! discretized. Omitting stagger is the same as setting it to CGRID\_NE.}
766   \textcolor{keywordtype}{logical},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: complete\textcolor{comment}{ !< An optional argument indicating whether the}
767 \textcolor{comment}{                                     !! halo updates should be completed before progress resumes.}
768 \textcolor{comment}{                                     !! Omitting complete is the same as setting complete to .true.}
769   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update - the full}
770 \textcolor{comment}{                                                    !! halo by default.}
771   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}
772 \textcolor{comment}{                                                    !! started then stopped to time this routine.}
773   \textcolor{keywordtype}{integer}                               :: pass\_vector\_start\_3d\textcolor{comment}{ !< The integer index for this}
774 \textcolor{comment}{                                                                !! update.}
775   \textcolor{comment}{! Local variables}
776   \textcolor{keywordtype}{integer} :: stagger\_local
777   \textcolor{keywordtype}{integer} :: dirflag
778 
779   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(clock)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (clock>0) \textcolor{keyword}{call }cpu\_clock\_begin(clock) ;\textcolor{keywordflow}{ endif}
780 
781   stagger\_local = cgrid\_ne \textcolor{comment}{! Default value for type of grid}
782   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(stagger)) stagger\_local = stagger
783 
784   dirflag = to\_all \textcolor{comment}{! 60}
785   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(direction)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (direction > 0) dirflag = direction ;\textcolor{keywordflow}{ endif}
786 
787   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom%thin\_halo\_updates) \textcolor{keywordflow}{then}
788     pass\_vector\_start\_3d = mpp\_start\_update\_domains(u\_cmpt, v\_cmpt, &
789         mom\_dom%mpp\_domain, flags=dirflag, gridtype=stagger\_local, &
790         whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)
791   \textcolor{keywordflow}{else}
792     pass\_vector\_start\_3d = mpp\_start\_update\_domains(u\_cmpt, v\_cmpt, &
793         mom\_dom%mpp\_domain, flags=dirflag, gridtype=stagger\_local)
794 \textcolor{keywordflow}{  endif}
795 
796   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(clock)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (clock>0) \textcolor{keyword}{call }cpu\_clock\_end(clock) ;\textcolor{keywordflow}{ endif}
797 
\end{DoxyCode}


The documentation for this interface was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/home/cermak/src/\+M\+O\+M6.\+devrob/src/framework/M\+O\+M\+\_\+domains.\+F90\end{DoxyCompactItemize}
