From 2f63df4d9be73a76fafc025eb456551db2a4947d Mon Sep 17 00:00:00 2001
From: Melanie Lipp <melanie.lipp@iws.uni-stuttgart.de>
Date: Thu, 20 May 2021 18:13:05 +0200
Subject: [PATCH] [cleanup][geometryhelper] Remove copies of functions.

---
 .../cvdgeometryhelperutility.hh               | 22 +++++++-
 .../cvdstaggeredgeometryhelper.hh             | 32 ++---------
 .../handlers/cvdstaggeredaxisdatahandler.hh   | 53 ++-----------------
 3 files changed, 27 insertions(+), 80 deletions(-)

diff --git a/dumux/discretization/staggered/freeflow/geometryhelper/cvdgeometryhelperutility.hh b/dumux/discretization/staggered/freeflow/geometryhelper/cvdgeometryhelperutility.hh
index c7baa85..48cd325 100644
--- a/dumux/discretization/staggered/freeflow/geometryhelper/cvdgeometryhelperutility.hh
+++ b/dumux/discretization/staggered/freeflow/geometryhelper/cvdgeometryhelperutility.hh
@@ -54,7 +54,7 @@ class CVDGeometryHelperUtility {
    public:
     CVDGeometryHelperUtility(const GridView& gridView)
         : gridView_(gridView) {}
-    
+
     CVDGeometryHelperUtility(const GridView& gridView, const Intersection& intersection)
         : gridView_(gridView),
           intersection_(intersection) {}
@@ -161,6 +161,24 @@ class CVDGeometryHelperUtility {
         );
     }
 
+    // non-directional: not in the direction of the normal vector of intersection_
+    // true if the non-directional coordinate of one of the corners of intersection_ matches the
+    // non-directional coordinate of the center of isWithCenter
+    // is typically used in a case intersection_.inside().level() < intersection_.outside().level()
+    //                     -------------
+    //                    |            |
+    //                    |            |warning:
+    //                    |            |this opposite intersection also returns true
+    //                    ||           |if there is a coarse neighbor -> needs to be
+    //                    ||           |combined with utility_.facetIsNormal_ !!!
+    //                    ||           |
+    //                     ======-******
+    //                    |      |     |
+    //                    |      |     |
+    //                    |      |     |
+    //                     -------------
+    // ||:myintersection, === and ***: isWithCenters which return true
+
     bool haveNonDirectionCornerCenterMatch_(const Intersection& isWithCenter)
     {
         //TODO figure out in 3D what I want
@@ -293,4 +311,4 @@ class CVDGeometryHelperUtility {
 
 };
 }  // namespace Dumux
-#endif
\ No newline at end of file
+#endif
diff --git a/dumux/discretization/staggered/freeflow/geometryhelper/cvdstaggeredgeometryhelper.hh b/dumux/discretization/staggered/freeflow/geometryhelper/cvdstaggeredgeometryhelper.hh
index 2f083cb..c9b6eca 100644
--- a/dumux/discretization/staggered/freeflow/geometryhelper/cvdstaggeredgeometryhelper.hh
+++ b/dumux/discretization/staggered/freeflow/geometryhelper/cvdstaggeredgeometryhelper.hh
@@ -118,7 +118,7 @@ public:
         CVDStaggeredInnerOuterVolVarsHandler innerOuterVolVarsHandler(gridView_, intersectionMapper_, element_, intersection_);
         innerOuterVolVarsHandler.fillInnerOrOuterVolVarsData_(volVarsData_.innerVolVarsDofs, volVarsData_.innerVolVarsDofsInterpolationFactors, volVarsData_.innerVolVarsScvfBuildingData, 0/*in*/);
         innerOuterVolVarsHandler.fillInnerOrOuterVolVarsData_(volVarsData_.outerVolVarsDofs, volVarsData_.outerVolVarsDofsInterpolationFactors, volVarsData_.outerVolVarsScvfBuildingData, 1/*out*/);//empty if intersection_ at boundary
-        
+
         //Fill normal volume variables
         CVDStaggeredNormalVolumeVarsHandler normalVolVarsHandler(gridView_, intersectionMapper_, element_, intersection_, volVarsData_);
         normalVolVarsHandler.fillNormalVolVarsData_();
