A sparse direct Cholesky (LDLT) factorization and solver based on the PARDISO library. More...
#include <PardisoSupport.h>
Public Types | |
enum | { ScalarIsComplex } |
enum | { UpLo } |
typedef Matrix< Index, MatrixType::RowsAtCompileTime, 1 > | IntColVectorType |
typedef Matrix< Index, 1, MatrixType::ColsAtCompileTime > | IntRowVectorType |
typedef Traits::MatrixType | MatrixType |
typedef SparseMatrix< Scalar, RowMajor, Index > | SparseMatrixType |
typedef Matrix< Scalar, Dynamic, 1 > | VectorType |
Public Member Functions | |
template<typename BDerived , typename XDerived > | |
bool | _solve (const MatrixBase< BDerived > &b, MatrixBase< XDerived > &x) const |
template<typename Rhs , typename DestScalar , int DestOptions, typename DestIndex > | |
void | _solve_sparse (const Rhs &b, SparseMatrix< DestScalar, DestOptions, DestIndex > &dest) const |
Derived & | analyzePattern (const MatrixType &matrix) |
Index | cols () const |
Derived & | compute (const MatrixType &matrix) |
Derived & | derived () |
const Derived & | derived () const |
Derived & | factorize (const MatrixType &matrix) |
void | getMatrix (const MatrixType &matrix) |
ComputationInfo | info () const |
Reports whether previous computation was successful. | |
PardisoLDLT () | |
PardisoLDLT (const MatrixType &matrix) | |
Array< Index, 64, 1 > & | pardisoParameterArray () |
Index | rows () const |
template<typename Rhs > | |
const internal::solve_retval < PardisoImpl, Rhs > | solve (const MatrixBase< Rhs > &b) const |
template<typename Rhs > | |
const internal::sparse_solve_retval < PardisoImpl, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
Protected Types | |
typedef PardisoImpl < PardisoLDLT< MatrixType, Options > > | Base |
typedef Base::Index | Index |
typedef Base::RealScalar | RealScalar |
typedef Base::Scalar | Scalar |
Protected Member Functions | |
void | manageErrorCode (Index error) |
void | pardisoInit (int type) |
void | pardisoRelease () |
Protected Attributes | |
bool | m_analysisIsOk |
bool | m_factorizationIsOk |
ComputationInfo | m_info |
bool | m_initialized |
Array< Index, 64, 1 > | m_iparm |
SparseMatrixType | m_matrix |
Index | m_msglvl |
IntColVectorType | m_perm |
void * | m_pt [64] |
Index | m_size |
Index | m_type |
A sparse direct Cholesky (LDLT) factorization and solver based on the PARDISO library.
This class allows to solve for A.X = B sparse linear problems via a LDL^T Cholesky factorization using the Intel MKL PARDISO library. The sparse matrix A is assumed to be selfajoint and positive definite. For complex matrices, A can also be symmetric only, see the Options template parameter. The vectors or matrices X and B can be either dense or sparse.
MatrixType | the type of the sparse matrix A, it must be a SparseMatrix<> |
Options | can be any bitwise combination of Upper, Lower, and Symmetric. The default is Upper, meaning only the upper triangular part has to be used. Symmetric can be used for symmetric, non-selfadjoint complex matrices, the default being to assume a selfadjoint matrix. Upper|Lower can be used to tell both triangular parts can be used as input. |
typedef PardisoImpl< PardisoLDLT<MatrixType,Options> > Base [protected] |
typedef Base::Index Index [protected] |
Reimplemented from PardisoImpl< Derived >.
typedef Matrix<Index, MatrixType::RowsAtCompileTime, 1> IntColVectorType [inherited] |
typedef Matrix<Index, 1, MatrixType::ColsAtCompileTime> IntRowVectorType [inherited] |
typedef Traits::MatrixType MatrixType [inherited] |
typedef Base::RealScalar RealScalar [protected] |
Reimplemented from PardisoImpl< Derived >.
typedef Base::Scalar Scalar [protected] |
Reimplemented from PardisoImpl< Derived >.
typedef SparseMatrix<Scalar,RowMajor,Index> SparseMatrixType [inherited] |
typedef Matrix<Scalar,Dynamic,1> VectorType [inherited] |
PardisoLDLT | ( | ) | [inline] |
PardisoLDLT | ( | const MatrixType & | matrix | ) | [inline] |
bool _solve | ( | const MatrixBase< BDerived > & | b, |
MatrixBase< XDerived > & | x | ||
) | const [inherited] |
void _solve_sparse | ( | const Rhs & | b, |
SparseMatrix< DestScalar, DestOptions, DestIndex > & | dest | ||
) | const [inline, inherited] |
Derived & analyzePattern | ( | const MatrixType & | matrix | ) | [inherited] |
Performs a symbolic decomposition on the sparcity of matrix.
This function is particularly useful when solving for several problems having the same structure.
Derived & compute | ( | const MatrixType & | matrix | ) | [inherited] |
Derived& derived | ( | ) | [inline, inherited] |
Referenced by PardisoImpl< PardisoLU< MatrixType > >::_solve_sparse().
const Derived& derived | ( | ) | const [inline, inherited] |
Derived & factorize | ( | const MatrixType & | matrix | ) | [inherited] |
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.
void getMatrix | ( | const MatrixType & | matrix | ) | [inline] |
ComputationInfo info | ( | ) | const [inline, inherited] |
Reports whether previous computation was successful.
Success
if computation was succesful, NumericalIssue
if the matrix appears to be negative. void manageErrorCode | ( | Index | error | ) | [inline, protected, inherited] |
void pardisoInit | ( | int | type | ) | [inline, protected, inherited] |
Array<Index,64,1>& pardisoParameterArray | ( | ) | [inline, inherited] |
void pardisoRelease | ( | ) | [inline, protected, inherited] |
Referenced by PardisoImpl< PardisoLU< MatrixType > >::~PardisoImpl().
Referenced by PardisoImpl< PardisoLU< MatrixType > >::solve().
const internal::solve_retval<PardisoImpl, Rhs> solve | ( | const MatrixBase< Rhs > & | b | ) | const [inline, inherited] |
const internal::sparse_solve_retval<PardisoImpl, Rhs> solve | ( | const SparseMatrixBase< Rhs > & | b | ) | const [inline, inherited] |
bool m_analysisIsOk [protected, inherited] |
bool m_factorizationIsOk [protected, inherited] |
ComputationInfo m_info [protected, inherited] |
bool m_initialized [protected, inherited] |
SparseMatrixType m_matrix [mutable, protected, inherited] |
IntColVectorType m_perm [mutable, protected, inherited] |
Referenced by PardisoImpl< PardisoLU< MatrixType > >::pardisoRelease().
void* m_pt[64] [mutable, protected, inherited] |
Referenced by PardisoImpl< PardisoLU< MatrixType > >::pardisoRelease().