00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_SIMULATORINCOMPTWOPHASE_HEADER_INCLUDED
00021 #define OPM_SIMULATORINCOMPTWOPHASE_HEADER_INCLUDED
00022
00023 #include <memory>
00024 #include <vector>
00025 #include <iostream>
00026
00027 struct UnstructuredGrid;
00028 struct Wells;
00029 struct FlowBoundaryConditions;
00030
00031 namespace Opm
00032 {
00033 class ParameterGroup;
00034 class IncompPropertiesInterface;
00035 class RockCompressibility;
00036 class WellsManager;
00037 class LinearSolverInterface;
00038 class SimulatorTimer;
00039 class TwophaseState;
00040 class WellState;
00041 struct SimulatorReport;
00042 struct Event;
00043
00045 class SimulatorIncompTwophase
00046 {
00047 public:
00072 SimulatorIncompTwophase(const ParameterGroup& param,
00073 const UnstructuredGrid& grid,
00074 const IncompPropertiesInterface& props,
00075 const RockCompressibility* rock_comp_props,
00076 WellsManager& wells_manager,
00077 const std::vector<double>& src,
00078 const FlowBoundaryConditions* bcs,
00079 LinearSolverInterface& linsolver,
00080 const double* gravity);
00081
00089 SimulatorReport run(SimulatorTimer& timer,
00090 TwophaseState& state,
00091 WellState& well_state);
00092
00120 Event& timestep_completed ();
00121
00134 void sync ();
00135
00136 private:
00137 struct Impl;
00138
00139 std::shared_ptr<Impl> pimpl_;
00140 };
00141
00142 }
00143
00144 #endif // OPM_SIMULATORINCOMPTWOPHASE_HEADER_INCLUDED