Eigen::PastixLDLT< MatrixType_, UpLo_ > Class Template Reference

A sparse direct supernodal Cholesky (LLT) factorization and solver based on the PaStiX library. More...

+ Inheritance diagram for Eigen::PastixLDLT< MatrixType_, UpLo_ >:

Public Types

enum  { UpLo }
 
typedef PastixBase< PastixLDLT< MatrixType, UpLo_ > > Base
 
typedef Base::ColSpMatrix ColSpMatrix
 
typedef MatrixType_ MatrixType
 
- Public Types inherited from Eigen::PastixBase< PastixLDLT< MatrixType_, UpLo_ > >
enum  
 
typedef SparseMatrix< Scalar, ColMajor > ColSpMatrix
 
typedef MatrixType_ MatrixType
 
typedef internal::pastix_traits< PastixLDLT< MatrixType_, UpLo_ > >::MatrixType MatrixType_
 
typedef MatrixType::RealScalar RealScalar
 
typedef MatrixType::Scalar Scalar
 
typedef MatrixType::StorageIndex StorageIndex
 
typedef Matrix< Scalar, Dynamic, 1 > Vector
 

Public Member Functions

void analyzePattern (const MatrixType &matrix)
 
void compute (const MatrixType &matrix)
 
void factorize (const MatrixType &matrix)
 
 PastixLDLT ()
 
 PastixLDLT (const MatrixType &matrix)
 
- Public Member Functions inherited from Eigen::PastixBase< PastixLDLT< MatrixType_, UpLo_ > >
bool _solve_impl (const MatrixBase< Rhs > &b, MatrixBase< Dest > &x) const
 
Index cols () const
 
Array< double, DPARM_SIZE, 1 > & dparm ()
 
double & dparm (int idxparam)
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
Array< StorageIndex, IPARM_SIZE, 1 > & iparm ()
 
int & iparm (int idxparam)
 
 PastixBase ()
 
Index rows () const
 
 ~PastixBase ()
 
- Public Member Functions inherited from Eigen::SparseSolverBase< Derived >
Derived & derived ()
 
const Derived & derived () const
 
template<typename Rhs >
const Solve< Derived, Rhs > solve (const MatrixBase< Rhs > &b) const
 
template<typename Rhs >
const Solve< Derived, Rhs > solve (const SparseMatrixBase< Rhs > &b) const
 
 SparseSolverBase ()
 
 SparseSolverBase (SparseSolverBase &&other)
 
 ~SparseSolverBase ()
 

Protected Member Functions

void grabMatrix (const MatrixType &matrix, ColSpMatrix &out)
 
void init ()
 
- Protected Member Functions inherited from Eigen::PastixBase< PastixLDLT< MatrixType_, UpLo_ > >
void analyzePattern (ColSpMatrix &mat)
 
void clean ()
 
void compute (ColSpMatrix &mat)
 
PastixLDLT< MatrixType_, UpLo_ > & derived ()
 
const PastixLDLT< MatrixType_, UpLo_ > & derived () const
 
void factorize (ColSpMatrix &mat)
 
void init ()
 

Protected Attributes

Array< int, IPARM_SIZE, 1 > m_iparm
 
- Protected Attributes inherited from Eigen::PastixBase< PastixLDLT< MatrixType_, UpLo_ > >
int m_analysisIsOk
 
int m_comm
 
Array< double, DPARM_SIZE, 1 > m_dparm
 
int m_factorizationIsOk
 
ComputationInfo m_info
 
int m_initisOk
 
Matrix< StorageIndex, Dynamic, 1 > m_invp
 
Array< int, IPARM_SIZE, 1 > m_iparm
 
bool m_isInitialized
 
pastix_data_t * m_pastixdata
 
Matrix< StorageIndex, Dynamic, 1 > m_perm
 
int m_size
 
- Protected Attributes inherited from Eigen::SparseSolverBase< Derived >
bool m_isInitialized
 

Additional Inherited Members

- Protected Types inherited from Eigen::PastixBase< PastixLDLT< MatrixType_, UpLo_ > >
typedef SparseSolverBase< PastixLDLT< MatrixType_, UpLo_ > > Base
 

Detailed Description

template<typename MatrixType_, int UpLo_>
class Eigen::PastixLDLT< MatrixType_, UpLo_ >

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

Template Parameters
MatrixTypethe type of the sparse matrix A, it must be a SparseMatrix<>
UpLoThe part of the matrix to use : Lower or Upper. The default is Lower as required by PaStiX

This class follows the sparse solver concept .

See also
Sparse solver concept, class SimplicialLDLT

Definition at line 610 of file PaStiXSupport.h.

Member Typedef Documentation

◆ Base

