\hypertarget{interfacemom__domains_1_1pass__var__complete}{}\doxysection{mom\+\_\+domains\+::pass\+\_\+var\+\_\+complete Interface Reference}
\label{interfacemom__domains_1_1pass__var__complete}\index{mom\_domains::pass\_var\_complete@{mom\_domains::pass\_var\_complete}}


\doxysubsection{Detailed Description}
Complete a non-\/blocking halo update on an array. 

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

\doxysubsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1pass__var__complete_ae3647bb846a98d1928467a3eb155d054}{pass\+\_\+var\+\_\+complete\+\_\+3d}} (id\+\_\+update, array, M\+O\+M\+\_\+dom, sideflag, position, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+var\+\_\+complete\+\_\+3d completes a halo update for a three-\/dimensional array. \end{DoxyCompactList}\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1pass__var__complete_a75f20cc7edab74d4f7188db023d253aa}{pass\+\_\+var\+\_\+complete\+\_\+2d}} (id\+\_\+update, array, M\+O\+M\+\_\+dom, sideflag, position, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+var\+\_\+complete\+\_\+2d completes a halo update for a two-\/dimensional array. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Complete a non-\/blocking halo update on an array. 

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



\doxysubsection{Functions and subroutines}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__var__complete_a75f20cc7edab74d4f7188db023d253aa}\label{interfacemom__domains_1_1pass__var__complete_a75f20cc7edab74d4f7188db023d253aa}} 
\index{mom\_domains::pass\_var\_complete@{mom\_domains::pass\_var\_complete}!pass\_var\_complete\_2d@{pass\_var\_complete\_2d}}
\index{pass\_var\_complete\_2d@{pass\_var\_complete\_2d}!mom\_domains::pass\_var\_complete@{mom\_domains::pass\_var\_complete}}
\doxysubsubsection{\texorpdfstring{pass\_var\_complete\_2d()}{pass\_var\_complete\_2d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::pass\+\_\+var\+\_\+complete\+::pass\+\_\+var\+\_\+complete\+\_\+2d (\begin{DoxyParamCaption}\item[{integer, intent(in)}]{id\+\_\+update,  }\item[{real, dimension(\+:,\+:), intent(inout)}]{array,  }\item[{type(\mbox{\hyperlink{structmom__domains_1_1mom__domain__type}{mom\+\_\+domain\+\_\+type}}), intent(inout)}]{M\+O\+M\+\_\+dom,  }\item[{integer, intent(in), optional}]{sideflag,  }\item[{integer, intent(in), optional}]{position,  }\item[{integer, intent(in), optional}]{halo,  }\item[{integer, intent(in), optional}]{clock }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



pass\+\_\+var\+\_\+complete\+\_\+2d completes a halo update for a two-\/dimensional array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em id\+\_\+update} & The integer id of this update which has been returned from a previous call to \mbox{\hyperlink{interfacemom__domains_1_1pass__var__start}{pass\+\_\+var\+\_\+start}}. \\
\hline
\mbox{\texttt{ in,out}}  & {\em array} & The array 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 sideflag} & 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. 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 sideflag is omitted. \\
\hline
\mbox{\texttt{ in}}  & {\em position} & An optional argument indicating the position. This is C\+E\+N\+T\+ER by default and is often C\+O\+R\+N\+ER, but could also be E\+A\+S\+T\+\_\+\+F\+A\+CE or N\+O\+R\+T\+H\+\_\+\+F\+A\+CE. \\
\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 398 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{400   \textcolor{keywordtype}{integer},                \textcolor{keywordtype}{intent(in)}    :: id\_update\textcolor{comment}{ !< The integer id of this update which has}}
\DoxyCodeLine{401 \textcolor{comment}{                                                    !! been returned from a previous call to}}
\DoxyCodeLine{402 \textcolor{comment}{                                                    !! pass\_var\_start.}}
\DoxyCodeLine{403 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: array\textcolor{comment}{    !< The array which is having its halos points}}
\DoxyCodeLine{404 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{405   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{406 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{407 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{408   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: sideflag\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{409 \textcolor{comment}{      !! directions the data should be sent. It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{410 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH.  For example, TO\_EAST sends the data to the processor to the east,}}
\DoxyCodeLine{411 \textcolor{comment}{      !! so the halos on the western side are filled.  TO\_ALL is the default if sideflag is omitted.}}
\DoxyCodeLine{412   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: position\textcolor{comment}{ !< An optional argument indicating the position.}}
\DoxyCodeLine{413 \textcolor{comment}{                                                    !! This is CENTER by default and is often CORNER,}}
\DoxyCodeLine{414 \textcolor{comment}{                                                    !! but could also be EAST\_FACE or NORTH\_FACE.}}
\DoxyCodeLine{415   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update -\/ the full}}
\DoxyCodeLine{416 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{417   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{418 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{419 }
\DoxyCodeLine{420   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{421 }
\DoxyCodeLine{422   \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{423 }
\DoxyCodeLine{424   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{425   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(sideflag)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (sideflag > 0) dirflag = sideflag ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{426 }
\DoxyCodeLine{427   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{428     \textcolor{keyword}{call }mpp\_complete\_update\_domains(id\_update, array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{429                             flags=dirflag, position=position, \&}
\DoxyCodeLine{430                             whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)}
\DoxyCodeLine{431   \textcolor{keywordflow}{else}}
\DoxyCodeLine{432     \textcolor{keyword}{call }mpp\_complete\_update\_domains(id\_update, array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{433                                      flags=dirflag, position=position)}
\DoxyCodeLine{434 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{435 }
\DoxyCodeLine{436   \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{437 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__var__complete_ae3647bb846a98d1928467a3eb155d054}\label{interfacemom__domains_1_1pass__var__complete_ae3647bb846a98d1928467a3eb155d054}} 
\index{mom\_domains::pass\_var\_complete@{mom\_domains::pass\_var\_complete}!pass\_var\_complete\_3d@{pass\_var\_complete\_3d}}
\index{pass\_var\_complete\_3d@{pass\_var\_complete\_3d}!mom\_domains::pass\_var\_complete@{mom\_domains::pass\_var\_complete}}
\doxysubsubsection{\texorpdfstring{pass\_var\_complete\_3d()}{pass\_var\_complete\_3d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::pass\+\_\+var\+\_\+complete\+::pass\+\_\+var\+\_\+complete\+\_\+3d (\begin{DoxyParamCaption}\item[{integer, intent(in)}]{id\+\_\+update,  }\item[{real, dimension(\+:,\+:,\+:), intent(inout)}]{array,  }\item[{type(\mbox{\hyperlink{structmom__domains_1_1mom__domain__type}{mom\+\_\+domain\+\_\+type}}), intent(inout)}]{M\+O\+M\+\_\+dom,  }\item[{integer, intent(in), optional}]{sideflag,  }\item[{integer, intent(in), optional}]{position,  }\item[{integer, intent(in), optional}]{halo,  }\item[{integer, intent(in), optional}]{clock }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



pass\+\_\+var\+\_\+complete\+\_\+3d completes a halo update for a three-\/dimensional array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em id\+\_\+update} & The integer id of this update which has been returned from a previous call to \mbox{\hyperlink{interfacemom__domains_1_1pass__var__start}{pass\+\_\+var\+\_\+start}}. \\
\hline
\mbox{\texttt{ in,out}}  & {\em array} & The array 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 sideflag} & 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. 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 sideflag is omitted. \\
\hline
\mbox{\texttt{ in}}  & {\em position} & An optional argument indicating the position. This is C\+E\+N\+T\+ER by default and is often C\+O\+R\+N\+ER, but could also be E\+A\+S\+T\+\_\+\+F\+A\+CE or N\+O\+R\+T\+H\+\_\+\+F\+A\+CE. \\
\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 441 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{443   \textcolor{keywordtype}{integer},                \textcolor{keywordtype}{intent(in)}    :: id\_update\textcolor{comment}{ !< The integer id of this update which has}}
\DoxyCodeLine{444 \textcolor{comment}{                                                    !! been returned from a previous call to}}
\DoxyCodeLine{445 \textcolor{comment}{                                                    !! pass\_var\_start.}}
\DoxyCodeLine{446 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: array\textcolor{comment}{    !< The array which is having its halos points}}
\DoxyCodeLine{447 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{448   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{449 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{450 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{451   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: sideflag\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{452 \textcolor{comment}{      !! directions the data should be sent. It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{453 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH.  For example, TO\_EAST sends the data to the processor to the east,}}
\DoxyCodeLine{454 \textcolor{comment}{      !! so the halos on the western side are filled.  TO\_ALL is the default if sideflag is omitted.}}
\DoxyCodeLine{455   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: position\textcolor{comment}{ !< An optional argument indicating the position.}}
\DoxyCodeLine{456 \textcolor{comment}{                                                    !! This is CENTER by default and is often CORNER,}}
\DoxyCodeLine{457 \textcolor{comment}{                                                    !! but could also be EAST\_FACE or NORTH\_FACE.}}
\DoxyCodeLine{458   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update -\/ the full}}
\DoxyCodeLine{459 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{460   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{461 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{462 }
\DoxyCodeLine{463   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{464 }
\DoxyCodeLine{465   \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{466 }
\DoxyCodeLine{467   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{468   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(sideflag)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (sideflag > 0) dirflag = sideflag ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{469 }
\DoxyCodeLine{470   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{471     \textcolor{keyword}{call }mpp\_complete\_update\_domains(id\_update, array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{472                             flags=dirflag, position=position, \&}
\DoxyCodeLine{473                             whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)}
\DoxyCodeLine{474   \textcolor{keywordflow}{else}}
\DoxyCodeLine{475     \textcolor{keyword}{call }mpp\_complete\_update\_domains(id\_update, array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{476                                      flags=dirflag, position=position)}
\DoxyCodeLine{477 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{478 }
\DoxyCodeLine{479   \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{480 }

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