diff --git a/dumux/discretization/facecentered/staggered/fvelementgeometry.hh b/dumux/discretization/facecentered/staggered/fvelementgeometry.hh index 2318b5ee7e53ec28a52cb1acde379e7f30e12a48..ae93ae36e3c9cde83530384653ec54fbee23d0e9 100644 --- a/dumux/discretization/facecentered/staggered/fvelementgeometry.hh +++ b/dumux/discretization/facecentered/staggered/fvelementgeometry.hh @@ -105,12 +105,7 @@ public: //! for (auto&& scv : scvs(fvGeometry)) friend inline auto scvs(const FaceCenteredStaggeredFVElementGeometry& fvGeometry) - { - using IndexContainerType = std::decay_t<decltype(fvGeometry.scvIndices_())>; - using ScvIterator = Dumux::ScvIterator<SubControlVolume, IndexContainerType, ThisType>; - return Dune::IteratorRange<ScvIterator>(ScvIterator(fvGeometry.scvIndices_().begin(), fvGeometry), - ScvIterator(fvGeometry.scvIndices_().end(), fvGeometry)); - } + { return fvGeometry.gridGeometry().scvs(fvGeometry); } //! iterator range for sub control volumes faces. Iterates over //! all scvfs of the bound element. diff --git a/dumux/discretization/facecentered/staggered/fvgridgeometry.hh b/dumux/discretization/facecentered/staggered/fvgridgeometry.hh index 44fffdcd120e81b5496e1e4445c070d5c5e9c392..e326bd31be7bd8f6dd62c6f499531f569d388635 100644 --- a/dumux/discretization/facecentered/staggered/fvgridgeometry.hh +++ b/dumux/discretization/facecentered/staggered/fvgridgeometry.hh @@ -199,6 +199,15 @@ public: const SubControlVolume& scv(GridIndexType scvIdx) const { return scvs_[scvIdx]; } + //! Iterator range for sub control volumes. Iterates over + //! all scvs of the element-local fvGeometry. + auto scvs(const LocalView& fvGeometry) const + { + const auto begin = scvs_.cbegin() + numScvsPerElement*fvGeometry.elementIndex(); + const auto end = begin + numScvsPerElement; + return Dune::IteratorRange<decltype(begin)>(begin, end); + } + //! Get a sub control volume face with a global scvf index const SubControlVolumeFace& scvf(GridIndexType scvfIdx) const { return scvfs_[scvfIdx]; }