diff --git a/dumux/discretization/staggered/staggeredgeometryhelper.hh b/dumux/discretization/staggered/staggeredgeometryhelper.hh index 21f4623493c9b9b66a157ac62dee92f3e96f4d61..46baf40989958b9987cf9dbc85947f4a15e6c078 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 2a65374624aa4c3ca769f233ea88b8f50f6bdf45..9ab065a2812eedecd366e3b07cab422d2b4da86d 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 21e9f413d4f56a18c03443e370b22c4c98122635..9195ad767417527ea2cd20b9d6a9a5eba99de07d 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