https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Functions
TemperaturePressureFunctionFluidPropertiesTest.C File Reference

Go to the source code of this file.

Functions

 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, fluidName)
 Test that the fluid name is correctly returned.
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, properties_constant_cv)
 Verify calculation of the fluid properties with a constant cv.
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, properties_function_cp)
 Verify calculation of the fluid properties with a function cp.
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, derivatives)
 Verify calculation of the derivatives by comparing with finite differences.
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, combined)
 Verify that the methods that return multiple properties in one call return identical values as the individual methods.
 

Function Documentation

◆ TEST_F() [1/5]

TEST_F ( TemperaturePressureFunctionFluidPropertiesTest  ,
combined   
)

Verify that the methods that return multiple properties in one call return identical values as the individual methods.

Definition at line 292 of file TemperaturePressureFunctionFluidPropertiesTest.C.

293{
294 const Real p = 1.0e6;
295 const Real T = 300.0;
296 const Real tol = REL_TOL_CONSISTENCY;
297
298 // Single property methods
299 Real rho, drho_dp, drho_dT;
300 _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
301 Real mu, dmu_dp, dmu_dT;
302 _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
303 Real e, de_dp, de_dT;
304 _fp->e_from_p_T(p, T, e, de_dp, de_dT);
305
306 // Combined property methods
307 Real rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT, e2, de2_dp, de2_dT;
308 _fp->rho_mu_from_p_T(p, T, rho2, mu2);
309
310 ABS_TEST(rho, rho2, tol);
311 ABS_TEST(mu, mu2, tol);
312
313 _fp->rho_mu_from_p_T(p, T, rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT);
314 ABS_TEST(rho, rho2, tol);
315 ABS_TEST(drho_dp, drho2_dp, tol);
316 ABS_TEST(drho_dT, drho2_dT, tol);
317 ABS_TEST(mu, mu2, tol);
318 ABS_TEST(dmu_dp, dmu2_dp, tol);
319 ABS_TEST(dmu_dT, dmu2_dT, tol);
320
321 _fp->rho_e_from_p_T(p, T, rho2, drho2_dp, drho2_dT, e2, de2_dp, de2_dT);
322 ABS_TEST(rho, rho2, tol);
323 ABS_TEST(drho_dp, drho2_dp, tol);
324 ABS_TEST(drho_dT, drho2_dT, tol);
325 ABS_TEST(e, e2, tol);
326 ABS_TEST(de_dp, de2_dp, tol);
327 ABS_TEST(de_dT, de2_dT, tol);
328}
const double tol
const double mu
const Real p
const double rho
const double T
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ TEST_F() [2/5]

TEST_F ( TemperaturePressureFunctionFluidPropertiesTest  ,
derivatives   
)

Verify calculation of the derivatives by comparing with finite differences.

Definition at line 216 of file TemperaturePressureFunctionFluidPropertiesTest.C.

