Restart: Save/Restore Historical Cumulative Production
This commit adds support for saving and restoring cumulative production quantities like WOPTH, GWPTH, FGPTH, GGITH, and WWITH. While here, also cater to the case of wells alternating between injecting gas and injecting water. This means that we'll save and restore cumulative gas/water injection for all injectors, irrespective of current injecting phase. Update unit tests accordingly.
This commit is contained in:
parent
169ec76605
commit
e685eccdc9
@ -89,12 +89,16 @@ namespace Opm { namespace RestartIO { namespace Helpers {
|
||||
const std::vector<std::string> restart_group_keys = {"GOPP", "GWPP", "GOPR", "GWPR", "GGPR",
|
||||
"GVPR", "GWIR", "GGIR", "GWCT", "GGOR",
|
||||
"GOPT", "GWPT", "GGPT", "GVPT", "GWIT",
|
||||
"GGIT"};
|
||||
"GGIT",
|
||||
"GOPTH", "GWPTH", "GGPTH",
|
||||
"GWITH", "GGITH"};
|
||||
|
||||
const std::vector<std::string> restart_field_keys = {"FOPP", "FWPP", "FOPR", "FWPR", "FGPR",
|
||||
"FVPR", "FWIR", "FGIR", "FWCT", "FGOR",
|
||||
"FOPT", "FWPT", "FGPT", "FVPT", "FWIT",
|
||||
"FGIT"};
|
||||
"FGIT",
|
||||
"FOPTH", "FWPTH", "FGPTH",
|
||||
"FWITH", "FGITH"};
|
||||
|
||||
const std::map<std::string, size_t> groupKeyToIndex = {
|
||||
{"GOPR", 0},
|
||||
@ -113,6 +117,11 @@ namespace Opm { namespace RestartIO { namespace Helpers {
|
||||
{"GGIT", 16},
|
||||
{"GOPP", 22},
|
||||
{"GWPP", 23},
|
||||
{"GOPTH", 135},
|
||||
{"GWPTH", 139},
|
||||
{"GWITH", 140},
|
||||
{"GGPTH", 143},
|
||||
{"GGITH", 144},
|
||||
};
|
||||
|
||||
const std::map<std::string, size_t> fieldKeyToIndex = {
|
||||
@ -132,6 +141,11 @@ namespace Opm { namespace RestartIO { namespace Helpers {
|
||||
{"FGIT", 16},
|
||||
{"FOPP", 22},
|
||||
{"FWPP", 23},
|
||||
{"FOPTH", 135},
|
||||
{"FWPTH", 139},
|
||||
{"FWITH", 140},
|
||||
{"FGPTH", 143},
|
||||
{"FGITH", 144},
|
||||
};
|
||||
|
||||
private:
|
||||
|
@ -48,6 +48,17 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
|
||||
|
||||
OilPrPot = 22, // Group's oil production potential
|
||||
WatPrPot = 23, // Group's water production potential
|
||||
|
||||
HistOilPrTotal = 135, // Group's total cumulative oil
|
||||
// production (observed/historical rates)
|
||||
HistWatPrTotal = 139, // Group's total cumulative water
|
||||
// production (observed/historical rates)
|
||||
HistWatInjTotal = 140, // Group's total cumulative water
|
||||
// injection (observed/historical rates)
|
||||
HistGasPrTotal = 143, // Group's total cumulative gas
|
||||
// production (observed/historical rates)
|
||||
HistGasInjTotal = 144, // Group's total cumulative gas injection
|
||||
// (observed/historical rates)
|
||||
};
|
||||
} // XGroup
|
||||
|
||||
|
@ -116,10 +116,15 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
|
||||
BHPTarget = 6, // Well's bottom hole pressure target
|
||||
|
||||
DatumDepth = 9, // Well's reference depth for BHP
|
||||
LiqRateTarget_2 = 33, //Well's liquid rate target/limit for a well on WCONINJH control or for a producer
|
||||
GasRateTarget_2 = 54, //Well's gas rate target/limit for a well on WCONINJH control or for producer
|
||||
BHPTarget_2 = 55, //Well's bottom hole pressure target/limit
|
||||
|
||||
|
||||
HistLiqRateTarget = 33, // Well's historical/observed liquid
|
||||
// rate target/limit
|
||||
|
||||
HistGasRateTarget = 54, // Well's historical/observed gas rate
|
||||
// target/limit
|
||||
|
||||
HistBHPTarget = 55, // Well's historical/observed bottom
|
||||
// hole pressure target/limit
|
||||
};
|
||||
} // SWell
|
||||
|
||||
@ -146,13 +151,22 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
|
||||
|
||||
GasFVF = 34, // Well's producing gas formation volume factor.
|
||||
|
||||
item37 = 36, // Unknown
|
||||
item38 = 37, // Unknown
|
||||
item37 = 36, // Unknown
|
||||
item38 = 37, // Unknown
|
||||
|
||||
BHPTarget = 41, // Well's current BHP Target/Limit
|
||||
BHPTarget = 41, // Well's current BHP Target/Limit
|
||||
|
||||
item82 = 81, // Unknown
|
||||
item83 = 82, // Unknown
|
||||
HistOilPrTotal = 75, // Well's total cumulative oil production
|
||||
// (observed/historical rates)
|
||||
HistWatPrTotal = 76, // Well's total cumulative water
|
||||
// production (observed/historical rates)
|
||||
HistGasPrTotal = 77, // Well's total cumulative gas production
|
||||
// (observed(historical rates)
|
||||
|
||||
HistWatInjTotal = 81, // Well's total cumulative water injection
|
||||
// (observed/historical rates)
|
||||
HistGasInjTotal = 82, // Well's total cumulative gas injection
|
||||
// (observed/historical rates)
|
||||
|
||||
WatVoidPrRate = 122, // Well's voidage production rate
|
||||
GasVoidPrRate = 123, // Well's voidage production rate
|
||||
|
@ -381,7 +381,8 @@ namespace {
|
||||
|
||||
for (const auto& key : keys) {
|
||||
if ((key[3] == 'T') && ((key[2] == 'I') || (key[2] == 'P'))) {
|
||||
// Don't write cumulative quantities in case of
|
||||
// Don't write cumulative quantities in case of OPM
|
||||
// extended restart files.
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -424,7 +425,7 @@ namespace {
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
} // XGrp
|
||||
|
||||
namespace ZGrp {
|
||||
std::size_t entriesPerGroup(const std::vector<int>& inteHead)
|
||||
@ -447,7 +448,7 @@ namespace {
|
||||
WV::WindowSize{ entriesPerGroup(inteHead) }
|
||||
};
|
||||
}
|
||||
}
|
||||
} // ZGrp
|
||||
} // Anonymous
|
||||
|
||||
void
|
||||
|
@ -30,7 +30,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/ScheduleEnums.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well.hpp>
|
||||
//#include <opm/output/data/Wells.hpp>
|
||||
|
||||
#include <opm/parser/eclipse/Units/UnitSystem.hpp>
|
||||
#include <opm/parser/eclipse/Units/Units.hpp>
|
||||
@ -511,13 +510,13 @@ namespace {
|
||||
if ((pp.GasRate != 0.0) || (!predMode)) {
|
||||
sWell[Ix::GasRateTarget] =
|
||||
swprop(M::gas_surface_rate, pp.GasRate);
|
||||
sWell[Ix::GasRateTarget_2] = sWell[Ix::GasRateTarget];
|
||||
sWell[Ix::HistGasRateTarget] = sWell[Ix::GasRateTarget];
|
||||
}
|
||||
|
||||
if (pp.LiquidRate != 0.0 || (!predMode)) {
|
||||
sWell[Ix::LiqRateTarget] =
|
||||
swprop(M::liquid_surface_rate, pp.LiquidRate);
|
||||
sWell[Ix::LiqRateTarget_2] = sWell[Ix::LiqRateTarget];
|
||||
sWell[Ix::HistLiqRateTarget] = sWell[Ix::LiqRateTarget];
|
||||
}
|
||||
else {
|
||||
sWell[Ix::LiqRateTarget] =
|
||||
@ -542,26 +541,29 @@ namespace {
|
||||
sWell[Ix::BHPTarget] = pp.BHPLimit != 0.0
|
||||
? swprop(M::pressure, pp.BHPLimit)
|
||||
: swprop(M::pressure, 1.0*::Opm::unit::atm);
|
||||
sWell[Ix::BHPTarget_2] = sWell[Ix::BHPTarget];
|
||||
sWell[Ix::HistBHPTarget] = sWell[Ix::BHPTarget];
|
||||
}
|
||||
else if (well.isInjector(sim_step)) {
|
||||
const auto& ip = well.getInjectionProperties(sim_step);
|
||||
|
||||
using IP = ::Opm::WellInjector::ControlModeEnum;
|
||||
using IT = ::Opm::WellInjector::TypeEnum;
|
||||
using IT = ::Opm::WellInjector::TypeEnum;
|
||||
|
||||
if (ip.hasInjectionControl(IP::RATE)) {
|
||||
if (ip.injectorType == IT::OIL) {
|
||||
sWell[Ix::OilRateTarget] = swprop(M::liquid_surface_rate, ip.surfaceInjectionRate);
|
||||
}
|
||||
if (ip.injectorType == IT::WATER) {
|
||||
sWell[Ix::WatRateTarget] = swprop(M::liquid_surface_rate, ip.surfaceInjectionRate);
|
||||
sWell[Ix::LiqRateTarget_2] = sWell[Ix::WatRateTarget];
|
||||
}
|
||||
if (ip.injectorType == IT::GAS) {
|
||||
sWell[Ix::GasRateTarget] = swprop(M::gas_surface_rate, ip.surfaceInjectionRate);
|
||||
sWell[Ix::GasRateTarget_2] = sWell[Ix::GasRateTarget];
|
||||
}
|
||||
if (ip.hasInjectionControl(IP::RATE)) {
|
||||
if (ip.injectorType == IT::OIL) {
|
||||
sWell[Ix::OilRateTarget] =
|
||||
swprop(M::liquid_surface_rate, ip.surfaceInjectionRate);
|
||||
}
|
||||
if (ip.injectorType == IT::WATER) {
|
||||
sWell[Ix::WatRateTarget] =
|
||||
swprop(M::liquid_surface_rate, ip.surfaceInjectionRate);
|
||||
sWell[Ix::HistLiqRateTarget] = sWell[Ix::WatRateTarget];
|
||||
}
|
||||
if (ip.injectorType == IT::GAS) {
|
||||
sWell[Ix::GasRateTarget] =
|
||||
swprop(M::gas_surface_rate, ip.surfaceInjectionRate);
|
||||
sWell[Ix::HistGasRateTarget] = sWell[Ix::GasRateTarget];
|
||||
}
|
||||
}
|
||||
|
||||
if (ip.hasInjectionControl(IP::RESV)) {
|
||||
@ -575,7 +577,7 @@ namespace {
|
||||
sWell[Ix::BHPTarget] = ip.hasInjectionControl(IP::BHP)
|
||||
? swprop(M::pressure, ip.BHPLimit)
|
||||
: swprop(M::pressure, 1.0E05*::Opm::unit::psia);
|
||||
sWell[Ix::BHPTarget_2] = sWell[Ix::BHPTarget];
|
||||
sWell[Ix::HistBHPTarget] = sWell[Ix::BHPTarget];
|
||||
}
|
||||
|
||||
sWell[Ix::DatumDepth] =
|
||||
@ -647,15 +649,41 @@ namespace {
|
||||
xWell[Ix::WatCut] = get("WWCT");
|
||||
xWell[Ix::GORatio] = get("WGOR");
|
||||
|
||||
if (ecl_compatible_rst) {
|
||||
xWell[Ix::OilPrTotal] = get("WOPT");
|
||||
xWell[Ix::WatPrTotal] = get("WWPT");
|
||||
xWell[Ix::GasPrTotal] = get("WGPT");
|
||||
xWell[Ix::VoidPrTotal] = get("WVPT");
|
||||
}
|
||||
if (ecl_compatible_rst) {
|
||||
xWell[Ix::OilPrTotal] = get("WOPT");
|
||||
xWell[Ix::WatPrTotal] = get("WWPT");
|
||||
xWell[Ix::GasPrTotal] = get("WGPT");
|
||||
xWell[Ix::VoidPrTotal] = get("WVPT");
|
||||
}
|
||||
|
||||
// Not fully characterised.
|
||||
xWell[Ix::item37] = xWell[Ix::WatPrRate];
|
||||
xWell[Ix::item38] = xWell[Ix::GasPrRate];
|
||||
|
||||
if (ecl_compatible_rst) {
|
||||
xWell[Ix::HistOilPrTotal] = get("WOPTH");
|
||||
xWell[Ix::HistWatPrTotal] = get("WWPTH");
|
||||
xWell[Ix::HistGasPrTotal] = get("WGPTH");
|
||||
}
|
||||
}
|
||||
|
||||
template <class GetSummaryVector, class XWellArray>
|
||||
void assignCommonInjector(GetSummaryVector& get,
|
||||
const bool ecl_compatible_rst,
|
||||
XWellArray& xWell)
|
||||
{
|
||||
using Ix = ::Opm::RestartIO::Helpers::VectorItems::XWell::index;
|
||||
|
||||
xWell[Ix::FlowBHP] = get("WBHP");
|
||||
|
||||
if (ecl_compatible_rst) {
|
||||
// Note: Assign both water and gas cumulatives to support
|
||||
// case of well alternating between injecting water and gas.
|
||||
xWell[Ix::WatInjTotal] = get("WWIT");
|
||||
xWell[Ix::GasInjTotal] = get("WGIT");
|
||||
xWell[Ix::HistWatInjTotal] = get("WWITH");
|
||||
xWell[Ix::HistGasInjTotal] = get("WGITH");
|
||||
}
|
||||
}
|
||||
|
||||
template <class XWellArray>
|
||||
@ -673,19 +701,14 @@ namespace {
|
||||
return smry.has(key) ? smry.get(key) : 0.0;
|
||||
};
|
||||
|
||||
// Injection rates reported as negative, cumulative
|
||||
// totals as positive.
|
||||
assignCommonInjector(get, ecl_compatible_rst, xWell);
|
||||
|
||||
// Injection rates reported as negative.
|
||||
xWell[Ix::WatPrRate] = -get("WWIR");
|
||||
xWell[Ix::LiqPrRate] = xWell[Ix::WatPrRate];
|
||||
|
||||
xWell[Ix::FlowBHP] = get("WBHP");
|
||||
|
||||
if (ecl_compatible_rst) {
|
||||
xWell[Ix::WatInjTotal] = get("WWIT");
|
||||
}
|
||||
|
||||
// Not fully characterised.
|
||||
xWell[Ix::item37] = xWell[Ix::WatPrRate];
|
||||
xWell[Ix::item82] = xWell[Ix::WatInjTotal];
|
||||
|
||||
xWell[Ix::WatVoidPrRate] = -get("WWVIR");
|
||||
}
|
||||
@ -705,17 +728,12 @@ namespace {
|
||||
return smry.has(key) ? smry.get(key) : 0.0;
|
||||
};
|
||||
|
||||
// Injection rates reported as negative production rates,
|
||||
// cumulative injection totals as positive.
|
||||
assignCommonInjector(get, ecl_compatible_rst, xWell);
|
||||
|
||||
// Injection rates reported as negative production rates.
|
||||
xWell[Ix::GasPrRate] = -get("WGIR");
|
||||
xWell[Ix::VoidPrRate] = -get("WGVIR");
|
||||
|
||||
xWell[Ix::FlowBHP] = get("WBHP");
|
||||
|
||||
if (ecl_compatible_rst) {
|
||||
xWell[Ix::GasInjTotal] = get("WGIT");
|
||||
}
|
||||
|
||||
xWell[Ix::GasFVF] = (std::abs(xWell[Ix::GasPrRate]) > 0.0)
|
||||
? xWell[Ix::VoidPrRate] / xWell[Ix::GasPrRate]
|
||||
: 0.0;
|
||||
@ -724,7 +742,6 @@ namespace {
|
||||
|
||||
// Not fully characterised.
|
||||
xWell[Ix::item38] = xWell[Ix::GasPrRate];
|
||||
xWell[Ix::item83] = xWell[Ix::GasInjTotal];
|
||||
|
||||
xWell[Ix::GasVoidPrRate] = xWell[Ix::VoidPrRate];
|
||||
}
|
||||
|
@ -1088,6 +1088,13 @@ namespace {
|
||||
|
||||
smry.add(key("WWIT"), xwel[VI::XWell::index::WatInjTotal]);
|
||||
smry.add(key("WGIT"), xwel[VI::XWell::index::GasInjTotal]);
|
||||
|
||||
smry.add(key("WOPTH"), xwel[VI::XWell::index::HistOilPrTotal]);
|
||||
smry.add(key("WWPTH"), xwel[VI::XWell::index::HistWatPrTotal]);
|
||||
smry.add(key("WGPTH"), xwel[VI::XWell::index::HistGasPrTotal]);
|
||||
|
||||
smry.add(key("WWITH"), xwel[VI::XWell::index::HistWatInjTotal]);
|
||||
smry.add(key("WGITH"), xwel[VI::XWell::index::HistGasInjTotal]);
|
||||
}
|
||||
|
||||
void assign_group_cumulatives(const std::string& group,
|
||||
@ -1118,6 +1125,12 @@ namespace {
|
||||
|
||||
smry.add(key("WIT"), xgrp[VI::XGroup::index::WatInjTotal]);
|
||||
smry.add(key("GIT"), xgrp[VI::XGroup::index::GasInjTotal]);
|
||||
|
||||
smry.add(key("OPTH"), xgrp[VI::XGroup::index::HistOilPrTotal]);
|
||||
smry.add(key("WPTH"), xgrp[VI::XGroup::index::HistWatPrTotal]);
|
||||
smry.add(key("GPTH"), xgrp[VI::XGroup::index::HistGasPrTotal]);
|
||||
smry.add(key("WITH"), xgrp[VI::XGroup::index::HistWatInjTotal]);
|
||||
smry.add(key("GITH"), xgrp[VI::XGroup::index::HistGasInjTotal]);
|
||||
}
|
||||
|
||||
Opm::SummaryState
|
||||
|
@ -65,6 +65,8 @@ namespace {
|
||||
"WIR", "GIR",
|
||||
"WIT", "GIT",
|
||||
"WCT", "GOR",
|
||||
"OPTH", "WPTH", "GPTH",
|
||||
"WITH", "GITH",
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
/*
|
||||
Copyright 2019 Equinor
|
||||
Copyright 2018 Statoil ASA
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
@ -232,6 +233,11 @@ TSTEP -- 8
|
||||
state.add("WWCT:OP_1" , 0.625);
|
||||
state.add("WGOR:OP_1" , 234.5);
|
||||
state.add("WBHP:OP_1" , 314.15);
|
||||
state.add("WOPTH:OP_1", 345.6);
|
||||
state.add("WWPTH:OP_1", 456.7);
|
||||
state.add("WGPTH:OP_1", 567.8);
|
||||
state.add("WWITH:OP_1", 0.0);
|
||||
state.add("WGITH:OP_1", 0.0);
|
||||
state.add("WGVIR:OP_1", 0.0);
|
||||
state.add("WWVIR:OP_1", 0.0);
|
||||
|
||||
@ -250,6 +256,11 @@ TSTEP -- 8
|
||||
state.add("WWCT:OP_2" , 0.0);
|
||||
state.add("WGOR:OP_2" , 0.0);
|
||||
state.add("WBHP:OP_2" , 400.6);
|
||||
state.add("WOPTH:OP_2", 0.0);
|
||||
state.add("WWPTH:OP_2", 0.0);
|
||||
state.add("WGPTH:OP_2", 0.0);
|
||||
state.add("WWITH:OP_2", 1515.0);
|
||||
state.add("WGITH:OP_2", 3030.0);
|
||||
state.add("WGVIR:OP_2", 1234.0);
|
||||
state.add("WWVIR:OP_2", 4321.0);
|
||||
|
||||
@ -268,6 +279,11 @@ TSTEP -- 8
|
||||
state.add("WWCT:OP_3" , 0.0625);
|
||||
state.add("WGOR:OP_3" , 1234.5);
|
||||
state.add("WBHP:OP_3" , 314.15);
|
||||
state.add("WOPTH:OP_3", 2345.6);
|
||||
state.add("WWPTH:OP_3", 3456.7);
|
||||
state.add("WGPTH:OP_3", 4567.8);
|
||||
state.add("WWITH:OP_3", 0.0);
|
||||
state.add("WGITH:OP_3", 0.0);
|
||||
state.add("WGVIR:OP_3", 0.0);
|
||||
state.add("WWVIR:OP_3", 43.21);
|
||||
|
||||
@ -561,17 +577,27 @@ BOOST_AUTO_TEST_CASE (Dynamic_Well_Data_Step1)
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::LiqPrRate], 1.0 + 2.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::VoidPrRate], 4.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::FlowBHP], 314.15, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::WatCut] , 0.625, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::GORatio], 234.5, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::FlowBHP], 314.15 , 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::WatCut] , 0.625, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::GORatio], 234.5 , 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::OilPrTotal], 10.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::WatPrTotal], 20.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::GasPrTotal], 30.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::VoidPrTotal], 40.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::item37], xwell[i0 + Ix::WatPrRate], 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::item38], xwell[i0 + Ix::GasPrRate], 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::item37],
|
||||
xwell[i0 + Ix::WatPrRate], 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::item38],
|
||||
xwell[i0 + Ix::GasPrRate], 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistOilPrTotal], 345.6, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistWatPrTotal], 456.7, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistGasPrTotal], 567.8, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistWatInjTotal], 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistGasInjTotal], 0.0, 1.0e-10);
|
||||
}
|
||||
|
||||
// XWEL (OP_2)
|
||||
@ -585,6 +611,7 @@ BOOST_AUTO_TEST_CASE (Dynamic_Well_Data_Step1)
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::VoidPrRate], -1234.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::FlowBHP], 400.6, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::WatInjTotal], 1000.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::GasInjTotal], 2000.0, 1.0e-10);
|
||||
|
||||
// Bg = VGIR / GIR = 1234.0 / 200.0
|
||||
@ -593,11 +620,11 @@ BOOST_AUTO_TEST_CASE (Dynamic_Well_Data_Step1)
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::item38],
|
||||
xwell[i1 + Ix::GasPrRate], 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::item83],
|
||||
xwell[i1 + Ix::GasInjTotal], 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::GasVoidPrRate],
|
||||
xwell[i1 + Ix::VoidPrRate], 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistOilPrTotal] , 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistWatPrTotal] , 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistGasPrTotal] , 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistWatInjTotal], 1515.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistGasInjTotal], 3030.0, 1.0e-10);
|
||||
}
|
||||
}
|
||||
|
||||
@ -672,6 +699,10 @@ BOOST_AUTO_TEST_CASE (Dynamic_Well_Data_Step2)
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::item38],
|
||||
xwell[i0 + Ix::GasPrRate], 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistOilPrTotal], 345.6, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistWatPrTotal], 456.7, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i0 + Ix::HistGasPrTotal], 567.8, 1.0e-10);
|
||||
}
|
||||
|
||||
// XWEL (OP_2) -- water injector
|
||||
@ -690,14 +721,17 @@ BOOST_AUTO_TEST_CASE (Dynamic_Well_Data_Step2)
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::FlowBHP], 400.6, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::WatInjTotal], 1000.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::GasInjTotal], 2000.0, 1.0e-10);
|
||||
|
||||
// Copy of WWIR
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::item37],
|
||||
xwell[i1 + Ix::WatPrRate], 1.0e-10);
|
||||
|
||||
// Copy of WWIT
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::item82],
|
||||
xwell[i1 + Ix::WatInjTotal], 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistOilPrTotal] , 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistWatPrTotal] , 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistGasPrTotal] , 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistWatInjTotal], 1515.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::HistGasInjTotal], 3030.0, 1.0e-10);
|
||||
|
||||
// WWVIR
|
||||
BOOST_CHECK_CLOSE(xwell[i1 + Ix::WatVoidPrRate],
|
||||
@ -733,6 +767,10 @@ BOOST_AUTO_TEST_CASE (Dynamic_Well_Data_Step2)
|
||||
// Copy of WGPR
|
||||
BOOST_CHECK_CLOSE(xwell[i2 + Ix::item38],
|
||||
xwell[i2 + Ix::GasPrRate], 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(xwell[i2 + Ix::HistOilPrTotal], 2345.6, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i2 + Ix::HistWatPrTotal], 3456.7, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(xwell[i2 + Ix::HistGasPrTotal], 4567.8, 1.0e-10);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -366,6 +366,11 @@ Opm::SummaryState sim_state()
|
||||
state.add("WWCT:OP_1" , 0.625);
|
||||
state.add("WGOR:OP_1" , 234.5);
|
||||
state.add("WBHP:OP_1" , 314.15);
|
||||
state.add("WOPTH:OP_1", 345.6);
|
||||
state.add("WWPTH:OP_1", 456.7);
|
||||
state.add("WGPTH:OP_1", 567.8);
|
||||
state.add("WWITH:OP_1", 0.0);
|
||||
state.add("WGITH:OP_1", 0.0);
|
||||
state.add("WGVIR:OP_1", 0.0);
|
||||
state.add("WWVIR:OP_1", 0.0);
|
||||
|
||||
@ -384,6 +389,11 @@ Opm::SummaryState sim_state()
|
||||
state.add("WWCT:OP_2" , 0.0);
|
||||
state.add("WGOR:OP_2" , 0.0);
|
||||
state.add("WBHP:OP_2" , 400.6);
|
||||
state.add("WOPTH:OP_2", 0.0);
|
||||
state.add("WWPTH:OP_2", 0.0);
|
||||
state.add("WGPTH:OP_2", 0.0);
|
||||
state.add("WWITH:OP_2", 1515.0);
|
||||
state.add("WGITH:OP_2", 3030.0);
|
||||
state.add("WGVIR:OP_2", 1234.0);
|
||||
state.add("WWVIR:OP_2", 4321.0);
|
||||
|
||||
@ -402,6 +412,11 @@ Opm::SummaryState sim_state()
|
||||
state.add("WWCT:OP_3" , 0.0625);
|
||||
state.add("WGOR:OP_3" , 1234.5);
|
||||
state.add("WBHP:OP_3" , 314.15);
|
||||
state.add("WOPTH:OP_3", 2345.6);
|
||||
state.add("WWPTH:OP_3", 3456.7);
|
||||
state.add("WGPTH:OP_3", 4567.8);
|
||||
state.add("WWITH:OP_3", 0.0);
|
||||
state.add("WGITH:OP_3", 0.0);
|
||||
state.add("WGVIR:OP_3", 0.0);
|
||||
state.add("WWVIR:OP_3", 43.21);
|
||||
|
||||
@ -419,6 +434,13 @@ Opm::SummaryState sim_state()
|
||||
state.add("GGIT:OP" , 27182.8);
|
||||
state.add("GWCT:OP" , 0.625);
|
||||
state.add("GGOR:OP" , 1234.5);
|
||||
state.add("GGVIR:OP", 123.45);
|
||||
state.add("GWVIR:OP", 1234.56);
|
||||
state.add("GOPTH:OP", 5678.90);
|
||||
state.add("GWPTH:OP", 6789.01);
|
||||
state.add("GGPTH:OP", 7890.12);
|
||||
state.add("GWITH:OP", 8901.23);
|
||||
state.add("GGITH:OP", 9012.34);
|
||||
|
||||
state.add("FOPR" , 1100.0);
|
||||
state.add("FWPR" , 1200.0);
|
||||
@ -433,7 +455,14 @@ Opm::SummaryState sim_state()
|
||||
state.add("FWIT" , 314159.2);
|
||||
state.add("FGIT" , 271828.1);
|
||||
state.add("FWCT" , 0.625);
|
||||
state.add("FGOR" , 1234.5);
|
||||
state.add("FGOR" , 1234.5);
|
||||
state.add("FOPTH", 56789.01);
|
||||
state.add("FWPTH", 67890.12);
|
||||
state.add("FGPTH", 78901.23);
|
||||
state.add("FWITH", 89012.34);
|
||||
state.add("FGITH", 90123.45);
|
||||
state.add("FGVIR", 1234.56);
|
||||
state.add("FWVIR", 12345.67);
|
||||
|
||||
return state;
|
||||
}
|
||||
@ -835,13 +864,18 @@ BOOST_AUTO_TEST_CASE(Restore_Cumulatives)
|
||||
// Verify that the restored summary state has all of its requisite
|
||||
// cumulative summary vectors.
|
||||
|
||||
// Producer => W*IT saved/restored as zero (0.0)
|
||||
// Producer => W*IT{,H} saved/restored as zero (0.0)
|
||||
BOOST_CHECK(rstSumState.has("WOPT:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WGPT:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WWPT:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WVPT:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WWIT:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WGIT:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WOPTH:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WGPTH:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WWPTH:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WWITH:OP_1"));
|
||||
BOOST_CHECK(rstSumState.has("WGITH:OP_1"));
|
||||
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WOPT:OP_1"), 10.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGPT:OP_1"), 30.0, 1.0e-10);
|
||||
@ -849,21 +883,36 @@ BOOST_AUTO_TEST_CASE(Restore_Cumulatives)
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WVPT:OP_1"), 40.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWIT:OP_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGIT:OP_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WOPTH:OP_1"), 345.6, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWPTH:OP_1"), 456.7, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGPTH:OP_1"), 567.8, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWITH:OP_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGITH:OP_1"), 0.0, 1.0e-10);
|
||||
|
||||
// Gas injector => W*PT and WWIT saved/restored as zero (0.0)
|
||||
// Gas injector => W*PT{,H} saved/restored as zero (0.0)
|
||||
BOOST_CHECK(rstSumState.has("WOPT:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WGPT:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WWPT:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WVPT:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WWIT:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WGIT:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WOPTH:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WGPTH:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WWPTH:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WWITH:OP_2"));
|
||||
BOOST_CHECK(rstSumState.has("WGITH:OP_2"));
|
||||
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WOPT:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGPT:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWPT:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WVPT:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWIT:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWIT:OP_2"), 1000.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGIT:OP_2"), 2000.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WOPTH:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGPTH:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWPTH:OP_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WWITH:OP_2"), 1515.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("WGITH:OP_2"), 3030.0, 1.0e-10);
|
||||
|
||||
// Group cumulatives saved/restored for all phases
|
||||
BOOST_CHECK(rstSumState.has("GOPT:OP"));
|
||||
@ -872,6 +921,11 @@ BOOST_AUTO_TEST_CASE(Restore_Cumulatives)
|
||||
BOOST_CHECK(rstSumState.has("GVPT:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GWIT:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GGIT:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GOPTH:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GGPTH:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GWPTH:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GWITH:OP"));
|
||||
BOOST_CHECK(rstSumState.has("GGITH:OP"));
|
||||
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GOPT:OP"), 1100.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GWPT:OP"), 1200.0, 1.0e-10);
|
||||
@ -880,6 +934,12 @@ BOOST_AUTO_TEST_CASE(Restore_Cumulatives)
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GWIT:OP"), 31415.9, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GGIT:OP"), 27182.8, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GOPTH:OP"), 5678.90, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GGPTH:OP"), 7890.12, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GWPTH:OP"), 6789.01, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GWITH:OP"), 8901.23, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("GGITH:OP"), 9012.34, 1.0e-10);
|
||||
|
||||
// Field cumulatives saved/restored for all phases
|
||||
BOOST_CHECK(rstSumState.has("FOPT"));
|
||||
BOOST_CHECK(rstSumState.has("FGPT"));
|
||||
@ -887,6 +947,11 @@ BOOST_AUTO_TEST_CASE(Restore_Cumulatives)
|
||||
BOOST_CHECK(rstSumState.has("FVPT"));
|
||||
BOOST_CHECK(rstSumState.has("FWIT"));
|
||||
BOOST_CHECK(rstSumState.has("FGIT"));
|
||||
BOOST_CHECK(rstSumState.has("FOPTH"));
|
||||
BOOST_CHECK(rstSumState.has("FGPTH"));
|
||||
BOOST_CHECK(rstSumState.has("FWPTH"));
|
||||
BOOST_CHECK(rstSumState.has("FWITH"));
|
||||
BOOST_CHECK(rstSumState.has("FGITH"));
|
||||
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FOPT"), 11000.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FWPT"), 12000.0, 1.0e-10);
|
||||
@ -894,6 +959,12 @@ BOOST_AUTO_TEST_CASE(Restore_Cumulatives)
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FVPT"), 14000.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FWIT"), 314159.2, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FGIT"), 271828.1, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FOPTH"), 56789.01, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FGPTH"), 78901.23, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FWPTH"), 67890.12, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FWITH"), 89012.34, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(rstSumState.get("FGITH"), 90123.45, 1.0e-10);
|
||||
}
|
||||
|
||||
|
||||
|
@ -2921,6 +2921,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
rstrt.add("WWIT:W_1", 5.0);
|
||||
rstrt.add("WGIT:W_1", 6.0);
|
||||
|
||||
rstrt.add("WOPTH:W_1", 0.1);
|
||||
rstrt.add("WWPTH:W_1", 0.2);
|
||||
rstrt.add("WGPTH:W_1", 0.3);
|
||||
|
||||
rstrt.add("WWITH:W_1", 0.5);
|
||||
rstrt.add("WGITH:W_1", 0.6);
|
||||
|
||||
rstrt.add("GOPT:NoSuchGroup", 1.0);
|
||||
rstrt.add("GWPT:NoSuchGroup", 2.0);
|
||||
rstrt.add("GGPT:NoSuchGroup", 3.0);
|
||||
@ -2937,6 +2944,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
rstrt.add("FWIT", 50.0);
|
||||
rstrt.add("FGIT", 60.0);
|
||||
|
||||
rstrt.add("FOPTH", 0.01);
|
||||
rstrt.add("FWPTH", 0.02);
|
||||
rstrt.add("FGPTH", 0.03);
|
||||
|
||||
rstrt.add("FWITH", 0.05);
|
||||
rstrt.add("FGITH", 0.06);
|
||||
|
||||
smry.reset_cumulative_quantities(rstrt);
|
||||
|
||||
const auto& sumstate = smry.get_restart_vectors();
|
||||
@ -2969,6 +2983,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWIT:W_1"), 5.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGIT:W_1"), 6.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WOPTH:W_1"), 0.1, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWPTH:W_1"), 0.2, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGPTH:W_1"), 0.3, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWITH:W_1"), 0.5, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGITH:W_1"), 0.6, 1.0e-10);
|
||||
|
||||
// Cumulatives unset for W_2.
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WOPT:W_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWPT:W_2"), 0.0, 1.0e-10);
|
||||
@ -2978,6 +2999,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWIT:W_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGIT:W_2"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WOPTH:W_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWPTH:W_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGPTH:W_2"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWITH:W_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGITH:W_2"), 0.0, 1.0e-10);
|
||||
|
||||
// Cumulatives unset for W_3.
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WOPT:W_3"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWPT:W_3"), 0.0, 1.0e-10);
|
||||
@ -2987,6 +3015,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWIT:W_3"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGIT:W_3"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WOPTH:W_3"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWPTH:W_3"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGPTH:W_3"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WWITH:W_3"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("WGITH:W_3"), 0.0, 1.0e-10);
|
||||
|
||||
// Cumulatives unset for G_1.
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GOPT:G_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWPT:G_1"), 0.0, 1.0e-10);
|
||||
@ -2996,6 +3031,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWIT:G_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GGIT:G_1"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GOPTH:G_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWPTH:G_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GGPTH:G_1"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWITH:G_1"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GGITH:G_1"), 0.0, 1.0e-10);
|
||||
|
||||
// Cumulatives unset for G_2.
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GOPT:G_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWPT:G_2"), 0.0, 1.0e-10);
|
||||
@ -3005,6 +3047,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWIT:G_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GGIT:G_2"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GOPTH:G_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWPTH:G_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GGPTH:G_2"), 0.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GWITH:G_2"), 0.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("GGITH:G_2"), 0.0, 1.0e-10);
|
||||
|
||||
// Cumulatives reset for FIELD.
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FOPT"), 10.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FWPT"), 20.0, 1.0e-10);
|
||||
@ -3013,6 +3062,13 @@ BOOST_AUTO_TEST_CASE(Reset)
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FWIT"), 50.0, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FGIT"), 60.0, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FOPTH"), 0.01, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FWPTH"), 0.02, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FGPTH"), 0.03, 1.0e-10);
|
||||
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FWITH"), 0.05, 1.0e-10);
|
||||
BOOST_CHECK_CLOSE(sumstate.get("FGITH"), 0.06, 1.0e-10);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
Loading…
Reference in New Issue
Block a user