Arcane  v4.1.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >

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. Plus de détails...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/alina/arccore/alina/LooseGMRESSolver.h>

+ Graphe d'héritage de Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >:
+ Graphe de collaboration de Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >:

Types publics

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
 

Fonctions membres publiques

 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.
 

Attributs publics

params prm
 

Fonctions membres privées

template<class Vec>
scalar_type norm (const Vec &x) const
 

Attributs privés

size_t n
 
size_t M
 
multi_array< coef_type, 2 > H
 
multi_array< coef_type, 2 > H0
 
std::vector< coef_types
 
std::vector< coef_typecs
 
std::vector< coef_typesn
 
std::shared_ptr< vectorr
 
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
 

Amis

std::ostream & operator<< (std::ostream &os, const LooseGMRESSolver &s)
 

Description détaillée

template<class Backend, class InnerProduct = detail::default_inner_product>
class Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >

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.

Définition à la ligne 165 du fichier LooseGMRESSolver.h.

Documentation des définitions de type membres

◆ backend_params

template<class Backend, class InnerProduct = detail::default_inner_product>
typedef Backend::params Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::backend_params

Définition à la ligne 175 du fichier LooseGMRESSolver.h.

◆ backend_type

template<class Backend, class InnerProduct = detail::default_inner_product>
using Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::backend_type = Backend

Définition à la ligne 170 du fichier LooseGMRESSolver.h.

◆ BackendType

template<class Backend, class InnerProduct = detail::default_inner_product>
using Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::BackendType = Backend

Définition à la ligne 171 du fichier LooseGMRESSolver.h.

◆ coef_type

template<class Backend, class InnerProduct = detail::default_inner_product>
typedef math::inner_product_impl<rhs_type>::return_type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::coef_type

Définition à la ligne 179 du fichier LooseGMRESSolver.h.

◆ params

template<class Backend, class InnerProduct = detail::default_inner_product>
using Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::params = LooseGMRESSolverParams

Définition à la ligne 181 du fichier LooseGMRESSolver.h.

◆ rhs_type

template<class Backend, class InnerProduct = detail::default_inner_product>
typedef math::rhs_of<value_type>::type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::rhs_type

Définition à la ligne 178 du fichier LooseGMRESSolver.h.

◆ scalar_type

template<class Backend, class InnerProduct = detail::default_inner_product>
typedef math::scalar_of<value_type>::type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::scalar_type

Définition à la ligne 177 du fichier LooseGMRESSolver.h.

◆ value_type

template<class Backend, class InnerProduct = detail::default_inner_product>
typedef Backend::value_type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::value_type

Définition à la ligne 174 du fichier LooseGMRESSolver.h.

◆ vector

template<class Backend, class InnerProduct = detail::default_inner_product>
typedef Backend::vector Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::vector

Définition à la ligne 173 du fichier LooseGMRESSolver.h.

Documentation des constructeurs et destructeur

◆ LooseGMRESSolver()

template<class Backend, class InnerProduct = detail::default_inner_product>
Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::LooseGMRESSolver ( size_t n,
const params & prm = params(),
const backend_params & bprm = backend_params(),
const InnerProduct & inner_product = InnerProduct() )
inline

Preallocates necessary data structures for the system of size n.

Définition à la ligne 184 du fichier LooseGMRESSolver.h.

Documentation des fonctions membres

◆ bytes()

template<class Backend, class InnerProduct = detail::default_inner_product>
size_t Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::bytes ( ) const
inlinevirtual

Memory used in bytes.

Implémente Arcane::Alina::SolverBase.

Définition à la ligne 397 du fichier LooseGMRESSolver.h.

◆ norm()

template<class Backend, class InnerProduct = detail::default_inner_product>
template<class Vec>
scalar_type Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::norm ( const Vec & x) const
inlineprivate

Définition à la ligne 445 du fichier LooseGMRESSolver.h.

◆ operator()() [1/2]

