00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_SIMULATORINCOMPTWOPHASEAD_HEADER_INCLUDED
00021 #define OPM_SIMULATORINCOMPTWOPHASEAD_HEADER_INCLUDED
00022
00023 #include <memory>
00024 #include <vector>
00025
00026 struct UnstructuredGrid;
00027 struct Wells;
00028 struct FlowBoundaryConditions;
00029
00030 namespace Opm
00031 {
00032 class ParameterGroup;
00033 class IncompPropertiesInterface;
00034 class RockCompressibility;
00035 class WellsManager;
00036 class LinearSolverInterface;
00037 class SimulatorTimer;
00038 class TwophaseState;
00039 class WellState;
00040 struct SimulatorReport;
00041
00043 class SimulatorIncompTwophaseAd
00044 {
00045 public:
00070 SimulatorIncompTwophaseAd(const ParameterGroup& param,
00071 const UnstructuredGrid& grid,
00072 const IncompPropertiesInterface& props,
00073 const RockCompressibility* rock_comp_props,
00074 WellsManager& wells_manager,
00075 const std::vector<double>& src,
00076 const FlowBoundaryConditions* bcs,
00077 LinearSolverInterface& linsolver,
00078 const double* gravity);
00079
00087 SimulatorReport run(SimulatorTimer& timer,
00088 TwophaseState& state,
00089 WellState& well_state);
00090
00091 private:
00092 class Impl;
00093
00094 std::shared_ptr<Impl> pimpl_;
00095 };
00096
00097 }
00098
00099 #endif // OPM_SIMULATORINCOMPTWOPHASEAD_HEADER_INCLUDED