From 27c600daa7347e47cebaee02bf58f660c8c302eb Mon Sep 17 00:00:00 2001
From: Jonathan Youett <youett@math.fu-berlin.de>
Date: Mon, 9 Oct 2017 17:14:27 +0200
Subject: [PATCH] Cleanup using range-based for-loops and keyword 'auto'

---
 dune/solvers/test/common.hh | 55 ++++++++++++-------------------------
 1 file changed, 17 insertions(+), 38 deletions(-)

diff --git a/dune/solvers/test/common.hh b/dune/solvers/test/common.hh
index 0894a26c..028dad40 100644
--- a/dune/solvers/test/common.hh
+++ b/dune/solvers/test/common.hh
@@ -92,17 +92,13 @@ void addToDiagonal(Dune::FieldMatrix<T, n, m>& M, const F& x)
 template<class GridView, class Matrix>
 void assemblePQ1Stiffness(const GridView& gridView, Matrix& matrix)
 {
-    static const int dim = GridView::Grid::dimension;
-    static const int dimworld = GridView::Grid::dimensionworld;
+    static constexpr int dim = GridView::Grid::dimension;
+    static constexpr int dimworld = GridView::Grid::dimensionworld;
 
-    typedef typename GridView::template Codim<0>::Entity Element;
-    typedef typename GridView::template Codim<0>::Entity::Geometry Geometry;
     typedef typename Dune::PQkLocalFiniteElementCache<double, double, dim, 1> FiniteElementCache;
     typedef typename FiniteElementCache::FiniteElementType FiniteElement;
 
-    typedef typename Dune::FieldVector<double,dim> LocalCoordinate;
-    typedef typename Dune::FieldVector<double,dimworld> GlobalCoordinate;
-    typedef typename Element::Geometry::JacobianInverseTransposed JacobianInverseTransposed;
+    typedef typename Dune::FieldVector<double, dimworld> GlobalCoordinate;
     typedef typename FiniteElement::Traits::LocalBasisType::Traits::JacobianType JacobianType;
 
     const auto& indexSet = gridView.indexSet();
@@ -110,7 +106,7 @@ void assemblePQ1Stiffness(const GridView& gridView, Matrix& matrix)
 
     for (const auto& element : elements(gridView))
     {
-        const Geometry geometry = element.geometry();
+        const auto& geometry = element.geometry();
         const FiniteElement& fe = cache.get(element.type());
 
         int localSize = fe.size();
@@ -125,13 +121,13 @@ void assemblePQ1Stiffness(const GridView& gridView, Matrix& matrix)
         std::vector<JacobianType> referenceGradients(localSize);
         std::vector<GlobalCoordinate> gradients(localSize);
 
-        for (size_t pt=0; pt < quad.size(); ++pt)
+        for (const auto& pt : quad)
         {
             // get quadrature point
-            const LocalCoordinate& quadPos = quad[pt].position();
+            const auto& quadPos = pt.position();
 
             // get transposed inverse of Jacobian of transformation
-            const JacobianInverseTransposed invJacobian = geometry.jacobianInverseTransposed(quadPos);
+            const auto invJacobian = geometry.jacobianInverseTransposed(quadPos);
 
             // get integration factor
             const double integrationElement = geometry.integrationElement(quadPos);
@@ -144,7 +140,7 @@ void assemblePQ1Stiffness(const GridView& gridView, Matrix& matrix)
                 invJacobian.mv(referenceGradients[i][0], gradients[i]);
 
             // compute matrix entries
-            double z = quad[pt].weight() * integrationElement;
+            double z = pt.weight() * integrationElement;
             for (int i = 0; i < localSize; ++i)
             {
                 int iGlobal = indexSet.subIndex(element, fe.localCoefficients().localKey(i).subEntity(), dim);
@@ -169,11 +165,9 @@ void assemblePQ1Mass(const GridView& gridView, Matrix& matrix)
 {
     static const int dim = GridView::Grid::dimension;
 
-    typedef typename GridView::template Codim<0>::Entity::Geometry Geometry;
     typedef typename Dune::PQkLocalFiniteElementCache<double, double, dim, 1> FiniteElementCache;
     typedef typename FiniteElementCache::FiniteElementType FiniteElement;
 
-    typedef typename Dune::FieldVector<double,dim> LocalCoordinate;
     typedef typename FiniteElement::Traits::LocalBasisType::Traits::RangeType RangeType;
 
     const auto& indexSet = gridView.indexSet();
@@ -181,7 +175,7 @@ void assemblePQ1Mass(const GridView& gridView, Matrix& matrix)
 
     for (const auto& element : elements(gridView))
     {
-        const Geometry geometry = element.geometry();
+        const auto& geometry = element.geometry();
         const FiniteElement& fe = cache.get(element.type());
 
         int localSize = fe.size();
@@ -198,7 +192,7 @@ void assemblePQ1Mass(const GridView& gridView, Matrix& matrix)
         for (size_t pt=0; pt < quad.size(); ++pt)
         {
             // get quadrature point
-            const LocalCoordinate& quadPos = quad[pt].position();
+            const auto& quadPos = quad[pt].position();
 
             // get integration factor
             const double integrationElement = geometry.integrationElement(quadPos);
@@ -233,11 +227,9 @@ void assemblePQ1RHS(const GridView& gridView, Vector& r, const Function& f)
 {
     static const int dim = GridView::Grid::dimension;
 
-    typedef typename GridView::template Codim<0>::Entity::Geometry Geometry;
     typedef typename Dune::PQkLocalFiniteElementCache<double, double, dim, 1> FiniteElementCache;
     typedef typename FiniteElementCache::FiniteElementType FiniteElement;
 
-    typedef typename Dune::template FieldVector<double,dim> LocalCoordinate;
     typedef typename FiniteElement::Traits::LocalBasisType::Traits::RangeType RangeType;
     typedef typename Function::RangeType FunctionRangeType;
 
@@ -246,7 +238,7 @@ void assemblePQ1RHS(const GridView& gridView, Vector& r, const Function& f)
 
     for (const auto& element : elements(gridView))
     {
-        const Geometry geometry = element.geometry();
+        const auto& geometry = element.geometry();
         const FiniteElement& fe = cache.get(element.type());
 
         int localSize = fe.size();
@@ -261,10 +253,10 @@ void assemblePQ1RHS(const GridView& gridView, Vector& r, const Function& f)
         // store values of shape functions
         std::vector<RangeType> values(localSize);
 
-        for (size_t pt=0; pt < quad.size(); ++pt)
+        for (const auto& pt : quad)
         {
             // get quadrature point
-            const LocalCoordinate& quadPos = quad[pt].position();
+            const auto& quadPos = pt.position();
 
             // get integration factor
             const double integrationElement = geometry.integrationElement(quadPos);
@@ -277,7 +269,7 @@ void assemblePQ1RHS(const GridView& gridView, Vector& r, const Function& f)
             f.evaluate(geometry.global(quadPos), fAtPos);
 
             // add vector entries
-            double z = quad[pt].weight() * integrationElement;
+            double z = pt.weight() * integrationElement;
             for (int i = 0; i < localSize; ++i)
             {
                 int iGlobal = indexSet.subIndex(element, fe.localCoefficients().localKey(i).subEntity(), dim);
@@ -296,8 +288,7 @@ bool intersectionContainsVertex(const Intersection& i, int vertexInInsideElement
 
     int faceIdx = i.indexInInside();
 
-    const Dune::ReferenceElement<double,dim>& refElement
-        = Dune::ReferenceElements<double, dim>::general(i.inside().type());
+    const auto& refElement = Dune::ReferenceElements<double, dim>::general(i.inside().type());
 
     for (int j = 0; j<refElement.size(faceIdx, 1, dim); ++j)
     {
@@ -316,31 +307,19 @@ void markBoundaryDOFs(const GridView& gridView, BitVector& isBoundary)
     static const int dim = GridView::Grid::dimension;
 
     typedef typename GridView::IndexSet IndexSet;
-    typedef typename GridView::template Codim<0>::Iterator ElementIterator;
-    typedef typename GridView::template Codim<0>::Entity Element;
-    typedef typename GridView::IntersectionIterator IntersectionIterator;
-    typedef typename GridView::Intersection Intersection;
     typedef typename Dune::PQkLocalFiniteElementCache<double, double, dim, 1> FiniteElementCache;
     typedef typename FiniteElementCache::FiniteElementType FiniteElement;
 
     const IndexSet& indexSet = gridView.indexSet();
     FiniteElementCache cache;
 
-    ElementIterator it = gridView.template begin<0>();
-    ElementIterator end = gridView.template end<0>();
-    for (; it != end; ++it)
+    for (const auto& e : elements(gridView))
     {
-        const Element& e = *it;
         const FiniteElement& fe = cache.get(e.type());
         int localSize = fe.localBasis().size();
 
-        IntersectionIterator nIt = gridView.ibegin(e);
-        IntersectionIterator nEnd = gridView.iend(e);
-
-        for (; nIt!=nEnd; ++nIt)
+        for (const auto& i : intersections(gridView, e))
         {
-            const Intersection& i = *nIt;
-
             if (i.boundary())
             {
                 for (int j = 0; j < localSize; ++j)
-- 
GitLab