20 #ifndef OPM_SIMULATORFULLYIMPLICITBLACKOILOUTPUT_HEADER_INCLUDED
21 #define OPM_SIMULATORFULLYIMPLICITBLACKOILOUTPUT_HEADER_INCLUDED
22 #include <opm/core/grid.h>
23 #include <opm/core/simulator/BlackoilState.hpp>
24 #include <opm/core/simulator/WellState.hpp>
25 #include <opm/core/utility/DataMap.hpp>
26 #include <opm/common/ErrorMacros.hpp>
27 #include <opm/core/utility/miscUtilities.hpp>
28 #include <opm/core/utility/parameters/ParameterGroup.hpp>
30 #include <opm/core/io/OutputWriter.hpp>
31 #include <opm/core/io/eclipse/EclipseWriter.hpp>
43 #include <boost/filesystem.hpp>
45 #ifdef HAVE_DUNE_CORNERPOINT
46 #include <dune/grid/CpGrid.hpp>
52 const Opm::SimulatorState& state,
54 const std::string& output_dir);
58 const Opm::SimulatorState& state,
60 const std::string& output_dir);
64 const std::string& output_dir);
65 #ifdef HAVE_DUNE_CORNERPOINT
67 const Opm::SimulatorState& state,
69 const std::string& output_dir);
74 const Opm::SimulatorState& state,
76 const std::string& output_dir)
79 dm[
"saturation"] = &state.saturation();
80 dm[
"pressure"] = &state.pressure();
81 for(
unsigned int i=0; i<state.cellDataNames().size(); ++ i )
83 const std::string& name = state.cellDataNames()[ i ];
85 if( name ==
"SURFACEVOL" ) {
88 else if( name ==
"RV" ) {
91 else if( name ==
"GASOILRATIO" ) {
98 dm[ key ] = &state.cellData()[ i ];
101 std::vector<double> cell_velocity;
102 Opm::estimateCellVelocity(AutoDiffGrid::numCells(grid),
103 AutoDiffGrid::numFaces(grid),
104 AutoDiffGrid::beginFaceCentroids(grid),
105 UgGridHelpers::faceCells(grid),
106 AutoDiffGrid::beginCellCentroids(grid),
107 AutoDiffGrid::beginCellVolumes(grid),
108 AutoDiffGrid::dimensions(grid),
109 state.faceflux(), cell_velocity);
110 dm[
"velocity"] = &cell_velocity;
113 for (Opm::DataMap::const_iterator it = dm.begin(); it != dm.end(); ++it) {
114 std::ostringstream fname;
115 fname << output_dir <<
"/" << it->first;
116 boost::filesystem::path fpath = fname.str();
118 create_directories(fpath);
121 OPM_THROW(std::runtime_error,
"Creating directories failed: " << fpath);
123 fname <<
"/" << std::setw(3) << std::setfill(
'0') << step <<
".txt";
124 std::ofstream file(fname.str().c_str());
126 OPM_THROW(std::runtime_error,
"Failed to open " << fname.str());
129 const std::vector<double>& d = *(it->second);
130 std::copy(d.begin(), d.end(), std::ostream_iterator<double>(file,
"\n"));
135 template <
class Gr
id>
141 const std::string& outputDir)
152 const SimulatorState& state,
165 template <
class Gr
id>
171 const std::string& outputDir)
182 const SimulatorState& reservoirState,
183 const WellState& wellState,
199 template <
class Gr
id>
201 const parameter::ParameterGroup& param,
202 Opm::EclipseStateConstPtr eclipseState,
203 const Opm::PhaseUsage &phaseUsage,
204 const double* permeability );
207 void writeInit(
const SimulatorTimerInterface &timer);
211 const SimulatorState& reservoirState,
212 const WellState& wellState,
213 bool substep =
false);
221 void restore(SimulatorTimerInterface& timer,
222 BlackoilState& state,
224 const std::string& filename,
225 const int desiredReportStep);
249 template <
class Gr
id>
253 const parameter::ParameterGroup& param,
254 Opm::EclipseStateConstPtr eclipseState,
255 const Opm::PhaseUsage &phaseUsage,
256 const double* permeability )
257 : output_( param.getDefault(
"output", true) ),
258 parallelOutput_( output_ ? new
ParallelDebugOutput< Grid >( grid, eclipseState, phaseUsage.num_phases, permeability ) : 0 ),
259 outputDir_( output_ ? param.getDefault(
"output_dir",
std::string(
"output")) :
"." ),
260 output_interval_( output_ ? param.getDefault(
"output_interval", 1): 0 ),
261 lastBackupReportStep_( -1 ),
262 vtkWriter_( output_ && param.getDefault(
"output_vtk",false) ?
264 matlabWriter_( output_ && parallelOutput_->isIORank() &&
265 param.getDefault(
"output_matlab", false) ?
267 eclWriter_( output_ && parallelOutput_->isIORank() &&
268 param.getDefault(
"output_ecl", true) ?
269 new EclipseWriter(param, eclipseState, phaseUsage,
270 parallelOutput_->numCells(),
271 parallelOutput_->globalCell() )
279 create_directories(fpath);
282 OPM_THROW(std::runtime_error,
"Creating directories failed: " << fpath);
285 std::string backupfilename = param.getDefault(
"backupfile", std::string(
"") );
286 if( ! backupfilename.empty() )
const bool output_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:228
BlackoilOutputWriter(const Grid &grid, const parameter::ParameterGroup ¶m, Opm::EclipseStateConstPtr eclipseState, const Opm::PhaseUsage &phaseUsage, const double *permeability)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:252
void writeTimeStep(const SimulatorTimerInterface &timer, const SimulatorState &reservoirState, const WellState &wellState, bool substep=false)
void writeInit(const SimulatorTimerInterface &)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:147
const std::string outputDir_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:232
void restore(SimulatorTimerInterface &timer, BlackoilState &state, WellStateFullyImplicitBlackoil &wellState, const std::string &filename, const int desiredReportStep)
Definition: AdditionalObjectDeleter.hpp:22
BlackoilVTKWriter(const Grid &grid, const std::string &outputDir)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:140
std::unique_ptr< EclipseWriter > eclWriter_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:240
std::unique_ptr< ParallelDebugOutputInterface > parallelOutput_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:229
Definition: WellStateFullyImplicitBlackoil.hpp:41
int lastBackupReportStep_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:235
const std::string outputDir_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:161
void outputStateVtk(const UnstructuredGrid &grid, const Opm::SimulatorState &state, const int step, const std::string &output_dir)
BlackoilMatlabWriter(const Grid &grid, const std::string &outputDir)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:170
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:136
std::unique_ptr< OutputWriter > vtkWriter_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:238
std::unique_ptr< OutputWriter > matlabWriter_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:239
void outputWellStateMatlab(const Opm::WellState &well_state, const int step, const std::string &output_dir)
const std::string & outputDirectory() const
return output directory
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:216
bool output() const
return true if output is enabled
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:219
std::ofstream backupfile_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:237
void writeInit(const SimulatorTimerInterface &)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:177
const int output_interval_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:233
Definition: ParallelDebugOutput.hpp:57
const std::string outputDir_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:191
Wrapper class for VTK, Matlab, and ECL output.
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:195
void writeTimeStep(const SimulatorTimerInterface &timer, const SimulatorState &state, const WellState &, bool=false)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:151
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:166
const Grid & grid_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:160
void outputStateMatlab(const UnstructuredGrid &grid, const Opm::SimulatorState &state, const int step, const std::string &output_dir)
void writeInit(const SimulatorTimerInterface &timer)
const Grid & grid_
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:190
void writeTimeStep(const SimulatorTimerInterface &timer, const SimulatorState &reservoirState, const WellState &wellState, bool=false)
Definition: SimulatorFullyImplicitBlackoilOutput.hpp:181