Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD > Class Template Reference

The quadratic form Op := D^T M D.

#include <linear_ops.hpp>

Classes

struct  Workspace

Public Types

using backend_t = Backend
using linear_op_dt_storage_t = ::mundy::storage<LinearOpDT>
using linear_op_m_storage_t = ::mundy::storage<LinearOpM>
using linear_op_d_storage_t = ::mundy::storage<LinearOpD>

Public Member Functions

 QuadraticFormOp (backend_t, LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D)
Backend backend () const
const auto & DT () const
const auto & M () const
const auto & D () const
size_t domain_size () const
size_t range_size () const
auto make_domain_vector () const
auto make_range_vector () const
auto make_workspace () const
template<class FVector, class UVector>
auto make_workspace (FVector &&f, UVector &&u, 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 LinearOpDT, class LinearOpM, class LinearOpD>
using mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::backend_t = Backend

◆ linear_op_dt_storage_t

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
using mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::linear_op_dt_storage_t = ::mundy::storage<LinearOpDT>

◆ linear_op_m_storage_t

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
using mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::linear_op_m_storage_t = ::mundy::storage<LinearOpM>

◆ linear_op_d_storage_t

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
using mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::linear_op_d_storage_t = ::mundy::storage<LinearOpD>

Constructor & Destructor Documentation

◆ QuadraticFormOp()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::QuadraticFormOp ( backend_t ,
LinearOpDT && DT,
LinearOpM && M,
LinearOpD && D )
inline

Member Function Documentation

◆ backend()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
Backend mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::backend ( ) const
inline

◆ DT()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
const auto & mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::DT ( ) const
inline

◆ M()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
const auto & mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::M ( ) const
inline

◆ D()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
const auto & mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::D ( ) const
inline

◆ domain_size()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
size_t mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::domain_size ( ) const
inline

◆ range_size()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
size_t mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::range_size ( ) const
inline

◆ make_domain_vector()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
auto mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::make_domain_vector ( ) const
inline

◆ make_range_vector()

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
auto mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::make_range_vector ( ) const
inline

◆ make_workspace() [1/2]

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
auto mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::make_workspace ( ) const
inline

◆ make_workspace() [2/2]

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
template<class FVector, class UVector>
auto mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::make_workspace ( FVector && f,
UVector && u,
bool committed = false ) const
inline

◆ apply() [1/2]

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
template<class XVector, class YVector, class WorkspaceType>
void mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::apply ( const XVector & x,
YVector & y,
WorkspaceType & workspace ) const
inline

◆ apply() [2/2]

template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
template<class XVector, class YVector>
void mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::apply ( const XVector & x,
YVector & y ) const
inline