diff --git a/dune/functions/functionspacebases/argyrisbasis.hh b/dune/functions/functionspacebases/argyrisbasis.hh index e7f2a3808a6acb2b608f6ff213cae931d7b74ac1..fb24381ba4fdeaaf36c021e217ecfd6459b045eb 100644 --- a/dune/functions/functionspacebases/argyrisbasis.hh +++ b/dune/functions/functionspacebases/argyrisbasis.hh @@ -84,9 +84,7 @@ namespace Dune { if (element.geometry().affine()) - fillMatrix(Dune::referenceElement<double, 2>(GeometryTypes::simplex(2)).position(0, 0), - element.geometry(), - elementInfo); // barycenter, because we need some value. + fillMatrix(element.geometry(), elementInfo); else DUNE_THROW(Dune::NotImplemented, "Argyris Element is only implemented for affine transformations"); @@ -217,8 +215,8 @@ namespace Dune mat_.endindices(); } - template <class LocalCoordinate, class Element> - void fillMatrix(LocalCoordinate const &xi, typename Element::Geometry const &geometry, + template <class Element> + void fillMatrix(typename Element::Geometry const &geometry, ElementInformation<Element> const &elementInfo) { std::array<R, 3> const &edgeOrientation = elementInfo.getEdgeOrientation(); @@ -234,7 +232,8 @@ namespace Dune // from the global normals/tangents normalize // get local and global Tangents - auto refElement = Dune::referenceElement<double, 2>(geometry.type()); + auto refElement + = Dune::referenceElement<typename Element::Geometry::ctype, 2>(geometry.type()); for (std::size_t i = 0; i < 3; ++i) { std::size_t lower = (i == 2) ? 1 : 0; @@ -855,7 +854,7 @@ namespace Dune Dune::MultipleCodimMultipleGeomTypeMapper<GV> elementMapper_; std::vector<ElementInformation> elementInformation_; - private: + // helper methods bool linearIndependent(Dune::FieldVector<D, dim> a, Dune::FieldVector<D, dim> b) { return std::abs(a.dot(Dune::FieldVector<D, dim>{-b[1], b[0]})) > 1e-14;