Reference documentation for deal.II version 9.4.1
|
#include <deal.II/lac/ginkgo_solver.h>
Classes | |
struct | AdditionalData |
Public Member Functions | |
SolverFCG (SolverControl &solver_control, const std::string &exec_type, const AdditionalData &data=AdditionalData()) | |
SolverFCG (SolverControl &solver_control, const std::string &exec_type, const std::shared_ptr< gko::LinOpFactory > &preconditioner, const AdditionalData &data=AdditionalData()) | |
void | initialize (const SparseMatrix< ValueType > &matrix) |
void | apply (Vector< ValueType > &solution, const Vector< ValueType > &rhs) |
void | solve (const SparseMatrix< ValueType > &matrix, Vector< ValueType > &solution, const Vector< ValueType > &rhs) |
SolverControl & | control () const |
Protected Attributes | |
const AdditionalData | additional_data |
SolverControl & | solver_control |
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< gko::stop::Combined::Factory > | combined_factory |
std::shared_ptr< gko::Executor > | executor |
Private Member Functions | |
void | initialize_ginkgo_log () |
Private Attributes | |
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | system_matrix |
const std::string | exec_type |
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 396 of file ginkgo_solver.h.
GinkgoWrappers::SolverFCG< ValueType, IndexType >::SolverFCG | ( | SolverControl & | solver_control, |
const std::string & | exec_type, | ||
const AdditionalData & | data = AdditionalData() |
||
) |
Constructor.
[in,out] | solver_control | The solver control object is then used to set the parameters and setup the FCG solver from the FCG factory which solves the linear system. |
[in] | exec_type | The execution paradigm for the FCG solver. |
[in] | data | The additional data required by the solver. |
Definition at line 405 of file ginkgo_solver.cc.
GinkgoWrappers::SolverFCG< ValueType, IndexType >::SolverFCG | ( | SolverControl & | solver_control, |
const std::string & | exec_type, | ||
const std::shared_ptr< gko::LinOpFactory > & | preconditioner, | ||
const AdditionalData & | data = AdditionalData() |
||
) |
Constructor.
[in,out] | solver_control | The solver control object is then used to set the parameters and setup the FCG solver from the FCG factory which solves the linear system. |
[in] | exec_type | The execution paradigm for the FCG solver. |
[in] | preconditioner | The preconditioner for the solver. |
[in] | data | The additional data required by the solver. |
Definition at line 419 of file ginkgo_solver.cc.
|
inherited |
Initialize the matrix and copy over its data to Ginkgo's data structures.
Definition at line 218 of file ginkgo_solver.cc.
|
inherited |
Solve the linear system Ax=b
. Dependent on the information provided by derived classes one of Ginkgo's linear solvers is chosen.
Definition at line 88 of file ginkgo_solver.cc.
|
inherited |
Solve the linear system Ax=b
. Dependent on the information provided by derived classes one of Ginkgo's linear solvers is chosen.
Definition at line 292 of file ginkgo_solver.cc.
|
inherited |
Access to the object that controls convergence.
Definition at line 209 of file ginkgo_solver.cc.
|
privateinherited |
Initialize the Ginkgo logger object with event masks. Refer to Ginkgo's logging event masks.
Definition at line 76 of file ginkgo_solver.cc.
|
protected |
Store a copy of the settings for this particular solver.
Definition at line 442 of file ginkgo_solver.h.
|
protectedinherited |
Reference to the object that controls convergence of the iterative solvers.
Definition at line 148 of file ginkgo_solver.h.
|
protectedinherited |
The Ginkgo generated solver factory object.
Definition at line 153 of file ginkgo_solver.h.
|
protectedinherited |
The residual criterion object that controls the reduction of the residual based on the tolerance set in the solver_control member.
Definition at line 160 of file ginkgo_solver.h.
|
protectedinherited |
The Ginkgo convergence logger used to check for convergence and other solver data if needed.
Definition at line 166 of file ginkgo_solver.h.
|
protectedinherited |
The Ginkgo combined factory object is used to create a combined stopping criterion to be passed to the solver.
Definition at line 172 of file ginkgo_solver.h.
|
protectedinherited |
The execution paradigm in Ginkgo. The choices are between gko::OmpExecutor
, gko::CudaExecutor
and gko::ReferenceExecutor
and more details can be found in Ginkgo's documentation.
Definition at line 179 of file ginkgo_solver.h.
|
privateinherited |
Ginkgo matrix data structure. First template parameter is for storing the array of the non-zeros of the matrix. The second is for the row pointers and the column indices.
Definition at line 198 of file ginkgo_solver.h.
|
privateinherited |
The execution paradigm as a string to be set by the user. The choices are between omp
, cuda
and reference
and more details can be found in Ginkgo's documentation.
Definition at line 205 of file ginkgo_solver.h.