added: pass reportStep to FIP output functions

use this to decide whether or not to use the RPTSOL configuration
(reportStep == 0) or to read flags from RPTSCHED (reportStep > 0)
This commit is contained in:
Arne Morten Kvarving
2023-11-09 12:36:52 +01:00
parent e355990ac2
commit 1e41df3bca
3 changed files with 42 additions and 11 deletions

View File

@@ -265,6 +265,7 @@ template<class FluidSystem,class Scalar>
Inplace EclGenericOutputBlackoilModule<FluidSystem,Scalar>::
outputFipLog(std::map<std::string, double>& miscSummaryData,
std::map<std::string, std::vector<double>>& regionData,
const std::size_t reportStepNum,
const bool substep,
const Parallel::Communication& comm)
{
@@ -276,9 +277,27 @@ outputFipLog(std::map<std::string, double>& miscSummaryData,
miscSummaryData,
regionData);
if (!substep && !forceDisableFipOutput_) {
// For report step 0 we use the RPTSOL config, else derive from RPTSCHED
std::unique_ptr<FIPConfig> fipSched;
if (reportStepNum != 0) {
const auto& rpt = this->schedule_[reportStepNum].rpt_config.get();
fipSched = std::make_unique<FIPConfig>(rpt);
}
const FIPConfig& fipc = reportStepNum == 0 ? this->eclState_.getEclipseConfig().fip()
: *fipSched;
if (!substep && !forceDisableFipOutput_ && fipc.output(FIPConfig::OutputField::FIELD)) {
logOutput_.fip(inplace, this->initialInplace(), "");
logOutput_.fip(inplace, this->initialInplace(), "FIPNUM");
if (fipc.output(FIPConfig::OutputField::FIPNUM)) {
logOutput_.fip(inplace, this->initialInplace(), "FIPNUM");
}
if (fipc.output(FIPConfig::OutputField::FIP)) {
for (const auto& reg : this->regions_) {
if (reg.first != "FIPNUM") {
logOutput_.fip(inplace, this->initialInplace(), reg.first);
}
}
}
}
return inplace;
@@ -287,9 +306,10 @@ outputFipLog(std::map<std::string, double>& miscSummaryData,
template<class FluidSystem,class Scalar>
Inplace EclGenericOutputBlackoilModule<FluidSystem,Scalar>::
outputFipresvLog(std::map<std::string, double>& miscSummaryData,
std::map<std::string, std::vector<double>>& regionData,
const bool substep,
const Parallel::Communication& comm)
std::map<std::string, std::vector<double>>& regionData,
const std::size_t reportStepNum,
const bool substep,
const Parallel::Communication& comm)
{
auto inplace = this->accumulateRegionSums(comm);
if (comm.rank() != 0)
@@ -299,7 +319,16 @@ outputFipresvLog(std::map<std::string, double>& miscSummaryData,
miscSummaryData,
regionData);
if (!substep && !forceDisableFipresvOutput_) {
// For report step 0 we use the RPTSOL config, else derive from RPTSCHED
std::unique_ptr<FIPConfig> fipSched;
if (reportStepNum != 0) {
const auto& rpt = this->schedule_[reportStepNum].rpt_config.get();
fipSched = std::make_unique<FIPConfig>(rpt);
}
const FIPConfig& fipc = reportStepNum == 0 ? this->eclState_.getEclipseConfig().fip()
: *fipSched;
if (!substep && !forceDisableFipresvOutput_ && fipc.output(FIPConfig::OutputField::RESV)) {
logOutput_.fipResv(inplace);
}

View File

@@ -79,17 +79,17 @@ public:
// write Fluid In Place to output log
Inplace outputFipLog(std::map<std::string, double>& miscSummaryData,
std::map<std::string, std::vector<double>>& regionData,
const std::size_t reportStepNum,
const bool substep,
const Parallel::Communication& comm);
// write Reservoir Volumes to output log
Inplace outputFipresvLog(std::map<std::string, double>& miscSummaryData,
std::map<std::string, std::vector<double>>& regionData,
const std::size_t reportStepNum,
const bool substep,
const Parallel::Communication& comm);
void outputErrorLog(const Parallel::Communication& comm) const;
void addRftDataToWells(data::Wells& wellDatas,

View File

@@ -248,9 +248,11 @@ public:
std::map<std::string, std::vector<double>> regionData;
Inplace inplace;
{
OPM_TIMEBLOCK(outputFipLogAndFipresvLog);
inplace = eclOutputModule_->outputFipLog(miscSummaryData, regionData, isSubStep, simulator_.gridView().comm());
eclOutputModule_->outputFipresvLog(miscSummaryData, regionData, isSubStep, simulator_.gridView().comm());
OPM_TIMEBLOCK(outputFipLogAndFipresvLog);
inplace = eclOutputModule_->outputFipLog(miscSummaryData, regionData, reportStepNum,
isSubStep, simulator_.gridView().comm());
eclOutputModule_->outputFipresvLog(miscSummaryData, regionData, reportStepNum,
isSubStep, simulator_.gridView().comm());
}
bool forceDisableProdOutput = false;
bool forceDisableInjOutput = false;