227 _fs->massFractions(p, T,
Z, phase_state, fsp);
231 _fs->gasProperties(p, T, fsp);
232 ADReal gas_density = fsp[1].density;
233 ADReal gas_viscosity = fsp[1].viscosity;
234 ADReal gas_enthalpy = fsp[1].enthalpy;
237 _ncg_fp->rho_from_p_T(
Z * p, T) + _water_fp->rho_from_p_T(_water_fp->vaporPressure(T), T);
238 ADReal viscosity =
Z * _ncg_fp->mu_from_p_T(
Z * p, T) +
239 (1.0 -
Z) * _water_fp->mu_from_p_T(_water_fp->vaporPressure(T), T);
240 ADReal enthalpy =
Z * _ncg_fp->h_from_p_T(
Z * p, T) +
241 (1.0 -
Z) * _water_fp->h_from_p_T(_water_fp->vaporPressure(T), T);
243 ABS_TEST(gas_density,
density, 1.0e-10);
244 ABS_TEST(gas_viscosity, viscosity, 1.0e-10);
245 ABS_TEST(gas_enthalpy, enthalpy, 1.0e-10);
248 Real ddensity_dp = gas_density.derivatives()[_pidx];
249 Real ddensity_dT = gas_density.derivatives()[_Tidx];
250 Real ddensity_dZ = gas_density.derivatives()[_Zidx];
251 Real dviscosity_dp = gas_viscosity.derivatives()[_pidx];
252 Real dviscosity_dT = gas_viscosity.derivatives()[_Tidx];
253 Real dviscosity_dZ = gas_viscosity.derivatives()[_Zidx];
254 Real denthalpy_dp = gas_enthalpy.derivatives()[_pidx];
255 Real denthalpy_dT = gas_enthalpy.derivatives()[_Tidx];
256 Real denthalpy_dZ = gas_enthalpy.derivatives()[_Zidx];
258 const Real dp = 1.0e-1;
259 _fs->gasProperties(p + dp, T, fsp);
260 ADReal rho1 = fsp[1].density;
261 ADReal mu1 = fsp[1].viscosity;
262 ADReal h1 = fsp[1].enthalpy;
264 _fs->gasProperties(p - dp, T, fsp);
265 ADReal rho2 = fsp[1].density;
266 ADReal mu2 = fsp[1].viscosity;
267 ADReal h2 = fsp[1].enthalpy;
269 REL_TEST(ddensity_dp, (rho1 - rho2).
value() / (2.0 * dp), 1.0e-7);
270 REL_TEST(dviscosity_dp, (mu1 - mu2).
value() / (2.0 * dp), 1.0e-7);
271 REL_TEST(denthalpy_dp, (h1 - h2).
value() / (2.0 * dp), 5.0e-7);
273 const Real dT = 1.0e-3;
274 _fs->gasProperties(p, T + dT, fsp);
275 rho1 = fsp[1].density;
276 mu1 = fsp[1].viscosity;
277 h1 = fsp[1].enthalpy;
279 _fs->gasProperties(p, T - dT, fsp);
280 rho2 = fsp[1].density;
281 mu2 = fsp[1].viscosity;
282 h2 = fsp[1].enthalpy;
284 REL_TEST(ddensity_dT, (rho1 - rho2).
value() / (2.0 * dT), 1.0e-7);
285 REL_TEST(dviscosity_dT, (mu1 - mu2).
value() / (2.0 * dT), 1.0e-8);
286 REL_TEST(denthalpy_dT, (h1 - h2).
value() / (2.0 * dT), 1.0e-8);
289 const Real dZ = 1.0e-8;
290 _fs->massFractions(p, T,
Z + dZ, phase_state, fsp);
291 _fs->gasProperties(p, T, fsp);
292 rho1 = fsp[1].density;
293 mu1 = fsp[1].viscosity;
294 h1 = fsp[1].enthalpy;
296 _fs->massFractions(p, T,
Z - dZ, phase_state, fsp);
297 _fs->gasProperties(p, T, fsp);
298 rho2 = fsp[1].density;
299 mu2 = fsp[1].viscosity;
300 h2 = fsp[1].enthalpy;
302 REL_TEST(ddensity_dZ, (rho1 - rho2).
value() / (2.0 * dZ), 5.0e-8);
303 REL_TEST(dviscosity_dZ, (mu1 - mu2).
value() / (2.0 * dZ), 5.0e-8);
304 REL_TEST(denthalpy_dZ, (h1 - h2).
value() / (2.0 * dZ), 1.0e-8);
311 _fs->massFractions(p, T,
Z, phase_state, fsp);
314 _fs->gasProperties(p, T, fsp);
315 gas_density = fsp[1].density;
316 gas_viscosity = fsp[1].viscosity;
317 gas_enthalpy = fsp[1].enthalpy;
318 ddensity_dp = gas_density.derivatives()[_pidx];
319 ddensity_dT = gas_density.derivatives()[_Tidx];
320 ddensity_dZ = gas_density.derivatives()[_Zidx];
321 dviscosity_dp = gas_viscosity.derivatives()[_pidx];
322 dviscosity_dT = gas_viscosity.derivatives()[_Tidx];
323 dviscosity_dZ = gas_viscosity.derivatives()[_Zidx];
324 denthalpy_dp = gas_enthalpy.derivatives()[_pidx];
325 denthalpy_dT = gas_enthalpy.derivatives()[_Tidx];
326 denthalpy_dZ = gas_enthalpy.derivatives()[_Zidx];
328 _fs->massFractions(p + dp, T,
Z, phase_state, fsp);
329 _fs->gasProperties(p + dp, T, fsp);
330 rho1 = fsp[1].density;
331 mu1 = fsp[1].viscosity;
332 h1 = fsp[1].enthalpy;
334 _fs->massFractions(p - dp, T,
Z, phase_state, fsp);
335 _fs->gasProperties(p - dp, T, fsp);
336 rho2 = fsp[1].density;
337 mu2 = fsp[1].viscosity;
338 h2 = fsp[1].enthalpy;
340 REL_TEST(ddensity_dp, (rho1 - rho2).
value() / (2.0 * dp), 1.0e-7);
341 REL_TEST(dviscosity_dp, (mu1 - mu2).
value() / (2.0 * dp), 1.0e-7);
342 REL_TEST(denthalpy_dp, (h1 - h2).
value() / (2.0 * dp), 1.0e-7);
344 _fs->massFractions(p, T + dT,
Z, phase_state, fsp);
345 _fs->gasProperties(p, T + dT, fsp);
346 rho1 = fsp[1].density;
347 mu1 = fsp[1].viscosity;
348 h1 = fsp[1].enthalpy;
350 _fs->massFractions(p, T - dT,
Z, phase_state, fsp);
351 _fs->gasProperties(p, T - dT, fsp);
352 rho2 = fsp[1].density;
353 mu2 = fsp[1].viscosity;
354 h2 = fsp[1].enthalpy;
356 REL_TEST(ddensity_dT, (rho1 - rho2).
value() / (2.0 * dT), 1.0e-7);
357 REL_TEST(dviscosity_dT, (mu1 - mu2).
value() / (2.0 * dT), 1.0e-8);
358 REL_TEST(denthalpy_dT, (h1 - h2).
value() / (2.0 * dT), 1.0e-8);
360 _fs->massFractions(p, T,
Z + dZ, phase_state, fsp);
361 _fs->gasProperties(p, T, fsp);
362 rho1 = fsp[1].density;
363 mu1 = fsp[1].viscosity;
364 h1 = fsp[1].enthalpy;
366 _fs->massFractions(p, T,
Z - dZ, phase_state, fsp);
367 _fs->gasProperties(p, T, fsp);
368 rho2 = fsp[1].density;
369 mu2 = fsp[1].viscosity;
370 h2 = fsp[1].enthalpy;
372 ABS_TEST(ddensity_dZ, (rho1 - rho2).
value() / (2.0 * dZ), 1.0e-8);
373 ABS_TEST(dviscosity_dT, (mu1 - mu2).
value() / (2.0 * dZ), 1.0e-7);
374 ABS_TEST(denthalpy_dZ, (h1 - h2).
value() / (2.0 * dZ), 1.0e-8);
static const std::string density
DualNumber< Real, DNDerivativeType, true > ADReal
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
AD data structure to pass calculated thermophysical properties.
FluidStatePhaseEnum
Phase state enum.
static const std::string Z
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)