diff --git a/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh b/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh index d73e499e0eaafbcef30b8cd6c407d3212a9e9929..3d88f5271e14a32eeb80df10e5d5723765fe3bec 100644 --- a/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh +++ b/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh @@ -24,6 +24,8 @@ #ifndef DUMUX_DISCRETIZATION_CCTPFA_GRID_FLUXVARSCACHE_HH #define DUMUX_DISCRETIZATION_CCTPFA_GRID_FLUXVARSCACHE_HH +#include + // make the local view function available whenever we use this class #include #include @@ -101,19 +103,18 @@ public: fluxVarsCache_.resize(gridGeometry.numScvf()); - auto fvGeometry = localView(gridGeometry); - auto elemVolVars = localView(gridVolVars); - for (const auto& element : elements(gridGeometry.gridView())) + Dumux::parallelFor(gridGeometry.gridView().size(0), [&](const std::size_t eIdx) { // Prepare the geometries within the elements of the stencil - fvGeometry.bind(element); - elemVolVars.bind(element, fvGeometry, sol); + const auto element = gridGeometry.element(eIdx); + const auto fvGeometry = localView(gridGeometry).bind(element); + const auto elemVolVars = localView(gridVolVars).bind(element, fvGeometry, sol); for (auto&& scvf : scvfs(fvGeometry)) { filler.fill(*this, fluxVarsCache_[scvf.index()], element, fvGeometry, elemVolVars, scvf, forceUpdate); } - } + }); } } diff --git a/dumux/discretization/facecentered/staggered/gridfluxvariablescache.hh b/dumux/discretization/facecentered/staggered/gridfluxvariablescache.hh index 5287ffb9d92f53d7dc1b7238d55495a2795e6ac5..ad64caad40db9b7880b6d5c9cafa371582242e89 100644 --- a/dumux/discretization/facecentered/staggered/gridfluxvariablescache.hh +++ b/dumux/discretization/facecentered/staggered/gridfluxvariablescache.hh @@ -24,6 +24,8 @@ #ifndef DUMUX_DISCRETIZATION_FACECENTERED_STAGGERED_GRID_FLUXVARSCACHE_HH #define DUMUX_DISCRETIZATION_FACECENTERED_STAGGERED_GRID_FLUXVARSCACHE_HH +#include + // make the local view function available whenever we use this class #include #include @@ -95,20 +97,19 @@ public: FluxVariablesCacheFiller filler(problem()); fluxVarsCache_.resize(gridGeometry.numScvf()); - for (const auto& element : elements(gridGeometry.gridView())) + + Dumux::parallelFor(gridGeometry.gridView().size(0), [&](const std::size_t eIdx) { // Prepare the geometries within the elements of the stencil - auto fvGeometry = localView(gridGeometry); - fvGeometry.bind(element); - - auto elemVolVars = localView(gridVolVars); - elemVolVars.bind(element, fvGeometry, sol); + const auto element = gridGeometry.element(eIdx); + const auto fvGeometry = localView(gridGeometry).bind(element); + const auto elemVolVars = localView(gridVolVars).bind(element, fvGeometry, sol); for (auto&& scvf : scvfs(fvGeometry)) { filler.fill(*this, fluxVarsCache_[scvf.index()], element, fvGeometry, elemVolVars, scvf, forceUpdate); } - } + }); } }