My Project
BrineCo2Pvt.hpp
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
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 2 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 Consult the COPYING file in the top-level source directory of this
20 module for the precise wording of the license and the list of
21 copyright holders.
22*/
27#ifndef OPM_BRINE_CO2_PVT_HPP
28#define OPM_BRINE_CO2_PVT_HPP
29
31
33
41
42#include <vector>
43
44namespace Opm {
45
46#if HAVE_ECL_INPUT
47class EclipseState;
48class Schedule;
49#endif
50
55template <class Scalar>
57{
58 static constexpr bool extrapolate = true;
59 //typedef H2O<Scalar> H2O_IAPWS;
60 //typedef Brine<Scalar, H2O_IAPWS> Brine_IAPWS;
61 //typedef TabulatedComponent<Scalar, H2O_IAPWS> H2O_Tabulated;
62 //typedef TabulatedComponent<Scalar, Brine_IAPWS> Brine_Tabulated;
63
64 //typedef H2O_Tabulated H2O;
65 //typedef Brine_Tabulated Brine;
66
67
68public:
71 using CO2 = ::Opm::CO2<Scalar>;
72
75
76 explicit BrineCo2Pvt() = default;
77
78 BrineCo2Pvt(const std::vector<Scalar>& salinity,
79 Scalar T_ref = 288.71, //(273.15 + 15.56)
80 Scalar P_ref = 101325)
81 : salinity_(salinity)
82 {
83 int num_regions = salinity_.size();
84 co2ReferenceDensity_.resize(num_regions);
85 brineReferenceDensity_.resize(num_regions);
86 Brine::salinity = salinity[0];
87 for (int i = 0; i < num_regions; ++i) {
88 co2ReferenceDensity_[i] = CO2::gasDensity(T_ref, P_ref, true);
89 brineReferenceDensity_[i] = Brine::liquidDensity(T_ref, P_ref, true);
90 }
91 }
92
93#if HAVE_ECL_INPUT
98 void initFromState(const EclipseState& eclState, const Schedule&);
99#endif
100
101 void setNumRegions(size_t numRegions)
102 {
103 brineReferenceDensity_.resize(numRegions);
104 co2ReferenceDensity_.resize(numRegions);
105 salinity_.resize(numRegions);
106 }
107
108
112 void setReferenceDensities(unsigned regionIdx,
113 Scalar rhoRefBrine,
114 Scalar rhoRefCO2,
115 Scalar /*rhoRefWater*/)
116 {
117 brineReferenceDensity_[regionIdx] = rhoRefBrine;
118 co2ReferenceDensity_[regionIdx] = rhoRefCO2;
119 }
120
121
125 void initEnd()
126 {
127
128 }
129
136 void setEnableDissolvedGas(bool yesno)
137 { enableDissolution_ = yesno; }
138
142 unsigned numRegions() const
143 { return brineReferenceDensity_.size(); }
144
148 template <class Evaluation>
149 Evaluation internalEnergy(unsigned regionIdx,
150 const Evaluation& temperature,
151 const Evaluation& pressure,
152 const Evaluation& Rs,
153 const Evaluation& /*saltConcentration*/) const
154 {
155 return internalEnergy(regionIdx, temperature, pressure, Rs);
156 }
160 template <class Evaluation>
161 Evaluation internalEnergy(unsigned regionIdx,
162 const Evaluation& temperature,
163 const Evaluation& pressure,
164 const Evaluation& Rs) const
165 {
166
167 const Evaluation xlCO2 = convertRsToXoG_(Rs,regionIdx);
168 return (liquidEnthalpyBrineCO2_(temperature,
169 pressure,
170 salinity_[regionIdx],
171 xlCO2)
172 - pressure / density_(regionIdx, temperature, pressure, Rs));
173 }
174
178 template <class Evaluation>
179 Evaluation viscosity(unsigned regionIdx,
180 const Evaluation& temperature,
181 const Evaluation& pressure,
182 const Evaluation& /*Rs*/) const
183 {
184 //TODO: The viscosity does not yet depend on the composition
185 return saturatedViscosity(regionIdx, temperature, pressure);
186 }
187
191 template <class Evaluation>
192 Evaluation saturatedViscosity(unsigned regionIdx,
193 const Evaluation& temperature,
194 const Evaluation& pressure,
195 const Evaluation& /*saltConcentration*/) const
196 {
197 return saturatedViscosity(regionIdx, temperature, pressure);
198 }
199
203 template <class Evaluation>
204 Evaluation viscosity(unsigned regionIdx,
205 const Evaluation& temperature,
206 const Evaluation& pressure,
207 const Evaluation& /*Rsw*/,
208 const Evaluation& /*saltConcentration*/) const
209 {
210 //TODO: The viscosity does not yet depend on the composition
211 return saturatedViscosity(regionIdx, temperature, pressure);
212 }
213
217 template <class Evaluation>
218 Evaluation saturatedViscosity(unsigned /*regionIdx*/,
219 const Evaluation& temperature,
220 const Evaluation& pressure) const
221 {
222 return Brine::liquidViscosity(temperature, pressure);
223 }
224
225
229 template <class Evaluation>
230 Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx,
231 const Evaluation& temperature,
232 const Evaluation& pressure,
233 const Evaluation& /*saltconcentration*/) const
234 {
235 return saturatedInverseFormationVolumeFactor(regionIdx, temperature, pressure);
236 }
240 template <class Evaluation>
241 Evaluation inverseFormationVolumeFactor(unsigned regionIdx,
242 const Evaluation& temperature,
243 const Evaluation& pressure,
244 const Evaluation& Rs,
245 const Evaluation& /*saltConcentration*/) const
246 {
247 return inverseFormationVolumeFactor(regionIdx, temperature, pressure, Rs);
248 }
252 template <class Evaluation>
253 Evaluation inverseFormationVolumeFactor(unsigned regionIdx,
254 const Evaluation& temperature,
255 const Evaluation& pressure,
256 const Evaluation& Rs) const
257 {
258 return (1.0 - convertRsToXoG_(Rs,regionIdx)) * density_(regionIdx, temperature, pressure, Rs)/brineReferenceDensity_[regionIdx];
259 }
260
264 template <class Evaluation>
265 Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx,
266 const Evaluation& temperature,
267 const Evaluation& pressure) const
268 {
269 Evaluation rsSat = rsSat_(regionIdx, temperature, pressure);
270 return (1.0 - convertRsToXoG_(rsSat,regionIdx)) * density_(regionIdx, temperature, pressure, rsSat)/brineReferenceDensity_[regionIdx];
271 }
272
279 template <class Evaluation>
280 Evaluation saturationPressure(unsigned /*regionIdx*/,
281 const Evaluation& /*temperature*/,
282 const Evaluation& /*Rs*/) const
283 {
284 throw std::runtime_error("Requested the saturation pressure for the brine-co2 pvt module. Not yet implemented.");
285 }
286
293 template <class Evaluation>
294 Evaluation saturationPressure(unsigned /*regionIdx*/,
295 const Evaluation& /*temperature*/,
296 const Evaluation& /*Rs*/,
297 const Evaluation& /*saltConcentration*/) const
298 {
299 throw std::runtime_error("Requested the saturation pressure for the brine-co2 pvt module. Not yet implemented.");
300 }
301
305 template <class Evaluation>
306 Evaluation saturatedGasDissolutionFactor(unsigned regionIdx,
307 const Evaluation& temperature,
308 const Evaluation& pressure,
309 const Evaluation& /*oilSaturation*/,
310 const Evaluation& /*maxOilSaturation*/) const
311 {
312 //TODO support VAPPARS
313 return rsSat_(regionIdx, temperature, pressure);
314 }
315
319 template <class Evaluation>
320 Evaluation saturatedGasDissolutionFactor(unsigned regionIdx,
321 const Evaluation& temperature,
322 const Evaluation& pressure,
323 const Evaluation& /*saltConcentration*/) const
324 {
325 return rsSat_(regionIdx, temperature, pressure);
326 }
327
331 template <class Evaluation>
332 Evaluation saturatedGasDissolutionFactor(unsigned regionIdx,
333 const Evaluation& temperature,
334 const Evaluation& pressure) const
335 {
336 return rsSat_(regionIdx, temperature, pressure);
337 }
338
339 const Scalar oilReferenceDensity(unsigned regionIdx) const
340 { return brineReferenceDensity_[regionIdx]; }
341
342 const Scalar waterReferenceDensity(unsigned regionIdx) const
343 { return brineReferenceDensity_[regionIdx]; }
344
345 const Scalar gasReferenceDensity(unsigned regionIdx) const
346 { return co2ReferenceDensity_[regionIdx]; }
347
348 const Scalar salinity(unsigned regionIdx) const
349 { return salinity_[regionIdx]; }
350
351 template <class Evaluation>
352 Evaluation diffusionCoefficient(const Evaluation& temperature,
353 const Evaluation& pressure,
354 unsigned /*compIdx*/) const
355 {
356 //Diffusion coefficient of CO2 in pure water according to (McLachlan and Danckwerts, 1972)
357 const Evaluation log_D_H20 = -4.1764 + 712.52 / temperature - 2.5907e5 / (temperature*temperature);
358
359 //Diffusion coefficient of CO2 in the brine phase modified following (Ratcliff and Holdcroft,1963 and Al-Rawajfeh, 2004)
360 const Evaluation& mu_H20 = H2O::liquidViscosity(temperature, pressure, extrapolate); // Water viscosity
361 const Evaluation& mu_Brine = Brine::liquidViscosity(temperature, pressure); // Brine viscosity
362 const Evaluation log_D_Brine = log_D_H20 - 0.87*log10(mu_Brine / mu_H20);
363
364 return pow(Evaluation(10), log_D_Brine) * 1e-4; // convert from cm2/s to m2/s
365 }
366
367private:
368 std::vector<Scalar> brineReferenceDensity_;
369 std::vector<Scalar> co2ReferenceDensity_;
370 std::vector<Scalar> salinity_;
371 bool enableDissolution_ = true;
372
373 template <class LhsEval>
374 LhsEval density_(unsigned regionIdx,
375 const LhsEval& temperature,
376 const LhsEval& pressure,
377 const LhsEval& Rs) const
378 {
379 LhsEval xlCO2 = convertXoGToxoG_(convertRsToXoG_(Rs,regionIdx));
380 LhsEval result = liquidDensity_(temperature,
381 pressure,
382 xlCO2);
383
384 Valgrind::CheckDefined(result);
385 return result;
386 }
387
388
389 template <class LhsEval>
390 LhsEval liquidDensity_(const LhsEval& T,
391 const LhsEval& pl,
392 const LhsEval& xlCO2) const
393 {
394 Valgrind::CheckDefined(T);
395 Valgrind::CheckDefined(pl);
396 Valgrind::CheckDefined(xlCO2);
397
398 if(!extrapolate && T < 273.15) {
399 const std::string msg =
400 "Liquid density for Brine and CO2 is only "
401 "defined above 273.15K (is " +
402 std::to_string(getValue(T)) + "K)";
403 throw NumericalProblem(msg);
404 }
405 if(!extrapolate && pl >= 2.5e8) {
406 const std::string msg =
407 "Liquid density for Brine and CO2 is only "
408 "defined below 250MPa (is " +
409 std::to_string(getValue(pl)) + "Pa)";
410 throw NumericalProblem(msg);
411 }
412
413 const LhsEval& rho_brine = Brine::liquidDensity(T, pl, extrapolate);
414 const LhsEval& rho_pure = H2O::liquidDensity(T, pl, extrapolate);
415 const LhsEval& rho_lCO2 = liquidDensityWaterCO2_(T, pl, xlCO2);
416 const LhsEval& contribCO2 = rho_lCO2 - rho_pure;
417
418 return rho_brine + contribCO2;
419 }
420
421 template <class LhsEval>
422 LhsEval liquidDensityWaterCO2_(const LhsEval& temperature,
423 const LhsEval& pl,
424 const LhsEval& xlCO2) const
425 {
426 Scalar M_CO2 = CO2::molarMass();
427 Scalar M_H2O = H2O::molarMass();
428
429 const LhsEval& tempC = temperature - 273.15; /* tempC : temperature in °C */
430 const LhsEval& rho_pure = H2O::liquidDensity(temperature, pl, extrapolate);
431 // calculate the mole fraction of CO2 in the liquid. note that xlH2O is available
432 // as a function parameter, but in the case of a pure gas phase the value of M_T
433 // for the virtual liquid phase can become very large
434 const LhsEval xlH2O = 1.0 - xlCO2;
435 const LhsEval& M_T = M_H2O * xlH2O + M_CO2 * xlCO2;
436 const LhsEval& V_phi =
437 (37.51 +
438 tempC*(-9.585e-2 +
439 tempC*(8.74e-4 -
440 tempC*5.044e-7))) / 1.0e6;
441 return 1/ (xlCO2 * V_phi/M_T + M_H2O * xlH2O / (rho_pure * M_T));
442 }
443
448 template <class LhsEval>
449 LhsEval convertRsToXoG_(const LhsEval& Rs, unsigned regionIdx) const
450 {
451 Scalar rho_oRef = brineReferenceDensity_[regionIdx];
452 Scalar rho_gRef = co2ReferenceDensity_[regionIdx];
453
454 const LhsEval& rho_oG = Rs*rho_gRef;
455 return rho_oG/(rho_oRef + rho_oG);
456 }
457
458
462 template <class LhsEval>
463 LhsEval convertXoGToxoG_(const LhsEval& XoG) const
464 {
465 Scalar M_CO2 = CO2::molarMass();
466 Scalar M_Brine = Brine::molarMass();
467 return XoG*M_Brine / (M_CO2*(1 - XoG) + XoG*M_Brine);
468 }
469
470
474 template <class LhsEval>
475 LhsEval convertxoGToXoG(const LhsEval& xoG) const
476 {
477 Scalar M_CO2 = CO2::molarMass();
478 Scalar M_Brine = Brine::molarMass();
479
480 return xoG*M_CO2 / (xoG*(M_CO2 - M_Brine) + M_Brine);
481 }
482
483
488 template <class LhsEval>
489 LhsEval convertXoGToRs(const LhsEval& XoG, unsigned regionIdx) const
490 {
491 Scalar rho_oRef = brineReferenceDensity_[regionIdx];
492 Scalar rho_gRef = co2ReferenceDensity_[regionIdx];
493
494 return XoG/(1.0 - XoG)*(rho_oRef/rho_gRef);
495 }
496
497
498 template <class LhsEval>
499 LhsEval rsSat_(unsigned regionIdx,
500 const LhsEval& temperature,
501 const LhsEval& pressure) const
502 {
503 if (!enableDissolution_)
504 return 0.0;
505
506 // calulate the equilibrium composition for the given
507 // temperature and pressure.
508 LhsEval xgH2O;
509 LhsEval xlCO2;
511 pressure,
512 salinity_[regionIdx],
513 /*knownPhaseIdx=*/-1,
514 xlCO2,
515 xgH2O,
516 extrapolate);
517
518 // normalize the phase compositions
519 xlCO2 = max(0.0, min(1.0, xlCO2));
520
521 return convertXoGToRs(convertxoGToXoG(xlCO2), regionIdx);
522 }
523
524 template <class LhsEval>
525 static LhsEval liquidEnthalpyBrineCO2_(const LhsEval& T,
526 const LhsEval& p,
527 Scalar S, // salinity
528 const LhsEval& X_CO2_w)
529 {
530 /* X_CO2_w : mass fraction of CO2 in brine */
531
532 /* same function as enthalpy_brine, only extended by CO2 content */
533
534 /*Numerical coefficents from PALLISER*/
535 static constexpr Scalar f[] = {
536 2.63500E-1, 7.48368E-6, 1.44611E-6, -3.80860E-10
537 };
538
539 /*Numerical coefficents from MICHAELIDES for the enthalpy of brine*/
540 static constexpr Scalar a[4][3] = {
541 { 9633.6, -4080.0, +286.49 },
542 { +166.58, +68.577, -4.6856 },
543 { -0.90963, -0.36524, +0.249667E-1 },
544 { +0.17965E-2, +0.71924E-3, -0.4900E-4 }
545 };
546
547 LhsEval theta, h_NaCl;
548 LhsEval h_ls1, d_h;
549 LhsEval delta_h;
550 LhsEval delta_hCO2, hg, hw;
551
552 theta = T - 273.15;
553
554 // Regularization
555 Scalar scalarTheta = scalarValue(theta);
556 Scalar S_lSAT = f[0] + scalarTheta*(f[1] + scalarTheta*(f[2] + scalarTheta*f[3]));
557 if (S > S_lSAT)
558 S = S_lSAT;
559
560 hw = H2O::liquidEnthalpy(T, p) /1E3; /* kJ/kg */
561
562 /*DAUBERT and DANNER*/
563 /*U=*/h_NaCl = (3.6710E4*T + 0.5*(6.2770E1)*T*T - ((6.6670E-2)/3)*T*T*T
564 +((2.8000E-5)/4)*(T*T*T*T))/(58.44E3)- 2.045698e+02; /* kJ/kg */
565
566 Scalar m = 1E3/58.44 * S/(1-S);
567 int i = 0;
568 int j = 0;
569 d_h = 0;
570
571 for (i = 0; i<=3; i++) {
572 for (j=0; j<=2; j++) {
573 d_h = d_h + a[i][j] * pow(theta, static_cast<Scalar>(i)) * std::pow(m, j);
574 }
575 }
576 /* heat of dissolution for halite according to Michaelides 1971 */
577 delta_h = (4.184/(1E3 + (58.44 * m)))*d_h;
578
579 /* Enthalpy of brine without CO2 */
580 h_ls1 =(1-S)*hw + S*h_NaCl + S*delta_h; /* kJ/kg */
581
582 /* heat of dissolution for CO2 according to Fig. 6 in Duan and Sun 2003. (kJ/kg)
583 In the relevant temperature ranges CO2 dissolution is
584 exothermal */
585 delta_hCO2 = (-57.4375 + T * 0.1325) * 1000/44;
586
587 /* enthalpy contribution of CO2 (kJ/kg) */
588 hg = CO2::gasEnthalpy(T, p, extrapolate)/1E3 + delta_hCO2;
589
590 /* Enthalpy of brine with dissolved CO2 */
591 return (h_ls1 - X_CO2_w*hw + hg*X_CO2_w)*1E3; /*J/kg*/
592 }
593};
594
595} // namespace Opm
596
597#endif
A class for the brine fluid properties.
Binary coefficients for brine and CO2.
A class for the CO2 fluid properties.
Provides the OPM specific exception classes.
Binary coefficients for water and CO2.
A generic class which tabulates all thermodynamic properties of a given component.
Implements a scalar function that depends on two variables and which is sampled on an uniform X-Y gri...
Binary coefficients for brine and CO2.
Definition: Brine_CO2.hpp:42
static void calculateMoleFractions(const Evaluation &temperature, const Evaluation &pg, Scalar salinity, const int knownPhaseIdx, Evaluation &xlCO2, Evaluation &ygH2O, bool extrapolate=false)
Returns the mol (!) fraction of CO2 in the liquid phase and the mol_ (!) fraction of H2O in the gas p...
Definition: Brine_CO2.hpp:97
This class represents the Pressure-Volume-Temperature relations of the liquid phase for a CO2-Brine s...
Definition: BrineCo2Pvt.hpp:57
Evaluation internalEnergy(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &Rs) const
Returns the specific enthalpy [J/kg] of gas given a set of parameters.
Definition: BrineCo2Pvt.hpp:161
Evaluation saturatedGasDissolutionFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &, const Evaluation &) const
Returns the gas dissoluiton factor [m^3/m^3] of the liquid phase.
Definition: BrineCo2Pvt.hpp:306
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &Rs) const
Returns the formation volume factor [-] of the fluid phase.
Definition: BrineCo2Pvt.hpp:253
Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &) const
Returns the formation volume factor [-] of the fluid phase.
Definition: BrineCo2Pvt.hpp:230
unsigned numRegions() const
Return the number of PVT regions which are considered by this PVT-object.
Definition: BrineCo2Pvt.hpp:142
Evaluation saturationPressure(unsigned, const Evaluation &, const Evaluation &) const
Returns the saturation pressure of the brine phase [Pa] depending on its mass fraction of the gas com...
Definition: BrineCo2Pvt.hpp:280
void initEnd()
Finish initializing the oil phase PVT properties.
Definition: BrineCo2Pvt.hpp:125
Evaluation saturatedGasDissolutionFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &) const
Returns the gas dissoluiton factor [m^3/m^3] of the liquid phase.
Definition: BrineCo2Pvt.hpp:320
Evaluation saturatedViscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &) const
Returns the dynamic viscosity [Pa s] of the fluid phase given a set of parameters.
Definition: BrineCo2Pvt.hpp:192
Evaluation viscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &, const Evaluation &) const
Returns the dynamic viscosity [Pa s] of the fluid phase given a set of parameters.
Definition: BrineCo2Pvt.hpp:204
Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure) const
Returns the formation volume factor [-] of brine saturated with CO2 at a given pressure.
Definition: BrineCo2Pvt.hpp:265
Evaluation saturationPressure(unsigned, const Evaluation &, const Evaluation &, const Evaluation &) const
Returns the saturation pressure of the brine phase [Pa] depending on its mass fraction of the gas com...
Definition: BrineCo2Pvt.hpp:294
void setReferenceDensities(unsigned regionIdx, Scalar rhoRefBrine, Scalar rhoRefCO2, Scalar)
Initialize the reference densities of all fluids for a given PVT region.
Definition: BrineCo2Pvt.hpp:112
Evaluation viscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &) const
Returns the dynamic viscosity [Pa s] of the fluid phase given a set of parameters.
Definition: BrineCo2Pvt.hpp:179
Evaluation saturatedGasDissolutionFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure) const
Returns thegas dissoluiton factor [m^3/m^3] of the liquid phase.
Definition: BrineCo2Pvt.hpp:332
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &Rs, const Evaluation &) const
Returns the formation volume factor [-] of the fluid phase.
Definition: BrineCo2Pvt.hpp:241
void setEnableDissolvedGas(bool yesno)
Specify whether the PVT model should consider that the CO2 component can dissolve in the brine phase.
Definition: BrineCo2Pvt.hpp:136
Evaluation saturatedViscosity(unsigned, const Evaluation &temperature, const Evaluation &pressure) const
Returns the dynamic viscosity [Pa s] of oil saturated gas at given pressure.
Definition: BrineCo2Pvt.hpp:218
Evaluation internalEnergy(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &Rs, const Evaluation &) const
Returns the specific enthalpy [J/kg] of gas given a set of parameters.
Definition: BrineCo2Pvt.hpp:149
A class for the brine fluid properties.
Definition: Brine.hpp:46
static Scalar molarMass()
The molar mass in of the component.
Definition: Brine.hpp:80
static Evaluation liquidDensity(const Evaluation &temperature, const Evaluation &pressure, bool extrapolate=false)
The density of the liquid component at a given pressure in and temperature in .
Definition: Brine.hpp:262
static Evaluation liquidViscosity(const Evaluation &temperature, const Evaluation &)
The dynamic viscosity of pure water.
Definition: Brine.hpp:339
static Scalar salinity
The mass fraction of salt assumed to be in the brine.
Definition: Brine.hpp:49
A class for the CO2 fluid properties.
Definition: CO2.hpp:53
static Evaluation gasEnthalpy(const Evaluation &temperature, const Evaluation &pressure, bool extrapolate=false)
Specific enthalpy of gaseous CO2 [J/kg].
Definition: CO2.hpp:168
static Scalar molarMass()
The mass in [kg] of one mole of CO2.
Definition: CO2.hpp:70
static Evaluation gasDensity(const Evaluation &temperature, const Evaluation &pressure, bool extrapolate=false)
The density of CO2 at a given pressure and temperature [kg/m^3].
Definition: CO2.hpp:193
Definition: EclipseState.hpp:55
Definition: Schedule.hpp:130
A simple version of pure water with density from Hu et al.
Definition: SimpleHuDuanH2O.hpp:63
static Evaluation liquidEnthalpy(const Evaluation &temperature, const Evaluation &)
Specific enthalpy of liquid water .
Definition: SimpleHuDuanH2O.hpp:191
static Evaluation liquidViscosity(const Evaluation &temperature, const Evaluation &pressure, bool extrapolate)
The dynamic viscosity of pure water.
Definition: SimpleHuDuanH2O.hpp:343
static Evaluation liquidDensity(const Evaluation &temperature, const Evaluation &pressure, bool extrapolate)
The density of pure water at a given pressure and temperature .
Definition: SimpleHuDuanH2O.hpp:302
static Scalar molarMass()
The molar mass in of water.
Definition: SimpleHuDuanH2O.hpp:97
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30