NDDEM
|
Modified Incomplete Cholesky with dual threshold. More...
#include <IncompleteCholesky.h>
Public Types | |
enum | { UpLo = _UpLo } |
enum | { ColsAtCompileTime = Dynamic , MaxColsAtCompileTime = Dynamic } |
typedef NumTraits< Scalar >::Real | RealScalar |
typedef _OrderingType | OrderingType |
typedef OrderingType::PermutationType | PermutationType |
typedef PermutationType::StorageIndex | StorageIndex |
typedef SparseMatrix< Scalar, ColMajor, StorageIndex > | FactorType |
typedef Matrix< Scalar, Dynamic, 1 > | VectorSx |
typedef Matrix< RealScalar, Dynamic, 1 > | VectorRx |
typedef Matrix< StorageIndex, Dynamic, 1 > | VectorIx |
typedef std::vector< std::list< StorageIndex > > | VectorList |
Public Member Functions | |
IncompleteCholesky () | |
template<typename MatrixType > | |
IncompleteCholesky (const MatrixType &matrix) | |
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
ComputationInfo | info () const |
Reports whether previous computation was successful. More... | |
void | setInitialShift (RealScalar shift) |
Set the initial shift parameter ![]() | |
template<typename MatrixType > | |
void | analyzePattern (const MatrixType &mat) |
Computes the fill reducing permutation vector using the sparsity pattern of mat. More... | |
template<typename MatrixType > | |
void | factorize (const MatrixType &mat) |
Performs the numerical factorization of the input matrix mat. More... | |
template<typename MatrixType > | |
void | compute (const MatrixType &mat) |
template<typename Rhs , typename Dest > | |
void | _solve_impl (const Rhs &b, Dest &x) const |
const FactorType & | matrixL () const |
const VectorRx & | scalingS () const |
const PermutationType & | permutationP () const |
template<typename _MatrixType > | |
void | factorize (const _MatrixType &mat) |
![]() | |
SparseSolverBase () | |
~SparseSolverBase () | |
IncompleteCholesky< Scalar, Lower, AMDOrdering< int > > & | derived () |
const IncompleteCholesky< Scalar, Lower, AMDOrdering< int > > & | derived () const |
const Solve< IncompleteCholesky< Scalar, Lower, AMDOrdering< int > >, Rhs > | solve (const MatrixBase< Rhs > &b) const |
const Solve< IncompleteCholesky< Scalar, Lower, AMDOrdering< int > >, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
void | _solve_impl (const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const |
Protected Types | |
typedef SparseSolverBase< IncompleteCholesky< Scalar, _UpLo, _OrderingType > > | Base |
Protected Attributes | |
FactorType | m_L |
VectorRx | m_scale |
RealScalar | m_initialShift |
bool | m_analysisIsOk |
bool | m_factorizationIsOk |
ComputationInfo | m_info |
PermutationType | m_perm |
bool | m_isInitialized |
![]() | |
bool | m_isInitialized |
Private Member Functions | |
void | updateList (Ref< const VectorIx > colPtr, Ref< VectorIx > rowIdx, Ref< VectorSx > vals, const Index &col, const Index &jk, VectorIx &firstElt, VectorList &listCol) |
Modified Incomplete Cholesky with dual threshold.
References : C-J. Lin and J. J. Moré, Incomplete Cholesky Factorizations with Limited memory, SIAM J. Sci. Comput. 21(1), pp. 24-45, 1999
Scalar | the scalar type of the input matrices |
_UpLo | The triangular part that will be used for the computations. It can be Lower or Upper. Default is Lower. |
_OrderingType | The ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering<int>, unless EIGEN_MPL2_ONLY is defined, in which case the default is NaturalOrdering<int>. |
\implsparsesolverconcept
It performs the following incomplete factorization: where L is a lower triangular factor, S is a diagonal scaling matrix, and P is a fill-in reducing permutation as computed by the ordering method.
Shifting strategy: Let be the scaled matrix on which the factorization is carried out, and
be the minimum value of the diagonal. If
then, the factorization is directly performed on the matrix B. Otherwise, the factorization is performed on the shifted matrix
where
is the initial shift value as returned and set by setInitialShift() method. The default value is
. If the factorization fails, then the shift in doubled until it succeed or a maximum of ten attempts. If it still fails, as returned by the info() method, then you can either increase the initial shift, or better use another preconditioning technique.
|
protected |
typedef SparseMatrix<Scalar,ColMajor,StorageIndex> Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::FactorType |
typedef _OrderingType Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::OrderingType |
typedef OrderingType::PermutationType Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::PermutationType |
typedef NumTraits<Scalar>::Real Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::RealScalar |
typedef PermutationType::StorageIndex Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::StorageIndex |
typedef Matrix<StorageIndex,Dynamic, 1> Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::VectorIx |
typedef std::vector<std::list<StorageIndex> > Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::VectorList |
typedef Matrix<RealScalar,Dynamic,1> Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::VectorRx |
typedef Matrix<Scalar,Dynamic,1> Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::VectorSx |
anonymous enum |
anonymous enum |
|
inline |
Default constructor leaving the object in a partly non-initialized stage.
You must call compute() or the pair analyzePattern()/factorize() to make it valid.
|
inline |
Constructor computing the incomplete factorization for the given matrix matrix.
|
inline |
|
inline |
Computes the fill reducing permutation vector using the sparsity pattern of mat.
|
inline |
|
inline |
Computes or re-computes the incomplete Cholesky factorization of the input matrix mat
It is a shortcut for a sequential call to the analyzePattern() and factorize() methods.
void Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::factorize | ( | const _MatrixType & | mat | ) |
void Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::factorize | ( | const MatrixType & | mat | ) |
Performs the numerical factorization of the input matrix mat.
The method analyzePattern() or compute() must have been called beforehand with a matrix having the same pattern.
|
inline |
Reports whether previous computation was successful.
It triggers an assertion if *this
has not been initialized through the respective constructor, or a call to compute() or analyzePattern().
Success
if computation was successful, NumericalIssue
if the matrix appears to be negative.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Set the initial shift parameter .
|
inlineprivate |
|
protected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |