\hypertarget{mdi_8c}{}\doxysection{/repo/build/\+M\+D\+I\+\_\+\+Library/\+M\+D\+I\+\_\+\+Library/mdi.c File Reference}
\label{mdi_8c}\index{/repo/build/MDI\_Library/MDI\_Library/mdi.c@{/repo/build/MDI\_Library/MDI\_Library/mdi.c}}


Functions callable by users of the Mol\+S\+SI Driver Interface.  


{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include \char`\"{}mdi.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}mdi\+\_\+global.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}mdi\+\_\+general.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}mdi\+\_\+mpi.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}mdi\+\_\+lib.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}physconst.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}elements.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{mdi_8c_a9f26d9f67413c6c194a2f5e4bd69b911}{M\+D\+I\+\_\+\+Init}} (int $\ast$argc, char $\ast$$\ast$$\ast$argv)
\begin{DoxyCompactList}\small\item\em Initialize communication through the M\+DI library. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a3af6852f1a469d0a6bd8113a3ff0260d}{M\+D\+I\+\_\+\+Init\+\_\+with\+\_\+argv}} (int $\ast$argc, char $\ast$$\ast$$\ast$argv)
\begin{DoxyCompactList}\small\item\em Initialize communication through the M\+DI library. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ac3f53714251da5894df2f52a4100b990}{M\+D\+I\+\_\+\+Init\+\_\+code}} ()
\begin{DoxyCompactList}\small\item\em Initialize a code structure for the M\+DI library. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a26633c213f6f1c08d5795f2ffffde620}{M\+D\+I\+\_\+\+Init\+\_\+with\+\_\+options}} (const char $\ast$options)
\begin{DoxyCompactList}\small\item\em Initialize communication through the M\+DI library. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a82aaa736f9d174c7663ad80a97089767}{M\+D\+I\+\_\+\+Initialized}} (int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Indicates whether M\+D\+I\+\_\+\+Init has been called. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ab4e0f741600ef03e08545417b089434b}{M\+D\+I\+\_\+\+Accept\+\_\+\+Communicator}} (M\+D\+I\+\_\+\+Comm $\ast$comm)
\begin{DoxyCompactList}\small\item\em Accept a new M\+DI communicator. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a91c05f57c87bd5ca8aad65d2d6c3ca72}{M\+D\+I\+\_\+\+Accept\+\_\+communicator}} (M\+D\+I\+\_\+\+Comm $\ast$comm)
\begin{DoxyCompactList}\small\item\em Accept a new M\+DI communicator. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a7bebce6d5fa91ee99a34fdcc5dcaedea}{M\+D\+I\+\_\+\+Send}} (const void $\ast$buf, int count, M\+D\+I\+\_\+\+Datatype datatype, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Send data through the M\+DI connection. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ab73f32323a155011fcc184866215ba03}{M\+D\+I\+\_\+\+Recv}} (void $\ast$buf, int count, M\+D\+I\+\_\+\+Datatype datatype, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Receive data through the M\+DI connection. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a77e579331a36c3f0eb7f7ff9668e789d}{M\+D\+I\+\_\+\+Send\+\_\+\+Command}} (const char $\ast$buf, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Send a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a3fa5769d2a6d0ad305fdaa12b048056e}{M\+D\+I\+\_\+\+Send\+\_\+command}} (const char $\ast$buf, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Send a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ab03c0ea8beda690d6f796d3089cbfe15}{M\+D\+I\+\_\+\+Recv\+\_\+\+Command}} (char $\ast$buf, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Receive a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a537752bd942b19cf0a2fd6adafb10a48}{M\+D\+I\+\_\+\+Recv\+\_\+command}} (char $\ast$buf, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Receive a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_aa1ccf61d45e842b50d72084735cb984a}{M\+D\+I\+\_\+\+Conversion\+\_\+\+Factor}} (const char $\ast$in\+\_\+unit, const char $\ast$out\+\_\+unit, double $\ast$conv)
\begin{DoxyCompactList}\small\item\em Determine the conversion factor between two units. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_aa66cd1dab228089f35563dba18f36d08}{M\+D\+I\+\_\+\+Conversion\+\_\+factor}} (const char $\ast$in\+\_\+unit, const char $\ast$out\+\_\+unit, double $\ast$conv)
\begin{DoxyCompactList}\small\item\em Determine the conversion factor between two units. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a4192271f6e3d7e6bc7939223be2ba8a8}\label{mdi_8c_a4192271f6e3d7e6bc7939223be2ba8a8}} 
int {\bfseries M\+D\+I\+\_\+\+String\+\_\+to\+\_\+atomic\+\_\+number} (const char $\ast$element\+\_\+symbol, int $\ast$atomic\+\_\+number)
\item 
int \mbox{\hyperlink{mdi_8c_ab73b88af2ee5e9bbb5d7dfb8e84068a1}{M\+D\+I\+\_\+\+Get\+\_\+\+Role}} (int $\ast$role)
\begin{DoxyCompactList}\small\item\em Get the role of the code. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a83a9b8af3ed1ae53dd6af69a14a00deb}{M\+D\+I\+\_\+\+Get\+\_\+role}} (int $\ast$role)
\begin{DoxyCompactList}\small\item\em Get the role of the code. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a5db83532c511b9b4b00b1e711adaa477}{M\+D\+I\+\_\+\+Get\+\_\+method}} (int $\ast$\mbox{\hyperlink{structmethod__struct}{method}}, M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Get the communication method of a communicator. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a48961793c41fbc8d8f2bdf1085fd7706}{M\+D\+I\+\_\+\+Get\+\_\+communicator}} (M\+D\+I\+\_\+\+Comm $\ast$comm, int index)
\begin{DoxyCompactList}\small\item\em Get the previously accepted M\+DI communicator at a specific index in the array of all communicators. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{mdi_8c_a8d6c16394da02c29977001487ce109f2}{M\+D\+I\+\_\+\+Set\+\_\+\+World\+\_\+\+Size}} (int world\+\_\+size\+\_\+in)
\begin{DoxyCompactList}\small\item\em Set the size of M\+P\+I\+\_\+\+C\+O\+M\+M\+\_\+\+W\+O\+R\+LD. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{mdi_8c_a4b95094e7410c4d58739245172019100}{M\+D\+I\+\_\+\+Set\+\_\+\+World\+\_\+\+Rank}} (int world\+\_\+rank\+\_\+in)
\begin{DoxyCompactList}\small\item\em Set the rank of this process within M\+P\+I\+\_\+\+C\+O\+M\+M\+\_\+\+W\+O\+R\+LD. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ad82e0e1e83bcbb42aa8f23f96e8807e4}{M\+D\+I\+\_\+\+Get\+\_\+intra\+\_\+rank}} (int intra\+\_\+rank\+\_\+out)
\begin{DoxyCompactList}\small\item\em Get the rank of this process within the M\+PI intra-\/communicator for the current code. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ada45c73f15462764df0ac9e733b7d18e}{M\+D\+I\+\_\+\+Register\+\_\+\+Node}} (const char $\ast$node\+\_\+name)
\begin{DoxyCompactList}\small\item\em Register a node. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ae191ab5848b0c586643f63412a18dcf2}{M\+D\+I\+\_\+\+Register\+\_\+node}} (const char $\ast$node\+\_\+name)
\begin{DoxyCompactList}\small\item\em Register a node. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_aeddcd7109a1206ce89a187960bfb3069}{M\+D\+I\+\_\+\+Check\+\_\+\+Node\+\_\+\+Exists}} (const char $\ast$node\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Check whether a node is supported on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a1680c63a11ae0fa018a8723b6ce7e586}{M\+D\+I\+\_\+\+Check\+\_\+node\+\_\+exists}} (const char $\ast$node\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Check whether a node is supported on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_aa5988eb94d4e447720c3728f2ce1e310}{M\+D\+I\+\_\+\+Get\+\_\+\+N\+Nodes}} (M\+D\+I\+\_\+\+Comm comm, int $\ast$nnodes)
\begin{DoxyCompactList}\small\item\em Get the number of nodes on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a7ef0da62bc756367864eb9cfa666861f}{M\+D\+I\+\_\+\+Get\+\_\+nnodes}} (M\+D\+I\+\_\+\+Comm comm, int $\ast$nnodes)
\begin{DoxyCompactList}\small\item\em Get the number of nodes on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a45bec162cf811d5f6411abd143e26af4}{M\+D\+I\+\_\+\+Get\+\_\+\+Node}} (int index, M\+D\+I\+\_\+\+Comm comm, char $\ast$name)
\begin{DoxyCompactList}\small\item\em Get the name of a node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ae8b67ab5f42a60f1c5bf61b13cae1736}{M\+D\+I\+\_\+\+Get\+\_\+node}} (int index, M\+D\+I\+\_\+\+Comm comm, char $\ast$name)
\begin{DoxyCompactList}\small\item\em Get the name of a node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a8eade50fb64b5bf5919b35cc2071952d}{M\+D\+I\+\_\+\+Register\+\_\+\+Command}} (const char $\ast$node\+\_\+name, const char $\ast$command\+\_\+name)
\begin{DoxyCompactList}\small\item\em Register a command on a specified node. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a6c9047a0e290090af2d8a2fc3a04d44d}{M\+D\+I\+\_\+\+Register\+\_\+command}} (const char $\ast$node\+\_\+name, const char $\ast$command\+\_\+name)
\begin{DoxyCompactList}\small\item\em Register a command on a specified node. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a013856347b9026a7eb01e7803b3dc9b5}{M\+D\+I\+\_\+\+Check\+\_\+\+Command\+\_\+\+Exists}} (const char $\ast$node\+\_\+name, const char $\ast$command\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Check whether a command is supported on specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a748099153c09f719c3f1cf5965c9a457}{M\+D\+I\+\_\+\+Check\+\_\+command\+\_\+exists}} (const char $\ast$node\+\_\+name, const char $\ast$command\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Check whether a command is supported on specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a82ee6d49380e2c24428aa6e5447c4567}{M\+D\+I\+\_\+\+Get\+\_\+\+N\+Commands}} (const char $\ast$node\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$ncommands)
\begin{DoxyCompactList}\small\item\em Get the number of commands supported for a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a964fe14239c845451ee4e0f25a4188a3}{M\+D\+I\+\_\+\+Get\+\_\+ncommands}} (const char $\ast$node\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$ncommands)
\begin{DoxyCompactList}\small\item\em Get the number of commands supported for a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a632b49a3e745b7b381b60de530699298}{M\+D\+I\+\_\+\+Get\+\_\+\+Command}} (const char $\ast$node\+\_\+name, int index, M\+D\+I\+\_\+\+Comm comm, char $\ast$name)
\begin{DoxyCompactList}\small\item\em Get the name of a command on a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a5e6c2360c2c734f131b59e4ead3cdfcb}{M\+D\+I\+\_\+\+Get\+\_\+command}} (const char $\ast$node\+\_\+name, int index, M\+D\+I\+\_\+\+Comm comm, char $\ast$name)
\begin{DoxyCompactList}\small\item\em Get the name of a command on a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a528561da9c075413ed1cda7cef73ff66}{M\+D\+I\+\_\+\+Register\+\_\+\+Callback}} (const char $\ast$node\+\_\+name, const char $\ast$callback\+\_\+name)
\begin{DoxyCompactList}\small\item\em Register a callback on a specified node. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a7e6ed80591bf70b26e4916a1804af8d1}{M\+D\+I\+\_\+\+Register\+\_\+callback}} (const char $\ast$node\+\_\+name, const char $\ast$callback\+\_\+name)
\begin{DoxyCompactList}\small\item\em Register a callback on a specified node. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a64d917aa46b3585d7b9e4ce08a010a4b}{M\+D\+I\+\_\+\+Check\+\_\+\+Callback\+\_\+\+Exists}} (const char $\ast$node\+\_\+name, const char $\ast$callback\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Check whether a callback exists on specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a16447acab0312b8a3d99bfe06b607140}{M\+D\+I\+\_\+\+Check\+\_\+callback\+\_\+exists}} (const char $\ast$node\+\_\+name, const char $\ast$callback\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Check whether a callback exists on specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a465fefea91d94e1e207c9f87a5af0339}{M\+D\+I\+\_\+\+Get\+\_\+\+N\+Callbacks}} (const char $\ast$node\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$ncallbacks)
\begin{DoxyCompactList}\small\item\em Get the number of callbacks on a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_adc598a140a72b5400704212202897731}{M\+D\+I\+\_\+\+Get\+\_\+ncallbacks}} (const char $\ast$node\+\_\+name, M\+D\+I\+\_\+\+Comm comm, int $\ast$ncallbacks)
\begin{DoxyCompactList}\small\item\em Get the number of callbacks on a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_acbbead15b88661810954314a1e27d456}{M\+D\+I\+\_\+\+Get\+\_\+\+Callback}} (const char $\ast$node\+\_\+name, int index, M\+D\+I\+\_\+\+Comm comm, char $\ast$name)
\begin{DoxyCompactList}\small\item\em Get the name of a callback on a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a2619722c0578298eb5fb522ac0f36055}{M\+D\+I\+\_\+\+Get\+\_\+callback}} (const char $\ast$node\+\_\+name, int index, M\+D\+I\+\_\+\+Comm comm, char $\ast$name)
\begin{DoxyCompactList}\small\item\em Get the name of a callback on a specified node on a specified engine. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a1792db6705a7032640af46d5b05d23f4}{M\+D\+I\+\_\+\+M\+P\+I\+\_\+get\+\_\+world\+\_\+comm}} (void $\ast$world\+\_\+comm)
\begin{DoxyCompactList}\small\item\em Obtain the M\+PI communicator that spans the single code corresponding to the calling rank. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_af305dbbeb2de3f39edb26c5287ecd845}{M\+D\+I\+\_\+\+M\+P\+I\+\_\+set\+\_\+world\+\_\+comm}} (void $\ast$world\+\_\+comm)
\begin{DoxyCompactList}\small\item\em Set the M\+PI communicator that spans the single code corresponding to the calling rank. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_abea4cba4cc69b71123511d34beb28277}{M\+D\+I\+\_\+\+Launch\+\_\+plugin}} (const char $\ast$plugin\+\_\+name, const char $\ast$options, void $\ast$mpi\+\_\+comm\+\_\+ptr, M\+D\+I\+\_\+\+Driver\+\_\+node\+\_\+callback\+\_\+t driver\+\_\+node\+\_\+callback, void $\ast$driver\+\_\+callback\+\_\+object)
\begin{DoxyCompactList}\small\item\em Launch an M\+DI plugin instance. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a7539c31ccab77c6d55cb0c8e23f5fdf5}{M\+D\+I\+\_\+\+Open\+\_\+plugin}} (const char $\ast$plugin\+\_\+name, const char $\ast$options, void $\ast$mpi\+\_\+comm\+\_\+ptr, M\+D\+I\+\_\+\+Comm $\ast$mdi\+\_\+comm\+\_\+ptr)
\begin{DoxyCompactList}\small\item\em Open an M\+DI plugin instance in the background. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a06a206673477f102e076f32f0bd0aac3}{M\+D\+I\+\_\+\+Close\+\_\+plugin}} (M\+D\+I\+\_\+\+Comm mdi\+\_\+comm)
\begin{DoxyCompactList}\small\item\em Close an M\+DI plugin instance. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a4169a23467c48cde8a261efdfb3072b1}{M\+D\+I\+\_\+\+Set\+\_\+\+Execute\+\_\+\+Command\+\_\+\+Func}} (int($\ast$generic\+\_\+command)(const char $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$), void $\ast$class\+\_\+object)
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+D\+I\+\_\+\+Execute\+\_\+\+Command. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_af0d4ca403e5b9d4e4e5d0f7a63ab346c}{M\+D\+I\+\_\+\+Set\+\_\+execute\+\_\+command\+\_\+func}} (int($\ast$generic\+\_\+command)(const char $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$), void $\ast$class\+\_\+object)
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+D\+I\+\_\+\+Execute\+\_\+\+Command. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a98666e4b2400343ad606fe86c83ad3f2}\label{mdi_8c_a98666e4b2400343ad606fe86c83ad3f2}} 
int {\bfseries M\+D\+I\+\_\+\+Set\+\_\+plugin\+\_\+state} (void $\ast$state)
\item 
int \mbox{\hyperlink{mdi_8c_a68ecdd9f61501109910f493a1ed4b6dd}{M\+D\+I\+\_\+\+Set\+\_\+plugin\+\_\+state\+\_\+internal}} (void $\ast$state)
\begin{DoxyCompactList}\small\item\em Set the language-\/based callback for when a code is destroyed. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a5d1fb9bd79c1c84057455fd5dc974f19}{M\+D\+I\+\_\+\+Set\+\_\+on\+\_\+destroy\+\_\+code}} (int($\ast$func)(int))
\begin{DoxyCompactList}\small\item\em Set the language-\/based callback for when a code is destroyed. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a8272503f977c698ccd8cee1e7c5c7b3e}{M\+D\+I\+\_\+\+Get\+\_\+\+Current\+\_\+\+Code}} ()
\begin{DoxyCompactList}\small\item\em Get the current code. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ab4e86ef9c4bb12e90d8e07be2e5cf6d9}{M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+argc}} (int $\ast$argc\+\_\+ptr)
\begin{DoxyCompactList}\small\item\em Get plugin\+\_\+argc. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_abebb0265894fbfcced765d9688719355}{M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+argv}} (char $\ast$$\ast$$\ast$argv\+\_\+ptr)
\begin{DoxyCompactList}\small\item\em Get plugin\+\_\+argv. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a4b7c5d301e092db15578ae745ffa0913}{M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+args}} (char $\ast$$\ast$args\+\_\+ptr)
\begin{DoxyCompactList}\small\item\em Get plugin\+\_\+unedited\+\_\+options. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ac69f5e1cea7115d324cadd207c216081}{M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+arg}} (int index, char $\ast$$\ast$arg\+\_\+ptr)
\begin{DoxyCompactList}\small\item\em Get a specific element from plugin\+\_\+argv. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a3bfe05f7b7e6c30738abe442de623128}{M\+D\+I\+\_\+\+Get\+\_\+python\+\_\+plugin\+\_\+mpi\+\_\+world\+\_\+ptr}} (void $\ast$$\ast$python\+\_\+plugin\+\_\+mpi\+\_\+world\+\_\+ptr\+\_\+ptr, void $\ast$state\+\_\+in)
\begin{DoxyCompactList}\small\item\em Get the Python plugin M\+PI communicator. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_acb8c9a81546e101e143ff9b4dbb77f66}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Recv\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+recv)(void $\ast$, int, int, int, M\+D\+I\+\_\+\+Comm))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+P\+I\+\_\+\+Recv when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a1b35deeba881ba247f54c0c7a7fa9541}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Send\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+send)(void $\ast$, int, int, int, M\+D\+I\+\_\+\+Comm))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+P\+I\+\_\+\+Send when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a9db0aed6228db1309a14926b7009f064}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Allgather\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+allgather)(void $\ast$, void $\ast$))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for gathering M\+DI versions when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a5cf6a719d2fbfb403b16ec7b282a2f4b}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Gather\+\_\+\+Names\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+gather\+\_\+names)(void $\ast$, void $\ast$, int $\ast$, int $\ast$))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for gathering code names when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a90b4daf2a55ea45f18c8120e61bf09dd}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Split\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+split)(int, int, M\+D\+I\+\_\+\+Comm, int))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+P\+I\+\_\+\+Split when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a53e71934347df0c03fe72e4ace5037b3}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Rank\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+rank)(int))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+P\+I\+\_\+\+Comm\+\_\+rank when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_adc63c403ea182348f1949b6fbec8f788}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Size\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+size)(int))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+P\+I\+\_\+\+Comm\+\_\+size when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_aaf70b8b181eca7c16d282e548b029ad6}{M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Barrier\+\_\+\+Callback}} (int($\ast$mpi4py\+\_\+barrier)(int))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+P\+I\+\_\+\+Barrier when using mpi4py. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_af1f1e65f7942e4c85bc8353b93c10efc}{M\+D\+I\+\_\+\+Set\+\_\+\+Launch\+\_\+\+Plugin\+\_\+\+Callback}} (int($\ast$launch\+\_\+plugin)(void $\ast$, void $\ast$, void $\ast$, int))
\begin{DoxyCompactList}\small\item\em Set the callback M\+DI uses for M\+D\+I\+\_\+\+Plugin\+\_\+init when the driver is in Python. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a9ecbc257bc3d76f8d108f6b720fd579a}{M\+D\+I\+\_\+\+Set\+\_\+plugin\+\_\+language}} (int language, void $\ast$plugin\+\_\+state)
\begin{DoxyCompactList}\small\item\em Set the language of an M\+DI plugin. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a17be79ed7246c8b78975987fe4b275fe}{M\+D\+I\+\_\+\+Set\+\_\+language\+\_\+execute\+\_\+command}} (int($\ast$execute\+\_\+command)(void $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$))
\begin{DoxyCompactList}\small\item\em Set the language execute\+\_\+command function needed by a language wrapper. \end{DoxyCompactList}\item 
M\+D\+I\+\_\+\+Driver\+\_\+node\+\_\+callback\+\_\+f90\+\_\+t \mbox{\hyperlink{mdi_8c_a1a74dd4c758e8bb729fe166ba284311f}{M\+D\+I\+\_\+\+Get\+\_\+language\+\_\+driver\+\_\+callback}} ()
\begin{DoxyCompactList}\small\item\em Get the language driver callback needed by a language wrapper. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_a7589a51fcc42702126188bd8fbd80b1b}{M\+D\+I\+\_\+\+Set\+\_\+language\+\_\+driver\+\_\+callback}} (M\+D\+I\+\_\+\+Driver\+\_\+node\+\_\+callback\+\_\+f90\+\_\+t callback)
\begin{DoxyCompactList}\small\item\em Set the language-\/specific driver\+\_\+callback function needed by a language wrapper. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mdi_8c_ae34bd575d2b19c22ad51aec41c7c119e}{M\+D\+I\+\_\+\+Call\+\_\+language\+\_\+driver\+\_\+callback}} (void $\ast$class\+\_\+obj)
\begin{DoxyCompactList}\small\item\em Call the language driver callback needed by a language wrapper. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{mdi_8c_a06174f1b52ec94b7d1d99f08c95a700e}\label{mdi_8c_a06174f1b52ec94b7d1d99f08c95a700e}} 
const int \mbox{\hyperlink{mdi_8c_a06174f1b52ec94b7d1d99f08c95a700e}{M\+D\+I\+\_\+\+M\+A\+J\+O\+R\+\_\+\+V\+E\+R\+S\+I\+ON}} = M\+D\+I\+\_\+\+M\+A\+J\+O\+R\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+
\begin{DoxyCompactList}\small\item\em M\+DI major version number. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a7e0c4c97de3c0fd94385a569bb34fff1}\label{mdi_8c_a7e0c4c97de3c0fd94385a569bb34fff1}} 
const int \mbox{\hyperlink{mdi_8c_a7e0c4c97de3c0fd94385a569bb34fff1}{M\+D\+I\+\_\+\+M\+I\+N\+O\+R\+\_\+\+V\+E\+R\+S\+I\+ON}} = M\+D\+I\+\_\+\+M\+I\+N\+O\+R\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+
\begin{DoxyCompactList}\small\item\em M\+DI minor version number. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a147d2caf02b6d41347bac14abf8deff0}\label{mdi_8c_a147d2caf02b6d41347bac14abf8deff0}} 
const int \mbox{\hyperlink{mdi_8c_a147d2caf02b6d41347bac14abf8deff0}{M\+D\+I\+\_\+\+P\+A\+T\+C\+H\+\_\+\+V\+E\+R\+S\+I\+ON}} = M\+D\+I\+\_\+\+P\+A\+T\+C\+H\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+
\begin{DoxyCompactList}\small\item\em M\+DI patch version number. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ae5fcebdb64c7844358e07e880bcb15c2}\label{mdi_8c_ae5fcebdb64c7844358e07e880bcb15c2}} 
const int \mbox{\hyperlink{mdi_8c_ae5fcebdb64c7844358e07e880bcb15c2}{M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH}} = M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+T\+H\+\_\+
\begin{DoxyCompactList}\small\item\em length of an M\+DI command in characters \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a8ca47e903a62de4298767ef3d446901d}\label{mdi_8c_a8ca47e903a62de4298767ef3d446901d}} 
const int \mbox{\hyperlink{mdi_8c_a8ca47e903a62de4298767ef3d446901d}{M\+D\+I\+\_\+\+N\+A\+M\+E\+\_\+\+L\+E\+N\+G\+TH}} = M\+D\+I\+\_\+\+N\+A\+M\+E\+\_\+\+L\+E\+N\+G\+T\+H\+\_\+
\begin{DoxyCompactList}\small\item\em length of an M\+DI name in characters \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ae0d41f32f57bee11feab8e76854bb1c4}\label{mdi_8c_ae0d41f32f57bee11feab8e76854bb1c4}} 
const int \mbox{\hyperlink{mdi_8c_ae0d41f32f57bee11feab8e76854bb1c4}{M\+D\+I\+\_\+\+L\+A\+B\+E\+L\+\_\+\+L\+E\+N\+G\+TH}} = M\+D\+I\+\_\+\+L\+A\+B\+E\+L\+\_\+\+L\+E\+N\+G\+T\+H\+\_\+
\begin{DoxyCompactList}\small\item\em length of an M\+DI label in characters \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a01e277b0239a7304055c883adb759280}\label{mdi_8c_a01e277b0239a7304055c883adb759280}} 
const M\+D\+I\+\_\+\+Comm \mbox{\hyperlink{mdi_8c_a01e277b0239a7304055c883adb759280}{M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL}} = M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+L\+L\+\_\+
\begin{DoxyCompactList}\small\item\em value of a null communicator \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ab88e0bb1563ba9fa73ffc49a704e43ad}\label{mdi_8c_ab88e0bb1563ba9fa73ffc49a704e43ad}} 
const int \mbox{\hyperlink{mdi_8c_ab88e0bb1563ba9fa73ffc49a704e43ad}{M\+D\+I\+\_\+\+I\+NT}} = M\+D\+I\+\_\+\+I\+N\+T\+\_\+
\begin{DoxyCompactList}\small\item\em integer data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ade305235465d0952c533f042fb292138}\label{mdi_8c_ade305235465d0952c533f042fb292138}} 
const int \mbox{\hyperlink{mdi_8c_ade305235465d0952c533f042fb292138}{M\+D\+I\+\_\+\+I\+N\+T8\+\_\+T}} = M\+D\+I\+\_\+\+I\+N\+T8\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em int8\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a4409f28477b82151c4ff22df5ed17c28}\label{mdi_8c_a4409f28477b82151c4ff22df5ed17c28}} 
const int \mbox{\hyperlink{mdi_8c_a4409f28477b82151c4ff22df5ed17c28}{M\+D\+I\+\_\+\+I\+N\+T16\+\_\+T}} = M\+D\+I\+\_\+\+I\+N\+T16\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em int16\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a5d875d92d591857efe4902ded3c46801}\label{mdi_8c_a5d875d92d591857efe4902ded3c46801}} 
const int \mbox{\hyperlink{mdi_8c_a5d875d92d591857efe4902ded3c46801}{M\+D\+I\+\_\+\+I\+N\+T32\+\_\+T}} = M\+D\+I\+\_\+\+I\+N\+T32\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em int32\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_af84020e22f8271db65e6c3b347e4a258}\label{mdi_8c_af84020e22f8271db65e6c3b347e4a258}} 
const int \mbox{\hyperlink{mdi_8c_af84020e22f8271db65e6c3b347e4a258}{M\+D\+I\+\_\+\+I\+N\+T64\+\_\+T}} = M\+D\+I\+\_\+\+I\+N\+T64\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em int64\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_aef6b94659e5edd14b3e27084bf44bca7}\label{mdi_8c_aef6b94659e5edd14b3e27084bf44bca7}} 
const int \mbox{\hyperlink{mdi_8c_aef6b94659e5edd14b3e27084bf44bca7}{M\+D\+I\+\_\+\+U\+I\+N\+T8\+\_\+T}} = M\+D\+I\+\_\+\+U\+I\+N\+T8\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em uint8\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a3621f3719023696f2c36629ba8365a5b}\label{mdi_8c_a3621f3719023696f2c36629ba8365a5b}} 
const int \mbox{\hyperlink{mdi_8c_a3621f3719023696f2c36629ba8365a5b}{M\+D\+I\+\_\+\+U\+I\+N\+T16\+\_\+T}} = M\+D\+I\+\_\+\+U\+I\+N\+T16\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em uint16\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_af406e6482620f8d9933ee9bffe2bcb2b}\label{mdi_8c_af406e6482620f8d9933ee9bffe2bcb2b}} 
const int \mbox{\hyperlink{mdi_8c_af406e6482620f8d9933ee9bffe2bcb2b}{M\+D\+I\+\_\+\+U\+I\+N\+T32\+\_\+T}} = M\+D\+I\+\_\+\+U\+I\+N\+T32\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em uint32\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_aa39b52ebb6176a7d2adca7ba5c443d33}\label{mdi_8c_aa39b52ebb6176a7d2adca7ba5c443d33}} 
const int \mbox{\hyperlink{mdi_8c_aa39b52ebb6176a7d2adca7ba5c443d33}{M\+D\+I\+\_\+\+U\+I\+N\+T64\+\_\+T}} = M\+D\+I\+\_\+\+U\+I\+N\+T64\+\_\+\+T\+\_\+
\begin{DoxyCompactList}\small\item\em uint64\+\_\+t data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a3d0c16831c941e5b870461394bfe5c82}\label{mdi_8c_a3d0c16831c941e5b870461394bfe5c82}} 
const int \mbox{\hyperlink{mdi_8c_a3d0c16831c941e5b870461394bfe5c82}{M\+D\+I\+\_\+\+D\+O\+U\+B\+LE}} = M\+D\+I\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+
\begin{DoxyCompactList}\small\item\em double precision float data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a508f568d6a6cba24d6015347d6c1469e}\label{mdi_8c_a508f568d6a6cba24d6015347d6c1469e}} 
const int \mbox{\hyperlink{mdi_8c_a508f568d6a6cba24d6015347d6c1469e}{M\+D\+I\+\_\+\+C\+H\+AR}} = M\+D\+I\+\_\+\+C\+H\+A\+R\+\_\+
\begin{DoxyCompactList}\small\item\em character data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_af9eccceb94bcf00143146fef5ae21bfd}\label{mdi_8c_af9eccceb94bcf00143146fef5ae21bfd}} 
const int \mbox{\hyperlink{mdi_8c_af9eccceb94bcf00143146fef5ae21bfd}{M\+D\+I\+\_\+\+F\+L\+O\+AT}} = M\+D\+I\+\_\+\+F\+L\+O\+A\+T\+\_\+
\begin{DoxyCompactList}\small\item\em single precision float data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a75761ac21c03622719a105c10d5171b4}\label{mdi_8c_a75761ac21c03622719a105c10d5171b4}} 
const int \mbox{\hyperlink{mdi_8c_a75761ac21c03622719a105c10d5171b4}{M\+D\+I\+\_\+\+B\+Y\+TE}} = M\+D\+I\+\_\+\+B\+Y\+T\+E\+\_\+
\begin{DoxyCompactList}\small\item\em character data type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_aa69d77aeaab908058636a4420b02ae90}\label{mdi_8c_aa69d77aeaab908058636a4420b02ae90}} 
const int \mbox{\hyperlink{mdi_8c_aa69d77aeaab908058636a4420b02ae90}{M\+D\+I\+\_\+\+T\+CP}} = M\+D\+I\+\_\+\+T\+C\+P\+\_\+
\begin{DoxyCompactList}\small\item\em T\+C\+P/\+IP communication method. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ac9eaa23189e2bf8a92c2136ee0112a87}\label{mdi_8c_ac9eaa23189e2bf8a92c2136ee0112a87}} 
const int \mbox{\hyperlink{mdi_8c_ac9eaa23189e2bf8a92c2136ee0112a87}{M\+D\+I\+\_\+\+M\+PI}} = M\+D\+I\+\_\+\+M\+P\+I\+\_\+
\begin{DoxyCompactList}\small\item\em M\+PI communication method. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ac545ac5cbde8c46c65c073000d395d51}\label{mdi_8c_ac545ac5cbde8c46c65c073000d395d51}} 
const int \mbox{\hyperlink{mdi_8c_ac545ac5cbde8c46c65c073000d395d51}{M\+D\+I\+\_\+\+L\+I\+NK}} = M\+D\+I\+\_\+\+L\+I\+N\+K\+\_\+
\begin{DoxyCompactList}\small\item\em Library communication method (deprecated) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a7be0d3fc0201b6e36706483013555858}\label{mdi_8c_a7be0d3fc0201b6e36706483013555858}} 
const int \mbox{\hyperlink{mdi_8c_a7be0d3fc0201b6e36706483013555858}{M\+D\+I\+\_\+\+P\+L\+U\+G\+IN}} = M\+D\+I\+\_\+\+L\+I\+N\+K\+\_\+
\begin{DoxyCompactList}\small\item\em Library communication method. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_ab0752d8d30929c35fa8297e1a3127068}\label{mdi_8c_ab0752d8d30929c35fa8297e1a3127068}} 
const int \mbox{\hyperlink{mdi_8c_ab0752d8d30929c35fa8297e1a3127068}{M\+D\+I\+\_\+\+T\+E\+ST}} = M\+D\+I\+\_\+\+T\+E\+S\+T\+\_\+
\begin{DoxyCompactList}\small\item\em Test communication method. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_a3b915c702251d2418e8daec9f923313a}\label{mdi_8c_a3b915c702251d2418e8daec9f923313a}} 
const int \mbox{\hyperlink{mdi_8c_a3b915c702251d2418e8daec9f923313a}{M\+D\+I\+\_\+\+D\+R\+I\+V\+ER}} = M\+D\+I\+\_\+\+D\+R\+I\+V\+E\+R\+\_\+
\begin{DoxyCompactList}\small\item\em Driver role type. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{mdi_8c_aa3a524bd924c365be0f92734d66af39f}\label{mdi_8c_aa3a524bd924c365be0f92734d66af39f}} 
const int \mbox{\hyperlink{mdi_8c_aa3a524bd924c365be0f92734d66af39f}{M\+D\+I\+\_\+\+E\+N\+G\+I\+NE}} = M\+D\+I\+\_\+\+E\+N\+G\+I\+N\+E\+\_\+
\begin{DoxyCompactList}\small\item\em Engine role type. \end{DoxyCompactList}\item 
int($\ast$)(void $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$) \mbox{\hyperlink{mdi_8c_a5e4ead94fc691b76201e41e0c4404d96}{M\+D\+I\+\_\+\+Get\+\_\+language\+\_\+execute\+\_\+command}} (M\+D\+I\+\_\+\+Comm comm)
\begin{DoxyCompactList}\small\item\em Get the language execute\+\_\+command function needed by a language wrapper. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Functions callable by users of the Mol\+S\+SI Driver Interface. 



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{mdi_8c_ab4e0f741600ef03e08545417b089434b}\label{mdi_8c_ab4e0f741600ef03e08545417b089434b}} 
\index{mdi.c@{mdi.c}!MDI\_Accept\_Communicator@{MDI\_Accept\_Communicator}}
\index{MDI\_Accept\_Communicator@{MDI\_Accept\_Communicator}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Accept\_Communicator()}{MDI\_Accept\_Communicator()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Accept\+\_\+\+Communicator (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Comm $\ast$}]{comm }\end{DoxyParamCaption})}



Accept a new M\+DI communicator. 

The function returns an M\+D\+I\+\_\+\+Comm that describes a connection between two codes. If no new communicators are available, the function returns {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL}. \mbox{\Hypertarget{mdi_8c_a91c05f57c87bd5ca8aad65d2d6c3ca72}\label{mdi_8c_a91c05f57c87bd5ca8aad65d2d6c3ca72}} 
\index{mdi.c@{mdi.c}!MDI\_Accept\_communicator@{MDI\_Accept\_communicator}}
\index{MDI\_Accept\_communicator@{MDI\_Accept\_communicator}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Accept\_communicator()}{MDI\_Accept\_communicator()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Accept\+\_\+communicator (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Comm $\ast$}]{comm }\end{DoxyParamCaption})}



Accept a new M\+DI communicator. 

The function returns an M\+D\+I\+\_\+\+Comm that describes a connection between two codes. If no new communicators are available, the function returns {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL}. \mbox{\Hypertarget{mdi_8c_ae34bd575d2b19c22ad51aec41c7c119e}\label{mdi_8c_ae34bd575d2b19c22ad51aec41c7c119e}} 
\index{mdi.c@{mdi.c}!MDI\_Call\_language\_driver\_callback@{MDI\_Call\_language\_driver\_callback}}
\index{MDI\_Call\_language\_driver\_callback@{MDI\_Call\_language\_driver\_callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Call\_language\_driver\_callback()}{MDI\_Call\_language\_driver\_callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Call\+\_\+language\+\_\+driver\+\_\+callback (\begin{DoxyParamCaption}\item[{void $\ast$}]{class\+\_\+obj }\end{DoxyParamCaption})}



Call the language driver callback needed by a language wrapper. 

The function returns a function pointer to the driver callback function.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em callback} & Driver callback \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a64d917aa46b3585d7b9e4ce08a010a4b}\label{mdi_8c_a64d917aa46b3585d7b9e4ce08a010a4b}} 
\index{mdi.c@{mdi.c}!MDI\_Check\_Callback\_Exists@{MDI\_Check\_Callback\_Exists}}
\index{MDI\_Check\_Callback\_Exists@{MDI\_Check\_Callback\_Exists}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Check\_Callback\_Exists()}{MDI\_Check\_Callback\_Exists()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Check\+\_\+\+Callback\+\_\+\+Exists (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{callback\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Check whether a callback exists on specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the callbacks\textquotesingle{}s node. \\
\hline
\mbox{\texttt{ in}}  & {\em command\+\_\+name} & Name of the callback. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em flag} & On return, 1 if the callback is supported and 0 otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a16447acab0312b8a3d99bfe06b607140}\label{mdi_8c_a16447acab0312b8a3d99bfe06b607140}} 
\index{mdi.c@{mdi.c}!MDI\_Check\_callback\_exists@{MDI\_Check\_callback\_exists}}
\index{MDI\_Check\_callback\_exists@{MDI\_Check\_callback\_exists}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Check\_callback\_exists()}{MDI\_Check\_callback\_exists()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Check\+\_\+callback\+\_\+exists (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{callback\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Check whether a callback exists on specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the callbacks\textquotesingle{}s node. \\
\hline
\mbox{\texttt{ in}}  & {\em command\+\_\+name} & Name of the callback. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em flag} & On return, 1 if the callback is supported and 0 otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a013856347b9026a7eb01e7803b3dc9b5}\label{mdi_8c_a013856347b9026a7eb01e7803b3dc9b5}} 
\index{mdi.c@{mdi.c}!MDI\_Check\_Command\_Exists@{MDI\_Check\_Command\_Exists}}
\index{MDI\_Check\_Command\_Exists@{MDI\_Check\_Command\_Exists}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Check\_Command\_Exists()}{MDI\_Check\_Command\_Exists()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Check\+\_\+\+Command\+\_\+\+Exists (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{command\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Check whether a command is supported on specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the command\textquotesingle{}s node. \\
\hline
\mbox{\texttt{ in}}  & {\em command\+\_\+name} & Name of the command. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em flag} & On return, 1 if the command is supported and 0 otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a748099153c09f719c3f1cf5965c9a457}\label{mdi_8c_a748099153c09f719c3f1cf5965c9a457}} 
\index{mdi.c@{mdi.c}!MDI\_Check\_command\_exists@{MDI\_Check\_command\_exists}}
\index{MDI\_Check\_command\_exists@{MDI\_Check\_command\_exists}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Check\_command\_exists()}{MDI\_Check\_command\_exists()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Check\+\_\+command\+\_\+exists (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{command\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Check whether a command is supported on specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the command\textquotesingle{}s node. \\
\hline
\mbox{\texttt{ in}}  & {\em command\+\_\+name} & Name of the command. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em flag} & On return, 1 if the command is supported and 0 otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_aeddcd7109a1206ce89a187960bfb3069}\label{mdi_8c_aeddcd7109a1206ce89a187960bfb3069}} 
\index{mdi.c@{mdi.c}!MDI\_Check\_Node\_Exists@{MDI\_Check\_Node\_Exists}}
\index{MDI\_Check\_Node\_Exists@{MDI\_Check\_Node\_Exists}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Check\_Node\_Exists()}{MDI\_Check\_Node\_Exists()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Check\+\_\+\+Node\+\_\+\+Exists (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Check whether a node is supported on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em flag} & On return, 1 if the node is supported and 0 otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a1680c63a11ae0fa018a8723b6ce7e586}\label{mdi_8c_a1680c63a11ae0fa018a8723b6ce7e586}} 
\index{mdi.c@{mdi.c}!MDI\_Check\_node\_exists@{MDI\_Check\_node\_exists}}
\index{MDI\_Check\_node\_exists@{MDI\_Check\_node\_exists}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Check\_node\_exists()}{MDI\_Check\_node\_exists()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Check\+\_\+node\+\_\+exists (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Check whether a node is supported on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em flag} & On return, 1 if the node is supported and 0 otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a06a206673477f102e076f32f0bd0aac3}\label{mdi_8c_a06a206673477f102e076f32f0bd0aac3}} 
\index{mdi.c@{mdi.c}!MDI\_Close\_plugin@{MDI\_Close\_plugin}}
\index{MDI\_Close\_plugin@{MDI\_Close\_plugin}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Close\_plugin()}{MDI\_Close\_plugin()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Close\+\_\+plugin (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Comm}]{mdi\+\_\+comm }\end{DoxyParamCaption})}



Close an M\+DI plugin instance. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plugin\+\_\+name} & Name of the plugin. \\
\hline
\mbox{\texttt{ in}}  & {\em options} & Command-\/line options for the plugin. \\
\hline
\mbox{\texttt{ in}}  & {\em mpi\+\_\+comm\+\_\+ptr} & Pointer to an M\+PI intra-\/communicator that spans all ranks that will run this plugin instance. \\
\hline
\mbox{\texttt{ out}}  & {\em mdi\+\_\+comm\+\_\+ptr} & Pointer to an M\+DI communicator for communication with the launched plugin. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_aa1ccf61d45e842b50d72084735cb984a}\label{mdi_8c_aa1ccf61d45e842b50d72084735cb984a}} 
\index{mdi.c@{mdi.c}!MDI\_Conversion\_Factor@{MDI\_Conversion\_Factor}}
\index{MDI\_Conversion\_Factor@{MDI\_Conversion\_Factor}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Conversion\_Factor()}{MDI\_Conversion\_Factor()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Conversion\+\_\+\+Factor (\begin{DoxyParamCaption}\item[{const char $\ast$}]{in\+\_\+unit,  }\item[{const char $\ast$}]{out\+\_\+unit,  }\item[{double $\ast$}]{conv }\end{DoxyParamCaption})}



Determine the conversion factor between two units. 

The function determines the conversion factor from {\ttfamily in\+\_\+unit} to {\ttfamily out\+\_\+unit}. The function requires that {\ttfamily in\+\_\+unit} and {\ttfamily out\+\_\+unit} be members of the same category of unit ({\itshape i.\+e}. charge, energy, force, etc.). For example, calling {\ttfamily M\+D\+I\+\_\+\+Conversion\+\_\+\+Factor}({\ttfamily \char`\"{}kilojoule\+\_\+per\+\_\+mol\char`\"{}},{\ttfamily \char`\"{}atomic\+\_\+unit\+\_\+of\+\_\+energy\char`\"{}}) will return the conversion factor from kilojoule/mol to hartrees. The function returns {\ttfamily 0} on a success.

All quantities communicated through M\+DI must be represented using atomic units. When unit conversions are necessary, this function should be used to obtain the conversion factors, as this will ensure that all drivers and engines use conversion factors that are self-\/consistent across codes. Use of conversion factors that are not self-\/consistent can result in numerical instabilities.

The following is a list of the unit categories, along with the names of the units associated with each category\+:


\begin{DoxyItemize}
\item charge
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+charge
\item coulomb
\end{DoxyItemize}
\item energy
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+energy
\item calorie
\item electron\+\_\+volt
\item hartree
\item inverse\+\_\+meter\+\_\+energy
\item joule
\item kelvin\+\_\+energy
\item kilocalorie
\item kilocalorie\+\_\+per\+\_\+mol
\item kilojoule
\item kilojoule\+\_\+per\+\_\+mol
\item rydberg
\end{DoxyItemize}
\item force
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+force
\item newton
\end{DoxyItemize}
\item length
\begin{DoxyItemize}
\item angstrom
\item atomic\+\_\+unit\+\_\+of\+\_\+length
\item bohr
\item meter
\item nanometer
\item picometer
\end{DoxyItemize}
\item mass
\begin{DoxyItemize}
\item atomic\+\_\+mass\+\_\+unit
\item atomic\+\_\+unit\+\_\+of\+\_\+mass
\item gram
\item kilogram
\end{DoxyItemize}
\item time
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+time
\item picosecond
\item second
\end{DoxyItemize}
\end{DoxyItemize}

All conversion factors were acquired from the \href{https://physics.nist.gov/cuu/Constants/Table/allascii.txt}{\texttt{ N\+I\+ST C\+O\+D\+A\+TA}}, except the conversion factors for calorie, kilocalorie, and kilocalorie\+\_\+per\+\_\+mol, which were obtained from the \href{https://www.nist.gov/pml/nist-guide-si-appendix-b9-factors-units-listed-kind-quantity-or-field-science}{\texttt{ N\+I\+ST Guide to the SI}}.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em in\+\_\+unit} & Name of the unit to convert from. \\
\hline
\mbox{\texttt{ in}}  & {\em out\+\_\+unit} & Name of the unit to convert to. \\
\hline
\mbox{\texttt{ out}}  & {\em conv} & Conversion factor from in\+\_\+unit to out\+\_\+unit \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_aa66cd1dab228089f35563dba18f36d08}\label{mdi_8c_aa66cd1dab228089f35563dba18f36d08}} 
\index{mdi.c@{mdi.c}!MDI\_Conversion\_factor@{MDI\_Conversion\_factor}}
\index{MDI\_Conversion\_factor@{MDI\_Conversion\_factor}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Conversion\_factor()}{MDI\_Conversion\_factor()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Conversion\+\_\+factor (\begin{DoxyParamCaption}\item[{const char $\ast$}]{in\+\_\+unit,  }\item[{const char $\ast$}]{out\+\_\+unit,  }\item[{double $\ast$}]{conv }\end{DoxyParamCaption})}



