Merge pull request #3625 from GitPaean/adding_unit_ppm

adding unit PPM
This commit is contained in:
Bård Skaflestad
2023-08-10 16:29:34 +02:00
committed by GitHub
4 changed files with 39 additions and 1 deletions

View File

@@ -83,6 +83,7 @@ namespace Opm {
salinity,
gas_oil_ratio_rate,
moles,
ppm,
_count // New entries must be added *before* this
};

View File

@@ -281,6 +281,7 @@ namespace Opm {
constexpr const double SurfaceTension = dyne/(centi*meter);
constexpr const double Energy = kilo*joule;
constexpr const double Moles = kilo*mol;
constexpr const double PPM = 1./mega;
}
@@ -313,6 +314,7 @@ namespace Opm {
constexpr const double SurfaceTension = dyne/(centi*meter);
constexpr const double Energy = btu;
constexpr const double Moles = kilo*pound*mol;
constexpr const double PPM = 1./mega;
}
@@ -346,6 +348,7 @@ namespace Opm {
constexpr const double SurfaceTension = dyne/(centi*meter);
constexpr const double Energy = joule;
constexpr const double Moles = mol;
constexpr const double PPM = 1./mega;
}
@@ -379,6 +382,7 @@ namespace Opm {
constexpr const double SurfaceTension = dyne/(centi*meter);
constexpr const double Energy = kilo*joule;
constexpr const double Moles = kilo*mol;
constexpr const double PPM = 1./mega;
}
}

View File

