\hypertarget{interfacemom__domains_1_1pass__vector}{}\section{mom\+\_\+domains\+::pass\+\_\+vector Interface Reference}
\label{interfacemom__domains_1_1pass__vector}\index{mom\_domains::pass\_vector@{mom\_domains::pass\_vector}}


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

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

\subsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1pass__vector_abcb2d6a8af4bfdcf9357b736186f3813}{pass\+\_\+vector\+\_\+3d}} (u\+\_\+cmpt, v\+\_\+cmpt, M\+O\+M\+\_\+dom, direction, stagger, complete, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+vector\+\_\+3d does a halo update for a pair of three-\/dimensional arrays representing the compontents of a three-\/dimensional horizontal vector. \end{DoxyCompactList}\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1pass__vector_a593d37c57003ef0a6a593383151afacf}{pass\+\_\+vector\+\_\+2d}} (u\+\_\+cmpt, v\+\_\+cmpt, M\+O\+M\+\_\+dom, direction, stagger, complete, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+vector\+\_\+2d does 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}
Do a halo update on a pair of arrays representing the two components of a vector. 

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



\subsection{Functions and subroutines}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__vector_a593d37c57003ef0a6a593383151afacf}\label{interfacemom__domains_1_1pass__vector_a593d37c57003ef0a6a593383151afacf}} 
\index{mom\_domains::pass\_vector@{mom\_domains::pass\_vector}!pass\_vector\_2d@{pass\_vector\_2d}}
\index{pass\_vector\_2d@{pass\_vector\_2d}!mom\_domains::pass\_vector@{mom\_domains::pass\_vector}}
\subsubsection{\texorpdfstring{pass\_vector\_2d()}{pass\_vector\_2d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::pass\+\_\+vector\+::pass\+\_\+vector\+\_\+2d (\begin{DoxyParamCaption}\item[{real, dimension(\+:,\+:), intent(inout)}]{u\+\_\+cmpt,  }\item[{real, dimension(\+:,\+:), intent(inout)}]{v\+\_\+cmpt,  }\item[{type(\mbox{\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\+\_\+2d does a halo update for a pair of two-\/dimensional arrays representing the compontents of a two-\/dimensional horizontal vector. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em u\+\_\+cmpt} & The nominal zonal (u) component of the vector pair which is having its halos points exchanged. \\
\hline
\mbox{\texttt{ in,out}}  & {\em v\+\_\+cmpt} & The nominal meridional (v) component of the vector pair which is having its halos points exchanged. \\
\hline
\mbox{\texttt{ 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{\texttt{ 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{\texttt{ 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{\texttt{ 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{\texttt{ in}}  & {\em halo} & The size of the halo to update -\/ the full halo by default. \\
\hline
\mbox{\texttt{ in}}  & {\em clock} & The handle for a cpu time clock that should be started then stopped to time this routine. \\
\hline
\end{DoxyParams}


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


\begin{DoxyCode}{0}
\DoxyCodeLine{487 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},  \textcolor{keywordtype}{intent(inout)} :: u\_cmpt\textcolor{comment}{    !< The nominal zonal (u) component of the vector}}
\DoxyCodeLine{488 \textcolor{comment}{                                                    !! pair which is having its halos points}}
\DoxyCodeLine{489 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{490 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},  \textcolor{keywordtype}{intent(inout)} :: v\_cmpt\textcolor{comment}{    !< The nominal meridional (v) component of the}}
\DoxyCodeLine{491 \textcolor{comment}{                                                    !! vector pair which is having its halos points}}
\DoxyCodeLine{492 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{493   \textcolor{keywordtype}{type}(MOM\_domain\_type), \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{   !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{494 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{495 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{496   \textcolor{keywordtype}{integer},     \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: direction\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{497 \textcolor{comment}{      !! directions the data should be sent.  It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{498 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH, possibly plus SCALAR\_PAIR if these are paired non-directional}}
\DoxyCodeLine{499 \textcolor{comment}{      !! scalars discretized at the typical vector component locations.  For example, TO\_EAST sends}}
\DoxyCodeLine{500 \textcolor{comment}{      !! the data to the processor to the east, so the halos on the western side are filled. TO\_ALL}}
\DoxyCodeLine{501 \textcolor{comment}{      !! is the default if omitted.}}
\DoxyCodeLine{502   \textcolor{keywordtype}{integer},     \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: stagger\textcolor{comment}{   !< An optional flag, which may be one of A\_GRID,}}
\DoxyCodeLine{503 \textcolor{comment}{                     !! BGRID\_NE, or CGRID\_NE, indicating where the two components of the vector are}}
\DoxyCodeLine{504 \textcolor{comment}{                     !! discretized. Omitting stagger is the same as setting it to CGRID\_NE.}}
\DoxyCodeLine{505   \textcolor{keywordtype}{logical},     \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: complete\textcolor{comment}{  !< An optional argument indicating whether the}}
\DoxyCodeLine{506 \textcolor{comment}{                                     !! halo updates should be completed before progress resumes.}}
\DoxyCodeLine{507 \textcolor{comment}{                                     !! Omitting complete is the same as setting complete to .true.}}
\DoxyCodeLine{508   \textcolor{keywordtype}{integer},     \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{      !< The size of the halo to update - the full}}
\DoxyCodeLine{509 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{510   \textcolor{keywordtype}{integer},     \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{     !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{511 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{512 }
\DoxyCodeLine{513   \textcolor{comment}{! Local variables}}
\DoxyCodeLine{514   \textcolor{keywordtype}{integer} :: stagger\_local}
\DoxyCodeLine{515   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{516   \textcolor{keywordtype}{logical} :: block\_til\_complete}
\DoxyCodeLine{517 }
\DoxyCodeLine{518   \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}}
\DoxyCodeLine{519 }
\DoxyCodeLine{520   stagger\_local = cgrid\_ne \textcolor{comment}{! Default value for type of grid}}
\DoxyCodeLine{521   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(stagger)) stagger\_local = stagger}
\DoxyCodeLine{522 }
\DoxyCodeLine{523   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{524   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(direction)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (direction > 0) dirflag = direction ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{525   block\_til\_complete = .true.}
\DoxyCodeLine{526   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(complete)) block\_til\_complete = complete}
\DoxyCodeLine{527 }
\DoxyCodeLine{528   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{529     \textcolor{keyword}{call }mpp\_update\_domains(u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{530                    gridtype=stagger\_local, complete = block\_til\_complete, \&}
\DoxyCodeLine{531                    whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)}
\DoxyCodeLine{532   \textcolor{keywordflow}{else}}
\DoxyCodeLine{533     \textcolor{keyword}{call }mpp\_update\_domains(u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{534                    gridtype=stagger\_local, complete = block\_til\_complete)}
\DoxyCodeLine{535 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{536 }
\DoxyCodeLine{537   \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}}
\DoxyCodeLine{538 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__vector_abcb2d6a8af4bfdcf9357b736186f3813}\label{interfacemom__domains_1_1pass__vector_abcb2d6a8af4bfdcf9357b736186f3813}} 
\index{mom\_domains::pass\_vector@{mom\_domains::pass\_vector}!pass\_vector\_3d@{pass\_vector\_3d}}
\index{pass\_vector\_3d@{pass\_vector\_3d}!mom\_domains::pass\_vector@{mom\_domains::pass\_vector}}
\subsubsection{\texorpdfstring{pass\_vector\_3d()}{pass\_vector\_3d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::pass\+\_\+vector\+::pass\+\_\+vector\+\_\+3d (\begin{DoxyParamCaption}\item[{real, dimension(\+:,\+:,\+:), intent(inout)}]{u\+\_\+cmpt,  }\item[{real, dimension(\+:,\+:,\+:), intent(inout)}]{v\+\_\+cmpt,  }\item[{type(\mbox{\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\+\_\+3d does a halo update for a pair of three-\/dimensional arrays representing the compontents of a three-\/dimensional horizontal vector. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em u\+\_\+cmpt} & The nominal zonal (u) component of the vector pair which is having its halos points exchanged. \\
\hline
\mbox{\texttt{ in,out}}  & {\em v\+\_\+cmpt} & The nominal meridional (v) component of the vector pair which is having its halos points exchanged. \\
\hline
\mbox{\texttt{ 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{\texttt{ 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{\texttt{ 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{\texttt{ 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{\texttt{ in}}  & {\em halo} & The size of the halo to update -\/ the full halo by default. \\
\hline
\mbox{\texttt{ in}}  & {\em clock} & The handle for a cpu time clock that should be started then stopped to time this routine. \\
\hline
\end{DoxyParams}


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


\begin{DoxyCode}{0}
\DoxyCodeLine{633 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: u\_cmpt\textcolor{comment}{   !< The nominal zonal (u) component of the vector}}
\DoxyCodeLine{634 \textcolor{comment}{                                                    !! pair which is having its halos points}}
\DoxyCodeLine{635 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{636 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: v\_cmpt\textcolor{comment}{   !< The nominal meridional (v) component of the}}
\DoxyCodeLine{637 \textcolor{comment}{                                                    !! vector pair which is having its halos points}}
\DoxyCodeLine{638 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{639   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{640 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{641 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{642   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: direction\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{643 \textcolor{comment}{      !! directions the data should be sent.  It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{644 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH, possibly plus SCALAR\_PAIR if these are paired non-directional}}
\DoxyCodeLine{645 \textcolor{comment}{      !! scalars discretized at the typical vector component locations.  For example, TO\_EAST sends}}
\DoxyCodeLine{646 \textcolor{comment}{      !! the data to the processor to the east, so the halos on the western side are filled. TO\_ALL}}
\DoxyCodeLine{647 \textcolor{comment}{      !! is the default if omitted.}}
\DoxyCodeLine{648   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: stagger\textcolor{comment}{  !< An optional flag, which may be one of A\_GRID,}}
\DoxyCodeLine{649 \textcolor{comment}{                     !! BGRID\_NE, or CGRID\_NE, indicating where the two components of the vector are}}
\DoxyCodeLine{650 \textcolor{comment}{                     !! discretized. Omitting stagger is the same as setting it to CGRID\_NE.}}
\DoxyCodeLine{651   \textcolor{keywordtype}{logical},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: complete\textcolor{comment}{ !< An optional argument indicating whether the}}
\DoxyCodeLine{652 \textcolor{comment}{                                     !! halo updates should be completed before progress resumes.}}
\DoxyCodeLine{653 \textcolor{comment}{                                     !! Omitting complete is the same as setting complete to .true.}}
\DoxyCodeLine{654   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update - the full}}
\DoxyCodeLine{655 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{656   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{657 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{658 }
\DoxyCodeLine{659   \textcolor{comment}{! Local variables}}
\DoxyCodeLine{660   \textcolor{keywordtype}{integer} :: stagger\_local}
\DoxyCodeLine{661   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{662   \textcolor{keywordtype}{logical} :: block\_til\_complete}
\DoxyCodeLine{663 }
\DoxyCodeLine{664   \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}}
\DoxyCodeLine{665 }
\DoxyCodeLine{666   stagger\_local = cgrid\_ne \textcolor{comment}{! Default value for type of grid}}
\DoxyCodeLine{667   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(stagger)) stagger\_local = stagger}
\DoxyCodeLine{668 }
\DoxyCodeLine{669   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{670   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(direction)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (direction > 0) dirflag = direction ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{671   block\_til\_complete = .true.}
\DoxyCodeLine{672   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(complete)) block\_til\_complete = complete}
\DoxyCodeLine{673 }
\DoxyCodeLine{674   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{675     \textcolor{keyword}{call }mpp\_update\_domains(u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{676                    gridtype=stagger\_local, complete = block\_til\_complete, \&}
\DoxyCodeLine{677                    whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)}
\DoxyCodeLine{678   \textcolor{keywordflow}{else}}
\DoxyCodeLine{679     \textcolor{keyword}{call }mpp\_update\_domains(u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{680                    gridtype=stagger\_local, complete = block\_til\_complete)}
\DoxyCodeLine{681 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{682 }
\DoxyCodeLine{683   \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}}
\DoxyCodeLine{684 }

\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}
