10#include <dune/geometry/quadraturerules.hh>
28template <
class BaseQuadrature,
class Quadrature>
30 constexpr int baseQuadDim = BaseQuadrature::d;
31 auto rule = Dune::QuadratureRule<double, baseQuadDim + 1>();
32 const unsigned int baseQuadSize = baseQuad.size();
33 for (
unsigned int bqi = 0; bqi < baseQuadSize; ++bqi) {
34 const typename Dune::QuadraturePoint<double, baseQuadDim>::Vector& basePoint = baseQuad[bqi].position();
35 const double& baseWeight = baseQuad[bqi].weight();
37 typename Dune::QuadraturePoint<double, baseQuadDim + 1>::Vector point;
38 for (
unsigned int i = 0; i < baseQuadDim; ++i)
39 point[i] = basePoint[i];
41 const unsigned int onedQuadSize = onedQuad.size();
42 for (
unsigned int oqi = 0; oqi < onedQuadSize; ++oqi) {
43 point[baseQuadDim] = onedQuad[oqi].position()[0];
44 rule.emplace_back(Dune::QuadraturePoint(point, baseWeight * onedQuad[oqi].weight()));
61template <
int dim,
typename Element>
63 const auto defaultRule = Dune::QuadratureRules<double, dim>::rule(element.type(), order);
64 if constexpr (
requires { element.impl().getQuadratureRule(order); })
65 if (element.impl().isTrimmed())
66 return element.impl().getQuadratureRule(order);
Definition: assemblermanipulatorbuildingblocks.hh:22
int numberOfGaussPointsToOrder(int nGP)
A helper function to convert the number of Gauss integration points to the polynomial order of the fu...
Definition: quadraturerulehelper.hh:82
auto tensorProductQuadrature(const BaseQuadrature &baseQuad, const Quadrature &onedQuad)
Computes the tensor product quadrature rule using a base and one-dimensional quadrature rule.
Definition: quadraturerulehelper.hh:29
auto defaultQuadratureRule(const Element &element, int order)
A helper function to provide a default quadrature rule for integration.
Definition: quadraturerulehelper.hh:62