MFEM  v4.2.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | List of all members
mfem::GinkgoWrappers::FCGSolver Class Reference

#include <ginkgo.hpp>

Inheritance diagram for mfem::GinkgoWrappers::FCGSolver:
[legend]
Collaboration diagram for mfem::GinkgoWrappers::FCGSolver:
[legend]

Public Member Functions

 FCGSolver (const std::string &exec_type, int print_iter, int max_num_iter, double RTOLERANCE, double ATOLERANCE)
 
 FCGSolver (const std::string &exec_type, int print_iter, int max_num_iter, double RTOLERANCE, double ATOLERANCE, const gko::LinOpFactory *preconditioner)
 
- Public Member Functions inherited from mfem::GinkgoWrappers::GinkgoIterativeSolverBase
 GinkgoIterativeSolverBase (const std::string &exec_type, int print_iter, int max_num_iter, double RTOLERANCE, double ATOLERANCE)
 
virtual ~GinkgoIterativeSolverBase ()=default
 
void initialize (const SparseMatrix *matrix)
 
void apply (Vector &solution, const Vector &rhs)
 
void solve (const SparseMatrix *matrix, Vector &solution, const Vector &rhs)
 

Additional Inherited Members

- Protected Attributes inherited from mfem::GinkgoWrappers::GinkgoIterativeSolverBase
int print_lvl
 
int max_iter
 
double rel_tol
 
double abs_tol
 
double final_norm
 
int final_iter
 
int converged
 
std::shared_ptr
< gko::LinOpFactory > 
solver_gen
 
std::shared_ptr
< gko::stop::ResidualNormReduction
<>::Factory > 
residual_criterion
 
std::shared_ptr
< gko::log::Convergence<> > 
convergence_logger
 
std::shared_ptr< ResidualLogger<> > residual_logger
 
std::shared_ptr
< gko::stop::Combined::Factory > 
combined_factory
 
std::shared_ptr< gko::Executor > executor
 

Detailed Description

An implementation of the solver interface using the Ginkgo FCG solver.

FCG or the flexible conjugate gradient method is an iterative type Krylov subspace method which is suitable for symmetric positive definite methods.

Though this method performs very well for symmetric positive definite matrices, it is in general not suitable for general matrices.

In contrast to the standard CG based on the Polack-Ribiere formula, the flexible CG uses the Fletcher-Reeves formula for creating the orthonormal vectors spanning the Krylov subspace. This increases the computational cost of every Krylov solver iteration but allows for non-constant preconditioners.

Definition at line 502 of file ginkgo.hpp.

Constructor & Destructor Documentation

mfem::GinkgoWrappers::FCGSolver::FCGSolver ( const std::string &  exec_type,
int  print_iter,
int  max_num_iter,
double  RTOLERANCE,
double  ATOLERANCE 
)

Constructor.

Parameters
[in]exec_typeThe execution paradigm for the solver.
[in]print_iterA setting to control the printing to the screen.
[in]max_num_iterThe maximum number of iterations to be run.
[in]RTOLERANCEThe relative tolerance to be achieved.
[in]ATOLERANCEThe absolute tolerance to be achieved.

Definition at line 374 of file ginkgo.cpp.

mfem::GinkgoWrappers::FCGSolver::FCGSolver ( const std::string &  exec_type,
int  print_iter,
int  max_num_iter,
double  RTOLERANCE,
double  ATOLERANCE,
const gko::LinOpFactory *  preconditioner 
)

Constructor.

Parameters
[in]exec_typeThe execution paradigm for the solver.
[in]print_iterA setting to control the printing to the screen.
[in]max_num_iterThe maximum number of iterations to be run.
[in]RTOLERANCEThe relative tolerance to be achieved.
[in]ATOLERANCEThe absolute tolerance to be achieved.
[in]preconditionerThe preconditioner for the solver.

Definition at line 389 of file ginkgo.cpp.


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