217{
218 const Real tol = REL_TOL_DERIVATIVE;
219 // Finite difference just does not get much
220 const Real large_tol = 1000 * tol;
221
222 // p, T and v, e are not consistent here but that's ok
223 Real p = 1.0E7;
224 Real T = 10.0;
225 Real e = 8.372E5;
226 Real v = 1.25E-3;
227
228 AD_DERIV_TEST(_fp->rho_from_p_T, p, T, tol);
229 DERIV_TEST(_fp->rho_from_p_T, p, T, tol);
230 DERIV_TEST(_fp->v_from_p_T, p, T, tol);
231 DERIV_TEST(_fp->mu_from_p_T, p, T, tol);
232 DERIV_TEST(_fp->e_from_p_T, p, T, tol);
233 DERIV_TEST(_fp->h_from_p_T, p, T, tol);
234 DERIV_TEST(_fp->k_from_p_T, p, T, tol);
235 DERIV_TEST(_fp->cp_from_p_T, p, T, 4 * large_tol); // uses finite differencing
236 DERIV_TEST(_fp->cv_from_p_T, p, T, tol);
237 DERIV_TEST(_fp->cp_from_v_e, v, e, large_tol); // uses finite differencing
238 DERIV_TEST(_fp->cv_from_v_e, v, e, tol);
239
240 e = 80150.0458189499477;
241 v = 0.00021621621621621621;
242
243 AD_DERIV_TEST(_fp_cp->rho_from_p_T, p, T, tol);
244 DERIV_TEST(_fp_cp->rho_from_p_T, p, T, tol);
245 DERIV_TEST(_fp_cp->v_from_p_T, p, T, tol);
246 DERIV_TEST(_fp_cp->mu_from_p_T, p, T, tol);
247 DERIV_TEST(_fp_cp->e_from_p_T, p, T, tol);
248 DERIV_TEST(_fp_cp->h_from_p_T, p, T, tol);
249 DERIV_TEST(_fp_cp->k_from_p_T, p, T, tol);
250 DERIV_TEST(_fp_cp->cp_from_p_T, p, T, large_tol); // uses finite differencing
251 DERIV_TEST(_fp_cp->cv_from_p_T, p, T, large_tol);
252 DERIV_TEST(_fp_cp->cp_from_v_e, v, e, large_tol); // uses finite differencing
253 DERIV_TEST(_fp_cp->cv_from_v_e, v, e, large_tol);
254
255 p = 5.0E7;
256 T = 190.0;
257 e = 1.6744E6;
258 v = 6.25E-4;
259
260 AD_DERIV_TEST(_fp->rho_from_p_T, p, T, tol);
261 DERIV_TEST(_fp->rho_from_p_T, p, T, tol);
262 DERIV_TEST(_fp->v_from_p_T, p, T, tol);
263 DERIV_TEST(_fp->mu_from_p_T, p, T, tol);
264 DERIV_TEST(_fp->e_from_p_T, p, T, tol);
265 DERIV_TEST(_fp->h_from_p_T, p, T, tol);
266 DERIV_TEST(_fp->k_from_p_T, p, T, tol);
267 DERIV_TEST(_fp->cp_from_p_T, p, T, 2 * large_tol); // uses finite differencing
268 DERIV_TEST(_fp->cv_from_p_T, p, T, tol);
269 DERIV_TEST(_fp->cp_from_v_e, v, e, 2 * large_tol); // uses finite differencing
270 DERIV_TEST(_fp->cv_from_v_e, v, e, tol);
271
272 e = 5374151.12329934724;
273 v = 5.5944055944055945e-05;
274
275 AD_DERIV_TEST(_fp_cp->rho_from_p_T, p, T, tol);
276 DERIV_TEST(_fp_cp->rho_from_p_T, p, T, tol);
277 DERIV_TEST(_fp_cp->v_from_p_T, p, T, tol);
278 DERIV_TEST(_fp_cp->mu_from_p_T, p, T, tol);
279 DERIV_TEST(_fp_cp->e_from_p_T, p, T, tol);
280 DERIV_TEST(_fp_cp->h_from_p_T, p, T, tol);
281 DERIV_TEST(_fp_cp->k_from_p_T, p, T, tol);
282 DERIV_TEST(_fp_cp->cp_from_p_T, p, T, large_tol); // uses finite differencing
283 DERIV_TEST(_fp_cp->cv_from_p_T, p, T, large_tol);
284 DERIV_TEST(_fp_cp->cp_from_v_e, v, e, large_tol); // uses finite differencing
285 DERIV_TEST(_fp_cp->cv_from_v_e, v, e, large_tol);
286}
const double v

◆ TEST_F() [3/5]

TEST_F ( TemperaturePressureFunctionFluidPropertiesTest  ,
fluidName   
)

Test that the fluid name is correctly returned.

Definition at line 16 of file TemperaturePressureFunctionFluidPropertiesTest.C.

17{
18 EXPECT_EQ(_fp->fluidName(), "TemperaturePressureFunctionFluidProperties");
19}

◆ TEST_F() [4/5]

TEST_F ( TemperaturePressureFunctionFluidPropertiesTest  ,
properties_constant_cv   
)

Verify calculation of the fluid properties with a constant cv.