@@ -92,6 +92,7 @@ namespace {
0.0,
0.0,
0.0,
0.0,
};
static const double to_metric[] = {
@@ -137,6 +138,7 @@ namespace {
1 / Metric::Salinity,
1 / (1 / Metric::Time),
1 / Metric::Moles,
1 / Metric::PPM,
};
static const double from_metric[] = {
@@ -182,6 +184,7 @@ namespace {
Metric::Salinity,
1 / Metric::Time,
Metric::Moles,
Metric::PPM,
};
static constexpr const char* metric_names[static_cast<int>(UnitSystem::measure::_count)] = {
@@ -227,6 +230,7 @@ namespace {
"KG / SM3", /*salinity */
"SM3/SM3/DAY",
"KG-M",
"PPM", /*Parts per million */
};
static_assert(numElems(from_metric_offset) == static_cast<std::size_t>(UnitSystem::measure::_count),
@@ -292,6 +296,7 @@ namespace {
0.0,
0.0,
0.0,
0.0,
};
static const double to_field[] = {
@@ -337,6 +342,7 @@ namespace {
1 / Field::Salinity,
1 / (Field::GasSurfaceVolume / Field::LiquidSurfaceVolume / Field::Time),
1 / Field::Moles,
1 / Field::PPM,
};
static const double from_field[] = {
@@ -382,6 +388,7 @@ namespace {
Field::Salinity,
Field::GasSurfaceVolume / Field::LiquidSurfaceVolume / Field::Time,
Field::Moles,
Field::PPM,
};
static constexpr const char* field_names[static_cast<int>(UnitSystem::measure::_count)] = {
@@ -427,6 +434,7 @@ namespace {
"LB/STB", /*salinity */
"MSCF/STB/DAY",
"LB-M",
"PPM",
};
static_assert(numElems(from_field_offset) == static_cast<std::size_t>(UnitSystem::measure::_count),
@@ -492,6 +500,7 @@ namespace {
0.0,
0.0,
0.0,
0.0,
};
static const double to_lab[] = {
@@ -537,6 +546,7 @@ namespace {
1 / Lab::Salinity,
1 / (Lab::GasDissolutionFactor / Lab::Time),
1 / Lab::Moles,
1 / Lab::PPM,
};
static const double from_lab[] = {
@@ -582,6 +592,7 @@ namespace {
Lab::Salinity,
Lab::GasDissolutionFactor / Lab::Time,
Lab::Moles,
Lab::PPM,
};
static constexpr const char* lab_names[static_cast<int>(UnitSystem::measure::_count)] = {
@@ -627,6 +638,7 @@ namespace {
"G/SCC", /*salinity */
"SCC/SCC/HR",
"g-M",
"PPM",
};
static_assert(numElems(from_lab_offset) == static_cast<std::size_t>(UnitSystem::measure::_count),
@@ -692,6 +704,7 @@ namespace {
0.0,
0.0,
0.0,
0.0,
};
static const double to_pvt_m[] = {
@@ -737,6 +750,7 @@ namespace {
1 / PVT_M::Salinity,
1 / (PVT_M::GasSurfaceVolume / PVT_M::LiquidSurfaceVolume /PVT_M::Time),
1 / PVT_M::Moles,
1 / PVT_M::PPM,
};
static const double from_pvt_m[] = {
@@ -782,6 +796,7 @@ namespace {
PVT_M::Salinity,
PVT_M::GasSurfaceVolume / PVT_M::LiquidSurfaceVolume /PVT_M::Time,
PVT_M::Moles,
PVT_M::PPM,
};
static constexpr const char* pvt_m_names[static_cast<int>(UnitSystem::measure::_count)] = {
@@ -827,6 +842,7 @@ namespace {
"KG/SM3", /*salinity */
"SM3/SM3/DAY",
"KG-M",
"PPM",
};
static_assert(numElems(from_pvt_m_offset) == static_cast<std::size_t>(UnitSystem::measure::_count),
@@ -892,6 +908,7 @@ namespace {
0.0,
0.0,
0.0,
0.0,
};
static const double to_input[] = {
@@ -937,6 +954,7 @@ namespace {
1,
1,
1,
1,
};
static const double from_input[] = {
@@ -982,6 +1000,7 @@ namespace {
1,
1,
1,
1,
};
static constexpr const char* input_names[static_cast<int>(UnitSystem::measure::_count)] = {
@@ -1026,7 +1045,8 @@ namespace {
"KG/SM3", /*polymer density */
"KG/SM3", /*salinity */
"SM3/SM3/DAY",
"g-M"
"g-M",
"PPM"
};
static_assert(numElems(from_input_offset) == static_cast<std::size_t>(UnitSystem::measure::_count),
@@ -1092,6 +1112,7 @@ namespace {
this->addDimension("Timestep" , 1.0);
this->addDimension("SurfaceTension" , 1.0);
this->addDimension("Energy", 1.0);
this->addDimension("PPM", 1.0);
this->addDimension("ContextDependent", 1.0);
}
@@ -1129,6 +1150,7 @@ namespace {
this->addDimension("Timestep" , PVT_M::Timestep);
this->addDimension("SurfaceTension" , PVT_M::SurfaceTension);
this->addDimension("Energy", PVT_M::Energy);
this->addDimension("PPM", PVT_M::PPM);
this->addDimension("ContextDependent", std::numeric_limits<double>::quiet_NaN());
}
@@ -1166,6 +1188,7 @@ namespace {
this->addDimension("Timestep", Lab::Timestep);
this->addDimension("SurfaceTension" , Lab::SurfaceTension);
this->addDimension("Energy", Lab::Energy);
this->addDimension("PPM", Lab::PPM);
this->addDimension("ContextDependent", std::numeric_limits<double>::quiet_NaN());
}
@@ -1204,6 +1227,7 @@ namespace {
this->addDimension("Timestep" , Metric::Timestep);
this->addDimension("SurfaceTension" , Metric::SurfaceTension);
this->addDimension("Energy", Metric::Energy);
this->addDimension("PPM", Metric::PPM);
this->addDimension("ContextDependent", std::numeric_limits<double>::quiet_NaN());
}
@@ -1240,6 +1264,7 @@ namespace {
this->addDimension("Timestep", Field::Timestep);
this->addDimension("SurfaceTension" , Field::SurfaceTension);
this->addDimension("Energy", Field::Energy);
this->addDimension("PPM", Field::PPM);
this->addDimension("ContextDependent", std::numeric_limits<double>::quiet_NaN());
}

View File

@@ -308,6 +308,7 @@ BOOST_AUTO_TEST_CASE(METRIC_UNITS)
BOOST_CHECK_CLOSE( metric.to_si( Meas::icd_strength, 1.0), 7.46496e+14, 1e-10);
BOOST_CHECK_CLOSE( metric.to_si( Meas::gas_oil_ratio_rate, 1.0), 1.1574074074074073e-05, 1.0e-10 );
BOOST_CHECK_CLOSE( metric.to_si( Meas::moles, 1.0), 1000, 1.0e-10 );
BOOST_CHECK_CLOSE( metric.to_si( Meas::ppm, 1.0 ) , 1.0e-6 , 1.0e-10 );
// ----------------------------------------------------------------
// SI -> METRIC
@@ -348,6 +349,7 @@ BOOST_AUTO_TEST_CASE(METRIC_UNITS)
BOOST_CHECK_CLOSE( metric.from_si( Meas::icd_strength, 7.46496e+14), 1.0, 1e-10);
BOOST_CHECK_CLOSE( metric.from_si( Meas::gas_oil_ratio_rate, 1.0), 86.400e3, 1.0e-10 );
BOOST_CHECK_CLOSE( metric.from_si( Meas::moles, 1), 0.001, 1.0e-10 );
BOOST_CHECK_CLOSE( metric.from_si( Meas::ppm, 1.0 ) , 1.0e6 , 1.0e-10 );
}
@@ -398,6 +400,7 @@ BOOST_AUTO_TEST_CASE(FIELD_UNITS)
BOOST_CHECK_CLOSE( field.to_si( Meas::icd_strength , 1.0 ) , 6.418842091749854e+16 , 1.0e-10 );
BOOST_CHECK_CLOSE( field.to_si( Meas::gas_oil_ratio_rate, 1.0), 1.1574074074074073e-05*178.1076066790352, 1.0e-10 );
BOOST_CHECK_CLOSE( field.to_si( Meas::moles, 1.0), 453.59237, 1.0e-5 );
BOOST_CHECK_CLOSE( field.to_si( Meas::ppm, 1.0 ) , 1.0e-6 , 1.0e-10 );
// ----------------------------------------------------------------
@@ -438,6 +441,7 @@ BOOST_AUTO_TEST_CASE(FIELD_UNITS)
BOOST_CHECK_CLOSE( field.from_si( Meas::icd_strength , 6.418842091749854e+16 ) , 1.0 , 1.0e-10 );
BOOST_CHECK_CLOSE( field.from_si( Meas::gas_oil_ratio_rate, 1.0), 86.400e3*5.614583333333335e-03, 1.0e-10 );
BOOST_CHECK_CLOSE( field.from_si( Meas::moles, 1.0), 0.0022046226, 1.0e-5 );
BOOST_CHECK_CLOSE( field.from_si( Meas::ppm, 1.0 ) , 1.0e6 , 1.0e-10 );
}
@@ -488,6 +492,7 @@ BOOST_AUTO_TEST_CASE(LAB_UNITS)
BOOST_CHECK_CLOSE( lab.to_si( Meas::icd_strength , 1.0 ) , 1.313172e+24 , 1.0e-10 );
BOOST_CHECK_CLOSE( lab.to_si( Meas::gas_oil_ratio_rate, 1.0), 2.777777777777778e-4, 1.0e-10 );
BOOST_CHECK_CLOSE( lab.to_si( Meas::moles, 1), 1, 1.0e-10 );
BOOST_CHECK_CLOSE( lab.to_si( Meas::ppm, 1.0 ) , 1.0e-6 , 1.0e-10 );
// ----------------------------------------------------------------
@@ -529,6 +534,7 @@ BOOST_AUTO_TEST_CASE(LAB_UNITS)
BOOST_CHECK_CLOSE( lab.from_si( Meas::icd_strength , 1.0 ) , 7.615148662932201e-25 , 1.0e-10 );
BOOST_CHECK_CLOSE( lab.from_si( Meas::gas_oil_ratio_rate, 1.0), 3.6e3, 1.0e-10 );
BOOST_CHECK_CLOSE( lab.from_si( Meas::moles, 1), 1, 1.0e-10 );
BOOST_CHECK_CLOSE( lab.from_si( Meas::ppm, 1.0 ) , 1.0e6 , 1.0e-10 );
}
@@ -579,6 +585,7 @@ BOOST_AUTO_TEST_CASE(PVT_M_UNITS)
BOOST_CHECK_CLOSE( pvt_m.to_si( Meas::icd_strength , 1.0 ) , 7.56387072e+14 , 1.0e-10 );
BOOST_CHECK_CLOSE( pvt_m.to_si( Meas::gas_oil_ratio_rate, 1.0), 1.1574074074074073e-05, 1.0e-10 );
BOOST_CHECK_CLOSE( pvt_m.to_si( Meas::moles, 1), 1000, 1.0e-10 );
BOOST_CHECK_CLOSE( pvt_m.to_si( Meas::ppm, 1.0 ) , 1.0e-6 , 1.0e-10 );
// ----------------------------------------------------------------
@@ -620,6 +627,7 @@ BOOST_AUTO_TEST_CASE(PVT_M_UNITS)
BOOST_CHECK_CLOSE( pvt_m.from_si( Meas::icd_strength , 1.0 ) , 1.322074420647951e-15 , 1.0e-10 );
BOOST_CHECK_CLOSE( pvt_m.from_si( Meas::gas_oil_ratio_rate, 1.0), 86.400e3, 1.0e-10 );
BOOST_CHECK_CLOSE( pvt_m.from_si( Meas::moles, 1), 0.001, 1.0e-10 );
BOOST_CHECK_CLOSE( pvt_m.from_si( Meas::ppm, 1), 1.e6, 1.0e-10 );
}