https://mooseframework.inl.gov
Loading...
Searching...
No Matches
HenryGasConstantTest.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
10#include "gtest/gtest.h"
11
13
14#include <cmath>
15
16// Leave relative tolerance loose because the gold values were digitized from
17// a publication
18const double tol = 5.0e-2;
19
20// Test of the HenryGasConstant UserObject for different temperatures
21// This test is for FLiBe and FLiNaK and two different noble gases: helium and argon
22// Gold values were digitized from:
23// K. Lee, et al., "Semi-empirical model for Henry's law constant of noble gases in molten salt",
24// Scientific Reports (2024) 14:12847, https://doi.org/10.1038/s41598-024-60006-9.
25
27{
28
29 // helium/FLiBe tests
30 // Digitized value
31 double gold = 4.8e-8 / (1e-6 * 101325);
32 EXPECT_LT(std::abs(_henry_helium_flibe->henry(750.0) - gold), gold * tol);
33 // Console output value
34 gold = 4.71039676111e-07;
35 EXPECT_LT(std::abs(_henry_helium_flibe->henry(750.0) - gold), libMesh::TOLERANCE);
36 // Digitized value
37 gold = 8.5e-8 / (1e-6 * 101325);
38 EXPECT_LT(std::abs(_henry_helium_flibe->henry(900.0) - gold), gold * tol);
39 // Console output value
40 gold = 8.37095235109e-07;
41 EXPECT_LT(std::abs(_henry_helium_flibe->henry(900.0) - gold), libMesh::TOLERANCE);
42 // Digitized value
43 gold = 1.4e-7 / (1e-6 * 101325);
44 EXPECT_LT(std::abs(_henry_helium_flibe->henry(1100.0) - gold), gold * tol);
45 // Console output value
46 gold = 1.41185686539e-06;
47 EXPECT_LT(std::abs(_henry_helium_flibe->henry(1100.0) - gold), libMesh::TOLERANCE);
48
49 // argon/FLiBe tests
50 // Digitized value
51 gold = 4.3e-9 / (1e-6 * 101325);
52 EXPECT_LT(std::abs(_henry_argon_flibe->henry(750.0) - gold), gold * tol);
53 // Console output value
54 gold = 4.25906423879e-08;
55 EXPECT_LT(std::abs(_henry_argon_flibe->henry(750.0) - gold), libMesh::TOLERANCE);
56 // Digitized value
57 gold = 1.2e-8 / (1e-6 * 101325);
58 EXPECT_LT(std::abs(_henry_argon_flibe->henry(900.0) - gold), gold * tol);
59 // Console output value
60 gold = 1.20121536439e-07;
61 EXPECT_LT(std::abs(_henry_argon_flibe->henry(900.0) - gold), libMesh::TOLERANCE);
62 // Digitized value
63 gold = 3.1e-8 / (1e-6 * 101325);
64 EXPECT_LT(std::abs(_henry_argon_flibe->henry(1100.0) - gold), gold * tol);
65 // Console output value
66 gold = 3.08312118085e-07;
67 EXPECT_LT(std::abs(_henry_argon_flibe->henry(1100.0) - gold), libMesh::TOLERANCE);
68
69 // helium/FLiNaK tests
70 // Digitized value
71 gold = 4.1e-8 / (1e-6 * 101325);
72 EXPECT_LT(std::abs(_henry_helium_flinak->henry(750.0) - gold), gold * tol);
73 // Console output value
74 gold = 4.05786215977e-07;
75 EXPECT_LT(std::abs(_henry_helium_flinak->henry(750.0) - gold), libMesh::TOLERANCE);
76 // Digitized value
77 gold = 9.1e-8 / (1e-6 * 101325);
78 EXPECT_LT(std::abs(_henry_helium_flinak->henry(900.0) - gold), gold * tol);
79 // Console output value
80 gold = 8.95948557549e-07;
81 EXPECT_LT(std::abs(_henry_helium_flinak->henry(900.0) - gold), libMesh::TOLERANCE);
82 // Digitized value
83 gold = 1.9e-7 / (1e-6 * 101325);
84 EXPECT_LT(std::abs(_henry_helium_flinak->henry(1100.0) - gold), gold * tol);
85 // Console output value
86 gold = 1.84076108198e-06;
87 EXPECT_LT(std::abs(_henry_helium_flinak->henry(1100.0) - gold), libMesh::TOLERANCE);
88
89 // argon/FLiNaK tests
90 // Digitized value
91 gold = 2.5e-9 / (1e-6 * 101325);
92 EXPECT_LT(std::abs(_henry_argon_flinak->henry(750.0) - gold), gold * tol);
93 // Console output value
94 gold = 2.53473212744e-08;
95 EXPECT_LT(std::abs(_henry_argon_flinak->henry(750.0) - gold), libMesh::TOLERANCE);
96 // Digitized value
97 gold = 1.1e-8 / (1e-6 * 101325);
98 EXPECT_LT(std::abs(_henry_argon_flinak->henry(900.0) - gold), gold * tol);
99 // Console output value
100 gold = 1.05737661113e-07;
101 EXPECT_LT(std::abs(_henry_argon_flinak->henry(900.0) - gold), libMesh::TOLERANCE);
102 // Digitized value
103 gold = 4.0e-8 / (1e-6 * 101325);
104 EXPECT_LT(std::abs(_henry_argon_flinak->henry(1100.0) - gold), gold * tol);
105 // Console output value
106 gold = 3.87379501772e-07;
107 EXPECT_LT(std::abs(_henry_argon_flinak->henry(1100.0) - gold), libMesh::TOLERANCE);
108
109 // argon/Custom tests (custom is actually FLiNaK)
110 // Use a tighter tolerance because these should be identical
111 gold = _henry_argon_custom->henry(750.0);
112 EXPECT_LT(std::abs(_henry_argon_flinak->henry(750.0) - gold), gold * libMesh::TOLERANCE);
113 gold = _henry_argon_custom->henry(900.0);
114 EXPECT_LT(std::abs(_henry_argon_flinak->henry(900.0) - gold), gold * libMesh::TOLERANCE);
115 gold = _henry_argon_custom->henry(1100.0);
116 EXPECT_LT(std::abs(_henry_argon_flinak->henry(1100.0) - gold), gold * libMesh::TOLERANCE);
117}
TEST_F(HenryGasConstantTest, test)
const double tol
static constexpr Real TOLERANCE