Dune wrapper for SuiteSparse/CHOLMOD solver.
More...
#include <dune/istl/cholmod.hh>
|
| | Cholmod () |
| | Default constructor. More...
|
| |
| | ~Cholmod () |
| | Destructor. More...
|
| |
| | Cholmod (const Cholmod &)=delete |
| |
| Cholmod & | operator= (const Cholmod &)=delete |
| |
| void | apply (Vector &x, Vector &b, [[maybe_unused]] double reduction, InverseOperatorResult &res) override |
| | simple forward to apply(X&, Y&, InverseOperatorResult&) More...
|
| |
| void | apply (Vector &x, Vector &b, InverseOperatorResult &res) override |
| | solve the linear system Ax=b (possibly with respect to some ignore field) More...
|
| |
| template<class Matrix > |
| void | setMatrix (const Matrix &matrix) |
| | Set matrix without ignore nodes. More...
|
| |
| template<class Matrix , class Ignore > |
| void | setMatrix (const Matrix &matrix, const Ignore *ignore) |
| | Set matrix and ignore nodes. More...
|
| |
| SolverCategory::Category | category () const override |
| | Category of the solver (see SolverCategory::Category) More...
|
| |
| cholmod_common & | cholmodCommonObject () |
| | return a reference to the CHOLMOD common object for advanced option settings More...
|
| |
| cholmod_factor & | cholmodFactor () |
| | The CHOLMOD data structure that stores the factorization. More...
|
| |
| const cholmod_factor & | cholmodFactor () const |
| | The CHOLMOD data structure that stores the factorization. More...
|
| |
| virtual void | apply (Vector &x, Vector &b, double reduction, InverseOperatorResult &res)=0 |
| | apply inverse operator, with given convergence criteria. More...
|
| |
|
| void | printHeader (std::ostream &s) const |
| | helper function for printing header of solver output More...
|
| |
| void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const |
| | helper function for printing solver output More...
|
| |
| void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm) const |
| | helper function for printing solver output More...
|
| |
template<class Vector, class Index = int>
class Dune::Cholmod< Vector, Index >
Dune wrapper for SuiteSparse/CHOLMOD solver.
This class implements an InverseOperator between Vector types
- Template Parameters
-
| Vector | Data type for solution and right-hand-side vectors |
| Index | Type used by CHOLMOD for indices. Must be either 'int' or 'SuiteSparse_long' (which is usually long int). |
◆ domain_type
Type of the domain of the operator to be inverted.
◆ field_type
The field type of the operator.
◆ range_type
Type of the range of the operator to be inverted.
◆ real_type
The real type of the field type (is the same if using real numbers, but differs for std::complex)
◆ scalar_real_type
scalar type underlying the field_type
◆ anonymous enum
◆ Cholmod() [1/2]
template<class Vector , class Index = int>
Default constructor.
Calls the the cholmod runtime, see CHOLMOD doc
◆ ~Cholmod()
template<class Vector , class Index = int>
Destructor.
Free space and calls cholmod_finish, see CHOLMOD doc
◆ Cholmod() [2/2]
template<class Vector , class Index = int>
◆ apply() [1/3]
apply inverse operator, with given convergence criteria.
- Warning
- Right hand side b may be overwritten!
- Parameters
-
| x | The left hand side to store the result in. |
| b | The right hand side |
| reduction | The minimum defect reduction to achieve. |
| res | Object to store the statistics about applying the operator. |
- Exceptions
-
| SolverAbort | When the solver detects a problem and cannot continue |
◆ apply() [2/3]
template<class Vector , class Index = int>
simple forward to apply(X&, Y&, InverseOperatorResult&)
◆ apply() [3/3]
template<class Vector , class Index = int>
solve the linear system Ax=b (possibly with respect to some ignore field)
The method assumes that setMatrix() was called before In the case of a given ignore field the corresponding entries of both in x and b will stay untouched in this method.
Implements Dune::InverseOperator< Vector, Vector >.
◆ category()
template<class Vector , class Index = int>
◆ cholmodCommonObject()
template<class Vector , class Index = int>
| cholmod_common& Dune::Cholmod< Vector, Index >::cholmodCommonObject |
( |
| ) |
|
|
inline |
return a reference to the CHOLMOD common object for advanced option settings
The CHOLMOD common object stores all parameters and options for the solver to run and can be modified in several ways, see CHOLMOD Userguide for further information.
◆ cholmodFactor() [1/2]
template<class Vector , class Index = int>
| cholmod_factor& Dune::Cholmod< Vector, Index >::cholmodFactor |
( |
| ) |
|
|
inline |
The CHOLMOD data structure that stores the factorization.
Access to this is necessary for the more advanced features of CHOLMOD. You need to know what you are doing!
◆ cholmodFactor() [2/2]
template<class Vector , class Index = int>
| const cholmod_factor& Dune::Cholmod< Vector, Index >::cholmodFactor |
( |
| ) |
const |
|
inline |
The CHOLMOD data structure that stores the factorization.
Access to this is necessary for the more advanced features of CHOLMOD. You need to know what you are doing!
◆ operator=()
template<class Vector , class Index = int>
◆ printHeader()
helper function for printing header of solver output
◆ printOutput() [1/2]
| void Dune::InverseOperator< Vector , Vector >::printOutput |
( |
std::ostream & |
s, |
|
|
const CountType & |
iter, |
|
|
const DataType & |
norm, |
|
|
const DataType & |
norm_old |
|
) |
| const |
|
inlineprotectedinherited |
helper function for printing solver output
◆ printOutput() [2/2]
| void Dune::InverseOperator< Vector , Vector >::printOutput |
( |
std::ostream & |
s, |
|
|
const CountType & |
iter, |
|
|
const DataType & |
norm |
|
) |
| const |
|
inlineprotectedinherited |
helper function for printing solver output
◆ setMatrix() [1/2]
template<class Vector , class Index = int>
template<class Matrix >
Set matrix without ignore nodes.
This method forwards a nullptr to the setMatrix method with ignore nodes
◆ setMatrix() [2/2]
template<class Vector , class Index = int>
template<class Matrix , class Ignore >
| void Dune::Cholmod< Vector, Index >::setMatrix |
( |
const Matrix & |
matrix, |
|
|
const Ignore * |
ignore |
|
) |
| |
|
inline |
Set matrix and ignore nodes.
The input matrix is copied to CHOLMOD compatible form. It is possible to ignore some degrees of freedom, provided an ignore field is given with same block structure like the BlockVector template of the class.
The ignore field causes the method to ignore both rows and cols of the matrix and therefore operates only on the reduced quadratic matrix. In case of, e.g., Dirichlet values the user has to take care of proper adjusting of the rhs before calling apply().
Decomposing the matrix at the end takes a lot of time
- Parameters
-
| [in] | matrix | Matrix to be decomposed. In BCRS compatible form |
| [in] | ignore | Pointer to a compatible BitVector |
The documentation for this class was generated from the following file: