\hypertarget{interfacemom__domains_1_1create__group__pass}{}\doxysection{mom\+\_\+domains\+::create\+\_\+group\+\_\+pass Interface Reference}
\label{interfacemom__domains_1_1create__group__pass}\index{mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}}


\doxysubsection{Detailed Description}
Set up a group of halo updates. 

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

\doxysubsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1create__group__pass_a7a1754edf64e1df1cd55acab464e8c70}{create\+\_\+var\+\_\+group\+\_\+pass\+\_\+2d}} (group, array, M\+O\+M\+\_\+dom, sideflag, position, halo, clock)
\begin{DoxyCompactList}\small\item\em create\+\_\+var\+\_\+group\+\_\+pass\+\_\+2d sets up a group of two-\/dimensional array halo updates. \end{DoxyCompactList}\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1create__group__pass_a1cbe954fd42574d8cdccf86dec0d2631}{create\+\_\+var\+\_\+group\+\_\+pass\+\_\+3d}} (group, array, M\+O\+M\+\_\+dom, sideflag, position, halo, clock)
\begin{DoxyCompactList}\small\item\em create\+\_\+var\+\_\+group\+\_\+pass\+\_\+3d sets up a group of three-\/dimensional array halo updates. \end{DoxyCompactList}\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1create__group__pass_a3827001c378326b1d27246b7f349ce9d}{create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+2d}} (group, u\+\_\+cmpt, v\+\_\+cmpt, M\+O\+M\+\_\+dom, direction, stagger, halo, clock)
\begin{DoxyCompactList}\small\item\em create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+2d sets up a group of two-\/dimensional vector halo updates. \end{DoxyCompactList}\item 
subroutine \mbox{\hyperlink{interfacemom__domains_1_1create__group__pass_a2ee9574efb79ec2e941e43e3602016a7}{create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+3d}} (group, u\+\_\+cmpt, v\+\_\+cmpt, M\+O\+M\+\_\+dom, direction, stagger, halo, clock)
\begin{DoxyCompactList}\small\item\em create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+3d sets up a group of three-\/dimensional vector halo updates. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Set up a group of halo updates. 

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



\doxysubsection{Functions and subroutines}
\mbox{\Hypertarget{interfacemom__domains_1_1create__group__pass_a7a1754edf64e1df1cd55acab464e8c70}\label{interfacemom__domains_1_1create__group__pass_a7a1754edf64e1df1cd55acab464e8c70}} 
\index{mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}!create\_var\_group\_pass\_2d@{create\_var\_group\_pass\_2d}}
\index{create\_var\_group\_pass\_2d@{create\_var\_group\_pass\_2d}!mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}}
\doxysubsubsection{\texorpdfstring{create\_var\_group\_pass\_2d()}{create\_var\_group\_pass\_2d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::create\+\_\+group\+\_\+pass\+::create\+\_\+var\+\_\+group\+\_\+pass\+\_\+2d (\begin{DoxyParamCaption}\item[{type(group\+\_\+pass\+\_\+type), intent(inout)}]{group,  }\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]}}



