00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_SIMULATORPOLYMER_HEADER_INCLUDED
00021 #define OPM_SIMULATORPOLYMER_HEADER_INCLUDED
00022
00023 #include <opm/core/simulator/SimulatorReport.hpp>
00024 #include <boost/shared_ptr.hpp>
00025 #include <vector>
00026
00027 struct UnstructuredGrid;
00028 struct Wells;
00029 struct FlowBoundaryConditions;
00030
00031 namespace Opm
00032 {
00033 class ParameterGroup;
00034 class IncompPropertiesInterface;
00035 class PolymerProperties;
00036 class RockCompressibility;
00037 class WellsManager;
00038 class PolymerInflowInterface;
00039 class LinearSolverInterface;
00040 class SimulatorTimer;
00041 class PolymerState;
00042 class WellState;
00043 struct SimulatorReport;
00044
00046 class SimulatorPolymer
00047 {
00048 public:
00075 SimulatorPolymer(const ParameterGroup& param,
00076 const UnstructuredGrid& grid,
00077 const IncompPropertiesInterface& props,
00078 const PolymerProperties& poly_props,
00079 const RockCompressibility* rock_comp_props,
00080 WellsManager& wells_manager,
00081 const PolymerInflowInterface& polymer_inflow,
00082 const std::vector<double>& src,
00083 const FlowBoundaryConditions* bcs,
00084 LinearSolverInterface& linsolver,
00085 const double* gravity);
00086
00095 SimulatorReport run(SimulatorTimer& timer,
00096 PolymerState& state,
00097 WellState& well_state);
00098
00103 const SimulatorReport& failureReport() const
00104 { return failureReport_; }
00105
00106 private:
00107 class Impl;
00108
00109 SimulatorReport failureReport_;
00110
00111
00112 boost::shared_ptr<Impl> pimpl_;
00113 };
00114
00115 }
00116
00117 #endif // OPM_SIMULATORPOLYMER_HEADER_INCLUDED