Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage > Class Template Reference

The operator that performs Op x for Op := D^T M (D - L M D).

#include <convex.hpp>

Classes

struct  Workspace

Public Types

using backend_t = Backend
using linear_op_dt_storage_t = LinearOpDTStorage
using linear_op_m_storage_t = LinearOpMStorage
using linear_op_d_storage_t = LinearOpDStorage
using linear_op_l_storage_t = LinearOpLStorage

Public Member Functions

 CongruentMixedReducedOp (backend_t, linear_op_dt_storage_t DT_storage, linear_op_m_storage_t M_storage, linear_op_d_storage_t D_storage, linear_op_l_storage_t L_storage)
Backend backend () const
const auto & DT () const
const auto & M () const
const auto & D () 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 DxVector, class MDxVector, class LMDxVector, class DTWorkspace, class MWorkspace, class DWorkspace, class LWorkspace>
auto make_workspace (DxVector &&dx, MDxVector &&mdx, LMDxVector &&lmdx, DTWorkspace &&dt_workspace, MWorkspace &&m_workspace, DWorkspace &&d_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 LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
using mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::backend_t = Backend

◆ linear_op_dt_storage_t

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
using mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::linear_op_dt_storage_t = LinearOpDTStorage

◆ linear_op_m_storage_t

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
using mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::linear_op_m_storage_t = LinearOpMStorage

◆ linear_op_d_storage_t

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
using mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::linear_op_d_storage_t = LinearOpDStorage

◆ linear_op_l_storage_t

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
using mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::linear_op_l_storage_t = LinearOpLStorage

Constructor & Destructor Documentation

◆ CongruentMixedReducedOp()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::CongruentMixedReducedOp ( backend_t ,
linear_op_dt_storage_t DT_storage,
linear_op_m_storage_t M_storage,
linear_op_d_storage_t D_storage,
linear_op_l_storage_t L_storage )
inline

Member Function Documentation

◆ backend()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
Backend mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::backend ( ) const
inline

◆ DT()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
const auto & mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::DT ( ) const
inline

◆ M()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
const auto & mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::M ( ) const
inline

◆ D()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
const auto & mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::D ( ) const
inline

◆ L()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
const auto & mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::L ( ) const
inline

◆ domain_size()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
size_t mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::domain_size ( ) const
inline

◆ range_size()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
size_t mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::range_size ( ) const
inline

◆ make_domain_vector()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
auto mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::make_domain_vector ( ) const
inline

◆ make_range_vector()

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
auto mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::make_range_vector ( ) const
inline

◆ make_workspace() [1/2]

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
auto mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::make_workspace ( bool committed = false) const
inline

◆ make_workspace() [2/2]

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
template<class DxVector, class MDxVector, class LMDxVector, class DTWorkspace, class MWorkspace, class DWorkspace, class LWorkspace>
auto mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::make_workspace ( DxVector && dx,
MDxVector && mdx,
LMDxVector && lmdx,
DTWorkspace && dt_workspace,
MWorkspace && m_workspace,
DWorkspace && d_workspace,
LWorkspace && l_workspace,
bool committed = false ) const
inline

◆ apply() [1/2]

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
template<class XVector, class YVector, class WorkspaceType>
void mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::apply ( const XVector & x,
YVector & y,
WorkspaceType & workspace ) const
inline

◆ apply() [2/2]

template<class Backend, class LinearOpDTStorage, class LinearOpMStorage, class LinearOpDStorage, class LinearOpLStorage>
template<class XVector, class YVector>
void mundy::convex::CongruentMixedReducedOp< Backend, LinearOpDTStorage, LinearOpMStorage, LinearOpDStorage, LinearOpLStorage >::apply ( const XVector & x,
YVector & y ) const
inline