ConversionFactors.hpp
Go to the documentation of this file.
1 /*
2  Copyright 2013 Statoil ASA.
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 CONVERSION_FACTORS_HPP
21 #define CONVERSION_FACTORS_HPP
22 
23 
46 namespace Opm {
47 
48  namespace details {
49  // Note: the following has been lifted from opm/core/utility/Units.hpp.
50 
51  namespace prefix
53  {
54  const double micro = 1.0e-6;
55  const double milli = 1.0e-3;
56  const double centi = 1.0e-2;
57  const double deci = 1.0e-1;
58  const double kilo = 1.0e3;
59  const double mega = 1.0e6;
60  const double giga = 1.0e9;
61  } // namespace prefix
62 
63  namespace unit
78  {
81  inline double square(double v) { return v * v; }
82  inline double cubic (double v) { return v * v * v; }
84 
85  // --------------------------------------------------------------
86  // Basic (fundamental) units and conversions
87  // --------------------------------------------------------------
88 
91  const double meter = 1;
92  const double inch = 2.54 * prefix::centi*meter;
93  const double feet = 12 * inch;
95 
98  const double second = 1;
99  const double minute = 60 * second;
100  const double hour = 60 * minute;
101  const double day = 24 * hour;
102  const double year = 365 * day;
104 
107  const double gallon = 231 * cubic(inch);
108  const double stb = 42 * gallon;
109  const double liter = 1 * cubic(prefix::deci*meter);
111 
114  const double kilogram = 1;
115  // http://en.wikipedia.org/wiki/Pound_(mass)#Avoirdupois_pound
116  const double pound = 0.45359237 * kilogram;
118 
119  // --------------------------------------------------------------
120  // Standardised constants
121  // --------------------------------------------------------------
122 
125  const double gravity = 9.80665 * meter/square(second);
127 
128  // --------------------------------------------------------------
129  // Derived units and conversions
130  // --------------------------------------------------------------
131 
134  const double Newton = kilogram*meter / square(second); // == 1
135  const double lbf = pound * gravity; // Pound-force
137 
140  const double Pascal = Newton / square(meter); // == 1
141  const double barsa = 100000 * Pascal;
142  const double atm = 101325 * Pascal;
143  const double psia = lbf / square(inch);
145 
152  const double degCelsius = 1.0; // scaling factor °C -> K
153  const double degCelsiusOffset = 273.15; // offset for the °C -> K conversion
154 
155  const double degFahrenheit = 5.0/9; // scaling factor °F -> K
156  const double degFahrenheitOffset = 255.37; // offset for the °C -> K conversion
158 
161  const double Pas = Pascal * second; // == 1
162  const double Poise = prefix::deci*Pas;
164 
165  namespace perm_details {
166  const double p_grad = atm / (prefix::centi*meter);
167  const double area = square(prefix::centi*meter);
168  const double flux = cubic (prefix::centi*meter) / second;
169  const double velocity = flux / area;
170  const double visc = prefix::centi*Poise;
171  const double darcy = (velocity * visc) / p_grad;
172  // == 1e-7 [m^2] / 101325
173  // == 9.869232667160130e-13 [m^2]
174  }
184  const double darcy = perm_details::darcy;
186  }
187 
188  } // namespace details
189 
190 
191  namespace Metric {
192  using namespace details::prefix;
193  using namespace details::unit;
194  const double Pressure = barsa;
195  const double Temperature = degCelsius;
197  const double AbsoluteTemperature = degCelsius; // actually [K], but the these two are identical
198  const double Length = meter;
199  const double Time = day;
200  const double Mass = kilogram;
201  const double Permeability = milli*darcy;
203  const double LiquidSurfaceVolume = cubic(meter);
204  const double GasSurfaceVolume = cubic(meter);
205  const double ReservoirVolume = cubic(meter);
206  const double GasDissolutionFactor = GasSurfaceVolume/LiquidSurfaceVolume;
207  const double OilDissolutionFactor = LiquidSurfaceVolume/GasSurfaceVolume;
208  const double Density = kilogram/cubic(meter);
210  const double Salinity = kilogram/cubic(meter);
211  const double Viscosity = centi*Poise;
212  const double Timestep = day;
213  }
214 
215 
216  namespace Field {
217  using namespace details::prefix;
218  using namespace details::unit;
219  const double Pressure = psia;
220  const double Temperature = degFahrenheit;
222  const double AbsoluteTemperature = degFahrenheit; // actually [°R], but the these two are identical
223  const double Length = feet;
224  const double Time = day;
225  const double Mass = pound;
226  const double Permeability = milli*darcy;
228  const double LiquidSurfaceVolume = stb;
229  const double GasSurfaceVolume = 1000*cubic(feet);
230  const double ReservoirVolume = stb;
231  const double GasDissolutionFactor = GasSurfaceVolume/LiquidSurfaceVolume;
232  const double OilDissolutionFactor = LiquidSurfaceVolume/GasSurfaceVolume;
233  const double Density = pound/cubic(feet);
234  const double PolymerDensity = pound/stb;
235  const double Salinity = pound/stb;
236  const double Viscosity = centi*Poise;
237  const double Timestep = day;
238  }
239 
240 }
241 
242 
243 #endif
const double micro
Definition: ConversionFactors.hpp:54
const double GasDissolutionFactor
Definition: ConversionFactors.hpp:206
const double Transmissibility
Definition: ConversionFactors.hpp:202
const double Density
Definition: ConversionFactors.hpp:208
const double Pas
Definition: ConversionFactors.hpp:161
Definition: Deck.hpp:29
const double area
Definition: ConversionFactors.hpp:167
const double flux
Definition: ConversionFactors.hpp:168
const double meter
Definition: ConversionFactors.hpp:91
const double Pressure
Definition: ConversionFactors.hpp:194
const double LiquidSurfaceVolume
Definition: ConversionFactors.hpp:203
const double atm
Definition: ConversionFactors.hpp:142
const double Mass
Definition: ConversionFactors.hpp:200
const double Temperature
Definition: ConversionFactors.hpp:195
const double p_grad
Definition: ConversionFactors.hpp:166
const double visc
Definition: ConversionFactors.hpp:170
const double inch
Definition: ConversionFactors.hpp:92
const double centi
Definition: ConversionFactors.hpp:56
const double day
Definition: ConversionFactors.hpp:101
const double year
Definition: ConversionFactors.hpp:102
const double stb
Definition: ConversionFactors.hpp:108
const double Pascal
Definition: ConversionFactors.hpp:140
const double second
Definition: ConversionFactors.hpp:98
const double Time
Definition: ConversionFactors.hpp:199
const double PolymerDensity
Definition: ConversionFactors.hpp:209
double cubic(double v)
Definition: ConversionFactors.hpp:82
const double degCelsiusOffset
Definition: ConversionFactors.hpp:153
const double deci
Definition: ConversionFactors.hpp:57
const double liter
Definition: ConversionFactors.hpp:109
const double Permeability
Definition: ConversionFactors.hpp:201
const double gravity
Definition: ConversionFactors.hpp:125
const double OilDissolutionFactor
Definition: ConversionFactors.hpp:207
const double pound
Definition: ConversionFactors.hpp:116
const double milli
Definition: ConversionFactors.hpp:55
const double degFahrenheit
Definition: ConversionFactors.hpp:155
const double Poise
Definition: ConversionFactors.hpp:162
const double Salinity
Definition: ConversionFactors.hpp:210
const double AbsoluteTemperature
Definition: ConversionFactors.hpp:197
double square(double v)
Definition: ConversionFactors.hpp:81
const double darcy
Definition: ConversionFactors.hpp:184
const double hour
Definition: ConversionFactors.hpp:100
const double lbf
Definition: ConversionFactors.hpp:135
const double Newton
Definition: ConversionFactors.hpp:134
const double kilo
Definition: ConversionFactors.hpp:58
const double kilogram
Definition: ConversionFactors.hpp:114
const double Viscosity
Definition: ConversionFactors.hpp:211
const double degFahrenheitOffset
Definition: ConversionFactors.hpp:156
const double psia
Definition: ConversionFactors.hpp:143
const double GasSurfaceVolume
Definition: ConversionFactors.hpp:204
const double degCelsius
Definition: ConversionFactors.hpp:152
const double barsa
Definition: ConversionFactors.hpp:141
const double gallon
Definition: ConversionFactors.hpp:107
const double ReservoirVolume
Definition: ConversionFactors.hpp:205
const double darcy
Definition: ConversionFactors.hpp:171
const double minute
Definition: ConversionFactors.hpp:99
const double Length
Definition: ConversionFactors.hpp:198
const double velocity
Definition: ConversionFactors.hpp:169
const double giga
Definition: ConversionFactors.hpp:60
const double mega
Definition: ConversionFactors.hpp:59
const double feet
Definition: ConversionFactors.hpp:93
const double Timestep
Definition: ConversionFactors.hpp:212
const double TemperatureOffset
Definition: ConversionFactors.hpp:196