Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
PastixLU< _MatrixType, IsStrSym > Class Template Reference

Sparse direct LU solver based on PaStiX library. More...

#include <PaStiXSupport.h>

+ Inheritance diagram for PastixLU< _MatrixType, IsStrSym >:

List of all members.

Public Types

typedef
internal::pastix_traits
< PastixLU< _MatrixType >
>::MatrixType 
_MatrixType
typedef PastixBase< PastixLU
< MatrixType > > 
Base
typedef MatrixType::Index Index
typedef _MatrixType MatrixType
typedef SparseMatrix< Scalar,
ColMajor
PaStiXType
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
PastixLU< _MatrixType > & analyzePattern (MatrixType &mat)
void analyzePattern (const MatrixType &matrix)
Index cols () const
void compute (const MatrixType &matrix)
PastixLU< _MatrixType > & derived ()
const PastixLU< _MatrixType > & derived () const
Array< RealScalar, IPARM_SIZE, 1 > & dparm ()
double & dparm (int idxparam)
PastixLU< _MatrixType > & factorize (MatrixType &mat)
void factorize (const MatrixType &matrix)
ComputationInfo info () const
 Reports whether previous computation was successful.
Array< Index, IPARM_SIZE, 1 > & iparm ()
intiparm (int idxparam)
void PastixInit ()
 PastixLU ()
 PastixLU (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

PastixLU< _MatrixType > & 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, ColMajorm_mat_null
int m_ordering
pastix_data_t * m_pastixdata
Matrix< Index, Dynamic, 1 > m_perm
int m_size
SparseMatrix< Scalar, ColMajorm_StrMatTrans
Matrix< Scalar, Dynamic, 1 > m_vec_null

Detailed Description

template<typename _MatrixType, bool IsStrSym>
class Eigen::PastixLU< _MatrixType, IsStrSym >

Sparse direct LU solver based on PaStiX library.

This class is used to solve the linear systems A.X = B with a supernodal LU factorization in the PaStiX library. The matrix A should be squared and nonsingular PaStiX requires that the matrix A has a symmetric structural pattern. This interface can symmetrize the input matrix otherwise. 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<>
IsStrSymIndicates if the input matrix has a symmetric pattern, default is false NOTE : Note that if the analysis and factorization phase are called separately, the input matrix will be symmetrized at each call, hence it is advised to symmetrize the matrix in a end-user program and set IsStrSym to true
See also:
Solving linear problems

Member Typedef Documentation

typedef internal::pastix_traits<PastixLU< _MatrixType > >::MatrixType _MatrixType [inherited]
typedef MatrixType::Index Index [inherited]
typedef MatrixType::RealScalar RealScalar [inherited]
typedef MatrixType::Scalar Scalar
typedef Matrix<Scalar,Dynamic,1> Vector [inherited]

Constructor & Destructor Documentation

PastixLU ( ) [inline]
PastixLU ( const MatrixType matrix) [inline]

Member Function Documentation

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]
PastixLU< _MatrixType > & analyzePattern ( MatrixType mat) [inherited]
void analyzePattern ( const MatrixType matrix) [inline]

Compute the LU symbolic factorization of matrix using its sparsity pattern. Several ordering methods can be used at this step. See the PaStiX user's manual. The result of this operation can be used with successive matrices having the same pattern as matrix

See also:
factorize()

References PastixBase< Derived >::analyzePattern(), PastixBase< PastixLU< _MatrixType > >::m_hasTranspose, PastixBase< PastixLU< _MatrixType > >::m_iparm, PastixBase< PastixLU< _MatrixType > >::m_StrMatTrans, and PastixBase< Derived >::PastixInit().

Index cols ( void  ) const [inline, inherited]
PastixLU< _MatrixType > & compute ( MatrixType mat) [protected, inherited]
void compute ( const MatrixType matrix) [inline]
PastixLU< _MatrixType > & derived ( ) [inline, inherited]
const PastixLU< _MatrixType > & 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

See also:
analyzePattern() factorize()

References PastixBase< Derived >::m_dparm.

double& dparm ( int  idxparam) [inline, inherited]

Return a reference to a particular index parameter of the DPARM vector

See also:
dparm()

References PastixBase< Derived >::m_dparm.

PastixLU< _MatrixType > & factorize ( MatrixType mat) [inherited]
void factorize ( const MatrixType matrix) [inline]

Compute the LU supernodal factorization of matrix WARNING The matrix matrix should have the same structural pattern as the same used in the analysis phase.

See also:
analyzePattern()

References PastixBase< Derived >::factorize(), PastixBase< PastixLU< _MatrixType > >::m_hasTranspose, PastixBase< PastixLU< _MatrixType > >::m_iparm, and PastixBase< PastixLU< _MatrixType > >::m_StrMatTrans.

ComputationInfo info ( ) const [inline, inherited]

Reports whether previous computation was successful.

Returns:
Success if computation was succesful, NumericalIssue if the PaStiX reports a problem InvalidInput if the input matrix is invalid
See also:
iparm()

References PastixBase< Derived >::m_info, and PastixBase< Derived >::m_isInitialized.

Array<Index,IPARM_SIZE,1>& iparm ( ) [inline, inherited]

Returns 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

See also:
analyzePattern() factorize()

References PastixBase< Derived >::m_iparm.

int& iparm ( int  idxparam) [inline, inherited]

Return a reference to a particular index parameter of the IPARM vector

See also:
iparm()

References PastixBase< Derived >::m_iparm.

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

See also:
iparm() dparm()
Index rows ( void  ) const [inline, inherited]
const internal::solve_retval<PastixBase, Rhs> solve ( const MatrixBase< Rhs > &  b) const [inline, inherited]
Returns:
the solution x of $ A x = b $ using the current decomposition of A.
See also:
compute()

References PastixBase< Derived >::m_isInitialized, and PastixBase< Derived >::rows().

const internal::sparse_solve_retval<PastixBase, Rhs> solve ( const SparseMatrixBase< Rhs > &  b) const [inline, inherited]
Returns:
the solution x of $ A x = b $ using the current decomposition of A.
See also:
compute()

References EigenBase< Derived >::derived(), PastixBase< Derived >::m_isInitialized, SparseMatrixBase< Derived >::rows(), and PastixBase< Derived >::rows().


Member Data Documentation

int m_amalgamation [mutable, protected, inherited]
int m_analysisIsOk [protected, inherited]
int m_comm [mutable, protected, inherited]
Matrix<double,DPARM_SIZE,1> m_dparm [mutable, protected, inherited]
int m_factorizationIsOk [protected, inherited]
bool m_hasTranspose [mutable, protected, inherited]
ComputationInfo m_info [mutable, protected, inherited]
int m_initisOk [protected, inherited]
Matrix<Index,Dynamic,1> m_invp [mutable, protected, inherited]
Matrix<Index,IPARM_SIZE,1> m_iparm [mutable, 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]
Matrix<Index,Dynamic,1> m_perm [mutable, protected, inherited]
int m_size [mutable, protected, inherited]
SparseMatrix<Scalar, ColMajor> m_StrMatTrans [mutable, protected, inherited]
Matrix<Scalar, Dynamic,1> m_vec_null [mutable, protected, inherited]

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