mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Saturation Functions: Add Public Query for Phase Saturations
Simplifies retrieving the phase saturation values in the context of computing phase fluxes at cell interfaces.
This commit is contained in:
parent
5347c475be
commit
c15432d1b2
@ -2578,3 +2578,31 @@ getSatFuncCurve(const std::vector<RawCurve>& func,
|
|||||||
{
|
{
|
||||||
return this->pImpl_->getSatFuncCurve(func, activeCell, scaling);
|
return this->pImpl_->getSatFuncCurve(func, activeCell, scaling);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =====================================================================
|
||||||
|
|
||||||
|
std::vector<double>
|
||||||
|
Opm::phaseSaturation(const ECLGraph& G,
|
||||||
|
const ECLRestartData& rstrt,
|
||||||
|
const ECLPhaseIndex phase)
|
||||||
|
{
|
||||||
|
switch (phase) {
|
||||||
|
case ECLPhaseIndex::Aqua:
|
||||||
|
return water_saturation(G, rstrt);
|
||||||
|
|
||||||
|
case ECLPhaseIndex::Liquid: {
|
||||||
|
const auto sg = gas_saturation(G, rstrt);
|
||||||
|
const auto sw = water_saturation(G, rstrt);
|
||||||
|
|
||||||
|
return oil_saturation(sg, sw, G, rstrt);
|
||||||
|
}
|
||||||
|
|
||||||
|
case ECLPhaseIndex::Vapour:
|
||||||
|
return gas_saturation(G, rstrt);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw std::invalid_argument {
|
||||||
|
"Unsupported Phase Index " +
|
||||||
|
std::to_string(static_cast<std::size_t>(phase))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@ -41,6 +41,34 @@ namespace Opm {
|
|||||||
class ECLRestartData;
|
class ECLRestartData;
|
||||||
class ECLInitFileData;
|
class ECLInitFileData;
|
||||||
|
|
||||||
|
/// Extract phase saturation of single phase for all active cells in all
|
||||||
|
/// grids.
|
||||||
|
///
|
||||||
|
/// Handles the case of oil saturation being explicitly stored in a
|
||||||
|
/// result set or implicitly defined from the gas and/or water
|
||||||
|
/// saturations.
|
||||||
|
///
|
||||||
|
/// \param[in] G Connected topology of current model's active cells.
|
||||||
|
/// Needed to linearise phase saturations (e.g., SOIL) that are
|
||||||
|
/// distributed on local grids to all of the model's active cells
|
||||||
|
/// (\code member function G.rawLinearisedCellData() \endcode).
|
||||||
|
///
|
||||||
|
/// \param[in] rstrt ECLIPSE restart vectors. Result set view
|
||||||
|
/// assumed to be positioned at a particular report step of
|
||||||
|
/// interest.
|
||||||
|
///
|
||||||
|
/// \param[in] phase Phase for which to extract the phase saturation
|
||||||
|
/// values.
|
||||||
|
///
|
||||||
|
/// \return Phase saturation values of active phase \p phase for all
|
||||||
|
/// active cells in model \p G. Empty if phase \p phase is not
|
||||||
|
/// actually active in the current result set or if the saturation
|
||||||
|
/// values are not stored on the current report/restart step.
|
||||||
|
std::vector<double>
|
||||||
|
phaseSaturation(const ECLGraph& G,
|
||||||
|
const ECLRestartData& rstrt,
|
||||||
|
const ECLPhaseIndex phase);
|
||||||
|
|
||||||
/// Gateway to engine for computing relative permeability values based
|
/// Gateway to engine for computing relative permeability values based
|
||||||
/// on tabulated saturation functions in ECL output.
|
/// on tabulated saturation functions in ECL output.
|
||||||
class ECLSaturationFunc
|
class ECLSaturationFunc
|
||||||
|
Loading…
Reference in New Issue
Block a user