Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::convex::MundyMathBackend Struct Reference

Backend for Mundy math within a kernel.

#include <convex.hpp>

Static Public Member Functions

template<class Vector>
static auto make_vector_like (const Vector &)
template<class LinearOp>
static auto make_domain_vector (const LinearOp &op)
template<class LinearOp>
static auto make_range_vector (const LinearOp &op)
template<class LinearOp>
static auto make_workspace (const LinearOp &op)
template<class Vector>
static size_t size (const Vector &)
template<class LinearOp>
static size_t domain_size (LinearOp &)
template<class LinearOp>
static size_t domain_size (LinearOp &op)
template<class LinearOp>
static size_t domain_size (LinearOp &)
template<class LinearOp>
static size_t range_size (LinearOp &)
template<class LinearOp>
static size_t range_size (LinearOp &op)
template<class LinearOp>
static size_t range_size (LinearOp &)
template<class Vector>
static decltype(auto) vector_data (const Vector &x, size_t i)
template<class Vector>
static decltype(auto) vector_data (Vector &x, size_t i)
template<class DestVector, class SrcVector>
static void deep_copy (DestVector &dest, const SrcVector &src)
template<typename LinearOp, class XVector, class YVector>
static void apply (const LinearOp &op, const XVector &x, YVector &y)
template<typename LinearOp, class XVector, class YVector, typename Workspace>
static void apply (const LinearOp &op, const XVector &x, YVector &y, Workspace &workspace)
template<class Scalar, class XVector, class YVector>
static void axpby (const Scalar alpha, const XVector &x, const Scalar beta, YVector &y)
template<typename Wrapper, class Scalar, class XVector, class YVector, class ZVector>
static void wrapped_axpbyz (const Scalar alpha, const XVector &x, const Scalar beta, const YVector &y, ZVector &z, const Wrapper &wrapper)
template<class ReductionScalar, class XVector, class YVector>
static ReductionScalar diff_dot (const XVector &x, const YVector &y)
template<class ReductionScalar, class X1Vector, class X2Vector, class Y1Vector, class Y2Vector>
static ReductionScalar diff_dot (const X1Vector &x1, const X2Vector &x2, const Y1Vector &y1, const Y2Vector &y2)
template<class ReductionScalar, class Functor, class Vector>
static void reduce_max (const Vector &, size_t n, const Functor &func, ReductionScalar &result)

Member Function Documentation

◆ make_vector_like()

template<class Vector>
auto mundy::convex::MundyMathBackend::make_vector_like ( const Vector & )
inlinestatic

◆ make_domain_vector()

template<class LinearOp>
auto mundy::convex::MundyMathBackend::make_domain_vector ( const LinearOp & op)
inlinestatic

◆ make_range_vector()

template<class LinearOp>
auto mundy::convex::MundyMathBackend::make_range_vector ( const LinearOp & op)
inlinestatic

◆ make_workspace()

template<class LinearOp>
auto mundy::convex::MundyMathBackend::make_workspace ( const LinearOp & op)
inlinestatic

◆ size()

template<class Vector>
size_t mundy::convex::MundyMathBackend::size ( const Vector & )
inlinestatic

◆ domain_size() [1/3]

template<class LinearOp>
size_t mundy::convex::MundyMathBackend::domain_size ( LinearOp & )
inlinestatic

◆ domain_size() [2/3]

template<class LinearOp>
size_t mundy::convex::MundyMathBackend::domain_size ( LinearOp & op)
inlinestatic

◆ domain_size() [3/3]

template<class LinearOp>
size_t mundy::convex::MundyMathBackend::domain_size ( LinearOp & )
inlinestatic

◆ range_size() [1/3]

template<class LinearOp>
size_t mundy::convex::MundyMathBackend::range_size ( LinearOp & )
inlinestatic

◆ range_size() [2/3]

template<class LinearOp>
size_t mundy::convex::MundyMathBackend::range_size ( LinearOp & op)
inlinestatic

◆ range_size() [3/3]

template<class LinearOp>
size_t mundy::convex::MundyMathBackend::range_size ( LinearOp & )
inlinestatic

◆ vector_data() [1/2]

template<class Vector>
decltype(auto) mundy::convex::MundyMathBackend::vector_data ( const Vector & x,
size_t i )
inlinestatic

◆ vector_data() [2/2]

template<class Vector>
decltype(auto) mundy::convex::MundyMathBackend::vector_data ( Vector & x,
size_t i )
inlinestatic

◆ deep_copy()

template<class DestVector, class SrcVector>
void mundy::convex::MundyMathBackend::deep_copy ( DestVector & dest,
const SrcVector & src )
inlinestatic

◆ apply() [1/2]

template<typename LinearOp, class XVector, class YVector>
void mundy::convex::MundyMathBackend::apply ( const LinearOp & op,
const XVector & x,
YVector & y )
inlinestatic

◆ apply() [2/2]

template<typename LinearOp, class XVector, class YVector, typename Workspace>
void mundy::convex::MundyMathBackend::apply ( const LinearOp & op,
const XVector & x,
YVector & y,
Workspace & workspace )
inlinestatic

◆ axpby()

template<class Scalar, class XVector, class YVector>
void mundy::convex::MundyMathBackend::axpby ( const Scalar alpha,
const XVector & x,
const Scalar beta,
YVector & y )
inlinestatic

◆ wrapped_axpbyz()

template<typename Wrapper, class Scalar, class XVector, class YVector, class ZVector>
void mundy::convex::MundyMathBackend::wrapped_axpbyz ( const Scalar alpha,
const XVector & x,
const Scalar beta,
const YVector & y,
ZVector & z,
const Wrapper & wrapper )
inlinestatic

◆ diff_dot() [1/2]

template<class ReductionScalar, class XVector, class YVector>
ReductionScalar mundy::convex::MundyMathBackend::diff_dot ( const XVector & x,
const YVector & y )
inlinestatic

◆ diff_dot() [2/2]

template<class ReductionScalar, class X1Vector, class X2Vector, class Y1Vector, class Y2Vector>
ReductionScalar mundy::convex::MundyMathBackend::diff_dot ( const X1Vector & x1,
const X2Vector & x2,
const Y1Vector & y1,
const Y2Vector & y2 )
inlinestatic

◆ reduce_max()

template<class ReductionScalar, class Functor, class Vector>
void mundy::convex::MundyMathBackend::reduce_max ( const Vector & ,
size_t n,
const Functor & func,
ReductionScalar & result )
inlinestatic