From f93d748603f9efb01135db3bbb5ddf723a6deb70 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Fri, 1 Apr 2022 12:10:49 +0200 Subject: [PATCH] changed: do not copy primary variables into element context hold a const pointer instead. --- .../discretization/common/fvbaseelementcontext.hh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/opm/models/discretization/common/fvbaseelementcontext.hh b/opm/models/discretization/common/fvbaseelementcontext.hh index 0017f7980..ea95d61de 100644 --- a/opm/models/discretization/common/fvbaseelementcontext.hh +++ b/opm/models/discretization/common/fvbaseelementcontext.hh @@ -62,7 +62,7 @@ class FvBaseElementContext struct DofStore_ { IntensiveQuantities intensiveQuantities[timeDiscHistorySize]; - PrimaryVariables priVars[timeDiscHistorySize]; + const PrimaryVariables* priVars[timeDiscHistorySize]; const IntensiveQuantities *thermodynamicHint[timeDiscHistorySize]; }; using DofVarsVector = std::vector; @@ -452,7 +452,7 @@ public: const PrimaryVariables& primaryVars(unsigned dofIdx, unsigned timeIdx) const { assert(dofIdx < numDof(timeIdx)); - return dofVars_[dofIdx].priVars[timeIdx]; + return *dofVars_[dofIdx].priVars[timeIdx]; } /*! @@ -483,7 +483,7 @@ public: assert(dofIdx < numDof(/*timeIdx=*/0)); intensiveQuantitiesStashed_ = dofVars_[dofIdx].intensiveQuantities[/*timeIdx=*/0]; - priVarsStashed_ = dofVars_[dofIdx].priVars[/*timeIdx=*/0]; + priVarsStashed_ = *dofVars_[dofIdx].priVars[/*timeIdx=*/0]; stashedDofIdx_ = static_cast(dofIdx); } @@ -494,7 +494,7 @@ public: */ void restoreIntensiveQuantities(unsigned dofIdx) { - dofVars_[dofIdx].priVars[/*timeIdx=*/0] = priVarsStashed_; + dofVars_[dofIdx].priVars[/*timeIdx=*/0] = &priVarsStashed_; dofVars_[dofIdx].intensiveQuantities[/*timeIdx=*/0] = intensiveQuantitiesStashed_; stashedDofIdx_ = -1; } @@ -554,7 +554,7 @@ protected: for (unsigned dofIdx = 0; dofIdx < numDof; dofIdx++) { unsigned globalIdx = globalSpaceIndex(dofIdx, timeIdx); const PrimaryVariables& dofSol = globalSol[globalIdx]; - dofVars_[dofIdx].priVars[timeIdx] = dofSol; + dofVars_[dofIdx].priVars[timeIdx] = &dofSol; dofVars_[dofIdx].thermodynamicHint[timeIdx] = model().thermodynamicHint(globalIdx, timeIdx); @@ -580,7 +580,7 @@ protected: "for the most-recent substep (i.e. time index 0) are available!"); #endif - dofVars_[dofIdx].priVars[timeIdx] = priVars; + dofVars_[dofIdx].priVars[timeIdx] = &priVars; dofVars_[dofIdx].intensiveQuantities[timeIdx].update(/*context=*/asImp_(), dofIdx, timeIdx); }