\par
\section{Driver programs for the {\tt IVL} object}
\label{section:IVL:drivers}
\par
This section contains brief descriptions of six driver programs.
\par
%=======================================================================
\begin{enumerate}
%-----------------------------------------------------------------------
\item
\begin{verbatim}
testIO msglvl msgFile inFile outFile
\end{verbatim}
This driver program reads in a {\tt IVL} object from {\tt inFile}
and writes out the object to {\tt outFile}
\par
\begin{itemize}
\item
The {\tt msglvl} parameter determines the amount of output ---
taking {\tt msglvl >= 3} means the {\tt IVL} object is written
to the message file.
\item
The {\tt msgFile} parameter determines the message file --- if {\tt
msgFile} is {\tt stdout}, then the message file is {\it stdout},
otherwise a file is opened with {\it append} status to receive any
output data.
\item
The {\tt inFile} parameter is the input file for the {\tt IVL}
object. It must be of the form {\tt *.ivlf} or {\tt *.ivlb}.
The {\tt IVL} object is read from the file via the
{\tt IVL\_readFromFile()} method.
\item
The {\tt outFile} parameter is the output file for the {\tt IVL}
object. It must be of the form {\tt *.ivlf} or {\tt *.ivlb}.
The {\tt IVL} object is written to the file via the
{\tt IVL\_writeToFile()} method.
\end{itemize}
%-----------------------------------------------------------------------
\item
\begin{verbatim}
testExpand msglvl msgFile inIVLfile inEqmapFile outIVLfile
\end{verbatim}
This program is used to test the expand function.
One application is the symbolic factorization.
We need the adjacency structure of the factor matrix.
We could compute it directly from the original graph,
or we could compute the adjacency structure of the compressed
graph and then expand it into the full adjacency structure.
The second method is usually faster.
\par
\begin{itemize}
\item
The {\tt msglvl} parameter determines the amount of output ---
taking {\tt msglvl >= 3} means the {\tt IVL} object is written
to the message file.
\item
The {\tt msgFile} parameter determines the message file --- if {\tt
msgFile} is {\tt stdout}, then the message file is {\it stdout},
otherwise a file is opened with {\it append} status to receive any
output data.
\item
The {\tt inIVLfile} parameter is the input file for the first,
unexpanded {\tt IVL} object. 
It must be of the form {\tt *.ivlf} or {\tt *.ivlb}.
The {\tt IVL} object is read from the file via the
{\tt IVL\_readFromFile()} method.
\item
The {\tt inEqmapFile} parameter is the input file for the map from
uncompressed vertices to compressed vertices.
It must be of the form {\tt *.ivf} or {\tt *.ivb}.
The {\tt IV} object is read from the file via the
{\tt IV\_readFromFile()} method.
\item
The {\tt outIVLfile} parameter is the output file for the second,
expanded {\tt IVL} object. 
It must be of the form {\tt *.ivlf} or {\tt *.ivlb}.
The {\tt IVL} object is read from the file via the
{\tt IVL\_readFromFile()} method.
\end{itemize}
%-----------------------------------------------------------------------
\end{enumerate}
