Eigen::PardisoLLT< MatrixType, UpLo_ > Class Template Reference

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

#include <PardisoSupport.h>

+ Inheritance diagram for Eigen::PardisoLLT< MatrixType, UpLo_ >:

Public Types

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

Public Member Functions

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

Protected Types

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

Protected Member Functions

void getMatrix (const MatrixType &matrix)
 
- Protected Member Functions inherited from Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >
void pardisoRelease ()
 
void pardisoInit (int type)
 
void manageErrorCode (Index error) const
 
PardisoLLT< MatrixType, UpLo_ > & derived ()
 
const PardisoLLT< MatrixType, UpLo_ > & derived () const
 

Friends

class PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >
 

Additional Inherited Members

- Protected Attributes inherited from Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >
SparseMatrixType m_matrix
 
ComputationInfo m_info
 
bool m_analysisIsOk
 
bool m_factorizationIsOk
 
StorageIndex m_type
 
StorageIndex m_msglvl
 
void * m_pt [64]
 
ParameterType m_iparm
 
IntColVectorType m_perm
 
Index m_size
 
bool m_isInitialized
 
- Protected Attributes inherited from Eigen::SparseSolverBase< Derived >
bool m_isInitialized
 

Detailed Description

template<typename MatrixType, int UpLo_>
class Eigen::PardisoLLT< MatrixType, UpLo_ >

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.

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
Definition: BiCGSTAB_simple.cpp:5
Template Parameters
MatrixTypethe type of the sparse matrix A, it must be a SparseMatrix<>
UpLocan 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.

\implsparsesolverconcept

See also
Sparse solver concept, class SimplicialLLT

Member Typedef Documentation

◆ Base

template<typename MatrixType , int UpLo_>
typedef PardisoImpl<PardisoLLT<MatrixType, UpLo_> > Eigen::PardisoLLT< MatrixType, UpLo_ >::Base
protected

◆ RealScalar

template<typename MatrixType , int UpLo_>
typedef Base::RealScalar Eigen::PardisoLLT< MatrixType, UpLo_ >::RealScalar

◆ Scalar

template<typename MatrixType , int UpLo_>
typedef Base::Scalar Eigen::PardisoLLT< MatrixType, UpLo_ >::Scalar

◆ StorageIndex

template<typename MatrixType , int UpLo_>
typedef Base::StorageIndex Eigen::PardisoLLT< MatrixType, UpLo_ >::StorageIndex

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType , int UpLo_>
anonymous enum
Enumerator
UpLo 
424 { UpLo = UpLo_ };
@ UpLo
Definition: PardisoSupport.h:424

Constructor & Destructor Documentation

◆ PardisoLLT() [1/2]

template<typename MatrixType , int UpLo_>
Eigen::PardisoLLT< MatrixType, UpLo_ >::PardisoLLT ( )
inline
427 : Base() { pardisoInit(Base::ScalarIsComplex ? 4 : 2); }
@ ScalarIsComplex
Definition: PardisoSupport.h:120
void pardisoInit(int type)
Definition: PardisoSupport.h:182
PardisoImpl< PardisoLLT< MatrixType, UpLo_ > > Base
Definition: PardisoSupport.h:415

References Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >::pardisoInit(), and Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >::ScalarIsComplex.

◆ PardisoLLT() [2/2]

template<typename MatrixType , int UpLo_>
Eigen::PardisoLLT< MatrixType, UpLo_ >::PardisoLLT ( const MatrixType matrix)
inlineexplicit
429  : Base() {
431  compute(matrix);
432  }
PardisoLLT< MatrixType, UpLo_ > & compute(const MatrixType &matrix)
Definition: PardisoSupport.h:245
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85

References Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >::compute(), matrix(), Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >::pardisoInit(), and Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >::ScalarIsComplex.

Member Function Documentation

◆ getMatrix()

template<typename MatrixType , int UpLo_>
void Eigen::PardisoLLT< MatrixType, UpLo_ >::getMatrix ( const MatrixType matrix)
inlineprotected
435  {
436  // PARDISO supports only upper, row-major matrices
437  PermutationMatrix<Dynamic, Dynamic, StorageIndex> p_null;
438  m_matrix.resize(matrix.rows(), matrix.cols());
439  m_matrix.template selfadjointView<Upper>() = matrix.template selfadjointView<UpLo>().twistedBy(p_null);
441  }
SparseMatrixType m_matrix
Definition: PardisoSupport.h:234
void makeCompressed()
Definition: SparseMatrix.h:589
void resize(Index rows, Index cols)
Definition: SparseMatrix.h:734

References Eigen::PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >::m_matrix, Eigen::SparseMatrix< Scalar_, Options_, StorageIndex_ >::makeCompressed(), matrix(), and Eigen::SparseMatrix< Scalar_, Options_, StorageIndex_ >::resize().

Friends And Related Function Documentation

◆ PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >

template<typename MatrixType , int UpLo_>
friend class PardisoImpl< PardisoLLT< MatrixType, UpLo_ > >
friend

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