Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SuperILU< _MatrixType > Class Template Reference

A sparse direct incomplete LU factorization and solver based on the SuperLU library. More...

#include <SuperLUSupport.h>

+ Inheritance diagram for SuperILU< _MatrixType >:

Public Types

typedef SuperLUBase
< _MatrixType, SuperILU
Base
typedef Base::Index Index
typedef Matrix< int,
MatrixType::RowsAtCompileTime, 1 > 
IntColVectorType
typedef Matrix< int,
1, MatrixType::ColsAtCompileTime > 
IntRowVectorType
typedef SparseMatrix< ScalarLUMatrixType
typedef _MatrixType MatrixType
typedef Base::RealScalar RealScalar
typedef Base::Scalar Scalar
typedef Matrix< Scalar,
Dynamic, 1 > 
Vector

Public Member Functions

void analyzePattern (const MatrixType &matrix)
Index cols () const
void compute (const MatrixType &matrix)
SuperILU< _MatrixType > & derived ()
const SuperILU< _MatrixType > & derived () const
void dumpMemory (Stream &s)
void factorize (const MatrixType &matrix)
ComputationInfo info () const
 Reports whether previous computation was successful.
superlu_options_toptions ()
Index rows () const
const internal::solve_retval
< SuperLUBase, Rhs > 
solve (const MatrixBase< Rhs > &b) const
 SuperILU ()
 SuperILU (const MatrixType &matrix)
 ~SuperILU ()

Protected Member Functions

void clearFactors ()
void extractData () const
void init ()
void initFactorization (const MatrixType &a)

Protected Attributes

int m_analysisIsOk
bool m_extractedDataAreDirty
int m_factorizationIsOk
ComputationInfo m_info
bool m_isInitialized
LUMatrixType m_l
LUMatrixType m_matrix
IntColVectorType m_p
IntRowVectorType m_q
SluMatrix m_sluA
SluMatrix m_sluB
Matrix< RealScalar, Dynamic, 1 > m_sluBerr
Matrix< RealScalar, Dynamic, 1 > m_sluCscale
char m_sluEqued
std::vector< intm_sluEtree
Matrix< RealScalar, Dynamic, 1 > m_sluFerr
SuperMatrix m_sluL
superlu_options_t m_sluOptions
Matrix< RealScalar, Dynamic, 1 > m_sluRscale
SuperLUStat_t m_sluStat
SuperMatrix m_sluU
SluMatrix m_sluX
LUMatrixType m_u

Detailed Description

template<typename _MatrixType>
class Eigen::SuperILU< _MatrixType >

A sparse direct incomplete LU factorization and solver based on the SuperLU library.

This class allows to solve for an approximate solution of A.X = B sparse linear problems via an incomplete LU factorization using the SuperLU library. This class is aimed to be used as a preconditioner of the iterative linear solvers.

Warning
This class requires SuperLU 4 or later.
Template Parameters
_MatrixTypethe type of the sparse matrix A, it must be a SparseMatrix<>
See Also
Solving linear problems, class ConjugateGradient, class BiCGSTAB

Member Typedef Documentation

typedef SuperLUBase<_MatrixType,SuperILU> Base
typedef Base::Index Index
typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> IntColVectorType
inherited
typedef Matrix<int, 1, MatrixType::ColsAtCompileTime> IntRowVectorType
inherited
typedef SparseMatrix<Scalar> LUMatrixType
inherited
typedef _MatrixType MatrixType
typedef Matrix<Scalar,Dynamic,1> Vector
inherited

Constructor & Destructor Documentation

SuperILU ( )
inline
SuperILU ( const MatrixType matrix)
inline
~SuperILU ( )
inline

Member Function Documentation

void analyzePattern ( const MatrixType matrix)
inline

Performs a symbolic decomposition on the sparcity of matrix.

This function is particularly useful when solving for several problems having the same structure.

See Also
factorize()

Reimplemented from SuperLUBase< _MatrixType, SuperILU< _MatrixType > >.

References SuperLUBase< _MatrixType, Derived >::analyzePattern().

void clearFactors ( )
inlineprotectedinherited
Index cols ( void  ) const
inlineinherited
void compute ( const MatrixType matrix)
inlineinherited

Computes the sparse Cholesky decomposition of matrix

References SuperLUBase< _MatrixType, Derived >::derived().

Referenced by SuperILU< _MatrixType >::SuperILU().

SuperILU< _MatrixType > & derived ( )
inlineinherited
const SuperILU< _MatrixType > & derived ( ) const
inlineinherited
void dumpMemory ( Stream &  s)
inlineinherited
void extractData ( ) const
protectedinherited
void factorize ( const MatrixType matrix)

Performs a numeric decomposition of matrix

The given matrix must has the same sparcity than the matrix on which the symbolic decomposition has been performed.

See Also
analyzePattern()

References eigen_assert, Eigen::InvalidInput, Eigen::NumericalIssue, and Eigen::Success.

ComputationInfo info ( ) const
inlineinherited

Reports whether previous computation was successful.

Returns
Success if computation was succesful, NumericalIssue if the matrix.appears to be negative.

References eigen_assert, SuperLUBase< _MatrixType, Derived >::m_info, and SuperLUBase< _MatrixType, Derived >::m_isInitialized.

void init ( )
inlineprotected
void initFactorization ( const MatrixType a)
inlineprotectedinherited
superlu_options_t& options ( )
inlineinherited
Returns
a reference to the Super LU option object to configure the Super LU algorithms.

References SuperLUBase< _MatrixType, Derived >::m_sluOptions.

Index rows ( void  ) const
inlineinherited
const internal::solve_retval<SuperLUBase, Rhs> solve ( const MatrixBase< Rhs > &  b) const
inlineinherited
Returns
the solution x of $ A x = b $ using the current decomposition of A.
See Also
compute()

References eigen_assert, SuperLUBase< _MatrixType, Derived >::m_isInitialized, and SuperLUBase< _MatrixType, Derived >::rows().

Member Data Documentation

int m_analysisIsOk
protectedinherited
bool m_extractedDataAreDirty
mutableprotectedinherited
int m_factorizationIsOk
protectedinherited
ComputationInfo m_info
mutableprotectedinherited
bool m_isInitialized
protectedinherited
LUMatrixType m_l
mutableprotectedinherited
LUMatrixType m_matrix
mutableprotectedinherited
IntColVectorType m_p
mutableprotectedinherited
IntRowVectorType m_q
mutableprotectedinherited
SluMatrix m_sluA
mutableprotectedinherited
SluMatrix m_sluB
mutableprotectedinherited
Matrix<RealScalar,Dynamic,1> m_sluBerr
mutableprotectedinherited
Matrix<RealScalar,Dynamic,1> m_sluCscale
mutableprotectedinherited
char m_sluEqued
mutableprotectedinherited
std::vector<int> m_sluEtree
mutableprotectedinherited
Matrix<RealScalar,Dynamic,1> m_sluFerr
mutableprotectedinherited
SuperMatrix m_sluL
mutableprotectedinherited
superlu_options_t m_sluOptions
mutableprotectedinherited
Matrix<RealScalar,Dynamic,1> m_sluRscale
mutableprotectedinherited
SuperLUStat_t m_sluStat
mutableprotectedinherited
SuperMatrix m_sluU
mutableprotectedinherited
SluMatrix m_sluX
mutableprotectedinherited
LUMatrixType m_u
mutableprotectedinherited

The documentation for this class was generated from the following file: