54 using key_t = std::array<LibUtilities::BasisKey, dim>;
68 for (
int d = 0; d < dim; ++d)
71 hash = (hash << 8) | (((key[d].GetNumPoints() & 0xFF) << 8) |
72 (key[d].GetNumPoints() & 0xFF));
84 for (
int d = 0; d < dim; ++d)
86 equal = equal && (a[d].GetNumPoints() == b[d].GetNumPoints() &&
87 a[d].GetNumModes() == b[d].GetNumModes());
93 template <int d, typename std::enable_if<d == 1, int>::type = 0>
96 return std::make_shared<StdExp>(args[0]);
99 template <int d, typename std::enable_if<d == 2, int>::type = 0>
102 return std::make_shared<StdExp>(args[0], args[1]);
105 template <int d, typename std::enable_if<d == 3, int>::type = 0>
108 return std::make_shared<StdExp>(args[0], args[1], args[2]);
127 std::shared_ptr<StdExp> xmap = CreateStdExp<dim>(basis);
A simple factory for Xmap objects that is based on the element type, the basis and quadrature selecti...
std::shared_ptr< StdExp > CreateStdExp(const key_t &args)
std::array< LibUtilities::BasisKey, dim > key_t
Key for the Xmap: an array of dimension dim which contains the basis keys for each coordinate directi...
StdRegions::StdExpansionSharedPtr CreateInstance(const key_t &basis)
Returns (and creates, if necessary) a standard expansion corresponding to.
std::unordered_map< key_t, StdRegions::StdExpansionSharedPtr, KeyHash, KeyEqual > m_xmaps
Storage for created xmap objects.
bool operator()(key_t const &a, key_t const &b) const
size_t operator()(key_t const &key) const