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()),
 
  173     std::vector<StdRegions::StdExpansionSharedPtr>,
 
#define COLLECTIONS_EXPORT
Base class for operators on a collection of elements.
virtual COLLECTIONS_EXPORT void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp=NullNekDouble1DArray)=0
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.
StdRegions::StdExpansionSharedPtr m_stdExp
int GetWspSize()
Get the size of the required workspace.
virtual COLLECTIONS_EXPORT ~Operator()
Operator(std::vector< StdRegions::StdExpansionSharedPtr > pCollExp, std::shared_ptr< CoalescedGeomData > GeomData)
Constructor.
Provides a generic Factory class.
bool operator<(OperatorKey const &p1, OperatorKey const &p2)
Less-than comparison operator for OperatorKey objects.
std::map< OperatorType, ImplementationType > OperatorImpMap
const char *const ImplementationTypeMap[]
Nektar::LibUtilities::NekFactory< OperatorKey, Operator, std::vector< StdRegions::StdExpansionSharedPtr >, CoalescedGeomDataSharedPtr > OperatorFactory
Operator factory definition.
std::shared_ptr< Operator > OperatorSharedPtr
Shared pointer to an Operator object.
@ SIZE_ImplementationType
std::ostream & operator<<(std::ostream &os, OperatorKey const &p)
Stream output operator for OperatorKey objects.
const char *const OperatorTypeMap[]
std::tuple< LibUtilities::ShapeType, OperatorType, ImplementationType, ExpansionIsNodal > OperatorKey
Key for describing an Operator.
std::shared_ptr< CoalescedGeomData > CoalescedGeomDataSharedPtr
OperatorFactory & GetOperatorFactory()
Returns the singleton Operator factory object.
OperatorImpMap SetFixedImpType(ImplementationType defaultType)
simple Operator Implementation Map generator
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray