Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::ConcatRangeOp< Backend, Op1T, Op2T > Class Template Reference

The range concatenation Op := [op1T; op2T], the transpose of ConcatDomainOp. More...

#include <linear_ops.hpp>

Classes

struct  Workspace

Public Types

using backend_t = Backend
using op1t_storage_t = ::mundy::storage<Op1T>
using op2t_storage_t = ::mundy::storage<Op2T>

Public Member Functions

 ConcatRangeOp (backend_t, Op1T &&op1t, Op2T &&op2t)
Backend backend () const
const auto & op1t () const
const auto & op2t () 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 Op1TWorkspace, class Op2TWorkspace>
auto make_workspace (Op1TWorkspace &&op1t_workspace, Op2TWorkspace &&op2t_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

Detailed Description

template<class Backend, class Op1T, class Op2T>
class mundy::ConcatRangeOp< Backend, Op1T, Op2T >

op1T and op2T share a domain but produce independent ranges: apply(v) = [op1T(v); op2T(v)]. x/y must be Kokkos::View-backed (apply splits y via Kokkos::subview).

Member Typedef Documentation

◆ backend_t

template<class Backend, class Op1T, class Op2T>
using mundy::ConcatRangeOp< Backend, Op1T, Op2T >::backend_t = Backend

◆ op1t_storage_t

template<class Backend, class Op1T, class Op2T>
using mundy::ConcatRangeOp< Backend, Op1T, Op2T >::op1t_storage_t = ::mundy::storage<Op1T>

◆ op2t_storage_t

template<class Backend, class Op1T, class Op2T>
using mundy::ConcatRangeOp< Backend, Op1T, Op2T >::op2t_storage_t = ::mundy::storage<Op2T>

Constructor & Destructor Documentation

◆ ConcatRangeOp()

template<class Backend, class Op1T, class Op2T>
mundy::ConcatRangeOp< Backend, Op1T, Op2T >::ConcatRangeOp ( backend_t ,
Op1T && op1t,
Op2T && op2t )
inline

Member Function Documentation

◆ backend()

template<class Backend, class Op1T, class Op2T>
Backend mundy::ConcatRangeOp< Backend, Op1T, Op2T >::backend ( ) const
inline

◆ op1t()

template<class Backend, class Op1T, class Op2T>
const auto & mundy::ConcatRangeOp< Backend, Op1T, Op2T >::op1t ( ) const
inline

◆ op2t()

template<class Backend, class Op1T, class Op2T>
const auto & mundy::ConcatRangeOp< Backend, Op1T, Op2T >::op2t ( ) const
inline

◆ domain_size()

template<class Backend, class Op1T, class Op2T>
size_t mundy::ConcatRangeOp< Backend, Op1T, Op2T >::domain_size ( ) const
inline

◆ range_size()

template<class Backend, class Op1T, class Op2T>
size_t mundy::ConcatRangeOp< Backend, Op1T, Op2T >::range_size ( ) const
inline

◆ make_domain_vector()

template<class Backend, class Op1T, class Op2T>
auto mundy::ConcatRangeOp< Backend, Op1T, Op2T >::make_domain_vector ( ) const
inline

◆ make_range_vector()

template<class Backend, class Op1T, class Op2T>
auto mundy::ConcatRangeOp< Backend, Op1T, Op2T >::make_range_vector ( ) const
inline

◆ make_workspace() [1/2]

template<class Backend, class Op1T, class Op2T>
auto mundy::ConcatRangeOp< Backend, Op1T, Op2T >::make_workspace ( bool committed = false) const
inline

◆ make_workspace() [2/2]

template<class Backend, class Op1T, class Op2T>
template<class Op1TWorkspace, class Op2TWorkspace>
auto mundy::ConcatRangeOp< Backend, Op1T, Op2T >::make_workspace ( Op1TWorkspace && op1t_workspace,
Op2TWorkspace && op2t_workspace,
bool committed = false ) const
inline

◆ apply() [1/2]

template<class Backend, class Op1T, class Op2T>
template<class XVector, class YVector, class WorkspaceType>
void mundy::ConcatRangeOp< Backend, Op1T, Op2T >::apply ( const XVector & x,
YVector & y,
WorkspaceType & workspace ) const
inline

◆ apply() [2/2]

template<class Backend, class Op1T, class Op2T>
template<class XVector, class YVector>
void mundy::ConcatRangeOp< Backend, Op1T, Op2T >::apply ( const XVector & x,
YVector & y ) const
inline