1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
\par
\section{Data Structure}
\label{section:ILUMtx:dataStructure}
\par
\par
The {\tt ILUMtx} structure has the following fields.
\begin{itemize}
\item
{\tt int neqns} : number of equations.
\item
{\tt int type} : type of entries, {\tt SPOOLES\_REAL} or
{\tt SPOOLES\_COMPLEX}.
\item
{\tt int symmetryflag} : type of matrix symmetry,
{\tt SPOOLES\_SYMMETRIC}, {\tt SPOOLES\_HERMITIAN} or
{\tt SPOOLES\_NONSYMMETRIC}.
\item
{\tt int UstorageMode} : type of storage for $U$,
{\tt SPOOLES\_BY\_ROWS} or {\tt SPOOLES\_BY\_COLUMNS}.
\item
{\tt int LstorageMode} : type of storage for $L$,
{\tt SPOOLES\_BY\_ROWS} or {\tt SPOOLES\_BY\_COLUMNS}.
\item
{\tt double *entD} : vector of diagonal entries.
\item
{\tt int *sizesL} : vector of sizes of the off-diagonal vectors of $L$,
not used if the matrix is symmetric or Hermitian.
\item
{\tt int **p\_indL} : vector of pointers to the indicies vectors of $L$,
not used if the matrix is symmetric or Hermitian.
\item
{\tt double **p\_entL} : vector of pointers to the entries vectors
of $L$, not used if the matrix is symmetric or Hermitian.
\item
{\tt int *sizesU} : vector of sizes of the off-diagonal vectors of $U$.
\item
{\tt int **p\_indU} : vector of pointers to the indicies vectors of $U$.
\item
{\tt double **p\_entU} : vector of pointers to the entries vectors
of $U$.
\end{itemize}
\par
One can query the attributes of the object with the following
macros.
\begin{itemize}
\item
{\tt ILUMTX\_IS\_REAL(mtx)} returns {\tt 1}
if the entries are real, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_COMPLEX(mtx)} returns {\tt 1}
if the entries are complex, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_SYMMETRIC(mtx)} returns {\tt 1}
if the factorization is symmetric, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_HERMITIAN(mtx)} returns {\tt 1}
if the factorization is Hermitian, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_NONSYMMETRIC(mtx)} returns {\tt 1}
if the factorization is nonsymmetric, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_L\_BY\_ROWS(mtx)} returns {\tt 1}
if $L$ is stored by rows, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_L\_BY\_COLUMNS(mtx)} returns {\tt 1}
if $L$ is stored by columns, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_U\_BY\_ROWS(mtx)} returns {\tt 1}
if $U$ is stored by rows, and {\tt 0} otherwise.
\item
{\tt ILUMTX\_IS\_U\_BY\_COLUMNS(mtx)} returns {\tt 1}
if $U$ is stored by columns, and {\tt 0} otherwise.
\end{itemize}
|