www.mooseframework.org
BrineFluidProperties.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #include "BrineFluidProperties.h"
11 
12 registerMooseObject("FluidPropertiesApp", BrineFluidProperties);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<MultiComponentFluidProperties>();
19  params.addParam<UserObjectName>("water_fp",
20  "The name of the FluidProperties UserObject for water");
21  params.addClassDescription("Fluid properties for brine");
22  return params;
23 }
24 
25 BrineFluidProperties::BrineFluidProperties(const InputParameters & parameters)
26  : MultiComponentFluidProperties(parameters), _water_fp_derivs(true)
27 {
28  // There are two possibilities to consider:
29  // 1) No water_fp has been supplied (in which case one is constructed)
30  // 2) A water_fp hase been supplied (in which case it is used)
31  // In both cases, though, a Water97FluidProperties UserObject must be added
32  // Note: this UserObject is only used to gain access to the Henry's constant
33  // formulation. All property calculations are performed using _water_fp
34  const std::string water_name = name() + ":water";
35  {
36  const std::string class_name = "Water97FluidProperties";
37  InputParameters params = _app.getFactory().getValidParams(class_name);
38  if (_tid == 0)
39  _fe_problem.addUserObject(class_name, water_name, params);
40  }
41  _water97_fp = &_fe_problem.getUserObjectTempl<Water97FluidProperties>(water_name);
42 
43  if (parameters.isParamSetByUser("water_fp"))
44  {
45  // SinglePhaseFluidPropertiesPT UserObject for water
46  _water_fp = &getUserObject<SinglePhaseFluidProperties>("water_fp");
47 
48  // Check that a water userobject has actually been supplied
49  if (_water_fp->fluidName() != "water")
50  paramError("water_fp", "A water FluidProperties UserObject must be supplied");
51  }
52  else
53  {
54  // Construct a SinglePhaseFluidProperties UserObject for water
55  _water_fp = &_fe_problem.getUserObjectTempl<SinglePhaseFluidProperties>(water_name);
56  }
57 
58  // SinglePhaseFluidProperties UserObject for NaCl
59  const std::string nacl_name = name() + ":nacl";
60  {
61  const std::string class_name = "NaClFluidProperties";
62  InputParameters params = _app.getFactory().getValidParams(class_name);
63  if (_tid == 0)
64  _fe_problem.addUserObject(class_name, nacl_name, params);
65  }
66  _nacl_fp = &_fe_problem.getUserObjectTempl<SinglePhaseFluidProperties>(nacl_name);
67 
68  // Molar mass of NaCl and H20
71 }
72 
74 
77 {
78  switch (component)
79  {
80  case WATER:
81  return *_water_fp;
82 
83  case NACL:
84  return *_nacl_fp;
85 
86  default:
87  mooseError("BrineFluidProperties::getComponent has been provided an incorrect component");
88  }
89 }
90 
91 std::string
93 {
94  return "brine";
95 }
96 
99 {
100  return 1.0 / (xnacl / _Mnacl + (1.0 - xnacl) / _Mh2o);
101 }
102 
103 Real
105 {
106  return 1.0 / (xnacl / _Mnacl + (1.0 - xnacl) / _Mh2o);
107 }
108 
109 Real
111 {
112  return _Mnacl;
113 }
114 
115 Real
117 {
118  return _Mh2o;
119 }
120 
123  const FPDualReal & temperature,
124  const FPDualReal & xnacl) const
125 {
126  // The correlation requires the pressure in bar, not Pa.
127  FPDualReal pbar = pressure * 1.0e-5;
128  FPDualReal pbar2 = pbar * pbar;
129  FPDualReal pbar3 = pbar2 * pbar;
130 
131  // The correlation requires mole fraction
132  const FPDualReal Xnacl = massFractionToMoleFraction(xnacl);
133 
134  const FPDualReal n11 = -54.2958 - 45.7623 * std::exp(-9.44785e-4 * pbar);
135  const FPDualReal n21 = -2.6142 - 2.39092e-4 * pbar;
136  const FPDualReal n22 = 0.0356828 + 4.37235e-6 * pbar + 2.0566e-9 * pbar2;
137  const FPDualReal n1x1 = 330.47 + 0.942876 * std::sqrt(pbar) + 0.0817193 * pbar -
138  2.47556e-8 * pbar2 + 3.45052e-10 * pbar3;
139  const FPDualReal n2x1 = -0.0370751 + 0.00237723 * std::sqrt(pbar) + 5.42049e-5 * pbar +
140  5.84709e-9 * pbar2 - 5.99373e-13 * pbar3;
141  const FPDualReal n12 = -n1x1 - n11;
142  const FPDualReal n20 = 1.0 - n21 * std::sqrt(n22);
143  const FPDualReal n23 = n2x1 - n20 - n21 * std::sqrt(1.0 + n22);
144 
145  // The temperature Tv where the brine has the same molar volume as pure water
146  // Note: correlation uses temperature in Celcius
147  const FPDualReal n1 = n1x1 + n11 * (1.0 - Xnacl) + n12 * (1.0 - Xnacl) * (1.0 - Xnacl);
148  const FPDualReal n2 = n20 + n21 * std::sqrt(Xnacl + n22) + n23 * Xnacl;
149  const FPDualReal Tv = n1 + n2 * (temperature - _T_c2k);
150 
151  // The density of water at temperature Tv
152  // Note: convert Tv to Kelvin to calculate water density
153  FPDualReal water_density;
154  if (_water_fp_derivs)
155  {
156  Real rho, drho_dp, drho_dT;
157  _water_fp->rho_from_p_T(pressure.value(), Tv.value() + _T_c2k, rho, drho_dp, drho_dT);
158  water_density = rho;
159 
160  water_density.derivatives() = pressure.derivatives() * drho_dp + Tv.derivatives() * drho_dT;
161  }
162  else
163  water_density = _water_fp->rho_from_p_T(pressure.value(), Tv.value() + _T_c2k);
164 
165  // The brine density is given by the water density scaled by the ratio of
166  // brine molar mass to pure water molar mass
167  return water_density * molarMass(xnacl) / _Mh2o;
168 }
169 
170 Real
172 {
173  // Initialise the AD value (no derivatives required)
176  FPDualReal x = xnacl;
177 
178  _water_fp_derivs = false;
179  FPDualReal ad_rho = this->rho_from_p_T_X(p, T, x);
180 
181  return ad_rho.value();
182 }
183 
184 void
186  Real temperature,
187  Real xnacl,
188  Real & rho,
189  Real & drho_dp,
190  Real & drho_dT,
191  Real & drho_dx) const
192 {
193  // Initialise the AD value and derivatives
195  Moose::derivInsert(p.derivatives(), 0, 1.0);
197  Moose::derivInsert(T.derivatives(), 1, 1.0);
198  FPDualReal x = xnacl;
199  Moose::derivInsert(x.derivatives(), 2, 1.0);
200 
201  _water_fp_derivs = true;
202  FPDualReal ad_rho = this->rho_from_p_T_X(p, T, x);
203 
204  rho = ad_rho.value();
205  drho_dp = ad_rho.derivatives()[0];
206  drho_dT = ad_rho.derivatives()[1];
207  drho_dx = ad_rho.derivatives()[2];
208 }
209 
210 Real
212 {
213  // Correlation requires molal concentration (mol/kg)
214  const Real mol = massFractionToMolalConc(xnacl);
215  const Real mol2 = mol * mol;
216  const Real mol3 = mol2 * mol;
217 
218  // Correlation requires temperature in C
219  const Real Tc = temperature - _T_c2k;
220 
221  const Real a = 1.0 + 0.0816 * mol + 0.0122 * mol2 + 0.128e-3 * mol3 +
222  0.629e-3 * Tc * (1.0 - std::exp(-0.7 * mol));
223 
224  const Real water_viscosity = _water_fp->mu_from_p_T(pressure, temperature);
225 
226  return a * water_viscosity;
227 }
228 
229 void
231  Real temperature,
232  Real xnacl,
233  Real & mu,
234  Real & dmu_dp,
235  Real & dmu_dT,
236  Real & dmu_dx) const
237 {
238  // Viscosity of water and derivatives wrt pressure and temperature
239  Real muw, dmuw_dp, dmuw_dT;
240  _water_fp->mu_from_p_T(pressure, temperature, muw, dmuw_dp, dmuw_dT);
241 
242  // Correlation requires molal concentration (mol/kg)
243  Real mol = massFractionToMolalConc(xnacl);
244  Real dmol_dx = 1.0 / ((1.0 - xnacl) * (1.0 - xnacl) * _Mnacl);
245  Real mol2 = mol * mol;
246  Real mol3 = mol2 * mol;
247 
248  // Correlation requires temperature in C
249  Real Tc = temperature - _T_c2k;
250 
251  Real a = 1.0 + 0.0816 * mol + 0.0122 * mol2 + 0.128e-3 * mol3 +
252  0.629e-3 * Tc * (1.0 - std::exp(-0.7 * mol));
253  Real da_dx =
254  (0.0816 + 0.0244 * mol + 3.84e-4 * mol2 + 4.403e-4 * Tc * std::exp(-0.7 * mol)) * dmol_dx;
255  Real da_dT = 0.629e-3 * (1.0 - std::exp(-0.7 * mol));
256 
257  mu = a * muw;
258  dmu_dp = a * dmuw_dp;
259  dmu_dx = da_dx * muw;
260  dmu_dT = da_dT * muw + a * dmuw_dT;
261 }
262 
265  const FPDualReal & temperature,
266  const FPDualReal & xnacl) const
267 {
268  FPDualReal q1, q2, q10, q11, q12, q20, q21, q22, q23, q1x1, q2x1, Th;
269 
270  // The correlation requires the pressure in bar, not Pa.
271  const FPDualReal pbar = pressure * 1.0e-5;
272  const FPDualReal pbar2 = pbar * pbar;
273 
274  // The correlation requires mole fraction
275  const FPDualReal Xnacl = massFractionToMoleFraction(xnacl);
276 
277  q11 = -32.1724 + 0.0621255 * pbar;
278  q21 = -1.69513 - 4.52781e-4 * pbar - 6.04279e-8 * pbar2;
279  q22 = 0.0612567 + 1.88082e-5 * pbar;
280 
281  q1x1 = 47.9048 - 9.36994e-3 * pbar + 6.51059e-6 * pbar2;
282  q2x1 = 0.241022 + 3.45087e-5 * pbar - 4.28356e-9 * pbar2;
283 
284  q12 = -q11 - q1x1;
285  q10 = q1x1;
286 
287  q20 = 1.0 - q21 * std::sqrt(q22);
288  q23 = q2x1 - q20 - q21 * std::sqrt(1.0 + q22);
289 
290  q1 = q10 + q11 * (1.0 - Xnacl) + q12 * (1.0 - Xnacl) * (1.0 - Xnacl);
291  q2 = q20 + q21 * std::sqrt(Xnacl + q22) + q23 * Xnacl;
292  // The temperature Th where the brine has the same enthalpy as pure water
293  // Note: correlation uses temperature in Celcius
294  Th = q1 + q2 * (temperature - _T_c2k);
295 
296  // The brine enthalpy is then given by the enthalpy of water at temperature Th
297  // Note: water enthalpy requires temperature in Kelvin
299  if (_water_fp_derivs)
300  {
301  Real h, dh_dp, dh_dT;
302  _water_fp->h_from_p_T(pressure.value(), Th.value() + _T_c2k, h, dh_dp, dh_dT);
303  enthalpy = h;
304 
305  enthalpy.derivatives() = pressure.derivatives() * dh_dp + Th.derivatives() * dh_dT;
306  }
307  else
308  enthalpy = _water_fp->h_from_p_T(pressure.value(), Th.value() + _T_c2k);
309 
310  return enthalpy;
311 }
312 
313 Real
315 {
316  // Initialise the AD value (no derivatives required)
319  FPDualReal x = xnacl;
320 
321  _water_fp_derivs = false;
322  return h_from_p_T_X(p, T, x).value();
323 }
324 
325 void
327  Real temperature,
328  Real xnacl,
329  Real & h,
330  Real & dh_dp,
331  Real & dh_dT,
332  Real & dh_dx) const
333 {
334  // Initialise the AD value and derivatives
336  Moose::derivInsert(p.derivatives(), 0, 1.0);
338  Moose::derivInsert(T.derivatives(), 1, 1.0);
339  FPDualReal x = xnacl;
340  Moose::derivInsert(x.derivatives(), 2, 1.0);
341 
342  _water_fp_derivs = true;
343  FPDualReal ad_h = h_from_p_T_X(p, T, x);
344 
345  h = ad_h.value();
346  dh_dp = ad_h.derivatives()[0];
347  dh_dT = ad_h.derivatives()[1];
348  dh_dx = ad_h.derivatives()[2];
349 }
350 
351 Real
353 {
354  Real q1, q2, q10, q11, q12, q20, q21, q22, q23, q1x1, q2x1, Th;
355 
356  // The correlation requires the pressure in bar, not Pa.
357  Real pbar = pressure * 1.0e-5;
358  Real pbar2 = pbar * pbar;
359 
360  // The correlation requires mole fraction
361  Real Xnacl = massFractionToMoleFraction(xnacl);
362 
363  q11 = -32.1724 + 0.0621255 * pbar;
364  q21 = -1.69513 - 4.52781e-4 * pbar - 6.04279e-8 * pbar2;
365  q22 = 0.0612567 + 1.88082e-5 * pbar;
366 
367  q1x1 = 47.9048 - 9.36994e-3 * pbar + 6.51059e-6 * pbar2;
368  q2x1 = 0.241022 + 3.45087e-5 * pbar - 4.28356e-9 * pbar2;
369 
370  q12 = -q11 - q1x1;
371  q10 = q1x1;
372 
373  q20 = 1.0 - q21 * std::sqrt(q22);
374  q23 = q2x1 - q20 - q21 * std::sqrt(1.0 + q22);
375 
376  q1 = q10 + q11 * (1.0 - Xnacl) + q12 * (1.0 - Xnacl) * (1.0 - Xnacl);
377  q2 = q20 + q21 * std::sqrt(Xnacl + q22) + q23 * Xnacl;
378  // The temperature Th where the brine has the same isobaric heat capacity
379  // as pure water. Note: correlation uses temperature in Celcius
380  Th = q1 + q2 * (temperature - _T_c2k);
381 
382  // The brine isobaric heat capacity is then given by the isobaric heat
383  // capacity of water at temperature Th multiplied by q2
384  // Note: water isobaric heat capacity requires temperature in Kelvin
385  return q2 * _water_fp->cp_from_p_T(pressure, Th + _T_c2k);
386 }
387 
390  const FPDualReal & temperature,
391  const FPDualReal & xnacl) const
392 {
395 
396  return enthalpy - pressure / density;
397 }
398 
399 Real
401 {
402  Real enthalpy = h_from_p_T_X(pressure, temperature, xnacl);
403  Real density = rho_from_p_T_X(pressure, temperature, xnacl);
404 
405  return enthalpy - pressure / density;
406 }
407 
408 void
410  Real temperature,
411  Real xnacl,
412  Real & e,
413  Real & de_dp,
414  Real & de_dT,
415  Real & de_dx) const
416 {
417  // Initialise the AD value and derivatives
419  Moose::derivInsert(p.derivatives(), 0, 1.0);
421  Moose::derivInsert(T.derivatives(), 1, 1.0);
422  FPDualReal x = xnacl;
423  Moose::derivInsert(x.derivatives(), 2, 1.0);
424 
425  _water_fp_derivs = true;
426  FPDualReal ad_e = e_from_p_T_X(p, T, x);
427 
428  e = ad_e.value();
429  de_dp = ad_e.derivatives()[0];
430  de_dT = ad_e.derivatives()[1];
431  de_dx = ad_e.derivatives()[2];
432 }
433 
434 Real
436 {
437  // Correlation requires molal concentration (mol/kg)
438  Real mol = massFractionToMolalConc(xnacl);
439  // Correlation requires temperature in C
440  Real Tc = temperature - _T_c2k;
441 
442  Real S = 100.0 * _Mnacl * mol / (1.0 + _Mnacl * mol);
443  Real lambdaw = _water_fp->k_from_p_T(pressure, temperature);
444  Real lambda = 1.0 - (2.3434e-3 - 7.924e-6 * Tc + 3.924e-8 * Tc * Tc) * S +
445  (1.06e-5 - 2.0e-8 * Tc - 1.2e-10 * Tc * Tc) * S * S;
446 
447  return lambda * lambdaw;
448 }
449 
450 Real
452 {
453  // Correlation requires molal concentration (mol/kg)
454  Real mol = massFractionToMolalConc(xnacl);
455  Real mol2 = mol * mol;
456  Real mol3 = mol2 * mol;
457 
458  Real a = 1.0 + 5.93582e-6 * mol - 5.19386e-5 * mol2 + 1.23156e-5 * mol3;
459  Real b = 1.1542e-6 * mol + 1.41254e-7 * mol2 - 1.92476e-8 * mol3 - 1.70717e-9 * mol * mol3 +
460  1.0539e-10 * mol2 * mol3;
461 
462  // The temperature of pure water at the same pressure as the brine is given by
463  Real th20 = std::exp(std::log(temperature) / (a + b * temperature));
464 
465  // The brine vapour pressure is then found by evaluating the saturation pressure for pure water
466  // using this effective temperature
467  return _water_fp->vaporPressure(th20);
468 }
469 
470 Real
472 {
473  // This correlation requires temperature in Celcius
474  Real Tc = temperature - _T_c2k;
475 
476  return (26.18 + 7.2e-3 * Tc + 1.06e-4 * Tc * Tc) / 100.0;
477 }
478 
479 Real
481 {
482  return xnacl / ((1.0 - xnacl) * _Mnacl);
483 }
484 
485 Real
487 {
488  // The average molar mass of brine from the mass fraction
489  Real Mbrine = molarMass(xnacl);
490  // The mole fraction is then
491  return xnacl * Mbrine / _Mnacl;
492 }
493 
496 {
497  // The average molar mass of brine from the mass fraction
498  FPDualReal Mbrine = molarMass(xnacl);
499  // The mole fraction is then
500  return xnacl * Mbrine / _Mnacl;
501 }
502 
503 Real
504 BrineFluidProperties::henryConstant(Real temperature, const std::vector<Real> & coeffs) const
505 {
506  return _water97_fp->henryConstant(temperature, coeffs);
507 }
508 
509 void
511  const std::vector<Real> & coeffs,
512  Real & Kh,
513  Real & dKh_dT) const
514 {
515  _water97_fp->henryConstant(temperature, coeffs, Kh, dKh_dT);
516 }
517 
518 DualReal
520  const std::vector<Real> & coeffs) const
521 {
522  Real Kh, dKh_dT;
523  henryConstant(temperature.value(), coeffs, Kh, dKh_dT);
524 
525  DualReal henry = Kh;
526  henry.derivatives() = temperature.derivatives() * dKh_dT;
527 
528  return henry;
529 }
BrineFluidProperties::haliteSolubility
Real haliteSolubility(Real temperature) const
Solubility of halite (solid NaCl) in water Originally from Potter et al., A new method for determinin...
Definition: BrineFluidProperties.C:471
BrineFluidProperties::_Mh2o
Real _Mh2o
Molar mass of water (H2O) (kg/mol)
Definition: BrineFluidProperties.h:202
BrineFluidProperties::molarMass
Real molarMass(Real xnacl) const
Average molar mass of brine.
Definition: BrineFluidProperties.C:104
BrineFluidProperties::_Mnacl
Real _Mnacl
Molar mass of NaCl (kg/mol)
Definition: BrineFluidProperties.h:200
BrineFluidProperties::BrineFluidProperties
BrineFluidProperties(const InputParameters &parameters)
Definition: BrineFluidProperties.C:25
BrineFluidProperties::molarMassNaCl
Real molarMassNaCl() const
NaCl molar mass.
Definition: BrineFluidProperties.C:110
SinglePhaseFluidProperties
Common class for single phase fluid properties.
Definition: SinglePhaseFluidProperties.h:89
BrineFluidProperties::cp_from_p_T_X
virtual Real cp_from_p_T_X(Real pressure, Real temperature, Real xnacl) const override
Definition: BrineFluidProperties.C:352
BrineFluidProperties::NACL
static const unsigned int NACL
Definition: BrineFluidProperties.h:172
validParams< MultiComponentFluidProperties >
InputParameters validParams< MultiComponentFluidProperties >()
Definition: MultiComponentFluidProperties.C:14
BrineFluidProperties::_nacl_fp
const SinglePhaseFluidProperties * _nacl_fp
NaClFluidProperties UserObject.
Definition: BrineFluidProperties.h:197
BrineFluidProperties::_water_fp_derivs
bool _water_fp_derivs
Flag to indicate whether to calculate derivatives in water_fp.
Definition: BrineFluidProperties.h:204
MultiComponentFluidProperties
Common class for multiple component fluid properties using a pressure and temperature formulation.
Definition: MultiComponentFluidProperties.h:69
BrineFluidProperties.h
BrineFluidProperties::vaporPressure
Real vaporPressure(Real temperature, Real xnacl) const
Brine vapour pressure From Haas, Physical properties of the coexisting phases and thermochemical prop...
Definition: BrineFluidProperties.C:451
Water97FluidProperties::henryConstant
Real henryConstant(Real temperature, const std::vector< Real > &coeffs) const
IAPWS formulation of Henry's law constant for dissolution in water From Guidelines on the Henry's con...
Definition: Water97FluidProperties.C:1866
BrineFluidProperties::henryConstant
Real henryConstant(Real temperature, const std::vector< Real > &coeffs) const
IAPWS formulation of Henry's law constant for dissolution in water (implemented in water FluidPropert...
Definition: BrineFluidProperties.C:504
FluidProperties::_T_c2k
const Real _T_c2k
Conversion of temperature from Celsius to Kelvin.
Definition: FluidProperties.h:46
FPDualReal
DualNumber< Real, DNDerivativeSize< 5 > > FPDualReal
Definition: FluidProperties.h:15
BrineFluidProperties::WATER
static const unsigned int WATER
Fluid component numbers for water and NaCl.
Definition: BrineFluidProperties.h:171
BrineFluidProperties::e_from_p_T_X
FPDualReal e_from_p_T_X(const FPDualReal &pressure, const FPDualReal &temperature, const FPDualReal &xnacl) const
Definition: BrineFluidProperties.C:389
validParams< BrineFluidProperties >
InputParameters validParams< BrineFluidProperties >()
Definition: BrineFluidProperties.C:16
NS::density
const std::string density
Definition: NS.h:16
NS::enthalpy
const std::string enthalpy
Definition: NS.h:27
BrineFluidProperties::mu_from_p_T_X
virtual Real mu_from_p_T_X(Real pressure, Real temperature, Real xnacl) const override
Definition: BrineFluidProperties.C:211
registerMooseObject
registerMooseObject("FluidPropertiesApp", BrineFluidProperties)
MultiComponentFluidProperties::T
T
Definition: MultiComponentFluidProperties.h:123
BrineFluidProperties::getComponent
virtual const SinglePhaseFluidProperties & getComponent(unsigned int component) const override
Get UserObject for specified component.
Definition: BrineFluidProperties.C:76
Water97FluidProperties
Water (H2O) fluid properties as a function of pressure (Pa) and temperature (K) from IAPWS-IF97: Revi...
Definition: Water97FluidProperties.h:42
MultiComponentFluidProperties::p
p
Definition: MultiComponentFluidProperties.h:123
SinglePhaseFluidProperties::vaporPressure
virtual Real vaporPressure(Real T) const
Vapor pressure.
Definition: SinglePhaseFluidProperties.C:177
BrineFluidProperties::molarMassH2O
Real molarMassH2O() const
H2O molar mass.
Definition: BrineFluidProperties.C:116
name
const std::string name
Definition: Setup.h:21
BrineFluidProperties::~BrineFluidProperties
virtual ~BrineFluidProperties()
Definition: BrineFluidProperties.C:73
MaterialTensorCalculatorTools::component
Real component(const SymmTensor &symm_tensor, unsigned int index)
Definition: MaterialTensorCalculatorTools.C:16
BrineFluidProperties::rho_from_p_T_X
virtual Real rho_from_p_T_X(Real pressure, Real temperature, Real xnacl) const override
Definition: BrineFluidProperties.C:171
SinglePhaseFluidProperties::molarMass
virtual virtual std Real molarMass() const
Fluid name.
Definition: SinglePhaseFluidProperties.C:96
BrineFluidProperties::h_from_p_T_X
FPDualReal h_from_p_T_X(const FPDualReal &pressure, const FPDualReal &temperature, const FPDualReal &xnacl) const
Definition: BrineFluidProperties.C:264
BrineFluidProperties::k_from_p_T_X
virtual Real k_from_p_T_X(Real pressure, Real temperature, Real xnacl) const override
Definition: BrineFluidProperties.C:435
BrineFluidProperties::_water97_fp
const Water97FluidProperties * _water97_fp
Water97FluidProperties UserObject (for Henry's law)
Definition: BrineFluidProperties.h:193
NS::temperature
const std::string temperature
Definition: NS.h:26
BrineFluidProperties::fluidName
virtual std::string fluidName() const override
Fluid name.
Definition: BrineFluidProperties.C:92
BrineFluidProperties
Brine (NaCl in H2O) fluid properties as a function of pressure (Pa), temperature (K) and NaCl mass fr...
Definition: BrineFluidProperties.h:38
BrineFluidProperties::massFractionToMolalConc
Real massFractionToMolalConc(Real xnacl) const
Conversion from mass fraction to molal concentration (molality)
Definition: BrineFluidProperties.C:480
BrineFluidProperties::massFractionToMoleFraction
Real massFractionToMoleFraction(Real xnacl) const
Conversion from mass fraction to mole fraction.
Definition: BrineFluidProperties.C:486
BrineFluidProperties::_water_fp
const SinglePhaseFluidProperties * _water_fp
Water97FluidProperties UserObject.
Definition: BrineFluidProperties.h:195
NS::pressure
const std::string pressure
Definition: NS.h:25