CLA3P v0.3.1
Compact Linear Algebra Parallel Portable Package
Loading...
Searching...
No Matches
cla3p::PardisoLDLt< T_Matrix > Class Template Reference

The indefinite Cholesky (LDL') linear solver for sparse matrices. More...

Inheritance diagram for cla3p::PardisoLDLt< T_Matrix >:

Public Member Functions

 PardisoLDLt ()
 The default constructor.
 ~PardisoLDLt ()=default
 Destroys the solver.
void setScaling (bool flg)
 Scaling vectors.
void setMatching (bool flg)
 Improved accuracy using symmetric weighted matching.
void setPivoting (pardiso::pivot_t pivot)
 Pivoting strategy.
void setPivotingPerturbation (int_t p)
 Small/zero pivot handling.
int_t inertiaPositive () const
 Inertia: number of positive eigenvalues.
int_t inertiaNegative () const
 Inertia: number of negative eigenvalues.
Public Member Functions inherited from cla3p::PardisoBase< T_Matrix >
void clear ()
 Clears the solver internal data.
void clearNumeric ()
 Clears the solver numeric factor data.
void analysis (const T_Matrix &mat)
 Performs matrix analysis & symbolic decomposition.
void decompose (const T_Matrix &mat)
 Performs matrix decomposition.
void solve (const dns::XxMatrix< T_Scalar > &rhs, dns::XxMatrix< T_Scalar > &sol)
 Performs matrix solution.
void solve (const dns::XxVector< T_Scalar > &rhs, dns::XxVector< T_Scalar > &sol)
 Performs vector solution.
void setVerbose (bool flg)
 Message level information.
const prm::PiMatrixfillReducingOrdering () const
 Gets the calculated fill-reducing permutation matrix.
int_t iterativeRefinementSteps () const
 Iterative refinement steps performed.
int_t perturbedPivots () const
 Number of perturbed pivots.
int_t peakAnalysisMemory () const
 Peak memory on symbolic factorization.
int_t permanentAnalysisMemory () const
 Permanent memory on symbolic factorization.
int_t factorMemory () const
 Size of factors/Peak memory on numerical factorization and solution.
Public Member Functions inherited from cla3p::pardiso::GlobalParams
void setMatrixChecker (bool flg)
 Forces Pardiso to check input matrix.
Public Member Functions inherited from cla3p::pardiso::AnalysisParams
void setFillReducer (pardiso::reorder_t reorderMethod)
 Sets the fill reducing ordering method.
void setFillReducer (const prm::PiMatrix &permMatrix)
 Sets a custom fill-reducing permutation.
Public Member Functions inherited from cla3p::pardiso::SolveParams
void setMaxIterativeRefinements (int_t numIters)
 Sets maximum number of iterative refinement steps.

Detailed Description

template<typename T_Matrix>
class cla3p::PardisoLDLt< T_Matrix >

The indefinite Cholesky (LDL') linear solver for sparse matrices.

Examples
ex07c_solving_sparse_linear_systems_ldlt.cpp.

Constructor & Destructor Documentation

◆ PardisoLDLt()

template<typename T_Matrix>
cla3p::PardisoLDLt< T_Matrix >::PardisoLDLt ( )
inline

The default constructor.

Constructs an empty solver object.

◆ ~PardisoLDLt()

template<typename T_Matrix>
cla3p::PardisoLDLt< T_Matrix >::~PardisoLDLt ( )
default

Destroys the solver.

Clears all internal data and destroys the solver.

Member Function Documentation

◆ setScaling()

template<typename T_Matrix>
void cla3p::PardisoLDLt< T_Matrix >::setScaling ( bool flg)
inline

Scaling vectors.

Parameters
[in]flgEnables/disables scaling.

Pardiso uses a maximum weight matching algorithm to permute large elements on the diagonal and to scale so that the diagonal elements are equal to 1 and the absolute values of the off-diagonal entries are less than or equal to 1. The scaling can also be used for symmetric indefinite matrices when the symmetric weighted matchings are applied. Use scaling and matching for highly indefinite symmetric matrices, for example, from interior point optimizations or saddle point problems.

Set before analysis. Default value is false.

◆ setMatching()

template<typename T_Matrix>
void cla3p::PardisoLDLt< T_Matrix >::setMatching ( bool flg)
inline

Improved accuracy using symmetric weighted matching.

Parameters
[in]flgEnables/disables matching.

Pardiso can use a maximum weighted matching algorithm to permute large elements close the diagonal. This strategy adds an additional level of reliability to the factorization methods and complements the alternative of using more complete pivoting techniques during the numerical factorization. Use scaling and matching for highly indefinite symmetric matrices, for example, from interior point optimizations or saddle point problems.

Set before analysis. Default value is false.

◆ setPivoting()

template<typename T_Matrix>
void cla3p::PardisoLDLt< T_Matrix >::setPivoting ( pardiso::pivot_t pivot)
inline

Pivoting strategy.

Parameters
[in]pivotThe pivoting strategy modifier.

Selects pivoting strategy for symmetric indefinite matrices.

  • 1x1 Diagonal
  • 1x1 and 2x2 Bunch-Kaufman (default)

Set before decomposition.

◆ setPivotingPerturbation()

template<typename T_Matrix>
void cla3p::PardisoLDLt< T_Matrix >::setPivotingPerturbation ( int_t p)
inline

Small/zero pivot handling.

Parameters
[in]pNegative power in the perturbation calculation formula.

This parameter instructs Pardiso how to handle small pivots or zero pivots. Small pivots are perturbed with eps = 10-p. For more details, refer to the Pardiso manual (iparm[9]).

Set before decomposition. Default value is 8.

◆ inertiaPositive()

template<typename T_Matrix>
int_t cla3p::PardisoLDLt< T_Matrix >::inertiaPositive ( ) const
inline

Inertia: number of positive eigenvalues.

Returns
The number of positive eigenvalues.

Pardiso reports the number of positive eigenvalues for symmetric indefinite matrices.

Available after decomposition.

◆ inertiaNegative()

template<typename T_Matrix>
int_t cla3p::PardisoLDLt< T_Matrix >::inertiaNegative ( ) const
inline

Inertia: number of negative eigenvalues.

Returns
The number of negative eigenvalues.

Pardiso reports the number of negative eigenvalues for symmetric indefinite matrices.

Available after decomposition.