Determine the conversion factor between two units. 

The function determines the conversion factor from {\ttfamily in\+\_\+unit} to {\ttfamily out\+\_\+unit}. The function requires that {\ttfamily in\+\_\+unit} and {\ttfamily out\+\_\+unit} be members of the same category of unit ({\itshape i.\+e}. charge, energy, force, etc.). For example, calling {\ttfamily M\+D\+I\+\_\+\+Conversion\+\_\+\+Factor}({\ttfamily \char`\"{}kilojoule\+\_\+per\+\_\+mol\char`\"{}},{\ttfamily \char`\"{}atomic\+\_\+unit\+\_\+of\+\_\+energy\char`\"{}}) will return the conversion factor from kilojoule/mol to hartrees. The function returns {\ttfamily 0} on a success.

All quantities communicated through M\+DI must be represented using atomic units. When unit conversions are necessary, this function should be used to obtain the conversion factors, as this will ensure that all drivers and engines use conversion factors that are self-\/consistent across codes. Use of conversion factors that are not self-\/consistent can result in numerical instabilities.

The following is a list of the unit categories, along with the names of the units associated with each category\+:


\begin{DoxyItemize}
\item charge
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+charge
\item coulomb
\end{DoxyItemize}
\item energy
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+energy
\item calorie
\item electron\+\_\+volt
\item hartree
\item inverse\+\_\+meter\+\_\+energy
\item joule
\item kelvin\+\_\+energy
\item kilocalorie
\item kilocalorie\+\_\+per\+\_\+mol
\item kilojoule
\item kilojoule\+\_\+per\+\_\+mol
\item rydberg
\end{DoxyItemize}
\item force
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+force
\item newton
\end{DoxyItemize}
\item length
\begin{DoxyItemize}
\item angstrom
\item atomic\+\_\+unit\+\_\+of\+\_\+length
\item bohr
\item meter
\item nanometer
\item picometer
\end{DoxyItemize}
\item mass
\begin{DoxyItemize}
\item atomic\+\_\+mass\+\_\+unit
\item atomic\+\_\+unit\+\_\+of\+\_\+mass
\item gram
\item kilogram
\end{DoxyItemize}
\item time
\begin{DoxyItemize}
\item atomic\+\_\+unit\+\_\+of\+\_\+time
\item picosecond
\item second
\end{DoxyItemize}
\end{DoxyItemize}

All conversion factors were acquired from the \href{https://physics.nist.gov/cuu/Constants/Table/allascii.txt}{\texttt{ N\+I\+ST C\+O\+D\+A\+TA}}, except the conversion factors for calorie, kilocalorie, and kilocalorie\+\_\+per\+\_\+mol, which were obtained from the \href{https://www.nist.gov/pml/nist-guide-si-appendix-b9-factors-units-listed-kind-quantity-or-field-science}{\texttt{ N\+I\+ST Guide to the SI}}.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em in\+\_\+unit} & Name of the unit to convert from. \\
\hline
\mbox{\texttt{ in}}  & {\em out\+\_\+unit} & Name of the unit to convert to. \\
\hline
\mbox{\texttt{ out}}  & {\em conv} & Conversion factor from in\+\_\+unit to out\+\_\+unit \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_acbbead15b88661810954314a1e27d456}\label{mdi_8c_acbbead15b88661810954314a1e27d456}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_Callback@{MDI\_Get\_Callback}}
\index{MDI\_Get\_Callback@{MDI\_Get\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_Callback()}{MDI\_Get\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{int}]{index,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{char $\ast$}]{name }\end{DoxyParamCaption})}



