GEOSX
|
This class implements Conjugate Gradient method for monolithic and block linear operators. More...
#include <CGsolver.hpp>
Public Types | |
using | Base = KrylovSolver< VECTOR > |
Alias for base type. | |
using | Vector = typename Base::Vector |
Alias for template parameter. | |
Public Types inherited from geosx::KrylovSolver< VECTOR > | |
using | Base = LinearOperator< VECTOR > |
Base type. | |
using | Vector = typename Base::Vector |
Alias for template parameter. | |
Public Types inherited from geosx::LinearOperator< VECTOR > | |
using | Vector = VECTOR |
Alias for template parameter. | |
Public Member Functions | |
Constructor/Destructor Methods | |
CGsolver (LinearOperator< Vector > const &A, LinearOperator< Vector > const &M, real64 const tolerance, localIndex const maxIterations, integer const verbosity=0) | |
Constructor. More... | |
virtual | ~CGsolver () override |
Virtual destructor. | |
KrylovSolver interface | |
virtual void | solve (Vector const &b, Vector &x) const override final |
Solve preconditioned system. More... | |
virtual string | methodName () const override final |
Get name of the Krylov subspace method. More... | |
Public Member Functions inherited from geosx::KrylovSolver< VECTOR > | |
KrylovSolver (LinearOperator< Vector > const &matrix, LinearOperator< Vector > const &precond, real64 const tolerance, localIndex const maxIterations, integer const verbosity) | |
Constructor. More... | |
virtual | ~KrylovSolver () override=default |
Virtual destructor. | |
virtual void | solve (Vector const &b, Vector &x) const =0 |
Solve preconditioned system. More... | |
virtual void | apply (Vector const &src, Vector &dst) const override final |
Apply operator to a vector. More... | |
virtual globalIndex | numGlobalRows () const override final |
Get the number of global rows. More... | |
virtual globalIndex | numGlobalCols () const override final |
Get the number of global columns. More... | |
LinearSolverResult const & | result () const |
Get result of a linear solve. More... | |
arrayView1d< real64 const > | history () const |
Get convergence history of a linear solve. More... | |
integer | getLogLevel () const |
Get log level. More... | |
Public Member Functions inherited from geosx::LinearOperator< VECTOR > | |
LinearOperator ()=default | |
Constructor. | |
virtual | ~LinearOperator ()=default |
Destructor. | |
virtual void | apply (Vector const &src, Vector &dst) const =0 |
Apply operator to a vector. More... | |
virtual void | residual (Vector const &x, Vector const &b, Vector &r) const |
Compute residual r = Ax - b . More... | |
Protected Types | |
using | VectorTemp = typename KrylovSolver< VECTOR >::VectorTemp |
Alias for vector type that can be used for temporaries. | |
Protected Types inherited from geosx::KrylovSolver< VECTOR > | |
using | VectorTemp = typename VectorStorageHelper< VECTOR >::type |
Alias for vector type that can be used for temporaries. | |
Additional Inherited Members | |
Static Public Member Functions inherited from geosx::KrylovSolver< VECTOR > | |
static std::unique_ptr< KrylovSolver< VECTOR > > | Create (LinearSolverParameters const ¶meters, LinearOperator< VECTOR > const &matrix, LinearOperator< VECTOR > const &precond) |
Factory method for instantiating Krylov solver objects. More... | |
Protected Member Functions inherited from geosx::KrylovSolver< VECTOR > | |
void | logProgress (localIndex const iter, real64 const rnorm) const |
Output iteration progress (called by implementations). More... | |
void | logResult () const |
Output convergence result (called by implementations). | |
Static Protected Member Functions inherited from geosx::KrylovSolver< VECTOR > | |
static VectorTemp | createTempVector (Vector const &src) |
Helper function to create temporary vectors based on a source vector. More... | |
Protected Attributes inherited from geosx::KrylovSolver< VECTOR > | |
LinearOperator< Vector > const & | m_operator |
reference to the operator to be solved | |
LinearOperator< Vector > const & | m_precond |
reference to the preconditioning operator | |
real64 | m_tolerance |
relative residual norm reduction tolerance | |
localIndex | m_maxIterations |
maximum number of Krylov iterations | |
integer | m_logLevel |
solver verbosity level | |
LinearSolverResult | m_result |
results of a solve | |
array1d< real64 > | m_residualNorms |
Absolute residual norms at each iteration (if available) | |
This class implements Conjugate Gradient method for monolithic and block linear operators.
VECTOR | type of vectors this solver operates on. |
Definition at line 37 of file CGsolver.hpp.
geosx::CGsolver< VECTOR >::CGsolver | ( | LinearOperator< Vector > const & | A, |
LinearOperator< Vector > const & | M, | ||
real64 const | tolerance, | ||
localIndex const | maxIterations, | ||
integer const | verbosity = 0 |
||
) |
Constructor.
[in] | A | reference to the system matrix. |
[in] | M | reference to the preconditioning operator. |
[in] | tolerance | relative residual norm reduction tolerance. |
[in] | maxIterations | maximum number of Krylov iterations. |
[in] | verbosity | solver verbosity level. |
|
inlinefinaloverridevirtual |
Get name of the Krylov subspace method.
Implements geosx::KrylovSolver< VECTOR >.
Definition at line 85 of file CGsolver.hpp.
|
finaloverridevirtual |
Solve preconditioned system.
[in] | b | system right hand side. |
[in,out] | x | system solution (input = initial guess, output = solution). |