\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 \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 \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(\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{\tt in,out}  & {\em array} & The array 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 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{\tt 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{\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 310 of file M\+O\+M\+\_\+domains.\+F90.


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


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