GEOSX
Public Types | Protected Types | List of all members
geosx::CGsolver< VECTOR > Class Template Reference

This class implements Conjugate Gradient method for monolithic and block linear operators. More...

#include <CGsolver.hpp>

Inheritance diagram for geosx::CGsolver< VECTOR >:
Inheritance graph
[legend]

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 &parameters, 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< real64m_residualNorms
 Absolute residual norms at each iteration (if available)
 

Detailed Description

template<typename VECTOR>
class geosx::CGsolver< VECTOR >

This class implements Conjugate Gradient method for monolithic and block linear operators.

Template Parameters
VECTORtype of vectors this solver operates on.
Note
The notation is consistent with "Iterative Methods for Linear and Non-Linear Equations" from C.T. Kelley (1995) and "Iterative Methods for Sparse Linear Systems" from Y. Saad (2003).

Definition at line 37 of file CGsolver.hpp.

Constructor & Destructor Documentation

◆ CGsolver()

template<typename VECTOR >
geosx::CGsolver< VECTOR >::CGsolver ( LinearOperator< Vector > const &  A,
LinearOperator< Vector > const &  M,
real64 const  tolerance,
localIndex const  maxIterations,
integer const  verbosity = 0 
)

Constructor.

Parameters
[in]Areference to the system matrix.
[in]Mreference to the preconditioning operator.
[in]tolerancerelative residual norm reduction tolerance.
[in]maxIterationsmaximum number of Krylov iterations.
[in]verbositysolver verbosity level.

Member Function Documentation

◆ methodName()

template<typename VECTOR >
virtual string geosx::CGsolver< VECTOR >::methodName ( ) const
inlinefinaloverridevirtual

Get name of the Krylov subspace method.

Returns
the abbreviated name of the method

Implements geosx::KrylovSolver< VECTOR >.

Definition at line 85 of file CGsolver.hpp.

◆ solve()

template<typename VECTOR >
virtual void geosx::CGsolver< VECTOR >::solve ( Vector const &  b,
Vector x 
) const
finaloverridevirtual

Solve preconditioned system.

Parameters
[in]bsystem right hand side.
[in,out]xsystem solution (input = initial guess, output = solution).

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