template<typename MatrixType_ , int UpLo_>
typedef PastixBase<PastixLDLT<MatrixType, UpLo_> > Eigen::PastixLDLT< MatrixType_, UpLo_ >::Base

Definition at line 614 of file PaStiXSupport.h.

◆ ColSpMatrix

template<typename MatrixType_ , int UpLo_>
typedef Base::ColSpMatrix Eigen::PastixLDLT< MatrixType_, UpLo_ >::ColSpMatrix

Definition at line 615 of file PaStiXSupport.h.

◆ MatrixType

template<typename MatrixType_ , int UpLo_>
typedef MatrixType_ Eigen::PastixLDLT< MatrixType_, UpLo_ >::MatrixType

Definition at line 613 of file PaStiXSupport.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType_ , int UpLo_>
anonymous enum
Enumerator
UpLo 

Definition at line 618 of file PaStiXSupport.h.

618 { UpLo = UpLo_ };

Constructor & Destructor Documentation

◆ PastixLDLT() [1/2]

template<typename MatrixType_ , int UpLo_>
Eigen::PastixLDLT< MatrixType_, UpLo_ >::PastixLDLT ( )
inline

Definition at line 619 of file PaStiXSupport.h.

619  :Base()
620  {
621  init();
622  }
PastixBase< PastixLDLT< MatrixType, UpLo_ > > Base

◆ PastixLDLT() [2/2]

template<typename MatrixType_ , int UpLo_>
Eigen::PastixLDLT< MatrixType_, UpLo_ >::PastixLDLT ( const MatrixType matrix)
inlineexplicit

Definition at line 624 of file PaStiXSupport.h.

624  :Base()
625  {
626  init();
627  compute(matrix);
628  }
void compute(const MatrixType &matrix)

Member Function Documentation

◆ analyzePattern()

template<typename MatrixType_ , int UpLo_>
void Eigen::PastixLDLT< MatrixType_, UpLo_ >::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

See also
factorize()

Definition at line 644 of file PaStiXSupport.h.

645  {
646  ColSpMatrix temp;
647  grabMatrix(matrix, temp);
648  Base::analyzePattern(temp);
649  }
void analyzePattern(ColSpMatrix &mat)
Base::ColSpMatrix ColSpMatrix
void grabMatrix(const MatrixType &matrix, ColSpMatrix &out)

◆ compute()

template<typename MatrixType_ , int UpLo_>
void Eigen::PastixLDLT< MatrixType_, UpLo_ >::compute ( const MatrixType matrix)
inline

Compute the L and D factors of the LDL^T factorization of matrix

See also
analyzePattern() factorize()

Definition at line 633 of file PaStiXSupport.h.

634  {
635  ColSpMatrix temp;
636  grabMatrix(matrix, temp);
637  Base::compute(temp);
638  }
void compute(ColSpMatrix &mat)

◆ factorize()

template<typename MatrixType_ , int UpLo_>
void Eigen::PastixLDLT< MatrixType_, UpLo_ >::factorize ( const MatrixType matrix)
inline

Compute the LDL^T supernodal numerical factorization of matrix

Definition at line 653 of file PaStiXSupport.h.

654  {
655  ColSpMatrix temp;
656  grabMatrix(matrix, temp);
657  Base::factorize(temp);
658  }
void factorize(ColSpMatrix &mat)

◆ grabMatrix()

template<typename MatrixType_ , int UpLo_>
void Eigen::PastixLDLT< MatrixType_, UpLo_ >::grabMatrix ( const MatrixType matrix,
ColSpMatrix out 
)
inlineprotected

Definition at line 669 of file PaStiXSupport.h.

670  {
671  // Pastix supports only lower, column-major matrices
672  out.resize(matrix.rows(), matrix.cols());
673  out.template selfadjointView<Lower>() = matrix.template selfadjointView<UpLo>();
675  }
void c_to_fortran_numbering(MatrixType &mat)
Definition: PaStiXSupport.h:99

◆ init()

template<typename MatrixType_ , int UpLo_>
void Eigen::PastixLDLT< MatrixType_, UpLo_ >::init ( )
inlineprotected

Definition at line 663 of file PaStiXSupport.h.

664  {
665  m_iparm(IPARM_SYM) = API_SYM_YES;
666  m_iparm(IPARM_FACTORIZATION) = API_FACT_LDLT;
667  }
Array< int, IPARM_SIZE, 1 > m_iparm

Member Data Documentation

◆ m_iparm

template<typename MatrixType_ , int UpLo_>
Array<int,IPARM_SIZE,1> Eigen::PastixBase< Derived >::m_iparm
mutableprotected

Definition at line 249 of file PaStiXSupport.h.


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