libra-toolbox 0.8__tar.gz → 0.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libra_toolbox-0.8/libra_toolbox.egg-info → libra_toolbox-0.9}/PKG-INFO +1 -1
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/_version.py +2 -2
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/compass.py +37 -13
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutronics/__init__.py +1 -0
- libra_toolbox-0.9/libra_toolbox/neutronics/materials.py +312 -0
- libra_toolbox-0.9/libra_toolbox/neutronics/vault.py +457 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9/libra_toolbox.egg-info}/PKG-INFO +1 -1
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox.egg-info/SOURCES.txt +6 -3
- libra_toolbox-0.9/test/neutron_detection/compass_test_data/events/waveforms/Data_CH4@DT5725_1360_Co60_0_872uCi_19Mar2014_20241213_4in.CSV +7 -0
- libra_toolbox-0.9/test/neutron_detection/compass_test_data/events/waveforms/Data_CH4@DT5725_1360_Co60_0_872uCi_19Mar2014_20241213_4in_1.CSV +2 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/test_compass.py +14 -11
- libra_toolbox-0.8/libra_toolbox/neutronics/vault.py +0 -773
- {libra_toolbox-0.8 → libra_toolbox-0.9}/.github/workflows/ci.yml +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/.github/workflows/python-publish.yml +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/.gitignore +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/.readthedocs.yaml +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/LICENSE +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/README.md +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/Makefile +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/_static/css/custom.css +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/_static/neutron_spectrum.png +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/_static/optimisation.png +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/_static/prt.png +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/_static/tritium_model.png +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/conf.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/diamond_detector.ipynb +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/fit_tritium_release.ipynb +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/foil_analysis/data.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/foil_analysis/main.ipynb +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/index.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/prt.ipynb +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/examples/tritium_model.ipynb +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/index.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/installation.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/make.bat +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/modules/index.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/modules/libra_toolbox.neutron_detection.activation_foils.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/modules/libra_toolbox.neutron_detection.diamond.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/modules/libra_toolbox.neutron_detection.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/modules/libra_toolbox.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/modules/libra_toolbox.tritium.rst +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/non_tested_examples/example.ipynb +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/docs/requirements.txt +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/__init__.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/__init__.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/__init__.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/calculations.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/calibration.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/explicit.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/settings.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/diamond/__init__.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/diamond/process_data.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/diamond/prt.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutronics/A325_generator_diamond.h5 +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutronics/neutron_source.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/tritium/__init__.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/tritium/lsc_measurements.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/tritium/model.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/tritium/plotting.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox.egg-info/dependency_links.txt +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox.egg-info/requires.txt +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox.egg-info/top_level.txt +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/pyproject.toml +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/setup.cfg +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement/data/Data_CH1@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement/data/Data_CH1@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2_1.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement/data/Hcompass_Co60_20241107.root +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement/run.info +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement_no_root/data/Data_CH1@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement_no_root/data/Data_CH1@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2_1.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/complete_measurement_no_root/run.info +0 -0
- {libra_toolbox-0.8/test/neutron_detection/compass_test_data/events → libra_toolbox-0.9/test/neutron_detection/compass_test_data/events/no_waveforms}/Data_CH15@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2.csv +0 -0
- {libra_toolbox-0.8/test/neutron_detection/compass_test_data/events → libra_toolbox-0.9/test/neutron_detection/compass_test_data/events/no_waveforms}/Data_CH5@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2.csv +0 -0
- {libra_toolbox-0.8/test/neutron_detection/compass_test_data/events → libra_toolbox-0.9/test/neutron_detection/compass_test_data/events/no_waveforms}/Data_CH5@V1725_292_Co60_0_872uCi_19Mar2014_250318_run2_1.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/times/Hcompass_Co60_20241107.root +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/compass_test_data/times/Hcompass_Zirconium_20250319.root +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/test_diamond.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutron_detection/test_prt.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutronics/test_neutron_source.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/neutronics/test_vault.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/TEST_CSV.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_conversion.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_libra_run_samples.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_libra_samples.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_lsc_file_with_labels.csv +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_lsc_reader.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_lsc_samples.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_mass_conservation.py +0 -0
- {libra_toolbox-0.8 → libra_toolbox-0.9}/test/tritium/test_plotting.py +0 -0
{libra_toolbox-0.8 → libra_toolbox-0.9}/libra_toolbox/neutron_detection/activation_foils/compass.py
RENAMED
|
@@ -938,26 +938,50 @@ def get_events(directory: str) -> Tuple[Dict[int, np.ndarray], Dict[int, np.ndar
|
|
|
938
938
|
time_values[ch] = np.empty(0)
|
|
939
939
|
energy_values[ch] = np.empty(0)
|
|
940
940
|
for i, filename in enumerate(data_filenames[ch]):
|
|
941
|
+
print(f'Processing File {i}')
|
|
942
|
+
|
|
943
|
+
csv_file_path = os.path.join(directory, filename)
|
|
941
944
|
|
|
942
945
|
# only the first file has a header
|
|
943
946
|
if i == 0:
|
|
944
|
-
|
|
947
|
+
# determine the column names
|
|
948
|
+
#
|
|
949
|
+
# Typically, setting the header argument to 1
|
|
950
|
+
# would normally work, but on some CoMPASS csv
|
|
951
|
+
# files, specifically those with waveform data,
|
|
952
|
+
# the column header has far fewer entries
|
|
953
|
+
# than the number of columns in the csv file.
|
|
954
|
+
# This is due to the "SAMPLES" column, which
|
|
955
|
+
# contains the waveform data actually being made
|
|
956
|
+
# up of the 7th-nth column of an n column csv file.
|
|
957
|
+
#
|
|
958
|
+
# So to mitigate this, we will read in the header
|
|
959
|
+
# manually and determine which column of
|
|
960
|
+
# the dataset to read in.
|
|
961
|
+
first_row_df = pd.read_csv(csv_file_path,
|
|
962
|
+
delimiter=";",
|
|
963
|
+
header=None,
|
|
964
|
+
nrows=1)
|
|
965
|
+
column_names = first_row_df.to_numpy()[0]
|
|
966
|
+
# Determine which column applies to time and energy
|
|
967
|
+
time_col = np.where(column_names=="TIMETAG")[0][0]
|
|
968
|
+
energy_col = np.where(column_names=="ENERGY")[0][0]
|
|
969
|
+
# First csv file has header, so skip it
|
|
970
|
+
# because we already read it in
|
|
971
|
+
skiprows=1
|
|
945
972
|
else:
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
973
|
+
# For subsequent csv files, don't skip any rows
|
|
974
|
+
# as there won't be any header
|
|
975
|
+
skiprows=0
|
|
949
976
|
|
|
950
|
-
df = pd.read_csv(csv_file_path, delimiter=";", header=header)
|
|
951
977
|
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
# apply the column names if not the first file
|
|
957
|
-
df.columns = names
|
|
978
|
+
df = pd.read_csv(csv_file_path,
|
|
979
|
+
delimiter=";",
|
|
980
|
+
header=None,
|
|
981
|
+
skiprows=skiprows)
|
|
958
982
|
|
|
959
|
-
time_data = df[
|
|
960
|
-
energy_data = df[
|
|
983
|
+
time_data = df[time_col].to_numpy()
|
|
984
|
+
energy_data = df[energy_col].to_numpy()
|
|
961
985
|
|
|
962
986
|
# Extract and append the energy data to the list
|
|
963
987
|
time_values[ch] = np.concatenate([time_values[ch], time_data])
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import openmc
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def get_exp_cllif_density(temp, LiCl_frac=0.695):
|
|
5
|
+
"""Calculates density of ClLiF [g/cc] from temperature in Celsius
|
|
6
|
+
and molar concentration of LiCl. Valid for 660 C - 1000 C.
|
|
7
|
+
Source:
|
|
8
|
+
G. J. Janz, R. P. T. Tomkins, C. B. Allen;
|
|
9
|
+
Molten Salts: Volume 4, Part 4
|
|
10
|
+
Mixed Halide Melts Electrical Conductance, Density, Viscosity, and Surface Tension Data.
|
|
11
|
+
J. Phys. Chem. Ref. Data 1 January 1979; 8 (1): 125–302.
|
|
12
|
+
https://doi.org/10.1063/1.555590
|
|
13
|
+
"""
|
|
14
|
+
temp = temp + 273.15 # Convert temperature from Celsius to Kelvin
|
|
15
|
+
C = LiCl_frac * 100 # Convert molar concentration to molar percent
|
|
16
|
+
|
|
17
|
+
a = 2.25621
|
|
18
|
+
b = -8.20475e-3
|
|
19
|
+
c = -4.09235e-4
|
|
20
|
+
d = 6.37250e-5
|
|
21
|
+
e = -2.52846e-7
|
|
22
|
+
f = 8.73570e-9
|
|
23
|
+
g = -5.11184e-10
|
|
24
|
+
|
|
25
|
+
rho = a + b * C + c * temp + d * C**2 + e * C**3 + f * temp * C**2 + g * C * temp**2
|
|
26
|
+
|
|
27
|
+
return rho
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# Define Materials
|
|
31
|
+
# Source: PNNL Materials Compendium April 2021
|
|
32
|
+
# PNNL-15870, Rev. 2
|
|
33
|
+
Inconel625 = openmc.Material(name="Inconel 625")
|
|
34
|
+
Inconel625.set_density("g/cm3", 8.44)
|
|
35
|
+
Inconel625.add_element("C", 0.000990, "wo")
|
|
36
|
+
Inconel625.add_element("Al", 0.003960, "wo")
|
|
37
|
+
Inconel625.add_element("Si", 0.004950, "wo")
|
|
38
|
+
Inconel625.add_element("P", 0.000148, "wo")
|
|
39
|
+
Inconel625.add_element("S", 0.000148, "wo")
|
|
40
|
+
Inconel625.add_element("Ti", 0.003960, "wo")
|
|
41
|
+
Inconel625.add_element("Cr", 0.215000, "wo")
|
|
42
|
+
Inconel625.add_element("Mn", 0.004950, "wo")
|
|
43
|
+
Inconel625.add_element("Fe", 0.049495, "wo")
|
|
44
|
+
Inconel625.add_element("Co", 0.009899, "wo")
|
|
45
|
+
Inconel625.add_element("Ni", 0.580000, "wo")
|
|
46
|
+
Inconel625.add_element("Nb", 0.036500, "wo")
|
|
47
|
+
Inconel625.add_element("Mo", 0.090000, "wo")
|
|
48
|
+
|
|
49
|
+
# alumina insulation
|
|
50
|
+
# data from https://precision-ceramics.com/materials/alumina/
|
|
51
|
+
Alumina = openmc.Material(name="Alumina insulation")
|
|
52
|
+
Alumina.add_element("O", 0.6, "ao")
|
|
53
|
+
Alumina.add_element("Al", 0.4, "ao")
|
|
54
|
+
Alumina.set_density("g/cm3", 3.98)
|
|
55
|
+
|
|
56
|
+
# epoxy
|
|
57
|
+
Epoxy = openmc.Material(name="Epoxy")
|
|
58
|
+
Epoxy.add_element("C", 0.70, "wo")
|
|
59
|
+
Epoxy.add_element("H", 0.08, "wo")
|
|
60
|
+
Epoxy.add_element("O", 0.15, "wo")
|
|
61
|
+
Epoxy.add_element("N", 0.07, "wo")
|
|
62
|
+
Epoxy.set_density("g/cm3", 1.2)
|
|
63
|
+
|
|
64
|
+
# helium @5psig
|
|
65
|
+
pressure = 34473.8 # Pa ~ 5 psig
|
|
66
|
+
temperature = 300 # K
|
|
67
|
+
R_he = 2077 # J/(kg*K)
|
|
68
|
+
density = pressure / (R_he * temperature) # in kg/cm^3
|
|
69
|
+
density *= 1 / 1000 # in g/cm^3
|
|
70
|
+
Helium = openmc.Material(name="Helium")
|
|
71
|
+
Helium.add_element("He", 1.0, "ao")
|
|
72
|
+
Helium.set_density("g/cm3", density)
|
|
73
|
+
|
|
74
|
+
# PbLi - eutectic - natural - pure
|
|
75
|
+
Pbli = openmc.Material(name="pbli")
|
|
76
|
+
Pbli.add_element("Pb", 84.2, "ao")
|
|
77
|
+
Pbli.add_element("Li", 15.2, "ao")
|
|
78
|
+
Pbli.set_density("g/cm3", 11)
|
|
79
|
+
|
|
80
|
+
# lif-licl - eutectic - natural - pure
|
|
81
|
+
Cllif = openmc.Material(name="ClLiF")
|
|
82
|
+
LiCl_frac = 0.695 # at.fr.
|
|
83
|
+
|
|
84
|
+
Cllif.add_element("F", 0.5 * (1 - LiCl_frac), "ao")
|
|
85
|
+
Cllif.add_element("Li", 1.0, "ao")
|
|
86
|
+
Cllif.add_element("Cl", 0.5 * LiCl_frac, "ao")
|
|
87
|
+
Cllif.set_density("g/cm3", get_exp_cllif_density(650)) # 69.5 at. % LiCL at 650 C
|
|
88
|
+
|
|
89
|
+
# lif-licl - eutectic - natural - EuF3 spiced
|
|
90
|
+
Spicyclif = openmc.Material(name="spicyclif")
|
|
91
|
+
Spicyclif.add_element("F", 0.15935, "wo")
|
|
92
|
+
Spicyclif.add_element("Li", 0.17857, "wo")
|
|
93
|
+
Spicyclif.add_element("Cl", 0.6340, "wo")
|
|
94
|
+
Spicyclif.add_element("Eu", 0.0279, "wo")
|
|
95
|
+
|
|
96
|
+
# FLiNaK - eutectic - natural - pure
|
|
97
|
+
Flinak = openmc.Material(name="flinak")
|
|
98
|
+
Flinak.add_element("F", 50, "ao")
|
|
99
|
+
Flinak.add_element("Li", 23.25, "ao")
|
|
100
|
+
Flinak.add_element("Na", 5.75, "ao")
|
|
101
|
+
Flinak.add_element("K", 21, "ao")
|
|
102
|
+
Flinak.set_density("g/cm3", 2.020)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# Aluminum : 2.6989 g/cm3
|
|
106
|
+
Aluminum = openmc.Material()
|
|
107
|
+
Aluminum.set_density("g/cm3", 2.6989)
|
|
108
|
+
Aluminum.add_nuclide("Al27", 1.0, "ao")
|
|
109
|
+
|
|
110
|
+
# Name: Air
|
|
111
|
+
# Density : 0.001205 g/cm3
|
|
112
|
+
# Reference: None
|
|
113
|
+
# Describes: All atmospheric, non-object chambers
|
|
114
|
+
Air = openmc.Material(name="Air")
|
|
115
|
+
Air.set_density("g/cm3", 0.001205)
|
|
116
|
+
Air.add_element("C", 0.00015, "ao")
|
|
117
|
+
Air.add_nuclide("N14", 0.784431, "ao")
|
|
118
|
+
Air.add_nuclide("O16", 0.210748, "ao")
|
|
119
|
+
Air.add_nuclide("Ar40", 0.004671, "ao")
|
|
120
|
+
|
|
121
|
+
# Name: Portland concrete
|
|
122
|
+
# Density: 2.3 g/cm3
|
|
123
|
+
# Reference: PNNL Report 15870 (Rev. 1)
|
|
124
|
+
# Describes: facility foundation, floors, walls
|
|
125
|
+
Concrete = openmc.Material()
|
|
126
|
+
Concrete.set_density("g/cm3", 2.3)
|
|
127
|
+
Concrete.add_nuclide("H1", 0.168759, "ao")
|
|
128
|
+
Concrete.add_element("C", 0.001416, "ao")
|
|
129
|
+
Concrete.add_nuclide("O16", 0.562524, "ao")
|
|
130
|
+
Concrete.add_nuclide("Na23", 0.011838, "ao")
|
|
131
|
+
Concrete.add_element("Mg", 0.0014, "ao")
|
|
132
|
+
Concrete.add_nuclide("Al27", 0.021354, "ao")
|
|
133
|
+
Concrete.add_element("Si", 0.204115, "ao")
|
|
134
|
+
Concrete.add_element("K", 0.005656, "ao")
|
|
135
|
+
Concrete.add_element("Ca", 0.018674, "ao")
|
|
136
|
+
Concrete.add_element("Fe", 0.004264, "ao")
|
|
137
|
+
|
|
138
|
+
# Name: Portland iron concrete
|
|
139
|
+
# Density: 3.8 g/cm3 as roughly measured using scale and assuming rectangular prism
|
|
140
|
+
# Reference: PNNL Report 15870 (Rev. 1)
|
|
141
|
+
# Describes: Potential new walls, shielding doors
|
|
142
|
+
IronConcrete = openmc.Material()
|
|
143
|
+
IronConcrete.set_density("g/cm3", 3.8)
|
|
144
|
+
IronConcrete.add_nuclide("H1", 0.135585, "ao")
|
|
145
|
+
IronConcrete.add_nuclide("O16", 0.150644, "ao")
|
|
146
|
+
IronConcrete.add_element("Mg", 0.002215, "ao")
|
|
147
|
+
IronConcrete.add_nuclide("Al27", 0.005065, "ao")
|
|
148
|
+
IronConcrete.add_element("Si", 0.013418, "ao")
|
|
149
|
+
IronConcrete.add_element("S", 0.000646, "ao")
|
|
150
|
+
IronConcrete.add_element("Ca", 0.040919, "ao")
|
|
151
|
+
IronConcrete.add_nuclide("Mn55", 0.002638, "ao")
|
|
152
|
+
IronConcrete.add_element("Fe", 0.648869, "ao")
|
|
153
|
+
|
|
154
|
+
#
|
|
155
|
+
# Lead : 11.34 g/cm3
|
|
156
|
+
Lead = openmc.Material()
|
|
157
|
+
Lead.set_density("g/cm3", 11.34)
|
|
158
|
+
Lead.add_nuclide("Pb204", 0.014, "ao")
|
|
159
|
+
Lead.add_nuclide("Pb206", 0.241, "ao")
|
|
160
|
+
Lead.add_nuclide("Pb207", 0.221, "ao")
|
|
161
|
+
Lead.add_nuclide("Pb208", 0.524, "ao")
|
|
162
|
+
|
|
163
|
+
# Name: Borated Polyethylene (5% B in via B4C additive)
|
|
164
|
+
# Density: 0.95 g/cm3
|
|
165
|
+
# Reference: PNNL Report 15870 (Rev. 1) but revised to make it 5 wt.% B
|
|
166
|
+
# Describes: General purpose neutron shielding
|
|
167
|
+
BPE = openmc.Material()
|
|
168
|
+
BPE.set_density("g/cm3", 0.95)
|
|
169
|
+
BPE.add_nuclide("H1", 0.1345, "wo")
|
|
170
|
+
BPE.add_element("B", 0.0500, "wo")
|
|
171
|
+
BPE.add_element("C", 0.8155, "wo")
|
|
172
|
+
|
|
173
|
+
# High Density Polyethylene
|
|
174
|
+
# Reference: PNNL Report 15870 (Rev. 1)
|
|
175
|
+
HDPE = openmc.Material(name="HDPE")
|
|
176
|
+
HDPE.set_density("g/cm3", 0.95)
|
|
177
|
+
HDPE.add_element("H", 0.143724, "wo")
|
|
178
|
+
HDPE.add_element("C", 0.856276, "wo")
|
|
179
|
+
|
|
180
|
+
# Soil material taken from PNNL Materials Compendium for Earth, U.S. Average
|
|
181
|
+
Soil = openmc.Material(name="Soil")
|
|
182
|
+
Soil.set_density("g/cm3", 1.52)
|
|
183
|
+
Soil.add_element("O", 0.670604, percent_type="ao")
|
|
184
|
+
Soil.add_element("Na", 0.005578, percent_type="ao")
|
|
185
|
+
Soil.add_element("Mg", 0.011432, percent_type="ao")
|
|
186
|
+
Soil.add_element("Al", 0.053073, percent_type="ao")
|
|
187
|
+
Soil.add_element("Si", 0.201665, percent_type="ao")
|
|
188
|
+
Soil.add_element("K", 0.007653, percent_type="ao")
|
|
189
|
+
Soil.add_element("Ca", 0.026664, percent_type="ao")
|
|
190
|
+
Soil.add_element("Ti", 0.002009, percent_type="ao")
|
|
191
|
+
Soil.add_element("Mn", 0.000272, percent_type="ao")
|
|
192
|
+
Soil.add_element("Fe", 0.021050, percent_type="ao")
|
|
193
|
+
|
|
194
|
+
# Brick material taken from "Brick, Common Silica" from the PNNL Materials Compendium
|
|
195
|
+
# PNNL-15870, Rev. 2
|
|
196
|
+
Brick = openmc.Material(name="Brick")
|
|
197
|
+
Brick.set_density("g/cm3", 1.8)
|
|
198
|
+
Brick.add_element("O", 0.663427, percent_type="ao")
|
|
199
|
+
Brick.add_element("Al", 0.003747, percent_type="ao")
|
|
200
|
+
Brick.add_element("Si", 0.323229, percent_type="ao")
|
|
201
|
+
Brick.add_element("Ca", 0.007063, percent_type="ao")
|
|
202
|
+
Brick.add_element("Fe", 0.002534, percent_type="ao")
|
|
203
|
+
|
|
204
|
+
RicoRad = openmc.Material(name="RicoRad")
|
|
205
|
+
RicoRad.set_density("g/cm3", 0.945)
|
|
206
|
+
RicoRad.add_element("H", 0.14, percent_type="wo")
|
|
207
|
+
RicoRad.add_element("C", 0.84, percent_type="wo")
|
|
208
|
+
RicoRad.add_element("B", 0.02, percent_type="wo")
|
|
209
|
+
|
|
210
|
+
# LIBRA Materials
|
|
211
|
+
Steel = openmc.Material(name="Steel")
|
|
212
|
+
Steel.add_element("C", 0.005, "wo")
|
|
213
|
+
Steel.add_element("Fe", 0.995, "wo")
|
|
214
|
+
Steel.set_density("g/cm3", 7.82)
|
|
215
|
+
|
|
216
|
+
# Stainless Steel 304 from PNNL Materials Compendium (PNNL-15870 Rev2)
|
|
217
|
+
SS304 = openmc.Material(name="Stainless Steel 304")
|
|
218
|
+
# SS304.temperature = 700 + 273
|
|
219
|
+
SS304.add_element("C", 0.000800, "wo")
|
|
220
|
+
SS304.add_element("Mn", 0.020000, "wo")
|
|
221
|
+
SS304.add_element("P", 0.000450, "wo")
|
|
222
|
+
SS304.add_element("S", 0.000300, "wo")
|
|
223
|
+
SS304.add_element("Si", 0.010000, "wo")
|
|
224
|
+
SS304.add_element("Cr", 0.190000, "wo")
|
|
225
|
+
SS304.add_element("Ni", 0.095000, "wo")
|
|
226
|
+
SS304.add_element("Fe", 0.683450, "wo")
|
|
227
|
+
SS304.set_density("g/cm3", 8.00)
|
|
228
|
+
|
|
229
|
+
# Using Microtherm with 1 a% Al2O3, 27 a% ZrO2, and 72 a% SiO2
|
|
230
|
+
# https://www.foundryservice.com/product/microporous-silica-insulating-boards-mintherm-microtherm-1925of-grades/
|
|
231
|
+
Firebrick = openmc.Material(name="Firebrick")
|
|
232
|
+
# Estimate average temperature of Firebrick to be around 300 C
|
|
233
|
+
# Firebrick.temperature = 273 + 300
|
|
234
|
+
Firebrick.add_element("Al", 0.004, "ao")
|
|
235
|
+
Firebrick.add_element("O", 0.666, "ao")
|
|
236
|
+
Firebrick.add_element("Si", 0.240, "ao")
|
|
237
|
+
Firebrick.add_element("Zr", 0.090, "ao")
|
|
238
|
+
Firebrick.set_density("g/cm3", 0.30)
|
|
239
|
+
|
|
240
|
+
# Using 2:1 atom ratio of LiF to BeF2, similar to values in
|
|
241
|
+
# Seifried, Jeffrey E., et al. ‘A General Approach for Determination of
|
|
242
|
+
# Acceptable FLiBe Impurity Concentrations in Fluoride-Salt Cooled High
|
|
243
|
+
# Temperature Reactors (FHRs)’. Nuclear Engineering and Design, vol. 343, 2019,
|
|
244
|
+
# pp. 85–95, https://doi.org10.1016/j.nucengdes.2018.09.038.
|
|
245
|
+
# Also using natural lithium enrichment (~7.5 a% Li6)
|
|
246
|
+
Flibe_nat = openmc.Material(name="Flibe_nat")
|
|
247
|
+
# Flibe_nat.temperature = 700 + 273
|
|
248
|
+
Flibe_nat.add_element("Be", 0.142857, "ao")
|
|
249
|
+
Flibe_nat.add_nuclide("Li6", 0.021685, "ao")
|
|
250
|
+
Flibe_nat.add_nuclide("Li7", 0.264029, "ao")
|
|
251
|
+
Flibe_nat.add_element("F", 0.571429, "ao")
|
|
252
|
+
Flibe_nat.set_density("g/cm3", 1.94)
|
|
253
|
+
|
|
254
|
+
Copper = openmc.Material(name="Copper")
|
|
255
|
+
# Estimate copper temperature to be around 100 C
|
|
256
|
+
# Copper.temperature = 100 + 273
|
|
257
|
+
Copper.add_element("Cu", 1.0, "ao")
|
|
258
|
+
Copper.set_density("g/cm3", 8.96)
|
|
259
|
+
|
|
260
|
+
Beryllium = openmc.Material(name="Beryllium")
|
|
261
|
+
# Estimate Be temperature to be around 100 C
|
|
262
|
+
# Be.temperature = 100 + 273
|
|
263
|
+
Beryllium.add_element("Be", 1.0, "ao")
|
|
264
|
+
Beryllium.set_density("g/cm3", 1.848)
|
|
265
|
+
|
|
266
|
+
# Heater
|
|
267
|
+
Heater_mat = openmc.Material(name="heater")
|
|
268
|
+
Heater_mat.add_element("C", 0.000990, "wo")
|
|
269
|
+
Heater_mat.add_element("Al", 0.003960, "wo")
|
|
270
|
+
Heater_mat.add_element("Si", 0.004950, "wo")
|
|
271
|
+
Heater_mat.add_element("P", 0.000148, "wo")
|
|
272
|
+
Heater_mat.add_element("S", 0.000148, "wo")
|
|
273
|
+
Heater_mat.add_element("Ti", 0.003960, "wo")
|
|
274
|
+
Heater_mat.add_element("Cr", 0.215000, "wo")
|
|
275
|
+
Heater_mat.add_element("Mn", 0.004950, "wo")
|
|
276
|
+
Heater_mat.add_element("Fe", 0.049495, "wo")
|
|
277
|
+
Heater_mat.add_element("Co", 0.009899, "wo")
|
|
278
|
+
Heater_mat.add_element("Ni", 0.580000, "wo")
|
|
279
|
+
Heater_mat.add_element("Nb", 0.036500, "wo")
|
|
280
|
+
Heater_mat.add_element("Mo", 0.090000, "wo")
|
|
281
|
+
Heater_mat.set_density("g/cm3", 2.44)
|
|
282
|
+
|
|
283
|
+
# Lithium-Lead
|
|
284
|
+
# Composition from certificate of analysis provided with Lithium-Lead from Camex
|
|
285
|
+
Lithium_lead = openmc.Material(name="Lithium Lead")
|
|
286
|
+
Lithium_lead.add_element("Pb", 0.993479, "wo")
|
|
287
|
+
Lithium_lead.add_element("Li", 0.0064, "wo")
|
|
288
|
+
Lithium_lead.add_element("Tl", 0.00002, "wo")
|
|
289
|
+
Lithium_lead.add_element("Zn", 0.000002, "wo")
|
|
290
|
+
Lithium_lead.add_element("Sn", 0.000002, "wo")
|
|
291
|
+
Lithium_lead.add_element("Sb", 0.000002, "wo")
|
|
292
|
+
Lithium_lead.add_element("Ni", 0.000001, "wo")
|
|
293
|
+
Lithium_lead.add_element("Cu", 0.000002, "wo")
|
|
294
|
+
Lithium_lead.add_element("Cd", 0.000002, "wo")
|
|
295
|
+
Lithium_lead.add_element("Bi", 0.00008, "wo")
|
|
296
|
+
Lithium_lead.add_element("As", 0.000002, "wo")
|
|
297
|
+
Lithium_lead.add_element("Ag", 0.000008, "wo")
|
|
298
|
+
Lithium_lead.set_density("g/cm3", 9.10411395) # Density at 600C
|
|
299
|
+
|
|
300
|
+
# 316L Stainless Steel
|
|
301
|
+
# Data from https://www.thyssenkrupp-materials.co.uk/stainless-steel-316l-14404.html
|
|
302
|
+
SS316L = openmc.Material(name="316L Steel")
|
|
303
|
+
SS316L.add_element("C", 0.0003, "wo")
|
|
304
|
+
SS316L.add_element("Si", 0.01, "wo")
|
|
305
|
+
SS316L.add_element("Mn", 0.02, "wo")
|
|
306
|
+
SS316L.add_element("P", 0.00045, "wo")
|
|
307
|
+
SS316L.add_element("S", 0.000151, "wo")
|
|
308
|
+
SS316L.add_element("Cr", 0.175, "wo")
|
|
309
|
+
SS316L.add_element("Ni", 0.115, "wo")
|
|
310
|
+
SS316L.add_element("N", 0.001, "wo")
|
|
311
|
+
SS316L.add_element("Mo", 0.00225, "wo")
|
|
312
|
+
SS316L.add_element("Fe", 0.655599, "wo")
|