Get the name of a callback on a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the callback is located. \\
\hline
\mbox{\texttt{ in}}  & {\em index} & Index of the callback on the specified node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em name} & On return, the name of the callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a2619722c0578298eb5fb522ac0f36055}\label{mdi_8c_a2619722c0578298eb5fb522ac0f36055}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_callback@{MDI\_Get\_callback}}
\index{MDI\_Get\_callback@{MDI\_Get\_callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_callback()}{MDI\_Get\_callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+callback (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{int}]{index,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{char $\ast$}]{name }\end{DoxyParamCaption})}



Get the name of a callback on a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the callback is located. \\
\hline
\mbox{\texttt{ in}}  & {\em index} & Index of the callback on the specified node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em name} & On return, the name of the callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a632b49a3e745b7b381b60de530699298}\label{mdi_8c_a632b49a3e745b7b381b60de530699298}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_Command@{MDI\_Get\_Command}}
\index{MDI\_Get\_Command@{MDI\_Get\_Command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_Command()}{MDI\_Get\_Command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+Command (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{int}]{index,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{char $\ast$}]{name }\end{DoxyParamCaption})}



Get the name of a command on a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the command is located. \\
\hline
\mbox{\texttt{ in}}  & {\em index} & Index of the command on the specified node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em name} & On return, the name of the command \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a5e6c2360c2c734f131b59e4ead3cdfcb}\label{mdi_8c_a5e6c2360c2c734f131b59e4ead3cdfcb}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_command@{MDI\_Get\_command}}
\index{MDI\_Get\_command@{MDI\_Get\_command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_command()}{MDI\_Get\_command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+command (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{int}]{index,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{char $\ast$}]{name }\end{DoxyParamCaption})}



