\doxysection{Vmpi class}
\label{a00050}\index{Vmpi class@{Vmpi class}}


A Virtual MPI communication lawyer object.  


\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item 
file \textbf{ vmpi.\+h}
\begin{DoxyCompactList}\small\item\em Class Vmpi\+: a Virtual MPI communication layer object. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ s\+Vmpi}
\begin{DoxyCompactList}\small\item\em Class Vmpi\+: Definition. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \textbf{ s\+Vmpi} \textbf{ Vmpi}
\begin{DoxyCompactList}\small\item\em Declaration of the Vmpi class as the Vmpi structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \textbf{ Vmpi\+\_\+init} (int $\ast$argc, char $\ast$$\ast$$\ast$argv)
\begin{DoxyCompactList}\small\item\em The Vmp initializer. \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+finalize} (void)
\begin{DoxyCompactList}\small\item\em The Vmp finalizer. \end{DoxyCompactList}\item 
\textbf{ Vmpi} $\ast$ \textbf{ Vmpi\+\_\+ctor} (void)
\begin{DoxyCompactList}\small\item\em The Vmpi constructor. \end{DoxyCompactList}\item 
void \textbf{ Vmpi\+\_\+dtor} (\textbf{ Vmpi} $\ast$$\ast$thee)
\begin{DoxyCompactList}\small\item\em The Vmpi destructor. \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+rank} (\textbf{ Vmpi} $\ast$thee)
\begin{DoxyCompactList}\small\item\em Return my processor ID. ~\newline
 \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+size} (\textbf{ Vmpi} $\ast$thee)
\begin{DoxyCompactList}\small\item\em Return the number of processors involved. \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+barr} (\textbf{ Vmpi} $\ast$thee)
\begin{DoxyCompactList}\small\item\em An MPI barrier. ~\newline
 \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+send} (\textbf{ Vmpi} $\ast$thee, int des, char $\ast$buf, int bufsize)
\begin{DoxyCompactList}\small\item\em An MPI blocking send. \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+recv} (\textbf{ Vmpi} $\ast$thee, int src, char $\ast$buf, int bufsize)
\begin{DoxyCompactList}\small\item\em An MPI blocking receive. \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+bcast} (\textbf{ Vmpi} $\ast$thee, char $\ast$buf, int bufsize)
\begin{DoxyCompactList}\small\item\em An MPI broadcast. \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+reduce} (\textbf{ Vmpi} $\ast$thee, char $\ast$sbuf, char $\ast$rbuf, int bufsize)
\begin{DoxyCompactList}\small\item\em An MPI reduce. ~\newline
 \end{DoxyCompactList}\item 
int \textbf{ Vmpi\+\_\+isend} (\textbf{ Vmpi} $\ast$thee, int des, char $\ast$buf, int bufsize)
\begin{DoxyCompactList}\small\item\em An MPI non-\/blocking send. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
A Virtual MPI communication lawyer object. 



\doxysubsection{Typedef Documentation}
\mbox{\label{a00050_ga6a87d5fe4d6c92b97d06bff5f15711f0}} 
\index{Vmpi class@{Vmpi class}!Vmpi@{Vmpi}}
\index{Vmpi@{Vmpi}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi}
{\footnotesize\ttfamily typedef struct \textbf{ s\+Vmpi} \textbf{ Vmpi}}



Declaration of the Vmpi class as the Vmpi structure. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}


\doxysubsection{Function Documentation}
\mbox{\label{a00050_gaf072f8a48db66219158b3da2f5a63f5a}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_barr@{Vmpi\_barr}}
\index{Vmpi\_barr@{Vmpi\_barr}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_barr()}
{\footnotesize\ttfamily int Vmpi\+\_\+barr (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee }\end{DoxyParamCaption})}



An MPI barrier. ~\newline
 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_gaf11988f9639cc73c40a30b3b57ebcf1e}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_bcast@{Vmpi\_bcast}}
\index{Vmpi\_bcast@{Vmpi\_bcast}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_bcast()}
{\footnotesize\ttfamily int Vmpi\+\_\+bcast (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee,  }\item[{char $\ast$}]{buf,  }\item[{int}]{bufsize }\end{DoxyParamCaption})}



An MPI broadcast. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
{\em buf} & buffer containing message \\
\hline
{\em bufsize} & number of items (of declared type) in buffer \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_gaf052848ba47edf571950eaf8f35954b4}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_ctor@{Vmpi\_ctor}}
\index{Vmpi\_ctor@{Vmpi\_ctor}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_ctor()}
{\footnotesize\ttfamily \textbf{ Vmpi} $\ast$ Vmpi\+\_\+ctor (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



The Vmpi constructor. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}
\mbox{\label{a00050_gad0fedbef42476f6dfed02e05851f6b55}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_dtor@{Vmpi\_dtor}}
\index{Vmpi\_dtor@{Vmpi\_dtor}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_dtor()}
{\footnotesize\ttfamily void Vmpi\+\_\+dtor (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$$\ast$}]{thee }\end{DoxyParamCaption})}



