\hypertarget{interfacemom__domains_1_1create__group__pass}{}\section{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}}


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

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

\subsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
subroutine \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 \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 \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 \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}


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

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



\subsection{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}}
\subsubsection{\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(\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{\tt in,out}  & {\em group} & The data type that store information for group update. This data will be used in do\+\_\+group\+\_\+pass.\\
\hline
\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 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}


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


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


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


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


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


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


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


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