IncompPropertiesBasic.hpp
1 /*
2  Copyright 2012 SINTEF ICT, Applied Mathematics.
3 
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef OPM_INCOMPPROPERTIESBASIC_HEADER_INCLUDED
21 #define OPM_INCOMPPROPERTIESBASIC_HEADER_INCLUDED
22 
23 #include <opm/core/props/IncompPropertiesInterface.hpp>
24 #include <opm/core/props/rock/RockBasic.hpp>
25 #include <opm/core/props/pvt/PvtPropertiesBasic.hpp>
26 #include <opm/core/props/satfunc/SaturationPropsBasic.hpp>
27 
28 namespace Opm
29 {
30 
42  {
43  public:
55  const int dim,
56  const int num_cells);
57 
58 
69  IncompPropertiesBasic(const int num_phases,
70  const SaturationPropsBasic::RelPermFunc& relpermfunc,
71  const std::vector<double>& rho,
72  const std::vector<double>& mu,
73  const double porosity,
74  const double permeability,
75  const int dim,
76  const int num_cells);
77 
79  virtual ~IncompPropertiesBasic();
80 
81  // ---- Rock interface ----
82 
84  virtual int numDimensions() const;
85 
87  virtual int numCells() const;
88 
90  virtual const double* porosity() const;
91 
95  virtual const double* permeability() const;
96 
97 
98  // ---- Fluid interface ----
99 
101  virtual int numPhases() const;
102 
104  virtual const double* viscosity() const;
105 
108  virtual const double* density() const;
109 
112  virtual const double* surfaceDensity() const;
113 
123  virtual void relperm(const int n,
124  const double* s,
125  const int* cells,
126  double* kr,
127  double* dkrds) const;
128 
129 
139  virtual void capPress(const int n,
140  const double* s,
141  const int* cells,
142  double* pc,
143  double* dpcds) const;
144 
145 
153  virtual void satRange(const int n,
154  const int* cells,
155  double* smin,
156  double* smax) const;
157  private:
158  RockBasic rock_;
159  PvtPropertiesBasic pvt_;
160  SaturationPropsBasic satprops_;
161  std::vector<double> viscosity_;
162  };
163 
164 
165 
166 } // namespace Opm
167 
168 
169 #endif // OPM_INCOMPPROPERTIESBASIC_HEADER_INCLUDED
Class encapsulating basic saturation function behaviour, by which we mean constant, linear or quadratic relative permeability functions for a maximum of two phases, and zero capillary pressure.
Definition: SaturationPropsBasic.hpp:36
virtual int numPhases() const
Definition: IncompPropertiesBasic.cpp:105
virtual ~IncompPropertiesBasic()
Destructor.
Definition: IncompPropertiesBasic.cpp:70
virtual void satRange(const int n, const int *cells, double *smin, double *smax) const
Obtain the range of allowable saturation values.
Definition: IncompPropertiesBasic.cpp:177
virtual const double * surfaceDensity() const
Densities of fluid phases at surface conditions.
Definition: IncompPropertiesBasic.cpp:125
Definition: AnisotropicEikonal.cpp:446
Class collecting simple pvt properties for 1-3 phases.
Definition: PvtPropertiesBasic.hpp:36
virtual const double * viscosity() const
Definition: IncompPropertiesBasic.cpp:111
virtual const double * density() const
Densities of fluid phases at reservoir conditions.
Definition: IncompPropertiesBasic.cpp:117
virtual int numCells() const
Definition: IncompPropertiesBasic.cpp:82
virtual int numDimensions() const
Definition: IncompPropertiesBasic.cpp:76
virtual void capPress(const int n, const double *s, const int *cells, double *pc, double *dpcds) const
Definition: IncompPropertiesBasic.cpp:160
virtual const double * permeability() const
Definition: IncompPropertiesBasic.cpp:96
Concrete class implementing the incompressible property interface, reading all necessary input from p...
Definition: IncompPropertiesBasic.hpp:41
Definition: RockBasic.hpp:30
virtual void relperm(const int n, const double *s, const int *cells, double *kr, double *dkrds) const
Definition: IncompPropertiesBasic.cpp:141
ParameterGroup is a class that is used to provide run-time parameters.
Definition: ParameterGroup.hpp:81
virtual const double * porosity() const
Definition: IncompPropertiesBasic.cpp:88
IncompPropertiesBasic(const ParameterGroup &param, const int dim, const int num_cells)
Construct from parameters.
Definition: IncompPropertiesBasic.cpp:31
Abstract base class for incompressible fluid and reservoir properties.
Definition: IncompPropertiesInterface.hpp:35