template<class Backend, class InnerProduct = detail::default_inner_product>
template<class Matrix, class Precond, class Vec1, class Vec2>
SolverResult Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::operator() ( Matrix const & A,
Precond const & P,
Vec1 const & rhs,
Vec2 & x ) const
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]_.

Définition à la ligne 226 du fichier LooseGMRESSolver.h.

◆ operator()() [2/2]

template<class Backend, class InnerProduct = detail::default_inner_product>
template<class Precond, class Vec1, class Vec2>
SolverResult Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::operator() ( Precond const & P,
Vec1 const & rhs,
Vec2 & x ) const
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.

Définition à la ligne 392 du fichier LooseGMRESSolver.h.

Documentation des fonctions amies et associées

◆ operator<<

template<class Backend, class InnerProduct = detail::default_inner_product>
std::ostream & operator<< ( std::ostream & os,
const LooseGMRESSolver< Backend, InnerProduct > & s )
friend

Définition à la ligne 419 du fichier LooseGMRESSolver.h.

Documentation des données membres

◆ cs

template<class Backend, class InnerProduct = detail::default_inner_product>
std::vector<coef_type> Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::cs
private

Définition à la ligne 436 du fichier LooseGMRESSolver.h.

◆ H

template<class Backend, class InnerProduct = detail::default_inner_product>
multi_array<coef_type, 2> Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::H
mutableprivate

Définition à la ligne 435 du fichier LooseGMRESSolver.h.

◆ H0

template<class Backend, class InnerProduct = detail::default_inner_product>
multi_array<coef_type, 2> Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::H0
private

Définition à la ligne 435 du fichier LooseGMRESSolver.h.

◆ inner_product

template<class Backend, class InnerProduct = detail::default_inner_product>
InnerProduct Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::inner_product
private

Définition à la ligne 442 du fichier LooseGMRESSolver.h.

◆ M

template<class Backend, class InnerProduct = detail::default_inner_product>
size_t Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::M
private

Définition à la ligne 433 du fichier LooseGMRESSolver.h.

◆ n

template<class Backend, class InnerProduct = detail::default_inner_product>
size_t Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::n
private

Définition à la ligne 433 du fichier LooseGMRESSolver.h.

◆ outer_v

template<class Backend, class InnerProduct = detail::default_inner_product>
circular_buffer<std::shared_ptr<vector> > Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::outer_v
mutableprivate

Définition à la ligne 440 du fichier LooseGMRESSolver.h.

◆ outer_v_data

template<class Backend, class InnerProduct = detail::default_inner_product>
std::vector<std::shared_ptr<vector> > Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::outer_v_data
mutableprivate

Définition à la ligne 439 du fichier LooseGMRESSolver.h.

◆ prm

template<class Backend, class InnerProduct = detail::default_inner_product>
params Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::prm

Définition à la ligne 429 du fichier LooseGMRESSolver.h.

◆ r

template<class Backend, class InnerProduct = detail::default_inner_product>
std::shared_ptr<vector> Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::r
private

Définition à la ligne 437 du fichier LooseGMRESSolver.h.

◆ s

template<class Backend, class InnerProduct = detail::default_inner_product>
std::vector<coef_type> Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::s
mutableprivate

Définition à la ligne 436 du fichier LooseGMRESSolver.h.

◆ sn

template<class Backend, class InnerProduct = detail::default_inner_product>
std::vector<coef_type> Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::sn
private

Définition à la ligne 436 du fichier LooseGMRESSolver.h.

◆ vs

template<class Backend, class InnerProduct = detail::default_inner_product>
std::vector<std::shared_ptr<vector> > Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::vs
mutableprivate

Définition à la ligne 438 du fichier LooseGMRESSolver.h.

◆ ws

template<class Backend, class InnerProduct = detail::default_inner_product>
std::vector<std::shared_ptr<vector> > Arcane::Alina::LooseGMRESSolver< Backend, InnerProduct >::ws
private

Définition à la ligne 438 du fichier LooseGMRESSolver.h.


La documentation de cette classe a été générée à partir du fichier suivant :