A sparse direct supernodal Cholesky (LLT) factorization and solver based on the PaStiX library. More...
#include <PaStiXSupport.h>
Public Types | |
enum | { UpLo } |
typedef internal::pastix_traits < PastixLDLT< _MatrixType, _UpLo > >::MatrixType | _MatrixType |
typedef PastixBase< PastixLDLT < MatrixType, _UpLo > > | Base |
typedef MatrixType::Index | Index |
typedef _MatrixType | MatrixType |
typedef MatrixType::RealScalar | RealScalar |
typedef MatrixType::Scalar | Scalar |
typedef Matrix< Scalar, Dynamic, 1 > | Vector |
Public Member Functions | |
bool | _solve (const MatrixBase< Rhs > &b, MatrixBase< Dest > &x) const |
void | _solve_sparse (const Rhs &b, SparseMatrix< DestScalar, DestOptions, DestIndex > &dest) const |
PastixLDLT< _MatrixType, _UpLo > & | analyzePattern (MatrixType &mat) |
void | analyzePattern (const MatrixType &matrix) |
Index | cols () const |
void | compute (const MatrixType &matrix) |
PastixLDLT< _MatrixType, _UpLo > & | derived () |
const PastixLDLT< _MatrixType, _UpLo > & | derived () const |
Array< RealScalar, IPARM_SIZE, 1 > & | dparm () |
double & | dparm (int idxparam) |
PastixLDLT< _MatrixType, _UpLo > & | factorize (MatrixType &mat) |
void | factorize (const MatrixType &matrix) |
ComputationInfo | info () const |
Reports whether previous computation was successful. | |
Array< Index, IPARM_SIZE, 1 > & | iparm () |
int & | iparm (int idxparam) |
void | PastixInit () |
PastixLDLT () | |
PastixLDLT (const MatrixType &matrix) | |
Index | rows () const |
const internal::solve_retval < PastixBase, Rhs > | solve (const MatrixBase< Rhs > &b) const |
const internal::sparse_solve_retval < PastixBase, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
Protected Member Functions | |
PastixLDLT< _MatrixType, _UpLo > & | compute (MatrixType &mat) |
void | PastixDestroy () |
Protected Attributes | |
int | m_amalgamation |
int | m_analysisIsOk |
int | m_comm |
Matrix< double, DPARM_SIZE, 1 > | m_dparm |
int | m_factorizationIsOk |
bool | m_hasTranspose |
ComputationInfo | m_info |
int | m_initisOk |
Matrix< Index, Dynamic, 1 > | m_invp |
Matrix< Index, IPARM_SIZE, 1 > | m_iparm |
bool | m_isInitialized |
SparseMatrix< Scalar, ColMajor > | m_mat_null |
int | m_ordering |
pastix_data_t * | m_pastixdata |
Matrix< Index, Dynamic, 1 > | m_perm |
int | m_size |
SparseMatrix< Scalar, ColMajor > | m_StrMatTrans |
Matrix< Scalar, Dynamic, 1 > | m_vec_null |
A sparse direct supernodal Cholesky (LLT) factorization and solver based on the PaStiX library.
This class is used to solve the linear systems A.X = B via a LDL^T supernodal Cholesky factorization available in the PaStiX library. The matrix A should be symmetric and positive definite WARNING Selfadjoint complex matrices are not supported in the current version of PaStiX 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 | The part of the matrix to use : Lower or Upper. The default is Lower as required by PaStiX |
typedef internal::pastix_traits<PastixLDLT< _MatrixType, _UpLo > >::MatrixType _MatrixType [inherited] |
typedef PastixBase<PastixLDLT<MatrixType, _UpLo> > Base |
typedef MatrixType::Index Index |
Reimplemented from PastixBase< PastixLDLT< _MatrixType, _UpLo > >.
typedef _MatrixType MatrixType |
Reimplemented from PastixBase< PastixLDLT< _MatrixType, _UpLo > >.
typedef MatrixType::RealScalar RealScalar [inherited] |
typedef MatrixType::Scalar Scalar |
Reimplemented from PastixBase< PastixLDLT< _MatrixType, _UpLo > >.
PastixLDLT | ( | ) | [inline] |
PastixLDLT | ( | const MatrixType & | matrix | ) | [inline] |
References PastixLDLT< _MatrixType, _UpLo >::compute().
bool _solve | ( | const MatrixBase< Rhs > & | b, |
MatrixBase< Dest > & | x | ||
) | const [inherited] |
void _solve_sparse | ( | const Rhs & | b, |
SparseMatrix< DestScalar, DestOptions, DestIndex > & | dest | ||
) | const [inline, inherited] |
PastixLDLT< _MatrixType, _UpLo > & analyzePattern | ( | MatrixType & | mat | ) | [inherited] |
void analyzePattern | ( | const MatrixType & | matrix | ) | [inline] |
Compute the LDL^T symbolic factorization of matrix
using its sparsity pattern The result of this operation can be used with successive matrices having the same pattern as matrix
References PastixBase< Derived >::analyzePattern(), PastixBase< PastixLDLT< _MatrixType, _UpLo > >::m_iparm, and PastixBase< Derived >::PastixInit().
PastixLDLT< _MatrixType, _UpLo > & compute | ( | MatrixType & | mat | ) | [protected, inherited] |
void compute | ( | const MatrixType & | matrix | ) | [inline] |
Compute the L and D factors of the LDL^T factorization of matrix
References PastixBase< Derived >::compute(), PastixBase< PastixLDLT< _MatrixType, _UpLo > >::m_iparm, and PastixBase< Derived >::PastixInit().
Referenced by PastixLDLT< _MatrixType, _UpLo >::PastixLDLT().
PastixLDLT< _MatrixType, _UpLo > & derived | ( | ) | [inline, inherited] |
const PastixLDLT< _MatrixType, _UpLo > & derived | ( | ) | const [inline, inherited] |
Array<RealScalar,IPARM_SIZE,1>& dparm | ( | ) | [inline, inherited] |
Returns a reference to the double vector DPARM of PaStiX parameters The statistics related to the different phases of factorization and solve are saved here as well
Return a reference to a particular index parameter of the DPARM vector
PastixLDLT< _MatrixType, _UpLo > & factorize | ( | MatrixType & | mat | ) | [inherited] |
void factorize | ( | const MatrixType & | matrix | ) | [inline] |
Compute the LDL^T supernodal numerical factorization of matrix
References PastixBase< Derived >::factorize(), and PastixBase< PastixLDLT< _MatrixType, _UpLo > >::m_iparm.
ComputationInfo info | ( | ) | const [inline, inherited] |
Reports whether previous computation was successful.
Success
if computation was succesful, NumericalIssue
if the PaStiX reports a problem InvalidInput
if the input matrix is invalidReturns a reference to the integer vector IPARM of PaStiX parameters to modify the default parameters. The statistics related to the different phases of factorization and solve are saved here as well
Return a reference to a particular index parameter of the IPARM vector
void PastixDestroy | ( | ) | [inline, protected, inherited] |
void PastixInit | ( | ) | [inherited] |
Initialize the PaStiX data structure. A first call to this function fills iparm and dparm with the default PaStiX parameters
const internal::solve_retval<PastixBase, Rhs> solve | ( | const MatrixBase< Rhs > & | b | ) | const [inline, inherited] |
const internal::sparse_solve_retval<PastixBase, Rhs> solve | ( | const SparseMatrixBase< Rhs > & | b | ) | const [inline, inherited] |
int m_amalgamation [mutable, protected, inherited] |
int m_analysisIsOk [protected, inherited] |
int m_factorizationIsOk [protected, inherited] |
bool m_hasTranspose [mutable, protected, inherited] |
ComputationInfo m_info [mutable, protected, inherited] |
int m_initisOk [protected, inherited] |
bool m_isInitialized [protected, inherited] |
SparseMatrix<Scalar, ColMajor> m_mat_null [mutable, protected, inherited] |
int m_ordering [mutable, protected, inherited] |
pastix_data_t* m_pastixdata [mutable, protected, inherited] |
SparseMatrix<Scalar, ColMajor> m_StrMatTrans [mutable, protected, inherited] |
Matrix<Scalar, Dynamic,1> m_vec_null [mutable, protected, inherited] |