26 catch (
const std::exception &
err)
28 std::size_t pos = std::string(
err.what())
29 .
find(
"The column data for temperature is not monotonically increasing");
30 ASSERT_TRUE(pos != std::string::npos);
42 catch (
const std::exception &
err)
44 std::size_t pos = std::string(
err.what())
45 .
find(
"temperature values for pressure 2e+06 are not " 46 "identical to values for 1e+06");
47 ASSERT_TRUE(pos != std::string::npos);
62 catch (
const std::exception &
err)
64 std::size_t pos = std::string(
err.what())
65 .
find(
"data/csv/missing_col_fluid_props.csv. A " 66 "column named temperature must be present");
67 ASSERT_TRUE(pos != std::string::npos);
79 catch (
const std::exception &
err)
81 std::size_t pos = std::string(
err.what())
82 .
find(
"data/csv/unknown_fluid_props.csv tabulation file is not one of " 83 "the properties that TabulatedFluidProperties understands");
84 ASSERT_TRUE(pos != std::string::npos);
96 catch (
const std::exception &
err)
98 std::size_t pos = std::string(
err.what())
99 .
find(
"data/csv/missing_data_fluid_props.csv " 100 "is not equal to the number of unique pressure values 3 multiplied " 101 "by the number of unique temperature values 3");
102 ASSERT_TRUE(pos != std::string::npos);
116 REL_TEST(_tab_pT_from_fp->rho_from_p_T(
p,
T), _co2_fp->rho_from_p_T(
p,
T), 1.0e-4);
117 REL_TEST(_tab_pT_from_fp->h_from_p_T(
p,
T), _co2_fp->h_from_p_T(
p,
T), 1.0e-4);
118 REL_TEST(_tab_pT_from_fp->e_from_p_T(
p,
T), _co2_fp->e_from_p_T(
p,
T), 1.0e-4);
119 REL_TEST(_tab_pT_from_fp->mu_from_p_T(
p,
T), _co2_fp->mu_from_p_T(
p,
T), 1.0e-4);
120 REL_TEST(_tab_pT_from_fp->k_from_p_T(
p,
T), _co2_fp->k_from_p_T(
p,
T), 1.0e-4);
121 REL_TEST(_tab_pT_from_fp->cp_from_p_T(
p,
T), _co2_fp->cp_from_p_T(
p,
T), 1.0e-4);
122 REL_TEST(_tab_pT_from_fp->cv_from_p_T(
p,
T), _co2_fp->cv_from_p_T(
p,
T), 1.0e-4);
123 REL_TEST(_tab_pT_from_fp->s_from_p_T(
p,
T), _co2_fp->s_from_p_T(
p,
T), 1.0e-4);
126 Real rho, drho_dp, drho_dT, rhoc, drhoc_dp, drhoc_dT;
127 _tab_pT_from_fp->rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
128 _co2_fp->rho_from_p_T(
p,
T, rhoc, drhoc_dp, drhoc_dT);
129 REL_TEST(
rho, rhoc, 1.0e-4);
130 REL_TEST(drho_dp, drhoc_dp, 1.0e-3);
131 REL_TEST(drho_dT, drhoc_dT, 1.0e-3);
133 Real h, dh_dp, dh_dT, hc, dhc_dp, dhc_dT;
134 _tab_pT_from_fp->h_from_p_T(
p,
T, h, dh_dp, dh_dT);
135 _co2_fp->h_from_p_T(
p,
T, hc, dhc_dp, dhc_dT);
136 REL_TEST(h, hc, 1.0e-4);
137 REL_TEST(dh_dp, dhc_dp, 1.0e-3);
138 REL_TEST(dh_dT, dhc_dT, 1.0e-3);
140 Real mu, dmu_dp, dmu_dT, muc, dmuc_dp, dmuc_dT;
141 _tab_pT_from_fp->mu_from_p_T(
p,
T,
mu, dmu_dp, dmu_dT);
142 _co2_fp->mu_from_p_T(
p,
T, muc, dmuc_dp, dmuc_dT);
143 REL_TEST(
mu, muc, 1.0e-4);
144 REL_TEST(dmu_dp, dmuc_dp, 1.0e-3);
145 REL_TEST(dmu_dT, dmuc_dT, 1.0e-3);
147 Real k, dk_dp, dk_dT, kc, dkc_dp, dkc_dT;
148 _tab_pT_from_fp->k_from_p_T(
p,
T,
k, dk_dp, dk_dT);
149 _co2_fp->k_from_p_T(
p,
T, kc, dkc_dp, dkc_dT);
150 REL_TEST(
k, kc, 1.0e-4);
151 REL_TEST(dk_dp, dkc_dp, 1.0e-3);
152 REL_TEST(dk_dT, dkc_dT, 1.0e-3);
154 Real e, de_dp, de_dT, ec, dec_dp, dec_dT;
155 _tab_pT_from_fp->e_from_p_T(
p,
T, e, de_dp, de_dT);
156 _co2_fp->e_from_p_T(
p,
T, ec, dec_dp, dec_dT);
157 REL_TEST(e, ec, 1.0e-4);
158 REL_TEST(de_dp, dec_dp, 1.0e-3);
159 REL_TEST(de_dT, dec_dT, 1.0e-3);
161 Real s, ds_dp, ds_dT, sc, dsc_dp, dsc_dT;
162 _tab_pT_from_fp->s_from_p_T(
p,
T, s, ds_dp, ds_dT);
163 _co2_fp->s_from_p_T(
p,
T, sc, dsc_dp, dsc_dT);
164 REL_TEST(s, sc, 1.0e-4);
165 REL_TEST(ds_dp, dsc_dp, 1.0e-3);
166 REL_TEST(ds_dT, dsc_dT, 1.0e-3);
183 Real e = _tab_ve_from_pT->e_from_p_T(
p,
T);
184 Real v = _tab_ve_from_pT->v_from_p_T(
p,
T);
185 Real pp = _tab_ve_from_pT->p_from_v_e(
v, e);
186 Real TT = _tab_ve_from_pT->T_from_v_e(
v, e);
187 ABS_TEST(
T, TT, 1.0);
188 REL_TEST(
p, pp, 0.001);
193 Real e = _tab_ve_from_pT->e_from_p_T(
p,
T);
194 Real v = _tab_ve_from_pT->v_from_p_T(
p,
T);
197 Real cp1 = _tab_ve_from_pT->cp_from_p_T(
p,
T);
198 Real cp2 = _tab_ve_from_pT->cp_from_v_e(
v, e);
199 REL_TEST(cp1, cp2, 0.001);
202 Real cv1 = _tab_ve_from_pT->cv_from_p_T(
p,
T);
203 Real cv2 = _tab_ve_from_pT->cv_from_v_e(
v, e);
204 REL_TEST(cv1, cv2, 0.001);
207 Real mu1 = _tab_ve_from_pT->mu_from_p_T(
p,
T);
208 Real mu2 = _tab_ve_from_pT->mu_from_v_e(
v, e);
209 REL_TEST(mu1, mu2, 0.001);
212 Real k1 = _tab_ve_from_pT->k_from_p_T(
p,
T);
213 Real k2 = _tab_ve_from_pT->k_from_v_e(
v, e);
214 REL_TEST(k1, k2, 0.001);
217 Real h1 = _tab_ve_from_pT->h_from_p_T(
p,
T);
218 Real h2 = _tab_ve_from_pT->h_from_v_e(
v, e);
219 REL_TEST(h1, h2, 0.001);
222 Real s1 = _tab_ve_from_pT->s_from_p_T(
p,
T);
223 Real s2 = _tab_ve_from_pT->s_from_v_e(
v, e);
224 REL_TEST(s1, s2, 0.001);
229 Real s = _tab_ve_from_pT->s_from_p_T(
p,
T);
232 Real rho1 = _tab_ve_from_pT->rho_from_p_T(
p,
T);
233 Real rho2 = _tab_ve_from_pT->rho_from_p_s(
p, s);
234 REL_TEST(rho1, rho2, 0.001);
237 Real Ts = _tab_ve_from_pT->T_from_p_s(
p, s);
238 REL_TEST(
T, Ts, 0.001);
243 Real rho = _tab_ve_from_pT->rho_from_p_T(
p,
T);
246 Real e1 = _tab_ve_from_pT->e_from_p_T(
p,
T);
247 Real e2 = _tab_ve_from_pT->e_from_p_rho(
p,
rho);
248 REL_TEST(e1, e2, REL_TOL_CONSISTENCY);
255 Real h = _tab_ve_from_pT->h_from_p_T(
p,
T);
256 Real Ts = _tab_ve_from_pT->T_from_p_h(
p, h);
257 REL_TEST(
T, Ts, 1e-4);
261 REL_TEST(
T, Ts, 1e-4);
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);
276 _tab_ve_from_pT->cp_from_v_e(
v, e, cp1, d1, d2);
277 Real cp2 = _tab_ve_from_pT->cp_from_v_e(
v, e);
278 REL_TEST(cp1, cp2, 0.001);
282 _tab_ve_from_pT->cv_from_v_e(
v, e, cv1, d1, d2);
283 Real cv2 = _tab_ve_from_pT->cv_from_v_e(
v, e);
284 REL_TEST(cv1, cv2, 0.001);
288 _tab_ve_from_pT->mu_from_v_e(
v, e, mu1, d1, d2);
289 Real mu2 = _tab_ve_from_pT->mu_from_v_e(
v, e);
290 REL_TEST(mu1, mu2, 0.001);
294 _tab_ve_from_pT->k_from_v_e(
v, e, k1, d1, d2);
295 Real k2 = _tab_ve_from_pT->k_from_v_e(
v, e);
296 REL_TEST(k1, k2, 0.001);
301 Real e = _tab_ve_from_pT->e_from_p_T(
p,
T);
302 Real v = _tab_ve_from_pT->v_from_p_T(
p,
T);
308 _tab_ve_from_pT->p_from_v_e(
v, e, p1, deriv1, deriv2);
309 Real p2 = _tab_ve_from_pT->p_from_v_e(
v, e);
310 REL_TEST(p1, p2, 0.001);
314 _tab_ve_from_pT->T_from_v_e(
v, e, T1, deriv1, deriv2);
315 Real T2 = _tab_ve_from_pT->T_from_v_e(
v, e);
316 REL_TEST(T1, T2, 0.001);
323 _tab_ve_from_pT->cp_from_v_e(
v, e, cp1, deriv1, deriv2);
324 Real cp_0 = _tab_ve_from_pT->cp_from_v_e(
v, e);
325 Real cp_1 = _tab_ve_from_pT->cp_from_v_e(
v * (1 + pert), e);
326 Real cp_2 = _tab_ve_from_pT->cp_from_v_e(
v, e * (1 + pert));
327 REL_TEST(deriv1, (cp_1 - cp_0) / (
v * pert), 0.001);
328 REL_TEST(deriv2, (cp_2 - cp_0) / (e * pert), 0.001);
332 _tab_ve_from_pT->cv_from_v_e(
v, e, cv1, deriv1, deriv2);
333 Real cv_0 = _tab_ve_from_pT->cv_from_v_e(
v, e);
334 Real cv_1 = _tab_ve_from_pT->cv_from_v_e(
v * (1 + pert), e);
335 Real cv_2 = _tab_ve_from_pT->cv_from_v_e(
v, e * (1 + pert));
336 REL_TEST(deriv1, (cv_1 - cv_0) / (
v * pert), 0.001);
337 REL_TEST(deriv2, (cv_2 - cv_0) / (e * pert), 0.001);
341 _tab_ve_from_pT->mu_from_v_e(
v, e, mu1, deriv1, deriv2);
342 Real mu_0 = _tab_ve_from_pT->mu_from_v_e(
v, e);
343 Real mu_1 = _tab_ve_from_pT->mu_from_v_e(
v * (1 + pert), e);
344 Real mu_2 = _tab_ve_from_pT->mu_from_v_e(
v, e * (1 + pert));
345 REL_TEST(deriv1, (mu_1 -
mu_0) / (
v * pert), 0.001);
346 REL_TEST(deriv2, (mu_2 -
mu_0) / (e * pert), 0.001);
350 _tab_ve_from_pT->k_from_v_e(
v, e, k1, deriv1, deriv2);
351 Real k_0 = _tab_ve_from_pT->k_from_v_e(
v, e);
352 Real k_1 = _tab_ve_from_pT->k_from_v_e(
v * (1 + pert), e);
353 Real k_2 = _tab_ve_from_pT->k_from_v_e(
v, e * (1 + pert));
354 REL_TEST(deriv1, (k_1 - k_0) / (
v * pert), 0.001);
355 REL_TEST(deriv2, (k_2 - k_0) / (e * pert), 0.001);
360 Real h = _tab_ve_from_pT->h_from_p_T(
p,
T);
361 Real v = _tab_ve_from_pT->v_from_p_T(
p,
T);
362 Real e_gold = _tab_ve_from_pT->e_from_p_T(
p,
T);
363 Real e = _tab_ve_from_pT->e_from_v_h(
v, h);
364 REL_TEST(e_gold, e, 0.001);
366 Real e2, de_dv, de_dh;
367 _tab_ve_from_pT->e_from_v_h(
v, h, e2, de_dv, de_dh);
368 REL_TEST(e_gold, e2, 0.001);
369 Real e_0 = _tab_ve_from_pT->e_from_v_h(
v, h);
370 Real e_1 = _tab_ve_from_pT->e_from_v_h(
v * (1 + pert), h);
371 Real e_2 = _tab_ve_from_pT->e_from_v_h(
v, h * (1 + pert));
372 REL_TEST(de_dv, (e_1 - e_0) / (
v * pert), 0.001);
373 REL_TEST(de_dh, (e_2 - e_0) / (h * pert), 0.001);
378 Real e = _tab_ve_from_pT->e_from_p_T(
p,
T);
379 Real v = _tab_ve_from_pT->v_from_p_T(
p,
T);
391 ADReal p_ad = _tab_ve_from_pT->p_from_v_e(v_ad, e_ad);
393 Real pp, dp_dv, dp_de;
394 _tab_ve_from_pT->p_from_v_e(
v, e, pp, dp_dv, dp_de);
395 REL_TEST(p_ad.derivatives()[0], dp_dv, 0.0001);
396 REL_TEST(p_ad.derivatives()[1], dp_de, 0.0001);
398 ADReal ad_pp, ad_dp_dv, ad_dp_de;
399 _tab_ve_from_pT->p_from_v_e(v_ad, e_ad, ad_pp, ad_dp_dv, ad_dp_de);
400 REL_TEST(p_ad.derivatives()[0], ad_dp_dv.value(), 0.0001);
401 REL_TEST(p_ad.derivatives()[1], ad_dp_de.value(), 0.0001);
406 Real e = _tab_ve_from_pT->e_from_p_T(
p,
T);
407 Real v = _tab_ve_from_pT->v_from_p_T(
p,
T);
419 ADReal T_ad = _tab_ve_from_pT->T_from_v_e(v_ad, e_ad);
421 Real TT, dT_dv, dT_de;
422 _tab_ve_from_pT->T_from_v_e(
v, e, TT, dT_dv, dT_de);
423 REL_TEST(T_ad.derivatives()[0], dT_dv, 0.0001);
424 REL_TEST(T_ad.derivatives()[1], dT_de, 0.0001);
426 ADReal ad_TT, ad_dT_dv, ad_dT_de;
427 _tab_ve_from_pT->T_from_v_e(v_ad, e_ad, ad_TT, ad_dT_dv, ad_dT_de);
428 REL_TEST(T_ad.derivatives()[0], ad_dT_dv.value(), 0.0001);
429 REL_TEST(T_ad.derivatives()[1], ad_dT_de.value(), 0.0001);
437 Real h = _tab_ve_from_pT->h_from_p_T(
p,
T);
449 ADReal T_ad = _tab_ve_from_pT->T_from_p_h(p_ad, h_ad);
451 Real TT_1 = _tab_ve_from_pT->T_from_p_h(
p * (1 + pert), h);
452 Real TT_2 = _tab_ve_from_pT->T_from_p_h(
p, h * (1 + pert));
453 Real dT_dp = (TT_1 -
T) /
p / pert;
454 Real dT_dh = (TT_2 -
T) / h / pert;
455 REL_TEST(T_ad.derivatives()[0], dT_dp, 0.0001);
456 REL_TEST(T_ad.derivatives()[1], dT_dh, 0.0001);
472 ADReal rho_ad = _tab_ve_from_pT->rho_from_p_T(p_ad, T_ad);
475 _tab_ve_from_pT->rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
476 REL_TEST(rho_ad.derivatives()[0], drho_dp, 0.0001);
477 REL_TEST(rho_ad.derivatives()[1], drho_dT, 0.0001);
479 ADReal ad_rho, ad_drho_dp, ad_drho_dT;
480 _tab_ve_from_pT->rho_from_p_T(p_ad, T_ad, ad_rho, ad_drho_dp, ad_drho_dT);
481 REL_TEST(rho_ad.derivatives()[0], ad_drho_dp.value(), 0.0001);
482 REL_TEST(rho_ad.derivatives()[1], ad_drho_dT.value(), 0.0001);
498 ADReal e_ad = _tab_ve_from_pT->e_from_p_T(p_ad, T_ad);
500 Real e, de_dp, de_dT;
501 _tab_ve_from_pT->e_from_p_T(
p,
T, e, de_dp, de_dT);
502 REL_TEST(e_ad.derivatives()[0], de_dp, 0.0001);
503 REL_TEST(e_ad.derivatives()[1], de_dT, 0.0001);
519 ADReal v_ad = _tab_ve_from_pT->v_from_p_T(p_ad, T_ad);
521 Real v, dv_dp, dv_dT;
522 _tab_ve_from_pT->v_from_p_T(
p,
T,
v, dv_dp, dv_dT);
523 REL_TEST(v_ad.derivatives()[0], dv_dp, 0.0001);
524 REL_TEST(v_ad.derivatives()[1], dv_dT, 0.0001);
540 Real e = _idg_fp->e_from_p_T(
p,
T);
541 Real v = _idg_fp->v_from_p_T(
p,
T);
546 Real cp1 = _idg_fp->cp_from_v_e(
v, e);
547 Real cp2 = _tab_ve_from_fp->cp_from_v_e(
v, e);
548 REL_TEST(cp1, cp2, 0.001);
551 Real cv1 = _idg_fp->cv_from_v_e(
v, e);
552 Real cv2 = _tab_ve_from_fp->cv_from_v_e(
v, e);
553 REL_TEST(cv1, cv2, 0.001);
556 Real c1 = _idg_fp->c_from_v_e(
v, e);
557 Real c2 = _tab_ve_from_fp->c_from_v_e(
v, e);
558 REL_TEST(c1, c2, 0.001);
561 Real mu1 = _idg_fp->mu_from_v_e(
v, e);
562 Real mu2 = _tab_ve_from_fp->mu_from_v_e(
v, e);
563 REL_TEST(mu1, mu2, 0.001);
566 Real k1 = _idg_fp->k_from_v_e(
v, e);
567 Real k2 = _tab_ve_from_fp->k_from_v_e(
v, e);
568 REL_TEST(k1, k2, 0.001);
577 _tab_ve_from_fp->p_from_v_e(
v, e, p1, d1, d2);
578 Real p2 = _tab_ve_from_fp->p_from_v_e(
v, e);
579 REL_TEST(p1, p2, 0.001);
583 _tab_ve_from_fp->T_from_v_e(
v, e, T1, d1, d2);
584 Real T2 = _tab_ve_from_fp->T_from_v_e(
v, e);
585 REL_TEST(T1, T2, 0.001);
589 _tab_ve_from_fp->cp_from_v_e(
v, e, cp1, d1, d2);
590 Real cp2 = _tab_ve_from_fp->cp_from_v_e(
v, e);
591 REL_TEST(cp1, cp2, 0.001);
595 _tab_ve_from_fp->cv_from_v_e(
v, e, cv1, d1, d2);
596 Real cv2 = _tab_ve_from_fp->cv_from_v_e(
v, e);
597 REL_TEST(cv1, cv2, 0.001);
601 _tab_ve_from_fp->c_from_v_e(
v, e, c1, d1, d2);
602 Real c2 = _tab_ve_from_fp->c_from_v_e(
v, e);
603 REL_TEST(c1, c2, 0.001);
607 _tab_ve_from_fp->mu_from_v_e(
v, e, mu1, d1, d2);
608 Real mu2 = _tab_ve_from_fp->mu_from_v_e(
v, e);
609 REL_TEST(mu1, mu2, 0.001);
613 _tab_ve_from_fp->k_from_v_e(
v, e, k1, d1, d2);
614 Real k2 = _tab_ve_from_fp->k_from_v_e(
v, e);
615 REL_TEST(k1, k2, 0.001);
627 _tab_ve_from_fp->cp_from_v_e(
v, e, cp1, deriv1, deriv2);
628 Real cp_0 = _tab_ve_from_fp->cp_from_v_e(
v, e);
629 Real cp_1 = _tab_ve_from_fp->cp_from_v_e(
v * (1 + pert), e);
630 Real cp_2 = _tab_ve_from_fp->cp_from_v_e(
v, e * (1 + pert));
631 REL_TEST(cp1, cp_0, 0.001);
632 REL_TEST(deriv1, (cp_1 - cp_0) / (
v * pert), 0.001);
633 REL_TEST(deriv2, (cp_2 - cp_0) / (e * pert), 0.001);
637 _tab_ve_from_fp->cv_from_v_e(
v, e, cv1, deriv1, deriv2);
638 Real cv_0 = _tab_ve_from_fp->cv_from_v_e(
v, e);
639 Real cv_1 = _tab_ve_from_fp->cv_from_v_e(
v * (1 + pert), e);
640 Real cv_2 = _tab_ve_from_fp->cv_from_v_e(
v, e * (1 + pert));
641 REL_TEST(cv1, cv_0, 0.001);
642 REL_TEST(deriv1, (cv_1 - cv_0) / (
v * pert), 0.001);
643 REL_TEST(deriv2, (cv_2 - cv_0) / (e * pert), 0.001);
647 _tab_ve_from_fp->mu_from_v_e(
v, e, mu1, deriv1, deriv2);
648 Real mu_0 = _tab_ve_from_fp->mu_from_v_e(
v, e);
649 Real mu_1 = _tab_ve_from_fp->mu_from_v_e(
v * (1 + pert), e);
650 Real mu_2 = _tab_ve_from_fp->mu_from_v_e(
v, e * (1 + pert));
651 REL_TEST(mu1,
mu_0, 0.001);
652 REL_TEST(deriv1, (mu_1 -
mu_0) / (
v * pert), 0.001);
653 REL_TEST(deriv2, (mu_2 -
mu_0) / (e * pert), 0.001);
657 _tab_ve_from_fp->k_from_v_e(
v, e, k1, deriv1, deriv2);
658 Real k_0 = _tab_ve_from_fp->k_from_v_e(
v, e);
659 Real k_1 = _tab_ve_from_fp->k_from_v_e(
v * (1 + pert), e);
660 Real k_2 = _tab_ve_from_fp->k_from_v_e(
v, e * (1 + pert));
661 REL_TEST(k1, k_0, 0.001);
662 REL_TEST(deriv1, (k_1 - k_0) / (
v * pert), 0.001);
663 REL_TEST(deriv2, (k_2 - k_0) / (e * pert), 0.001);
667 _tab_ve_from_fp->s_from_v_e(
v, e, s1, deriv1, deriv2);
668 Real s_0 = _tab_ve_from_fp->s_from_v_e(
v, e);
669 Real s_1 = _tab_ve_from_fp->s_from_v_e(
v * (1 + pert), e);
670 Real s_2 = _tab_ve_from_fp->s_from_v_e(
v, e * (1 + pert));
671 REL_TEST(s1, s_0, 0.001);
672 REL_TEST(deriv1, (s_1 - s_0) / (
v * pert), 0.001);
673 REL_TEST(deriv2, (s_2 - s_0) / (e * pert), 0.001);
679 Real h = _idg_fp->h_from_p_T(
p,
T);
680 Real v = _idg_fp->v_from_p_T(
p,
T);
681 Real e_gold = _idg_fp->e_from_p_T(
p,
T);
682 Real e0 = _tab_ve_from_fp->e_from_v_h(
v, h);
683 REL_TEST(e_gold, e0, 0.001);
685 Real e2, de_dv, de_dh;
686 _tab_ve_from_fp->e_from_v_h(
v, h, e2, de_dv, de_dh);
687 REL_TEST(e_gold, e2, 0.001);
688 Real e_0 = _tab_ve_from_fp->e_from_v_h(
v, h);
689 Real e_1 = _tab_ve_from_fp->e_from_v_h(
v * (1 + pert), h);
690 Real e_2 = _tab_ve_from_fp->e_from_v_h(
v, h * (1 + pert));
691 REL_TEST(de_dv, (e_1 - e_0) / (
v * pert), 0.001);
692 REL_TEST(de_dh, (e_2 - e_0) / (h * pert), 0.001);
699 Real p = _tab_ve_from_fp->p_from_v_e(
v, e);
700 Real T = _tab_ve_from_fp->T_from_v_e(
v, e);
701 REL_TEST(1. /
v, _tab_ve_from_fp->rho_from_p_T(
p,
T), 1e-6);
704 REL_TEST(e, _tab_ve_from_fp->e_from_p_T(
p,
T), 1e-6);
707 Real h = _tab_ve_from_fp->h_from_v_e(
v, e);
708 REL_TEST(h, _tab_ve_from_fp->h_from_p_T(
p,
T), 1e-6);
711 Real s = _tab_ve_from_fp->s_from_v_e(
v, e);
712 REL_TEST(s, _tab_ve_from_fp->s_from_p_T(
p,
T), 1e-6);
718 Real p = _tab_ve_from_fp->p_from_v_e(
v, e);
719 Real T = _tab_ve_from_fp->T_from_v_e(
v, e);
720 REL_TEST(
T, _tab_ve_from_fp->T_from_p_rho(
p, 1. /
v), 1e-6);
723 REL_TEST(e, _tab_ve_from_fp->e_from_p_rho(
p, 1. /
v), 1e-6);
729 Real p = _tab_ve_from_fp->p_from_v_e(
v, e);
730 Real T = _tab_ve_from_fp->T_from_v_e(
v, e);
731 Real h = _tab_ve_from_fp->h_from_v_e(
v, e);
732 REL_TEST(
T, _tab_ve_from_fp->T_from_p_h(
p, h), 1e-6);
735 Real s = _tab_ve_from_fp->s_from_v_e(
v, e);
736 REL_TEST(s, _tab_ve_from_fp->s_from_h_p(h,
p), 1e-6);
742 Real p = _tab_ve_from_fp->p_from_v_e(
v, e);
743 Real T = _tab_ve_from_fp->T_from_v_e(
v, e);
744 Real s = _tab_ve_from_fp->s_from_v_e(
v, e);
746 REL_TEST(
T, _tab_ve_from_fp->T_from_p_s(
p, s), 1e-6);
763 ADReal p_ad = _tab_ve_from_fp->p_from_v_e(v_ad, e_ad);
765 Real pp, dp_dv, dp_de;
766 _tab_ve_from_fp->p_from_v_e(
v, e, pp, dp_dv, dp_de);
767 REL_TEST(p_ad.derivatives()[0], dp_dv, 0.0001);
768 REL_TEST(p_ad.derivatives()[1], dp_de, 0.0001);
784 ADReal T_ad = _tab_ve_from_fp->T_from_v_e(v_ad, e_ad);
786 Real TT, dT_dv, dT_de;
787 _tab_ve_from_fp->T_from_v_e(
v, e, TT, dT_dv, dT_de);
788 REL_TEST(T_ad.derivatives()[0], dT_dv, 0.0001);
789 REL_TEST(T_ad.derivatives()[1], dT_de, 0.0001);
806 ADReal e_ad = _tab_ve_from_fp->e_from_p_rho(p_ad, rho_ad);
808 Real e, de_dp, de_drho;
809 _tab_ve_from_fp->e_from_p_rho(
p,
rho, e, de_dp, de_drho);
810 REL_TEST(e_ad.derivatives()[0], de_dp, 0.0001);
811 REL_TEST(e_ad.derivatives()[1], de_drho, 0.0001);
828 ADReal T_ad = _tab_ve_from_fp->T_from_p_rho(p_ad, rho_ad);
830 Real T, dT_dp, dT_drho;
831 _tab_ve_from_fp->T_from_p_rho(
p,
rho,
T, dT_dp, dT_drho);
832 REL_TEST(T_ad.derivatives()[0], dT_dp, 0.0001);
833 REL_TEST(T_ad.derivatives()[1], dT_drho, 0.0001);
849 ADReal e_ad = _tab_ve_from_fp->e_from_p_T(p_ad, T_ad);
851 Real e, de_dp, de_dT;
852 _tab_ve_from_fp->e_from_p_T(
p,
T, e, de_dp, de_dT);
853 REL_TEST(e_ad.derivatives()[0], de_dp, 0.0001);
854 REL_TEST(e_ad.derivatives()[1], de_dT, 0.0001);
868 Real p = _tab_ve_from_fp->p_from_v_e(
v, e);
869 Real T = _tab_ve_from_fp->p_from_v_e(
v, e);
872 ADReal rho_ad = _tab_ve_from_fp->rho_from_p_T(p_ad, T_ad);
875 _tab_ve_from_fp->rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
876 REL_TEST(rho_ad.derivatives()[0], drho_dp, 0.0001);
877 REL_TEST(rho_ad.derivatives()[1], drho_dT, 0.0001);
891 const Real p = 1.5e6;
892 const Real T = 452.0;
899 const Real tol = REL_TOL_DERIVATIVE;
901 const Real rho = _tab_ve_from_pT->rho_from_p_T(
p,
T);
903 const Real e = _tab_ve_from_pT->e_from_p_T(
p,
T);
904 const Real s = _tab_ve_from_pT->s_from_p_T(
p,
T);
906 DERIV_TEST(_tab_ve_from_pT->rho_from_p_T,
p,
T,
tol);
907 DERIV_TEST(_tab_ve_from_pT->e_from_p_T,
p,
T,
tol);
908 DERIV_TEST(_tab_ve_from_pT->v_from_p_T,
p,
T,
tol);
909 DERIV_TEST(_tab_ve_from_pT->h_from_p_T,
p,
T,
tol);
910 DERIV_TEST(_tab_ve_from_pT->k_from_p_T,
p,
T,
tol);
911 DERIV_TEST(_tab_ve_from_pT->cp_from_p_T,
p,
T,
tol);
912 DERIV_TEST(_tab_ve_from_pT->cv_from_p_T,
p,
T,
tol);
913 DERIV_TEST(_tab_ve_from_pT->mu_from_p_T,
p,
T,
tol);
915 DERIV_TEST(_tab_ve_from_pT->p_from_v_e,
v, e,
tol);
916 DERIV_TEST(_tab_ve_from_pT->mu_from_v_e,
v, e,
tol);
917 DERIV_TEST(_tab_ve_from_pT->k_from_v_e,
v, e,
tol);
918 DERIV_TEST(_tab_ve_from_pT->T_from_v_e,
v, e,
tol);
919 DERIV_TEST(_tab_ve_from_pT->cp_from_v_e,
v, e,
tol);
920 DERIV_TEST(_tab_ve_from_pT->cv_from_v_e,
v, e,
tol);
922 DERIV_TEST(_tab_ve_from_pT->T_from_p_rho,
p,
rho,
tol);
923 DERIV_TEST(_tab_ve_from_pT->e_from_p_rho,
p,
rho,
tol);
925 DERIV_TEST(_tab_ve_from_pT->T_from_p_s,
p, s,
tol);
926 DERIV_TEST(_tab_ve_from_pT->rho_from_p_s,
p, s,
tol);
934 const Real tol = REL_TOL_DERIVATIVE;
936 const Real rho = _tab_ve_from_fp->rho_from_p_T(
p,
T);
938 const Real e = _tab_ve_from_fp->e_from_p_T(
p,
T);
941 DERIV_TEST(_tab_ve_from_fp->p_from_v_e,
v, e,
tol);
942 DERIV_TEST(_tab_ve_from_fp->mu_from_v_e,
v, e,
tol);
943 DERIV_TEST(_tab_ve_from_fp->k_from_v_e,
v, e,
tol);
944 DERIV_TEST(_tab_ve_from_fp->T_from_v_e,
v, e,
tol);
945 DERIV_TEST(_tab_ve_from_fp->cp_from_v_e,
v, e,
tol);
946 DERIV_TEST(_tab_ve_from_fp->cv_from_v_e,
v, e,
tol);
950 DERIV_TEST(_tab_ve_from_fp->e_from_v_h,
v, h, 100 *
tol);
964 REL_TEST(_tab_pT_from_fp_gen->rho_from_p_T(
p,
T), _co2_fp->rho_from_p_T(
p,
T), 1.0e-4);
965 REL_TEST(_tab_pT_from_fp_gen->h_from_p_T(
p,
T), _co2_fp->h_from_p_T(
p,
T), 1.0e-4);
966 REL_TEST(_tab_pT_from_fp_gen->e_from_p_T(
p,
T), _co2_fp->e_from_p_T(
p,
T), 1.0e-4);
967 REL_TEST(_tab_pT_from_fp_gen->mu_from_p_T(
p,
T), _co2_fp->mu_from_p_T(
p,
T), 1.0e-4);
968 REL_TEST(_tab_pT_from_fp_gen->k_from_p_T(
p,
T), _co2_fp->k_from_p_T(
p,
T), 1.0e-4);
969 REL_TEST(_tab_pT_from_fp_gen->cp_from_p_T(
p,
T), _co2_fp->cp_from_p_T(
p,
T), 1.0e-4);
970 REL_TEST(_tab_pT_from_fp_gen->cv_from_p_T(
p,
T), _co2_fp->cv_from_p_T(
p,
T), 1.0e-4);
971 REL_TEST(_tab_pT_from_fp_gen->s_from_p_T(
p,
T), _co2_fp->s_from_p_T(
p,
T), 1.0e-4);
980 const Real tol = REL_TOL_SAVED_VALUE;
984 ABS_TEST(_tab_pT_from_fp->v_from_p_T(
p,
T), 1. / _co2_fp->rho_from_p_T(
p,
T),
tol);
985 ABS_TEST(_tab_pT_from_fp->rho_from_p_T(
p,
T), _co2_fp->rho_from_p_T(
p,
T),
tol);
986 ABS_TEST(_tab_pT_from_fp->h_from_p_T(
p,
T), _co2_fp->h_from_p_T(
p,
T),
tol);
987 ABS_TEST(_tab_pT_from_fp->e_from_p_T(
p,
T), _co2_fp->e_from_p_T(
p,
T),
tol);
988 ABS_TEST(_tab_pT_from_fp->mu_from_p_T(
p,
T), _co2_fp->mu_from_p_T(
p,
T),
tol);
989 ABS_TEST(_tab_pT_from_fp->k_from_p_T(
p,
T), _co2_fp->k_from_p_T(
p,
T),
tol);
990 ABS_TEST(_tab_pT_from_fp->cp_from_p_T(
p,
T), _co2_fp->cp_from_p_T(
p,
T),
tol);
991 ABS_TEST(_tab_pT_from_fp->cv_from_p_T(
p,
T), _co2_fp->cv_from_p_T(
p,
T),
tol);
992 ABS_TEST(_tab_pT_from_fp->s_from_p_T(
p,
T), _co2_fp->s_from_p_T(
p,
T),
tol);
996 ABS_TEST(_tab_pT_from_fp->henryCoefficients()[0], _co2_fp->henryCoefficients()[0],
tol);
997 ABS_TEST(_tab_pT_from_fp->henryCoefficients()[1], _co2_fp->henryCoefficients()[1],
tol);
998 ABS_TEST(_tab_pT_from_fp->henryCoefficients()[2], _co2_fp->henryCoefficients()[2],
tol);
999 ABS_TEST(_tab_pT_from_fp->triplePointPressure(), _co2_fp->triplePointPressure(),
tol);
1000 ABS_TEST(_tab_pT_from_fp->triplePointTemperature(), _co2_fp->triplePointTemperature(),
tol);
1001 ABS_TEST(_tab_pT_from_fp->criticalPressure(), _co2_fp->criticalPressure(),
tol);
1002 ABS_TEST(_tab_pT_from_fp->criticalTemperature(), _co2_fp->criticalTemperature(),
tol);
1003 ABS_TEST(_tab_pT_from_fp->criticalDensity(), _co2_fp->criticalDensity(),
tol);
1007 ABS_TEST(_tab_pT_from_fp->vaporPressure(
T), _co2_fp->vaporPressure(
T),
tol);
1023 ADReal p_ad(1.5e6, dpdx);
1024 ADReal T_ad(450.0, dTdx);
1026 ABS_TEST(_tab_pT_from_fp_idg->v_from_p_T(p_ad, T_ad).value(),
1027 _idg_fp->v_from_p_T(p_ad, T_ad).value(),
1029 ABS_TEST(_tab_pT_from_fp_idg->rho_from_p_T(p_ad, T_ad).value(),
1030 _idg_fp->rho_from_p_T(p_ad, T_ad).value(),
1032 ABS_TEST(_tab_pT_from_fp_idg->e_from_p_T(p_ad, T_ad).value(),
1033 _idg_fp->e_from_p_T(p_ad, T_ad).value(),
1035 ABS_TEST(_tab_pT_from_fp_idg->cp_from_p_T(p_ad, T_ad).value(),
1036 _idg_fp->cp_from_p_T(p_ad, T_ad).value(),
1039 ABS_TEST(_tab_pT_from_fp_idg->v_from_p_T(p_ad, T_ad).derivatives()[0],
1040 _idg_fp->v_from_p_T(p_ad, T_ad).derivatives()[0],
1042 ABS_TEST(_tab_pT_from_fp_idg->rho_from_p_T(p_ad, T_ad).derivatives()[0],
1043 _idg_fp->rho_from_p_T(p_ad, T_ad).derivatives()[0],
1045 ABS_TEST(_tab_pT_from_fp_idg->e_from_p_T(p_ad, T_ad).derivatives()[0],
1046 _idg_fp->e_from_p_T(p_ad, T_ad).derivatives()[0],
1048 ABS_TEST(_tab_pT_from_fp_idg->cp_from_p_T(p_ad, T_ad).derivatives()[0],
1049 _idg_fp->cp_from_p_T(p_ad, T_ad).derivatives()[0],
1051 ABS_TEST(_tab_pT_from_fp_idg->v_from_p_T(p_ad, T_ad).derivatives()[1],
1052 _idg_fp->v_from_p_T(p_ad, T_ad).derivatives()[1],
1054 ABS_TEST(_tab_pT_from_fp_idg->rho_from_p_T(p_ad, T_ad).derivatives()[1],
1055 _idg_fp->rho_from_p_T(p_ad, T_ad).derivatives()[1],
1057 ABS_TEST(_tab_pT_from_fp_idg->e_from_p_T(p_ad, T_ad).derivatives()[1],
1058 _idg_fp->e_from_p_T(p_ad, T_ad).derivatives()[1],
1060 ABS_TEST(_tab_pT_from_fp_idg->cp_from_p_T(p_ad, T_ad).derivatives()[1],
1061 _idg_fp->cp_from_p_T(p_ad, T_ad).derivatives()[1],
1071 Real v = 1. / _idg_fp->rho_from_p_T(
p,
T);
1072 Real e = _idg_fp->e_from_p_T(
p,
T);
1073 const Real tol = REL_TOL_CONSISTENCY;
1081 ABS_TEST(_tab_ve_from_fp->T_from_v_e(
v, e), _idg_fp->T_from_v_e(
v, e),
tol);
1082 ABS_TEST(_tab_ve_from_fp->p_from_v_e(
v, e), _idg_fp->p_from_v_e(
v, e), 3 *
tol);
1083 ABS_TEST(_tab_ve_from_fp->h_from_v_e(
v, e), _idg_fp->h_from_v_e(
v, e),
tol);
1084 ABS_TEST(_tab_ve_from_fp->mu_from_v_e(
v, e), _idg_fp->mu_from_v_e(
v, e),
tol);
1085 ABS_TEST(_tab_ve_from_fp->k_from_v_e(
v, e), _idg_fp->k_from_v_e(
v, e),
tol);
1086 ABS_TEST(_tab_ve_from_fp->cp_from_v_e(
v, e), _idg_fp->cp_from_v_e(
v, e),
tol);
1087 ABS_TEST(_tab_ve_from_fp->cv_from_v_e(
v, e), _idg_fp->cv_from_v_e(
v, e),
tol);
1088 ABS_TEST(_tab_ve_from_fp->s_from_v_e(
v, e), _idg_fp->s_from_v_e(
v, e), 30 *
tol);
1093 Real deriv1, deriv2;
1096 _tab_ve_from_fp->T_from_v_e(
v, e, T1, deriv1, deriv2);
1097 Real T_0 = _tab_ve_from_fp->T_from_v_e(
v, e);
1098 Real T_1 = _tab_ve_from_fp->T_from_v_e(
v * (1 + pert), e);
1099 Real T_2 = _tab_ve_from_fp->T_from_v_e(
v, e * (1 + pert));
1100 REL_TEST(deriv1, (T_1 - T_0) / (
v * pert), 0.001);
1101 REL_TEST(deriv2, (T_2 - T_0) / (e * pert), 0.001);
1105 _tab_ve_from_fp->p_from_v_e(
v, e, p1, deriv1, deriv2);
1106 Real p_0 = _tab_ve_from_fp->p_from_v_e(
v, e);
1107 Real p_1 = _tab_ve_from_fp->p_from_v_e(
v * (1 + pert), e);
1108 Real p_2 = _tab_ve_from_fp->p_from_v_e(
v, e * (1 + pert));
1109 REL_TEST(deriv1, (p_1 - p_0) / (
v * pert), 0.001);
1110 REL_TEST(deriv2, (p_2 - p_0) / (e * pert), 0.001);
1119 EXPECT_EQ(_tab_pT_from_fp->fluidName(),
"co2");
1127 ABS_TEST(_tab_pT_from_fp->molarMass(), 44.0098e-3, REL_TOL_SAVED_VALUE);
1136 const Real p = 1.0e6;
1137 const Real T = 300.0;
1138 const Real tol = REL_TOL_CONSISTENCY;
1142 _tab_pT_from_fp->rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
1144 _tab_pT_from_fp->mu_from_p_T(
p,
T,
mu, dmu_dp, dmu_dT);
1145 Real e, de_dp, de_dT;
1146 _tab_pT_from_fp->e_from_p_T(
p,
T, e, de_dp, de_dT);
1149 Real rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT, e2, de2_dp, de2_dT;
1150 _tab_pT_from_fp->rho_mu_from_p_T(
p,
T, rho2, mu2);
1152 ABS_TEST(
rho, rho2,
tol);
1153 ABS_TEST(
mu, mu2,
tol);
1155 _tab_pT_from_fp->rho_mu_from_p_T(
p,
T, rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT);
1156 ABS_TEST(
rho, rho2,
tol);
1157 ABS_TEST(drho_dp, drho2_dp,
tol);
1158 ABS_TEST(drho_dT, drho2_dT,
tol);
1159 ABS_TEST(
mu, mu2,
tol);
1160 ABS_TEST(dmu_dp, dmu2_dp,
tol);
1161 ABS_TEST(dmu_dT, dmu2_dT,
tol);
1163 _tab_pT_from_fp->rho_e_from_p_T(
p,
T, rho2, drho2_dp, drho2_dT, e2, de2_dp, de2_dT);
1164 ABS_TEST(
rho, rho2,
tol);
1165 ABS_TEST(drho_dp, drho2_dp,
tol);
1166 ABS_TEST(drho_dT, drho2_dT,
tol);
1167 ABS_TEST(e, e2,
tol);
1168 ABS_TEST(de_dp, de2_dp,
tol);
1169 ABS_TEST(de_dT, de2_dT,
tol);
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
DualNumber< Real, DNDerivativeType, false > ADReal
Common class for single phase fluid properties.
KokkosSemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< MOOSE_AD_MAX_DOFS_PER_ELEM > > DNDerivativeType
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
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N >> &derivs, libMesh::dof_id_type index, Real value)
static const std::string k