numerics 0.1.0
Loading...
Searching...
No Matches
num::kernel::subspace::LinearOp Struct Referenceabstract

Abstract matrix-free linear operator: y = A*x. More...

#include <subspace.hpp>

Inheritance diagram for num::kernel::subspace::LinearOp:
num::kernel::subspace::CallableOp< F > num::kernel::subspace::DenseOp num::kernel::subspace::SparseOp

Public Member Functions

virtual ~LinearOp ()=default
 
virtual void apply (const Vector &x, Vector &y) const =0
 y = A*x (y must be pre-allocated to the correct size)
 
virtual idx rows () const noexcept=0
 
virtual idx cols () const noexcept=0
 

Detailed Description

Abstract matrix-free linear operator: y = A*x.

Subclass this or use DenseOp / SparseOp / CallableOp / make_op. Virtual dispatch overhead is O(1) per apply(); work inside is O(n) or O(nnz), so the overhead is negligible.

Definition at line 55 of file subspace.hpp.

Constructor & Destructor Documentation

◆ ~LinearOp()

virtual num::kernel::subspace::LinearOp::~LinearOp ( )
virtualdefault

Member Function Documentation

◆ apply()

virtual void num::kernel::subspace::LinearOp::apply ( const Vector x,
Vector y 
) const
pure virtual

y = A*x (y must be pre-allocated to the correct size)

Implemented in num::kernel::subspace::DenseOp, num::kernel::subspace::SparseOp, and num::kernel::subspace::CallableOp< F >.

Referenced by num::kernel::subspace::arnoldi_step().

◆ cols()

virtual idx num::kernel::subspace::LinearOp::cols ( ) const
pure virtualnoexcept

◆ rows()

virtual idx num::kernel::subspace::LinearOp::rows ( ) const
pure virtualnoexcept

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