From d6aea1663d0f4cb9ba17a36943f748af3559b066 Mon Sep 17 00:00:00 2001 From: Markus Blatt Date: Fri, 22 Jul 2016 17:37:14 +0200 Subject: [PATCH] Call writeInit with global grid and properties. Previously, the call was made after the grid was distributed. This means that each process wrote it, but only with his cells active which was just a part of the whole domain. With this commit we make the writeInit call before distributing the grid and make sure that only one process calls it. --- opm/autodiff/FlowMain.hpp | 17 +++++++++++++++-- opm/autodiff/SimulatorBase_impl.hpp | 4 ---- ...orFullyImplicitBlackoilMultiSegment_impl.hpp | 3 --- .../SimulatorFullyImplicitBlackoilOutput.cpp | 9 --------- .../SimulatorFullyImplicitBlackoilOutput.hpp | 3 --- 5 files changed, 15 insertions(+), 21 deletions(-) diff --git a/opm/autodiff/FlowMain.hpp b/opm/autodiff/FlowMain.hpp index 04fc88979..99a0b1e9e 100644 --- a/opm/autodiff/FlowMain.hpp +++ b/opm/autodiff/FlowMain.hpp @@ -145,6 +145,7 @@ namespace Opm asImpl().extractMessages(); asImpl().runDiagnostics(); asImpl().setupState(); + asImpl().writeInit(); asImpl().distributeData(); asImpl().setupOutputWriter(); asImpl().setupLinearSolver(); @@ -650,7 +651,20 @@ namespace Opm } - + void writeInit() + { + bool output = param_.getDefault("output", true); + bool output_ecl = param_.getDefault("output_ecl", true); + const Grid& grid = grid_init_->grid(); + if( output && output_ecl && output_cout_) + { + EclipseWriter writer(eclipse_state_, + Opm::UgGridHelpers::numCells(grid), + Opm::UgGridHelpers::globalCell(grid)); + writer.writeInitAndEgrid(geoprops_->simProps(grid), + geoprops_->nonCartesianConnections()); + } + } // Setup output writer. @@ -748,7 +762,6 @@ namespace Opm fullReport.reportParam(tot_os); } } else { - output_writer_->writeInit(geoprops_->simProps(grid_init_->grid()) , geoprops_->nonCartesianConnections( )); if (output_cout_) { std::cout << "\n\n================ Simulation turned off ===============\n" << std::flush; } diff --git a/opm/autodiff/SimulatorBase_impl.hpp b/opm/autodiff/SimulatorBase_impl.hpp index 17b974278..4186145dd 100644 --- a/opm/autodiff/SimulatorBase_impl.hpp +++ b/opm/autodiff/SimulatorBase_impl.hpp @@ -111,10 +111,6 @@ namespace Opm adaptiveTimeStepping.reset( new AdaptiveTimeStepping( param_, terminal_output_ ) ); } - - - output_writer_.writeInit( geo_.simProps(grid_) , geo_.nonCartesianConnections( ) ); - std::string restorefilename = param_.getDefault("restorefile", std::string("") ); if( ! restorefilename.empty() ) { diff --git a/opm/autodiff/SimulatorFullyImplicitBlackoilMultiSegment_impl.hpp b/opm/autodiff/SimulatorFullyImplicitBlackoilMultiSegment_impl.hpp index 84e040539..98676b89b 100644 --- a/opm/autodiff/SimulatorFullyImplicitBlackoilMultiSegment_impl.hpp +++ b/opm/autodiff/SimulatorFullyImplicitBlackoilMultiSegment_impl.hpp @@ -72,9 +72,6 @@ namespace Opm adaptiveTimeStepping.reset( new AdaptiveTimeStepping( param_, terminal_output_ ) ); } - // init output writer - output_writer_.writeInit( geo_.simProps(grid_) , geo_.nonCartesianConnections( ) ); - std::string restorefilename = param_.getDefault("restorefile", std::string("") ); if( ! restorefilename.empty() ) { diff --git a/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.cpp b/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.cpp index fc0581fb9..6cb962041 100644 --- a/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.cpp +++ b/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.cpp @@ -245,15 +245,6 @@ namespace Opm } #endif - void - BlackoilOutputWriter:: - writeInit(const std::vector& simProps, const NNC& nnc) - { - if( eclWriter_ ) { - eclWriter_->writeInitAndEgrid(simProps, nnc); - } - } - namespace detail { diff --git a/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.hpp b/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.hpp index c1361468c..9d285f811 100644 --- a/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.hpp +++ b/opm/autodiff/SimulatorFullyImplicitBlackoilOutput.hpp @@ -216,9 +216,6 @@ namespace Opm const Opm::PhaseUsage &phaseUsage, const double* permeability ); - /** \copydoc Opm::OutputWriter::writeInit */ - void writeInit(const std::vector& simProps, const NNC& nnc); - /** \copydoc Opm::OutputWriter::writeTimeStep */ void writeTimeStep(const SimulatorTimerInterface& timer, const SimulationDataContainer& reservoirState,