BlackoilPropertiesInterface.hpp
Go to the documentation of this file.
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_BLACKOILPROPERTIESINTERFACE_HEADER_INCLUDED
21 #define OPM_BLACKOILPROPERTIESINTERFACE_HEADER_INCLUDED
22 
23 namespace Opm
24 {
25 
26  struct PhaseUsage;
27 
38  {
39  public:
41 
42  // ---- Rock interface ----
43 
45  virtual int numDimensions() const = 0;
46 
48  virtual int numCells() const = 0;
49 
52  virtual const int* cellPvtRegionIndex() const = 0;
53 
55  virtual const double* porosity() const = 0;
56 
60  virtual const double* permeability() const = 0;
61 
62 
63  // ---- Fluid interface ----
64 
66  virtual int numPhases() const = 0;
67 
69  virtual PhaseUsage phaseUsage() const = 0;
70 
79  virtual void viscosity(const int n,
80  const double* p,
81  const double* T,
82  const double* z,
83  const int* cells,
84  double* mu,
85  double* dmudp) const = 0;
86 
98  virtual void matrix(const int n,
99  const double* p,
100  const double* T,
101  const double* z,
102  const int* cells,
103  double* A,
104  double* dAdp) const = 0;
105 
106 
115  virtual void density(const int n,
116  const double* A,
117  const int* cells,
118  double* rho) const = 0;
119 
122  virtual const double* surfaceDensity(int regionIdx = 0) const = 0;
123 
133  virtual void relperm(const int n,
134  const double* s,
135  const int* cells,
136  double* kr,
137  double* dkrds) const = 0;
138 
139 
149  virtual void capPress(const int n,
150  const double* s,
151  const int* cells,
152  double* pc,
153  double* dpcds) const = 0;
154 
155 
163  virtual void satRange(const int n,
164  const int* cells,
165  double* smin,
166  double* smax) const = 0;
167 
168 
173  virtual void swatInitScaling(const int cell,
174  const double pcow,
175  double & swat) = 0;
176 
177  };
178 
179 
180 
181 } // namespace Opm
182 
183 
184 #endif // OPM_BLACKOILPROPERTIESINTERFACE_HEADER_INCLUDED
virtual const double * surfaceDensity(int regionIdx=0) const =0
virtual const double * porosity() const =0
virtual void viscosity(const int n, const double *p, const double *T, const double *z, const int *cells, double *mu, double *dmudp) const =0
Definition: AnisotropicEikonal.hpp:43
virtual void density(const int n, const double *A, const int *cells, double *rho) const =0
virtual void matrix(const int n, const double *p, const double *T, const double *z, const int *cells, double *A, double *dAdp) const =0
virtual int numDimensions() const =0
virtual void capPress(const int n, const double *s, const int *cells, double *pc, double *dpcds) const =0
virtual void relperm(const int n, const double *s, const int *cells, double *kr, double *dkrds) const =0
virtual int numPhases() const =0
virtual ~BlackoilPropertiesInterface()
Definition: BlackoilPropertiesInterface.hpp:40
Definition: BlackoilPropertiesInterface.hpp:37
virtual void satRange(const int n, const int *cells, double *smin, double *smax) const =0
virtual const double * permeability() const =0
virtual PhaseUsage phaseUsage() const =0
virtual const int * cellPvtRegionIndex() const =0
virtual int numCells() const =0
virtual void swatInitScaling(const int cell, const double pcow, double &swat)=0
Definition: BlackoilPhases.hpp:36