Get the name of a command on a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the command is located. \\
\hline
\mbox{\texttt{ in}}  & {\em index} & Index of the command on the specified node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em name} & On return, the name of the command \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a48961793c41fbc8d8f2bdf1085fd7706}\label{mdi_8c_a48961793c41fbc8d8f2bdf1085fd7706}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_communicator@{MDI\_Get\_communicator}}
\index{MDI\_Get\_communicator@{MDI\_Get\_communicator}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_communicator()}{MDI\_Get\_communicator()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+communicator (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Comm $\ast$}]{comm,  }\item[{int}]{index }\end{DoxyParamCaption})}



Get the previously accepted M\+DI communicator at a specific index in the array of all communicators. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em comm} & Value of the communicator. If no communicator exists at the given index, returns {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL}. \\
\hline
\mbox{\texttt{ in}}  & {\em index} & Request the i\textquotesingle{}th communicator in the list of accepted and valid communicators. The list begins at {\ttfamily 0}. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a8272503f977c698ccd8cee1e7c5c7b3e}\label{mdi_8c_a8272503f977c698ccd8cee1e7c5c7b3e}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_Current\_Code@{MDI\_Get\_Current\_Code}}
\index{MDI\_Get\_Current\_Code@{MDI\_Get\_Current\_Code}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_Current\_Code()}{MDI\_Get\_Current\_Code()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+Current\+\_\+\+Code (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Get the current code. 

\mbox{\Hypertarget{mdi_8c_ad82e0e1e83bcbb42aa8f23f96e8807e4}\label{mdi_8c_ad82e0e1e83bcbb42aa8f23f96e8807e4}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_intra\_rank@{MDI\_Get\_intra\_rank}}
\index{MDI\_Get\_intra\_rank@{MDI\_Get\_intra\_rank}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_intra\_rank()}{MDI\_Get\_intra\_rank()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+intra\+\_\+rank (\begin{DoxyParamCaption}\item[{int}]{intra\+\_\+rank\+\_\+out }\end{DoxyParamCaption})}



Get the rank of this process within the M\+PI intra-\/communicator for the current code. 

This function is only used by the Fortran wrapper \mbox{\Hypertarget{mdi_8c_a1a74dd4c758e8bb729fe166ba284311f}\label{mdi_8c_a1a74dd4c758e8bb729fe166ba284311f}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_language\_driver\_callback@{MDI\_Get\_language\_driver\_callback}}
\index{MDI\_Get\_language\_driver\_callback@{MDI\_Get\_language\_driver\_callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_language\_driver\_callback()}{MDI\_Get\_language\_driver\_callback()}}
{\footnotesize\ttfamily M\+D\+I\+\_\+\+Driver\+\_\+node\+\_\+callback\+\_\+f90\+\_\+t M\+D\+I\+\_\+\+Get\+\_\+language\+\_\+driver\+\_\+callback (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Get the language driver callback needed by a language wrapper. 

The function returns a function pointer to the driver callback function.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em callback} & Driver callback \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a5db83532c511b9b4b00b1e711adaa477}\label{mdi_8c_a5db83532c511b9b4b00b1e711adaa477}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_method@{MDI\_Get\_method}}
\index{MDI\_Get\_method@{MDI\_Get\_method}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_method()}{MDI\_Get\_method()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+method (\begin{DoxyParamCaption}\item[{int $\ast$}]{method,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Get the communication method of a communicator. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em method} & Role of the code (either {\ttfamily M\+D\+I\+\_\+\+T\+CP}, {\ttfamily M\+D\+I\+\_\+\+M\+PI}, {\ttfamily M\+D\+I\+\_\+\+T\+E\+ST}, or {\ttfamily M\+D\+I\+\_\+\+P\+L\+U\+G\+IN}) \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator for which the library will return the communication method. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a465fefea91d94e1e207c9f87a5af0339}\label{mdi_8c_a465fefea91d94e1e207c9f87a5af0339}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_NCallbacks@{MDI\_Get\_NCallbacks}}
\index{MDI\_Get\_NCallbacks@{MDI\_Get\_NCallbacks}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_NCallbacks()}{MDI\_Get\_NCallbacks()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+N\+Callbacks (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{ncallbacks }\end{DoxyParamCaption})}



Get the number of callbacks on a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em ncallbacks} & On return, the number of callbacks on the specified node on the specified engine. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_adc598a140a72b5400704212202897731}\label{mdi_8c_adc598a140a72b5400704212202897731}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_ncallbacks@{MDI\_Get\_ncallbacks}}
\index{MDI\_Get\_ncallbacks@{MDI\_Get\_ncallbacks}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_ncallbacks()}{MDI\_Get\_ncallbacks()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+ncallbacks (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{ncallbacks }\end{DoxyParamCaption})}



