Ginkgo: gko::EnableLinOp< ConcreteLinOp, PolymorphicBase > Class Template Reference

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.0 A numerical linear algebra library targeting many-core architectures

Loading...
Searching...
No Matches
gko::EnableLinOp< ConcreteLinOp, PolymorphicBase > Class Template Reference
Linear Operators

The EnableLinOp mixin can be used to provide sensible default implementations of the majority of the LinOp and PolymorphicObject interface. More...

`#include <ginkgo/core/base/lin_op.hpp>`

Inherits gko::EnablePolymorphicObject< ConcreteLinOp, LinOp >, and gko::EnablePolymorphicAssignment< ConcreteLinOp >.

Inherited by gko::Combination< ValueType >, gko::Composition< ValueType >, gko::Composition< value_type >, gko::experimental::distributed::Vector< ValueType >, gko::experimental::distributed::Vector< to_complex< value_type > >, gko::experimental::distributed::Vector< previous_precision< ValueType > >, gko::experimental::factorization::Factorization< value_type, index_type >, gko::matrix::Coo< ValueType, IndexType >, gko::matrix::Csr< value_type, index_type >, gko::matrix::Csr< ValueType, IndexType >, gko::matrix::Dense< ValueType >, gko::matrix::Dense< value_type >, gko::matrix::Dense< to_complex< ValueType > >, gko::matrix::Dense< absolute_type >, gko::matrix::Dense< remove_complex< ValueType > >, gko::matrix::Diagonal< ValueType >, gko::matrix::Ell< value_type, index_type >, gko::matrix::Ell< ValueType, IndexType >, gko::matrix::Fbcsr< ValueType, IndexType >, gko::matrix::Identity< ValueType >, gko::matrix::Permutation< index_type >, gko::matrix::Permutation< IndexType >, gko::matrix::SparsityCsr< value_type, index_type >, gko::matrix::SparsityCsr< IndexType, ValueType >, gko::matrix::SparsityCsr< ValueType, IndexType >, gko::preconditioner::Ic< LSolverTypeOrValueType, IndexType >, , gko::preconditioner::Jacobi< ValueType, IndexType >, gko::solver::Bicg< ValueType >, gko::solver::Bicgstab< ValueType >, gko::solver::Cg< ValueType >, gko::solver::Cgs< ValueType >, gko::solver::Chebyshev< ValueType >, gko::solver::Fcg< ValueType >, gko::solver::Gcr< ValueType >, gko::solver::Gmres< ValueType >, gko::solver::Idr< ValueType >, gko::solver::LowerTrs< value_type, index_type >, gko::solver::LowerTrs< ValueType, IndexType >, gko::solver::Minres< ValueType >, gko::solver::PipeCg< ValueType >, and gko::solver::UpperTrs< value_type, index_type >.

Collaboration diagram for gko::EnableLinOp< ConcreteLinOp, PolymorphicBase >:
[legend]

## 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::EnablePolymorphicAssignment< ConcreteLinOp >
void | convert_to (result_type *result) const override
void | move_to (result_type *result) override

## Additional Inherited Members
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp >
using | result_type

## Detailed Description

template<typename ConcreteLinOp, typename PolymorphicBase = LinOp>
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:

1. 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).
2. 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.

Template Parameters

  ConcreteLinOp | the concrete LinOp which is being implemented [CRTP parameter]
  PolymorphicBase | parent of ConcreteLinOp in the polymorphic hierarchy, has to be a subclass of LinOp

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

- ginkgo/core/base/lin_op.hpp