Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL > Class Template Reference

The reduced operator Op := A (I - L A).

#include <linear_ops.hpp>

Classes

struct  Workspace

Public Types

using backend_t = Backend
using linear_op_a_storage_t = ::mundy::storage<LinearOpA>
using linear_op_l_storage_t = ::mundy::storage<LinearOpL>

Public Member Functions

 MixedReducedOp (backend_t, LinearOpA &&A, LinearOpL &&L)
Backend backend () const
const auto & A () const
const auto & L () 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 AxVector, class LAxVector, class AWorkspace, class LWorkspace>
auto make_workspace (AxVector &&ax, LAxVector &&lax, AWorkspace &&a_workspace, LWorkspace &&l_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

Member Typedef Documentation

◆ backend_t

template<class Backend, class LinearOpA, class LinearOpL>
using mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::backend_t = Backend

◆ linear_op_a_storage_t

template<class Backend, class LinearOpA, class LinearOpL>
using mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::linear_op_a_storage_t = ::mundy::storage<LinearOpA>

◆ linear_op_l_storage_t

template<class Backend, class LinearOpA, class LinearOpL>
using mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::linear_op_l_storage_t = ::mundy::storage<LinearOpL>

Constructor & Destructor Documentation

◆ MixedReducedOp()

template<class Backend, class LinearOpA, class LinearOpL>
mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::MixedReducedOp ( backend_t ,
LinearOpA && A,
LinearOpL && L )
inline

Member Function Documentation

◆ backend()

template<class Backend, class LinearOpA, class LinearOpL>
Backend mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::backend ( ) const
inline

◆ A()

template<class Backend, class LinearOpA, class LinearOpL>
const auto & mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::A ( ) const
inline

◆ L()

template<class Backend, class LinearOpA, class LinearOpL>
const auto & mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::L ( ) const
inline

◆ domain_size()

template<class Backend, class LinearOpA, class LinearOpL>
size_t mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::domain_size ( ) const
inline

◆ range_size()

template<class Backend, class LinearOpA, class LinearOpL>
size_t mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::range_size ( ) const
inline

◆ make_domain_vector()

template<class Backend, class LinearOpA, class LinearOpL>
auto mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::make_domain_vector ( ) const
inline

◆ make_range_vector()

template<class Backend, class LinearOpA, class LinearOpL>
auto mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::make_range_vector ( ) const
inline

◆ make_workspace() [1/2]

template<class Backend, class LinearOpA, class LinearOpL>
auto mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::make_workspace ( bool committed = false) const
inline

◆ make_workspace() [2/2]

template<class Backend, class LinearOpA, class LinearOpL>
template<class AxVector, class LAxVector, class AWorkspace, class LWorkspace>
auto mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::make_workspace ( AxVector && ax,
LAxVector && lax,
AWorkspace && a_workspace,
LWorkspace && l_workspace,
bool committed = false ) const
inline

◆ apply() [1/2]

template<class Backend, class LinearOpA, class LinearOpL>
template<class XVector, class YVector, class WorkspaceType>
void mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::apply ( const XVector & x,
YVector & y,
WorkspaceType & workspace ) const
inline

◆ apply() [2/2]

template<class Backend, class LinearOpA, class LinearOpL>
template<class XVector, class YVector>
void mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::apply ( const XVector & x,
YVector & y ) const
inline