Get the number of callbacks on a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em ncallbacks} & On return, the number of callbacks on the specified node on the specified engine. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a82ee6d49380e2c24428aa6e5447c4567}\label{mdi_8c_a82ee6d49380e2c24428aa6e5447c4567}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_NCommands@{MDI\_Get\_NCommands}}
\index{MDI\_Get\_NCommands@{MDI\_Get\_NCommands}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_NCommands()}{MDI\_Get\_NCommands()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+N\+Commands (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{ncommands }\end{DoxyParamCaption})}



Get the number of commands supported for a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em nnodes} & On return, the number of commands supported on the specified engine on the specified node. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a964fe14239c845451ee4e0f25a4188a3}\label{mdi_8c_a964fe14239c845451ee4e0f25a4188a3}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_ncommands@{MDI\_Get\_ncommands}}
\index{MDI\_Get\_ncommands@{MDI\_Get\_ncommands}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_ncommands()}{MDI\_Get\_ncommands()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+ncommands (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{ncommands }\end{DoxyParamCaption})}



Get the number of commands supported for a specified node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em nnodes} & On return, the number of commands supported on the specified engine on the specified node. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_aa5988eb94d4e447720c3728f2ce1e310}\label{mdi_8c_aa5988eb94d4e447720c3728f2ce1e310}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_NNodes@{MDI\_Get\_NNodes}}
\index{MDI\_Get\_NNodes@{MDI\_Get\_NNodes}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_NNodes()}{MDI\_Get\_NNodes()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+N\+Nodes (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{nnodes }\end{DoxyParamCaption})}



Get the number of nodes on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em nnodes} & On return, the number of nodes supported by the engine. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a7ef0da62bc756367864eb9cfa666861f}\label{mdi_8c_a7ef0da62bc756367864eb9cfa666861f}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_nnodes@{MDI\_Get\_nnodes}}
\index{MDI\_Get\_nnodes@{MDI\_Get\_nnodes}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_nnodes()}{MDI\_Get\_nnodes()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+nnodes (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{int $\ast$}]{nnodes }\end{DoxyParamCaption})}



Get the number of nodes on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em nnodes} & On return, the number of nodes supported by the engine. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a45bec162cf811d5f6411abd143e26af4}\label{mdi_8c_a45bec162cf811d5f6411abd143e26af4}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_Node@{MDI\_Get\_Node}}
\index{MDI\_Get\_Node@{MDI\_Get\_Node}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_Node()}{MDI\_Get\_Node()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+Node (\begin{DoxyParamCaption}\item[{int}]{index,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{char $\ast$}]{name }\end{DoxyParamCaption})}



Get the name of a node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em index} & Index of the node on the specified engine. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em name} & On return, the name of the node \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_ae8b67ab5f42a60f1c5bf61b13cae1736}\label{mdi_8c_ae8b67ab5f42a60f1c5bf61b13cae1736}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_node@{MDI\_Get\_node}}
\index{MDI\_Get\_node@{MDI\_Get\_node}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_node()}{MDI\_Get\_node()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+node (\begin{DoxyParamCaption}\item[{int}]{index,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm,  }\item[{char $\ast$}]{name }\end{DoxyParamCaption})}



Get the name of a node on a specified engine. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em index} & Index of the node on the specified engine. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator of the engine. If comm is set to M\+D\+I\+\_\+\+C\+O\+M\+M\+\_\+\+N\+U\+LL, the function will check for the calling engine. \\
\hline
\mbox{\texttt{ out}}  & {\em name} & On return, the name of the node \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a3bfe05f7b7e6c30738abe442de623128}\label{mdi_8c_a3bfe05f7b7e6c30738abe442de623128}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_python\_plugin\_mpi\_world\_ptr@{MDI\_Get\_python\_plugin\_mpi\_world\_ptr}}
\index{MDI\_Get\_python\_plugin\_mpi\_world\_ptr@{MDI\_Get\_python\_plugin\_mpi\_world\_ptr}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_python\_plugin\_mpi\_world\_ptr()}{MDI\_Get\_python\_plugin\_mpi\_world\_ptr()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+python\+\_\+plugin\+\_\+mpi\+\_\+world\+\_\+ptr (\begin{DoxyParamCaption}\item[{void $\ast$$\ast$}]{python\+\_\+plugin\+\_\+mpi\+\_\+world\+\_\+ptr\+\_\+ptr,  }\item[{void $\ast$}]{state\+\_\+in }\end{DoxyParamCaption})}



