mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Support RPTSCHED WELLS=N
This commit is contained in:
parent
5137f51848
commit
6ba9dc086c
@ -31,6 +31,7 @@
|
|||||||
#include <dune/grid/common/partitionset.hh>
|
#include <dune/grid/common/partitionset.hh>
|
||||||
|
|
||||||
#include <opm/common/OpmLog/OpmLog.hpp>
|
#include <opm/common/OpmLog/OpmLog.hpp>
|
||||||
|
#include <opm/input/eclipse/Schedule/RPTConfig.hpp>
|
||||||
|
|
||||||
#include <opm/input/eclipse/Units/UnitSystem.hpp>
|
#include <opm/input/eclipse/Units/UnitSystem.hpp>
|
||||||
|
|
||||||
@ -375,6 +376,28 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void writeReports(const SimulatorTimer& timer) {
|
||||||
|
const int reportStepNum = simulator_.episodeIndex() + 1;
|
||||||
|
auto rstep = timer.reportStepNum();
|
||||||
|
|
||||||
|
if ((rstep > 0) && (this->collectOnIORank_.isIORank())){
|
||||||
|
|
||||||
|
const auto& rpt = this->schedule_[rstep-1].rpt_config.get();
|
||||||
|
if (rpt.contains("WELLS") && rpt.at("WELLS") > 0) {
|
||||||
|
outputModule_->outputTimeStamp("WELLS", timer.simulationTimeElapsed(), rstep, timer.currentDateTime());
|
||||||
|
outputModule_->outputProdLog(reportStepNum);
|
||||||
|
outputModule_->outputInjLog(reportStepNum);
|
||||||
|
outputModule_->outputCumLog(reportStepNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
outputModule_->outputFipAndResvLog(inplace_, rstep, timer.simulationTimeElapsed(),
|
||||||
|
timer.currentDateTime(), false, simulator_.gridView().comm());
|
||||||
|
|
||||||
|
|
||||||
|
OpmLog::note(""); // Blank line after all reports.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void writeOutput(data::Solution&& localCellData, const SimulatorTimer& timer, bool isSubStep)
|
void writeOutput(data::Solution&& localCellData, const SimulatorTimer& timer, bool isSubStep)
|
||||||
{
|
{
|
||||||
OPM_TIMEBLOCK(writeOutput);
|
OPM_TIMEBLOCK(writeOutput);
|
||||||
@ -400,23 +423,6 @@ public:
|
|||||||
// data::Solution localCellData = {};
|
// data::Solution localCellData = {};
|
||||||
if (! isSubStep || Parameters::Get<Parameters::EnableWriteAllSolutions>()) {
|
if (! isSubStep || Parameters::Get<Parameters::EnableWriteAllSolutions>()) {
|
||||||
|
|
||||||
auto rstep = timer.reportStepNum();
|
|
||||||
|
|
||||||
if ((rstep > 0) && (this->collectOnIORank_.isIORank())){
|
|
||||||
|
|
||||||
outputModule_->outputFipAndResvLog(inplace_, rstep, timer.simulationTimeElapsed(),
|
|
||||||
timer.currentDateTime(), false, simulator_.gridView().comm());
|
|
||||||
|
|
||||||
|
|
||||||
outputModule_->outputTimeStamp("WELLS", timer.simulationTimeElapsed(), rstep, timer.currentDateTime());
|
|
||||||
|
|
||||||
outputModule_->outputProdLog(reportStepNum);
|
|
||||||
outputModule_->outputInjLog(reportStepNum);
|
|
||||||
outputModule_->outputCumLog(reportStepNum);
|
|
||||||
|
|
||||||
OpmLog::note(""); // Blank line after all reports.
|
|
||||||
}
|
|
||||||
|
|
||||||
if (localCellData.empty()) {
|
if (localCellData.empty()) {
|
||||||
this->outputModule_->assignToSolution(localCellData);
|
this->outputModule_->assignToSolution(localCellData);
|
||||||
}
|
}
|
||||||
|
@ -466,6 +466,13 @@ public:
|
|||||||
FlowProblemType::endEpisode();
|
FlowProblemType::endEpisode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void writeReports(const SimulatorTimer& timer) {
|
||||||
|
if (enableEclOutput_){
|
||||||
|
eclWriter_->writeReports(timer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Write the requested quantities of the current solution into the output
|
* \brief Write the requested quantities of the current solution into the output
|
||||||
* files.
|
* files.
|
||||||
|
@ -351,8 +351,8 @@ outputFipAndResvLog(const Inplace& inplace,
|
|||||||
|
|
||||||
// For report step 0 we use the RPTSOL config, else derive from RPTSCHED
|
// For report step 0 we use the RPTSOL config, else derive from RPTSCHED
|
||||||
std::unique_ptr<FIPConfig> fipSched;
|
std::unique_ptr<FIPConfig> fipSched;
|
||||||
if (reportStepNum != 0) {
|
if (reportStepNum > 0) {
|
||||||
const auto& rpt = this->schedule_[reportStepNum].rpt_config.get();
|
const auto& rpt = this->schedule_[reportStepNum-1].rpt_config.get();
|
||||||
fipSched = std::make_unique<FIPConfig>(rpt);
|
fipSched = std::make_unique<FIPConfig>(rpt);
|
||||||
}
|
}
|
||||||
const FIPConfig& fipc = reportStepNum == 0 ? this->eclState_.getEclipseConfig().fip()
|
const FIPConfig& fipc = reportStepNum == 0 ? this->eclState_.getEclipseConfig().fip()
|
||||||
|
@ -200,9 +200,11 @@ public:
|
|||||||
simulator_.model().invalidateAndUpdateIntensiveQuantities(/*timeIdx=*/0);
|
simulator_.model().invalidateAndUpdateIntensiveQuantities(/*timeIdx=*/0);
|
||||||
// Main simulation loop.
|
// Main simulation loop.
|
||||||
while (!timer.done()) {
|
while (!timer.done()) {
|
||||||
|
simulator_.problem().writeReports(timer);
|
||||||
bool continue_looping = runStep(timer);
|
bool continue_looping = runStep(timer);
|
||||||
if (!continue_looping) break;
|
if (!continue_looping) break;
|
||||||
}
|
}
|
||||||
|
simulator_.problem().writeReports(timer);
|
||||||
return finalize();
|
return finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user