MFEM
v4.2.0
Finite element discretization library
|
#include <ginkgo.hpp>
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 |
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.
mfem::GinkgoWrappers::FCGSolver::FCGSolver | ( | const std::string & | exec_type, |
int | print_iter, | ||
int | max_num_iter, | ||
double | RTOLERANCE, | ||
double | ATOLERANCE | ||
) |
Constructor.
[in] | exec_type | The execution paradigm for the solver. |
[in] | print_iter | A setting to control the printing to the screen. |
[in] | max_num_iter | The maximum number of iterations to be run. |
[in] | RTOLERANCE | The relative tolerance to be achieved. |
[in] | ATOLERANCE | The 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.
[in] | exec_type | The execution paradigm for the solver. |
[in] | print_iter | A setting to control the printing to the screen. |
[in] | max_num_iter | The maximum number of iterations to be run. |
[in] | RTOLERANCE | The relative tolerance to be achieved. |
[in] | ATOLERANCE | The absolute tolerance to be achieved. |
[in] | preconditioner | The preconditioner for the solver. |
Definition at line 389 of file ginkgo.cpp.