5#ifndef CONCEPTS_FLYWEIGHT
6#define CONCEPTS_FLYWEIGHT
8#include <unordered_map>
19 return ( (order.polynomialDegree_ << 10 | order.nQuadraturePoints_) << 10) | order.quadratureType_;
39 polynomialDegree_ ==
other.polynomialDegree_ &&
40 nQuadraturePoints_ ==
other.nQuadraturePoints_ &&
41 quadratureType_ ==
other.quadratureType_;
45 uint polynomialDegree_;
46 uint nQuadraturePoints_;
55 return (order.nQuadraturePoints_ << 10) | order.quadratureType_;
68 nQuadraturePoints_ ==
other.nQuadraturePoints_ &&
69 quadratureType_ ==
other.quadratureType_;
73 uint nQuadraturePoints_;
93 template<
class KeyT,
class ValueT>
98 std::shared_ptr<const ValueT> get(
const KeyT& key) {
103 return std::make_shared<const ValueT>();
106 void insert(
const KeyT& key, std::shared_ptr<const ValueT>& value) {
121 template <
class FunctionT>
153 template <
class FunctionT>
190 template <
class FunctionT>
206 quadrature = std::make_shared<AdaptiveQuadratureRule1d<intRule::GAUSS_JACOBI> >(
nQuadraturePoints);
210 quadrature = std::make_shared<AdaptiveQuadratureRule1d<intRule::GAUSS_LOBATTO> >(
nQuadraturePoints);
214 quadrature = std::make_shared<AdaptiveQuadratureRule1d<intRule::TRAPEZE> >(
nQuadraturePoints);
#define conceptsException(exc)
std::unordered_map< KeyT, std::weak_ptr< const ValueT >, Hash< KeyT > > container_
#define conceptsAssert(cond, exc)
std::shared_ptr< const FunctionT > makeQuadrature(const uint nQuadraturePoints, const intRule quadratureType)
factory function encapsulating the memory manager
std::shared_ptr< const FunctionT > makeAdaptiveQuadrature(const uint nQuadraturePoints, const intRule quadratureType)
factory function encapsulating the memory manager
std::shared_ptr< const FunctionT > makeShapeFunction(const concepts::QuadratureRule1d &quadratureRule, const uint polynomialDegree)
factory function encapsulating the memory manager
Set< F > makeSet(uint n, const F &first,...)
intRule
Types of integration rules to choose from.