\par
\section{Driver programs for the {\tt MSMD} object}
\label{section:MSMD:drivers}
\par
This section contains brief descriptions of four driver programs.
\par
%=======================================================================
\begin{enumerate}
%-----------------------------------------------------------------------
\item
\begin{verbatim}
orderViaMMD msglvl msgFile inGraphFile seed compressFlag prioType 
   stepType outOldToNewIVfile outNewToOldIVfile outETreeFile 
\end{verbatim}
This driver program orders a graph using the multiple minimum
degree algorithm --- exactly which algorithm is controlled by the
input parameters.
\par
\begin{itemize}
\item
The {\tt msglvl} parameter determines the amount of output.
\item
The {\tt msgFile} parameter determines the message file --- if {\tt
msgFile} is {\tt stdout}, then the output file is {\it stdout},
otherwise a file is opened with {\it append} status to receive any
output data.
\item
The {\tt inGraphFile} parameter is the input file for the {\tt Graph}
object. It must be of the form {\tt *.graphf} or {\tt *.graphb}.
The {\tt Graph} object is read from the file via the
{\tt Graph\_readFromFile()} method.
\item
The {\tt seed} parameter is a random number seed.
\item
The {\tt compressFlag} parameter controls the compression of the
graph (identifying indistinguishable nodes) 
before and during the elimination process.
\begin{itemize}
\item 
{\tt compressFlag / 4 >= 1} --- a compression step is done
before elimination.
\item 
{\tt compressFlag \% 4 == 2} --- compress after each elimination step,
consider all nodes.
\item 
{\tt compressFlag \% 4 == 1} --- compress after each elimination step,
consider only 2-adjacent nodes (the most likely to form
indistinguishable nodes).
\item 
{\tt compressFlag \% 4 == 0} --- do no compression.
\end{itemize}
\item
The {\tt prioType} parameter controls the type of priority that is
used to choose nodes to eliminate.
\begin{itemize}
\item 
{\tt prioType == 1} --- true external degree.
\item 
{\tt prioType == 2} --- approximate external degree.
\item 
{\tt prioType == 3} --- true external degree for 2-adjacent nodes,
approximate external degree for the others.
\item 
{\tt prioType == 4} --- priority of each node is zero; this
implies random elimination.
\end{itemize}
\item
The {\tt stepType} parameter controls the type of multiple
elimination to be done.
\begin{itemize}
\item 
{\tt stepType == 0} --- one vertex eliminated at each step,
like YSMP, and QMD from SPARSPAK.
\item 
{\tt stepType == 1} --- regular multiple elimination, e.g., GENMMD.
\item 
{\tt stepType > 1} --- vertices whose priority lies between
the minimum priority and {\tt stepType} times the minimum priority
are eligible for elimination at a step.
\end{itemize}
\item
The {\tt outOldToNewIVfile} parameter is the output file for the 
{\tt IV} object that contains the old-to-new permutation vector.
If {\tt outOldToNewIVfile} is {\tt "none"}, then there is no output,
otherwise {\tt outOldToNewIVfile} 
must be of the form {\tt *.ivf} or {\tt *.ivb}.
\item
The {\tt outNewToOldIVfile} parameter is the output file for the 
{\tt IV} object that contains the new-to-old permutation vector.
If {\tt outNewToOldIVfile} is {\tt "none"}, then there is no output,
otherwise {\tt outNewToOldIVfile} 
must be of the form {\tt *.ivf} or {\tt *.ivb}.
\item
The {\tt outETreeFile} parameter is the output file for the 
{\tt ETree} object that contains the front tree for the ordering.
If {\tt outETreeFile} is {\tt "none"}, then there is no output,
otherwise {\tt outETreeFile} 
must be of the form {\tt *.etreef} or {\tt *.etreeb}.
\end{itemize}
%-----------------------------------------------------------------------
\item
\begin{verbatim}
orderViaND msglvl msgFile inGraphFile inDSTreeFile seed compressFlag 
   prioType stepType outOldToNewIVfile outNewToOldIVfile outETreeFile 
\end{verbatim}
This driver program orders a graph using the incomplete nested 
dissection algorithm.
The stages of elimination are generated by a {\tt DSTree} 
domain/separator tree object that is read in from the
{\tt inDSTreeFile} file.
All the other parameters are the same as for the {\tt orderViaMMD}
driver program.
%-----------------------------------------------------------------------
\item
\begin{verbatim}
orderViaMS msglvl msgFile inGraphFile inDSTreeFile seed compressFlag 
   prioType stepType outOldToNewIVfile outNewToOldIVfile outETreeFile 
\end{verbatim}
This driver program orders a graph using the multisection algorithm.
The stages of elimination are generated by a {\tt DSTree} 
domain/separator tree object that is read in from the
{\tt inDSTreeFile} file.
All the other parameters are the same as for the {\tt orderViaMMD}
driver program.
%-----------------------------------------------------------------------
\item
\begin{verbatim}
orderViaStages msglvl msgFile inGraphFile inStagesIVfile seed compressFlag 
   prioType stepType outOldToNewIVfile outNewToOldIVfile outETreeFile 
\end{verbatim}
This driver program orders a graph using the multi-stage minimum
degree algorithm.
The stages of elimination are found in an {\tt IV} object that is
read in from the {\tt inStagesIVfile} file.
All the other parameters are the same as for the {\tt orderViaMMD}
driver program.
%-----------------------------------------------------------------------
\end{enumerate}
