Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
linear_ops.hpp File Reference

Classes

class  mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >
 The quadratic form Op := D^T M D. More...
struct  mundy::QuadraticFormOp< Backend, LinearOpDT, LinearOpM, LinearOpD >::Workspace< FVector, UVector >
class  mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >
 The reduced operator Op := A (I - L A). More...
struct  mundy::MixedReducedOp< Backend, LinearOpA, LinearOpL >::Workspace< AxVector, LAxVector, AWorkspace, LWorkspace >
class  mundy::CongruentMixedReducedOp< Backend, LinearOpDT, LinearOpM, LinearOpD, LinearOpL >
 The congruent reduced operator Op := D^T M (D - L M D). More...
struct  mundy::CongruentMixedReducedOp< Backend, LinearOpDT, LinearOpM, LinearOpD, LinearOpL >::Workspace< DxVector, MDxVector, LMDxVector, DTWorkspace, MWorkspace, DWorkspace, LWorkspace >
class  mundy::SumOp< Backend, Op1, Op2 >
 The sum Op := op1 + op2 of two operators sharing a domain and range. More...
struct  mundy::SumOp< Backend, Op1, Op2 >::Workspace< TmpVector, Op1Workspace, Op2Workspace >
class  mundy::ScaledOp< Backend, Scalar, Op >
 The scalar multiple Op := alpha * op. More...
class  mundy::ConcatDomainOp< Backend, Op1, Op2 >
 The domain concatenation Op := [op1 | op2]. More...
struct  mundy::ConcatDomainOp< Backend, Op1, Op2 >::Workspace< Y2Vector, Op1Workspace, Op2Workspace >
class  mundy::ConcatRangeOp< Backend, Op1T, Op2T >
 The range concatenation Op := [op1T; op2T], the transpose of ConcatDomainOp. More...
struct  mundy::ConcatRangeOp< Backend, Op1T, Op2T >::Workspace< Op1TWorkspace, Op2TWorkspace >
class  mundy::DiagonalOp< Backend, DiagVector >
 The diagonal operator y := diag .* x. More...

Namespaces

namespace  mundy

Macros

#define MUNDY_OP_WORKSPACE(name, VectorType)
 Declare a workspace member name: its backing storage and mutable/const getters.
#define MUNDY_OP_WORKSPACE_CHILD(name, index)
 Declare mutable/const getters over the I'th CommitGroup child workspace.

Functions

Factory functions
template<typename Backend, class LinearOpDT, class LinearOpM, class LinearOpD>
auto mundy::make_quadratic_form (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D)
template<typename Backend, class Op1, class Op2>
auto mundy::make_sum_op (Op1 &&op1, Op2 &&op2)
template<typename Backend, class Scalar, class Op>
auto mundy::make_scaled_op (Scalar alpha, Op &&op)
template<typename Backend, class Op1, class Op2>
auto mundy::make_concat_domain_op (Op1 &&op1, Op2 &&op2)
template<typename Backend, class Op1T, class Op2T>
auto mundy::make_concat_range_op (Op1T &&op1t, Op2T &&op2t)
template<typename Backend, class DiagVector>
auto mundy::make_diagonal_op (DiagVector &&diag)

Macro Definition Documentation

◆ MUNDY_OP_WORKSPACE

#define MUNDY_OP_WORKSPACE ( name,
VectorType )
Value:
public: \
KOKKOS_INLINE_FUNCTION auto& name() { \
return name##_storage_.get(); \
} \
KOKKOS_INLINE_FUNCTION const auto& name() const { \
return name##_storage_.get(); \
} \
\
private: \
storage(T &&) -> storage< store_input_type_t< T > >
CTAD applies the same input normalization as store(), so direct construction (storage(value)) and sto...

Emits a private mundy::storage<VectorType> name##_storage_ and public name()/name() const over it. The constructor still initializes name##_storage_ itself.

◆ MUNDY_OP_WORKSPACE_CHILD

#define MUNDY_OP_WORKSPACE_CHILD ( name,
index )
Value:
public: \
KOKKOS_INLINE_FUNCTION auto& name() { \
return this->template child<index>(); \
} \
KOKKOS_INLINE_FUNCTION const auto& name() const { \
return this->template child<index>(); \
}