mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-11-25 02:30:18 -06:00
enables rockcomp in flow
This commit is contained in:
parent
4ddb8e8d56
commit
8c7d7e3d2e
@ -119,7 +119,6 @@ class EclTransExtensiveQuantities
|
|||||||
enum { numPhases = FluidSystem::numPhases };
|
enum { numPhases = FluidSystem::numPhases };
|
||||||
enum { enableSolvent = GET_PROP_VALUE(TypeTag, EnableSolvent) };
|
enum { enableSolvent = GET_PROP_VALUE(TypeTag, EnableSolvent) };
|
||||||
enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
|
enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
|
||||||
enum { enableExperiments = GET_PROP_VALUE(TypeTag, EnableExperiments) };
|
|
||||||
|
|
||||||
typedef Opm::MathToolbox<Evaluation> Toolbox;
|
typedef Opm::MathToolbox<Evaluation> Toolbox;
|
||||||
typedef Dune::FieldVector<Scalar, dimWorld> DimVector;
|
typedef Dune::FieldVector<Scalar, dimWorld> DimVector;
|
||||||
@ -437,10 +436,9 @@ protected:
|
|||||||
const auto& up = elemCtx.intensiveQuantities(upstreamIdx, timeIdx);
|
const auto& up = elemCtx.intensiveQuantities(upstreamIdx, timeIdx);
|
||||||
|
|
||||||
Evaluation transModified = trans;
|
Evaluation transModified = trans;
|
||||||
if (enableExperiments) {
|
|
||||||
// deal with water induced rock compaction
|
// deal with water induced rock compaction
|
||||||
transModified *= problem.template rockCompTransMultiplier<double>(up, stencil.globalSpaceIndex(upstreamIdx));
|
transModified *= problem.template rockCompTransMultiplier<double>(up, stencil.globalSpaceIndex(upstreamIdx));
|
||||||
}
|
|
||||||
|
|
||||||
if (upstreamIdx == interiorDofIdx_) {
|
if (upstreamIdx == interiorDofIdx_) {
|
||||||
volumeFlux_[phaseIdx] =
|
volumeFlux_[phaseIdx] =
|
||||||
|
@ -872,13 +872,11 @@ public:
|
|||||||
for (size_t pvtRegionIdx = 0; pvtRegionIdx < maxDRv_.size(); ++pvtRegionIdx)
|
for (size_t pvtRegionIdx = 0; pvtRegionIdx < maxDRv_.size(); ++pvtRegionIdx)
|
||||||
maxDRv_[pvtRegionIdx] = oilVaporizationControl.getMaxDRVDT(pvtRegionIdx)*this->simulator().timeStepSize();
|
maxDRv_[pvtRegionIdx] = oilVaporizationControl.getMaxDRVDT(pvtRegionIdx)*this->simulator().timeStepSize();
|
||||||
|
|
||||||
if (enableExperiments) {
|
// update maximum water saturation and minimum pressure
|
||||||
// update maximum water saturation and minimum pressure
|
// used when ROCKCOMP is activated
|
||||||
// used when ROCKCOMP is activated
|
const bool invalidateFromMaxWaterSat = updateMaxWaterSaturation_();
|
||||||
const bool invalidateFromMaxWaterSat = updateMaxWaterSaturation_();
|
const bool invalidateFromMinPressure = updateMinPressure_();
|
||||||
const bool invalidateFromMinPressure = updateMinPressure_();
|
invalidateIntensiveQuantities = invalidateFromMaxWaterSat || invalidateFromMinPressure;
|
||||||
invalidateIntensiveQuantities = invalidateFromMaxWaterSat || invalidateFromMinPressure;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (invalidateIntensiveQuantities)
|
if (invalidateIntensiveQuantities)
|
||||||
this->model().invalidateIntensiveQuantitiesCache(/*timeIdx=*/0);
|
this->model().invalidateIntensiveQuantitiesCache(/*timeIdx=*/0);
|
||||||
@ -1768,7 +1766,7 @@ public:
|
|||||||
template <class LhsEval>
|
template <class LhsEval>
|
||||||
LhsEval rockCompPoroMultiplier(const IntensiveQuantities& intQuants, unsigned elementIdx) const
|
LhsEval rockCompPoroMultiplier(const IntensiveQuantities& intQuants, unsigned elementIdx) const
|
||||||
{
|
{
|
||||||
if (!enableExperiments || rockCompPoroMult_.size() == 0)
|
if (rockCompPoroMult_.empty())
|
||||||
return 1.0;
|
return 1.0;
|
||||||
|
|
||||||
unsigned tableIdx = 0;
|
unsigned tableIdx = 0;
|
||||||
@ -1800,7 +1798,7 @@ public:
|
|||||||
template <class LhsEval>
|
template <class LhsEval>
|
||||||
LhsEval rockCompTransMultiplier(const IntensiveQuantities& intQuants, unsigned elementIdx) const
|
LhsEval rockCompTransMultiplier(const IntensiveQuantities& intQuants, unsigned elementIdx) const
|
||||||
{
|
{
|
||||||
if (!enableExperiments || rockCompTransMult_.size() == 0)
|
if (rockCompTransMult_.empty())
|
||||||
return 1.0;
|
return 1.0;
|
||||||
|
|
||||||
unsigned tableIdx = 0;
|
unsigned tableIdx = 0;
|
||||||
@ -1831,7 +1829,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
Scalar overburdenPressure(unsigned elementIdx) const
|
Scalar overburdenPressure(unsigned elementIdx) const
|
||||||
{
|
{
|
||||||
if (!enableExperiments || overburdenPressure_.size() == 0)
|
if (overburdenPressure_.empty())
|
||||||
return 0.0;
|
return 0.0;
|
||||||
|
|
||||||
return overburdenPressure_[elementIdx];
|
return overburdenPressure_[elementIdx];
|
||||||
@ -2074,7 +2072,7 @@ private:
|
|||||||
bool updateMinPressure_()
|
bool updateMinPressure_()
|
||||||
{
|
{
|
||||||
// IRREVERS option is used in ROCKCOMP
|
// IRREVERS option is used in ROCKCOMP
|
||||||
if (minOilPressure_.size() == 0)
|
if (minOilPressure_.empty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ElementContext elemCtx(this->simulator());
|
ElementContext elemCtx(this->simulator());
|
||||||
@ -2120,8 +2118,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// read the parameters for water-induced rock compaction
|
// read the parameters for water-induced rock compaction
|
||||||
if (enableExperiments)
|
readRockCompactionParameters_();
|
||||||
readRockCompactionParameters_();
|
|
||||||
|
|
||||||
// check the kind of region which is supposed to be used by checking the ROCKOPTS
|
// check the kind of region which is supposed to be used by checking the ROCKOPTS
|
||||||
// keyword. note that for some funny reason, the ROCK keyword uses PVTNUM by
|
// keyword. note that for some funny reason, the ROCK keyword uses PVTNUM by
|
||||||
|
@ -393,7 +393,6 @@ namespace MissingFeatures {
|
|||||||
"RADFIN4",
|
"RADFIN4",
|
||||||
"RHO",
|
"RHO",
|
||||||
"RKTRMDIR",
|
"RKTRMDIR",
|
||||||
"ROCKCOMP",
|
|
||||||
"ROCKOPTS",
|
"ROCKOPTS",
|
||||||
"ROCKTAB",
|
"ROCKTAB",
|
||||||
"RPTGRID",
|
"RPTGRID",
|
||||||
|
Loading…
Reference in New Issue
Block a user