https://mooseframework.inl.gov
HydrogenFluidPropertiesTest.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 
16 TEST_F(HydrogenFluidPropertiesTest, fluidName) { EXPECT_EQ(_fp->fluidName(), "hydrogen"); }
17 
22 {
23  ABS_TEST(_fp->molarMass(), 2.01588e-3, REL_TOL_SAVED_VALUE);
24 }
25 
29 TEST_F(HydrogenFluidPropertiesTest, criticalProperties)
30 {
31  ABS_TEST(_fp->criticalPressure(), 1.315e6, REL_TOL_SAVED_VALUE);
32  ABS_TEST(_fp->criticalTemperature(), 33.19, REL_TOL_SAVED_VALUE);
33  ABS_TEST(_fp->criticalDensity(), 31.26226704, REL_TOL_SAVED_VALUE);
34 }
35 
39 TEST_F(HydrogenFluidPropertiesTest, triplePointProperties)
40 {
41  ABS_TEST(_fp->triplePointPressure(), 7.7e3, REL_TOL_SAVED_VALUE);
42  ABS_TEST(_fp->triplePointTemperature(), 13.952, REL_TOL_SAVED_VALUE);
43 }
44 
50 {
51  const Real tol = 10.0 * REL_TOL_EXTERNAL_VALUE;
52 
53  // Vapor pressure
54  REL_TEST(_fp->vaporPressure(14.0), 7.541e3, tol);
55  REL_TEST(_fp->vaporPressure(30.0), 0.80432e6, tol);
56 }
57 
64 {
65  const Real tol = REL_TOL_EXTERNAL_VALUE;
66  const std::vector<Real> hc = _fp->henryCoefficients();
67 
68  REL_TEST(hc[0], -4.73284, tol);
69  REL_TEST(hc[1], 6.08954, tol);
70  REL_TEST(hc[2], 6.06066, tol);
71 }
72 
79 TEST_F(HydrogenFluidPropertiesTest, thermalConductivity)
80 {
81  const Real tol = REL_TOL_EXTERNAL_VALUE;
82 
83  REL_TEST(_fp->k_from_rho_T(0.80844, 298.15), 186.97e-3, tol);
84  REL_TEST(_fp->k_from_rho_T(30.0, 35.0), 71.854e-3, tol);
85  REL_TEST(_fp->k_from_rho_T(15.879, 400.0), 248.6e-3, tol);
86 
87  REL_TEST(_fp->k_from_p_T(30.0e6, 400.0), 248.6e-3, tol);
88 }
89 
97 {
98  const Real tol = 10.0 * REL_TOL_EXTERNAL_VALUE;
99 
100  REL_TEST(_fp->mu_from_rho_T(0.0, 298.15), 8.8997e-6, tol);
101  REL_TEST(_fp->mu_from_rho_T(0.68911, 350.0), 9.9645e-6, tol);
102  REL_TEST(_fp->mu_from_rho_T(6.5764, 350.0), 1.0147e-5, tol);
103 
104  REL_TEST(_fp->mu_from_p_T(1.0e6, 350.0), 9.9645e-6, tol);
105  REL_TEST(_fp->mu_from_p_T(10.0e6, 350.0), 1.0147e-5, tol);
106 }
107 
113 {
114  // Pressure = 1 MPa, temperature = 280 K
115  Real p = 1.0e6;
116  Real T = 280.0;
117 
118  const Real tol = REL_TOL_EXTERNAL_VALUE;
119 
120  REL_TEST(_fp->rho_from_p_T(p, T), 0.86069, tol);
121  REL_TEST(_fp->h_from_p_T(p, T), 3676.1e3, tol);
122  REL_TEST(_fp->e_from_p_T(p, T), 2514.2e3, tol);
123  REL_TEST(_fp->s_from_p_T(p, T), 43.025e3, tol);
124  REL_TEST(_fp->cp_from_p_T(p, T), 14.26e3, tol);
125  REL_TEST(_fp->cv_from_p_T(p, T), 10.112e3, tol);
126  REL_TEST(_fp->c_from_p_T(p, T), 1283.9, tol);
127 
128  // Pressure = 1 MPa, temperature = 500 K
129  T = 500.0;
130  REL_TEST(_fp->rho_from_p_T(p, T), 0.48302, tol);
131  REL_TEST(_fp->h_from_p_T(p, T), 6856.5e3, tol);
132  REL_TEST(_fp->e_from_p_T(p, T), 4786.2e3, tol);
133  REL_TEST(_fp->s_from_p_T(p, T), 51.401e3, tol);
134  REL_TEST(_fp->cp_from_p_T(p, T), 14.52e3, tol);
135  REL_TEST(_fp->cv_from_p_T(p, T), 10.392e3, tol);
136  REL_TEST(_fp->c_from_p_T(p, T), 1704.1, tol);
137 
138  // Pressure = 10 MPa, temperature = 500 K
139  p = 10.0e6;
140  REL_TEST(_fp->rho_from_p_T(p, T), 4.6658, tol);
141  REL_TEST(_fp->h_from_p_T(p, T), 6923.4e3, tol);
142  REL_TEST(_fp->e_from_p_T(p, T), 4780.1e3, tol);
143  REL_TEST(_fp->s_from_p_T(p, T), 41.892e3, tol);
144  REL_TEST(_fp->cp_from_p_T(p, T), 14.584e3, tol);
145  REL_TEST(_fp->cv_from_p_T(p, T), 10.436e3, tol);
146  REL_TEST(_fp->c_from_p_T(p, T), 1764.3, tol);
147 }
148 
154 {
155  const Real tol = REL_TOL_DERIVATIVE;
156 
157  const Real p = 1.0e6;
158  Real T = 350.0;
159 
160  DERIV_TEST(_fp->rho_from_p_T, p, T, tol);
161  DERIV_TEST(_fp->mu_from_p_T, p, T, tol);
162  DERIV_TEST(_fp->e_from_p_T, p, T, tol);
163  DERIV_TEST(_fp->h_from_p_T, p, T, tol);
164  DERIV_TEST(_fp->k_from_p_T, p, T, tol);
165 
166  // Viscosity from density and temperature
167  T = 360.0;
168  const Real drho = 1.0e-4;
169  Real rho, drho_dp, drho_dT;
170  _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
171 
172  Real dmu_drho_fd =
173  (_fp->mu_from_rho_T(rho + drho, T) - _fp->mu_from_rho_T(rho - drho, T)) / (2.0 * drho);
174  Real mu = 0.0, dmu_drho = 0.0, dmu_dT = 0.0;
175  _fp->mu_from_rho_T(rho, T, drho_dT, mu, dmu_drho, dmu_dT);
176 
177  ABS_TEST(mu, _fp->mu_from_rho_T(rho, T), REL_TOL_CONSISTENCY);
178  REL_TEST(dmu_drho, dmu_drho_fd, tol);
179 
180  // To properly test derivative wrt temperature, use p and T and calculate density,
181  // so that the change in density wrt temperature is included
182  const Real dp = 1.0e1;
183  const Real dT = 1.0e-4;
184  _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
185  _fp->mu_from_rho_T(rho, T, drho_dT, mu, dmu_drho, dmu_dT);
186 
187  Real dmu_dT_fd = (_fp->mu_from_rho_T(_fp->rho_from_p_T(p, T + dT), T + dT) -
188  _fp->mu_from_rho_T(_fp->rho_from_p_T(p, T - dT), T - dT)) /
189  (2.0 * dT);
190 
191  REL_TEST(dmu_dT, dmu_dT_fd, tol);
192 
193  Real dmu_dp_fd = (_fp->mu_from_p_T(p + dp, T) - _fp->mu_from_p_T(p - dp, T)) / (2.0 * dp);
194  Real dmu_dp = 0.0;
195  _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
196 
197  ABS_TEST(mu, _fp->mu_from_p_T(p, T), REL_TOL_CONSISTENCY);
198  REL_TEST(dmu_dp, dmu_dp_fd, tol);
199 
200  _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
201  dmu_dT_fd = (_fp->mu_from_p_T(p, T + dT) - _fp->mu_from_p_T(p, T - dT)) / (2.0 * dT);
202 
203  REL_TEST(dmu_dT, dmu_dT_fd, tol);
204 }
205 
211 {
212  const Real p = 1.0e6;
213  const Real T = 300.0;
214  const Real tol = REL_TOL_CONSISTENCY;
215 
216  // Single property methods
217  Real rho, drho_dp, drho_dT;
218  _fp->rho_from_p_T(p, T, rho, drho_dp, drho_dT);
219  Real mu, dmu_dp, dmu_dT;
220  _fp->mu_from_p_T(p, T, mu, dmu_dp, dmu_dT);
221  Real e, de_dp, de_dT;
222  _fp->e_from_p_T(p, T, e, de_dp, de_dT);
223 
224  // Combined property methods
225  Real rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT, e2, de2_dp, de2_dT;
226  _fp->rho_mu_from_p_T(p, T, rho2, mu2);
227 
228  ABS_TEST(rho, rho2, tol);
229  ABS_TEST(mu, mu2, tol);
230 
231  _fp->rho_mu_from_p_T(p, T, rho2, drho2_dp, drho2_dT, mu2, dmu2_dp, dmu2_dT);
232  ABS_TEST(rho, rho2, tol);
233  ABS_TEST(drho_dp, drho2_dp, tol);
234  ABS_TEST(drho_dT, drho2_dT, tol);
235  ABS_TEST(mu, mu2, tol);
236  ABS_TEST(dmu_dp, dmu2_dp, tol);
237  ABS_TEST(dmu_dT, dmu2_dT, tol);
238 
239  _fp->rho_e_from_p_T(p, T, rho2, drho2_dp, drho2_dT, e2, de2_dp, de2_dT);
240  ABS_TEST(rho, rho2, tol);
241  ABS_TEST(drho_dp, drho2_dp, tol);
242  ABS_TEST(drho_dT, drho2_dT, tol);
243  ABS_TEST(e, e2, tol);
244  ABS_TEST(de_dp, de2_dp, tol);
245  ABS_TEST(de_dT, de2_dT, tol);
246 }
const double tol
static const std::string mu
Definition: NS.h:123
TEST_F(HydrogenFluidPropertiesTest, fluidName)
Test that the fluid name is correctly returned.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real