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 (LinearSolverParameters params, LinearOperator< Vector > const &A, LinearOperator< Vector > const &M)
 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 (LinearSolverParameters params, LinearOperator< Vector > const &matrix, LinearOperator< Vector > const &precond)
 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...
 
virtual localIndex numLocalRows () const override final
 Get the number of local rows. More...
 
virtual localIndex numLocalCols () const override final
 Get the number of local columns. More...
 
virtual MPI_Comm getComm () const override final
 Get the MPI communicator the matrix was created with. More...
 
LinearSolverParameters const & parameters () const
 
LinearSolverResult const & result () const
 
arrayView1d< real64 const > history () const
 Get convergence history of a linear solve. 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, dst = this(src). More...
 
virtual void residual (Vector const &x, Vector const &b, Vector &r) const
 Compute residual r = b - this(x). 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 >
LinearSolverParameters m_params
 parameters of the solver
 
LinearOperator< Vector > const & m_operator
 reference to the operator to be solved
 
LinearOperator< Vector > const & m_precond
 reference to the preconditioning operator
 
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 ( LinearSolverParameters  params,
LinearOperator< Vector > const &  A,
LinearOperator< Vector > const &  M 
)

Constructor.

Parameters
[in]paramsparameters for the solver
[in]Areference to the system matrix.
[in]Mreference to the preconditioning operator.

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 81 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: