https://mooseframework.inl.gov
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 
12 #include "HenryGasConstantTest.h"
13 
14 #include <cmath>
15 
16 // Leave relative tolerance loose because the gold values were digitized from
17 // a publication
18 const 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 }
static constexpr Real TOLERANCE
TEST_F(HenryGasConstantTest, test)
const double tol