https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
12
16TEST_F(CO2FluidPropertiesTest, fluidName) { EXPECT_EQ(_fp->fluidName(), "co2"); }
17
22{
23 ABS_TEST(_fp->molarMass(), 44.0098e-3, REL_TOL_SAVED_VALUE);
24}
25
29TEST_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
39TEST_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
140TEST_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}
TEST_F(CO2FluidPropertiesTest, fluidName)
Test that the fluid name is correctly returned.
const double tol
const double mu
const Real p
const double rho
const double T