From 55d850343ff0febe490a7494d2e9242cdf9334b9 Mon Sep 17 00:00:00 2001 From: Kilian Weishaupt <kilian.weishaupt@iws.uni-stuttgart.de> Date: Tue, 15 Nov 2016 11:00:14 +0100 Subject: [PATCH] [staggeredGrid] Improve geometryHelper * Now calculates the distance between the intersection itself and its opposing one --- .../staggered/staggeredgeometryhelper.hh | 11 +++++++++++ .../discretization/staggered/subcontrolvolumeface.hh | 8 ++++++++ test/discretization/staggered/test_staggered.cc | 1 + 3 files changed, 20 insertions(+) diff --git a/dumux/discretization/staggered/staggeredgeometryhelper.hh b/dumux/discretization/staggered/staggeredgeometryhelper.hh index 21f4623493..46baf40989 100644 --- a/dumux/discretization/staggered/staggeredgeometryhelper.hh +++ b/dumux/discretization/staggered/staggeredgeometryhelper.hh @@ -101,6 +101,17 @@ public: return gridView_.indexSet().subIndex(this->intersection_.inside(), localOppositeIdx_(inIdx), dim-1) + this->offset_; } + /*! + * \brief Returns the distance between dofSelf and dofOpposite + */ + Scalar selfToOppositeDistance() const + { + const auto inIdx = intersection_.indexInInside(); + const auto& self = element_.template subEntity <1> (inIdx); + const auto& opposite = element_.template subEntity <1> (localOppositeIdx_(inIdx)); + return (self.geometry().center() - opposite.geometry().center()).two_norm(); + } + /*! * \brief Returns a copy of the pair data */ diff --git a/dumux/discretization/staggered/subcontrolvolumeface.hh b/dumux/discretization/staggered/subcontrolvolumeface.hh index 2a65374624..9ab065a281 100644 --- a/dumux/discretization/staggered/subcontrolvolumeface.hh +++ b/dumux/discretization/staggered/subcontrolvolumeface.hh @@ -100,6 +100,7 @@ public: selfIdx_ = geometryHelper.dofIdxSelf(); oppositeIdx_ = geometryHelper.dofIdxOpposite(); + selfToOppositeDistance_ = geometryHelper.selfToOppositeDistance(); pairData_ = geometryHelper.pairData(); } @@ -201,6 +202,12 @@ public: return oppositeIdx_; } + //! The global index of this sub control volume face + Scalar selfToOppositeDistance() const + { + return selfToOppositeDistance_; + } + auto pairData(const int idx) const { @@ -219,6 +226,7 @@ private: int selfIdx_; int oppositeIdx_; + Scalar selfToOppositeDistance_; std::vector<StaggeredSubFace> subfaces_; std::array<PairData<Scalar>, numPairs> pairData_; diff --git a/test/discretization/staggered/test_staggered.cc b/test/discretization/staggered/test_staggered.cc index 21e9f413d4..9195ad7674 100644 --- a/test/discretization/staggered/test_staggered.cc +++ b/test/discretization/staggered/test_staggered.cc @@ -145,6 +145,7 @@ int main (int argc, char *argv[]) try << "ip "<< scvf.ipGlobal() << "; face " << std::setw(3) << scvf.index() << "; self/oppo " << std::setw(3) << scvf.dofIndexSelf() << "/" << std::setw(3) <<scvf.dofIndexOpposite() + << "; dist self/oppo " << std::setw(3) << scvf.selfToOppositeDistance() << ", norm1 in/out " << std::setw(3) << scvf.pairData(0).normalPair.first << "/" << std::setw(3) << scvf.pairData(0).normalPair.second << ", norm2 in/out " << std::setw(3) << scvf.pairData(1).normalPair.first << "/" << std::setw(3) << scvf.pairData(1).normalPair.second << ", par1 in/out " << std::setw(3) << scvf.dofIndexSelf() << "/" << std::setw(3) << scvf.pairData(0).outerParallel -- GitLab