A sparse direct Cholesky (LLT) 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) |
ComputationInfo | info () const |
Reports whether previous computation was successful. | |
PardisoLLT () | |
PardisoLLT (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 < PardisoLLT< MatrixType, _UpLo > > | Base |
typedef Base::Index | Index |
typedef Base::RealScalar | RealScalar |
typedef Base::Scalar | Scalar |
Protected Member Functions | |
void | getMatrix (const MatrixType &matrix) |
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 (LLT) factorization and solver based on the PARDISO library.
This class allows to solve for A.X = B sparse linear problems via a LL^T Cholesky factorization using the Intel MKL PARDISO library. The sparse matrix A must be selfajoint and positive definite. 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<> |
UpLo | can be any bitwise combination of Upper, Lower. The default is Upper, meaning only the upper triangular part has to be used. Upper|Lower can be used to tell both triangular parts can be used as input. |
typedef PardisoImpl< PardisoLLT<MatrixType,_UpLo> > 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] |
PardisoLLT | ( | ) | [inline] |
PardisoLLT | ( | 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, protected] |
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().