Use unique_ptr for outputmodule member in EclWriter

This commit is contained in:
Joakim Hove 2020-11-30 13:31:04 +01:00
parent 1fbc25979f
commit 1bb7b0d30f

View File

@ -191,8 +191,8 @@ public:
EclWriter(Simulator& simulator)
: simulator_(simulator)
, collectToIORank_(simulator_.vanguard())
, eclOutputModule_(simulator, collectToIORank_)
{
this->eclOutputModule_ = std::make_unique<EclOutputBlackOilModule<TypeTag>>(simulator, this->collectToIORank_);
if (collectToIORank_.isIORank()) {
eclIO_.reset(new Opm::EclipseIO(simulator_.vanguard().eclState(),
Opm::UgGridHelpers::createEclipseGrid(globalGrid(), simulator_.vanguard().eclState().getInputGrid()),
@ -279,19 +279,19 @@ public:
this->prepareLocalCellData(isSubStep, reportStepNum);
if (collectToIORank_.isParallel())
collectToIORank_.collect({}, eclOutputModule_.getBlockData(),
collectToIORank_.collect({}, eclOutputModule_->getBlockData(),
localWellData, localGroupAndNetworkData);
std::map<std::string, double> miscSummaryData;
std::map<std::string, std::vector<double>> regionData;
auto inplace = eclOutputModule_.outputFipLog(miscSummaryData, regionData, isSubStep);
auto inplace = eclOutputModule_->outputFipLog(miscSummaryData, regionData, isSubStep);
bool forceDisableProdOutput = false;
bool forceDisableInjOutput = false;
bool forceDisableCumOutput = false;
eclOutputModule_.outputProdLog(reportStepNum, isSubStep, forceDisableProdOutput);
eclOutputModule_.outputInjLog(reportStepNum, isSubStep, forceDisableInjOutput);
eclOutputModule_.outputCumLog(reportStepNum, isSubStep, forceDisableCumOutput);
eclOutputModule_->outputProdLog(reportStepNum, isSubStep, forceDisableProdOutput);
eclOutputModule_->outputInjLog(reportStepNum, isSubStep, forceDisableInjOutput);
eclOutputModule_->outputCumLog(reportStepNum, isSubStep, forceDisableCumOutput);
std::vector<char> buffer;
if (this->collectToIORank_.isIORank()) {
@ -316,7 +316,7 @@ public:
const auto& blockData
= this->collectToIORank_.isParallel()
? this->collectToIORank_.globalBlockData()
: this->eclOutputModule_.getBlockData();
: this->eclOutputModule_->getBlockData();
summary.eval(summaryState(),
reportStepNum,
@ -324,7 +324,7 @@ public:
wellData,
groupAndNetworkData,
miscSummaryData,
eclOutputModule_.initialInplace(),
eclOutputModule_->initialInplace(),
inplace,
wbp_calculators,
regionData,
@ -359,7 +359,7 @@ public:
const int reportStepNum = simulator_.episodeIndex() + 1;
this->prepareLocalCellData(isSubStep, reportStepNum);
this->eclOutputModule_.outputErrorLog();
this->eclOutputModule_->outputErrorLog();
// output using eclWriter if enabled
auto localWellData = simulator_.problem().wellModel().wellData();
@ -368,14 +368,14 @@ public:
Opm::data::Solution localCellData = {};
if (! isSubStep) {
this->eclOutputModule_.assignToSolution(localCellData);
this->eclOutputModule_->assignToSolution(localCellData);
// add cell data to perforations for Rft output
this->eclOutputModule_.addRftDataToWells(localWellData, reportStepNum);
this->eclOutputModule_->addRftDataToWells(localWellData, reportStepNum);
}
if (this->collectToIORank_.isParallel()) {
collectToIORank_.collect(localCellData, eclOutputModule_.getBlockData(),
collectToIORank_.collect(localCellData, eclOutputModule_->getBlockData(),
localWellData, localGroupAndNetworkData);
}
@ -420,7 +420,7 @@ public:
const auto& gridView = simulator_.vanguard().gridView();
unsigned numElements = gridView.size(/*codim=*/0);
eclOutputModule_.allocBuffers(numElements, restartStepIdx, /*isSubStep=*/false, /*log=*/false, /*isRestart*/ true);
eclOutputModule_->allocBuffers(numElements, restartStepIdx, /*isSubStep=*/false, /*log=*/false, /*isRestart*/ true);
{
Opm::SummaryState& summaryState = simulator_.vanguard().summaryState();
@ -429,7 +429,7 @@ public:
gridView.grid().comm());
for (unsigned elemIdx = 0; elemIdx < numElements; ++elemIdx) {
unsigned globalIdx = collectToIORank_.localIdxToGlobalIdx(elemIdx);
eclOutputModule_.setRestart(restartValues.solution, elemIdx, globalIdx);
eclOutputModule_->setRestart(restartValues.solution, elemIdx, globalIdx);
}
if (inputThpres.active()) {
@ -452,7 +452,7 @@ public:
{}
const EclOutputBlackOilModule<TypeTag>& eclOutputModule() const
{ return eclOutputModule_; }
{ return *eclOutputModule_; }
Scalar restartTimeStepSize() const
{ return restartTimeStepSize_; }
@ -717,7 +717,7 @@ private:
const int numElements = gridView.size(/*codim=*/0);
const bool log = collectToIORank_.isIORank();
eclOutputModule_.allocBuffers(numElements, reportStepNum,
eclOutputModule_->allocBuffers(numElements, reportStepNum,
isSubStep, log, /*isRestart*/ false);
ElementContext elemCtx(simulator_);
@ -730,7 +730,7 @@ private:
elemCtx.updatePrimaryStencil(elem);
elemCtx.updatePrimaryIntensiveQuantities(/*timeIdx=*/0);
eclOutputModule_.processElement(elemCtx);
eclOutputModule_->processElement(elemCtx);
}
}
@ -784,7 +784,7 @@ private:
Simulator& simulator_;
CollectDataToIORankType collectToIORank_;
EclOutputBlackOilModule<TypeTag> eclOutputModule_;
std::unique_ptr<EclOutputBlackOilModule<TypeTag>> eclOutputModule_;
std::unique_ptr<Opm::EclipseIO> eclIO_;
std::unique_ptr<TaskletRunner> taskletRunner_;
Scalar restartTimeStepSize_;