Get the Python plugin M\+PI communicator. 

\mbox{\Hypertarget{mdi_8c_ab73b88af2ee5e9bbb5d7dfb8e84068a1}\label{mdi_8c_ab73b88af2ee5e9bbb5d7dfb8e84068a1}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_Role@{MDI\_Get\_Role}}
\index{MDI\_Get\_Role@{MDI\_Get\_Role}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_Role()}{MDI\_Get\_Role()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+\+Role (\begin{DoxyParamCaption}\item[{int $\ast$}]{role }\end{DoxyParamCaption})}



Get the role of the code. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em role} & Role of the code (either {\ttfamily M\+D\+I\+\_\+\+D\+R\+I\+V\+ER} or {\ttfamily M\+D\+I\+\_\+\+E\+N\+G\+I\+NE}) \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a83a9b8af3ed1ae53dd6af69a14a00deb}\label{mdi_8c_a83a9b8af3ed1ae53dd6af69a14a00deb}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_role@{MDI\_Get\_role}}
\index{MDI\_Get\_role@{MDI\_Get\_role}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_role()}{MDI\_Get\_role()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Get\+\_\+role (\begin{DoxyParamCaption}\item[{int $\ast$}]{role }\end{DoxyParamCaption})}



Get the role of the code. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em role} & Role of the code (either {\ttfamily M\+D\+I\+\_\+\+D\+R\+I\+V\+ER} or {\ttfamily M\+D\+I\+\_\+\+E\+N\+G\+I\+NE}) \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a9f26d9f67413c6c194a2f5e4bd69b911}\label{mdi_8c_a9f26d9f67413c6c194a2f5e4bd69b911}} 
\index{mdi.c@{mdi.c}!MDI\_Init@{MDI\_Init}}
\index{MDI\_Init@{MDI\_Init}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Init()}{MDI\_Init()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Init (\begin{DoxyParamCaption}\item[{int $\ast$}]{argc,  }\item[{char $\ast$$\ast$$\ast$}]{argv }\end{DoxyParamCaption})}



Initialize communication through the M\+DI library. 

If using the \char`\"{}-\/method M\+P\+I\char`\"{} option, this function must be called by all ranks. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em argc} & Pointer to the number of arguments. \\
\hline
\mbox{\texttt{ in,out}}  & {\em argv} & Pointer to the argument vector. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_ac3f53714251da5894df2f52a4100b990}\label{mdi_8c_ac3f53714251da5894df2f52a4100b990}} 
\index{mdi.c@{mdi.c}!MDI\_Init\_code@{MDI\_Init\_code}}
\index{MDI\_Init\_code@{MDI\_Init\_code}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Init\_code()}{MDI\_Init\_code()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Init\+\_\+code (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Initialize a code structure for the M\+DI library. 

The function returns {\ttfamily 0} on a success. \mbox{\Hypertarget{mdi_8c_a3af6852f1a469d0a6bd8113a3ff0260d}\label{mdi_8c_a3af6852f1a469d0a6bd8113a3ff0260d}} 
\index{mdi.c@{mdi.c}!MDI\_Init\_with\_argv@{MDI\_Init\_with\_argv}}
\index{MDI\_Init\_with\_argv@{MDI\_Init\_with\_argv}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Init\_with\_argv()}{MDI\_Init\_with\_argv()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Init\+\_\+with\+\_\+argv (\begin{DoxyParamCaption}\item[{int $\ast$}]{argc,  }\item[{char $\ast$$\ast$$\ast$}]{argv }\end{DoxyParamCaption})}



Initialize communication through the M\+DI library. 

If using the \char`\"{}-\/method M\+P\+I\char`\"{} option, this function must be called by all ranks. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em argc} & Pointer to the number of arguments. \\
\hline
\mbox{\texttt{ in,out}}  & {\em argv} & Pointer to the argument vector. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a26633c213f6f1c08d5795f2ffffde620}\label{mdi_8c_a26633c213f6f1c08d5795f2ffffde620}} 
\index{mdi.c@{mdi.c}!MDI\_Init\_with\_options@{MDI\_Init\_with\_options}}
\index{MDI\_Init\_with\_options@{MDI\_Init\_with\_options}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Init\_with\_options()}{MDI\_Init\_with\_options()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Init\+\_\+with\+\_\+options (\begin{DoxyParamCaption}\item[{const char $\ast$}]{options }\end{DoxyParamCaption})}



Initialize communication through the M\+DI library. 

If using the \char`\"{}-\/method M\+P\+I\char`\"{} option, this function must be called by all ranks. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em options} & Options describing the communication method used to connect to codes. \\
\hline
\mbox{\texttt{ in,out}}  & {\em world\+\_\+comm} & On input, the M\+PI communicator that spans all of the codes. On output, the M\+PI communicator that spans the single code corresponding to the calling rank. Only used if the \char`\"{}-\/method M\+P\+I\char`\"{} option is provided. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a82aaa736f9d174c7663ad80a97089767}\label{mdi_8c_a82aaa736f9d174c7663ad80a97089767}} 
\index{mdi.c@{mdi.c}!MDI\_Initialized@{MDI\_Initialized}}
\index{MDI\_Initialized@{MDI\_Initialized}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Initialized()}{MDI\_Initialized()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Initialized (\begin{DoxyParamCaption}\item[{int $\ast$}]{flag }\end{DoxyParamCaption})}



Indicates whether M\+D\+I\+\_\+\+Init has been called. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em flag} & Flag is true if and only if M\+D\+I\+\_\+\+Init has been called. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_abea4cba4cc69b71123511d34beb28277}\label{mdi_8c_abea4cba4cc69b71123511d34beb28277}} 
\index{mdi.c@{mdi.c}!MDI\_Launch\_plugin@{MDI\_Launch\_plugin}}
\index{MDI\_Launch\_plugin@{MDI\_Launch\_plugin}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Launch\_plugin()}{MDI\_Launch\_plugin()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Launch\+\_\+plugin (\begin{DoxyParamCaption}\item[{const char $\ast$}]{plugin\+\_\+name,  }\item[{const char $\ast$}]{options,  }\item[{void $\ast$}]{mpi\+\_\+comm\+\_\+ptr,  }\item[{M\+D\+I\+\_\+\+Driver\+\_\+node\+\_\+callback\+\_\+t}]{driver\+\_\+node\+\_\+callback,  }\item[{void $\ast$}]{driver\+\_\+callback\+\_\+object }\end{DoxyParamCaption})}



Launch an M\+DI plugin instance. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plugin\+\_\+name} & Name of the plugin. \\
\hline
\mbox{\texttt{ in}}  & {\em options} & Command-\/line options for the plugin. \\
\hline
\mbox{\texttt{ in}}  & {\em mpi\+\_\+comm\+\_\+ptr} & Pointer to an M\+PI intra-\/communicator that spans all ranks that will run this plugin instance. \\
\hline
\mbox{\texttt{ in}}  & {\em driver\+\_\+node\+\_\+callback} & Function pointer to the driver code that will be executed on this engine. \\
\hline
\mbox{\texttt{ in}}  & {\em driver\+\_\+callback\+\_\+object} & Pointer to the object instance of which driver\+\_\+node\+\_\+callback is a class member. Should be set void if driver\+\_\+node\+\_\+callback is not a member of a class. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a1792db6705a7032640af46d5b05d23f4}\label{mdi_8c_a1792db6705a7032640af46d5b05d23f4}} 
\index{mdi.c@{mdi.c}!MDI\_MPI\_get\_world\_comm@{MDI\_MPI\_get\_world\_comm}}
\index{MDI\_MPI\_get\_world\_comm@{MDI\_MPI\_get\_world\_comm}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_MPI\_get\_world\_comm()}{MDI\_MPI\_get\_world\_comm()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+M\+P\+I\+\_\+get\+\_\+world\+\_\+comm (\begin{DoxyParamCaption}\item[{void $\ast$}]{world\+\_\+comm }\end{DoxyParamCaption})}



Obtain the M\+PI communicator that spans the single code corresponding to the calling rank. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em world\+\_\+comm} & On output, the M\+PI communicator that spans the single code corresponding to the calling rank. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_af305dbbeb2de3f39edb26c5287ecd845}\label{mdi_8c_af305dbbeb2de3f39edb26c5287ecd845}} 
\index{mdi.c@{mdi.c}!MDI\_MPI\_set\_world\_comm@{MDI\_MPI\_set\_world\_comm}}
\index{MDI\_MPI\_set\_world\_comm@{MDI\_MPI\_set\_world\_comm}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_MPI\_set\_world\_comm()}{MDI\_MPI\_set\_world\_comm()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+M\+P\+I\+\_\+set\+\_\+world\+\_\+comm (\begin{DoxyParamCaption}\item[{void $\ast$}]{world\+\_\+comm }\end{DoxyParamCaption})}



Set the M\+PI communicator that spans the single code corresponding to the calling rank. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em world\+\_\+comm} & The M\+PI communicator that spans the single code corresponding to the calling rank. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a7539c31ccab77c6d55cb0c8e23f5fdf5}\label{mdi_8c_a7539c31ccab77c6d55cb0c8e23f5fdf5}} 
\index{mdi.c@{mdi.c}!MDI\_Open\_plugin@{MDI\_Open\_plugin}}
\index{MDI\_Open\_plugin@{MDI\_Open\_plugin}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Open\_plugin()}{MDI\_Open\_plugin()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Open\+\_\+plugin (\begin{DoxyParamCaption}\item[{const char $\ast$}]{plugin\+\_\+name,  }\item[{const char $\ast$}]{options,  }\item[{void $\ast$}]{mpi\+\_\+comm\+\_\+ptr,  }\item[{M\+D\+I\+\_\+\+Comm $\ast$}]{mdi\+\_\+comm\+\_\+ptr }\end{DoxyParamCaption})}



Open an M\+DI plugin instance in the background. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em plugin\+\_\+name} & Name of the plugin. \\
\hline
\mbox{\texttt{ in}}  & {\em options} & Command-\/line options for the plugin. \\
\hline
\mbox{\texttt{ in}}  & {\em mpi\+\_\+comm\+\_\+ptr} & Pointer to an M\+PI intra-\/communicator that spans all ranks that will run this plugin instance. \\
\hline
\mbox{\texttt{ out}}  & {\em mdi\+\_\+comm\+\_\+ptr} & Pointer to an M\+DI communicator for communication with the launched plugin. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_ac69f5e1cea7115d324cadd207c216081}\label{mdi_8c_ac69f5e1cea7115d324cadd207c216081}} 
\index{mdi.c@{mdi.c}!MDI\_Plugin\_get\_arg@{MDI\_Plugin\_get\_arg}}
\index{MDI\_Plugin\_get\_arg@{MDI\_Plugin\_get\_arg}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Plugin\_get\_arg()}{MDI\_Plugin\_get\_arg()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+arg (\begin{DoxyParamCaption}\item[{int}]{index,  }\item[{char $\ast$$\ast$}]{arg\+\_\+ptr }\end{DoxyParamCaption})}



Get a specific element from plugin\+\_\+argv. 

\mbox{\Hypertarget{mdi_8c_ab4e86ef9c4bb12e90d8e07be2e5cf6d9}\label{mdi_8c_ab4e86ef9c4bb12e90d8e07be2e5cf6d9}} 
\index{mdi.c@{mdi.c}!MDI\_Plugin\_get\_argc@{MDI\_Plugin\_get\_argc}}
\index{MDI\_Plugin\_get\_argc@{MDI\_Plugin\_get\_argc}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Plugin\_get\_argc()}{MDI\_Plugin\_get\_argc()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+argc (\begin{DoxyParamCaption}\item[{int $\ast$}]{argc\+\_\+ptr }\end{DoxyParamCaption})}



Get plugin\+\_\+argc. 

