https://mooseframework.inl.gov
CO2FluidPropertiesTest.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 
10 #include "CO2FluidPropertiesTest.h"
12 
16 TEST_F(CO2FluidPropertiesTest, fluidName) { EXPECT_EQ(_fp->fluidName(), "co2"); }
17 
22 {
23  ABS_TEST(_fp->molarMass(), 44.0098e-3, REL_TOL_SAVED_VALUE);
24 }
25 
29 TEST_F(CO2FluidPropertiesTest, criticalProperties)
30 {
31  ABS_TEST(_fp->criticalPressure(), 7.3773e6, REL_TOL_SAVED_VALUE);
32  ABS_TEST(_fp->criticalTemperature(), 304.1282, REL_TOL_SAVED_VALUE);
33  ABS_TEST(_fp->criticalDensity(), 467.6, REL_TOL_SAVED_VALUE);
34 }
35 
39 TEST_F(CO2FluidPropertiesTest, triplePointProperties)
40 {
41  ABS_TEST(_fp->triplePointPressure(), 0.51795e6, REL_TOL_SAVED_VALUE);
42  ABS_TEST(_fp->triplePointTemperature(), 216.592, REL_TOL_SAVED_VALUE);
43 }
44 
55 {
56  const Real tol = 10.0 * REL_TOL_EXTERNAL_VALUE;
57 
58  REL_TEST(_fp->meltingPressure(217.03), 2.57e6, tol);
59  REL_TEST(_fp->meltingPressure(235.29), 95.86e6, tol);
60  REL_TEST(_fp->meltingPressure(266.04), 286.77e6, tol);
61 }
62 
69 {
70  REL_TEST(_fp->sublimationPressure(194.6857), 0.101325e6, REL_TOL_EXTERNAL_VALUE);
71 }
72 
83 {
84  const Real tol = 10.0 * REL_TOL_EXTERNAL_VALUE;
85 
86  // Vapor pressure
87  REL_TEST(_fp->vaporPressure(217.0), 0.52747e6, tol);
88  REL_TEST(_fp->vaporPressure(245.0), 1.51887e6, tol);
89  REL_TEST(_fp->vaporPressure(303.8), 7.32029e6, tol);
90 
91  // Saturated vapor density
92  REL_TEST(_fp->saturatedVaporDensity(217.0), 14.0017, tol);
93  REL_TEST(_fp->saturatedVaporDensity(245.0), 39.5048, tol);
94  REL_TEST(_fp->saturatedVaporDensity(303.8), 382.30, tol);
95 
96  // Saturated liquid density
97  REL_TEST(_fp->saturatedLiquidDensity(217.0), 1177.03, tol);
98  REL_TEST(_fp->saturatedLiquidDensity(245.0), 1067.89, tol);
99  REL_TEST(_fp->saturatedLiquidDensity(303.8), 554.14, tol);
100 }
101 
111 {
112  const Real tol = 50.0 * REL_TOL_EXTERNAL_VALUE;
113 
114  REL_TEST(_fp->partialDensity(373.15), 1182.8, tol);
115  REL_TEST(_fp->partialDensity(473.35), 880.0, tol);
116  REL_TEST(_fp->partialDensity(573.15), 593.8, tol);
117 }
118 
125 {
126  const Real tol = REL_TOL_EXTERNAL_VALUE;
127  const std::vector<Real> hc = _fp->henryCoefficients();
128 
129  REL_TEST(hc[0], -8.55445, tol);
130  REL_TEST(hc[1], 4.01195, tol);
131  REL_TEST(hc[2], 9.52345, tol);
132 }
133 
140 TEST_F(CO2FluidPropertiesTest, thermalConductivity)
141 {
142  const Real tol = REL_TOL_EXTERNAL_VALUE;
143 
144  REL_TEST(_fp->k_from_rho_T(23.435, 250.0), 13.45e-3, tol);
145  REL_TEST(_fp->k_from_rho_T(18.579, 300.0), 17.248e-3, tol);
146  REL_TEST(_fp->k_from_rho_T(11.899, 450.0), 29.377e-3, tol);
147 
148  REL_TEST(_fp->k_from_p_T(1.0e6, 250.0), 1.34504e-2, tol);
149  REL_TEST(_fp->k_from_p_T(1.0e6, 300.0), 1.72483e-2, tol);
150  REL_TEST(_fp->k_from_p_T(1.0e6, 450.0), 2.93767e-2, tol);
151 }
152 
159 {
160  const Real tol = REL_TOL_EXTERNAL_VALUE;
161 
162  REL_TEST(_fp->mu_from_rho_T(20.199, 280.0), 14.15e-6, tol);
163  REL_TEST(_fp->mu_from_rho_T(15.105, 360.0), 17.94e-6, tol);
164  REL_TEST(_fp->mu_from_rho_T(10.664, 500.0), 24.06e-6, tol);
165 
166  REL_TEST(_fp->mu_from_p_T(1.0e6, 280.0), 1.41505e-05, tol);
167  REL_TEST(_fp->mu_from_p_T(1.0e6, 360.0), 1.79395e-05, tol);
168  REL_TEST(_fp->mu_from_p_T(1.0e6, 500.0), 2.40643e-05, tol);
169 }
170 
179 {
180  // Pressure = 1 MPa, temperature = 280 K
181  Real p = 1.0e6;
182  Real T = 280.0;
183 
184  const Real tol = REL_TOL_EXTERNAL_VALUE;
185 
186  REL_TEST(_fp->rho_from_p_T(p, T), 20.199, tol);
187  REL_TEST(_fp->h_from_p_T(p, T), -26.385e3, tol);
188  REL_TEST(_fp->e_from_p_T(p, T), -75.892e3, tol);
189  REL_TEST(_fp->s_from_p_T(p, T), -0.51326e3, tol);
190  REL_TEST(_fp->cp_from_p_T(p, T), 0.92518e3, tol);
191  REL_TEST(_fp->cv_from_p_T(p, T), 0.67092e3, tol);
192  REL_TEST(_fp->c_from_p_T(p, T), 252.33, tol);
193 
194  // Pressure = 1 MPa, temperature = 500 K
195  T = 500.0;
196  REL_TEST(_fp->rho_from_p_T(p, T), 10.664, tol);
197  REL_TEST(_fp->h_from_p_T(p, T), 185.60e3, tol);
198  REL_TEST(_fp->e_from_p_T(p, T), 91.829e3, tol);
199  REL_TEST(_fp->s_from_p_T(p, T), 0.04225e3, tol);
200  REL_TEST(_fp->cp_from_p_T(p, T), 1.0273e3, tol);
201  REL_TEST(_fp->cv_from_p_T(p, T), 0.82823e3, tol);
202  REL_TEST(_fp->c_from_p_T(p, T), 339.81, tol);
203 
204  // Pressure = 10 MPa, temperature = 500 K
205  p = 10.0e6;
206  REL_TEST(_fp->rho_from_p_T(p, T), 113.07, tol);
207  REL_TEST(_fp->h_from_p_T(p, T), 157.01e3, tol);
208  REL_TEST(_fp->e_from_p_T(p, T), 68.569e3, tol);
209  REL_TEST(_fp->s_from_p_T(p, T), -0.4383e3, tol);
210  REL_TEST(_fp->cp_from_p_T(p, T), 1.1624e3, tol);
211  REL_TEST(_fp->cv_from_p_T(p, T), 0.85516e3, tol);
212  REL_TEST(_fp->c_from_p_T(p, T), 337.45, tol);
213 
214  // Verify properties from p, h
215  {
216  Real h1 = _fp->h_from_p_T(p, T);
217  Real T1 = _fp->T_from_p_h(p, h1);
218  REL_TEST(T1, T, REL_TOL_CONSISTENCY);
219  }
220 }
221 
227 {
228  const Real tol = REL_TOL_DERIVATIVE;
229 
230  const Real p = 1.0e6;
231  Real T = 350.0;
232 
233  DERIV_TEST(_fp->rho_from_p_T, p, T, tol);
234  DERIV_TEST(_fp->mu_from_p_T, p, T, tol);
235  DERIV_TEST(_fp->e_from_p_T, p, T, tol);
236  DERIV_TEST(_fp->h_from_p_T, p, T, tol);
237  DERIV_TEST(_fp->k_from_p_T, p, T, tol);
238 
239  // Viscosity from density and temperature
240  T = 360.0;
241  const Real drho = 1.0e-4;
242  Real rho, drho_dp, drho_dT;
243  _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
244 
245  Real dmu_drho_fd =
246  (_fp->mu_from_rho_T(rho + drho, T) - _fp->mu_from_rho_T(rho - drho, T)) / (2.0 * drho);
247  Real mu = 0.0, dmu_drho = 0.0, dmu_dT = 0.0;
248  _fp->mu_from_rho_T(rho, T, drho_dT, mu, dmu_drho, dmu_dT);
249 
250  ABS_TEST(mu, _fp->mu_from_rho_T(rho, T), REL_TOL_CONSISTENCY);
251  REL_TEST(dmu_drho, dmu_drho_fd, tol);
252 
253  // To properly test derivative wrt temperature, use p and T and calculate density,
254  // so that the change in density wrt temperature is included
255  const Real dp = 1.0e1;
256  const Real dT = 1.0e-4;
257  _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
258  _fp->mu_from_rho_T(rho, T, drho_dT, mu, dmu_drho, dmu_dT);
259 
260  Real dmu_dT_fd = (_fp->mu_from_rho_T(_fp->rho_from_p_T(p, T + dT), T + dT) -
261  _fp->mu_from_rho_T(_fp->rho_from_p_T(p, T - dT), T - dT)) /
262  (2.0 * dT);
263 
264  REL_TEST(dmu_dT, dmu_dT_fd, tol);
265 
266  Real dmu_dp_fd = (_fp->mu_from_p_T(p + dp, T) - _fp->mu_from_p_T(p - dp, T)) / (2.0 * dp);
267  Real dmu_dp = 0.0;
268  _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
269 
270  ABS_TEST(mu, _fp->mu_from_p_T(p, T), REL_TOL_CONSISTENCY);
271  REL_TEST(dmu_dp, dmu_dp_fd, tol);
272 
273  _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
274  dmu_dT_fd = (_fp->mu_from_p_T(p, T + dT) - _fp->mu_from_p_T(p, T - dT)) / (2.0 * dT);
275 
276  REL_TEST(dmu_dT, dmu_dT_fd, tol);
277 }
278 
284 {
285  const Real p = 1.0e6;
286  const Real T = 300.0;
287  const Real tol = REL_TOL_CONSISTENCY;
288 
289  // Single property methods
290  Real rho, drho_dp, drho_dT;
291  _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
292  Real mu, dmu_dp, dmu_dT;
293  _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
294  Real e, de_dp, de_dT;
295  _fp->e_from_p_T(p, T, e, de_dp, de_dT);
296 
297  // Combined property methods
298  Real rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT, e2, de2_dp, de2_dT;
299  _fp->rho_mu_from_p_T(p, T, rho2, mu2);
300 
301  ABS_TEST(rho, rho2, tol);
302  ABS_TEST(mu, mu2, tol);
303 
304  _fp->rho_mu_from_p_T(p, T, rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT);
305  ABS_TEST(rho, rho2, tol);
306  ABS_TEST(drho_dp, drho2_dp, tol);
307  ABS_TEST(drho_dT, drho2_dT, tol);
308  ABS_TEST(mu, mu2, tol);
309  ABS_TEST(dmu_dp, dmu2_dp, tol);
310  ABS_TEST(dmu_dT, dmu2_dT, tol);
311 
312  _fp->rho_e_from_p_T(p, T, rho2, drho2_dp, drho2_dT, e2, de2_dp, de2_dT);
313  ABS_TEST(rho, rho2, tol);
314  ABS_TEST(drho_dp, drho2_dp, tol);
315  ABS_TEST(drho_dT, drho2_dT, tol);
316  ABS_TEST(e, e2, tol);
317  ABS_TEST(de_dp, de2_dp, tol);
318  ABS_TEST(de_dT, de2_dT, tol);
319 }
const double tol
TEST_F(CO2FluidPropertiesTest, fluidName)
Test that the fluid name is correctly returned.
static const std::string mu
Definition: NS.h:123
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real