diff --git a/test/freeflow/navierstokes/angeli/problem.hh b/test/freeflow/navierstokes/angeli/problem.hh index d66187dfdede5eb9a52ec4434fd2b7fe2c97ba31..7ed77e7ee174ad6564426b7420dec78a8638a039 100644 --- a/test/freeflow/navierstokes/angeli/problem.hh +++ b/test/freeflow/navierstokes/angeli/problem.hh @@ -167,7 +167,10 @@ public: DirichletValues dirichlet(const Element& element, const SubControlVolumeFace& scvf) const { if (ParentType::isMomentumProblem() && interpolateExactVelocity_) - return velocityDirichlet_(scvf); + { + const auto fvGeometry = localView(this->gridGeometry()).bindElement(element); + return velocityDirichlet_(fvGeometry.geometry(scvf)); + } else return analyticalSolution(scvf.center(), time_); } @@ -275,7 +278,7 @@ public: for (const auto& intersection : intersections(this->gridGeometry().gridView(), element)) { if (intersection.indexInInside() == scv.indexInElement()) - return velocityDirichlet_(intersection); + return velocityDirichlet_(intersection.geometry()); } DUNE_THROW(Dune::InvalidStateException, "No intersection found"); @@ -301,12 +304,11 @@ public: } private: - template<class Entity> - DirichletValues velocityDirichlet_(const Entity& entity) const + template<class Geometry> + DirichletValues velocityDirichlet_(const Geometry& geo) const { DirichletValues priVars(0.0); - const auto geo = entity.geometry(); - const auto& quad = Dune::QuadratureRules<Scalar, decltype(geo)::mydimension>::rule(geo.type(), 3); + const auto& quad = Dune::QuadratureRules<Scalar, Geometry::mydimension>::rule(geo.type(), 3); for (auto&& qp : quad) { const auto w = qp.weight()*geo.integrationElement(qp.position());