Definition at line 24 of file TemperaturePressureFunctionFluidPropertiesTest.C.

25{
26 const Real cv = 4186.0;
27
28 const Real tol = REL_TOL_CONSISTENCY;
29 const Real large_tol = 100 * tol;
30
31 Real p = 8.56E7;
32 Real T = 200.0;
33 Real e = cv * T;
34 Real v = 1 / (1400 + 2.5 * T + 32e-5 * p);
35 Real h = cv * T + p / _fp->rho_from_p_T(p, T);
36
37 // See header for expressions
38 Real thermal_cond = 14 + 2e-2 * T + 3e-5 * p;
39 Real visc = 1e-3 + 1e-5 * T - 3e-9 * p;
40 Real density = 1 / v;
41 Real alpha = -1. / density * 2.5;
42 Real beta = -1. / density * 32e-5;
43 Real cp = cv + MathUtils::pow(alpha, 2) * T / density / beta;
44
45 // Testing the properties with a constant cv
46 ABS_TEST(_fp->cp_from_p_T(p, T), cp, tol);
47 ABS_TEST(_fp->cv_from_p_T(p, T), cv, tol);
48 ABS_TEST(_fp->k_from_p_T(p, T), thermal_cond, tol);
49 ABS_TEST(_fp->k_from_p_T(p, T), thermal_cond, tol);
50 ABS_TEST(_fp->rho_from_p_T(p, T), density, tol);
51 ABS_TEST(_fp->v_from_p_T(p, T), 1 / density, tol);
52 ABS_TEST(_fp->e_from_p_T(p, T), cv * T, tol);
53 ABS_TEST(_fp->e_from_p_rho(p, 1. / v),
54 cv * T,
55 large_tol); // uses a Newton solve for variable set inversion
56 ABS_TEST(_fp->mu_from_p_T(p, T), visc, tol);
57 ABS_TEST(_fp->h_from_p_T(p, T), h, tol);
58 ABS_TEST(_fp->cp_from_v_e(v, e), cp, tol);
59 ABS_TEST(_fp->cv_from_v_e(v, e), cv, tol);
60 ABS_TEST(_fp->k_from_v_e(v, e), thermal_cond, tol);
61 ABS_TEST(_fp->T_from_v_e(v, e), T, tol);
62 ABS_TEST(_fp->T_from_p_h(p, _fp->h_from_p_T(p, T)), T, tol);
63 ABS_TEST(_fp->T_from_p_rho(p, 1. / v), T, tol);
64 ABS_TEST(
65 _fp->p_from_v_e(v, e), p, 1.5 * large_tol); // uses a Newton solve for variable set inversion
66 ABS_TEST(_fp->mu_from_v_e(v, e), visc, tol);
67
68 p = 1.06841E9;
69 T = 300.0;
70 e = cv * T;
71 v = 1 / (1400 + 2.5 * T + 32e-5 * p);
72 h = cv * T + p / _fp->rho_from_p_T(p, T);
73
74 // See header for expressions
75 thermal_cond = 14 + 2e-2 * T + 3e-5 * p;
76 visc = 1e-3 + 1e-5 * T - 3e-9 * p;
77 density = 1 / v;
78 alpha = -1. / density * 2.5;
79 beta = -1. / density * 32e-5;
80 cp = cv + MathUtils::pow(alpha, 2) * T / density / beta;
81
82 ABS_TEST(_fp->cp_from_p_T(p, T), cp, tol);
83 ABS_TEST(_fp->cv_from_p_T(p, T), cv, tol);
84 ABS_TEST(_fp->k_from_p_T(p, T), thermal_cond, tol);
85 ABS_TEST(_fp->k_from_p_T(p, T), thermal_cond, tol);
86 ABS_TEST(_fp->rho_from_p_T(p, T), density, tol);
87 ABS_TEST(_fp->v_from_p_T(p, T), 1 / density, tol);
88 ABS_TEST(_fp->e_from_p_T(p, T), cv * T, tol);
89 ABS_TEST(_fp->e_from_p_rho(p, 1. / v),
90 cv * T,
91 large_tol); // uses a Newton solve for variable set inversion
92 ABS_TEST(_fp->mu_from_p_T(p, T), visc, tol);
93 ABS_TEST(_fp->h_from_p_T(p, T), h, tol);
94 ABS_TEST(_fp->cp_from_v_e(v, e), cp, tol);
95 ABS_TEST(_fp->cv_from_v_e(v, e), cv, tol);
96 ABS_TEST(_fp->k_from_v_e(v, e), thermal_cond, tol);
97 ABS_TEST(_fp->T_from_v_e(v, e), T, tol);
98 ABS_TEST(_fp->T_from_p_h(p, _fp->h_from_p_T(p, T)), T, tol);
99 ABS_TEST(_fp->T_from_p_rho(p, 1. / v), T, tol);
100 ABS_TEST(_fp->p_from_v_e(v, e), p, large_tol); // uses a Newton solve for variable set inversion
101 ABS_TEST(_fp->mu_from_v_e(v, e), visc, tol);
102}
T pow(T x, int e)

