From f56249b91938c6b35e1428839ae0f03dbea9b827 Mon Sep 17 00:00:00 2001
From: Mathis Kelm <mathis.kelm@iws.uni-stuttgart.de>
Date: Fri, 21 Jun 2024 13:24:16 +0200
Subject: [PATCH] [boxdfm] store and expose indexInIntersection in scv(f)

---
 dumux/porousmediumflow/boxdfm/subcontrolvolume.hh     | 7 +++++++
 dumux/porousmediumflow/boxdfm/subcontrolvolumeface.hh | 8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/dumux/porousmediumflow/boxdfm/subcontrolvolume.hh b/dumux/porousmediumflow/boxdfm/subcontrolvolume.hh
index 38a7c2d5d0..9a9409e5f8 100644
--- a/dumux/porousmediumflow/boxdfm/subcontrolvolume.hh
+++ b/dumux/porousmediumflow/boxdfm/subcontrolvolume.hh
@@ -93,6 +93,7 @@ public:
     , elemLocalScvIdx_(scvIdx)
     , dofIndex_(dofIndex)
     , facetIdx_(0)
+    , indexInIntersection_(0)
     {
         auto corners = geometryHelper.getScvCorners(scvIdx);
         dofPosition_ = corners[0];
@@ -132,6 +133,7 @@ public:
     , elemLocalScvIdx_(elemLocalScvIdx)
     , dofIndex_(dofIndex)
     , facetIdx_(elemLocalFacetIdx)
+    , indexInIntersection_(indexInIntersection)
     {
         auto corners = geometryHelper.getBoundaryScvfCorners(intersection.indexInInside(), indexInIntersection);
         dofPosition_ = corners[0];
@@ -166,6 +168,10 @@ public:
     LocalIndexType facetIndexInElement() const
     { assert(isFractureScv_); return facetIdx_; }
 
+    //! The local vertex index in the intersection
+    LocalIndexType indexInsideIntersection() const
+    { assert(isFractureScv_); return indexInIntersection_; }
+
     //! The index of the dof this scv is embedded in
     GridIndexType dofIndex() const
     { return dofIndex_; }
@@ -194,6 +200,7 @@ private:
 
     // for fracture scvs only!
     LocalIndexType facetIdx_;
+    LocalIndexType indexInIntersection_;
 };
 
 } // end namespace
diff --git a/dumux/porousmediumflow/boxdfm/subcontrolvolumeface.hh b/dumux/porousmediumflow/boxdfm/subcontrolvolumeface.hh
index 4fecd088bc..312f2702a3 100644
--- a/dumux/porousmediumflow/boxdfm/subcontrolvolumeface.hh
+++ b/dumux/porousmediumflow/boxdfm/subcontrolvolumeface.hh
@@ -95,6 +95,7 @@ public:
     , isFractureScvf_(false)
     , boundaryFlag_{}
     , facetIdx_(0)
+    , indexInIntersection_(0)
     {
         auto corners = geometryHelper.getScvfCorners(scvfIndex);
         unitOuterNormal_ = geometryHelper.normal(corners, scvIndices_);
@@ -123,6 +124,7 @@ public:
     , isFractureScvf_(false)
     , boundaryFlag_{intersection}
     , facetIdx_(0)
+    , indexInIntersection_(0)
     {
         auto corners = geometryHelper.getBoundaryScvfCorners(intersection.indexInInside(), indexInIntersection);
         area_ = Dumux::convexPolytopeVolume<T::dim-1>(
@@ -149,6 +151,7 @@ public:
     , isFractureScvf_(true)
     , boundaryFlag_{intersection}
     , facetIdx_(intersection.indexInInside())
+    , indexInIntersection_(indexInIntersection)
     {
         auto corners = geometryHelper.getFractureScvfCorners(intersection.indexInInside(), indexInIntersection);
         // The area here is given in meters. In order to
@@ -200,6 +203,10 @@ public:
     LocalIndexType facetIndexInElement() const
     { assert(isFractureScvf_); return facetIdx_; }
 
+    //! The local edge index inside the intersection
+    LocalIndexType indexInIntersection() const
+    { assert(isFractureScvf_); return indexInIntersection_; }
+
     //! Returns the boundary flag
     typename BoundaryFlag::value_type boundaryFlag() const
     { return boundaryFlag_.get(); }
@@ -232,6 +239,7 @@ private:
     bool isFractureScvf_;
     BoundaryFlag boundaryFlag_;
     LocalIndexType facetIdx_;
+    LocalIndexType indexInIntersection_;
 };
 
 } // end namespace Dumux
-- 
GitLab