Chase Group/Node Summary API Update

This is in preparation of adding support for outputting the network
node pressure quantity, GPR, to the summary file.  In particular,
'GroupValues' is renamed to 'GroupAndNetworkValues' and has new
individual datamembers for the former group-level data and the new
node-level data.

Update BlackoilWellModel::groupData() and CollectToIORank
accordingly and bring the parallel restart facility in line with the
new layout.
This commit is contained in:
Bård Skaflestad
2020-09-20 22:16:07 +02:00
parent 6a592a8c55
commit fde3c476c3
9 changed files with 121 additions and 85 deletions

View File

@@ -271,15 +271,15 @@ public:
simulator_.setupTimer().realTimeElapsed() +
simulator_.vanguard().externalSetupTime();
const auto localWellData = simulator_.problem().wellModel().wellData();
const auto localGroupData = simulator_.problem().wellModel()
.groupData(reportStepNum, simulator_.vanguard().schedule());
const auto localWellData = simulator_.problem().wellModel().wellData();
const auto localGroupAndNetworkData = simulator_.problem().wellModel()
.groupAndNetworkData(reportStepNum, simulator_.vanguard().schedule());
this->prepareLocalCellData(isSubStep, reportStepNum);
if (collectToIORank_.isParallel())
collectToIORank_.collect({}, eclOutputModule_.getBlockData(),
localWellData, localGroupData);
localWellData, localGroupAndNetworkData);
std::map<std::string, double> miscSummaryData;
std::map<std::string, std::vector<double>> regionData;
@@ -306,9 +306,9 @@ public:
? this->collectToIORank_.globalWellData()
: localWellData;
const auto& groupData = this->collectToIORank_.isParallel()
? this->collectToIORank_.globalGroupData()
: localGroupData;
const auto& groupAndNetworkData = this->collectToIORank_.isParallel()
? this->collectToIORank_.globalGroupAndNetworkData()
: localGroupAndNetworkData;
const auto& blockData
= this->collectToIORank_.isParallel()
@@ -321,7 +321,7 @@ public:
eclState,
schedule(),
wellData,
groupData,
groupAndNetworkData,
miscSummaryData,
regionData,
blockData);
@@ -358,7 +358,8 @@ public:
// output using eclWriter if enabled
auto localWellData = simulator_.problem().wellModel().wellData();
auto localGroupData = simulator_.problem().wellModel().groupData(reportStepNum, simulator_.vanguard().schedule());
auto localGroupAndNetworkData = simulator_.problem().wellModel()
.groupAndNetworkData(reportStepNum, simulator_.vanguard().schedule());
Opm::data::Solution localCellData = {};
if (! isSubStep) {
@@ -368,15 +369,16 @@ public:
this->eclOutputModule_.addRftDataToWells(localWellData, reportStepNum);
}
if (collectToIORank_.isParallel()) {
collectToIORank_.collect(localCellData, eclOutputModule_.getBlockData(), localWellData, localGroupData);
if (this->collectToIORank_.isParallel()) {
collectToIORank_.collect(localCellData, eclOutputModule_.getBlockData(),
localWellData, localGroupAndNetworkData);
}
if (this->collectToIORank_.isIORank()) {
this->writeOutput(reportStepNum, isSubStep,
std::move(localCellData),
std::move(localWellData),
std::move(localGroupData));
std::move(localGroupAndNetworkData));
}
}
@@ -740,11 +742,11 @@ private:
}
}
void writeOutput(const int reportStepNum,
const bool isSubStep,
::Opm::data::Solution&& localCellData,
::Opm::data::Wells&& localWellData,
::Opm::data::GroupValues&& localGroupData)
void writeOutput(const int reportStepNum,
const bool isSubStep,
::Opm::data::Solution&& localCellData,
::Opm::data::Wells&& localWellData,
::Opm::data::GroupAndNetworkValues&& localGroupAndNetworkData)
{
const Scalar curTime = simulator_.time() + simulator_.timeStepSize();
const Scalar nextStepSize = simulator_.problem().nextTimeStepSize();
@@ -757,8 +759,8 @@ private:
isParallel ? this->collectToIORank_.globalWellData()
: std::move(localWellData),
isParallel ? this->collectToIORank_.globalGroupData()
: std::move(localGroupData)
isParallel ? this->collectToIORank_.globalGroupAndNetworkData()
: std::move(localGroupAndNetworkData)
};
if (simulator_.vanguard().eclState().getSimulationConfig().useThresholdPressure()) {