From 168b4379d5ab61e8b27b7f756ba4c49119be912b Mon Sep 17 00:00:00 2001 From: Andreas Lauser Date: Thu, 20 Mar 2014 17:03:30 +0100 Subject: [PATCH 1/2] don't pass the eclipsewriter to the simulator anymore i.e., the simulator does not deal with any output operations anymore. This makes sense because report steps are handled by Opm::TimeMap and the constructor for the simulator already needs more arguments than appropriate even without this... --- examples/sim_fibo_ad.cpp | 10 ++------- .../SimulatorFullyImplicitBlackoil.cpp | 22 +++++-------------- .../SimulatorFullyImplicitBlackoil.hpp | 4 +--- 3 files changed, 8 insertions(+), 28 deletions(-) diff --git a/examples/sim_fibo_ad.cpp b/examples/sim_fibo_ad.cpp index 4f30a6ef0..196ab009d 100644 --- a/examples/sim_fibo_ad.cpp +++ b/examples/sim_fibo_ad.cpp @@ -242,16 +242,11 @@ try rock_comp->isActive() ? rock_comp.get() : 0, wells, linsolver, - grav, - outputWriter); + grav); SimulatorReport episodeReport = simulator.run(simtimer, state, well_state); outputWriter.writeTimeStep(simtimer, state, well_state.basicWellState()); fullReport += episodeReport; - - if (output) { - episodeReport.reportParam(outStream); - } } std::cout << "\n\n================ End of simulation ===============\n\n"; @@ -318,8 +313,7 @@ try rock_comp->isActive() ? rock_comp.get() : 0, wells, linsolver, - grav, - outputWriter); + grav); outputWriter.writeTimeStep(simtimer, state, well_state.basicWellState()); if (epoch == 0) { diff --git a/opm/autodiff/SimulatorFullyImplicitBlackoil.cpp b/opm/autodiff/SimulatorFullyImplicitBlackoil.cpp index aae39d9ca..9416cb8ab 100644 --- a/opm/autodiff/SimulatorFullyImplicitBlackoil.cpp +++ b/opm/autodiff/SimulatorFullyImplicitBlackoil.cpp @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include @@ -72,8 +71,7 @@ namespace Opm const RockCompressibility* rock_comp_props, WellsManager& wells_manager, LinearSolverInterface& linsolver, - const double* gravity, - EclipseWriter &writer); + const double* gravity); SimulatorReport run(SimulatorTimer& timer, BlackoilState& state, @@ -102,7 +100,6 @@ namespace Opm FullyImplicitBlackoilSolver solver_; // Misc. data std::vector allcells_; - EclipseWriter &eclipseWriter_; }; @@ -114,11 +111,10 @@ namespace Opm const RockCompressibility* rock_comp_props, WellsManager& wells_manager, LinearSolverInterface& linsolver, - const double* gravity, - EclipseWriter &eclipseWriter) + const double* gravity) { - pimpl_.reset(new Impl(param, grid, props, rock_comp_props, wells_manager, linsolver, gravity, eclipseWriter)); + pimpl_.reset(new Impl(param, grid, props, rock_comp_props, wells_manager, linsolver, gravity)); } @@ -262,8 +258,7 @@ namespace Opm const RockCompressibility* rock_comp_props, WellsManager& wells_manager, LinearSolverInterface& linsolver, - const double* gravity, - EclipseWriter &eclipseWriter) + const double* gravity) : grid_(grid), props_(props), rock_comp_props_(rock_comp_props), @@ -271,9 +266,7 @@ namespace Opm wells_(wells_manager.c_wells()), gravity_(gravity), geo_(grid_, props_, gravity_), - solver_(grid_, props_, geo_, rock_comp_props, *wells_manager.c_wells(), linsolver), - eclipseWriter_(eclipseWriter) - + solver_(grid_, props_, geo_, rock_comp_props, *wells_manager.c_wells(), linsolver) /* param.getDefault("nl_pressure_residual_tolerance", 0.0), param.getDefault("nl_pressure_change_tolerance", 1.0), param.getDefault("nl_pressure_maxiter", 10), @@ -419,11 +412,6 @@ namespace Opm // advance to next timestep before reporting at this location ++timer; - - // write an output file for later inspection - if (output_) { - eclipseWriter_.writeTimeStep(timer, state, well_state.basicWellState()); - } } total_timer.stop(); diff --git a/opm/autodiff/SimulatorFullyImplicitBlackoil.hpp b/opm/autodiff/SimulatorFullyImplicitBlackoil.hpp index 26b91b4e3..07e80fda2 100644 --- a/opm/autodiff/SimulatorFullyImplicitBlackoil.hpp +++ b/opm/autodiff/SimulatorFullyImplicitBlackoil.hpp @@ -31,7 +31,6 @@ namespace Opm { namespace parameter { class ParameterGroup; } class BlackoilPropsAdInterface; - class EclipseWriter; class RockCompressibility; class WellsManager; class LinearSolverInterface; @@ -72,8 +71,7 @@ namespace Opm const RockCompressibility* rock_comp_props, WellsManager& wells_manager, LinearSolverInterface& linsolver, - const double* gravity, - EclipseWriter &writer); + const double* gravity); /// Run the simulation. /// This will run succesive timesteps until timer.done() is true. It will From 2f23e72beafbc39b7de7c772784b29ac30233b71 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Tue, 25 Mar 2014 19:36:42 +0100 Subject: [PATCH 2/2] Removed calls to WellsManager() constructor which uses old EclipseGridParser. --- examples/sim_2p_comp_ad.cpp | 7 ++++++- examples/sim_2p_incomp_ad.cpp | 9 ++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/examples/sim_2p_comp_ad.cpp b/examples/sim_2p_comp_ad.cpp index be7c4c205..c7dfe8bfb 100644 --- a/examples/sim_2p_comp_ad.cpp +++ b/examples/sim_2p_comp_ad.cpp @@ -48,6 +48,8 @@ #include #include +#include + #include #include @@ -94,6 +96,7 @@ try boost::scoped_ptr grid; boost::scoped_ptr props; boost::scoped_ptr rock_comp; + EclipseStateConstPtr eclipseState; BlackoilState state; // bool check_well_controls = false; // int max_well_control_iterations = 0; @@ -103,6 +106,8 @@ try deck.reset(new EclipseGridParser(deck_filename)); Opm::ParserPtr newParser(new Opm::Parser() ); Opm::DeckConstPtr newParserDeck = newParser->parseFile( deck_filename ); + eclipseState.reset( new EclipseState(newParserDeck )); + // Grid init grid.reset(new GridManager(newParserDeck)); @@ -255,7 +260,7 @@ try << simtimer.numSteps() - step << ")\n\n" << std::flush; // Create new wells, well_state - WellsManager wells(*deck, *grid->c_grid(), props->permeability()); + WellsManager wells(eclipseState , epoch , *grid->c_grid(), props->permeability()); // @@@ HACK: we should really make a new well state and // properly transfer old well state to it every epoch, // since number of wells may change etc. diff --git a/examples/sim_2p_incomp_ad.cpp b/examples/sim_2p_incomp_ad.cpp index 7469bdca0..e0c417c14 100644 --- a/examples/sim_2p_incomp_ad.cpp +++ b/examples/sim_2p_incomp_ad.cpp @@ -46,6 +46,9 @@ #include #include +#include +#include + #include #include @@ -100,12 +103,16 @@ try boost::scoped_ptr grid; boost::scoped_ptr props; boost::scoped_ptr rock_comp; + EclipseStateConstPtr eclipseState; TwophaseState state; // bool check_well_controls = false; // int max_well_control_iterations = 0; double gravity[3] = { 0.0 }; if (use_deck) { std::string deck_filename = param.get("deck_filename"); + ParserPtr parser(new Opm::Parser()); + eclipseState.reset( new EclipseState(parser->parseFile(deck_filename))); + deck.reset(new EclipseGridParser(deck_filename)); // Grid init grid.reset(new GridManager(*deck)); @@ -262,7 +269,7 @@ try << simtimer.numSteps() - step << ")\n\n" << std::flush; // Create new wells, well_state - WellsManager wells(*deck, *grid->c_grid(), props->permeability()); + WellsManager wells(eclipseState , epoch , *grid->c_grid(), props->permeability()); // @@@ HACK: we should really make a new well state and // properly transfer old well state to it every epoch, // since number of wells may change etc.