![]() |
Ginkgo Generated from branch based on main. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
|
The Incomplete LU (ILU) preconditioner solves the equation
#include <ginkgo/core/preconditioner/ilu.hpp>
Classes | |
class | Factory |
struct | parameters_type |
Public Types | |
using | value_type = gko::detail::get_value_type<LSolverTypeOrValueType> |
using | l_solver_type |
using | u_solver_type |
using | index_type = IndexType |
using | transposed_type |
Public Member Functions | |
const parameters_type & | get_parameters () const |
std::shared_ptr< const l_solver_type > | get_l_solver () const |
Returns the solver which is used for the provided L matrix. | |
std::shared_ptr< const u_solver_type > | get_u_solver () const |
Returns the solver which is used for the provided U matrix. | |
std::unique_ptr< LinOp > | transpose () const override |
Returns a LinOp representing the transpose of the Transposable object. | |
std::unique_ptr< LinOp > | conj_transpose () const override |
Returns a LinOp representing the conjugate transpose of the Transposable object. | |
Ilu & | operator= (const Ilu &other) |
Copy-assigns an ILU preconditioner. | |
Ilu & | operator= (Ilu &&other) |
Move-assigns an ILU preconditioner. | |
Ilu (const Ilu &other) | |
Copy-constructs an ILU preconditioner. | |
Ilu (Ilu &&other) | |
Move-constructs an ILU preconditioner. |
Static Public Member Functions | |
static auto | build () -> decltype(Factory::create()) |
static parameters_type | parse (const config::pnode &config, const config::registry &context, const config::type_descriptor &td_for_child=config::make_type_descriptor< value_type, index_type >()) |
Create the parameters from the property_tree. |
Static Public Attributes | |
static constexpr bool | performs_reverse_apply = ReverseApply |
Friends | |
class | EnableLinOp< Ilu > |
class | EnablePolymorphicObject< Ilu, LinOp > |
The Incomplete LU (ILU) preconditioner solves the equation
It allows to set both the solver for L and the solver for U independently, while providing the defaults solver::LowerTrs and solver::UpperTrs, which are direct triangular solvers. For these solvers, a factory can be provided (with with_l_solver and with_u_solver) to have more control over their behavior. In particular, it is possible to use an iterative method for solving the triangular systems. The default parameters for an iterative triangluar solver are:
An object of this class can be created with a matrix or a gko::Composition containing two matrices. If created with a matrix, it is factorized before creating the solver. If a gko::Composition (containing two matrices) is used, the first operand will be taken as the L matrix, the second will be considered the U matrix. ParIlu can be directly used, since it orders the factors in the correct way.
LSolverTypeOrValueType | type of the solver or the value type used for the L matrix. Defaults to solver::LowerTrs |
USolverTypeOrValueType | type of the solver or the value type used for the U matrix Defaults to solver::UpperTrs |
ReverseApply | default behavior (ReverseApply = false) is first to solve with L (Ly = b) and then with U (Ux = y). When set to true, it will solve first with U, and then with L. |
IndexTypeParIlu | Type of the indices when ParIlu is used to generate both L and U factors. Irrelevant otherwise. |
using gko::preconditioner::Ilu< LSolverTypeOrValueType, USolverTypeOrValueType, ReverseApply, IndexType >::l_solver_type |
using gko::preconditioner::Ilu< LSolverTypeOrValueType, USolverTypeOrValueType, ReverseApply, IndexType >::transposed_type |
using gko::preconditioner::Ilu< LSolverTypeOrValueType, USolverTypeOrValueType, ReverseApply, IndexType >::u_solver_type |
|
inline |
Copy-constructs an ILU preconditioner.
Inherits the executor, shallow-copies the solvers and parameters.
References Ilu().
Referenced by Ilu(), Ilu(), operator=(), and operator=().
|
inline |
Move-constructs an ILU preconditioner.
Inherits the executor, moves the solvers and parameters. The moved-from object is empty (0x0 with nullptr solvers and default parameters)
References Ilu().
|
inlineoverridevirtual |
Returns a LinOp representing the conjugate transpose of the Transposable object.
Implements gko::Transposable.
References gko::as(), conj_transpose(), get_l_solver(), get_u_solver(), gko::share(), and gko::transpose().
Referenced by conj_transpose().
|
inline |
Returns the solver which is used for the provided L matrix.
Referenced by conj_transpose(), and transpose().
|
inline |
Returns the solver which is used for the provided U matrix.
Referenced by conj_transpose(), and transpose().
|
inline |
Copy-assigns an ILU preconditioner.
Preserves the executor, shallow-copies the solvers and parameters. Creates a clone of the solvers if they are on the wrong executor.
References gko::clone(), Ilu(), and gko::LinOp::operator=().
|
inline |
Move-assigns an ILU preconditioner.
Preserves the executor, moves the solvers and parameters. Creates a clone of the solvers if they are on the wrong executor. The moved-from object is empty (0x0 with nullptr solvers and default parameters)
References gko::clone(), Ilu(), and gko::LinOp::operator=().
|
inlinestatic |
Create the parameters from the property_tree.
Because this is directly tied to the specific type, the value/index type settings within config are ignored and type_descriptor is only used for children configs.
config | the property tree for setting |
context | the registry |
td_for_child | the type descriptor for children configs. The default uses the value/index type of this class. |
|
inlineoverridevirtual |
Returns a LinOp representing the transpose of the Transposable object.
Implements gko::Transposable.
References gko::as(), get_l_solver(), get_u_solver(), gko::share(), transpose(), and gko::transpose().
Referenced by transpose().