The Vmpi destructor. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
None 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to pointer of the Vmpi object \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_ga0e8001dbe7eb51576737db1c9909e6ce}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_finalize@{Vmpi\_finalize}}
\index{Vmpi\_finalize@{Vmpi\_finalize}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_finalize()}
{\footnotesize\ttfamily int Vmpi\+\_\+finalize (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



The Vmp finalizer. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}
\mbox{\label{a00050_ga034f0a4ea158fe5f010ab20bf25e3d1e}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_init@{Vmpi\_init}}
\index{Vmpi\_init@{Vmpi\_init}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_init()}
{\footnotesize\ttfamily int Vmpi\+\_\+init (\begin{DoxyParamCaption}\item[{int $\ast$}]{argc,  }\item[{char $\ast$$\ast$$\ast$}]{argv }\end{DoxyParamCaption})}



The Vmp initializer. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em argc} & number of the command line arguments \\
\hline
{\em argv} & the command line arguments \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_gab22153f0b251914aae25818e5690aa4f}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_isend@{Vmpi\_isend}}
\index{Vmpi\_isend@{Vmpi\_isend}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_isend()}
{\footnotesize\ttfamily int Vmpi\+\_\+isend (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee,  }\item[{int}]{des,  }\item[{char $\ast$}]{buf,  }\item[{int}]{bufsize }\end{DoxyParamCaption})}



An MPI non-\/blocking send. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
{\em des} & rank of receiving processor \\
\hline
{\em buf} & buffer containing message \\
\hline
{\em bufsize} & number of items (of declared type) in buffer \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_gaff5007f7cb2396d8891dc9ee6463f4f4}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_rank@{Vmpi\_rank}}
\index{Vmpi\_rank@{Vmpi\_rank}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_rank()}
{\footnotesize\ttfamily int Vmpi\+\_\+rank (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee }\end{DoxyParamCaption})}



Return my processor ID. ~\newline
 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_ga5f44607345e5bd8c4462b1f51fd1a082}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_recv@{Vmpi\_recv}}
\index{Vmpi\_recv@{Vmpi\_recv}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_recv()}
{\footnotesize\ttfamily int Vmpi\+\_\+recv (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee,  }\item[{int}]{src,  }\item[{char $\ast$}]{buf,  }\item[{int}]{bufsize }\end{DoxyParamCaption})}



An MPI blocking receive. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
{\em src} & rank of receiving processor \\
\hline
{\em buf} & buffer containing message \\
\hline
{\em bufsize} & number of items (of declared type) in buffer \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_ga166259c4289d447248ebc293f2b91495}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_reduce@{Vmpi\_reduce}}
\index{Vmpi\_reduce@{Vmpi\_reduce}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_reduce()}
{\footnotesize\ttfamily int Vmpi\+\_\+reduce (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee,  }\item[{char $\ast$}]{sbuf,  }\item[{char $\ast$}]{rbuf,  }\item[{int}]{bufsize }\end{DoxyParamCaption})}



An MPI reduce. ~\newline
 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
{\em sbuf} & address of send buffer (choice) \\
\hline
{\em rbuf} & address of receiving buffer (choice) \\
\hline
{\em bufsize} & number of items (of declared type) in buffer \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_gadf52faafdb5f8382159c01a37884c9ac}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_send@{Vmpi\_send}}
\index{Vmpi\_send@{Vmpi\_send}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_send()}
{\footnotesize\ttfamily int Vmpi\+\_\+send (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee,  }\item[{int}]{des,  }\item[{char $\ast$}]{buf,  }\item[{int}]{bufsize }\end{DoxyParamCaption})}



An MPI blocking send. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
{\em des} & rank of receiving processor \\
\hline
{\em buf} & buffer containing message \\
\hline
{\em bufsize} & number of items (of declared type) in buffer \\
\hline
\end{DoxyParams}
\mbox{\label{a00050_ga10a71e59ecd1a2ff4eb56332429a2ae7}} 
\index{Vmpi class@{Vmpi class}!Vmpi\_size@{Vmpi\_size}}
\index{Vmpi\_size@{Vmpi\_size}!Vmpi class@{Vmpi class}}
\doxysubsubsection{Vmpi\_size()}
{\footnotesize\ttfamily int Vmpi\+\_\+size (\begin{DoxyParamCaption}\item[{\textbf{ Vmpi} $\ast$}]{thee }\end{DoxyParamCaption})}



Return the number of processors involved. 

\begin{DoxyAuthor}{Author}
Michael Holst 
\end{DoxyAuthor}
\begin{DoxyNote}{Note}
Class Vmpi\+: Non-\/inlineable method (vmpi.\+c) 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
Success enumeration 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em thee} & Pointer to the Vmpi object \\
\hline
\end{DoxyParams}
