mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
summary for immobile free-phase at saturations for which the nonwetting relative permeability equals zero
This commit is contained in:
@@ -106,6 +106,12 @@ std::string EclString(const Opm::Inplace::Phase phase)
|
|||||||
case Opm::Inplace::Phase::CO2InGasPhaseMob:
|
case Opm::Inplace::Phase::CO2InGasPhaseMob:
|
||||||
return "GCDM";
|
return "GCDM";
|
||||||
|
|
||||||
|
case Opm::Inplace::Phase::CO2InGasPhaseInMobKrg:
|
||||||
|
return "GKDI";
|
||||||
|
|
||||||
|
case Opm::Inplace::Phase::CO2InGasPhaseMobKrg:
|
||||||
|
return "GKDM";
|
||||||
|
|
||||||
case Opm::Inplace::Phase::WaterInGasPhase:
|
case Opm::Inplace::Phase::WaterInGasPhase:
|
||||||
return "WIPG";
|
return "WIPG";
|
||||||
|
|
||||||
@@ -127,6 +133,12 @@ std::string EclString(const Opm::Inplace::Phase phase)
|
|||||||
case Opm::Inplace::Phase::CO2MassInGasPhaseMob:
|
case Opm::Inplace::Phase::CO2MassInGasPhaseMob:
|
||||||
return "GMMO";
|
return "GMMO";
|
||||||
|
|
||||||
|
case Opm::Inplace::Phase::CO2MassInGasPhaseInMobKrg:
|
||||||
|
return "GKTR";
|
||||||
|
|
||||||
|
case Opm::Inplace::Phase::CO2MassInGasPhaseMobKrg:
|
||||||
|
return "GKMO";
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw std::logic_error {
|
throw std::logic_error {
|
||||||
fmt::format("Phase enum with integer value: "
|
fmt::format("Phase enum with integer value: "
|
||||||
|
|||||||
@@ -964,6 +964,8 @@ fipUnitConvert_(std::unordered_map<Inplace::Phase, Scalar>& fip) const
|
|||||||
{Inplace::Phase::CO2InWaterPhase, M::moles},
|
{Inplace::Phase::CO2InWaterPhase, M::moles},
|
||||||
{Inplace::Phase::CO2InGasPhaseInMob, M::moles},
|
{Inplace::Phase::CO2InGasPhaseInMob, M::moles},
|
||||||
{Inplace::Phase::CO2InGasPhaseMob, M::moles},
|
{Inplace::Phase::CO2InGasPhaseMob, M::moles},
|
||||||
|
{Inplace::Phase::CO2InGasPhaseInMobKrg, M::moles},
|
||||||
|
{Inplace::Phase::CO2InGasPhaseMobKrg, M::moles},
|
||||||
{Inplace::Phase::WaterInWaterPhase, M::liquid_surface_volume},
|
{Inplace::Phase::WaterInWaterPhase, M::liquid_surface_volume},
|
||||||
{Inplace::Phase::WaterInGasPhase, M::liquid_surface_volume},
|
{Inplace::Phase::WaterInGasPhase, M::liquid_surface_volume},
|
||||||
{Inplace::Phase::CO2Mass, M::mass},
|
{Inplace::Phase::CO2Mass, M::mass},
|
||||||
@@ -971,6 +973,8 @@ fipUnitConvert_(std::unordered_map<Inplace::Phase, Scalar>& fip) const
|
|||||||
{Inplace::Phase::CO2MassInGasPhase, M::mass},
|
{Inplace::Phase::CO2MassInGasPhase, M::mass},
|
||||||
{Inplace::Phase::CO2MassInGasPhaseInMob, M::mass},
|
{Inplace::Phase::CO2MassInGasPhaseInMob, M::mass},
|
||||||
{Inplace::Phase::CO2MassInGasPhaseMob, M::mass},
|
{Inplace::Phase::CO2MassInGasPhaseMob, M::mass},
|
||||||
|
{Inplace::Phase::CO2MassInGasPhaseInMobKrg, M::mass},
|
||||||
|
{Inplace::Phase::CO2MassInGasPhaseMobKrg, M::mass},
|
||||||
};
|
};
|
||||||
|
|
||||||
for (auto& [phase, value] : fip) {
|
for (auto& [phase, value] : fip) {
|
||||||
|
|||||||
@@ -1441,7 +1441,11 @@ private:
|
|||||||
!this->fip_[Inplace::Phase::CO2InGasPhaseMob].empty() ||
|
!this->fip_[Inplace::Phase::CO2InGasPhaseMob].empty() ||
|
||||||
!this->fip_[Inplace::Phase::CO2MassInGasPhaseInMob].empty() ||
|
!this->fip_[Inplace::Phase::CO2MassInGasPhaseInMob].empty() ||
|
||||||
!this->fip_[Inplace::Phase::CO2MassInGasPhaseMob].empty() ||
|
!this->fip_[Inplace::Phase::CO2MassInGasPhaseMob].empty() ||
|
||||||
!this->fip_[Inplace::Phase::CO2Mass].empty()))
|
!this->fip_[Inplace::Phase::CO2Mass].empty() ||
|
||||||
|
!this->fip_[Inplace::Phase::CO2InGasPhaseInMobKrg].empty() ||
|
||||||
|
!this->fip_[Inplace::Phase::CO2InGasPhaseMobKrg].empty() ||
|
||||||
|
!this->fip_[Inplace::Phase::CO2MassInGasPhaseInMobKrg].empty() ||
|
||||||
|
!this->fip_[Inplace::Phase::CO2MassInGasPhaseMobKrg].empty()))
|
||||||
{
|
{
|
||||||
this->updateCO2InGas(globalDofIdx, pv, fs);
|
this->updateCO2InGas(globalDofIdx, pv, fs);
|
||||||
}
|
}
|
||||||
@@ -1619,6 +1623,24 @@ private:
|
|||||||
this->fip_[Inplace::Phase::CO2InGasPhaseMob][globalDofIdx] = mobileGas;
|
this->fip_[Inplace::Phase::CO2InGasPhaseMob][globalDofIdx] = mobileGas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!this->fip_[Inplace::Phase::CO2InGasPhaseInMobKrg].empty()) {
|
||||||
|
if (sgcr >= sg) {
|
||||||
|
const Scalar imMobileGasKrg = massGas / mM * sg;
|
||||||
|
this->fip_[Inplace::Phase::CO2InGasPhaseInMobKrg][globalDofIdx] = imMobileGasKrg;
|
||||||
|
} else {
|
||||||
|
this->fip_[Inplace::Phase::CO2InGasPhaseInMobKrg][globalDofIdx] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this->fip_[Inplace::Phase::CO2InGasPhaseMobKrg].empty()) {
|
||||||
|
if (sg > sgcr) {
|
||||||
|
const Scalar mobileGasKrg = massGas / mM * sg;
|
||||||
|
this->fip_[Inplace::Phase::CO2InGasPhaseMobKrg][globalDofIdx] = mobileGasKrg;
|
||||||
|
} else {
|
||||||
|
this->fip_[Inplace::Phase::CO2InGasPhaseMobKrg][globalDofIdx] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!this->fip_[Inplace::Phase::CO2MassInGasPhaseInMob].empty()) {
|
if (!this->fip_[Inplace::Phase::CO2MassInGasPhaseInMob].empty()) {
|
||||||
const Scalar imMobileMassGas = massGas * std::min(sgcr , sg);
|
const Scalar imMobileMassGas = massGas * std::min(sgcr , sg);
|
||||||
this->fip_[Inplace::Phase::CO2MassInGasPhaseInMob][globalDofIdx] = imMobileMassGas;
|
this->fip_[Inplace::Phase::CO2MassInGasPhaseInMob][globalDofIdx] = imMobileMassGas;
|
||||||
@@ -1628,6 +1650,24 @@ private:
|
|||||||
const Scalar mobileMassGas = massGas * std::max(0.0, sg - sgcr);
|
const Scalar mobileMassGas = massGas * std::max(0.0, sg - sgcr);
|
||||||
this->fip_[Inplace::Phase::CO2MassInGasPhaseMob][globalDofIdx] = mobileMassGas;
|
this->fip_[Inplace::Phase::CO2MassInGasPhaseMob][globalDofIdx] = mobileMassGas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!this->fip_[Inplace::Phase::CO2MassInGasPhaseInMobKrg].empty()) {
|
||||||
|
if (sgcr >= sg) {
|
||||||
|
const Scalar imMobileMassGasKrg = massGas * sg;
|
||||||
|
this->fip_[Inplace::Phase::CO2MassInGasPhaseInMobKrg][globalDofIdx] = imMobileMassGasKrg;
|
||||||
|
} else {
|
||||||
|
this->fip_[Inplace::Phase::CO2MassInGasPhaseInMobKrg][globalDofIdx] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this->fip_[Inplace::Phase::CO2MassInGasPhaseMobKrg].empty()) {
|
||||||
|
if (sg > sgcr) {
|
||||||
|
const Scalar mobileMassGasKrg = massGas * sg;
|
||||||
|
this->fip_[Inplace::Phase::CO2MassInGasPhaseMobKrg][globalDofIdx] = mobileMassGasKrg;
|
||||||
|
} else {
|
||||||
|
this->fip_[Inplace::Phase::CO2MassInGasPhaseMobKrg][globalDofIdx] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename FluidState>
|
template <typename FluidState>
|
||||||
|
|||||||
@@ -87,6 +87,15 @@ std::string initDamarisXmlFile()
|
|||||||
<variable name="GIPG" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
<variable name="GIPG" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
<variable name="GIPL" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
<variable name="GIPL" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
<variable name="GIPR" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
<variable name="GIPR" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GKDI" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GKDM" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GKMO" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GKTR" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GMDS" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GMGP" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GMIP" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GMMO" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
<variable name="GMTR" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
<variable name="HTOF" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
<variable name="HTOF" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
<variable name="OIP" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
<variable name="OIP" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
<variable name="OIPG" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
<variable name="OIPG" layout="zonal_layout_usmesh" type="scalar" visualizable="true" mesh="#" unit="" centering="zonal" time-varying="true" select-file="GLOBAL_CELL_INDEX" store="#" script="#" />
|
||||||
|
|||||||
Reference in New Issue
Block a user