Use ScheduleState to configure RFT
This commit is contained in:
@@ -16,8 +16,8 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef RFT_CONFIG_HPP
|
||||
#define RFT_CONFIG_HPP
|
||||
#ifndef RFT_CONFIG2_HPP
|
||||
#define RFT_CONFIG2_HPP
|
||||
|
||||
#include <cstddef>
|
||||
#include <optional>
|
||||
@@ -47,72 +47,41 @@ public:
|
||||
YES = 1,
|
||||
REPT = 2,
|
||||
TIMESTEP = 3,
|
||||
NO = 4
|
||||
NO = 5
|
||||
};
|
||||
static std::string PLT2String(PLT enumValue);
|
||||
static PLT PLTFromString( const std::string& stringValue);
|
||||
|
||||
template <typename Value>
|
||||
using ConfigMap = std::unordered_map<
|
||||
std::string, DynamicState<std::pair<Value, std::size_t>>
|
||||
>;
|
||||
|
||||
using WellOpenTimeMap = std::unordered_map<std::string, std::size_t>;
|
||||
|
||||
RFTConfig();
|
||||
explicit RFTConfig(const TimeMap& time_map);
|
||||
void first_open(bool on);
|
||||
void update(const std::string& wname, PLT mode);
|
||||
void update(const std::string& wname, RFT mode);
|
||||
bool active() const;
|
||||
bool rft() const;
|
||||
bool rft(const std::string& wname) const;
|
||||
bool plt() const;
|
||||
bool plt(const std::string& wname) const;
|
||||
std::optional<RFTConfig> next() const;
|
||||
std::optional<RFTConfig> well_open(const std::string& wname) const;
|
||||
|
||||
static RFTConfig serializeObject();
|
||||
|
||||
bool rft(const std::string& well, std::size_t report_step) const;
|
||||
bool plt(const std::string& well, std::size_t report_step) const;
|
||||
bool getWellOpenRFT(const std::string& well_name, std::size_t report_step) const;
|
||||
void setWellOpenRFT(std::size_t report_step);
|
||||
void setWellOpenRFT(const std::string& well_name);
|
||||
|
||||
bool active(std::size_t report_step) const;
|
||||
std::size_t firstRFTOutput() const { return this->first_rft_event; }
|
||||
void updateRFT(const std::string& well, std::size_t report_step, RFT value);
|
||||
void updatePLT(const std::string& well, std::size_t report_step, PLT value);
|
||||
void addWellOpen(const std::string& well, std::size_t report_step);
|
||||
|
||||
const TimeMap& timeMap() const;
|
||||
|
||||
bool operator==(const RFTConfig& data) const;
|
||||
|
||||
template<class Serializer>
|
||||
void serializeOp(Serializer& serializer)
|
||||
{
|
||||
tm.serializeOp(serializer);
|
||||
serializer(first_rft_event);
|
||||
serializer(well_open_rft_time);
|
||||
serializer(well_open_rft_name);
|
||||
serializer(well_open);
|
||||
serializer.template map<ConfigMap<RFT>,false>(rft_config);
|
||||
serializer.template map<ConfigMap<PLT>,false>(plt_config);
|
||||
serializer(first_open_rft);
|
||||
serializer.template map<std::unordered_map<std::string, RFT>,false>(rft_state);
|
||||
serializer.template map<std::unordered_map<std::string, PLT>,false>(plt_state);
|
||||
serializer.template map<std::unordered_map<std::string, bool>,false>(open_wells);
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
TimeMap tm;
|
||||
std::size_t first_rft_event;
|
||||
std::optional<std::size_t> well_open_rft_time;
|
||||
WellOpenTimeMap well_open_rft_name;
|
||||
WellOpenTimeMap well_open;
|
||||
ConfigMap<RFT> rft_config;
|
||||
ConfigMap<PLT> plt_config;
|
||||
|
||||
bool outputRftAtWellopen(WellOpenTimeMap::const_iterator well, const std::size_t report_step) const;
|
||||
std::size_t firstWellopenStepNotBefore(const std::size_t report_step) const;
|
||||
void updateFirstIfNotShut(const std::string& well_name, const std::size_t report_step);
|
||||
void updateFirst(const std::size_t report_step);
|
||||
|
||||
void setWellOpenRFT(const std::string& well_name, const std::size_t report_step);
|
||||
|
||||
template <typename Value>
|
||||
void updateConfig(const std::string& well_name,
|
||||
const std::size_t report_step,
|
||||
const Value value,
|
||||
ConfigMap<Value>& cfgmap);
|
||||
bool first_open_rft = false;
|
||||
std::unordered_map<std::string, RFT> rft_state;
|
||||
std::unordered_map<std::string, PLT> plt_state;
|
||||
std::unordered_map<std::string, bool> open_wells;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Util/OrderedMap.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/MessageLimits.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Runspec.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RFTConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Network/ExtNetwork.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/PAvg.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/PAvgCalculatorCollection.hpp>
|
||||
@@ -241,7 +240,7 @@ namespace Opm
|
||||
void invalidNamePattern (const std::string& namePattern, std::size_t report_step, const ParseContext& parseContext, ErrorGuard& errors, const DeckKeyword& keyword) const;
|
||||
const GuideRateConfig& guideRateConfig(std::size_t timeStep) const;
|
||||
|
||||
const RFTConfig& rftConfig() const;
|
||||
std::optional<std::size_t> first_RFT() const;
|
||||
/*
|
||||
Will remove all completions which are connected to cell which is not
|
||||
active. Will scan through all wells and all timesteps.
|
||||
@@ -283,7 +282,6 @@ namespace Opm
|
||||
{
|
||||
m_sched_deck.serializeOp(serializer);
|
||||
m_timeMap.serializeOp(serializer);
|
||||
rft_config.serializeOp(serializer);
|
||||
restart_config.serializeOp(serializer);
|
||||
serializer.vector(snapshots);
|
||||
m_static.serializeOp(serializer);
|
||||
@@ -302,6 +300,7 @@ namespace Opm
|
||||
pack_unpack<GroupOrder, Serializer>(serializer);
|
||||
pack_unpack<GuideRateConfig, Serializer>(serializer);
|
||||
pack_unpack<GasLiftOpt, Serializer>(serializer);
|
||||
pack_unpack<RFTConfig, Serializer>(serializer);
|
||||
|
||||
pack_unpack_map<int, VFPProdTable, Serializer>(serializer);
|
||||
pack_unpack_map<int, VFPInjTable, Serializer>(serializer);
|
||||
@@ -446,7 +445,6 @@ namespace Opm
|
||||
ScheduleStatic m_static;
|
||||
ScheduleDeck m_sched_deck;
|
||||
TimeMap m_timeMap;
|
||||
RFTConfig rft_config;
|
||||
RestartConfig restart_config;
|
||||
std::optional<int> exit_status;
|
||||
std::vector<ScheduleState> snapshots;
|
||||
@@ -498,16 +496,13 @@ namespace Opm
|
||||
const FieldPropsManager* fp,
|
||||
const std::vector<std::string>& matching_wells,
|
||||
bool runtime,
|
||||
const std::unordered_map<std::string, double> * target_wellpi,
|
||||
std::vector<std::pair<const DeckKeyword*, std::size_t > >& rftProperties);
|
||||
const std::unordered_map<std::string, double> * target_wellpi);
|
||||
|
||||
static std::string formatDate(std::time_t t);
|
||||
std::string simulationDays(std::size_t currentStep) const;
|
||||
|
||||
void applyEXIT(const DeckKeyword&, std::size_t currentStep);
|
||||
void applyWELOPEN(const DeckKeyword&, std::size_t currentStep, bool runtime, const ParseContext&, ErrorGuard&, const std::vector<std::string>& matching_wells = {});
|
||||
void applyWRFT(const DeckKeyword&, std::size_t currentStep);
|
||||
void applyWRFTPLT(const DeckKeyword&, std::size_t currentStep);
|
||||
|
||||
struct HandlerContext {
|
||||
const ScheduleBlock& block;
|
||||
@@ -620,6 +615,8 @@ namespace Opm
|
||||
void handleWPIMULT (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWPMITAB (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWPOLYMER (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWRFT (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWRFTPLT (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWSALT (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWSEGITER (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
void handleWSEGSICD (const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/GasLiftOpt.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RFTConfig.hpp>
|
||||
|
||||
|
||||
namespace {
|
||||
@@ -318,6 +319,7 @@ namespace Opm {
|
||||
ptr_member<UDQConfig> udq;
|
||||
ptr_member<GasLiftOpt> glo;
|
||||
ptr_member<GuideRateConfig> guide_rate;
|
||||
ptr_member<RFTConfig> rft_config;
|
||||
|
||||
template <typename T> struct always_false1 : std::false_type {};
|
||||
|
||||
@@ -351,6 +353,8 @@ namespace Opm {
|
||||
return this->glo;
|
||||
else if constexpr ( std::is_same_v<T, GuideRateConfig> )
|
||||
return this->guide_rate;
|
||||
else if constexpr ( std::is_same_v<T, RFTConfig> )
|
||||
return this->rft_config;
|
||||
else
|
||||
static_assert(always_false1<T>::value, "Template type <T> not supported in get()");
|
||||
}
|
||||
@@ -385,6 +389,8 @@ namespace Opm {
|
||||
return this->glo;
|
||||
else if constexpr ( std::is_same_v<T, GuideRateConfig> )
|
||||
return this->guide_rate;
|
||||
else if constexpr ( std::is_same_v<T, RFTConfig> )
|
||||
return this->rft_config;
|
||||
else
|
||||
static_assert(always_false1<T>::value, "Template type <T> not supported in get()");
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/IOConfig/IOConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Runspec.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RFTConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RPTConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellConnections.hpp>
|
||||
@@ -160,7 +159,7 @@ bool EclipseIO::Impl::wantRFTOutput( const int report_step,
|
||||
{
|
||||
return !isSubstep
|
||||
&& (static_cast<std::size_t>(report_step)
|
||||
>= this->schedule.rftConfig().firstRFTOutput());
|
||||
>= this->schedule.first_RFT());
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -247,7 +246,7 @@ void EclipseIO::writeTimeStep(const Action::State& action_state,
|
||||
// Open existing RFT file if report step is after first RFT event.
|
||||
const auto openExisting = EclIO::OutputStream::RFT::OpenExisting {
|
||||
static_cast<std::size_t>(report_step)
|
||||
> schedule.rftConfig().firstRFTOutput()
|
||||
> schedule.first_RFT()
|
||||
};
|
||||
|
||||
EclIO::OutputStream::RFT rftFile {
|
||||
|
||||
@@ -391,15 +391,15 @@ void Opm::RftIO::write(const int reportStep,
|
||||
const ::Opm::data::WellRates& wellSol,
|
||||
::Opm::EclIO::OutputStream::RFT& rftFile)
|
||||
{
|
||||
const auto& rftCfg = schedule.rftConfig();
|
||||
if (! rftCfg.active(reportStep)) {
|
||||
const auto& rftCfg = schedule[reportStep].rft_config();
|
||||
if (! rftCfg.active()) {
|
||||
// RFT not yet activated. Nothing to do.
|
||||
return;
|
||||
}
|
||||
|
||||
for (const auto& wname : schedule.wellNames(reportStep)) {
|
||||
if (! (rftCfg.rft(wname, reportStep) ||
|
||||
rftCfg.plt(wname, reportStep)))
|
||||
if (! (rftCfg.rft(wname) ||
|
||||
rftCfg.plt(wname)))
|
||||
{
|
||||
// RFT output not requested for 'wname' at this time.
|
||||
continue;
|
||||
|
||||
@@ -1824,6 +1824,48 @@ namespace {
|
||||
}
|
||||
}
|
||||
|
||||
void Schedule::handleWRFT(const HandlerContext& handlerContext, const ParseContext& parseContext, ErrorGuard& errors) {
|
||||
auto new_rft = this->snapshots.back().rft_config();
|
||||
for (const auto& record : handlerContext.keyword) {
|
||||
const auto& item = record.getItem<ParserKeywords::WRFT::WELL>();
|
||||
if (item.hasValue(0)) {
|
||||
const std::string& wellNamePattern = record.getItem<ParserKeywords::WRFT::WELL>().getTrimmedString(0);
|
||||
const auto well_names = wellNames(wellNamePattern, handlerContext.currentStep);
|
||||
|
||||
if (well_names.empty())
|
||||
invalidNamePattern(wellNamePattern, handlerContext.currentStep, parseContext, errors, handlerContext.keyword);
|
||||
|
||||
for (const auto& well_name : well_names)
|
||||
new_rft.update(well_name, RFTConfig::RFT::YES);
|
||||
}
|
||||
}
|
||||
new_rft.first_open(true);
|
||||
this->snapshots.back().rft_config.update( std::move(new_rft) );
|
||||
}
|
||||
|
||||
|
||||
void Schedule::handleWRFTPLT(const HandlerContext& handlerContext, const ParseContext& parseContext, ErrorGuard& errors) {
|
||||
auto new_rft = this->snapshots.back().rft_config();
|
||||
|
||||
for (const auto& record : handlerContext.keyword) {
|
||||
const std::string& wellNamePattern = record.getItem<ParserKeywords::WRFTPLT::WELL>().getTrimmedString(0);
|
||||
const auto well_names = wellNames(wellNamePattern, handlerContext.currentStep);
|
||||
auto RFTKey = RFTConfig::RFTFromString(record.getItem<ParserKeywords::WRFTPLT::OUTPUT_RFT>().getTrimmedString(0));
|
||||
auto PLTKey = RFTConfig::PLTFromString(record.getItem<ParserKeywords::WRFTPLT::OUTPUT_PLT>().getTrimmedString(0));
|
||||
|
||||
if (well_names.empty())
|
||||
invalidNamePattern(wellNamePattern, handlerContext.currentStep, parseContext, errors, handlerContext.keyword);
|
||||
|
||||
for (const auto& well_name : well_names) {
|
||||
new_rft.update(well_name, RFTKey);
|
||||
new_rft.update(well_name, PLTKey);
|
||||
}
|
||||
}
|
||||
|
||||
this->snapshots.back().rft_config.update( std::move(new_rft) );
|
||||
}
|
||||
|
||||
|
||||
bool Schedule::handleNormalKeyword(const HandlerContext& handlerContext, const ParseContext& parseContext, ErrorGuard& errors) {
|
||||
using handler_function = void (Schedule::*)(const HandlerContext&, const ParseContext&, ErrorGuard&);
|
||||
static const std::unordered_map<std::string,handler_function> handler_functions = {
|
||||
@@ -1896,6 +1938,8 @@ namespace {
|
||||
{ "WPIMULT" , &Schedule::handleWPIMULT },
|
||||
{ "WPMITAB" , &Schedule::handleWPMITAB },
|
||||
{ "WPOLYMER", &Schedule::handleWPOLYMER },
|
||||
{ "WRFT" , &Schedule::handleWRFT },
|
||||
{ "WRFTPLT" , &Schedule::handleWRFTPLT },
|
||||
{ "WSALT" , &Schedule::handleWSALT },
|
||||
{ "WSEGITER", &Schedule::handleWSEGITER },
|
||||
{ "WSEGSICD", &Schedule::handleWSEGSICD },
|
||||
|
||||
@@ -25,178 +25,6 @@
|
||||
|
||||
namespace Opm {
|
||||
|
||||
RFTConfig::RFTConfig()
|
||||
: tm{}
|
||||
, first_rft_event(tm.size())
|
||||
{
|
||||
}
|
||||
|
||||
RFTConfig::RFTConfig(const TimeMap& time_map) :
|
||||
tm(time_map),
|
||||
first_rft_event(tm.size())
|
||||
{
|
||||
}
|
||||
|
||||
RFTConfig RFTConfig::serializeObject()
|
||||
{
|
||||
RFTConfig result;
|
||||
result.tm = TimeMap::serializeObject();
|
||||
result.first_rft_event = 1;
|
||||
result.well_open_rft_time = 2;
|
||||
result.well_open_rft_name = {{"test1", 3}};
|
||||
result.well_open = {{"test2", 4}};
|
||||
result.rft_config = {{"test3", {{{RFT::TIMESTEP, 5}}, 6}}};
|
||||
result.plt_config = {{"test3", {{{PLT::REPT, 7}}, 8}}};
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool RFTConfig::rft(const std::string& well_name, std::size_t report_step) const {
|
||||
if (report_step >= this->tm.size())
|
||||
throw std::invalid_argument("Invalid report step " + std::to_string(report_step));
|
||||
|
||||
if (this->outputRftAtWellopen(this->well_open.find(well_name), report_step))
|
||||
return true;
|
||||
|
||||
auto cfg = this->rft_config.find(well_name);
|
||||
if (cfg == this->rft_config.end())
|
||||
return false;
|
||||
|
||||
const auto& rft_pair = cfg->second[report_step];
|
||||
if (rft_pair.first == RFT::YES)
|
||||
return (rft_pair.second == report_step);
|
||||
|
||||
if (rft_pair.first == RFT::NO)
|
||||
return false;
|
||||
|
||||
if (rft_pair.first == RFT::REPT)
|
||||
return true;
|
||||
|
||||
if (rft_pair.first == RFT::TIMESTEP)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool RFTConfig::plt(const std::string& well_name, std::size_t report_step) const {
|
||||
if (report_step >= this->tm.size())
|
||||
throw std::invalid_argument("Invalid ");
|
||||
|
||||
auto cfg = this->plt_config.find(well_name);
|
||||
if (cfg == this->plt_config.end())
|
||||
return false;
|
||||
|
||||
const auto& plt_pair = cfg->second[report_step];
|
||||
if (plt_pair.first == PLT::YES)
|
||||
return (plt_pair.second == report_step);
|
||||
|
||||
if (plt_pair.first == PLT::NO)
|
||||
return false;
|
||||
|
||||
if (plt_pair.first == PLT::REPT)
|
||||
return true;
|
||||
|
||||
if (plt_pair.first == PLT::TIMESTEP)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
template <typename Value>
|
||||
void RFTConfig::updateConfig(const std::string& well_name,
|
||||
const std::size_t report_step,
|
||||
const Value value,
|
||||
ConfigMap<Value>& cfgmap)
|
||||
{
|
||||
auto cfg = cfgmap.find(well_name);
|
||||
if (cfg == cfgmap.end()) {
|
||||
auto state = DynamicState<std::pair<Value, std::size_t>> {
|
||||
this->tm, std::make_pair(Value::NO, 0)
|
||||
};
|
||||
|
||||
auto stat = cfgmap.emplace(well_name, std::move(state));
|
||||
if (! stat.second)
|
||||
return;
|
||||
|
||||
cfg = stat.first;
|
||||
}
|
||||
|
||||
cfg->second.update(report_step, std::make_pair(value, report_step));
|
||||
}
|
||||
|
||||
void RFTConfig::updateRFT(const std::string& well_name, std::size_t report_step, RFT value) {
|
||||
if (value == RFT::FOPN) {
|
||||
this->setWellOpenRFT(well_name, report_step);
|
||||
|
||||
auto wo = this->well_open.find(well_name);
|
||||
if (wo != this->well_open.end())
|
||||
// New candidate first RFT event time is 'report_step' if
|
||||
// well is already open, well's open event time otherwise.
|
||||
this->updateFirst(std::max(report_step, wo->second));
|
||||
} else {
|
||||
this->updateConfig(well_name, report_step, value, this->rft_config);
|
||||
|
||||
if (value != RFT::NO)
|
||||
// YES, REPT, or TIMESTEP.
|
||||
this->updateFirstIfNotShut(well_name, report_step);
|
||||
}
|
||||
}
|
||||
|
||||
void RFTConfig::updatePLT(const std::string& well_name, std::size_t report_step, PLT value) {
|
||||
this->updateConfig(well_name, report_step, value, this->plt_config);
|
||||
|
||||
if (value != PLT::NO)
|
||||
// YES, REPT, or TIMESTEP.
|
||||
this->updateFirstIfNotShut(well_name, report_step);
|
||||
}
|
||||
|
||||
|
||||
bool RFTConfig::getWellOpenRFT(const std::string& well_name, std::size_t report_step) const {
|
||||
if (this->well_open_rft_name.count(well_name) > 0)
|
||||
return true;
|
||||
|
||||
return (this->well_open_rft_time.has_value() && this->well_open_rft_time.value() <= report_step);
|
||||
}
|
||||
|
||||
|
||||
void RFTConfig::setWellOpenRFT(std::size_t report_step) {
|
||||
if (this->well_open_rft_time.has_value())
|
||||
this->well_open_rft_time = std::min(this->well_open_rft_time.value(), report_step);
|
||||
else
|
||||
this->well_open_rft_time = report_step;
|
||||
|
||||
this->updateFirst(this->firstWellopenStepNotBefore(report_step));
|
||||
}
|
||||
|
||||
void RFTConfig::setWellOpenRFT(const std::string& well_name) {
|
||||
this->setWellOpenRFT(well_name, std::size_t(0));
|
||||
}
|
||||
|
||||
|
||||
void RFTConfig::addWellOpen(const std::string& well_name, std::size_t report_step) {
|
||||
// Implicitly handles 'well_name' already being in the map.
|
||||
this->well_open.emplace(well_name, report_step);
|
||||
}
|
||||
|
||||
bool RFTConfig::active(std::size_t report_step) const {
|
||||
for (auto well = this->well_open.begin(), end = this->well_open.end(); well != end; ++well) {
|
||||
if (this->outputRftAtWellopen(well, report_step))
|
||||
return true;
|
||||
}
|
||||
|
||||
for (const auto& rft_pair : this->rft_config) {
|
||||
if (this->rft(rft_pair.first, report_step))
|
||||
return true;
|
||||
}
|
||||
|
||||
for (const auto& plt_pair : this->plt_config) {
|
||||
if (this->rft(plt_pair.first, report_step))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string RFTConfig::RFT2String(RFT enumValue) {
|
||||
switch (enumValue) {
|
||||
case RFT::YES:
|
||||
@@ -257,97 +85,131 @@ RFTConfig::PLT RFTConfig::PLTFromString( const std::string& stringValue ){
|
||||
throw std::invalid_argument("Unknown enum state string: " + stringValue );
|
||||
}
|
||||
|
||||
const TimeMap& RFTConfig::timeMap() const {
|
||||
return tm;
|
||||
}
|
||||
|
||||
bool RFTConfig::operator==(const RFTConfig& data) const {
|
||||
return this->tm == data.tm &&
|
||||
this->first_rft_event == data.first_rft_event &&
|
||||
this->well_open_rft_time == data.well_open_rft_time &&
|
||||
this->well_open_rft_name == data.well_open_rft_name &&
|
||||
this->well_open == data.well_open &&
|
||||
this->rft_config == data.rft_config &&
|
||||
this->plt_config == data.plt_config;
|
||||
return this->first_open_rft == data.first_open_rft &&
|
||||
this->rft_state == data.rft_state &&
|
||||
this->plt_state == data.plt_state &&
|
||||
this->open_wells == data.open_wells;
|
||||
}
|
||||
|
||||
bool RFTConfig::outputRftAtWellopen(WellOpenTimeMap::const_iterator well_iter, const std::size_t report_step) const {
|
||||
assert ((report_step < this->tm.size()) && "Internal logic error for report step");
|
||||
|
||||
if (well_iter == this->well_open.end())
|
||||
return false;
|
||||
RFTConfig RFTConfig::serializeObject() {
|
||||
RFTConfig rft_config;
|
||||
rft_config.first_open( true );
|
||||
return rft_config;
|
||||
}
|
||||
|
||||
if (report_step < this->first_rft_event)
|
||||
return false;
|
||||
|
||||
if (this->well_open_rft_time.has_value() && this->well_open_rft_time.value() <= report_step) {
|
||||
// A general "Output RFT when the well is opened" has been
|
||||
// configured with WRFT. Output RFT data if the well opens
|
||||
// at this report step.
|
||||
if (well_iter->second == report_step)
|
||||
std::optional<RFTConfig> RFTConfig::well_open(const std::string& wname) const {
|
||||
auto iter = this->open_wells.find(wname);
|
||||
|
||||
if (iter == this->open_wells.end()) {
|
||||
if (this->first_open_rft) {
|
||||
auto new_rft = *this;
|
||||
new_rft.open_wells[wname] = true;
|
||||
new_rft.update(wname, RFT::YES);
|
||||
return new_rft;
|
||||
} else {
|
||||
auto new_rft = *this;
|
||||
auto rft_fopn = std::find_if( new_rft.rft_state.begin(), new_rft.rft_state.end(), [&wname](const auto& rft_pair) -> bool { return (rft_pair.second == RFT::FOPN && rft_pair.first == wname); });
|
||||
if (rft_fopn != new_rft.rft_state.end())
|
||||
rft_fopn->second = RFT::YES;
|
||||
|
||||
new_rft.open_wells[wname] = true;
|
||||
return new_rft;
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
void RFTConfig::first_open(bool on) {
|
||||
this->first_open_rft = on;
|
||||
}
|
||||
|
||||
void RFTConfig::update(const std::string& wname, RFT mode) {
|
||||
if (mode == RFT::NO) {
|
||||
auto iter = this->rft_state.find(wname);
|
||||
if (iter != this->rft_state.end())
|
||||
this->rft_state.erase( iter );
|
||||
return;
|
||||
}
|
||||
if (mode == RFT::FOPN) {
|
||||
if (this->open_wells.count(wname) > 0) {
|
||||
this->open_wells[wname] = true;
|
||||
mode = RFT::YES;
|
||||
}
|
||||
}
|
||||
this->rft_state[wname] = mode;
|
||||
}
|
||||
|
||||
bool RFTConfig::rft() const {
|
||||
for (const auto& [_, mode] : this->rft_state) {
|
||||
(void)_;
|
||||
if (mode != RFT::FOPN)
|
||||
return true;
|
||||
}
|
||||
|
||||
auto rft_open = this->well_open_rft_name.find(well_iter->first);
|
||||
if (rft_open == this->well_open_rft_name.end())
|
||||
// No FOPN event configured for this well (i.e., well_iter->first).
|
||||
return false;
|
||||
|
||||
// An FOPN setting has been configured with the WRFTPLT keyword.
|
||||
// Output RFT data if we're at the FOPN event time and the well is
|
||||
// already open or if we're after FOPN event time and the well
|
||||
// opens at this step.
|
||||
return ((report_step == rft_open->second) && (well_iter->second <= report_step))
|
||||
|| ((report_step > rft_open->second) && (well_iter->second == report_step));
|
||||
return false;
|
||||
}
|
||||
|
||||
std::size_t RFTConfig::firstWellopenStepNotBefore(const std::size_t report_step) const {
|
||||
if (well_open.empty())
|
||||
// No well-open events at all (unexpected).
|
||||
return this->tm.size();
|
||||
|
||||
using VT = WellOpenTimeMap::value_type;
|
||||
|
||||
auto event = std::min_element(this->well_open.begin(), this->well_open.end(),
|
||||
[report_step](const VT& elem, const VT& low) -> bool
|
||||
{
|
||||
if (elem.second < report_step)
|
||||
return false;
|
||||
|
||||
return elem.second < low.second;
|
||||
});
|
||||
|
||||
if (event->second < report_step)
|
||||
// All well-open events happen *before* 'report_step'.
|
||||
return this->tm.size();
|
||||
|
||||
return event->second;
|
||||
bool RFTConfig::plt() const {
|
||||
return (this->plt_state.size() > 0);
|
||||
}
|
||||
|
||||
void RFTConfig::updateFirstIfNotShut(const std::string& well_name, const std::size_t report_step) {
|
||||
auto wo = this->well_open.find(well_name);
|
||||
|
||||
if ((wo != this->well_open.end()) && (wo->second <= report_step))
|
||||
// Well opens no later than 'report_step'. New candidate
|
||||
// first RFT output event is 'report_step'.
|
||||
this->updateFirst(report_step);
|
||||
}
|
||||
|
||||
void RFTConfig::updateFirst(const std::size_t report_step) {
|
||||
this->first_rft_event = std::min(this->first_rft_event, report_step);
|
||||
}
|
||||
|
||||
void RFTConfig::setWellOpenRFT(const std::string& well_name, const std::size_t report_step)
|
||||
{
|
||||
auto pos = this->well_open_rft_name.find(well_name);
|
||||
if (pos == this->well_open_rft_name.end()) {
|
||||
auto stat = this->well_open_rft_name.emplace(well_name, this->tm.size());
|
||||
if (! stat.second)
|
||||
return;
|
||||
|
||||
pos = stat.first;
|
||||
void RFTConfig::update(const std::string& wname, PLT mode) {
|
||||
if (mode == PLT::NO) {
|
||||
auto iter = this->plt_state.find(wname);
|
||||
if (iter != this->plt_state.end())
|
||||
this->plt_state.erase( iter );
|
||||
return;
|
||||
}
|
||||
|
||||
pos->second = std::min(pos->second, report_step);
|
||||
this->plt_state[wname] = mode;
|
||||
}
|
||||
|
||||
bool RFTConfig::active() const {
|
||||
return this->rft() || this->plt();
|
||||
}
|
||||
|
||||
bool RFTConfig::rft(const std::string& wname) const {
|
||||
auto well_iter = this->rft_state.find(wname);
|
||||
if (well_iter == this->rft_state.end())
|
||||
return false;
|
||||
auto mode = well_iter->second;
|
||||
if (mode == RFT::FOPN)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RFTConfig::plt(const std::string& wname) const {
|
||||
auto well_iter = this->plt_state.find(wname);
|
||||
if (well_iter == this->plt_state.end())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
std::optional<RFTConfig> RFTConfig::next() const {
|
||||
auto yes_iter_rft = std::find_if( this->rft_state.begin(), this->rft_state.end(), [](const auto& rft_pair) { return rft_pair.second == RFT::YES; });
|
||||
auto yes_iter_plt = std::find_if( this->plt_state.begin(), this->plt_state.end(), [](const auto& plt_pair) { return plt_pair.second == PLT::YES; });
|
||||
if (yes_iter_rft == this->rft_state.end() && yes_iter_plt == this->plt_state.end())
|
||||
return {};
|
||||
|
||||
auto new_rft = *this;
|
||||
for (auto iter = new_rft.rft_state.begin(); iter != new_rft.rft_state.end(); ) {
|
||||
if (iter->second == RFT::YES)
|
||||
iter = new_rft.rft_state.erase(iter);
|
||||
else
|
||||
iter++;
|
||||
}
|
||||
|
||||
for (auto iter = new_rft.plt_state.begin(); iter != new_rft.plt_state.end(); ) {
|
||||
if (iter->second == PLT::YES)
|
||||
iter = new_rft.plt_state.erase(iter);
|
||||
else
|
||||
iter++;
|
||||
}
|
||||
|
||||
return new_rft;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -112,7 +112,6 @@ namespace {
|
||||
m_static( python, deck, runspec ),
|
||||
m_sched_deck(deck, restart_info(rst) ),
|
||||
m_timeMap( deck , restart_info( rst )),
|
||||
rft_config(this->m_timeMap),
|
||||
restart_config(m_timeMap, deck, parseContext, errors)
|
||||
{
|
||||
if (rst) {
|
||||
@@ -244,7 +243,6 @@ namespace {
|
||||
|
||||
result.m_static = ScheduleStatic::serializeObject();
|
||||
result.m_timeMap = TimeMap::serializeObject();
|
||||
result.rft_config = RFTConfig::serializeObject();
|
||||
result.restart_config = RestartConfig::serializeObject();
|
||||
result.snapshots = { ScheduleState::serializeObject() };
|
||||
|
||||
@@ -273,8 +271,7 @@ namespace {
|
||||
const FieldPropsManager* fp,
|
||||
const std::vector<std::string>& matching_wells,
|
||||
bool runtime,
|
||||
const std::unordered_map<std::string, double> * target_wellpi,
|
||||
std::vector<std::pair<const DeckKeyword*, std::size_t > >& rftProperties) {
|
||||
const std::unordered_map<std::string, double> * target_wellpi) {
|
||||
|
||||
static const std::unordered_set<std::string> require_grid = {
|
||||
"COMPDAT",
|
||||
@@ -283,7 +280,6 @@ namespace {
|
||||
|
||||
|
||||
HandlerContext handlerContext { block, keyword, currentStep, matching_wells, runtime , target_wellpi};
|
||||
|
||||
/*
|
||||
The grid and fieldProps members create problems for reiterating the
|
||||
Schedule section. We therefor single them out very clearly here.
|
||||
@@ -295,13 +291,7 @@ namespace {
|
||||
if (handleNormalKeyword(handlerContext, parseContext, errors))
|
||||
return;
|
||||
|
||||
else if (keyword.name() == "WRFT")
|
||||
rftProperties.push_back( std::make_pair( &keyword , currentStep ));
|
||||
|
||||
else if (keyword.name() == "WRFTPLT")
|
||||
rftProperties.push_back( std::make_pair( &keyword , currentStep ));
|
||||
|
||||
else if (keyword.name() == "PYACTION")
|
||||
if (keyword.name() == "PYACTION")
|
||||
handlePYACTION(keyword);
|
||||
}
|
||||
|
||||
@@ -473,24 +463,12 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
fp,
|
||||
{},
|
||||
runtime,
|
||||
target_wellpi,
|
||||
rftProperties);
|
||||
target_wellpi);
|
||||
keyword_index++;
|
||||
}
|
||||
|
||||
checkIfAllConnectionsIsShut(report_step);
|
||||
}
|
||||
|
||||
|
||||
for (auto rftPair = rftProperties.begin(); rftPair != rftProperties.end(); ++rftPair) {
|
||||
const DeckKeyword& keyword = *rftPair->first;
|
||||
std::size_t timeStep = rftPair->second;
|
||||
if (keyword.name() == "WRFT")
|
||||
applyWRFT(keyword, timeStep);
|
||||
|
||||
if (keyword.name() == "WRFTPLT")
|
||||
applyWRFTPLT(keyword, timeStep);
|
||||
}
|
||||
}
|
||||
|
||||
void Schedule::addACTIONX(const Action::ActionX& action) {
|
||||
@@ -560,8 +538,11 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
auto old_status = well2.getStatus();
|
||||
bool update = false;
|
||||
if (well2.updateStatus(status)) {
|
||||
if (status == Well::Status::OPEN)
|
||||
this->rft_config.addWellOpen(well_name, reportStep);
|
||||
if (status == Well::Status::OPEN) {
|
||||
auto new_rft = this->snapshots.back().rft_config().well_open(well_name);
|
||||
if (new_rft.has_value())
|
||||
this->snapshots.back().rft_config.update( std::move(*new_rft) );
|
||||
}
|
||||
|
||||
/*
|
||||
The Well::updateStatus() will always return true because a new
|
||||
@@ -628,11 +609,8 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
+ " This well is prevented from opening at "
|
||||
+ std::to_string( days ) + " days";
|
||||
OpmLog::note(msg);
|
||||
} else {
|
||||
} else
|
||||
this->updateWellStatus( wname, currentStep, well_status);
|
||||
if (well_status == open)
|
||||
this->rft_config.addWellOpen(wname, currentStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -663,39 +641,13 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
}
|
||||
}
|
||||
|
||||
void Schedule::applyWRFT(const DeckKeyword& keyword, std::size_t currentStep) {
|
||||
/* Rule for handling RFT: Request current RFT data output for specified wells, plus output when
|
||||
* any well is subsequently opened
|
||||
*/
|
||||
|
||||
for (const auto& record : keyword) {
|
||||
|
||||
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
|
||||
const auto well_names = wellNames(wellNamePattern, currentStep);
|
||||
for (const auto& well_name : well_names)
|
||||
this->rft_config.updateRFT(well_name, currentStep, RFTConfig::RFT::YES);
|
||||
|
||||
std::optional<std::size_t> Schedule::first_RFT() const {
|
||||
for (std::size_t report_step = 0; report_step < this->snapshots.size(); report_step++) {
|
||||
if (this->snapshots[report_step].rft_config().active())
|
||||
return report_step;
|
||||
}
|
||||
|
||||
this->rft_config.setWellOpenRFT(currentStep);
|
||||
}
|
||||
|
||||
void Schedule::applyWRFTPLT(const DeckKeyword& keyword, std::size_t currentStep) {
|
||||
for (const auto& record : keyword) {
|
||||
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
|
||||
|
||||
RFTConfig::RFT RFTKey = RFTConfig::RFTFromString(record.getItem("OUTPUT_RFT").getTrimmedString(0));
|
||||
RFTConfig::PLT PLTKey = RFTConfig::PLTFromString(record.getItem("OUTPUT_PLT").getTrimmedString(0));
|
||||
const auto well_names = wellNames(wellNamePattern, currentStep);
|
||||
for (const auto& well_name : well_names) {
|
||||
this->rft_config.updateRFT(well_name, currentStep, RFTKey);
|
||||
this->rft_config.updatePLT(well_name, currentStep, PLTKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const RFTConfig& Schedule::rftConfig() const {
|
||||
return this->rft_config;
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
@@ -1201,7 +1153,6 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
void Schedule::applyAction(std::size_t reportStep, const std::chrono::system_clock::time_point&, const Action::ActionX& action, const Action::Result& result, const std::unordered_map<std::string, double>& target_wellpi) {
|
||||
ParseContext parseContext;
|
||||
ErrorGuard errors;
|
||||
std::vector<std::pair< const DeckKeyword* , std::size_t> > ignored_rftProperties;
|
||||
|
||||
this->snapshots.resize(reportStep + 1);
|
||||
auto& input_block = this->m_sched_deck[reportStep];
|
||||
@@ -1217,8 +1168,7 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
nullptr,
|
||||
result.wells(),
|
||||
true,
|
||||
&target_wellpi,
|
||||
ignored_rftProperties);
|
||||
&target_wellpi);
|
||||
}
|
||||
if (reportStep < this->m_sched_deck.size() - 1)
|
||||
iterateScheduleSection(reportStep + 1, this->m_sched_deck.size(), parseContext, errors, true, &target_wellpi, nullptr, nullptr);
|
||||
@@ -1267,7 +1217,6 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e
|
||||
|
||||
return this->m_timeMap == data.m_timeMap &&
|
||||
this->m_static == data.m_static &&
|
||||
this->rft_config == data.rft_config &&
|
||||
this->restart_config == data.restart_config &&
|
||||
this->snapshots == data.snapshots;
|
||||
}
|
||||
@@ -1682,6 +1631,7 @@ void Schedule::create_first(const std::chrono::system_clock::time_point& start_t
|
||||
sched_state.udq.update( UDQConfig( this->m_static.m_runspec.udqParams() ));
|
||||
sched_state.glo.update( GasLiftOpt() );
|
||||
sched_state.guide_rate.update( GuideRateConfig() );
|
||||
sched_state.rft_config.update( RFTConfig() );
|
||||
this->addGroup("FIELD", 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -65,6 +65,10 @@ ScheduleState::ScheduleState(const ScheduleState& src, const std::chrono::system
|
||||
this->m_wellgroup_events.reset();
|
||||
this->m_geo_keywords.clear();
|
||||
this->target_wellpi.clear();
|
||||
|
||||
auto next_rft = this->rft_config().next();
|
||||
if (next_rft.has_value())
|
||||
this->rft_config.update( std::move(*next_rft) );
|
||||
}
|
||||
|
||||
ScheduleState::ScheduleState(const ScheduleState& src, const std::chrono::system_clock::time_point& start_time, const std::chrono::system_clock::time_point& end_time) :
|
||||
@@ -157,6 +161,7 @@ bool ScheduleState::operator==(const ScheduleState& other) const {
|
||||
this->udq_active.get() == other.udq_active.get() &&
|
||||
this->glo.get() == other.glo.get() &&
|
||||
this->guide_rate.get() == other.guide_rate.get() &&
|
||||
this->rft_config.get() == other.rft_config.get() &&
|
||||
this->udq.get() == other.udq.get() &&
|
||||
this->wells == other.wells &&
|
||||
this->groups == other.groups &&
|
||||
@@ -194,6 +199,7 @@ ScheduleState ScheduleState::serializeObject() {
|
||||
ts.udq.update( UDQConfig::serializeObject() );
|
||||
ts.guide_rate.update( GuideRateConfig::serializeObject() );
|
||||
ts.glo.update( GasLiftOpt::serializeObject() );
|
||||
ts.rft_config.update( RFTConfig::serializeObject() );
|
||||
|
||||
return ts;
|
||||
}
|
||||
|
||||
@@ -166,47 +166,36 @@ TSTEP
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(Simple)
|
||||
{
|
||||
const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_all_open());
|
||||
const auto& rftcfg = cse.sched.rftConfig();
|
||||
|
||||
BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(20));
|
||||
BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t(20));
|
||||
const auto& sched = cse.sched;
|
||||
BOOST_CHECK(!sched.first_RFT().has_value());
|
||||
|
||||
for (auto nstep = std::size_t(20), step = 0*nstep; step < nstep; ++step) {
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(step), "RFT Config must be Inactive");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", step),
|
||||
R"(Well "I" must not have a Well Open RFT request")");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", step),
|
||||
R"(Well "P" must not have a Well Open RFT request")");
|
||||
BOOST_CHECK_MESSAGE( !sched[step].rft_config().active(), "RFT Config must be Inactive");
|
||||
BOOST_CHECK_MESSAGE( !sched[step].rft_config().rft("P"), "RFT must be Inactive");
|
||||
BOOST_CHECK_MESSAGE( !sched[step].rft_config().rft("I"), "PLT must be Inactive");
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(Simple_Deferred_Open)
|
||||
{
|
||||
const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_deferred_open());
|
||||
const auto& rftcfg = cse.sched.rftConfig();
|
||||
|
||||
BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(20));
|
||||
BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t(20));
|
||||
const auto& sched = cse.sched;
|
||||
BOOST_CHECK(!sched.first_RFT().has_value());
|
||||
|
||||
for (auto nstep = std::size_t(20), step = 0*nstep; step < nstep; ++step) {
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(step), "RFT Config must be Inactive");
|
||||
|
||||
// WELOPEN does not imply RFT output
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", step),
|
||||
R"(Well "I" must not have a Well Open RFT request")");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", step),
|
||||
R"(Well "P" must not have a Well Open RFT request")");
|
||||
BOOST_CHECK_MESSAGE( !sched[step].rft_config().active(), "RFT Config must be Inactive");
|
||||
BOOST_CHECK_MESSAGE( !sched[step].rft_config().rft("P"), "RFT must be Inactive");
|
||||
BOOST_CHECK_MESSAGE( !sched[step].rft_config().rft("I"), "PLT must be Inactive");
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END() // No_RFT_Keywords
|
||||
|
||||
|
||||
// =====================================================================
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(WRFT)
|
||||
@@ -294,190 +283,95 @@ TSTEP
|
||||
BOOST_AUTO_TEST_CASE(Simple)
|
||||
{
|
||||
const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_all_open());
|
||||
const auto& rftcfg = cse.sched.rftConfig();
|
||||
const auto& sched = cse.sched;
|
||||
|
||||
BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(11));
|
||||
BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 7));
|
||||
BOOST_CHECK_EQUAL(sched.first_RFT().value(), std::size_t( 7));
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 4), R"(Should NOT Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 7), R"(Should Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[0].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[1].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[2].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[3].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[4].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[5].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[6].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[7].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[8].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[9].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 7), R"(Should NOT Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 8), R"(Should NOT Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 9), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[0].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[1].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[2].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[3].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[4].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[5].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[6].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[7].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[8].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[9].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(0), "RFT Config must be Inactive at Step 0");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(1), "RFT Config must be Inactive at Step 1");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(2), "RFT Config must be Inactive at Step 2");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(3), "RFT Config must be Inactive at Step 3");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(4), "RFT Config must be Inactive at Step 4");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(5), "RFT Config must be Inactive at Step 5");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(6), "RFT Config must be Inactive at Step 6");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(7), "RFT Config must be ACTIVE at Step 7");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(8), "RFT Config must be Inactive at Step 8");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(9), "RFT Config must be Inactive at Step 9");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 0),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 0")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 1),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 1")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 2),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 2")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 3),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 3")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 4),
|
||||
R"(Well "I" must have a Well Open RFT request at step 4")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 5),
|
||||
R"(Well "I" must have a Well Open RFT request at step 5")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 6),
|
||||
R"(Well "I" must have a Well Open RFT request at step 6")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 7),
|
||||
R"(Well "I" must have a Well Open RFT request at step 7")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 8),
|
||||
R"(Well "I" must have a Well Open RFT request at step 8")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 9),
|
||||
R"(Well "I" must have a Well Open RFT request at step 9")");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 0),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 0")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 1),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 1")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 2),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 2")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 3),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 3")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 4),
|
||||
R"(Well "P" must have a Well Open RFT request at step 4")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 5),
|
||||
R"(Well "P" must have a Well Open RFT request at step 5")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 6),
|
||||
R"(Well "P" must have a Well Open RFT request at step 6")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 7),
|
||||
R"(Well "P" must have a Well Open RFT request at step 7")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 8),
|
||||
R"(Well "P" must have a Well Open RFT request at step 8")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 9),
|
||||
R"(Well "P" must have a Well Open RFT request at step 9")");
|
||||
BOOST_CHECK_MESSAGE(!sched[0].rft_config().active(), "RFT Config must be Inactive at Step 0");
|
||||
BOOST_CHECK_MESSAGE(!sched[1].rft_config().active(), "RFT Config must be Inactive at Step 1");
|
||||
BOOST_CHECK_MESSAGE(!sched[2].rft_config().active(), "RFT Config must be Inactive at Step 2");
|
||||
BOOST_CHECK_MESSAGE(!sched[3].rft_config().active(), "RFT Config must be Inactive at Step 3");
|
||||
BOOST_CHECK_MESSAGE(!sched[4].rft_config().active(), "RFT Config must be Inactive at Step 4");
|
||||
BOOST_CHECK_MESSAGE(!sched[5].rft_config().active(), "RFT Config must be Inactive at Step 5");
|
||||
BOOST_CHECK_MESSAGE(!sched[6].rft_config().active(), "RFT Config must be Inactive at Step 6");
|
||||
BOOST_CHECK_MESSAGE( sched[7].rft_config().active(), "RFT Config must be ACTIVE at Step 7");
|
||||
BOOST_CHECK_MESSAGE(!sched[8].rft_config().active(), "RFT Config must be Inactive at Step 8");
|
||||
BOOST_CHECK_MESSAGE(!sched[9].rft_config().active(), "RFT Config must be Inactive at Step 9");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(Deferred_Open)
|
||||
{
|
||||
const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_deferred_open());
|
||||
const auto& rftcfg = cse.sched.rftConfig();
|
||||
const auto& sched = cse.sched;
|
||||
|
||||
BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(14));
|
||||
BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 7));
|
||||
BOOST_CHECK_EQUAL(sched.first_RFT().value(), std::size_t( 7));
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 4), R"(Should NOT Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 7), R"(Should NOT Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 10), R"(Should Output RFT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 11), R"(Should NOT Output RFT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 12), R"(Should NOT Output RFT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 12)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 7), R"(Should Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 8), R"(Should NOT Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 9), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 10), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 11), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 12), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 0), "RFT Config must be Inactive at Step 0");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 1), "RFT Config must be Inactive at Step 1");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 2), "RFT Config must be Inactive at Step 2");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 3), "RFT Config must be Inactive at Step 3");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 4), "RFT Config must be Inactive at Step 4");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 5), "RFT Config must be Inactive at Step 5");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 6), "RFT Config must be Inactive at Step 6");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 7), "RFT Config must be ACTIVE at Step 7");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 8), "RFT Config must be Inactive at Step 8");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 9), "RFT Config must be Inactive at Step 9");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(10), "RFT Config must be ACTIVE at Step 10");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(11), "RFT Config must be Inactive at Step 11");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(12), "RFT Config must be Inactive at Step 12");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 0),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 0")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 1),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 1")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 2),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 2")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("I", 3),
|
||||
R"(Well "I" must not have a Well Open RFT request at step 3")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 4),
|
||||
R"(Well "I" must have a Well Open RFT request at step 4")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 5),
|
||||
R"(Well "I" must have a Well Open RFT request at step 5")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 6),
|
||||
R"(Well "I" must have a Well Open RFT request at step 6")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 7),
|
||||
R"(Well "I" must have a Well Open RFT request at step 7")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 8),
|
||||
R"(Well "I" must have a Well Open RFT request at step 8")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 9),
|
||||
R"(Well "I" must have a Well Open RFT request at step 9")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 10),
|
||||
R"(Well "I" must have a Well Open RFT request at step 10")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 11),
|
||||
R"(Well "I" must have a Well Open RFT request at step 11")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("I", 12),
|
||||
R"(Well "I" must have a Well Open RFT request at step 12")");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 0),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 0")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 1),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 1")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 2),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 2")");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.getWellOpenRFT("P", 3),
|
||||
R"(Well "P" must not have a Well Open RFT request at step 3")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 4),
|
||||
R"(Well "P" must have a Well Open RFT request at step 4")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 5),
|
||||
R"(Well "P" must have a Well Open RFT request at step 5")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 6),
|
||||
R"(Well "P" must have a Well Open RFT request at step 6")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 7),
|
||||
R"(Well "P" must have a Well Open RFT request at step 7")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 8),
|
||||
R"(Well "P" must have a Well Open RFT request at step 8")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 9),
|
||||
R"(Well "P" must have a Well Open RFT request at step 9")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 10),
|
||||
R"(Well "P" must have a Well Open RFT request at step 10")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 11),
|
||||
R"(Well "P" must have a Well Open RFT request at step 11")");
|
||||
BOOST_CHECK_MESSAGE(rftcfg.getWellOpenRFT("P", 12),
|
||||
R"(Well "P" must have a Well Open RFT request at step 12")");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().active(), "RFT Config must be Inactive at Step 0");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().active(), "RFT Config must be Inactive at Step 1");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().active(), "RFT Config must be Inactive at Step 2");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().active(), "RFT Config must be Inactive at Step 3");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().active(), "RFT Config must be Inactive at Step 4");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().active(), "RFT Config must be Inactive at Step 5");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().active(), "RFT Config must be Inactive at Step 6");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().active(), "RFT Config must be ACTIVE at Step 7");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().active(), "RFT Config must be Inactive at Step 8");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().active(), "RFT Config must be Inactive at Step 9");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().active(), "RFT Config must be ACTIVE at Step 10");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().active(), "RFT Config must be Inactive at Step 11");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().active(), "RFT Config must be Inactive at Step 12");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END() // WRFT
|
||||
@@ -559,7 +453,7 @@ WRFTPLT
|
||||
|
||||
TSTEP
|
||||
-- 5..7 (sim step = 4..6)
|
||||
3*30 /
|
||||
30 30 30/
|
||||
|
||||
WELOPEN
|
||||
'I' 'OPEN' /
|
||||
@@ -567,7 +461,7 @@ WELOPEN
|
||||
|
||||
TSTEP
|
||||
-- 8..10 (sim step = 7..9)
|
||||
3*30 /
|
||||
30 30 30 /
|
||||
|
||||
WRFTPLT
|
||||
'P' 1* YES /
|
||||
@@ -584,7 +478,7 @@ COMPDAT
|
||||
|
||||
TSTEP
|
||||
-- 11..13 (sim step = 10..12)
|
||||
3*30 /
|
||||
30 30 30 /
|
||||
|
||||
WRFTPLT
|
||||
'P' YES /
|
||||
@@ -614,264 +508,268 @@ TSTEP
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(All_Open)
|
||||
{
|
||||
const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_all_open());
|
||||
const auto& rftcfg = cse.sched.rftConfig();
|
||||
const auto& sched = cse.sched;
|
||||
BOOST_CHECK_EQUAL(sched.first_RFT().value(), std::size_t( 4));
|
||||
|
||||
BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(16));
|
||||
BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 4));
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 4].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( sched[13].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE( sched[14].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE( sched[15].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 15)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 4), R"(Should Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 7), R"(Should NOT Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 10), R"(Should Output RFT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 11), R"(Should NOT Output RFT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 12), R"(Should NOT Output RFT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 13), R"(Should Output RFT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 14), R"(Should Output RFT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 15), R"(Should Output RFT Data for "P" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().plt("P"), R"(Should Output PLT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[13].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 15)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 0), R"(Should NOT Output PLT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 1), R"(Should NOT Output PLT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 2), R"(Should NOT Output PLT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 3), R"(Should NOT Output PLT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 4), R"(Should NOT Output PLT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 5), R"(Should NOT Output PLT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 6), R"(Should NOT Output PLT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.plt("P", 7), R"(Should Output PLT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 8), R"(Should NOT Output PLT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 9), R"(Should NOT Output PLT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 10), R"(Should NOT Output PLT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 11), R"(Should NOT Output PLT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 12), R"(Should NOT Output PLT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 13), R"(Should NOT Output PLT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 14), R"(Should NOT Output PLT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 15), R"(Should NOT Output PLT Data for "P" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 8].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 9].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( sched[13].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE( sched[14].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE( sched[15].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 15)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 7), R"(Should Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 8), R"(Should Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 9), R"(Should Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 10), R"(Should NOT Output RFT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 11), R"(Should NOT Output RFT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 12), R"(Should NOT Output RFT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 13), R"(Should Output RFT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 14), R"(Should Output RFT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 15), R"(Should Output RFT Data for "I" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().plt("I"), R"(Should Output PLT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[13].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 15)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 0), R"(Should NOT Output PLT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 1), R"(Should NOT Output PLT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 2), R"(Should NOT Output PLT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 3), R"(Should NOT Output PLT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 4), R"(Should NOT Output PLT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 5), R"(Should NOT Output PLT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 6), R"(Should NOT Output PLT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 7), R"(Should NOT Output PLT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 8), R"(Should NOT Output PLT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 9), R"(Should NOT Output PLT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.plt("I", 10), R"(Should Output PLT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 11), R"(Should NOT Output PLT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 12), R"(Should NOT Output PLT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 13), R"(Should NOT Output PLT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 14), R"(Should NOT Output PLT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 15), R"(Should NOT Output PLT Data for "I" at Step 15)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 0), R"(RFT Config must be Inactive at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 1), R"(RFT Config must be Inactive at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 2), R"(RFT Config must be Inactive at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 3), R"(RFT Config must be Inactive at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 4), R"(RFT Config must be Active at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 5), R"(RFT Config must be Inactive at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 6), R"(RFT Config must be Inactive at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 7), R"(RFT Config must be Active at Step 7)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 8), R"(RFT Config must be Active at Step 8)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 9), R"(RFT Config must be Active at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(10), R"(RFT Config must be Active at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(11), R"(RFT Config must be Inactive at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(12), R"(RFT Config must be Inactive at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(13), R"(RFT Config must be Active at Step 13)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(14), R"(RFT Config must be Active at Step 14)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(15), R"(RFT Config must be Active at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().active(), R"(RFT Config must be Inactive at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().active(), R"(RFT Config must be Inactive at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().active(), R"(RFT Config must be Inactive at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().active(), R"(RFT Config must be Inactive at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 4].rft_config().active(), R"(RFT Config must be Active at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().active(), R"(RFT Config must be Inactive at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().active(), R"(RFT Config must be Inactive at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().active(), R"(RFT Config must be Active at Step 7)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 8].rft_config().active(), R"(RFT Config must be Active at Step 8)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 9].rft_config().active(), R"(RFT Config must be Active at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().active(), R"(RFT Config must be Active at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().active(), R"(RFT Config must be Inactive at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().active(), R"(RFT Config must be Inactive at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( sched[13].rft_config().active(), R"(RFT Config must be Active at Step 13)");
|
||||
BOOST_CHECK_MESSAGE( sched[14].rft_config().active(), R"(RFT Config must be Active at Step 14)");
|
||||
BOOST_CHECK_MESSAGE( sched[15].rft_config().active(), R"(RFT Config must be Active at Step 15)");
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(Deferred_Open)
|
||||
{
|
||||
const auto cse = parseDeckString(basesetup_5x5x5() + simple_tstep_deferred_open());
|
||||
const auto& rftcfg = cse.sched.rftConfig();
|
||||
const auto& sched = cse.sched;
|
||||
|
||||
BOOST_CHECK_EQUAL(rftcfg.timeMap().size(), std::size_t(21));
|
||||
BOOST_CHECK_EQUAL(rftcfg.firstRFTOutput(), std::size_t( 4));
|
||||
BOOST_CHECK_EQUAL(sched.first_RFT().value(), std::size_t( 4));
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 0), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 1), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 2), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 3), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 4), R"(Should Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 5), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 6), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 7), R"(Should NOT Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 8), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 9), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 10), R"(Should NOT Output RFT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 11), R"(Should NOT Output RFT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 12), R"(Should NOT Output RFT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 13), R"(Should Output RFT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 14), R"(Should NOT Output RFT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 15), R"(Should NOT Output RFT Data for "P" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 16), R"(Should NOT Output RFT Data for "P" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P", 17), R"(Should NOT Output RFT Data for "P" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 18), R"(Should Output RFT Data for "P" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 19), R"(Should Output RFT Data for "P" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P", 20), R"(Should Output RFT Data for "P" at Step 20)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 4].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( sched[13].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().rft("P"), R"(Should NOT Output RFT Data for "P" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE( sched[18].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE( sched[19].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE( sched[20].rft_config().rft("P"), R"(Should Output RFT Data for "P" at Step 20)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 0), R"(Should NOT Output PLT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 1), R"(Should NOT Output PLT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 2), R"(Should NOT Output PLT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 3), R"(Should NOT Output PLT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 4), R"(Should NOT Output PLT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 5), R"(Should NOT Output PLT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 6), R"(Should NOT Output PLT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 7), R"(Should NOT Output PLT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 8), R"(Should NOT Output PLT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 9), R"(Should NOT Output PLT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.plt("P", 10), R"(Should Output PLT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 11), R"(Should NOT Output PLT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 12), R"(Should NOT Output PLT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 13), R"(Should NOT Output PLT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 14), R"(Should NOT Output PLT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 15), R"(Should NOT Output PLT Data for "P" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 16), R"(Should NOT Output PLT Data for "P" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 17), R"(Should NOT Output PLT Data for "P" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 18), R"(Should NOT Output PLT Data for "P" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 19), R"(Should NOT Output PLT Data for "P" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P", 20), R"(Should NOT Output PLT Data for "P" at Step 20)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().plt("P"), R"(Should Output PLT Data for "P" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[13].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE(!sched[18].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE(!sched[19].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE(!sched[20].rft_config().plt("P"), R"(Should NOT Output PLT Data for "P" at Step 20)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 0), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 1), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 2), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 3), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 4), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 5), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 6), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 7), R"(Should Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 8), R"(Should NOT Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 9), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 10), R"(Should Output RFT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 11), R"(Should Output RFT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 12), R"(Should Output RFT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 13), R"(Should Output RFT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 14), R"(Should NOT Output RFT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 15), R"(Should NOT Output RFT Data for "I" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 16), R"(Should NOT Output RFT Data for "I" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("I", 17), R"(Should NOT Output RFT Data for "I" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 18), R"(Should Output RFT Data for "I" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 19), R"(Should Output RFT Data for "I" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("I", 20), R"(Should Output RFT Data for "I" at Step 20)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE( sched[11].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE( sched[12].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[13].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().rft("I"), R"(Should NOT Output RFT Data for "I" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE( sched[18].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE( sched[19].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE( sched[20].rft_config().rft("I"), R"(Should Output RFT Data for "I" at Step 20)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 0), R"(Should NOT Output PLT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 1), R"(Should NOT Output PLT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 2), R"(Should NOT Output PLT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 3), R"(Should NOT Output PLT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 4), R"(Should NOT Output PLT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 5), R"(Should NOT Output PLT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 6), R"(Should NOT Output PLT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 7), R"(Should NOT Output PLT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 8), R"(Should NOT Output PLT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 9), R"(Should NOT Output PLT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 10), R"(Should NOT Output PLT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 11), R"(Should NOT Output PLT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 12), R"(Should NOT Output PLT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.plt("I", 13), R"(Should Output PLT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 14), R"(Should NOT Output PLT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 15), R"(Should NOT Output PLT Data for "I" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 16), R"(Should NOT Output PLT Data for "I" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 17), R"(Should NOT Output PLT Data for "I" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 18), R"(Should NOT Output PLT Data for "I" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 19), R"(Should NOT Output PLT Data for "I" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("I", 20), R"(Should NOT Output PLT Data for "I" at Step 20)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( sched[13].rft_config().plt("I"), R"(Should Output PLT Data for "I" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE(!sched[18].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE(!sched[19].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE(!sched[20].rft_config().plt("I"), R"(Should NOT Output PLT Data for "I" at Step 20)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 0), R"(Should NOT Output RFT Data for "P2" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 1), R"(Should NOT Output RFT Data for "P2" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 2), R"(Should NOT Output RFT Data for "P2" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 3), R"(Should NOT Output RFT Data for "P2" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 4), R"(Should NOT Output RFT Data for "P2" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 5), R"(Should NOT Output RFT Data for "P2" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 6), R"(Should NOT Output RFT Data for "P2" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 7), R"(Should NOT Output RFT Data for "P2" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 8), R"(Should NOT Output RFT Data for "P2" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 9), R"(Should NOT Output RFT Data for "P2" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 10), R"(Should NOT Output RFT Data for "P2" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 11), R"(Should NOT Output RFT Data for "P2" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 12), R"(Should NOT Output RFT Data for "P2" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 13), R"(Should NOT Output RFT Data for "P2" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 14), R"(Should NOT Output RFT Data for "P2" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 15), R"(Should NOT Output RFT Data for "P2" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[13].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 15)");
|
||||
|
||||
// NOTE: Not at FOPN because P2 was not declared at WRFTPLT:FOPN time.
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 16), R"(Should NOT Output RFT Data for "P2" at Step 16)");
|
||||
// NOTE: Not at FOPN becaus17e P2 was not declared at WRFTPLT:FOPN time.
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 16)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.rft("P2", 17), R"(Should NOT Output RFT Data for "P2" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P2", 18), R"(Should Output RFT Data for "P2" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P2", 19), R"(Should Output RFT Data for "P2" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.rft("P2", 20), R"(Should Output RFT Data for "P2" at Step 20)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().rft("P2"), R"(Should NOT Output RFT Data for "P2" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE( sched[18].rft_config().rft("P2"), R"(Should Output RFT Data for "P2" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE( sched[19].rft_config().rft("P2"), R"(Should Output RFT Data for "P2" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE( sched[20].rft_config().rft("P2"), R"(Should Output RFT Data for "P2" at Step 20)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 0), R"(Should NOT Output PLT Data for "P2" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 1), R"(Should NOT Output PLT Data for "P2" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 2), R"(Should NOT Output PLT Data for "P2" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 3), R"(Should NOT Output PLT Data for "P2" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 4), R"(Should NOT Output PLT Data for "P2" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 5), R"(Should NOT Output PLT Data for "P2" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 6), R"(Should NOT Output PLT Data for "P2" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 7), R"(Should NOT Output PLT Data for "P2" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 8), R"(Should NOT Output PLT Data for "P2" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 9), R"(Should NOT Output PLT Data for "P2" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 10), R"(Should NOT Output PLT Data for "P2" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 11), R"(Should NOT Output PLT Data for "P2" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 12), R"(Should NOT Output PLT Data for "P2" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 13), R"(Should NOT Output PLT Data for "P2" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 14), R"(Should NOT Output PLT Data for "P2" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 15), R"(Should NOT Output PLT Data for "P2" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 16), R"(Should NOT Output PLT Data for "P2" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 17), R"(Should NOT Output PLT Data for "P2" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 18), R"(Should NOT Output PLT Data for "P2" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 19), R"(Should NOT Output PLT Data for "P2" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.plt("P2", 20), R"(Should NOT Output PLT Data for "P2" at Step 20)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 3)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 4].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 6)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 7].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 9)");
|
||||
BOOST_CHECK_MESSAGE(!sched[10].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 10)");
|
||||
BOOST_CHECK_MESSAGE(!sched[11].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 11)");
|
||||
BOOST_CHECK_MESSAGE(!sched[12].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 12)");
|
||||
BOOST_CHECK_MESSAGE(!sched[13].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 16)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 17)");
|
||||
BOOST_CHECK_MESSAGE(!sched[18].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 18)");
|
||||
BOOST_CHECK_MESSAGE(!sched[19].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 19)");
|
||||
BOOST_CHECK_MESSAGE(!sched[20].rft_config().plt("P2"), R"(Should NOT Output PLT Data for "P2" at Step 20)");
|
||||
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 0), R"(RFT Config must be Inactive at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 1), R"(RFT Config must be Inactive at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 2), R"(RFT Config must be Inactive at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 3), R"(RFT Config must be Inactive at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 4), R"(RFT Config must be Active at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 5), R"(RFT Config must be Inactive at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 6), R"(RFT Config must be Inactive at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active( 7), R"(RFT Config must be Active at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 8), R"(RFT Config must be Inactive at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active( 9), R"(RFT Config must be Inactive at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(10), R"(RFT Config must be Active at Step 10)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(11), R"(RFT Config must be Active at Step 11)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(12), R"(RFT Config must be Active at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(13), R"(RFT Config must be Active at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(14), R"(RFT Config must be Inactive at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(15), R"(RFT Config must be Inactive at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(16), R"(RFT Config must be Inactive at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!rftcfg.active(17), R"(RFT Config must be Inactive at Step 15)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(18), R"(RFT Config must be Active at Step 15)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(19), R"(RFT Config must be Active at Step 15)");
|
||||
BOOST_CHECK_MESSAGE( rftcfg.active(20), R"(RFT Config must be Active at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 0].rft_config().active(), R"(RFT Config must be Inactive at Step 0)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 1].rft_config().active(), R"(RFT Config must be Inactive at Step 1)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 2].rft_config().active(), R"(RFT Config must be Inactive at Step 2)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 3].rft_config().active(), R"(RFT Config must be Inactive at Step 3)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 4].rft_config().active(), R"(RFT Config must be Active at Step 4)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 5].rft_config().active(), R"(RFT Config must be Inactive at Step 5)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 6].rft_config().active(), R"(RFT Config must be Inactive at Step 6)");
|
||||
BOOST_CHECK_MESSAGE( sched[ 7].rft_config().active(), R"(RFT Config must be Active at Step 7)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 8].rft_config().active(), R"(RFT Config must be Inactive at Step 8)");
|
||||
BOOST_CHECK_MESSAGE(!sched[ 9].rft_config().active(), R"(RFT Config must be Inactive at Step 9)");
|
||||
BOOST_CHECK_MESSAGE( sched[10].rft_config().active(), R"(RFT Config must be Active at Step 10)");
|
||||
BOOST_CHECK_MESSAGE( sched[11].rft_config().active(), R"(RFT Config must be Active at Step 11)");
|
||||
BOOST_CHECK_MESSAGE( sched[12].rft_config().active(), R"(RFT Config must be Active at Step 12)");
|
||||
BOOST_CHECK_MESSAGE( sched[13].rft_config().active(), R"(RFT Config must be Active at Step 13)");
|
||||
BOOST_CHECK_MESSAGE(!sched[14].rft_config().active(), R"(RFT Config must be Inactive at Step 14)");
|
||||
BOOST_CHECK_MESSAGE(!sched[15].rft_config().active(), R"(RFT Config must be Inactive at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[16].rft_config().active(), R"(RFT Config must be Inactive at Step 15)");
|
||||
BOOST_CHECK_MESSAGE(!sched[17].rft_config().active(), R"(RFT Config must be Inactive at Step 15)");
|
||||
BOOST_CHECK_MESSAGE( sched[18].rft_config().active(), R"(RFT Config must be Active at Step 15)");
|
||||
BOOST_CHECK_MESSAGE( sched[19].rft_config().active(), R"(RFT Config must be Active at Step 15)");
|
||||
BOOST_CHECK_MESSAGE( sched[20].rft_config().active(), R"(RFT Config must be Active at Step 15)");
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END() // WRFTPLT
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RFTConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/OilVaporizationProperties.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellConnections.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Well.hpp>
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/ScheduleState.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RFTConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/OilVaporizationProperties.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellConnections.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Well.hpp>
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Runspec.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/RFTConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/OilVaporizationProperties.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellConnections.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Well.hpp>
|
||||
@@ -341,48 +340,7 @@ COMPDAT // with defaulted I and J
|
||||
return input;
|
||||
}
|
||||
|
||||
static std::string createDeckRFTConfig() {
|
||||
return R"(RUNSPEC
|
||||
START -- 0
|
||||
1 NOV 1979 /
|
||||
|
||||
SCHEDULE
|
||||
DATES -- 1 (sim step = 0)
|
||||
1 DES 1979/
|
||||
/
|
||||
WELSPECS
|
||||
'OP_1' 'OP' 9 9 1* 'OIL' 1* 1* 1* 1* 1* 1* 1* /
|
||||
'OP_2' 'OP' 8 8 1* 'OIL' 1* 1* 1* 1* 1* 1* 1* /
|
||||
'OP_3' 'OP' 7 7 1* 'OIL' 1* 1* 1* 1* 1* 1* 1* /
|
||||
/
|
||||
COMPDAT
|
||||
'OP_1' 9 9 1 1 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
'OP_1' 9 9 2 2 'OPEN' 1* 46.825 0.311 4332.346 1* 1* 'X' 22.123 /
|
||||
'OP_2' 8 8 1 3 'OPEN' 1* 1.168 0.311 107.872 1* 1* 'Y' 21.925 /
|
||||
'OP_2' 8 7 3 3 'OPEN' 1* 15.071 0.311 1391.859 1* 1* 'Y' 21.920 /
|
||||
'OP_2' 8 7 3 6 'OPEN' 1* 6.242 0.311 576.458 1* 1* 'Y' 21.915 /
|
||||
'OP_3' 7 7 1 1 'OPEN' 1* 27.412 0.311 2445.337 1* 1* 'Y' 18.521 /
|
||||
'OP_3' 7 7 2 2 'OPEN' 1* 55.195 0.311 4923.842 1* 1* 'Y' 18.524 /
|
||||
/
|
||||
WELOPEN
|
||||
'OP_2' 'OPEN' /
|
||||
/
|
||||
DATES -- 2 (sim step = 1)
|
||||
10 JUL 2007 /
|
||||
/
|
||||
WRFTPLT
|
||||
'OP_2' 'YES' 'NO' 'NO' /
|
||||
/
|
||||
DATES -- 3 (sim step = 2)
|
||||
10 AUG 2007 /
|
||||
/
|
||||
COMPDAT
|
||||
-- with defaulted I and J
|
||||
'OP_1' 0 * 3 9 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
/
|
||||
END
|
||||
)";
|
||||
}
|
||||
|
||||
bool has_name(const std::vector<std::string>& names, const std::string& name) {
|
||||
auto find_iter = std::find(names.begin(), names.end(), name);
|
||||
@@ -837,108 +795,8 @@ DATES -- 6
|
||||
BOOST_CHECK(Well::Status::SHUT == well_5.getStatus());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWRFT) {
|
||||
Opm::Parser parser;
|
||||
std::string input = R"(
|
||||
START -- 0
|
||||
1 NOV 1979 /
|
||||
SCHEDULE
|
||||
DATES -- 1
|
||||
1 DES 1979/
|
||||
/
|
||||
WELSPECS
|
||||
'OP_1' 'OP' 9 9 1* 'OIL' 1* 1* 1* 1* 1* 1* 1* /
|
||||
'OP_2' 'OP' 4 4 1* 'OIL' 1* 1* 1* 1* 1* 1* 1* /
|
||||
/
|
||||
COMPDAT
|
||||
'OP_1' 9 9 1 1 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
'OP_1' 9 9 2 2 'OPEN' 1* 46.825 0.311 4332.346 1* 1* 'X' 22.123 /
|
||||
'OP_1' 9 9 3 9 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
'OP_2' 4 4 4 9 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
/
|
||||
DATES -- 2
|
||||
10 OKT 2008 /
|
||||
/
|
||||
WRFT
|
||||
/
|
||||
WELOPEN
|
||||
'OP_1' OPEN /
|
||||
/
|
||||
DATES -- 3
|
||||
10 NOV 2008 /
|
||||
/
|
||||
WELOPEN
|
||||
'OP_2' OPEN /
|
||||
/
|
||||
DATES -- 4
|
||||
30 NOV 2008 /
|
||||
/
|
||||
)";
|
||||
|
||||
const auto& schedule = make_schedule(input);
|
||||
const auto& rft_config = schedule.rftConfig();
|
||||
|
||||
BOOST_CHECK_EQUAL(2U, rft_config.firstRFTOutput());
|
||||
BOOST_CHECK_EQUAL(true, rft_config.rft("OP_1", 2));
|
||||
BOOST_CHECK_EQUAL(true, rft_config.rft("OP_2", 3));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWRFTPLT) {
|
||||
Opm::Parser parser;
|
||||
std::string input = R"(
|
||||
START -- 0
|
||||
1 NOV 1979 /
|
||||
SCHEDULE
|
||||
DATES -- 1
|
||||
1 DES 1979/
|
||||
/
|
||||
WELSPECS
|
||||
'OP_1' 'OP' 9 9 1* 'OIL' 1* 1* 1* 1* 1* 1* 1* /
|
||||
/
|
||||
COMPDAT
|
||||
'OP_1' 9 9 1 1 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
'OP_1' 9 9 2 2 'OPEN' 1* 46.825 0.311 4332.346 1* 1* 'X' 22.123 /
|
||||
'OP_1' 9 9 3 9 'OPEN' 1* 32.948 0.311 3047.839 1* 1* 'X' 22.100 /
|
||||
/
|
||||
WELOPEN
|
||||
'OP_1' SHUT /
|
||||
/
|
||||
DATES -- 2
|
||||
10 OKT 2006 /
|
||||
/
|
||||
WELOPEN
|
||||
'OP_1' SHUT /
|
||||
/
|
||||
WRFTPLT
|
||||
'OP_1' FOPN /
|
||||
/
|
||||
DATES -- 3
|
||||
10 OKT 2007 /
|
||||
/
|
||||
WELOPEN
|
||||
'OP_1' OPEN 0 0 0 0 0 /
|
||||
/
|
||||
DATES -- 4
|
||||
10 OKT 2008 /
|
||||
/
|
||||
WELOPEN
|
||||
'OP_1' OPEN /
|
||||
/
|
||||
DATES -- 5
|
||||
10 NOV 2008 /
|
||||
/
|
||||
)";
|
||||
|
||||
const auto& schedule = make_schedule(input);
|
||||
const auto& well = schedule.getWell("OP_1", 4);
|
||||
BOOST_CHECK(Well::Status::OPEN == well.getStatus());
|
||||
|
||||
const auto& rft_config = schedule.rftConfig();
|
||||
BOOST_CHECK_EQUAL(rft_config.rft("OP_1", 3),false);
|
||||
BOOST_CHECK_EQUAL(rft_config.rft("OP_1", 4),true);
|
||||
BOOST_CHECK_EQUAL(rft_config.rft("OP_1", 5),false);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(createDeckWithWeltArg) {
|
||||
std::string input = R"(
|
||||
@@ -3420,60 +3278,6 @@ BOOST_AUTO_TEST_CASE(GroupOrderTest) {
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(RFT_CONFIG) {
|
||||
std::vector<std::time_t> tp = { asTimeT( TimeStampUTC(2010, 1, 1)),
|
||||
asTimeT( TimeStampUTC(2010, 1, 2)),
|
||||
asTimeT( TimeStampUTC(2010, 1, 3)),
|
||||
asTimeT( TimeStampUTC(2010, 1, 4)),
|
||||
asTimeT( TimeStampUTC(2010, 1, 5)),
|
||||
asTimeT( TimeStampUTC(2010, 1, 6))};
|
||||
|
||||
|
||||
|
||||
TimeMap tm(tp);
|
||||
RFTConfig conf(tm);
|
||||
BOOST_CHECK_THROW( conf.rft("W1", 100), std::invalid_argument);
|
||||
BOOST_CHECK_THROW( conf.plt("W1", 100), std::invalid_argument);
|
||||
|
||||
BOOST_CHECK(!conf.rft("W1", 2));
|
||||
BOOST_CHECK(!conf.plt("W1", 2));
|
||||
|
||||
|
||||
conf.setWellOpenRFT(2);
|
||||
BOOST_CHECK(!conf.getWellOpenRFT("W1", 0));
|
||||
|
||||
|
||||
conf.updateRFT("W1", 2, RFTConfig::RFT::YES);
|
||||
BOOST_CHECK(conf.rft("W1", 2));
|
||||
BOOST_CHECK(!conf.rft("W1", 1));
|
||||
BOOST_CHECK(!conf.rft("W1", 3));
|
||||
|
||||
conf.updateRFT("W2", 2, RFTConfig::RFT::REPT);
|
||||
conf.updateRFT("W2", 4, RFTConfig::RFT::NO);
|
||||
BOOST_CHECK(!conf.rft("W2", 1));
|
||||
BOOST_CHECK( conf.rft("W2", 2));
|
||||
BOOST_CHECK( conf.rft("W2", 3));
|
||||
BOOST_CHECK(!conf.rft("W2", 4));
|
||||
|
||||
|
||||
conf.setWellOpenRFT("W3");
|
||||
BOOST_CHECK(conf.getWellOpenRFT("W3", 2));
|
||||
|
||||
conf.updateRFT("W4", 2, RFTConfig::RFT::FOPN);
|
||||
BOOST_CHECK(conf.getWellOpenRFT("W4", 2));
|
||||
|
||||
|
||||
conf.addWellOpen("W10", 2);
|
||||
conf.addWellOpen("W100", 3);
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(RFT_CONFIG2) {
|
||||
const auto& schedule = make_schedule(createDeckRFTConfig());
|
||||
const auto& rft_config = schedule.rftConfig();
|
||||
|
||||
BOOST_CHECK_EQUAL(2U, rft_config.firstRFTOutput());
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(nupcol) {
|
||||
|
||||
@@ -154,14 +154,6 @@ BOOST_AUTO_TEST_CASE(WellTesting) {
|
||||
|
||||
BOOST_CHECK( Well::Status::SHUT == sched.getWell("W_2", 3).getStatus());
|
||||
|
||||
{
|
||||
const auto& rft_config = sched.rftConfig();
|
||||
BOOST_CHECK( !rft_config.rft("W_2", 2));
|
||||
BOOST_CHECK( rft_config.rft("W_2", 3));
|
||||
BOOST_CHECK( rft_config.rft("W_2", 4));
|
||||
BOOST_CHECK( !rft_config.rft("W_2", 5));
|
||||
BOOST_CHECK( rft_config.rft("W_1", 3));
|
||||
}
|
||||
{
|
||||
const auto & prop3 = sched.getWell("W_2", 3).getProductionProperties();
|
||||
BOOST_CHECK( Well::ProducerCMode::ORAT == prop3.controlMode);
|
||||
|
||||
Reference in New Issue
Block a user