TAUCS library contains several solvers and there are accordingly more classes in solver_taucs.cpp. Each solver has its own class:

`TAUCSllt`

– Cholesky decomposition column by column (slow);`TAUCSldlt`

– LDLT factorization for indefinite matrices (slow);`TAUCSllt_mf`

– Multifrontal supernodal Cholesky decomposition (the best among TAUCS library for positive definite matrices);`TAUCSllt_ll`

– Left-looking supernodal Cholesky decomposition;`TAUCSllt_ooc`

– Out-of-core sparse Cholesky decomposition;`TAUCSlu`

– Out-of-core sparse pivoting LU decomposition (rather slow);

but there are two more classes: `TAUCS`

and `TAUCSdirectLLT`

. The reason is that there is a general TAUCS infrastructure and many functions are the same for all solvers. As such, only class `TAUCS`

is derived from `LinearSolver`

and it implements functions common for all solvers. What is left are functions `factor`

, `mulInverseByVec`

, `isSymmetric`

and `clearFactor`

.

The class `TAUCSlu`

that implements the LU factorization for an unsymmetric matrix is not related to other solvers and it is derived directly from class `TAUCS`

. In its implementation at the end of the file solver_taucs.cpp you will find four functions that have not been coded in the class `TAUCS`

.

Other solvers do shares common features and first the class `TAUCSdirectLLT`

is derived from the class `TAUCS`

. It contains additional arrays necessary to perform permutations and it implements functions left in the class `TAUCS`

in terms of two additional pure virtual functions (`factoring`

and `substitution`

). Now classes `TAUCSllt`

, `TAUCSldlt`

, `TAUCSllt_mf`

, `TAUCSllt_ll`

, `TAUCSllt_ooc`

are derived form `TAUCSdirectLLT`

and their implementations are very short, it is just a call to the right TAUCS low-level function.

After each solver class there is a function

`LinearSolver* make_TAUCS*()`

that will be used within `LinearSolver::create`

.

## Previous

Introduction

Class Matrix

Class SparseMatrix

Sample code in C++ to run TAUCS

Sample code in C++ to run MUMPS

Class LinearSolver

Class UMFPACK

## Next

Class MUMPS and PARDISO

Gluing all together: LinearSolver::create

Sample driver to run a sparse solver

RSS