mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Use class based enums for VFP flow types
This commit is contained in:
parent
27b4dabd6a
commit
6383f3c1ac
@ -74,21 +74,19 @@ inline EvalWell zeroIfNanInf(const EvalWell& value) {
|
|||||||
* @return Production rate of oil, gas or liquid.
|
* @return Production rate of oil, gas or liquid.
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static T getFlo(const T& aqua, const T& liquid, const T& vapour,
|
static T getFlo(const T& aqua, const T& liquid, const T& vapour, VFPProdTable::FLO_TYPE type) {
|
||||||
const VFPProdTable::FLO_TYPE& type) {
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case VFPProdTable::FLO_OIL:
|
case VFPProdTable::FLO_TYPE::FLO_OIL:
|
||||||
//Oil = liquid phase
|
//Oil = liquid phase
|
||||||
return liquid;
|
return liquid;
|
||||||
case VFPProdTable::FLO_LIQ:
|
case VFPProdTable::FLO_TYPE::FLO_LIQ:
|
||||||
//Liquid = aqua + liquid phases
|
//Liquid = aqua + liquid phases
|
||||||
return aqua + liquid;
|
return aqua + liquid;
|
||||||
case VFPProdTable::FLO_GAS:
|
case VFPProdTable::FLO_TYPE::FLO_GAS:
|
||||||
//Gas = vapor phase
|
//Gas = vapor phase
|
||||||
return vapour;
|
return vapour;
|
||||||
case VFPProdTable::FLO_INVALID: //Intentional fall-through
|
default:
|
||||||
default:
|
throw std::logic_error("Invalid FLO_TYPE");
|
||||||
OPM_THROW(std::logic_error, "Invalid FLO_TYPE: '" << type << "'");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,21 +98,19 @@ static T getFlo(const T& aqua, const T& liquid, const T& vapour,
|
|||||||
* @return Production rate of oil, gas or liquid.
|
* @return Production rate of oil, gas or liquid.
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static T getFlo(const T& aqua, const T& liquid, const T& vapour,
|
static T getFlo(const T& aqua, const T& liquid, const T& vapour, VFPInjTable::FLO_TYPE type) {
|
||||||
const VFPInjTable::FLO_TYPE& type) {
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case VFPInjTable::FLO_OIL:
|
case VFPInjTable::FLO_TYPE::FLO_OIL:
|
||||||
//Oil = liquid phase
|
//Oil = liquid phase
|
||||||
return liquid;
|
return liquid;
|
||||||
case VFPInjTable::FLO_WAT:
|
case VFPInjTable::FLO_TYPE::FLO_WAT:
|
||||||
//Liquid = aqua phase
|
//Liquid = aqua phase
|
||||||
return aqua;
|
return aqua;
|
||||||
case VFPInjTable::FLO_GAS:
|
case VFPInjTable::FLO_TYPE::FLO_GAS:
|
||||||
//Gas = vapor phase
|
//Gas = vapor phase
|
||||||
return vapour;
|
return vapour;
|
||||||
case VFPInjTable::FLO_INVALID: //Intentional fall-through
|
default:
|
||||||
default:
|
throw std::logic_error("Invalid FLO_TYPE");
|
||||||
OPM_THROW(std::logic_error, "Invalid FLO_TYPE: '" << type << "'");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,23 +125,22 @@ static T getFlo(const T& aqua, const T& liquid, const T& vapour,
|
|||||||
* @return Production rate of oil, gas or liquid.
|
* @return Production rate of oil, gas or liquid.
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static T getWFR(const T& aqua, const T& liquid, const T& vapour,
|
static T getWFR(const T& aqua, const T& liquid, const T& vapour, VFPProdTable::WFR_TYPE type) {
|
||||||
const VFPProdTable::WFR_TYPE& type) {
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case VFPProdTable::WFR_WOR: {
|
case VFPProdTable::WFR_TYPE::WFR_WOR:
|
||||||
//Water-oil ratio = water / oil
|
//Water-oil ratio = water / oil
|
||||||
T wor = aqua / liquid;
|
return zeroIfNanInf(aqua/liquid);
|
||||||
return zeroIfNanInf(wor);
|
|
||||||
}
|
case VFPProdTable::WFR_TYPE::WFR_WCT:
|
||||||
case VFPProdTable::WFR_WCT:
|
//Water cut = water / (water + oil)
|
||||||
//Water cut = water / (water + oil)
|
return zeroIfNanInf(aqua / (aqua + liquid));
|
||||||
return zeroIfNanInf(aqua / (aqua + liquid));
|
|
||||||
case VFPProdTable::WFR_WGR:
|
case VFPProdTable::WFR_TYPE::WFR_WGR:
|
||||||
//Water-gas ratio = water / gas
|
//Water-gas ratio = water / gas
|
||||||
return zeroIfNanInf(aqua / vapour);
|
return zeroIfNanInf(aqua / vapour);
|
||||||
case VFPProdTable::WFR_INVALID: //Intentional fall-through
|
|
||||||
default:
|
default:
|
||||||
OPM_THROW(std::logic_error, "Invalid WFR_TYPE: '" << type << "'");
|
throw std::logic_error("Invalid WFR_TYPE");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,21 +154,19 @@ static T getWFR(const T& aqua, const T& liquid, const T& vapour,
|
|||||||
* @return Production rate of oil, gas or liquid.
|
* @return Production rate of oil, gas or liquid.
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static T getGFR(const T& aqua, const T& liquid, const T& vapour,
|
static T getGFR(const T& aqua, const T& liquid, const T& vapour, VFPProdTable::GFR_TYPE type) {
|
||||||
const VFPProdTable::GFR_TYPE& type) {
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case VFPProdTable::GFR_GOR:
|
case VFPProdTable::GFR_TYPE::GFR_GOR:
|
||||||
// Gas-oil ratio = gas / oil
|
// Gas-oil ratio = gas / oil
|
||||||
return zeroIfNanInf(vapour / liquid);
|
return zeroIfNanInf(vapour / liquid);
|
||||||
case VFPProdTable::GFR_GLR:
|
case VFPProdTable::GFR_TYPE::GFR_GLR:
|
||||||
// Gas-liquid ratio = gas / (oil + water)
|
// Gas-liquid ratio = gas / (oil + water)
|
||||||
return zeroIfNanInf(vapour / (liquid + aqua));
|
return zeroIfNanInf(vapour / (liquid + aqua));
|
||||||
case VFPProdTable::GFR_OGR:
|
case VFPProdTable::GFR_TYPE::GFR_OGR:
|
||||||
// Oil-gas ratio = oil / gas
|
// Oil-gas ratio = oil / gas
|
||||||
return zeroIfNanInf(liquid / vapour);
|
return zeroIfNanInf(liquid / vapour);
|
||||||
case VFPProdTable::GFR_INVALID: //Intentional fall-through
|
default:
|
||||||
default:
|
throw std::logic_error("Invalid GFR_TYPE");
|
||||||
OPM_THROW(std::logic_error, "Invalid GFR_TYPE: '" << type << "'");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,10 +194,10 @@ struct TrivialFixture {
|
|||||||
inline void initProperties() {
|
inline void initProperties() {
|
||||||
table.reset(new Opm::VFPProdTable(1,
|
table.reset(new Opm::VFPProdTable(1,
|
||||||
1000.0,
|
1000.0,
|
||||||
Opm::VFPProdTable::FLO_OIL,
|
Opm::VFPProdTable::FLO_TYPE::FLO_OIL,
|
||||||
Opm::VFPProdTable::WFR_WOR,
|
Opm::VFPProdTable::WFR_TYPE::WFR_WOR,
|
||||||
Opm::VFPProdTable::GFR_GOR,
|
Opm::VFPProdTable::GFR_TYPE::GFR_GOR,
|
||||||
Opm::VFPProdTable::ALQ_UNDEF,
|
Opm::VFPProdTable::ALQ_TYPE::ALQ_UNDEF,
|
||||||
flo_axis,
|
flo_axis,
|
||||||
thp_axis,
|
thp_axis,
|
||||||
wfr_axis,
|
wfr_axis,
|
||||||
@ -231,7 +231,7 @@ private:
|
|||||||
int nz;
|
int nz;
|
||||||
int nu;
|
int nu;
|
||||||
int nv;
|
int nv;
|
||||||
Opm::VFPProdTable::array_type data;
|
std::vector<double> data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user