https://mooseframework.inl.gov
BrineFluidPropertiesTest.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 
12 
13 #include "Water97FluidProperties.h"
14 #include "NaClFluidProperties.h"
15 
19 TEST_F(BrineFluidPropertiesTest, fluidName) { EXPECT_EQ(_fp->fluidName(), "brine"); }
20 
25 {
26  ABS_TEST(_fp->molarMassH2O(), 18.015e-3, REL_TOL_CONSISTENCY);
27  ABS_TEST(_fp->molarMassNaCl(), 58.443e-3, REL_TOL_CONSISTENCY);
28 
29  // Molar mass of water with salt mass fraction 0.1
30  const Real x = 0.1;
31  const Real M = 1.0 / (x / _fp->molarMassNaCl() + (1.0 - x) / _fp->molarMassH2O());
32  ABS_TEST(_fp->molarMass(x), M, REL_TOL_CONSISTENCY);
33 }
34 
39 {
40  auto & water_fp = _fp->getComponent(BrineFluidProperties::WATER);
41  auto & nacl_fp = _fp->getComponent(BrineFluidProperties::NACL);
42 
43  EXPECT_EQ(water_fp.fluidName(), "water");
44  EXPECT_EQ(nacl_fp.fluidName(), "nacl");
45 }
46 
54 {
55  REL_TEST(_fp->vaporPressure(473.15, 0.185), 1.34e6, 1.0e-2);
56  REL_TEST(_fp->vaporPressure(473.15, 0.267), 1.21e6, 1.0e-2);
57  REL_TEST(_fp->vaporPressure(473.15, 0.312), 1.13e6, 1.0e-2);
58 }
59 
68 {
69  REL_TEST(_fp->haliteSolubility(659.65), 0.442, 2.0e-2);
70  REL_TEST(_fp->haliteSolubility(818.65), 0.6085, 2.0e-2);
71  REL_TEST(_fp->haliteSolubility(903.15), 0.7185, 2.0e-2);
72 }
73 
93 {
94  // Pressure, temperature and NaCl mass fraction for tests
95  Real p0 = 20.0e6;
96  Real p1 = 40.0e6;
97  Real T0 = 323.15;
98  Real T1 = 473.15;
99  Real x0 = 0.1047;
100  Real x1 = 0.2261;
101 
102  // Density
103  REL_TEST(_fp->rho_from_p_T_X(p0, T0, x0), 1068.52, 1.0e-2);
104  REL_TEST(_fp->rho_from_p_T_X(p0, T1, x0), 959.27, 1.0e-2);
105  REL_TEST(_fp->rho_from_p_T_X(p1, T1, x1), 1065.58, 1.0e-2);
106 
107  // Viscosity
108  REL_TEST(_fp->mu_from_p_T_X(p0, T0, x0), 679.8e-6, 2.0e-2);
109  REL_TEST(_fp->mu_from_p_T_X(p0, T1, x0), 180.0e-6, 2.0e-2);
110  REL_TEST(_fp->mu_from_p_T_X(p1, T1, x1), 263.1e-6, 2.0e-2);
111 
112  // Thermal conductivity
113  REL_TEST(_fp->k_from_p_T_X(p0, T0, x0), 0.630, 4.0e-2);
114  REL_TEST(_fp->k_from_p_T_X(p0, T1, x0), 0.649, 4.0e-2);
115  REL_TEST(_fp->k_from_p_T_X(p1, T1, x1), 0.633, 4.0e-2);
116 
117  // Enthalpy
118  p0 = 10.0e6;
119  T0 = 573.15;
120 
121  REL_TEST(_fp->e_from_p_T_X(p0, T0, 0.0), 1330.0e3, 1.0e-2);
122  REL_TEST(_fp->e_from_p_T_X(p0, T0, 0.2), 1100.0e3, 1.0e-2);
123  REL_TEST(_fp->e_from_p_T_X(p0, T0, 0.364), 970.0e3, 1.0e-2);
124 
125  // cp
126  p0 = 17.9e6;
127  x0 = 0.01226;
128 
129  REL_TEST(_fp->cp_from_p_T_X(p0, 323.15, x0), 4.1e3, 1.0e-2);
130  REL_TEST(_fp->cp_from_p_T_X(p0, 473.15, x0), 4.35e3, 1.0e-2);
131  REL_TEST(_fp->cp_from_p_T_X(p0, 623.15, x0), 8.1e3, 1.0e-2);
132 }
133 
139 {
140  Real p = 1.0e6;
141  Real T = 350.0;
142  Real x = 0.1047;
143 
144  // Finite differencing parameters
145  Real dp = 1.0e-2;
146  Real dT = 1.0e-4;
147  Real dx = 1.0e-8;
148 
149  // Density
150  Real drho_dp_fd =
151  (_fp->rho_from_p_T_X(p + dp, T, x) - _fp->rho_from_p_T_X(p - dp, T, x)) / (2.0 * dp);
152  Real drho_dT_fd =
153  (_fp->rho_from_p_T_X(p, T + dT, x) - _fp->rho_from_p_T_X(p, T - dT, x)) / (2.0 * dT);
154  Real drho_dx_fd =
155  (_fp->rho_from_p_T_X(p, T, x + dx) - _fp->rho_from_p_T_X(p, T, x - dx)) / (2.0 * dx);
156 
157  Real rho = 0.0, drho_dp = 0.0, drho_dT = 0.0, drho_dx = 0.0;
158  _fp->rho_from_p_T_X(p, T, x, rho, drho_dp, drho_dT, drho_dx);
159 
160  ABS_TEST(rho, _fp->rho_from_p_T_X(p, T, x), REL_TOL_CONSISTENCY);
161  REL_TEST(drho_dp, drho_dp_fd, 1.0e-5);
162  REL_TEST(drho_dT, drho_dT_fd, 1.0e-6);
163  REL_TEST(drho_dx, drho_dx_fd, 1.0e-6);
164 
165  // Enthalpy
166  Real dh_dp_fd = (_fp->h_from_p_T_X(p + dp, T, x) - _fp->h_from_p_T_X(p - dp, T, x)) / (2.0 * dp);
167  Real dh_dT_fd = (_fp->h_from_p_T_X(p, T + dT, x) - _fp->h_from_p_T_X(p, T - dT, x)) / (2.0 * dT);
168  Real dh_dx_fd = (_fp->h_from_p_T_X(p, T, x + dx) - _fp->h_from_p_T_X(p, T, x - dx)) / (2.0 * dx);
169 
170  Real h = 0.0, dh_dp = 0.0, dh_dT = 0.0, dh_dx = 0.0;
171  _fp->h_from_p_T_X(p, T, x, h, dh_dp, dh_dT, dh_dx);
172 
173  ABS_TEST(h, _fp->h_from_p_T_X(p, T, x), 1.2 * REL_TOL_CONSISTENCY);
174  REL_TEST(dh_dp, dh_dp_fd, 1.0e-4);
175  REL_TEST(dh_dT, dh_dT_fd, 1.0e-6);
176  REL_TEST(dh_dx, dh_dx_fd, 1.0e-6);
177 
178  // Internal energy
179  Real de_dp_fd = (_fp->e_from_p_T_X(p + dp, T, x) - _fp->e_from_p_T_X(p - dp, T, x)) / (2.0 * dp);
180  Real de_dT_fd = (_fp->e_from_p_T_X(p, T + dT, x) - _fp->e_from_p_T_X(p, T - dT, x)) / (2.0 * dT);
181  Real de_dx_fd = (_fp->e_from_p_T_X(p, T, x + dx) - _fp->e_from_p_T_X(p, T, x - dx)) / (2.0 * dx);
182 
183  Real e = 0.0, de_dp = 0.0, de_dT = 0.0, de_dx = 0.0;
184  _fp->e_from_p_T_X(p, T, x, e, de_dp, de_dT, de_dx);
185 
186  ABS_TEST(e, _fp->e_from_p_T_X(p, T, x), 1.2 * REL_TOL_CONSISTENCY);
187  REL_TEST(de_dp, de_dp_fd, 1.0e-3);
188  REL_TEST(de_dT, de_dT_fd, 1.0e-6);
189  REL_TEST(de_dx, de_dx_fd, 1.0e-6);
190 
191  // Viscosity
192  Real dmu_dp_fd =
193  (_fp->mu_from_p_T_X(p + dp, T, x) - _fp->mu_from_p_T_X(p - dp, T, x)) / (2.0 * dp);
194  Real dmu_dT_fd =
195  (_fp->mu_from_p_T_X(p, T + dT, x) - _fp->mu_from_p_T_X(p, T - dT, x)) / (2.0 * dT);
196  Real dmu_dx_fd =
197  (_fp->mu_from_p_T_X(p, T, x + dx) - _fp->mu_from_p_T_X(p, T, x - dx)) / (2.0 * dx);
198  Real mu = 0.0, dmu_dp = 0.0, dmu_dT = 0.0, dmu_dx = 0.0;
199  _fp->mu_from_p_T_X(p, T, x, mu, dmu_dp, dmu_dT, dmu_dx);
200 
201  ABS_TEST(mu, _fp->mu_from_p_T_X(p, T, x), REL_TOL_CONSISTENCY);
202  REL_TEST(dmu_dp, dmu_dp_fd, 1.0e-3);
203  REL_TEST(dmu_dT, dmu_dT_fd, 1.0e-6);
204  REL_TEST(dmu_dx, dmu_dx_fd, 1.0e-6);
205 
206  // Verify that derivatives wrt x are defined when x = 0
207  x = 0.0;
208 
209  // Density
210  _fp->rho_from_p_T_X(p, T, x, rho, drho_dp, drho_dT, drho_dx);
211  drho_dx_fd = (_fp->rho_from_p_T_X(p, T, x + dx) - _fp->rho_from_p_T_X(p, T, x)) / dx;
212 
213  REL_TEST(drho_dx, drho_dx_fd, 1.0e-3);
214 
215  // Enthalpy
216  _fp->h_from_p_T_X(p, T, x, h, dh_dp, dh_dT, dh_dx);
217  dh_dx_fd = (_fp->h_from_p_T_X(p, T, x + dx) - _fp->h_from_p_T_X(p, T, x)) / dx;
218 
219  REL_TEST(dh_dx, dh_dx_fd, 1.0e-3);
220 
221  // Internal energy
222  _fp->e_from_p_T_X(p, T, x, e, de_dp, de_dT, de_dx);
223  de_dx_fd = (_fp->e_from_p_T_X(p, T, x + dx) - _fp->e_from_p_T_X(p, T, x)) / dx;
224 
225  REL_TEST(de_dx, de_dx_fd, 1.0e-3);
226 
227  // Viscosity
228  dmu_dx_fd = (_fp->mu_from_p_T_X(p, T, x + dx) - _fp->mu_from_p_T_X(p, T, x)) / dx;
229  _fp->mu_from_p_T_X(p, T, x, mu, dmu_dp, dmu_dT, dmu_dx);
230 
231  REL_TEST(dmu_dx, dmu_dx_fd, 1.0e-3);
232 }
233 
239 {
240  const Real tol = REL_TOL_SAVED_VALUE;
241  const Real p = 1.0e6;
242  const Real T = 350.0;
243  const Real x = 0.1047;
244 
245  // Single property methods
246  Real rho, drho_dp, drho_dT, drho_dx, mu, dmu_dp, dmu_dT, dmu_dx;
247  _fp->rho_from_p_T_X(p, T, x, rho, drho_dp, drho_dT, drho_dx);
248  _fp->mu_from_p_T_X(p, T, x, mu, dmu_dp, dmu_dT, dmu_dx);
249 
250  // Combined property methods
251  Real rho2, mu2;
252  _fp->rho_mu_from_p_T_X(p, T, x, rho2, mu2);
253 
254  ABS_TEST(rho, rho2, tol);
255  ABS_TEST(mu, mu2, tol);
256 
257  // Combined property method with derivatives
258  Real drho2_dp, drho2_dT, drho2_dx, dmu2_dp, dmu2_dT, dmu2_dx;
259  _fp->rho_mu_from_p_T_X(
260  p, T, x, rho2, drho2_dp, drho2_dT, drho2_dx, mu2, dmu2_dp, dmu2_dT, dmu2_dx);
261 
262  ABS_TEST(rho, rho2, tol);
263  ABS_TEST(mu, mu2, tol);
264  ABS_TEST(drho_dp, drho2_dp, tol);
265  ABS_TEST(drho_dT, drho2_dT, tol);
266  ABS_TEST(drho_dx, drho2_dx, tol);
267  ABS_TEST(mu, mu2, tol);
268  ABS_TEST(dmu_dp, dmu2_dp, tol);
269  ABS_TEST(dmu_dT, dmu2_dT, tol);
270  ABS_TEST(dmu_dx, dmu2_dx, tol);
271 }
const double tol
TEST_F(BrineFluidPropertiesTest, fluidName)
Test that the fluid name is correctly returned.
static const unsigned int NACL
const std::vector< double > x
static const std::string mu
Definition: NS.h:123
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const unsigned int WATER
Fluid component numbers for water and NaCl.