mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
treating permeability reduction via mobility term
This commit is contained in:
parent
90a04a351b
commit
658834a261
@ -266,12 +266,7 @@ public:
|
|||||||
if (!enableBrine)
|
if (!enableBrine)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
static unsigned contiWaterEqIdx, contiGasEqIdx, contiOilEqIdx;
|
|
||||||
if(gasEnabled) { contiGasEqIdx = Indices::conti0EqIdx + Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx); }
|
|
||||||
if(oilEnabled) { contiOilEqIdx = Indices::conti0EqIdx + Indices::canonicalToActiveComponentIndex(FluidSystem::oilCompIdx); }
|
|
||||||
|
|
||||||
const auto& extQuants = elemCtx.extensiveQuantities(scvfIdx, timeIdx);
|
const auto& extQuants = elemCtx.extensiveQuantities(scvfIdx, timeIdx);
|
||||||
const auto& intQuants = elemCtx.intensiveQuantities(scvfIdx, timeIdx);
|
|
||||||
|
|
||||||
const unsigned upIdx = extQuants.upstreamIndex(FluidSystem::waterPhaseIdx);
|
const unsigned upIdx = extQuants.upstreamIndex(FluidSystem::waterPhaseIdx);
|
||||||
const unsigned inIdx = extQuants.interiorIndex();
|
const unsigned inIdx = extQuants.interiorIndex();
|
||||||
@ -282,28 +277,12 @@ public:
|
|||||||
extQuants.volumeFlux(waterPhaseIdx)
|
extQuants.volumeFlux(waterPhaseIdx)
|
||||||
*up.fluidState().invB(waterPhaseIdx)
|
*up.fluidState().invB(waterPhaseIdx)
|
||||||
*up.fluidState().saltConcentration();
|
*up.fluidState().saltConcentration();
|
||||||
|
|
||||||
if (enableSaltPrecipitation) {
|
|
||||||
// modify fluxes for mobility change
|
|
||||||
flux[contiBrineEqIdx] *= intQuants.permFactor();
|
|
||||||
flux[contiWaterEqIdx] *= intQuants.permFactor();
|
|
||||||
if(gasEnabled) { flux[contiGasEqIdx] *= intQuants.permFactor(); }
|
|
||||||
if(oilEnabled) { flux[contiOilEqIdx] *= intQuants.permFactor(); }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
flux[contiBrineEqIdx] =
|
flux[contiBrineEqIdx] =
|
||||||
extQuants.volumeFlux(waterPhaseIdx)
|
extQuants.volumeFlux(waterPhaseIdx)
|
||||||
*decay<Scalar>(up.fluidState().invB(waterPhaseIdx))
|
*decay<Scalar>(up.fluidState().invB(waterPhaseIdx))
|
||||||
*decay<Scalar>(up.fluidState().saltConcentration());
|
*decay<Scalar>(up.fluidState().saltConcentration());
|
||||||
|
|
||||||
if (enableSaltPrecipitation) {
|
|
||||||
// modify fluxes for mobility change
|
|
||||||
flux[contiBrineEqIdx] *= decay<Scalar>(intQuants.permFactor());
|
|
||||||
flux[contiWaterEqIdx] *= decay<Scalar>(intQuants.permFactor());
|
|
||||||
if(gasEnabled) { flux[contiGasEqIdx] *= decay<Scalar>(intQuants.permFactor()); }
|
|
||||||
if(oilEnabled) { flux[contiOilEqIdx] *= decay<Scalar>(intQuants.permFactor()); }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,7 +472,13 @@ public:
|
|||||||
const auto& permfactTable = BrineModule::permfactTable(elemCtx, dofIdx, timeIdx);
|
const auto& permfactTable = BrineModule::permfactTable(elemCtx, dofIdx, timeIdx);
|
||||||
|
|
||||||
permFactor_ = permfactTable.eval(scalarValue(porosityFactor));
|
permFactor_ = permfactTable.eval(scalarValue(porosityFactor));
|
||||||
}
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
|
if (!FluidSystem::phaseIsActive(phaseIdx))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
asImp_().mobility_[phaseIdx] *= permFactor_;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Evaluation& saltConcentration() const
|
const Evaluation& saltConcentration() const
|
||||||
|
Loading…
Reference in New Issue
Block a user