@@ -194,31 +194,7 @@ public:
 
     std::array<int, dim-1> nonDirectionIndices() const
     {
-        std::array<int, dim-1> retArray; //initialize just to avoid a "may be used uninitialized" warning
-
-        int vectorPos = 0;
-        for (int i = 0; i < dim; ++i)
-        {
-            if (vectorPos <= dim-1)
-            {
-                if (i != directionIndex())
-                {
-                    retArray[vectorPos] = i;
-                    ++vectorPos;
-                }
-            }
-            else
-            {
-                DUNE_THROW(Dune::InvalidStateException, "Should not happen.");
-            }
-        }
-
-        if (retArray.size() != 1)
-        {
-            DUNE_THROW(Dune::InvalidStateException, "Not yet prepared for 3D.");
-        }
-
-        return retArray;
+        return utility_.nonDirectionIndices();
     }
 
     /*!
@@ -226,7 +202,7 @@ public:
      */
     int directionIndex(const Intersection& intersection) const
     {
-        return Dumux::directionIndex(std::move(intersection.centerUnitOuterNormal()));
+        return utility_.directionIndex(intersection);
     }
 
     //! \brief Returns the order needed by the scheme
@@ -469,7 +445,7 @@ private:
      * \param otherIdx The local index of the other intersection
      */
     bool facetIsNormal_(const int selfIdx, const int otherIdx, const Element& element) const
-    {   
+    {
         return utility_.facetIsNormal_(selfIdx, otherIdx, element);
     };
 
diff --git a/dumux/discretization/staggered/freeflow/geometryhelper/handlers/cvdstaggeredaxisdatahandler.hh b/dumux/discretization/staggered/freeflow/geometryhelper/handlers/cvdstaggeredaxisdatahandler.hh
index 9ea2263..603a858 100644
--- a/dumux/discretization/staggered/freeflow/geometryhelper/handlers/cvdstaggeredaxisdatahandler.hh
+++ b/dumux/discretization/staggered/freeflow/geometryhelper/handlers/cvdstaggeredaxisdatahandler.hh
@@ -64,7 +64,7 @@ class CVDStaggeredAxisDataHandler {
    public:
     CVDStaggeredAxisDataHandler(const GridView& gridView,
      const IntersectionMapper& intersectionMapper,
-      const Element& element, 
+      const Element& element,
       Intersection& intersection,
       AD& axisData,
       GP& oppositePosition)
@@ -247,7 +247,7 @@ class CVDStaggeredAxisDataHandler {
 
         for (const auto& elementIs : intersections(gridView_, element_))
         {
-            if (haveNonDirectionCornerCenterMatch_(elementIs) && utility_.facetIsNormal_(intersectionMapper_.isIndexInInside(intersection_), intersectionMapper_.isIndexInInside(elementIs), element_))
+            if (utility_.haveNonDirectionCornerCenterMatch_(elementIs) && utility_.facetIsNormal_(intersectionMapper_.isIndexInInside(intersection_), intersectionMapper_.isIndexInInside(elementIs), element_))
             {
                 if (elementIs.neighbor())
                 {
@@ -499,54 +499,7 @@ class CVDStaggeredAxisDataHandler {
 
         return commonCoordinates;
     }
-
-    // non-directional: not in the direction of the normal vector of intersection_
-// true if the non-directional coordinate of one of the corners of intersection_ matches the
-// non-directional coordinate of the center of isWithCenter
-// is typically used in a case intersection_.inside().level() < intersection_.outside().level()
-//                     -------------
-//                    |            |
-//                    |            |warning:
-//                    |            |this opposite intersection also returns true
-//                    ||           |if there is a coarse neighbor -> needs to be
-//                    ||           |combined with utility_.facetIsNormal_ !!!
-//                    ||           |
-//                     ======-******
-//                    |      |     |
-//                    |      |     |
-//                    |      |     |
-//                     -------------
-// ||:myintersection, === and ***: isWithCenters which return true
-
-    bool haveNonDirectionCornerCenterMatch_(const Intersection& isWithCenter)
-    {
-        //TODO figure out in 3D what I want
-
-        bool retVal = false;
-
-        const auto nonDirIndices = utility_.nonDirectionIndices();
-
-        if (nonDirIndices.size() != 1)
-        {
-            DUNE_THROW(Dune::InvalidStateException, "Not yet prepared for 3D.");
-        }
-
-        for (const auto nonDirectionIdx : nonDirIndices)
-        {
-            for (unsigned int i = 0; i < intersection_.geometry().corners(); ++i)
-            {
-                const auto cor = intersection_.geometry().corner(i);
-
-                if (scalarCmp(cor[nonDirectionIdx], isWithCenter.geometry().center()[nonDirectionIdx]))
-                {
-                    retVal = true;
-                }
-            }
-        }
-
-        return retVal;
-    }
 };
 
 }  // namespace Dumux
-#endif
\ No newline at end of file
+#endif
-- 
GitLab