◆ TEST_F() [5/5]

TEST_F ( TemperaturePressureFunctionFluidPropertiesTest  ,
properties_function_cp   
)

Verify calculation of the fluid properties with a function cp.

Definition at line 107 of file TemperaturePressureFunctionFluidPropertiesTest.C.

108{
109 const Real tol = REL_TOL_CONSISTENCY;
110 // properties computed using numerical integral evaluation
111 const Real large_tol = 1e-8;
112 // properties using both numerical integration and Newton's method
113 const Real newton_tol = 1e-4;
114
115 {
116 Real p = 8.56E7;
117 Real T = 200.0;
118 Real cp = 3000. + 3 * T + 5e-4 * p;
119 Real e = 9220000.46051060781;
120 Real v = 1 / (1400 + 2.5 * T + 32e-5 * p);
121 Real h = e + p * v;
122
123 // See header for expressions
124 Real thermal_cond = 14 + 2e-2 * T + 3e-5 * p;
125 Real visc = 1e-3 + 1e-5 * T - 3e-9 * p;
126 Real density = 1 / v;
127 Real alpha = -1. / density * 2.5;
128 Real beta = -1. / density * 32e-5;
129 Real cv = cp - MathUtils::pow(alpha, 2) * T / density / beta;
130
131 ABS_TEST(_fp_cp->cp_from_p_T(p, T), cp, tol);
132 ABS_TEST(_fp_cp->cv_from_p_T(p, T), cv, tol);
133 ABS_TEST(_fp_cp->k_from_p_T(p, T), thermal_cond, tol);
134 ABS_TEST(_fp_cp->k_from_p_T(p, T), thermal_cond, tol);
135 ABS_TEST(_fp_cp->rho_from_p_T(p, T), density, tol);
136 ABS_TEST(_fp_cp->v_from_p_T(p, T), 1 / density, tol);
137 ABS_TEST(_fp_cp->e_from_p_T(p, T), e, tol);
138 ABS_TEST(_fp_cp->e_from_p_rho(p, 1. / v), e, 10 * large_tol);
139 ABS_TEST(_fp_cp->mu_from_p_T(p, T), visc, tol);
140 ABS_TEST(_fp_cp->h_from_p_T(p, T), h, tol);
141 ABS_TEST(_fp_cp->cp_from_v_e(v, e), cp, large_tol);
142 ABS_TEST(_fp_cp->cv_from_v_e(v, e), cv, large_tol);
143 ABS_TEST(_fp_cp->k_from_v_e(v, e), thermal_cond, large_tol);
144 ABS_TEST(_fp_cp->T_from_v_e(v, e), T, large_tol);
145 ABS_TEST(_fp_cp->T_from_p_h(p, _fp_cp->h_from_p_T(p, T)), T, large_tol);
146 ABS_TEST(_fp_cp->T_from_p_rho(p, 1. / v), T, large_tol);
147 ABS_TEST(_fp_cp->p_from_v_e(v, e), p, newton_tol);
148 ABS_TEST(_fp_cp->mu_from_v_e(v, e), visc, large_tol);
149 }
150
151 {
152 Real p = 1.06841E8;
153 Real T = 300.0;
154 Real cp = 3000. + 3 * T + 5e-4 * p;
155 Real e = 17061150.6748718396;
156 Real v = 1 / (1400 + 2.5 * T + 32e-5 * p);
157 Real h = e + p * v;
158
159 // See header for expressions
160 Real thermal_cond = 14 + 2e-2 * T + 3e-5 * p;
161 Real visc = 1e-3 + 1e-5 * T - 3e-9 * p;
162 Real density = 1 / v;
163 Real alpha = -1. / density * 2.5;
164 Real beta = -1. / density * 32e-5;
165 Real cv = cp - MathUtils::pow(alpha, 2) * T / density / beta;
166
167 ABS_TEST(_fp_cp->cp_from_p_T(p, T), cp, tol);
168 ABS_TEST(_fp_cp->cv_from_p_T(p, T), cv, tol);
169 ABS_TEST(_fp_cp->k_from_p_T(p, T), thermal_cond, tol);
170 ABS_TEST(_fp_cp->k_from_p_T(p, T), thermal_cond, tol);
171 ABS_TEST(_fp_cp->rho_from_p_T(p, T), density, tol);
172 ABS_TEST(_fp_cp->v_from_p_T(p, T), 1 / density, tol);
173 ABS_TEST(_fp_cp->e_from_p_T(p, T), e, tol);
174 ABS_TEST(_fp_cp->e_from_p_rho(p, 1. / v), e, tol);
175 ABS_TEST(_fp_cp->mu_from_p_T(p, T), visc, tol);
176 ABS_TEST(_fp_cp->h_from_p_T(p, T), h, tol);
177 ABS_TEST(_fp_cp->cp_from_v_e(v, e), cp, 1.5 * large_tol);
178 ABS_TEST(_fp_cp->cv_from_v_e(v, e), cv, 1.5 * large_tol);
179 ABS_TEST(_fp_cp->k_from_v_e(v, e), thermal_cond, large_tol);
180 ABS_TEST(_fp_cp->T_from_v_e(v, e), T, 1.5 * large_tol);
181 ABS_TEST(_fp_cp->T_from_p_h(p, _fp_cp->h_from_p_T(p, T)), T, large_tol);
182 ABS_TEST(_fp_cp->T_from_p_rho(p, 1. / v), T, large_tol);
183 ABS_TEST(_fp_cp->p_from_v_e(v, e), p, newton_tol);
184 ABS_TEST(_fp_cp->mu_from_v_e(v, e), visc, large_tol);
185 }
186
187 // Testing the incompressible fluid
188 {
189 Real p = 1.06841E8;
190 Real T = 300.0;
191 Real cp = 3000. + 3 * T + 5e-4 * p;
192 Real e = 17061150.0000000037;
193 Real v = 1. / 2000.;
194 Real h = e + p * v;
195 Real cv = cp;
196
197 // Some of these routines used to fail with cp_function input and incompressible fluid
198 ABS_TEST(_fp_incompressible->cp_from_p_T(p, T), cp, tol);
199 ABS_TEST(_fp_incompressible->cv_from_p_T(p, T), cv, tol);
200 ABS_TEST(_fp_incompressible->e_from_p_T(p, T), e, tol);
201 // ABS_TEST(_fp_incompressible->e_from_p_rho(p, 1. / v), e, tol); // T_from_p_rho cannot be done
202 // with incompressible
203 ABS_TEST(_fp_incompressible->T_from_p_h(p, _fp_incompressible->h_from_p_T(p, T)), T, large_tol);
204 ABS_TEST(_fp_incompressible->h_from_p_T(p, T), h, tol);
205
206 // Pressure derivative is not as accurate due to missing term in e(p,T) calculation
207 DERIV_TEST(_fp_incompressible->e_from_p_T, p, T, 1e-5);
208 DERIV_TEST(_fp_incompressible->h_from_p_T, p, T, 1e-5);
209 }
210}