Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::ShiftedOp< Backend, Scalar, Op > Class Template Reference

The spectral shift Op := op - sigma I. More...

#include <linear_ops.hpp>

Classes

struct  Workspace

Public Types

using backend_t = Backend
using op_storage_t = ::mundy::storage<Op>

Public Member Functions

 ShiftedOp (backend_t, Scalar sigma, Op &&op)
Backend backend () const
Scalar sigma () const
const auto & op () const
size_t domain_size () const
size_t range_size () const
auto make_domain_vector () const
auto make_range_vector () const
auto make_workspace (bool committed=false) const
template<class OpWorkspace>
auto make_workspace (OpWorkspace &&op_workspace, bool committed=false) const
template<class XVector, class YVector, class WorkspaceType>
void apply (const XVector &x, YVector &y, WorkspaceType &workspace) const
template<class XVector, class YVector>
void apply (const XVector &x, YVector &y) const

Static Public Member Functions

static constexpr size_t static_domain_size ()
static constexpr size_t static_range_size ()

Detailed Description

template<class Backend, class Scalar, class Op>
class mundy::ShiftedOp< Backend, Scalar, Op >

Eigenvalues shift by -sigma; eigenvectors are unchanged.

Member Typedef Documentation

◆ backend_t

template<class Backend, class Scalar, class Op>
using mundy::ShiftedOp< Backend, Scalar, Op >::backend_t = Backend

◆ op_storage_t

template<class Backend, class Scalar, class Op>
using mundy::ShiftedOp< Backend, Scalar, Op >::op_storage_t = ::mundy::storage<Op>

Constructor & Destructor Documentation

◆ ShiftedOp()

template<class Backend, class Scalar, class Op>
mundy::ShiftedOp< Backend, Scalar, Op >::ShiftedOp ( backend_t ,
Scalar sigma,
Op && op )
inline

Member Function Documentation

◆ backend()

template<class Backend, class Scalar, class Op>
Backend mundy::ShiftedOp< Backend, Scalar, Op >::backend ( ) const
inline

◆ sigma()

template<class Backend, class Scalar, class Op>
Scalar mundy::ShiftedOp< Backend, Scalar, Op >::sigma ( ) const
inline

◆ op()

template<class Backend, class Scalar, class Op>
const auto & mundy::ShiftedOp< Backend, Scalar, Op >::op ( ) const
inline

◆ domain_size()

template<class Backend, class Scalar, class Op>
size_t mundy::ShiftedOp< Backend, Scalar, Op >::domain_size ( ) const
inline

◆ range_size()

template<class Backend, class Scalar, class Op>
size_t mundy::ShiftedOp< Backend, Scalar, Op >::range_size ( ) const
inline

◆ static_domain_size()

template<class Backend, class Scalar, class Op>
constexpr size_t mundy::ShiftedOp< Backend, Scalar, Op >::static_domain_size ( )
inlinestaticconstexpr

◆ static_range_size()

template<class Backend, class Scalar, class Op>
constexpr size_t mundy::ShiftedOp< Backend, Scalar, Op >::static_range_size ( )
inlinestaticconstexpr

◆ make_domain_vector()

template<class Backend, class Scalar, class Op>
auto mundy::ShiftedOp< Backend, Scalar, Op >::make_domain_vector ( ) const
inline

◆ make_range_vector()

template<class Backend, class Scalar, class Op>
auto mundy::ShiftedOp< Backend, Scalar, Op >::make_range_vector ( ) const
inline

◆ make_workspace() [1/2]

template<class Backend, class Scalar, class Op>
auto mundy::ShiftedOp< Backend, Scalar, Op >::make_workspace ( bool committed = false) const
inline

◆ make_workspace() [2/2]

template<class Backend, class Scalar, class Op>
template<class OpWorkspace>
auto mundy::ShiftedOp< Backend, Scalar, Op >::make_workspace ( OpWorkspace && op_workspace,
bool committed = false ) const
inline

◆ apply() [1/2]

template<class Backend, class Scalar, class Op>
template<class XVector, class YVector, class WorkspaceType>
void mundy::ShiftedOp< Backend, Scalar, Op >::apply ( const XVector & x,
YVector & y,
WorkspaceType & workspace ) const
inline

◆ apply() [2/2]

template<class Backend, class Scalar, class Op>
template<class XVector, class YVector>
void mundy::ShiftedOp< Backend, Scalar, Op >::apply ( const XVector & x,
YVector & y ) const
inline