Ginkgo  Generated from pipelines/2969282958 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
Public Member Functions | Public Attributes | List of all members
gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory > Struct Template Reference
Inheritance diagram for gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory >:
[legend]
Collaboration diagram for gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory >:
[legend]

Public Member Functions

auto with_preconditioner (::gko::deferred_factory_parameter< preconditioner_type > factory) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_generated_preconditioner (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_nullspace (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_left_nullspace (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
- Public Member Functions inherited from gko::solver::enable_iterative_solver_factory_parameters< Parameters, Factory >
template<typename... Args, typename = std::enable_if_t<::std::conjunction< std::is_convertible<Args, ::gko::deferred_factory_parameter< criteria_type>>...>::value>>
auto with_criteria (Args &&... factories) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename FactoryType , typename = std::enable_if_t<std::is_convertible< FactoryType, ::gko::deferred_factory_parameter< criteria_type>>::value>>
auto with_criteria (const std::vector< FactoryType > &factories) -> std::decay_t< decltype(*(this->self()))> &
 
- Public Member Functions inherited from gko::enable_parameters_type< Parameters, Factory >
Parameters & with_loggers (Args &&... _value)
 Provides the loggers to be added to the factory and its generated objects in a fluent interface.
 
std::unique_ptr< Factory > on (std::shared_ptr< const Executor > exec) const
 Creates a new factory on the specified executor. More...
 

Public Attributes

std::shared_ptr< const LinOpFactory > preconditioner {}
 The preconditioner to be used by the iterative solver. More...
 
std::shared_ptr< const LinOp > generated_preconditioner { nullptr }
 Already generated preconditioner. More...
 
std::shared_ptr< const LinOp > nullspace { nullptr }
 Right nullspace \( N(A) \) of the (singular) system matrix, given as a Nullspace<ValueType>. More...
 
std::shared_ptr< const LinOp > left_nullspace { nullptr }
 Left nullspace \( N(A^H) \) – the orthogonal complement of \( \mathrm{range}(A) \), given as a Nullspace<ValueType>. More...
 
- Public Attributes inherited from gko::solver::enable_iterative_solver_factory_parameters< Parameters, Factory >
std::vector< std::shared_ptr< const stop::CriterionFactory > > criteria {}
 Stopping criteria to be used by the solver.
 

Additional Inherited Members

- Public Types inherited from gko::enable_parameters_type< Parameters, Factory >
using factory = Factory
 

Member Data Documentation

◆ generated_preconditioner

template<typename Parameters, typename Factory>
std::shared_ptr<const LinOp> gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory >::generated_preconditioner { nullptr }

Already generated preconditioner.

If one is provided, the factory preconditioner will be ignored.

◆ left_nullspace

template<typename Parameters, typename Factory>
std::shared_ptr<const LinOp> gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory >::left_nullspace { nullptr }

Left nullspace \( N(A^H) \) – the orthogonal complement of \( \mathrm{range}(A) \), given as a Nullspace<ValueType>.

When set, the solver projects the right-hand side onto \( \mathrm{range}(A) \), which makes the system consistent, so inconsistent systems are solved in the least-squares sense.

The solver then works with the projected right-hand side throughout: stopping criteria measure the residual of the projected system and loggers receive the projected right-hand side. The residual \( b - A x \) of the original system does not drop below the norm of the removed part of \( b \).

For solvers requiring a Hermitian matrix (Cg, Fcg, Minres), the left and right nullspace coincide, and this defaults to nullspace. By default, none.

◆ nullspace

template<typename Parameters, typename Factory>
std::shared_ptr<const LinOp> gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory >::nullspace { nullptr }

Right nullspace \( N(A) \) of the (singular) system matrix, given as a Nullspace<ValueType>.

When set, the solver removes the \( N(A) \) component from the initial guess, and wraps its preconditioner in a preconditioner::NullspaceProjection, which removes it from every preconditioned vector. For a consistent system, i.e. a right-hand side in \( \mathrm{range}(A) \), this converges to the minimum-norm solution. Otherwise, left_nullspace needs to be set as well: Hermitian solvers (Cg, Fcg, Minres) use the nullspace as left nullspace by default, while Gmres and Bicgstab without it stagnate or diverge. The solver's get_preconditioner() then returns the wrapper, and get_unprojected_preconditioner() the wrapped preconditioner.

Supported by the solvers specializing nullspace_traits (Cg, Fcg, Minres, Gmres, Bicgstab); other solvers throw NotSupported. A constant-only nullspace is adapted to the size and value type of the system matrix, other nullspaces need to match them. For complex value types, the solver's transpose() throws NotSupported when a nullspace is set, while conj_transpose() is supported. By default, none.

◆ preconditioner

template<typename Parameters, typename Factory>
std::shared_ptr<const LinOpFactory> gko::solver::enable_preconditioned_iterative_solver_factory_parameters< Parameters, Factory >::preconditioner {}

The preconditioner to be used by the iterative solver.

By default, no preconditioner is used.


The documentation for this struct was generated from the following file: