https://mooseframework.inl.gov
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. More...
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, properties_constant_cv)
 Verify calculation of the fluid properties with a constant cv. More...
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, properties_function_cp)
 Verify calculation of the fluid properties with a function cp. More...
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, derivatives)
 Verify calculation of the derivatives by comparing with finite differences. More...
 
 TEST_F (TemperaturePressureFunctionFluidPropertiesTest, combined)
 Verify that the methods that return multiple properties in one call return identical values as the individual methods. More...
 

Function Documentation

◆ TEST_F() [1/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() [2/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 }
static const std::string cv
Definition: NS.h:126
const double T
const double tol
static const std::string density
Definition: NS.h:34
const double v
static const std::string cp
Definition: NS.h:125
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string alpha
Definition: NS.h:138
const Real p
T pow(T x, int e)

◆ TEST_F() [3/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 }
static const std::string cv
Definition: NS.h:126
const double T
const double tol
static const std::string density
Definition: NS.h:34
const double v
static const std::string cp
Definition: NS.h:125
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string alpha
Definition: NS.h:138
const Real p
T pow(T x, int e)

◆ TEST_F() [4/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 T
const double tol
const double v
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Real p

◆ TEST_F() [5/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 T
const double tol
const double rho
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Real p
const double mu