avoid mass creation with drsdt

This commit is contained in:
Tor Harald Sandve 2024-06-04 15:10:11 +02:00
parent 59aee6c56c
commit 8b5fced909

View File

@ -661,9 +661,6 @@ public:
// Compute flux for output // Compute flux for output
this->model().linearizer().updateFlowsInfo(); this->model().linearizer().updateFlowsInfo();
// deal with DRSDT and DRVDT
this->asImp_().updateCompositionChangeLimits_();
if (this->enableDriftCompensation_) { if (this->enableDriftCompensation_) {
OPM_TIMEBLOCK(driftCompansation); OPM_TIMEBLOCK(driftCompansation);
@ -1380,8 +1377,6 @@ public:
// the initial solution. // the initial solution.
thresholdPressures_.finishInit(); thresholdPressures_.finishInit();
updateCompositionChangeLimits_();
aquiferModel_.initialSolutionApplied(); aquiferModel_.initialSolutionApplied();
if (this->simulator().episodeIndex() == 0) { if (this->simulator().episodeIndex() == 0) {
@ -1864,9 +1859,13 @@ protected:
const bool invalidateFromHyst = updateHysteresis_(); const bool invalidateFromHyst = updateHysteresis_();
const bool invalidateFromMaxOilSat = updateMaxOilSaturation_(); const bool invalidateFromMaxOilSat = updateMaxOilSaturation_();
// deal with DRSDT and DRVDT
const bool invalidateDRDT = this->asImp_().updateCompositionChangeLimits_();
// the derivatives may have change // the derivatives may have change
bool invalidateIntensiveQuantities bool invalidateIntensiveQuantities
= invalidateFromMaxWaterSat || invalidateFromMinPressure || invalidateFromHyst || invalidateFromMaxOilSat; = invalidateFromMaxWaterSat || invalidateFromMinPressure || invalidateFromHyst || invalidateFromMaxOilSat || invalidateDRDT;
if (invalidateIntensiveQuantities) { if (invalidateIntensiveQuantities) {
OPM_TIMEBLOCK(beginTimeStepInvalidateIntensiveQuantities); OPM_TIMEBLOCK(beginTimeStepInvalidateIntensiveQuantities);
this->model().invalidateAndUpdateIntensiveQuantities(/*timeIdx=*/0); this->model().invalidateAndUpdateIntensiveQuantities(/*timeIdx=*/0);
@ -1899,7 +1898,7 @@ protected:
} }
// update the parameters needed for DRSDT and DRVDT // update the parameters needed for DRSDT and DRVDT
void updateCompositionChangeLimits_() bool updateCompositionChangeLimits_()
{ {
OPM_TIMEBLOCK(updateCompositionChangeLimits); OPM_TIMEBLOCK(updateCompositionChangeLimits);
// update the "last Rs" values for all elements, including the ones in the ghost // update the "last Rs" values for all elements, including the ones in the ghost
@ -1909,7 +1908,7 @@ protected:
this->mixControls_.drsdtActive(episodeIdx), this->mixControls_.drsdtActive(episodeIdx),
this->mixControls_.drvdtActive(episodeIdx)}; this->mixControls_.drvdtActive(episodeIdx)};
if (!active[0] && !active[1] && !active[2]) { if (!active[0] && !active[1] && !active[2]) {
return; return false;
} }
this->updateProperty_("FlowProblem::updateCompositionChangeLimits_()) failed:", this->updateProperty_("FlowProblem::updateCompositionChangeLimits_()) failed:",
@ -1929,6 +1928,8 @@ protected:
active); active);
} }
); );
return true;
} }
bool updateMaxOilSaturation_() bool updateMaxOilSaturation_()