\doxysection{vcom.\+h File Reference}
\label{a00008}\index{vcom.h@{vcom.h}}


Class \doxyref{Vcom}{p.}{a00048_ga820c01ebd185aba8388ae8ed1147bd28}\+: virtual (currently just MPI) communications layer.  


{\ttfamily \#include $<$maloc/maloc\+\_\+base.\+h$>$}\newline
{\ttfamily \#include $<$maloc/vsys.\+h$>$}\newline
Include dependency graph for vcom.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{a00009}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=95pt]{a00010}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ s\+Vcom}
\begin{DoxyCompactList}\small\item\em Contains public data members for \doxyref{Vcom}{p.}{a00048_ga820c01ebd185aba8388ae8ed1147bd28} class. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ VCOM\+\_\+\+MPI\+\_\+\+TAG}~111
\begin{DoxyCompactList}\small\item\em A base value for MPI tags. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \textbf{ s\+Vcom} \textbf{ Vcom}
\begin{DoxyCompactList}\small\item\em Declaration of the \doxyref{Vcom}{p.}{a00048_ga820c01ebd185aba8388ae8ed1147bd28} class as the \doxyref{Vcom}{p.}{a00048_ga820c01ebd185aba8388ae8ed1147bd28} structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \textbf{ Vcom\+\_\+init} (int $\ast$argc, char $\ast$$\ast$$\ast$argv)
\begin{DoxyCompactList}\small\item\em The \doxyref{Vmp}{p.}{a00049_ga1592e34b3071e22d7fcd50f1679d6ad3} initializer. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+finalize} (void)
\begin{DoxyCompactList}\small\item\em The \doxyref{Vmp}{p.}{a00049_ga1592e34b3071e22d7fcd50f1679d6ad3} finalizer. \end{DoxyCompactList}\item 
\textbf{ Vcom} $\ast$ \textbf{ Vcom\+\_\+ctor} (int commtype)
\begin{DoxyCompactList}\small\item\em Construct the communications object. This routine sets up data members of class and initializes MPI. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+ctor2} (\textbf{ Vcom} $\ast$thee, int commtype)
\begin{DoxyCompactList}\small\item\em Construct the communications object. This routine sets up data members of class and initializes MPI. This is broken into two parts to be callable from FORTRAN. \end{DoxyCompactList}\item 
void \textbf{ Vcom\+\_\+dtor} (\textbf{ Vcom} $\ast$$\ast$thee)
\begin{DoxyCompactList}\small\item\em Destroy the communications object. \end{DoxyCompactList}\item 
void \textbf{ Vcom\+\_\+dtor2} (\textbf{ Vcom} $\ast$thee)
\begin{DoxyCompactList}\small\item\em Destroy the communications object. This is broken into two parts to be callable from FORTRAN. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+send} (\textbf{ Vcom} $\ast$thee, int des, void $\ast$buf, int len, int type, int block)
\begin{DoxyCompactList}\small\item\em Send a buffer. Returns 1 on success. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+recv} (\textbf{ Vcom} $\ast$thee, int src, void $\ast$buf, int len, int type, int block)
\begin{DoxyCompactList}\small\item\em Receive a (character) buffer. ~\newline
 The blocking flag is present, but not used. All receives are assumed to be blocking. A non-\/blocking receive would be {\itshape very} ugly to implement (signals or something?). \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+get\+Count} (\textbf{ Vcom} $\ast$thee, int src, int $\ast$length, int type)
\begin{DoxyCompactList}\small\item\em Perform a blocking probe to get the length (in number of items of specified type) of an incoming message and place it in the ~\newline
 argument \`{}\`{}length"{}. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+reduce} (\textbf{ Vcom} $\ast$thee, void $\ast$sendbuf, void $\ast$recvbuf, int length, int type, int op)
\begin{DoxyCompactList}\small\item\em Perform a reduction of the data across all processors. This is equivalent (and in the case of MPI is identical to) MPI\+\_\+\+Allreduce. Basically, the specified operations are appleed to each member of ~\newline
 the sendbuf across all processors and the results are written to recvbuf. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+size} (\textbf{ Vcom} $\ast$thee)
\begin{DoxyCompactList}\small\item\em Get the number of PEs in communicator. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+resize} (\textbf{ Vcom} $\ast$thee, int newsize)
\begin{DoxyCompactList}\small\item\em Resize (shrink) the communications group to include only newsize number of processors. ~\newline
 Obsolete processes are given rank of -\/1 and size of 0. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+rank} (\textbf{ Vcom} $\ast$thee)
\begin{DoxyCompactList}\small\item\em Get the ID of the local PE. \end{DoxyCompactList}\item 
int \textbf{ Vcom\+\_\+barr} (\textbf{ Vcom} $\ast$thee)
\begin{DoxyCompactList}\small\item\em Synchronization barrier. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Class \doxyref{Vcom}{p.}{a00048_ga820c01ebd185aba8388ae8ed1147bd28}\+: virtual (currently just MPI) communications layer. 

\begin{DoxyAuthor}{Authors}
Nathan Baker and Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
None 
\end{DoxyNote}
\begin{DoxyVersion}{Version}

\end{DoxyVersion}
\begin{DoxyParagraph}{Id}
\doxyref{vcom.\+h}{p.}{a00008},v 1.\+38 2010/08/12 05\+:40\+:23 fetk Exp 
\end{DoxyParagraph}


\begin{DoxyAttention}{Attention}
\begin{DoxyVerb}*
* MALOC = < Minimal Abstraction Layer for Object-oriented C >
* Copyright (C) 1994-- Michael Holst
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* 
*  \end{DoxyVerb}
 
\end{DoxyAttention}


\label{doc-define-members}
\doxysubsection{Macro Definition Documentation}
\index{vcom.h@{vcom.h}!VCOM\_MPI\_TAG@{VCOM\_MPI\_TAG}}
\index{VCOM\_MPI\_TAG@{VCOM\_MPI\_TAG}!vcom.h@{vcom.h}}
\doxysubsubsection{VCOM\_MPI\_TAG}
{\footnotesize\ttfamily \label{a00008_a81c395f6f83ae48ed287066004e4795d} 
\#define VCOM\+\_\+\+MPI\+\_\+\+TAG~111}



A base value for MPI tags. 

