25 catch (
const std::exception &
err)
27 std::size_t pos = std::string(
err.what())
28 .find(
"The column data for temperature is not monotonically increasing");
29 ASSERT_TRUE(pos != std::string::npos);
41 catch (
const std::exception &
err)
43 std::size_t pos = std::string(
err.what())
44 .find(
"temperature values for pressure 2e+06 are not " 45 "identical to values for 1e+06");
46 ASSERT_TRUE(pos != std::string::npos);
61 catch (
const std::exception &
err)
63 std::size_t pos = std::string(
err.what())
64 .find(
"data/csv/missing_col_fluid_props.csv. A " 65 "column named temperature must be present");
66 ASSERT_TRUE(pos != std::string::npos);
78 catch (
const std::exception &
err)
80 std::size_t pos = std::string(
err.what())
81 .find(
"data/csv/unknown_fluid_props.csv tabulation file is not one of " 82 "the properties that TabulatedFluidProperties understands");
83 ASSERT_TRUE(pos != std::string::npos);
95 catch (
const std::exception &
err)
97 std::size_t pos = std::string(
err.what())
98 .find(
"data/csv/missing_data_fluid_props.csv " 99 "is not equal to the number of unique pressure values 3 multiplied " 100 "by the number of unique temperature values 3");
101 ASSERT_TRUE(pos != std::string::npos);
115 REL_TEST(_tab_pT_from_fp->rho_from_p_T(p, T), _co2_fp->rho_from_p_T(p, T), 1.0e-4);
116 REL_TEST(_tab_pT_from_fp->h_from_p_T(p, T), _co2_fp->h_from_p_T(p, T), 1.0e-4);
117 REL_TEST(_tab_pT_from_fp->e_from_p_T(p, T), _co2_fp->e_from_p_T(p, T), 1.0e-4);
118 REL_TEST(_tab_pT_from_fp->mu_from_p_T(p, T), _co2_fp->mu_from_p_T(p, T), 1.0e-4);
119 REL_TEST(_tab_pT_from_fp->k_from_p_T(p, T), _co2_fp->k_from_p_T(p, T), 1.0e-4);
120 REL_TEST(_tab_pT_from_fp->cp_from_p_T(p, T), _co2_fp->cp_from_p_T(p, T), 1.0e-4);
121 REL_TEST(_tab_pT_from_fp->cv_from_p_T(p, T), _co2_fp->cv_from_p_T(p, T), 1.0e-4);
122 REL_TEST(_tab_pT_from_fp->s_from_p_T(p, T), _co2_fp->s_from_p_T(p, T), 1.0e-4);
125 Real rho, drho_dp, drho_dT, rhoc, drhoc_dp, drhoc_dT;
126 _tab_pT_from_fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
127 _co2_fp->rho_from_p_T(p, T, rhoc, drhoc_dp, drhoc_dT);
128 REL_TEST(rho, rhoc, 1.0e-4);
129 REL_TEST(drho_dp, drhoc_dp, 1.0e-3);
130 REL_TEST(drho_dT, drhoc_dT, 1.0e-3);
132 Real h, dh_dp, dh_dT, hc, dhc_dp, dhc_dT;
133 _tab_pT_from_fp->h_from_p_T(p, T, h, dh_dp, dh_dT);
134 _co2_fp->h_from_p_T(p, T, hc, dhc_dp, dhc_dT);
135 REL_TEST(h, hc, 1.0e-4);
136 REL_TEST(dh_dp, dhc_dp, 1.0e-3);
137 REL_TEST(dh_dT, dhc_dT, 1.0e-3);
139 Real mu, dmu_dp, dmu_dT, muc, dmuc_dp, dmuc_dT;
140 _tab_pT_from_fp->mu_from_p_T(p, T,
mu, dmu_dp, dmu_dT);
141 _co2_fp->mu_from_p_T(p, T, muc, dmuc_dp, dmuc_dT);
142 REL_TEST(
mu, muc, 1.0e-4);
143 REL_TEST(dmu_dp, dmuc_dp, 1.0e-3);
144 REL_TEST(dmu_dT, dmuc_dT, 1.0e-3);
146 Real e, de_dp, de_dT, ec, dec_dp, dec_dT;
147 _tab_pT_from_fp->e_from_p_T(p, T, e, de_dp, de_dT);
148 _co2_fp->e_from_p_T(p, T, ec, dec_dp, dec_dT);
149 REL_TEST(e, ec, 1.0e-4);
150 REL_TEST(de_dp, dec_dp, 1.0e-3);
151 REL_TEST(de_dT, dec_dT, 1.0e-3);
168 Real e = _tab_ve_from_pT->e_from_p_T(p, T);
169 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
170 Real pp = _tab_ve_from_pT->p_from_v_e(
v, e);
171 Real TT = _tab_ve_from_pT->T_from_v_e(
v, e);
172 ABS_TEST(T, TT, 1.0);
173 REL_TEST(p, pp, 0.001);
178 Real e = _tab_ve_from_pT->e_from_p_T(p, T);
179 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
182 Real cp1 = _tab_ve_from_pT->cp_from_p_T(p, T);
183 Real cp2 = _tab_ve_from_pT->cp_from_v_e(
v, e);
184 REL_TEST(cp1, cp2, 0.001);
187 Real cv1 = _tab_ve_from_pT->cv_from_p_T(p, T);
188 Real cv2 = _tab_ve_from_pT->cv_from_v_e(
v, e);
189 REL_TEST(cv1, cv2, 0.001);
192 Real mu1 = _tab_ve_from_pT->mu_from_p_T(p, T);
193 Real mu2 = _tab_ve_from_pT->mu_from_v_e(
v, e);
194 REL_TEST(mu1, mu2, 0.001);
197 Real k1 = _tab_ve_from_pT->k_from_p_T(p, T);
198 Real k2 = _tab_ve_from_pT->k_from_v_e(
v, e);
199 REL_TEST(k1, k2, 0.001);
204 Real s = _tab_ve_from_pT->s_from_p_T(p, T);
207 Real rho1 = _tab_ve_from_pT->rho_from_p_T(p, T);
208 Real rho2 = _tab_ve_from_pT->rho_from_p_s(p, s);
209 REL_TEST(rho1, rho2, 0.001);
212 Real Ts = _tab_ve_from_pT->T_from_p_s(p, s);
213 REL_TEST(T, Ts, 0.001);
220 Real h = _tab_ve_from_pT->h_from_p_T(p, T);
221 Real Ts = _tab_ve_from_pT->T_from_p_h(p, h);
222 REL_TEST(T, Ts, 1e-4);
226 REL_TEST(T, Ts, 1e-4);
231 Real e = _tab_ve_from_pT->e_from_p_T(p, T);
232 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
241 _tab_ve_from_pT->cp_from_v_e(
v, e, cp1, d1, d2);
242 Real cp2 = _tab_ve_from_pT->cp_from_v_e(
v, e);
243 REL_TEST(cp1, cp2, 0.001);
247 _tab_ve_from_pT->cv_from_v_e(
v, e, cv1, d1, d2);
248 Real cv2 = _tab_ve_from_pT->cv_from_v_e(
v, e);
249 REL_TEST(cv1, cv2, 0.001);
253 _tab_ve_from_pT->mu_from_v_e(
v, e, mu1, d1, d2);
254 Real mu2 = _tab_ve_from_pT->mu_from_v_e(
v, e);
255 REL_TEST(mu1, mu2, 0.001);
259 _tab_ve_from_pT->k_from_v_e(
v, e, k1, d1, d2);
260 Real k2 = _tab_ve_from_pT->k_from_v_e(
v, e);
261 REL_TEST(k1, k2, 0.001);
266 Real e = _tab_ve_from_pT->e_from_p_T(p, T);
267 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
273 _tab_ve_from_pT->p_from_v_e(
v, e, p1, deriv1, deriv2);
274 Real p2 = _tab_ve_from_pT->p_from_v_e(
v, e);
275 REL_TEST(p1, p2, 0.001);
279 _tab_ve_from_pT->T_from_v_e(
v, e, T1, deriv1, deriv2);
280 Real T2 = _tab_ve_from_pT->T_from_v_e(
v, e);
281 REL_TEST(T1, T2, 0.001);
288 _tab_ve_from_pT->cp_from_v_e(
v, e, cp1, deriv1, deriv2);
289 Real cp_0 = _tab_ve_from_pT->cp_from_v_e(
v, e);
290 Real cp_1 = _tab_ve_from_pT->cp_from_v_e(
v * (1 + pert), e);
291 Real cp_2 = _tab_ve_from_pT->cp_from_v_e(
v, e * (1 + pert));
292 REL_TEST(deriv1, (cp_1 - cp_0) / (
v * pert), 0.001);
293 REL_TEST(deriv2, (cp_2 - cp_0) / (e * pert), 0.001);
297 _tab_ve_from_pT->cv_from_v_e(
v, e, cv1, deriv1, deriv2);
298 Real cv_0 = _tab_ve_from_pT->cv_from_v_e(
v, e);
299 Real cv_1 = _tab_ve_from_pT->cv_from_v_e(
v * (1 + pert), e);
300 Real cv_2 = _tab_ve_from_pT->cv_from_v_e(
v, e * (1 + pert));
301 REL_TEST(deriv1, (cv_1 - cv_0) / (
v * pert), 0.001);
302 REL_TEST(deriv2, (cv_2 - cv_0) / (e * pert), 0.001);
306 _tab_ve_from_pT->mu_from_v_e(
v, e, mu1, deriv1, deriv2);
307 Real mu_0 = _tab_ve_from_pT->mu_from_v_e(
v, e);
308 Real mu_1 = _tab_ve_from_pT->mu_from_v_e(
v * (1 + pert), e);
309 Real mu_2 = _tab_ve_from_pT->mu_from_v_e(
v, e * (1 + pert));
310 REL_TEST(deriv1, (mu_1 -
mu_0) / (
v * pert), 0.001);
311 REL_TEST(deriv2, (mu_2 -
mu_0) / (e * pert), 0.001);
315 _tab_ve_from_pT->k_from_v_e(
v, e, k1, deriv1, deriv2);
316 Real k_0 = _tab_ve_from_pT->k_from_v_e(
v, e);
317 Real k_1 = _tab_ve_from_pT->k_from_v_e(
v * (1 + pert), e);
318 Real k_2 = _tab_ve_from_pT->k_from_v_e(
v, e * (1 + pert));
319 REL_TEST(deriv1, (k_1 - k_0) / (
v * pert), 0.001);
320 REL_TEST(deriv2, (k_2 - k_0) / (e * pert), 0.001);
325 Real h = _tab_ve_from_pT->h_from_p_T(p, T);
326 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
327 Real e_gold = _tab_ve_from_pT->e_from_p_T(p, T);
328 Real e = _tab_ve_from_pT->e_from_v_h(
v, h);
329 REL_TEST(e_gold, e, 0.001);
331 Real e2, de_dv, de_dh;
332 _tab_ve_from_pT->e_from_v_h(
v, h, e2, de_dv, de_dh);
333 REL_TEST(e_gold, e2, 0.001);
334 Real e_0 = _tab_ve_from_pT->e_from_v_h(
v, h);
335 Real e_1 = _tab_ve_from_pT->e_from_v_h(
v * (1 + pert), h);
336 Real e_2 = _tab_ve_from_pT->e_from_v_h(
v, h * (1 + pert));
337 REL_TEST(de_dv, (e_1 - e_0) / (
v * pert), 0.001);
338 REL_TEST(de_dh, (e_2 - e_0) / (h * pert), 0.001);
343 Real e = _tab_ve_from_pT->e_from_p_T(p, T);
344 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
356 ADReal p_ad = _tab_ve_from_pT->p_from_v_e(v_ad, e_ad);
358 Real pp, dp_dv, dp_de;
359 _tab_ve_from_pT->p_from_v_e(
v, e, pp, dp_dv, dp_de);
360 REL_TEST(p_ad.derivatives()[0], dp_dv, 0.0001);
361 REL_TEST(p_ad.derivatives()[1], dp_de, 0.0001);
366 Real e = _tab_ve_from_pT->e_from_p_T(p, T);
367 Real v = _tab_ve_from_pT->v_from_p_T(p, T);
379 ADReal T_ad = _tab_ve_from_pT->T_from_v_e(v_ad, e_ad);
381 Real TT, dT_dv, dT_de;
382 _tab_ve_from_pT->T_from_v_e(
v, e, TT, dT_dv, dT_de);
383 REL_TEST(T_ad.derivatives()[0], dT_dv, 0.0001);
384 REL_TEST(T_ad.derivatives()[1], dT_de, 0.0001);
392 Real h = _tab_ve_from_pT->h_from_p_T(p, T);
404 ADReal T_ad = _tab_ve_from_pT->T_from_p_h(p_ad, h_ad);
406 Real TT_1 = _tab_ve_from_pT->T_from_p_h(p * (1 + pert), h);
407 Real TT_2 = _tab_ve_from_pT->T_from_p_h(p, h * (1 + pert));
408 Real dT_dp = (TT_1 - T) / p / pert;
409 Real dT_dh = (TT_2 - T) / h / pert;
410 REL_TEST(T_ad.derivatives()[0], dT_dp, 0.0001);
411 REL_TEST(T_ad.derivatives()[1], dT_dh, 0.0001);
429 Real e = _idg_fp->e_from_p_T(p, T);
430 Real v = _idg_fp->v_from_p_T(p, T);
438 Real cp1 = _idg_fp->cp_from_v_e(
v, e);
439 Real cp2 = _tab_ve_from_fp->cp_from_v_e(
v, e);
440 REL_TEST(cp1, cp2, 0.001);
443 Real cv1 = _idg_fp->cv_from_v_e(
v, e);
444 Real cv2 = _tab_ve_from_fp->cv_from_v_e(
v, e);
445 REL_TEST(cv1, cv2, 0.001);
448 Real c1 = _idg_fp->c_from_v_e(
v, e);
449 Real c2 = _tab_ve_from_fp->c_from_v_e(
v, e);
450 REL_TEST(c1, c2, 0.001);
453 Real mu1 = _idg_fp->mu_from_v_e(
v, e);
454 Real mu2 = _tab_ve_from_fp->mu_from_v_e(
v, e);
455 REL_TEST(mu1, mu2, 0.001);
458 Real k1 = _idg_fp->k_from_v_e(
v, e);
459 Real k2 = _tab_ve_from_fp->k_from_v_e(
v, e);
460 REL_TEST(k1, k2, 0.001);
469 _tab_ve_from_fp->p_from_v_e(
v, e, p1, d1, d2);
470 Real p2 = _tab_ve_from_fp->p_from_v_e(
v, e);
471 REL_TEST(p1, p2, 0.001);
475 _tab_ve_from_fp->T_from_v_e(
v, e, T1, d1, d2);
476 Real T2 = _tab_ve_from_fp->T_from_v_e(
v, e);
477 REL_TEST(T1, T2, 0.001);
481 _tab_ve_from_fp->cp_from_v_e(
v, e, cp1, d1, d2);
482 Real cp2 = _tab_ve_from_fp->cp_from_v_e(
v, e);
483 REL_TEST(cp1, cp2, 0.001);
487 _tab_ve_from_fp->cv_from_v_e(
v, e, cv1, d1, d2);
488 Real cv2 = _tab_ve_from_fp->cv_from_v_e(
v, e);
489 REL_TEST(cv1, cv2, 0.001);
493 _tab_ve_from_fp->c_from_v_e(
v, e, c1, d1, d2);
494 Real c2 = _tab_ve_from_fp->c_from_v_e(
v, e);
495 REL_TEST(c1, c2, 0.001);
499 _tab_ve_from_fp->mu_from_v_e(
v, e, mu1, d1, d2);
500 Real mu2 = _tab_ve_from_fp->mu_from_v_e(
v, e);
501 REL_TEST(mu1, mu2, 0.001);
505 _tab_ve_from_fp->k_from_v_e(
v, e, k1, d1, d2);
506 Real k2 = _tab_ve_from_fp->k_from_v_e(
v, e);
507 REL_TEST(k1, k2, 0.001);
519 _tab_ve_from_fp->cp_from_v_e(
v, e, cp1, deriv1, deriv2);
520 Real cp_0 = _tab_ve_from_fp->cp_from_v_e(
v, e);
521 Real cp_1 = _tab_ve_from_fp->cp_from_v_e(
v * (1 + pert), e);
522 Real cp_2 = _tab_ve_from_fp->cp_from_v_e(
v, e * (1 + pert));
523 REL_TEST(deriv1, (cp_1 - cp_0) / (
v * pert), 0.001);
524 REL_TEST(deriv2, (cp_2 - cp_0) / (e * pert), 0.001);
528 _tab_ve_from_fp->cv_from_v_e(
v, e, cv1, deriv1, deriv2);
529 Real cv_0 = _tab_ve_from_fp->cv_from_v_e(
v, e);
530 Real cv_1 = _tab_ve_from_fp->cv_from_v_e(
v * (1 + pert), e);
531 Real cv_2 = _tab_ve_from_fp->cv_from_v_e(
v, e * (1 + pert));
532 REL_TEST(deriv1, (cv_1 - cv_0) / (
v * pert), 0.001);
533 REL_TEST(deriv2, (cv_2 - cv_0) / (e * pert), 0.001);
537 _tab_ve_from_fp->mu_from_v_e(
v, e, mu1, deriv1, deriv2);
538 Real mu_0 = _tab_ve_from_fp->mu_from_v_e(
v, e);
539 Real mu_1 = _tab_ve_from_fp->mu_from_v_e(
v * (1 + pert), e);
540 Real mu_2 = _tab_ve_from_fp->mu_from_v_e(
v, e * (1 + pert));
541 REL_TEST(deriv1, (mu_1 -
mu_0) / (
v * pert), 0.001);
542 REL_TEST(deriv2, (mu_2 -
mu_0) / (e * pert), 0.001);
546 _tab_ve_from_fp->k_from_v_e(
v, e, k1, deriv1, deriv2);
547 Real k_0 = _tab_ve_from_fp->k_from_v_e(
v, e);
548 Real k_1 = _tab_ve_from_fp->k_from_v_e(
v * (1 + pert), e);
549 Real k_2 = _tab_ve_from_fp->k_from_v_e(
v, e * (1 + pert));
550 REL_TEST(deriv1, (k_1 - k_0) / (
v * pert), 0.001);
551 REL_TEST(deriv2, (k_2 - k_0) / (e * pert), 0.001);
557 Real h = _idg_fp->h_from_p_T(p, T);
558 Real v = _idg_fp->v_from_p_T(p, T);
559 Real e_gold = _idg_fp->e_from_p_T(p, T);
560 Real e0 = _tab_ve_from_fp->e_from_v_h(
v, h);
561 REL_TEST(e_gold, e0, 0.001);
563 Real e2, de_dv, de_dh;
564 _tab_ve_from_fp->e_from_v_h(
v, h, e2, de_dv, de_dh);
565 REL_TEST(e_gold, e2, 0.001);
566 Real e_0 = _tab_ve_from_fp->e_from_v_h(
v, h);
567 Real e_1 = _tab_ve_from_fp->e_from_v_h(
v * (1 + pert), h);
568 Real e_2 = _tab_ve_from_fp->e_from_v_h(
v, h * (1 + pert));
569 REL_TEST(de_dv, (e_1 - e_0) / (
v * pert), 0.001);
570 REL_TEST(de_dh, (e_2 - e_0) / (h * pert), 0.001);
587 ADReal p_ad = _tab_ve_from_fp->p_from_v_e(v_ad, e_ad);
589 Real pp, dp_dv, dp_de;
590 _tab_ve_from_fp->p_from_v_e(
v, e, pp, dp_dv, dp_de);
591 REL_TEST(p_ad.derivatives()[0], dp_dv, 0.0001);
592 REL_TEST(p_ad.derivatives()[1], dp_de, 0.0001);
608 ADReal T_ad = _tab_ve_from_fp->T_from_v_e(v_ad, e_ad);
610 Real TT, dT_dv, dT_de;
611 _tab_ve_from_fp->T_from_v_e(
v, e, TT, dT_dv, dT_de);
612 REL_TEST(T_ad.derivatives()[0], dT_dv, 0.0001);
613 REL_TEST(T_ad.derivatives()[1], dT_de, 0.0001);
627 const Real p = 1.5e6;
628 const Real T = 452.0;
635 const Real tol = REL_TOL_DERIVATIVE;
637 const Real rho = _tab_ve_from_pT->rho_from_p_T(p, T);
638 const Real v = 1. / rho;
639 const Real e = _tab_ve_from_pT->e_from_p_T(p, T);
640 const Real s = _tab_ve_from_pT->s_from_p_T(p, T);
642 DERIV_TEST(_tab_ve_from_pT->rho_from_p_T, p, T,
tol);
643 DERIV_TEST(_tab_ve_from_pT->e_from_p_T, p, T,
tol);
644 DERIV_TEST(_tab_ve_from_pT->v_from_p_T, p, T,
tol);
645 DERIV_TEST(_tab_ve_from_pT->h_from_p_T, p, T,
tol);
646 DERIV_TEST(_tab_ve_from_pT->k_from_p_T, p, T,
tol);
647 DERIV_TEST(_tab_ve_from_pT->cp_from_p_T, p, T,
tol);
648 DERIV_TEST(_tab_ve_from_pT->cv_from_p_T, p, T,
tol);
649 DERIV_TEST(_tab_ve_from_pT->mu_from_p_T, p, T,
tol);
651 DERIV_TEST(_tab_ve_from_pT->p_from_v_e,
v, e,
tol);
652 DERIV_TEST(_tab_ve_from_pT->mu_from_v_e,
v, e,
tol);
653 DERIV_TEST(_tab_ve_from_pT->k_from_v_e,
v, e,
tol);
654 DERIV_TEST(_tab_ve_from_pT->T_from_v_e,
v, e,
tol);
655 DERIV_TEST(_tab_ve_from_pT->cp_from_v_e,
v, e,
tol);
656 DERIV_TEST(_tab_ve_from_pT->cv_from_v_e,
v, e,
tol);
658 DERIV_TEST(_tab_ve_from_pT->T_from_p_rho, p, rho,
tol);
659 DERIV_TEST(_tab_ve_from_pT->e_from_p_rho, p, rho,
tol);
661 DERIV_TEST(_tab_ve_from_pT->T_from_p_s, p, s,
tol);
662 DERIV_TEST(_tab_ve_from_pT->rho_from_p_s, p, s,
tol);
670 const Real tol = REL_TOL_DERIVATIVE;
672 const Real rho = _tab_ve_from_fp->rho_from_p_T(p, T);
673 const Real v = 1. / rho;
674 const Real e = _tab_ve_from_fp->e_from_p_T(p, T);
675 const Real h = e + p *
v;
677 DERIV_TEST(_tab_ve_from_fp->p_from_v_e,
v, e,
tol);
678 DERIV_TEST(_tab_ve_from_fp->mu_from_v_e,
v, e,
tol);
679 DERIV_TEST(_tab_ve_from_fp->k_from_v_e,
v, e,
tol);
680 DERIV_TEST(_tab_ve_from_fp->T_from_v_e,
v, e,
tol);
681 DERIV_TEST(_tab_ve_from_fp->cp_from_v_e,
v, e,
tol);
682 DERIV_TEST(_tab_ve_from_fp->cv_from_v_e,
v, e,
tol);
686 DERIV_TEST(_tab_ve_from_fp->e_from_v_h,
v, h, 100 *
tol);
700 REL_TEST(_tab_gen_fp->rho_from_p_T(p, T), _co2_fp->rho_from_p_T(p, T), 1.0e-4);
701 REL_TEST(_tab_gen_fp->h_from_p_T(p, T), _co2_fp->h_from_p_T(p, T), 1.0e-4);
702 REL_TEST(_tab_gen_fp->e_from_p_T(p, T), _co2_fp->e_from_p_T(p, T), 1.0e-4);
703 REL_TEST(_tab_gen_fp->mu_from_p_T(p, T), _co2_fp->mu_from_p_T(p, T), 1.0e-4);
704 REL_TEST(_tab_gen_fp->k_from_p_T(p, T), _co2_fp->k_from_p_T(p, T), 1.0e-4);
705 REL_TEST(_tab_gen_fp->cp_from_p_T(p, T), _co2_fp->cp_from_p_T(p, T), 1.0e-4);
706 REL_TEST(_tab_gen_fp->cv_from_p_T(p, T), _co2_fp->cv_from_p_T(p, T), 1.0e-4);
707 REL_TEST(_tab_gen_fp->s_from_p_T(p, T), _co2_fp->s_from_p_T(p, T), 1.0e-4);
716 const Real tol = REL_TOL_SAVED_VALUE;
720 ABS_TEST(_tab_pT_from_fp->rho_from_p_T(p, T), _co2_fp->rho_from_p_T(p, T),
tol);
721 ABS_TEST(_tab_pT_from_fp->h_from_p_T(p, T), _co2_fp->h_from_p_T(p, T),
tol);
722 ABS_TEST(_tab_pT_from_fp->e_from_p_T(p, T), _co2_fp->e_from_p_T(p, T),
tol);
723 ABS_TEST(_tab_pT_from_fp->mu_from_p_T(p, T), _co2_fp->mu_from_p_T(p, T),
tol);
724 ABS_TEST(_tab_pT_from_fp->k_from_p_T(p, T), _co2_fp->k_from_p_T(p, T),
tol);
725 ABS_TEST(_tab_pT_from_fp->cp_from_p_T(p, T), _co2_fp->cp_from_p_T(p, T),
tol);
726 ABS_TEST(_tab_pT_from_fp->cv_from_p_T(p, T), _co2_fp->cv_from_p_T(p, T),
tol);
727 ABS_TEST(_tab_pT_from_fp->s_from_p_T(p, T), _co2_fp->s_from_p_T(p, T),
tol);
731 ABS_TEST(_tab_pT_from_fp->henryCoefficients()[0], _co2_fp->henryCoefficients()[0],
tol);
732 ABS_TEST(_tab_pT_from_fp->henryCoefficients()[1], _co2_fp->henryCoefficients()[1],
tol);
733 ABS_TEST(_tab_pT_from_fp->henryCoefficients()[2], _co2_fp->henryCoefficients()[2],
tol);
734 ABS_TEST(_tab_pT_from_fp->triplePointPressure(), _co2_fp->triplePointPressure(),
tol);
735 ABS_TEST(_tab_pT_from_fp->triplePointTemperature(), _co2_fp->triplePointTemperature(),
tol);
736 ABS_TEST(_tab_pT_from_fp->criticalPressure(), _co2_fp->criticalPressure(),
tol);
737 ABS_TEST(_tab_pT_from_fp->criticalTemperature(), _co2_fp->criticalTemperature(),
tol);
738 ABS_TEST(_tab_pT_from_fp->criticalDensity(), _co2_fp->criticalDensity(),
tol);
742 ABS_TEST(_tab_pT_from_fp->vaporPressure(T), _co2_fp->vaporPressure(T),
tol);
755 EXPECT_EQ(_tab_pT_from_fp->fluidName(),
"co2");
763 ABS_TEST(_tab_pT_from_fp->molarMass(), 44.0098e-3, REL_TOL_SAVED_VALUE);
772 const Real p = 1.0e6;
773 const Real T = 300.0;
774 const Real tol = REL_TOL_CONSISTENCY;
777 Real rho, drho_dp, drho_dT;
778 _tab_pT_from_fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
780 _tab_pT_from_fp->mu_from_p_T(p, T,
mu, dmu_dp, dmu_dT);
781 Real e, de_dp, de_dT;
782 _tab_pT_from_fp->e_from_p_T(p, T, e, de_dp, de_dT);
785 Real rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT, e2, de2_dp, de2_dT;
786 _tab_pT_from_fp->rho_mu_from_p_T(p, T, rho2, mu2);
788 ABS_TEST(rho, rho2,
tol);
789 ABS_TEST(
mu, mu2,
tol);
791 _tab_pT_from_fp->rho_mu_from_p_T(p, T, rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT);
792 ABS_TEST(rho, rho2,
tol);
793 ABS_TEST(drho_dp, drho2_dp,
tol);
794 ABS_TEST(drho_dT, drho2_dT,
tol);
795 ABS_TEST(
mu, mu2,
tol);
796 ABS_TEST(dmu_dp, dmu2_dp,
tol);
797 ABS_TEST(dmu_dT, dmu2_dT,
tol);
799 _tab_pT_from_fp->rho_e_from_p_T(p, T, rho2, drho2_dp, drho2_dT, e2, de2_dp, de2_dT);
800 ABS_TEST(rho, rho2,
tol);
801 ABS_TEST(drho_dp, drho2_dp,
tol);
802 ABS_TEST(drho_dT, drho2_dT,
tol);
803 ABS_TEST(e, e2,
tol);
804 ABS_TEST(de_dp, de2_dp,
tol);
805 ABS_TEST(de_dT, de2_dT,
tol);
SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< MOOSE_AD_MAX_DOFS_PER_ELEM > > DNDerivativeType
DualNumber< Real, DNDerivativeType, true > ADReal
static const std::string mu
Common class for single phase fluid properties.
TEST_F(TabulatedBicubicFluidPropertiesTest, unorderedData)
Class for fluid properties read from a file.
static const Real mu_0
Magnetic permeability of free space in SI units (H/m)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string v
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N >> &derivs, libMesh::dof_id_type index, Real value)