EnableLinOp< ConcreteLinOp, PolymorphicBase > Class Template Reference#
|
Reference API
|
#include <ginkgo/core/base/lin_op.hpp>
Inherits gko::EnablePolymorphicObject< ConcreteObject, PolymorphicBase >, and gko::EnablePolymorphicAssignment< ConcreteLinOp >.
Inherited by gko::Composition< gko::default_precision >, gko::Composition< default_precision >, gko::matrix::Dense< value_type >, gko::Combination< ValueType >, gko::Composition< ValueType >, gko::Perturbation< ValueType >, gko::experimental::distributed::Matrix< ValueType, LocalIndexType, GlobalIndexType >, gko::experimental::distributed::Vector< ValueType >, gko::experimental::distributed::preconditioner::Schwarz< ValueType, LocalIndexType, GlobalIndexType >, gko::experimental::reorder::ScaledReordered< ValueType, IndexType >, gko::matrix::Coo< ValueType, IndexType >, gko::matrix::Csr< ValueType, IndexType >, gko::matrix::Dense< ValueType >, gko::matrix::Diagonal< ValueType >, gko::matrix::Ell< ValueType, IndexType >, gko::matrix::Fbcsr< ValueType, IndexType >, gko::matrix::Hybrid< ValueType, IndexType >, gko::matrix::Identity< ValueType >, gko::matrix::Permutation< IndexType >, gko::matrix::RowGatherer< IndexType >, gko::matrix::ScaledPermutation< ValueType, IndexType >, gko::matrix::Sellp< ValueType, IndexType >, gko::matrix::SparsityCsr< ValueType, IndexType >, gko::multigrid::FixedCoarsening< ValueType, IndexType >, gko::multigrid::Pgm< ValueType, IndexType >, gko::preconditioner::Ic< LSolverType, IndexType >, gko::preconditioner::Ilu< LSolverType, USolverType, ReverseApply, IndexType >, gko::preconditioner::Jacobi< ValueType, IndexType >, gko::solver::Bicg< ValueType >, gko::solver::Bicgstab< ValueType >, gko::solver::CbGmres< ValueType >, gko::solver::Cg< ValueType >, gko::solver::Cgs< ValueType >, gko::solver::Fcg< ValueType >, gko::solver::Gcr< ValueType >, gko::solver::Gmres< ValueType >, gko::solver::Idr< ValueType >, gko::solver::Ir< ValueType >, gko::solver::LowerTrs< ValueType, IndexType >, gko::solver::Minres< ValueType >, and gko::solver::UpperTrs< ValueType, IndexType >.
Public Member Functions | |
| const ConcreteLinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
| ConcreteLinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
| const ConcreteLinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
| ConcreteLinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< AbstractObject, PolymorphicBase > | |
| std::unique_ptr< AbstractObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< AbstractObject > | create_default () const |
| std::unique_ptr< AbstractObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< AbstractObject > | clone () const |
| AbstractObject * | copy_from (const PolymorphicObject *other) |
| template<typename Derived > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (std::unique_ptr< Derived > &&other) |
| template<typename Derived > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (const std::unique_ptr< Derived > &other) |
| AbstractObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| AbstractObject * | move_from (ptr_param< PolymorphicObject > other) |
| AbstractObject * | clear () |
Public Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject & | operator= (const PolymorphicObject &) |
| std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | create_default () const |
| std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | clone () const |
| PolymorphicObject * | copy_from (const PolymorphicObject *other) |
| template<typename Derived , typename Deleter > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (std::unique_ptr< Derived, Deleter > &&other) |
| template<typename Derived , typename Deleter > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (const std::unique_ptr< Derived, Deleter > &other) |
| PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| PolymorphicObject * | clear () |
| std::shared_ptr< const Executor > | get_executor () const noexcept |
Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | add_logger (std::shared_ptr< const Logger > logger) override |
| void | remove_logger (const Logger *logger) override |
| void | remove_logger (ptr_param< const Logger > logger) |
| const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
| void | clear_loggers () override |
Public Member Functions inherited from gko::log::Loggable | |
| void | remove_logger (ptr_param< const Logger > logger) |
Public Member Functions inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp > | |
| void | convert_to (result_type *result) const override |
| void | move_to (result_type *result) override |
Public Member Functions inherited from gko::ConvertibleTo< ResultType > | |
| virtual void | convert_to (result_type *result) const =0 |
| void | convert_to (ptr_param< result_type > result) const |
| virtual void | move_to (result_type *result)=0 |
| void | move_to (ptr_param< result_type > result) |
Protected Member Functions | |
| ConcreteLinOp * | self () noexcept |
| const ConcreteLinOp * | self () const noexcept |
Protected Member Functions inherited from gko::EnablePolymorphicObject< ConcreteObject, PolymorphicBase > | |
| std::unique_ptr< PolymorphicObject > | create_default_impl (std::shared_ptr< const Executor > exec) const override |
| PolymorphicObject * | copy_from_impl (const PolymorphicObject *other) override |
| PolymorphicObject * | copy_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | move_from_impl (PolymorphicObject *other) override |
| PolymorphicObject * | move_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | clear_impl () override |
Protected Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject (std::shared_ptr< const Executor > exec) | |
| PolymorphicObject (const PolymorphicObject &other) | |
Protected Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | log (Params &&... params) const |
Additional Inherited Members | |
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp > | |
| using | result_type = ConcreteLinOp |
Public Types inherited from gko::ConvertibleTo< ResultType > | |
| using | result_type = ResultType |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
class gko::EnableLinOp< ConcreteLinOp, PolymorphicBase >
The EnableLinOp mixin can be used to provide sensible default implementations of the majority of the LinOp and PolymorphicObject interface.
The goal of the mixin is to facilitate the development of new LinOp, by enabling the implementers to focus on the important parts of their operator, while the library takes care of generating the trivial utility functions. The mixin will provide default implementations for the entire PolymorphicObject interface, including a default implementation of copy_from between objects of the new LinOp type. It will also hide the default LinOp::apply() methods with versions that preserve the static type of the object.
Implementers of new LinOps are required to specify only the following aspects:
- Creation of the LinOp: This can be facilitated via either EnableCreateMethod mixin (used mostly for matrix formats), or GKO_ENABLE_LIN_OP_FACTORY macro (used for operators created from other operators, like preconditioners and solvers).
- Application of the LinOp: Implementers have to override the two overloads of the LinOp::apply_impl() virtual methods.
- Note
- This mixin can't be used with concrete types that derive from experimental::distributed::DistributedBase. In that case use experimental::EnableDistributedLinOp instead.
The documentation for this class was generated from the following file:
- ginkgo/core/base/lin_op.hpp
Generated by
Public Member Functions inherited from