Loose GMRES. \rst The LGMRES algorithm [BaJM05]_ is designed to avoid some problems in the convergence in restarted GMRES, and often converges in fewer iterations. \endrst. More...
Public Types | |
| using | backend_type = Backend |
| using | BackendType = Backend |
| typedef Backend::vector | vector |
| typedef Backend::value_type | value_type |
| typedef Backend::params | backend_params |
| typedef math::scalar_of< value_type >::type | scalar_type |
| typedef math::rhs_of< value_type >::type | rhs_type |
| typedef math::inner_product_impl< rhs_type >::return_type | coef_type |
| using | params = LooseGMRESSolverParams |
Public Member Functions | |
| LooseGMRESSolver (size_t n, const params &prm=params(), const backend_params &bprm=backend_params(), const InnerProduct &inner_product=InnerProduct()) | |
Preallocates necessary data structures for the system of size n. | |
| template<class Matrix, class Precond, class Vec1, class Vec2> | |
| SolverResult | operator() (Matrix const &A, Precond const &P, Vec1 const &rhs, Vec2 &x) const |
| Computes the solution for the given system matrix. | |
| template<class Precond, class Vec1, class Vec2> | |
| SolverResult | operator() (Precond const &P, Vec1 const &rhs, Vec2 &x) const |
| Computes the solution for the given right-hand side. | |
| size_t | bytes () const |
| Memory used in bytes. | |
Public Attributes | |
| params | prm |
Private Member Functions | |
| template<class Vec> | |
| scalar_type | norm (const Vec &x) const |
Private Attributes | |
| size_t | n |
| size_t | M |
| multi_array< coef_type, 2 > | H |
| multi_array< coef_type, 2 > | H0 |
| std::vector< coef_type > | s |
| std::vector< coef_type > | cs |
| std::vector< coef_type > | sn |
| std::shared_ptr< vector > | r |
| std::vector< std::shared_ptr< vector > > | vs |
| std::vector< std::shared_ptr< vector > > | ws |
| std::vector< std::shared_ptr< vector > > | outer_v_data |
| circular_buffer< std::shared_ptr< vector > > | outer_v |
| InnerProduct | inner_product |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const LooseGMRESSolver &s) |
Loose GMRES. \rst The LGMRES algorithm [BaJM05]_ is designed to avoid some problems in the convergence in restarted GMRES, and often converges in fewer iterations. \endrst.
Definition at line 165 of file LooseGMRESSolver.h.
| typedef Backend::params Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::backend_params |
Definition at line 175 of file LooseGMRESSolver.h.
| using Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::backend_type = Backend |
Definition at line 170 of file LooseGMRESSolver.h.
| using Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::BackendType = Backend |
Definition at line 171 of file LooseGMRESSolver.h.
| typedef math::inner_product_impl<rhs_type>::return_type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::coef_type |
Definition at line 179 of file LooseGMRESSolver.h.
| using Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::params = LooseGMRESSolverParams |
Definition at line 181 of file LooseGMRESSolver.h.
| typedef math::rhs_of<value_type>::type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::rhs_type |
Definition at line 178 of file LooseGMRESSolver.h.
| typedef math::scalar_of<value_type>::type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::scalar_type |
Definition at line 177 of file LooseGMRESSolver.h.
| typedef Backend::value_type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::value_type |
Definition at line 174 of file LooseGMRESSolver.h.
| typedef Backend::vector Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::vector |
Definition at line 173 of file LooseGMRESSolver.h.
|
inline |
Preallocates necessary data structures for the system of size n.
Definition at line 184 of file LooseGMRESSolver.h.
|
inlinevirtual |
Memory used in bytes.
Implements Arcane::Alina::SolverBase.
Definition at line 397 of file LooseGMRESSolver.h.
|
inlineprivate |
Definition at line 445 of file LooseGMRESSolver.h.
|
inline |
Computes the solution for the given system matrix.
Computes the solution for the given system matrix A and the right-hand side rhs. Returns the number of iterations made and the achieved residual as a std::tuple. The solution vector x provides initial approximation in input and holds the computed solution on output.
The system matrix may differ from the matrix used during initialization. This may be used for the solution of non-stationary problems with slowly changing coefficients. There is a strong chance that a preconditioner built for a time step will act as a reasonably good preconditioner for several subsequent time steps [DeSh12]_.
Definition at line 226 of file LooseGMRESSolver.h.
|
inline |
Computes the solution for the given right-hand side.
Computes the solution for the given right-hand side rhs. The system matrix is the same that was used for the setup of the preconditioner P. Returns the number of iterations made and the achieved residual as a std::tuple. The solution vector x provides initial approximation in input and holds the computed solution on output.
Definition at line 392 of file LooseGMRESSolver.h.
|
friend |
Definition at line 419 of file LooseGMRESSolver.h.
|
private |
Definition at line 436 of file LooseGMRESSolver.h.
|
mutableprivate |
Definition at line 435 of file LooseGMRESSolver.h.
|
private |
Definition at line 435 of file LooseGMRESSolver.h.
|
private |
Definition at line 442 of file LooseGMRESSolver.h.
|
private |
Definition at line 433 of file LooseGMRESSolver.h.
|
private |
Definition at line 433 of file LooseGMRESSolver.h.
|
mutableprivate |
Definition at line 440 of file LooseGMRESSolver.h.
|
mutableprivate |
Definition at line 439 of file LooseGMRESSolver.h.
| params Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::prm |
Definition at line 429 of file LooseGMRESSolver.h.
|
private |
Definition at line 437 of file LooseGMRESSolver.h.
|
mutableprivate |
Definition at line 436 of file LooseGMRESSolver.h.
|
private |
Definition at line 436 of file LooseGMRESSolver.h.
|
mutableprivate |
Definition at line 438 of file LooseGMRESSolver.h.
|
private |
Definition at line 438 of file LooseGMRESSolver.h.