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