Implementation of LinearSolverInterface for EIGEN solvers. More...
#include <LinearSolver.hpp>
Inherits LinearSolverInterface< Mat, VecX, VecX >, LinearSolverInterface< Mat, VecX, VecX >, LinearSolverInterface< Mat, VecX, VecX >, and LinearSolverInterface< Matrix, VectorX, VectorY >.
Public Member Functions | |
| LinearSolver (std::string const &name, std::string const &prefix) | |
| void | init (Mat const &A) override |
| Implements LinearSolverInterface::init() More... | |
| void | finish () override |
| Implements LinearSolverInterface::finish() More... | |
| void | apply (VecX &x, VecY const &b, Dune::InverseOperatorResult &stat) override |
| Implements LinearSolverInterface::apply() | |
| LinearSolver (std::string const &name, std::string const &prefix) | |
| void | init (Mat const &A) override |
| Prepare the solve (and preconditioner), e.g. make a factorization of the matrix, or extract its diagonal in a jacobian precon. More... | |
| void | finish () override |
| Cleanup the solver, e.g. free the previously created factorization. More... | |
| void | apply (VecX &x, VecY const &b, Dune::InverseOperatorResult &stat) override |
| Implements Dune::InverseOperator::apply() | |
| LinearSolver (std::string const &name, std::string const &prefix) | |
| void | init (Mat const &A) override |
| Implements LinearSolverInterface::init() More... | |
| void | finish () override |
| Implements LinearSolverInterface::finish() More... | |
| void | apply (VecX &x, VecY const &b, Dune::InverseOperatorResult &stat) override |
| Implements LinearSolverInterface::apply() | |
| LinearSolver (std::string const &, std::string const &prefix) | |
| Constructor. More... | |
| void | init (Matrix const &A) override |
| Implements LinearSolverInterface::init() More... | |
| void | finish () override |
| Implements LinearSolverInterface::finish() More... | |
| void | apply (VectorX &x, VectorY const &b, Dune::InverseOperatorResult &stat) override |
| Implements LinearSolverInterface::apply() More... | |
| KSP | ksp () |
Public Member Functions inherited from LinearSolverInterface< Mat, VecX, VecX > | |
| virtual void | init (Mat const &A)=0 |
| Prepare the solve (and preconditioner), e.g. make a factorization of the matrix, or extract its diagonal in a jacobian precon. More... | |
| virtual void | finish ()=0 |
| Cleanup the solver, e.g. free the previously created factorization. More... | |
| virtual void | apply (VecX &x, VecX const &b, Dune::InverseOperatorResult &res)=0 |
| Apply the inverse operator to the rhs vector b. | |
| virtual void | init (Matrix const &A)=0 |
| Prepare the solve (and preconditioner), e.g. make a factorization of the matrix, or extract its diagonal in a jacobian precon. More... | |
| virtual void | finish ()=0 |
| Cleanup the solver, e.g. free the previously created factorization. More... | |
| virtual void | apply (VectorX &x, VectorY const &b, Dune::InverseOperatorResult &res)=0 |
| Apply the inverse operator to the rhs vector b. More... | |
Protected Member Functions | |
| virtual void | initKSP (KSP ksp, std::string prefix) const |
Protected Attributes | |
| std::string | prefix_ |
| int | info_ = 0 |
| KSP | ksp_ |
| bool | initialized_ = false |
Implementation of LinearSolverInterface for EIGEN solvers.
Wrapper around PETSc KSP and PC objects to solve a linear system.
Implementation of LinearSolverInterface for MTL solvers.
Implementation of RunnerInterface for ISTL solvers.
Configure the KSP and PC types using initfile parameters, based on an initfile prefix [prefix]: All parameters are names as the PETSc command-line parameters with underscore replaced by space and removing the type postfix, e.g. instead of ksp_type write ksp, instead of mat_solver_type write mat solver.
Examples:
For the configuration of sub PC types and sub KSP types, one can use the current parameter as new prefix, e.g. [sub-prefix] := [prefix]->pc, or [sub-sub-prefix] := [prefix]->pc->sub ksp. Those sub PC and sub KSP types can be configured with all the possible parameters.
For the configuration using command-line arguments possible a ksp-prefix or pc-prefix must be assigned to distinguish different KSP and PC objects. Therefore, for each initfile prefix, a PETSc prefix can be set: [prefix]->prefix: name, where name can be used on the commandline, e.g. -name_ksp_type fgmres.
|
inline |
Constructor.
Stores the initfile prefix to configure the ksp and pc solver.
Reads an info flag [prefix]->info: 0 ... No solver convergence information 1 ... Minimal output, print residual every 10th iteration 2 ... Full convergence output. Print residual, true residual and rel. residual every iteration.
References Initfile::get().
|
inlineoverridevirtual |
Implements LinearSolverInterface::apply()
Implements LinearSolverInterface< Matrix, VectorX, VectorY >.
|
inlineoverridevirtual |
Implements LinearSolverInterface::finish()
Implements LinearSolverInterface< Mat, VecX, VecX >.
Referenced by LinearSolver< Mat, VecX, VecY >::init().
|
inlineoverridevirtual |
Cleanup the solver, e.g. free the previously created factorization.
Implements LinearSolverInterface< Mat, VecX, VecX >.
|
inlineoverridevirtual |
Implements LinearSolverInterface::finish()
Implements LinearSolverInterface< Mat, VecX, VecX >.
|
inlineoverridevirtual |
Implements LinearSolverInterface::finish()
Implements LinearSolverInterface< Mat, VecX, VecX >.
|
inlineoverridevirtual |
Implements LinearSolverInterface::init()
Implements LinearSolverInterface< Mat, VecX, VecX >.
|
inlineoverridevirtual |
Prepare the solve (and preconditioner), e.g. make a factorization of the matrix, or extract its diagonal in a jacobian precon.
Implements LinearSolverInterface< Mat, VecX, VecX >.
|
inlineoverridevirtual |
Implements LinearSolverInterface::init()
Implements LinearSolverInterface< Mat, VecX, VecX >.
|
inlineoverridevirtual |
Implements LinearSolverInterface::init()
Implements LinearSolverInterface< Matrix, VectorX, VectorY >.
References LinearSolver< Mat, VecX, VecY >::finish().