/* Copyright 2012 SINTEF ICT, Applied Mathematics. This file is part of the Open Porous Media project (OPM). OPM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OPM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OPM. If not, see . */ #ifndef OPM_BLACKOILSTATE_HEADER_INCLUDED #define OPM_BLACKOILSTATE_HEADER_INCLUDED #include #include #include #include namespace Opm { /// Simulator state for a blackoil simulator. class BlackoilState : public SimulatorState { public: virtual void init(const UnstructuredGrid& grid, int num_phases); virtual void init(int number_of_cells, int number_of_faces, int num_phases); /// Set the first saturation to either its min or max value in /// the indicated cells. The second saturation value s2 is set /// to (1.0 - s1) for each cell. Any further saturation values /// are unchanged. void setFirstSat(const std::vector& cells, const Opm::BlackoilPropertiesInterface& props, ExtremalSat es); virtual bool equals(const SimulatorState& other, double epsilon = 1e-8) const; std::vector& surfacevol () { return surfvol_; } std::vector& gasoilratio () { return gor_ ; } std::vector& rv () {return rv_ ; } const std::vector& surfacevol () const { return surfvol_; } const std::vector& gasoilratio () const { return gor_ ; } const std::vector& rv () const {return rv_ ; } private: std::vector surfvol_; // no entries = no cells * no phases std::vector gor_ ; // no entries = no cells std::vector rv_ ; // no entries = no cells }; } // namespace Opm #endif // OPM_BLACKOILSTATE_HEADER_INCLUDED