\mbox{\Hypertarget{mdi_8c_a4b7c5d301e092db15578ae745ffa0913}\label{mdi_8c_a4b7c5d301e092db15578ae745ffa0913}} 
\index{mdi.c@{mdi.c}!MDI\_Plugin\_get\_args@{MDI\_Plugin\_get\_args}}
\index{MDI\_Plugin\_get\_args@{MDI\_Plugin\_get\_args}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Plugin\_get\_args()}{MDI\_Plugin\_get\_args()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+args (\begin{DoxyParamCaption}\item[{char $\ast$$\ast$}]{args\+\_\+ptr }\end{DoxyParamCaption})}



Get plugin\+\_\+unedited\+\_\+options. 

\mbox{\Hypertarget{mdi_8c_abebb0265894fbfcced765d9688719355}\label{mdi_8c_abebb0265894fbfcced765d9688719355}} 
\index{mdi.c@{mdi.c}!MDI\_Plugin\_get\_argv@{MDI\_Plugin\_get\_argv}}
\index{MDI\_Plugin\_get\_argv@{MDI\_Plugin\_get\_argv}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Plugin\_get\_argv()}{MDI\_Plugin\_get\_argv()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Plugin\+\_\+get\+\_\+argv (\begin{DoxyParamCaption}\item[{char $\ast$$\ast$$\ast$}]{argv\+\_\+ptr }\end{DoxyParamCaption})}



Get plugin\+\_\+argv. 

\mbox{\Hypertarget{mdi_8c_ab73f32323a155011fcc184866215ba03}\label{mdi_8c_ab73f32323a155011fcc184866215ba03}} 
\index{mdi.c@{mdi.c}!MDI\_Recv@{MDI\_Recv}}
\index{MDI\_Recv@{MDI\_Recv}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Recv()}{MDI\_Recv()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Recv (\begin{DoxyParamCaption}\item[{void $\ast$}]{buf,  }\item[{int}]{count,  }\item[{M\+D\+I\+\_\+\+Datatype}]{datatype,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Receive data through the M\+DI connection. 

If running with M\+PI, this function must be called only by rank {\ttfamily 0}. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & Pointer to the buffer where the received data will be stored. \\
\hline
\mbox{\texttt{ in}}  & {\em count} & Number of values (integers, double precision floats, characters, etc.) to be received. \\
\hline
\mbox{\texttt{ in}}  & {\em datatype} & M\+DI handle (M\+D\+I\+\_\+\+I\+NT, M\+D\+I\+\_\+\+D\+O\+U\+B\+LE, M\+D\+I\+\_\+\+C\+H\+AR, etc.) corresponding to the type of data to be received. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator associated with the connection to the sending code. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_ab03c0ea8beda690d6f796d3089cbfe15}\label{mdi_8c_ab03c0ea8beda690d6f796d3089cbfe15}} 
\index{mdi.c@{mdi.c}!MDI\_Recv\_Command@{MDI\_Recv\_Command}}
\index{MDI\_Recv\_Command@{MDI\_Recv\_Command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Recv\_Command()}{MDI\_Recv\_Command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Recv\+\_\+\+Command (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Receive a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. 

If running with M\+PI, this function must be called only by rank {\ttfamily 0}. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & Pointer to the buffer where the received data will be stored. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator associated with the connection to the sending code. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a537752bd942b19cf0a2fd6adafb10a48}\label{mdi_8c_a537752bd942b19cf0a2fd6adafb10a48}} 
\index{mdi.c@{mdi.c}!MDI\_Recv\_command@{MDI\_Recv\_command}}
\index{MDI\_Recv\_command@{MDI\_Recv\_command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Recv\_command()}{MDI\_Recv\_command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Recv\+\_\+command (\begin{DoxyParamCaption}\item[{char $\ast$}]{buf,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Receive a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. 

If running with M\+PI, this function must be called only by rank {\ttfamily 0}. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & Pointer to the buffer where the received data will be stored. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator associated with the connection to the sending code. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a528561da9c075413ed1cda7cef73ff66}\label{mdi_8c_a528561da9c075413ed1cda7cef73ff66}} 
\index{mdi.c@{mdi.c}!MDI\_Register\_Callback@{MDI\_Register\_Callback}}
\index{MDI\_Register\_Callback@{MDI\_Register\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Register\_Callback()}{MDI\_Register\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Register\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{callback\+\_\+name }\end{DoxyParamCaption})}



Register a callback on a specified node. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the callback will be registered. \\
\hline
\mbox{\texttt{ in}}  & {\em callback\+\_\+name} & Name of the callback. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a7e6ed80591bf70b26e4916a1804af8d1}\label{mdi_8c_a7e6ed80591bf70b26e4916a1804af8d1}} 
\index{mdi.c@{mdi.c}!MDI\_Register\_callback@{MDI\_Register\_callback}}
\index{MDI\_Register\_callback@{MDI\_Register\_callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Register\_callback()}{MDI\_Register\_callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Register\+\_\+callback (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{callback\+\_\+name }\end{DoxyParamCaption})}



Register a callback on a specified node. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the callback will be registered. \\
\hline
\mbox{\texttt{ in}}  & {\em callback\+\_\+name} & Name of the callback. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a8eade50fb64b5bf5919b35cc2071952d}\label{mdi_8c_a8eade50fb64b5bf5919b35cc2071952d}} 
\index{mdi.c@{mdi.c}!MDI\_Register\_Command@{MDI\_Register\_Command}}
\index{MDI\_Register\_Command@{MDI\_Register\_Command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Register\_Command()}{MDI\_Register\_Command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Register\+\_\+\+Command (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{command\+\_\+name }\end{DoxyParamCaption})}



Register a command on a specified node. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the command will be registered. \\
\hline
\mbox{\texttt{ in}}  & {\em command\+\_\+name} & Name of the command. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a6c9047a0e290090af2d8a2fc3a04d44d}\label{mdi_8c_a6c9047a0e290090af2d8a2fc3a04d44d}} 
\index{mdi.c@{mdi.c}!MDI\_Register\_command@{MDI\_Register\_command}}
\index{MDI\_Register\_command@{MDI\_Register\_command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Register\_command()}{MDI\_Register\_command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Register\+\_\+command (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name,  }\item[{const char $\ast$}]{command\+\_\+name }\end{DoxyParamCaption})}



Register a command on a specified node. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node on which the command will be registered. \\
\hline
\mbox{\texttt{ in}}  & {\em command\+\_\+name} & Name of the command. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_ada45c73f15462764df0ac9e733b7d18e}\label{mdi_8c_ada45c73f15462764df0ac9e733b7d18e}} 
\index{mdi.c@{mdi.c}!MDI\_Register\_Node@{MDI\_Register\_Node}}
\index{MDI\_Register\_Node@{MDI\_Register\_Node}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Register\_Node()}{MDI\_Register\_Node()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Register\+\_\+\+Node (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name }\end{DoxyParamCaption})}



Register a node. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_ae191ab5848b0c586643f63412a18dcf2}\label{mdi_8c_ae191ab5848b0c586643f63412a18dcf2}} 
\index{mdi.c@{mdi.c}!MDI\_Register\_node@{MDI\_Register\_node}}
\index{MDI\_Register\_node@{MDI\_Register\_node}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Register\_node()}{MDI\_Register\_node()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Register\+\_\+node (\begin{DoxyParamCaption}\item[{const char $\ast$}]{node\+\_\+name }\end{DoxyParamCaption})}



Register a node. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em node\+\_\+name} & Name of the node. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a7bebce6d5fa91ee99a34fdcc5dcaedea}\label{mdi_8c_a7bebce6d5fa91ee99a34fdcc5dcaedea}} 
\index{mdi.c@{mdi.c}!MDI\_Send@{MDI\_Send}}
\index{MDI\_Send@{MDI\_Send}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Send()}{MDI\_Send()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Send (\begin{DoxyParamCaption}\item[{const void $\ast$}]{buf,  }\item[{int}]{count,  }\item[{M\+D\+I\+\_\+\+Datatype}]{datatype,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Send data through the M\+DI connection. 

If running with M\+PI, this function must be called only by rank {\ttfamily 0}. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & Pointer to the data to be sent. \\
\hline
\mbox{\texttt{ in}}  & {\em count} & Number of values (integers, double precision floats, characters, etc.) to be sent. \\
\hline
\mbox{\texttt{ in}}  & {\em datatype} & M\+DI handle (M\+D\+I\+\_\+\+I\+NT, M\+D\+I\+\_\+\+D\+O\+U\+B\+LE, M\+D\+I\+\_\+\+C\+H\+AR, etc.) corresponding to the type of data to be sent. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator associated with the intended recipient code. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a77e579331a36c3f0eb7f7ff9668e789d}\label{mdi_8c_a77e579331a36c3f0eb7f7ff9668e789d}} 
\index{mdi.c@{mdi.c}!MDI\_Send\_Command@{MDI\_Send\_Command}}
\index{MDI\_Send\_Command@{MDI\_Send\_Command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Send\_Command()}{MDI\_Send\_Command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Send\+\_\+\+Command (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Send a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. 

If running with M\+PI, this function must be called only by rank {\ttfamily 0}. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & Pointer to the data to be sent. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator associated with the intended recipient code. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a3fa5769d2a6d0ad305fdaa12b048056e}\label{mdi_8c_a3fa5769d2a6d0ad305fdaa12b048056e}} 
\index{mdi.c@{mdi.c}!MDI\_Send\_command@{MDI\_Send\_command}}
\index{MDI\_Send\_command@{MDI\_Send\_command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Send\_command()}{MDI\_Send\_command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Send\+\_\+command (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{M\+D\+I\+\_\+\+Comm}]{comm }\end{DoxyParamCaption})}



Send a command of length {\ttfamily M\+D\+I\+\_\+\+C\+O\+M\+M\+A\+N\+D\+\_\+\+L\+E\+N\+G\+TH} through the M\+DI connection. 

If running with M\+PI, this function must be called only by rank {\ttfamily 0}. The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em buf} & Pointer to the data to be sent. \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator associated with the intended recipient code. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a4169a23467c48cde8a261efdfb3072b1}\label{mdi_8c_a4169a23467c48cde8a261efdfb3072b1}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Execute\_Command\_Func@{MDI\_Set\_Execute\_Command\_Func}}
\index{MDI\_Set\_Execute\_Command\_Func@{MDI\_Set\_Execute\_Command\_Func}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Execute\_Command\_Func()}{MDI\_Set\_Execute\_Command\_Func()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Execute\+\_\+\+Command\+\_\+\+Func (\begin{DoxyParamCaption}\item[{int($\ast$)(const char $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$)}]{generic\+\_\+command,  }\item[{void $\ast$}]{class\+\_\+object }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+D\+I\+\_\+\+Execute\+\_\+\+Command. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em execute\+\_\+command} & Function pointer to the generic execute\+\_\+command function \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_af0d4ca403e5b9d4e4e5d0f7a63ab346c}\label{mdi_8c_af0d4ca403e5b9d4e4e5d0f7a63ab346c}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_execute\_command\_func@{MDI\_Set\_execute\_command\_func}}
\index{MDI\_Set\_execute\_command\_func@{MDI\_Set\_execute\_command\_func}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_execute\_command\_func()}{MDI\_Set\_execute\_command\_func()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+execute\+\_\+command\+\_\+func (\begin{DoxyParamCaption}\item[{int($\ast$)(const char $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$)}]{generic\+\_\+command,  }\item[{void $\ast$}]{class\+\_\+object }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+D\+I\+\_\+\+Execute\+\_\+\+Command. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em execute\+\_\+command} & Function pointer to the generic execute\+\_\+command function \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a7589a51fcc42702126188bd8fbd80b1b}\label{mdi_8c_a7589a51fcc42702126188bd8fbd80b1b}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_language\_driver\_callback@{MDI\_Set\_language\_driver\_callback}}
\index{MDI\_Set\_language\_driver\_callback@{MDI\_Set\_language\_driver\_callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_language\_driver\_callback()}{MDI\_Set\_language\_driver\_callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+language\+\_\+driver\+\_\+callback (\begin{DoxyParamCaption}\item[{M\+D\+I\+\_\+\+Driver\+\_\+node\+\_\+callback\+\_\+f90\+\_\+t}]{callback }\end{DoxyParamCaption})}



Set the language-\/specific driver\+\_\+callback function needed by a language wrapper. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em callback} & Driver callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a17be79ed7246c8b78975987fe4b275fe}\label{mdi_8c_a17be79ed7246c8b78975987fe4b275fe}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_language\_execute\_command@{MDI\_Set\_language\_execute\_command}}
\index{MDI\_Set\_language\_execute\_command@{MDI\_Set\_language\_execute\_command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_language\_execute\_command()}{MDI\_Set\_language\_execute\_command()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+language\+\_\+execute\+\_\+command (\begin{DoxyParamCaption}\item[{int($\ast$)(void $\ast$, M\+D\+I\+\_\+\+Comm, void $\ast$)}]{execute\+\_\+command }\end{DoxyParamCaption})}



Set the language execute\+\_\+command function needed by a language wrapper. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em execute\+\_\+command} & Execute command callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_af1f1e65f7942e4c85bc8353b93c10efc}\label{mdi_8c_af1f1e65f7942e4c85bc8353b93c10efc}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Launch\_Plugin\_Callback@{MDI\_Set\_Launch\_Plugin\_Callback}}
\index{MDI\_Set\_Launch\_Plugin\_Callback@{MDI\_Set\_Launch\_Plugin\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Launch\_Plugin\_Callback()}{MDI\_Set\_Launch\_Plugin\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Launch\+\_\+\+Plugin\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(void $\ast$, void $\ast$, void $\ast$, int)}]{launch\+\_\+plugin }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+D\+I\+\_\+\+Plugin\+\_\+init when the driver is in Python. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em launch\+\_\+plugin} & Function pointer to the launch\+\_\+plugin callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a9db0aed6228db1309a14926b7009f064}\label{mdi_8c_a9db0aed6228db1309a14926b7009f064}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Allgather\_Callback@{MDI\_Set\_Mpi4py\_Allgather\_Callback}}
\index{MDI\_Set\_Mpi4py\_Allgather\_Callback@{MDI\_Set\_Mpi4py\_Allgather\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Allgather\_Callback()}{MDI\_Set\_Mpi4py\_Allgather\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Allgather\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(void $\ast$, void $\ast$)}]{mpi4py\+\_\+allgather }\end{DoxyParamCaption})}