create\+\_\+var\+\_\+group\+\_\+pass\+\_\+2d sets up a group of two-\/dimensional array halo updates. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em group} & The data type that store information for group update. This data will be used in do\+\_\+group\+\_\+pass. \\
\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 911 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{911   \textcolor{keywordtype}{type}(group\_pass\_type),  \textcolor{keywordtype}{intent(inout)} :: group\textcolor{comment}{    !< The data type that store information for}}
\DoxyCodeLine{912 \textcolor{comment}{                                                    !! group update. This data will be used in}}
\DoxyCodeLine{913 \textcolor{comment}{                                                    !! do\_group\_pass.}}
\DoxyCodeLine{914 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: array\textcolor{comment}{    !< The array which is having its halos points}}
\DoxyCodeLine{915 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{916   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{917 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{918 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{919   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: sideflag\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{920 \textcolor{comment}{      !! directions the data should be sent. It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{921 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH.  For example, TO\_EAST sends the data to the processor to the east,}}
\DoxyCodeLine{922 \textcolor{comment}{      !! so the halos on the western side are filled.  TO\_ALL is the default if sideflag is omitted.}}
\DoxyCodeLine{923   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: position\textcolor{comment}{ !< An optional argument indicating the position.}}
\DoxyCodeLine{924 \textcolor{comment}{                                                    !! This is CENTER by default and is often CORNER,}}
\DoxyCodeLine{925 \textcolor{comment}{                                                    !! but could also be EAST\_FACE or NORTH\_FACE.}}
\DoxyCodeLine{926   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update -\/ the full}}
\DoxyCodeLine{927 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{928   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{929 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{930   \textcolor{comment}{! Local variables}}
\DoxyCodeLine{931   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{932 }
\DoxyCodeLine{933   \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{934 }
\DoxyCodeLine{935   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{936   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(sideflag)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (sideflag > 0) dirflag = sideflag ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{937 }
\DoxyCodeLine{938   \textcolor{keywordflow}{if} (mpp\_group\_update\_initialized(group)) \textcolor{keywordflow}{then}}
\DoxyCodeLine{939     \textcolor{keyword}{call }mpp\_reset\_group\_update\_field(group,array)}
\DoxyCodeLine{940   \textcolor{keywordflow}{elseif} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{941     \textcolor{keyword}{call }mpp\_create\_group\_update(group, array, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{942                                  position=position, whalo=halo, ehalo=halo, \&}
\DoxyCodeLine{943                                  shalo=halo, nhalo=halo)}
\DoxyCodeLine{944   \textcolor{keywordflow}{else}}
\DoxyCodeLine{945     \textcolor{keyword}{call }mpp\_create\_group\_update(group, array, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{946                                  position=position)}
\DoxyCodeLine{947 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{948 }
\DoxyCodeLine{949   \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{950 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1create__group__pass_a1cbe954fd42574d8cdccf86dec0d2631}\label{interfacemom__domains_1_1create__group__pass_a1cbe954fd42574d8cdccf86dec0d2631}} 
\index{mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}!create\_var\_group\_pass\_3d@{create\_var\_group\_pass\_3d}}
\index{create\_var\_group\_pass\_3d@{create\_var\_group\_pass\_3d}!mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}}
\doxysubsubsection{\texorpdfstring{create\_var\_group\_pass\_3d()}{create\_var\_group\_pass\_3d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::create\+\_\+group\+\_\+pass\+::create\+\_\+var\+\_\+group\+\_\+pass\+\_\+3d (\begin{DoxyParamCaption}\item[{type(group\+\_\+pass\+\_\+type), intent(inout)}]{group,  }\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]}}



create\+\_\+var\+\_\+group\+\_\+pass\+\_\+3d sets up a group of three-\/dimensional array halo updates. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em group} & The data type that store information for group update. This data will be used in do\+\_\+group\+\_\+pass. \\
\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 956 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{956   \textcolor{keywordtype}{type}(group\_pass\_type),  \textcolor{keywordtype}{intent(inout)} :: group\textcolor{comment}{    !< The data type that store information for}}
\DoxyCodeLine{957 \textcolor{comment}{                                                    !! group update. This data will be used in}}
\DoxyCodeLine{958 \textcolor{comment}{                                                    !! do\_group\_pass.}}
\DoxyCodeLine{959 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: array\textcolor{comment}{    !< The array which is having its halos points}}
\DoxyCodeLine{960 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{961   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{962 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{963 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{964   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: sideflag\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{965 \textcolor{comment}{      !! directions the data should be sent. It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{966 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH.  For example, TO\_EAST sends the data to the processor to the east,}}
\DoxyCodeLine{967 \textcolor{comment}{      !! so the halos on the western side are filled.  TO\_ALL is the default if sideflag is omitted.}}
\DoxyCodeLine{968   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: position\textcolor{comment}{ !< An optional argument indicating the position.}}
\DoxyCodeLine{969 \textcolor{comment}{                                                    !! This is CENTER by default and is often CORNER,}}
\DoxyCodeLine{970 \textcolor{comment}{                                                    !! but could also be EAST\_FACE or NORTH\_FACE.}}
\DoxyCodeLine{971   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update -\/ the full}}
\DoxyCodeLine{972 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{973   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{974 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{975   \textcolor{comment}{! Local variables}}
\DoxyCodeLine{976   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{977 }
\DoxyCodeLine{978   \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{979 }
\DoxyCodeLine{980   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{981   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(sideflag)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (sideflag > 0) dirflag = sideflag ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{982 }
\DoxyCodeLine{983   \textcolor{keywordflow}{if} (mpp\_group\_update\_initialized(group)) \textcolor{keywordflow}{then}}
\DoxyCodeLine{984     \textcolor{keyword}{call }mpp\_reset\_group\_update\_field(group,array)}
\DoxyCodeLine{985   \textcolor{keywordflow}{elseif} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{986     \textcolor{keyword}{call }mpp\_create\_group\_update(group, array, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{987                                  position=position, whalo=halo, ehalo=halo, \&}
\DoxyCodeLine{988                                  shalo=halo, nhalo=halo)}
\DoxyCodeLine{989   \textcolor{keywordflow}{else}}
\DoxyCodeLine{990     \textcolor{keyword}{call }mpp\_create\_group\_update(group, array, mom\_dom\%mpp\_domain, flags=dirflag, \&}
\DoxyCodeLine{991                                  position=position)}
\DoxyCodeLine{992 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{993 }
\DoxyCodeLine{994   \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{995 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1create__group__pass_a3827001c378326b1d27246b7f349ce9d}\label{interfacemom__domains_1_1create__group__pass_a3827001c378326b1d27246b7f349ce9d}} 
\index{mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}!create\_vector\_group\_pass\_2d@{create\_vector\_group\_pass\_2d}}
\index{create\_vector\_group\_pass\_2d@{create\_vector\_group\_pass\_2d}!mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}}
\doxysubsubsection{\texorpdfstring{create\_vector\_group\_pass\_2d()}{create\_vector\_group\_pass\_2d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::create\+\_\+group\+\_\+pass\+::create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+2d (\begin{DoxyParamCaption}\item[{type(group\+\_\+pass\+\_\+type), intent(inout)}]{group,  }\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[{integer, intent(in), optional}]{halo,  }\item[{integer, intent(in), optional}]{clock }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+2d sets up a group of two-\/dimensional vector halo updates. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em group} & The data type that store information for group update. This data will be used in do\+\_\+group\+\_\+pass. \\
\hline
\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 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 1001 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{1001   \textcolor{keywordtype}{type}(group\_pass\_type),  \textcolor{keywordtype}{intent(inout)} :: group\textcolor{comment}{    !< The data type that store information for}}
\DoxyCodeLine{1002 \textcolor{comment}{                                                    !! group update. This data will be used in}}
\DoxyCodeLine{1003 \textcolor{comment}{                                                    !! do\_group\_pass.}}
\DoxyCodeLine{1004 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: u\_cmpt\textcolor{comment}{   !< The nominal zonal (u) component of the vector}}
\DoxyCodeLine{1005 \textcolor{comment}{                                                    !! pair which is having its halos points}}
\DoxyCodeLine{1006 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{1007 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)},   \textcolor{keywordtype}{intent(inout)} :: v\_cmpt\textcolor{comment}{   !< The nominal meridional (v) component of the}}
\DoxyCodeLine{1008 \textcolor{comment}{                                                    !! vector pair which is having its halos points}}
\DoxyCodeLine{1009 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{1010 }
\DoxyCodeLine{1011   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{1012 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{1013 \textcolor{comment}{                                                    !! sent}}
\DoxyCodeLine{1014   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: direction\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{1015 \textcolor{comment}{      !! directions the data should be sent.  It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{1016 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH, possibly plus SCALAR\_PAIR if these are paired non-\/directional}}
\DoxyCodeLine{1017 \textcolor{comment}{      !! scalars discretized at the typical vector component locations.  For example, TO\_EAST sends}}
\DoxyCodeLine{1018 \textcolor{comment}{      !! the data to the processor to the east, so the halos on the western side are filled. TO\_ALL}}
\DoxyCodeLine{1019 \textcolor{comment}{      !! is the default if omitted.}}
\DoxyCodeLine{1020   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: stagger\textcolor{comment}{  !< An optional flag, which may be one of A\_GRID,}}
\DoxyCodeLine{1021 \textcolor{comment}{                     !! BGRID\_NE, or CGRID\_NE, indicating where the two components of the vector are}}
\DoxyCodeLine{1022 \textcolor{comment}{                     !! discretized. Omitting stagger is the same as setting it to CGRID\_NE.}}
\DoxyCodeLine{1023   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update -\/ the full}}
\DoxyCodeLine{1024 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{1025   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{1026 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{1027   \textcolor{comment}{! Local variables}}
\DoxyCodeLine{1028   \textcolor{keywordtype}{integer} :: stagger\_local}
\DoxyCodeLine{1029   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{1030 }
\DoxyCodeLine{1031   \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{1032 }
\DoxyCodeLine{1033   stagger\_local = cgrid\_ne \textcolor{comment}{! Default value for type of grid}}
\DoxyCodeLine{1034   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(stagger)) stagger\_local = stagger}
\DoxyCodeLine{1035 }
\DoxyCodeLine{1036   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{1037   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(direction)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (direction > 0) dirflag = direction ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{1038 }
\DoxyCodeLine{1039   \textcolor{keywordflow}{if} (mpp\_group\_update\_initialized(group)) \textcolor{keywordflow}{then}}
\DoxyCodeLine{1040     \textcolor{keyword}{call }mpp\_reset\_group\_update\_field(group,u\_cmpt, v\_cmpt)}
\DoxyCodeLine{1041   \textcolor{keywordflow}{elseif} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{1042     \textcolor{keyword}{call }mpp\_create\_group\_update(group, u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{1043             flags=dirflag, gridtype=stagger\_local, whalo=halo, ehalo=halo, \&}
\DoxyCodeLine{1044             shalo=halo, nhalo=halo)}
\DoxyCodeLine{1045   \textcolor{keywordflow}{else}}
\DoxyCodeLine{1046     \textcolor{keyword}{call }mpp\_create\_group\_update(group, u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{1047             flags=dirflag, gridtype=stagger\_local)}
\DoxyCodeLine{1048 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{1049 }
\DoxyCodeLine{1050   \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{1051 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__domains_1_1create__group__pass_a2ee9574efb79ec2e941e43e3602016a7}\label{interfacemom__domains_1_1create__group__pass_a2ee9574efb79ec2e941e43e3602016a7}} 
\index{mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}!create\_vector\_group\_pass\_3d@{create\_vector\_group\_pass\_3d}}
\index{create\_vector\_group\_pass\_3d@{create\_vector\_group\_pass\_3d}!mom\_domains::create\_group\_pass@{mom\_domains::create\_group\_pass}}
\doxysubsubsection{\texorpdfstring{create\_vector\_group\_pass\_3d()}{create\_vector\_group\_pass\_3d()}}
{\footnotesize\ttfamily subroutine mom\+\_\+domains\+::create\+\_\+group\+\_\+pass\+::create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+3d (\begin{DoxyParamCaption}\item[{type(group\+\_\+pass\+\_\+type), intent(inout)}]{group,  }\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[{integer, intent(in), optional}]{halo,  }\item[{integer, intent(in), optional}]{clock }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



create\+\_\+vector\+\_\+group\+\_\+pass\+\_\+3d sets up a group of three-\/dimensional vector halo updates. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em group} & The data type that store information for group update. This data will be used in do\+\_\+group\+\_\+pass. \\
\hline
\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 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 1057 of file M\+O\+M\+\_\+domains.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{1057   \textcolor{keywordtype}{type}(group\_pass\_type),  \textcolor{keywordtype}{intent(inout)} :: group\textcolor{comment}{    !< The data type that store information for}}
\DoxyCodeLine{1058 \textcolor{comment}{                                                    !! group update. This data will be used in}}
\DoxyCodeLine{1059 \textcolor{comment}{                                                    !! do\_group\_pass.}}
\DoxyCodeLine{1060 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: u\_cmpt\textcolor{comment}{   !< The nominal zonal (u) component of the vector}}
\DoxyCodeLine{1061 \textcolor{comment}{                                                    !! pair which is having its halos points}}
\DoxyCodeLine{1062 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{1063 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(inout)} :: v\_cmpt\textcolor{comment}{   !< The nominal meridional (v) component of the}}
\DoxyCodeLine{1064 \textcolor{comment}{                                                    !! vector pair which is having its halos points}}
\DoxyCodeLine{1065 \textcolor{comment}{                                                    !! exchanged.}}
\DoxyCodeLine{1066 }
\DoxyCodeLine{1067   \textcolor{keywordtype}{type}(MOM\_domain\_type),  \textcolor{keywordtype}{intent(inout)} :: MOM\_dom\textcolor{comment}{  !< The MOM\_domain\_type containing the mpp\_domain}}
\DoxyCodeLine{1068 \textcolor{comment}{                                                    !! needed to determine where data should be}}
\DoxyCodeLine{1069 \textcolor{comment}{                                                    !! sent.}}
\DoxyCodeLine{1070   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: direction\textcolor{comment}{ !< An optional integer indicating which}}
\DoxyCodeLine{1071 \textcolor{comment}{      !! directions the data should be sent.  It is TO\_ALL or the sum of any of TO\_EAST, TO\_WEST,}}
\DoxyCodeLine{1072 \textcolor{comment}{      !! TO\_NORTH, and TO\_SOUTH, possibly plus SCALAR\_PAIR if these are paired non-\/directional}}
\DoxyCodeLine{1073 \textcolor{comment}{      !! scalars discretized at the typical vector component locations.  For example, TO\_EAST sends}}
\DoxyCodeLine{1074 \textcolor{comment}{      !! the data to the processor to the east, so the halos on the western side are filled. TO\_ALL}}
\DoxyCodeLine{1075 \textcolor{comment}{      !! is the default if omitted.}}
\DoxyCodeLine{1076   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: stagger\textcolor{comment}{  !< An optional flag, which may be one of A\_GRID,}}
\DoxyCodeLine{1077 \textcolor{comment}{                     !! BGRID\_NE, or CGRID\_NE, indicating where the two components of the vector are}}
\DoxyCodeLine{1078 \textcolor{comment}{                     !! discretized. Omitting stagger is the same as setting it to CGRID\_NE.}}
\DoxyCodeLine{1079   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: halo\textcolor{comment}{     !< The size of the halo to update -\/ the full}}
\DoxyCodeLine{1080 \textcolor{comment}{                                                    !! halo by default.}}
\DoxyCodeLine{1081   \textcolor{keywordtype}{integer},      \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)}    :: clock\textcolor{comment}{    !< The handle for a cpu time clock that should be}}
\DoxyCodeLine{1082 \textcolor{comment}{                                                    !! started then stopped to time this routine.}}
\DoxyCodeLine{1083 }
\DoxyCodeLine{1084   \textcolor{comment}{! Local variables}}
\DoxyCodeLine{1085   \textcolor{keywordtype}{integer} :: stagger\_local}
\DoxyCodeLine{1086   \textcolor{keywordtype}{integer} :: dirflag}
\DoxyCodeLine{1087 }
\DoxyCodeLine{1088   \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{1089 }
\DoxyCodeLine{1090   stagger\_local = cgrid\_ne \textcolor{comment}{! Default value for type of grid}}
\DoxyCodeLine{1091   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(stagger)) stagger\_local = stagger}
\DoxyCodeLine{1092 }
\DoxyCodeLine{1093   dirflag = to\_all \textcolor{comment}{! 60}}
\DoxyCodeLine{1094   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(direction)) \textcolor{keywordflow}{then} ; \textcolor{keywordflow}{if} (direction > 0) dirflag = direction ;\textcolor{keywordflow}{ endif}}
\DoxyCodeLine{1095 }
\DoxyCodeLine{1096   \textcolor{keywordflow}{if} (mpp\_group\_update\_initialized(group)) \textcolor{keywordflow}{then}}
\DoxyCodeLine{1097     \textcolor{keyword}{call }mpp\_reset\_group\_update\_field(group,u\_cmpt, v\_cmpt)}
\DoxyCodeLine{1098   \textcolor{keywordflow}{elseif} (\textcolor{keyword}{present}(halo) .and. mom\_dom\%thin\_halo\_updates) \textcolor{keywordflow}{then}}
\DoxyCodeLine{1099     \textcolor{keyword}{call }mpp\_create\_group\_update(group, u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{1100             flags=dirflag, gridtype=stagger\_local, whalo=halo, ehalo=halo, \&}
\DoxyCodeLine{1101             shalo=halo, nhalo=halo)}
\DoxyCodeLine{1102   \textcolor{keywordflow}{else}}
\DoxyCodeLine{1103     \textcolor{keyword}{call }mpp\_create\_group\_update(group, u\_cmpt, v\_cmpt, mom\_dom\%mpp\_domain, \&}
\DoxyCodeLine{1104             flags=dirflag, gridtype=stagger\_local)}
\DoxyCodeLine{1105 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{1106 }
\DoxyCodeLine{1107   \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{1108 }

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