Eigen::PardisoLDLT< MatrixType, Options > Class Template Reference

A sparse direct Cholesky (LDLT) factorization and solver based on the PARDISO library. More...

+ Inheritance diagram for Eigen::PardisoLDLT< MatrixType, Options >:

Public Types

enum  { UpLo }
 
typedef Base::RealScalar RealScalar
 
typedef Base::Scalar Scalar
 
typedef Base::StorageIndex StorageIndex
 
- Public Types inherited from Eigen::PardisoImpl< PardisoLDLT< MatrixType, Options > >
enum  
 
typedef Matrix< StorageIndex, MatrixType::RowsAtCompileTime, 1 > IntColVectorType
 
typedef Matrix< StorageIndex, 1, MatrixType::ColsAtCompileTime > IntRowVectorType
 
typedef Traits::MatrixType MatrixType
 
typedef Array< StorageIndex, 64, 1, DontAlign > ParameterType
 
typedef Traits::RealScalar RealScalar
 
typedef Traits::Scalar Scalar
 
typedef SparseMatrix< Scalar, RowMajor, StorageIndexSparseMatrixType
 
typedef Traits::StorageIndex StorageIndex
 
typedef Matrix< Scalar, Dynamic, 1 > VectorType
 

Public Member Functions

void getMatrix (const MatrixType &matrix)
 
 PardisoLDLT ()
 
 PardisoLDLT (const MatrixType &matrix)
 
- Public Member Functions inherited from Eigen::PardisoImpl< PardisoLDLT< MatrixType, Options > >
void _solve_impl (const MatrixBase< BDerived > &b, MatrixBase< XDerived > &x) const
 
void _solve_impl (const MatrixBase< Rhs > &b, MatrixBase< Dest > &dest) const
 
PardisoLDLT< MatrixType, Options > & analyzePattern (const MatrixType &matrix)
 
Index cols () const
 
PardisoLDLT< MatrixType, Options > & compute (const MatrixType &matrix)
 
PardisoLDLT< MatrixType, Options > & factorize (const MatrixType &matrix)
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
 PardisoImpl ()
 
ParameterTypepardisoParameterArray ()
 
Index rows () const
 
 ~PardisoImpl ()
 
- 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 Types

typedef PardisoImpl< PardisoLDLT< MatrixType, Options > > Base
 
- Protected Types inherited from Eigen::PardisoImpl< PardisoLDLT< MatrixType, Options > >
typedef SparseSolverBase< PardisoLDLT< MatrixType, Options > > Base
 
typedef internal::pardiso_traits< PardisoLDLT< MatrixType, Options > > Traits
 

Additional Inherited Members

- Protected Member Functions inherited from Eigen::PardisoImpl< PardisoLDLT< MatrixType, Options > >
PardisoLDLT< MatrixType, Options > & derived ()
 
const PardisoLDLT< MatrixType, Options > & derived () const
 
void manageErrorCode (Index error) const
 
void pardisoInit (int type)
 
void pardisoRelease ()
 
- Protected Attributes inherited from Eigen::PardisoImpl< PardisoLDLT< MatrixType, Options > >
bool m_analysisIsOk
 
bool m_factorizationIsOk
 
ComputationInfo m_info
 
ParameterType m_iparm
 
bool m_isInitialized
 
SparseMatrixType m_matrix
 
StorageIndex m_msglvl
 
IntColVectorType m_perm
 
void * m_pt [64]
 
Index m_size
 
StorageIndex m_type
 
- Protected Attributes inherited from Eigen::SparseSolverBase< Derived >
bool m_isInitialized
 

Detailed Description

template<typename MatrixType, int Options>
class Eigen::PardisoLDLT< MatrixType, Options >

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.

By default, it runs in in-core mode. To enable PARDISO's out-of-core feature, set:

solver.pardisoParameterArray()[59] = 1;
BiCGSTAB< SparseMatrix< double > > solver
Template Parameters
MatrixTypethe type of the sparse matrix A, it must be a SparseMatrix<>
Optionscan 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.

This class follows the sparse solver concept .

See also
Sparse solver concept, class SimplicialLDLT

Definition at line 506 of file PardisoSupport.h.

Member Typedef Documentation

◆ Base

template<typename MatrixType , int Options>
typedef PardisoImpl< PardisoLDLT<MatrixType,Options> > Eigen::PardisoLDLT< MatrixType, Options >::Base
protected

Definition at line 509 of file PardisoSupport.h.

◆ RealScalar

template<typename MatrixType , int Options>
typedef Base::RealScalar Eigen::PardisoLDLT< MatrixType, Options >::RealScalar

Definition at line 517 of file PardisoSupport.h.

◆ Scalar

template<typename MatrixType , int Options>
typedef Base::Scalar Eigen::PardisoLDLT< MatrixType, Options >::Scalar

Definition at line 516 of file PardisoSupport.h.

◆ StorageIndex

template<typename MatrixType , int Options>
typedef Base::StorageIndex Eigen::PardisoLDLT< MatrixType, Options >::StorageIndex

Definition at line 518 of file PardisoSupport.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType , int Options>
anonymous enum
Enumerator
UpLo 

Definition at line 520 of file PardisoSupport.h.

520 { UpLo = Options&(Upper|Lower) };
@ Lower
Definition: Constants.h:211
@ Upper
Definition: Constants.h:213

Constructor & Destructor Documentation

◆ PardisoLDLT() [1/2]

template<typename MatrixType , int Options>
Eigen::PardisoLDLT< MatrixType, Options >::PardisoLDLT ( )
inline

Definition at line 522 of file PardisoSupport.h.

523  : Base()
524  {
525  pardisoInit(Base::ScalarIsComplex ? ( bool(Options&Symmetric) ? 6 : -4 ) : -2);
526  }
PardisoImpl< PardisoLDLT< MatrixType, Options > > Base
@ Symmetric
Definition: Constants.h:229

◆ PardisoLDLT() [2/2]

template<typename MatrixType , int Options>
Eigen::PardisoLDLT< MatrixType, Options >::PardisoLDLT ( const MatrixType matrix)
inlineexplicit

Definition at line 528 of file PardisoSupport.h.

529  : Base()
530  {
531  pardisoInit(Base::ScalarIsComplex ? ( bool(Options&Symmetric) ? 6 : -4 ) : -2);
532  compute(matrix);
533  }
PardisoLDLT< MatrixType, Options > & compute(const MatrixType &matrix)

Member Function Documentation

◆ getMatrix()

template<typename MatrixType , int Options>
void Eigen::PardisoLDLT< MatrixType, Options >::getMatrix ( const MatrixType matrix)
inline

Definition at line 535 of file PardisoSupport.h.

536  {
537  // PARDISO supports only upper, row-major matrices
538  PermutationMatrix<Dynamic,Dynamic,StorageIndex> p_null;
539  m_matrix.resize(matrix.rows(), matrix.cols());
540  m_matrix.template selfadjointView<Upper>() = matrix.template selfadjointView<UpLo>().twistedBy(p_null);
542  }
SparseSymmetricPermutationProduct< Derived, Upper|Lower > twistedBy(const PermutationMatrix< Dynamic, Dynamic, StorageIndex > &perm) const
void resize(Index rows, Index cols)
Definition: SparseMatrix.h:739

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