Set the callback M\+DI uses for gathering M\+DI versions when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+allgather} & Function pointer to the mpi4py\+\_\+allgather callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_aaf70b8b181eca7c16d282e548b029ad6}\label{mdi_8c_aaf70b8b181eca7c16d282e548b029ad6}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Barrier\_Callback@{MDI\_Set\_Mpi4py\_Barrier\_Callback}}
\index{MDI\_Set\_Mpi4py\_Barrier\_Callback@{MDI\_Set\_Mpi4py\_Barrier\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Barrier\_Callback()}{MDI\_Set\_Mpi4py\_Barrier\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Barrier\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(int)}]{mpi4py\+\_\+barrier }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+P\+I\+\_\+\+Barrier when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+barrier} & Function pointer to the mpi4py\+\_\+barrier callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a5cf6a719d2fbfb403b16ec7b282a2f4b}\label{mdi_8c_a5cf6a719d2fbfb403b16ec7b282a2f4b}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Gather\_Names\_Callback@{MDI\_Set\_Mpi4py\_Gather\_Names\_Callback}}
\index{MDI\_Set\_Mpi4py\_Gather\_Names\_Callback@{MDI\_Set\_Mpi4py\_Gather\_Names\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Gather\_Names\_Callback()}{MDI\_Set\_Mpi4py\_Gather\_Names\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Gather\+\_\+\+Names\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(void $\ast$, void $\ast$, int $\ast$, int $\ast$)}]{mpi4py\+\_\+gather\+\_\+names }\end{DoxyParamCaption})}



Set the callback M\+DI uses for gathering code names when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+gather\+\_\+names} & Function pointer to the mpi4py\+\_\+gather\+\_\+names callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a53e71934347df0c03fe72e4ace5037b3}\label{mdi_8c_a53e71934347df0c03fe72e4ace5037b3}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Rank\_Callback@{MDI\_Set\_Mpi4py\_Rank\_Callback}}
\index{MDI\_Set\_Mpi4py\_Rank\_Callback@{MDI\_Set\_Mpi4py\_Rank\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Rank\_Callback()}{MDI\_Set\_Mpi4py\_Rank\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Rank\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(int)}]{mpi4py\+\_\+rank }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+P\+I\+\_\+\+Comm\+\_\+rank when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+rank} & Function pointer to the mpi4py\+\_\+rank callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_acb8c9a81546e101e143ff9b4dbb77f66}\label{mdi_8c_acb8c9a81546e101e143ff9b4dbb77f66}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Recv\_Callback@{MDI\_Set\_Mpi4py\_Recv\_Callback}}
\index{MDI\_Set\_Mpi4py\_Recv\_Callback@{MDI\_Set\_Mpi4py\_Recv\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Recv\_Callback()}{MDI\_Set\_Mpi4py\_Recv\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Recv\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(void $\ast$, int, int, int, M\+D\+I\+\_\+\+Comm)}]{mpi4py\+\_\+recv }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+P\+I\+\_\+\+Recv when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+recv} & Function pointer to the mpi4py\+\_\+recv callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a1b35deeba881ba247f54c0c7a7fa9541}\label{mdi_8c_a1b35deeba881ba247f54c0c7a7fa9541}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Send\_Callback@{MDI\_Set\_Mpi4py\_Send\_Callback}}
\index{MDI\_Set\_Mpi4py\_Send\_Callback@{MDI\_Set\_Mpi4py\_Send\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Send\_Callback()}{MDI\_Set\_Mpi4py\_Send\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Send\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(void $\ast$, int, int, int, M\+D\+I\+\_\+\+Comm)}]{mpi4py\+\_\+send }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+P\+I\+\_\+\+Send when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+send} & Function pointer to the mpi4py\+\_\+send callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_adc63c403ea182348f1949b6fbec8f788}\label{mdi_8c_adc63c403ea182348f1949b6fbec8f788}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Size\_Callback@{MDI\_Set\_Mpi4py\_Size\_Callback}}
\index{MDI\_Set\_Mpi4py\_Size\_Callback@{MDI\_Set\_Mpi4py\_Size\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Size\_Callback()}{MDI\_Set\_Mpi4py\_Size\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Size\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(int)}]{mpi4py\+\_\+size }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+P\+I\+\_\+\+Comm\+\_\+size when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+size} & Function pointer to the mpi4py\+\_\+size callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a90b4daf2a55ea45f18c8120e61bf09dd}\label{mdi_8c_a90b4daf2a55ea45f18c8120e61bf09dd}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_Mpi4py\_Split\_Callback@{MDI\_Set\_Mpi4py\_Split\_Callback}}
\index{MDI\_Set\_Mpi4py\_Split\_Callback@{MDI\_Set\_Mpi4py\_Split\_Callback}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_Mpi4py\_Split\_Callback()}{MDI\_Set\_Mpi4py\_Split\_Callback()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+\+Mpi4py\+\_\+\+Split\+\_\+\+Callback (\begin{DoxyParamCaption}\item[{int($\ast$)(int, int, M\+D\+I\+\_\+\+Comm, int)}]{mpi4py\+\_\+split }\end{DoxyParamCaption})}



Set the callback M\+DI uses for M\+P\+I\+\_\+\+Split when using mpi4py. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em mpi4py\+\_\+split} & Function pointer to the mpi4py\+\_\+split callback \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a5d1fb9bd79c1c84057455fd5dc974f19}\label{mdi_8c_a5d1fb9bd79c1c84057455fd5dc974f19}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_on\_destroy\_code@{MDI\_Set\_on\_destroy\_code}}
\index{MDI\_Set\_on\_destroy\_code@{MDI\_Set\_on\_destroy\_code}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_on\_destroy\_code()}{MDI\_Set\_on\_destroy\_code()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+on\+\_\+destroy\+\_\+code (\begin{DoxyParamCaption}\item[{int($\ast$)(int)}]{func }\end{DoxyParamCaption})}



Set the language-\/based callback for when a code is destroyed. 

This is currently only used by Fortran plugins \mbox{\Hypertarget{mdi_8c_a9ecbc257bc3d76f8d108f6b720fd579a}\label{mdi_8c_a9ecbc257bc3d76f8d108f6b720fd579a}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_plugin\_language@{MDI\_Set\_plugin\_language}}
\index{MDI\_Set\_plugin\_language@{MDI\_Set\_plugin\_language}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_plugin\_language()}{MDI\_Set\_plugin\_language()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+plugin\+\_\+language (\begin{DoxyParamCaption}\item[{int}]{language,  }\item[{void $\ast$}]{plugin\+\_\+state }\end{DoxyParamCaption})}



Set the language of an M\+DI plugin. 

The function returns {\ttfamily 0} on a success.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em language} & Language of the plugin \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{mdi_8c_a68ecdd9f61501109910f493a1ed4b6dd}\label{mdi_8c_a68ecdd9f61501109910f493a1ed4b6dd}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_plugin\_state\_internal@{MDI\_Set\_plugin\_state\_internal}}
\index{MDI\_Set\_plugin\_state\_internal@{MDI\_Set\_plugin\_state\_internal}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_plugin\_state\_internal()}{MDI\_Set\_plugin\_state\_internal()}}
{\footnotesize\ttfamily int M\+D\+I\+\_\+\+Set\+\_\+plugin\+\_\+state\+\_\+internal (\begin{DoxyParamCaption}\item[{void $\ast$}]{state }\end{DoxyParamCaption})}



Set the language-\/based callback for when a code is destroyed. 

This is only intended to be used internally by the M\+DI Library \mbox{\Hypertarget{mdi_8c_a4b95094e7410c4d58739245172019100}\label{mdi_8c_a4b95094e7410c4d58739245172019100}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_World\_Rank@{MDI\_Set\_World\_Rank}}
\index{MDI\_Set\_World\_Rank@{MDI\_Set\_World\_Rank}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_World\_Rank()}{MDI\_Set\_World\_Rank()}}
{\footnotesize\ttfamily void M\+D\+I\+\_\+\+Set\+\_\+\+World\+\_\+\+Rank (\begin{DoxyParamCaption}\item[{int}]{world\+\_\+rank\+\_\+in }\end{DoxyParamCaption})}



Set the rank of this process within M\+P\+I\+\_\+\+C\+O\+M\+M\+\_\+\+W\+O\+R\+LD. 

This function is only used if the linked program uses M\+P\+I4\+PY. \mbox{\Hypertarget{mdi_8c_a8d6c16394da02c29977001487ce109f2}\label{mdi_8c_a8d6c16394da02c29977001487ce109f2}} 
\index{mdi.c@{mdi.c}!MDI\_Set\_World\_Size@{MDI\_Set\_World\_Size}}
\index{MDI\_Set\_World\_Size@{MDI\_Set\_World\_Size}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Set\_World\_Size()}{MDI\_Set\_World\_Size()}}
{\footnotesize\ttfamily void M\+D\+I\+\_\+\+Set\+\_\+\+World\+\_\+\+Size (\begin{DoxyParamCaption}\item[{int}]{world\+\_\+size\+\_\+in }\end{DoxyParamCaption})}



Set the size of M\+P\+I\+\_\+\+C\+O\+M\+M\+\_\+\+W\+O\+R\+LD. 

This function is only used if the linked program uses M\+P\+I4\+PY. 

\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{mdi_8c_a5e4ead94fc691b76201e41e0c4404d96}\label{mdi_8c_a5e4ead94fc691b76201e41e0c4404d96}} 
\index{mdi.c@{mdi.c}!MDI\_Get\_language\_execute\_command@{MDI\_Get\_language\_execute\_command}}
\index{MDI\_Get\_language\_execute\_command@{MDI\_Get\_language\_execute\_command}!mdi.c@{mdi.c}}
\doxysubsubsection{\texorpdfstring{MDI\_Get\_language\_execute\_command}{MDI\_Get\_language\_execute\_command}}
{\footnotesize\ttfamily int($\ast$)(void$\ast$, M\+D\+I\+\_\+\+Comm, void$\ast$) M\+D\+I\+\_\+\+Get\+\_\+language\+\_\+execute\+\_\+command(M\+D\+I\+\_\+\+Comm comm)}



Get the language execute\+\_\+command function needed by a language wrapper. 

The function returns a function pointer to the execute\+\_\+command function.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em execute\+\_\+command} & Execute command callback \\
\hline
\mbox{\texttt{ in}}  & {\em comm} & M\+DI communicator \\
\hline
\end{DoxyParams}
