\hypertarget{interfacemom__domains_1_1pass__var__start}{}\section{mom\+\_\+domains\+::pass\+\_\+var\+\_\+start Interface Reference}
\label{interfacemom__domains_1_1pass__var__start}\index{mom\_domains::pass\_var\_start@{mom\_domains::pass\_var\_start}}


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

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

\subsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
integer function \mbox{\hyperlink{interfacemom__domains_1_1pass__var__start_ac7f069531c9cf43458e3d57d896e2989}{pass\+\_\+var\+\_\+start\+\_\+3d}} (array, M\+O\+M\+\_\+dom, sideflag, position, complete, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+var\+\_\+start\+\_\+3d starts a halo update for a three-\/dimensional array. \end{DoxyCompactList}\item 
integer function \mbox{\hyperlink{interfacemom__domains_1_1pass__var__start_a587d11b942b9f4992c0114e8b44e11cf}{pass\+\_\+var\+\_\+start\+\_\+2d}} (array, M\+O\+M\+\_\+dom, sideflag, position, complete, halo, clock)
\begin{DoxyCompactList}\small\item\em pass\+\_\+var\+\_\+start\+\_\+2d starts a halo update for a two-\/dimensional array. \end{DoxyCompactList}\end{DoxyCompactItemize}


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

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



\subsection{Functions and subroutines}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__var__start_a587d11b942b9f4992c0114e8b44e11cf}\label{interfacemom__domains_1_1pass__var__start_a587d11b942b9f4992c0114e8b44e11cf}} 
\index{mom\_domains::pass\_var\_start@{mom\_domains::pass\_var\_start}!pass\_var\_start\_2d@{pass\_var\_start\_2d}}
\index{pass\_var\_start\_2d@{pass\_var\_start\_2d}!mom\_domains::pass\_var\_start@{mom\_domains::pass\_var\_start}}
\subsubsection{\texorpdfstring{pass\_var\_start\_2d()}{pass\_var\_start\_2d()}}
{\footnotesize\ttfamily integer function mom\+\_\+domains\+::pass\+\_\+var\+\_\+start\+::pass\+\_\+var\+\_\+start\+\_\+2d (\begin{DoxyParamCaption}\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[{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\+\_\+var\+\_\+start\+\_\+2d starts a halo update for a two-\/dimensional array. 


\begin{DoxyParams}[1]{Parameters}
\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 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}
\begin{DoxyReturn}{Returns}
The integer index for this update. 
\end{DoxyReturn}


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


\begin{DoxyCode}{0}
\DoxyCodeLine{310 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: array\textcolor{comment}{    !< The array which is having its halos points}}
\DoxyCodeLine{311 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{312   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{313 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{314 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{315   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: sideflag\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{316 \textcolor{comment}{      !! directions the data should be sent. It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{317 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH.  For example, TO\_EAST sends the data to the processor to the east,}}
\DoxyCodeLine{318 \textcolor{comment}{      !! so the halos on the western side are filled.  TO\_ALL is the default if sideflag is omitted.}}
\DoxyCodeLine{319   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: position\textcolor{comment}{ !< An optional argument indicating the position.}}
\DoxyCodeLine{320 \textcolor{comment}{                                                    !! This is CENTER by default and is often CORNER,}}
\DoxyCodeLine{321 \textcolor{comment}{                                                    !! but could also be EAST\_FACE or NORTH\_FACE.}}
\DoxyCodeLine{322   \textcolor{keywordtype}{logical},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: complete\textcolor{comment}{ !< An optional argument indicating whether the}}
\DoxyCodeLine{323 \textcolor{comment}{                                                    !! halo updates should be completed before}}
\DoxyCodeLine{324 \textcolor{comment}{                                                    !! progress resumes.  Omitting complete is the}}
\DoxyCodeLine{325 \textcolor{comment}{                                                    !! same as setting complete to .true.}}
\DoxyCodeLine{326   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update - the full}}
\DoxyCodeLine{327 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{328   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{329 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{330   \textcolor{keywordtype}{integer}                               :: pass\_var\_start\_2d\textcolor{comment}{  !<The integer index for this update.}}
\DoxyCodeLine{331 }
\DoxyCodeLine{332   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{333 }
\DoxyCodeLine{334   \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{335 }
\DoxyCodeLine{336   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{337   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(sideflag)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (sideflag > 0) dirflag = sideflag ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{338 }
\DoxyCodeLine{339   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{340     pass\_var\_start\_2d = mpp\_start\_update\_domains(array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{341                             flags=dirflag, position=position, \&}
\DoxyCodeLine{342                             whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)}
\DoxyCodeLine{343   \textcolor{keywordflow}{else}}
\DoxyCodeLine{344     pass\_var\_start\_2d = mpp\_start\_update\_domains(array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{345                             flags=dirflag, position=position)}
\DoxyCodeLine{346 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{347 }
\DoxyCodeLine{348   \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{349 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1pass__var__start_ac7f069531c9cf43458e3d57d896e2989}\label{interfacemom__domains_1_1pass__var__start_ac7f069531c9cf43458e3d57d896e2989}} 
\index{mom\_domains::pass\_var\_start@{mom\_domains::pass\_var\_start}!pass\_var\_start\_3d@{pass\_var\_start\_3d}}
\index{pass\_var\_start\_3d@{pass\_var\_start\_3d}!mom\_domains::pass\_var\_start@{mom\_domains::pass\_var\_start}}
\subsubsection{\texorpdfstring{pass\_var\_start\_3d()}{pass\_var\_start\_3d()}}
{\footnotesize\ttfamily integer function mom\+\_\+domains\+::pass\+\_\+var\+\_\+start\+::pass\+\_\+var\+\_\+start\+\_\+3d (\begin{DoxyParamCaption}\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[{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\+\_\+var\+\_\+start\+\_\+3d starts a halo update for a three-\/dimensional array. 


\begin{DoxyParams}[1]{Parameters}
\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 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}
\begin{DoxyReturn}{Returns}
The integer index for this update. 
\end{DoxyReturn}


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


\begin{DoxyCode}{0}
\DoxyCodeLine{355 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: array\textcolor{comment}{    !< The array which is having its halos points}}
\DoxyCodeLine{356 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{357   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{358 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{359 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{360   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: sideflag\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{361 \textcolor{comment}{      !! directions the data should be sent. It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{362 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH.  For example, TO\_EAST sends the data to the processor to the east,}}
\DoxyCodeLine{363 \textcolor{comment}{      !! so the halos on the western side are filled.  TO\_ALL is the default if sideflag is omitted.}}
\DoxyCodeLine{364   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: position\textcolor{comment}{ !< An optional argument indicating the position.}}
\DoxyCodeLine{365 \textcolor{comment}{                                                    !! This is CENTER by default and is often CORNER,}}
\DoxyCodeLine{366 \textcolor{comment}{                                                    !! but could also be EAST\_FACE or NORTH\_FACE.}}
\DoxyCodeLine{367   \textcolor{keywordtype}{logical},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: complete\textcolor{comment}{ !< An optional argument indicating whether the}}
\DoxyCodeLine{368 \textcolor{comment}{                                                    !! halo updates should be completed before}}
\DoxyCodeLine{369 \textcolor{comment}{                                                    !! progress resumes.  Omitting complete is the}}
\DoxyCodeLine{370 \textcolor{comment}{                                                    !! same as setting complete to .true.}}
\DoxyCodeLine{371   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update - the full}}
\DoxyCodeLine{372 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{373   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{374 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{375   \textcolor{keywordtype}{integer}                               :: pass\_var\_start\_3d\textcolor{comment}{  !< The integer index for this update.}}
\DoxyCodeLine{376 }
\DoxyCodeLine{377   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{378 }
\DoxyCodeLine{379   \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{380 }
\DoxyCodeLine{381   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{382   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(sideflag)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (sideflag > 0) dirflag = sideflag ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{383 }
\DoxyCodeLine{384   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{385     pass\_var\_start\_3d = mpp\_start\_update\_domains(array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{386                             flags=dirflag, position=position, \&}
\DoxyCodeLine{387                             whalo=halo, ehalo=halo, shalo=halo, nhalo=halo)}
\DoxyCodeLine{388   \textcolor{keywordflow}{else}}
\DoxyCodeLine{389     pass\_var\_start\_3d = mpp\_start\_update\_domains(array, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{390                             flags=dirflag, position=position)}
\DoxyCodeLine{391 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{392 }
\DoxyCodeLine{393   \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{394 }

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