35 #ifndef NEKTAR_LIBRARY_COLLECTIONS_OPERATOR_H 36 #define NEKTAR_LIBRARY_COLLECTIONS_OPERATOR_H 38 #include <boost/core/ignore_unused.hpp> 45 #define OPERATOR_CREATE(cname) \ 46 static OperatorKey m_type; \ 47 static OperatorKey m_typeArr[]; \ 48 friend class MemoryManager<cname>; \ 49 static OperatorSharedPtr create( \ 50 std::vector<StdRegions::StdExpansionSharedPtr> pCollExp,\ 51 std::shared_ptr<CoalescedGeomData> GeomData) \ 53 return MemoryManager<cname> \ 54 ::AllocateSharedPtr(pCollExp, GeomData); \ 62 class CoalescedGeomData;
78 "IProductWRTDerivBase",
94 "NoImplementationType",
114 std::vector<StdRegions::StdExpansionSharedPtr> pCollExp,
115 std::shared_ptr<CoalescedGeomData>
GeomData)
116 :
m_stdExp(pCollExp[0]->GetStdExp()),
120 boost::ignore_unused(GeomData);
164 bool operator< (OperatorKey
const &p1, OperatorKey
const &p2);
167 std::ostream &
operator<<(std::ostream &os, OperatorKey
const &
p);
173 std::vector<StdRegions::StdExpansionSharedPtr>,
std::shared_ptr< CoalescedGeomData > CoalescedGeomDataSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray
const char *const ImplementationTypeMap[]
std::tuple< LibUtilities::ShapeType, OperatorType, ImplementationType, ExpansionIsNodal > OperatorKey
Key for describing an Operator.
bool operator<(OperatorKey const &p1, OperatorKey const &p2)
Less-than comparison operator for OperatorKey objects.
Base class for operators on a collection of elements.
const char *const OperatorTypeMap[]
int GetWspSize()
Get the size of the required workspace.
std::ostream & operator<<(std::ostream &os, OperatorKey const &p)
Stream output operator for OperatorKey objects.
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::map< OperatorType, ImplementationType > OperatorImpMap
std::shared_ptr< Operator > OperatorSharedPtr
Shared pointer to an Operator object.
Operator(std::vector< StdRegions::StdExpansionSharedPtr > pCollExp, std::shared_ptr< CoalescedGeomData > GeomData)
Constructor.
OperatorFactory & GetOperatorFactory()
Returns the singleton Operator factory object.
StdRegions::StdExpansionSharedPtr m_stdExp
#define COLLECTIONS_EXPORT
virtual COLLECTIONS_EXPORT void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output0, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp=NullNekDouble1DArray)=0
Perform operation.
Nektar::LibUtilities::NekFactory< OperatorKey, Operator, std::vector< StdRegions::StdExpansionSharedPtr >, CoalescedGeomDataSharedPtr > OperatorFactory
Operator factory definition.
virtual COLLECTIONS_EXPORT ~Operator()
OperatorImpMap SetFixedImpType(ImplementationType defaultType)
simple Operator Implementation Map generator
Provides a generic Factory class.