summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xhpmr.py204
1 files changed, 150 insertions, 54 deletions
diff --git a/hpmr.py b/hpmr.py
index 445d92c..3394487 100755
--- a/hpmr.py
+++ b/hpmr.py
@@ -12,7 +12,7 @@ cli_parser = argparse.ArgumentParser(
description="Program to investigate various homogenization techniques for TRISO compacts in the HP-MR benchmark."
)
-cli_parser.add_argument("-t","--technique",default="none",choices=["none","vwh","rpt","rrpt"],help="What homogenization technique to use (if any) [none/vwh/rpt/rrpt], default none")
+cli_parser.add_argument("-t","--technique",default="vwh",choices=["none","vwh","rpt","rrpt"],help="What homogenization technique to use (if any) [none/vwh/rpt/rrpt], default VWH")
cli_parser.add_argument("-r","--radius",default="0.8",type=float,help="Radius for RPT or RRPT homogenization [cm], default 0.5 cm. In the case of RRPT, this is the inner radius.")
cli_args = cli_parser.parse_args()
@@ -37,92 +37,186 @@ print("="*60)
# Composition Data for Radiation Transport Modeling " by US Dept. of Homeland Security and PNNL
# <https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev2.pdf>
mat_list = []
+mat_temp_global = 700.0
+mat_temp_fuel = 1000.0
-## Matrix Graphite ##
-mat_graphite_matrix = openmc.Material(name="Graphite Matrix (inside/outside)")
-mat_graphite_matrix.add_element("C",1.0)
-mat_graphite_matrix.add_nuclide("B10",0.3e-6)
+## 100s - Matrix Graphite ##
+mat_graphite_matrix = openmc.Material(100,name="Graphite Matrix (between pins)")
+mat_graphite_matrix.add_nuclide("C12",0.9999997)
+mat_graphite_matrix.add_nuclide("B10",3e-7)
mat_graphite_matrix.set_density("g/cc",1.806)
+mat_graphite_matrix.temperature = mat_temp_global
mat_list.append(mat_graphite_matrix)
-## TRISO Pins ##
-mat_triso_uco = openmc.Material(name="TRISO Pin UCO Kernel")
-mat_triso_uco.add_element("U",1.0,enrichment=19.95,enrichment_type="wo")
-mat_triso_uco.add_element("C",1.0)
-mat_triso_uco.add_element("O",1.0)
+## 200s - TRISO Pins ##
+mat_triso_uco = openmc.Material(200,name="TRISO Pin UCO Kernel")
+mat_triso_uco.add_nuclide("U235",0.068794)
+mat_triso_uco.add_nuclide("U238",0.27604)
+mat_triso_uco.add_nuclide("C12",0.13793)
+mat_triso_uco.add_nuclide("O16",0.51724)
mat_triso_uco.set_density("g/cc",10.744)
+mat_triso_uco.temperature = mat_temp_fuel
mat_triso_uco.add_s_alpha_beta("c_Graphite")
mat_list.append(mat_triso_uco)
-mat_triso_buffer = openmc.Material(name="TRISO Pin Buffer")
-mat_triso_buffer.add_element("C",1.0)
-mat_triso_buffer.add_s_alpha_beta("c_Graphite")
+mat_triso_buffer = openmc.Material(201,name="TRISO Pin Buffer")
+mat_triso_buffer.add_nuclide("C12",1.0)
mat_triso_buffer.set_density("g/cc",1.04)
+mat_triso_buffer.temperature = mat_temp_fuel
+mat_triso_buffer.add_s_alpha_beta("c_Graphite")
mat_list.append(mat_triso_buffer)
-mat_triso_pyc1 = openmc.Material(name="TRISO Pin PyC1")
-mat_triso_pyc1.add_element("C",1.0)
+mat_triso_pyc1 = openmc.Material(202,name="TRISO Pin PyC1")
+mat_triso_pyc1.add_nuclide("C12",1.0)
+mat_triso_pyc1.set_density("g/cc",1.882)
+mat_triso_pyc1.temperature = mat_temp_fuel
mat_triso_pyc1.add_s_alpha_beta("c_Graphite")
mat_list.append(mat_triso_pyc1)
-mat_triso_sic = openmc.Material(name="TRISO Pin SiC")
-mat_triso_sic.add_element("Si",1.0)
-mat_triso_sic.add_element("C",1.0)
-mat_triso_sic.add_s_alpha_beta("c_Graphite")
+mat_triso_sic = openmc.Material(203,name="TRISO Pin SiC")
+mat_triso_sic.add_nuclide("Si28",0.4611)
+mat_triso_sic.add_nuclide("Si29",0.0234)
+mat_triso_sic.add_nuclide("Si30",0.0154)
+mat_triso_sic.add_nuclide("C12",0.5)
mat_triso_sic.set_density("g/cc",3.171)
+mat_triso_sic.temperature = mat_temp_fuel
+mat_triso_sic.add_s_alpha_beta("c_SiC")
mat_list.append(mat_triso_sic)
-mat_triso_pyc2 = openmc.Material(name="TRISO Pin PyC2")
-mat_triso_pyc2.add_element("C",1.0)
+mat_triso_pyc2 = openmc.Material(204,name="TRISO Pin PyC2")
+mat_triso_pyc2.add_nuclide("C12",1.0)
mat_triso_pyc2.add_s_alpha_beta("c_Graphite")
+mat_triso_pyc2.temperature = mat_temp_fuel
mat_triso_pyc2.set_density("g/cc",1.882)
mat_list.append(mat_triso_pyc2)
-## Moderator Pins ##
-mat_mod_helium = openmc.Material(name="Moderator Pin Helium")
-mat_mod_helium.add_element("He",1.0)
+## 300 - Moderator Pins ##
+mat_mod_helium = openmc.Material(300,name="Moderator Pin Helium")
+mat_mod_helium.add_element("He4",1.0)
mat_mod_helium.set_density("g/cc",0.18e-3)
mat_list.append(mat_mod_helium)
-# Composition from PNNL-15870r2
-mat_mod_ss316 = openmc.Material(name="Moderator Pin SS316")
-mat_mod_ss316.add_element("C",0.000800,"wo")
-mat_mod_ss316.add_element("Mn",0.020000,"wo")
-mat_mod_ss316.add_element("P",0.000450,"wo")
-mat_mod_ss316.add_element("S",0.000300,"wo")
-mat_mod_ss316.add_element("Si",0.010000,"wo")
-mat_mod_ss316.add_element("Cr",0.170000,"wo")
-mat_mod_ss316.add_element("Ni",0.120000,"wo")
-mat_mod_ss316.add_element("Mo",0.025000,"wo")
-mat_mod_ss316.add_element("Fe",0.653450,"wo")
+# From the offical Serpent input
+mat_mod_ss316 = openmc.Material(301,name="Moderator Pin SS316")
+mat_mod_ss316.add_nuclide('C12', 0.001901)
+mat_mod_ss316.add_nuclide('Si28', 0.0092693)
+mat_mod_ss316.add_nuclide('Si29', 4.7251e-4)
+mat_mod_ss316.add_nuclide('Si30', 3.1166e-4)
+mat_mod_ss316.add_nuclide('P31', 4.1322e-4)
+mat_mod_ss316.add_nuclide('S32', 2.471e-4)
+mat_mod_ss316.add_nuclide('S33', 1.9511e-6)
+mat_mod_ss316.add_nuclide('S34', 1.1056e-5)
+mat_mod_ss316.add_nuclide('S36', 3.0016e-8)
+mat_mod_ss316.add_nuclide('Cr50', 7.9116e-3)
+mat_mod_ss316.add_nuclide('Cr52', 0.15257)
+mat_mod_ss316.add_nuclide('Cr53', 0.01730)
+mat_mod_ss316.add_nuclide('Cr54', 4.3063e-3)
+mat_mod_ss316.add_nuclide('Mn55', 0.01028)
+mat_mod_ss316.add_nuclide('Fe54', 0.039029)
+mat_mod_ss316.add_nuclide('Fe56', 0.61213)
+mat_mod_ss316.add_nuclide('Fe57', 0.014144)
+mat_mod_ss316.add_nuclide('Fe58', 1.3343e-3)
+mat_mod_ss316.add_nuclide('Ni58', 0.077516)
+mat_mod_ss316.add_nuclide('Ni60', 0.029859)
+mat_mod_ss316.add_nuclide('Ni61', 1.2981e-3)
+mat_mod_ss316.add_nuclide('Ni62', 4.1389e-3)
+mat_mod_ss316.add_nuclide('Ni64', 1.0544e-3)
+mat_mod_ss316.add_nuclide('Mo92', 2.1259e-3)
+mat_mod_ss316.add_nuclide('Mo94', 1.3299e-3)
+mat_mod_ss316.add_nuclide('Mo95', 2.303e-3)
+mat_mod_ss316.add_nuclide('Mo96', 2.4191e-3)
+mat_mod_ss316.add_nuclide('Mo97', 1.3903e-3)
+mat_mod_ss316.add_nuclide('Mo98', 3.5249e-3)
+mat_mod_ss316.add_nuclide('Mo100',1.4135e-3)
mat_mod_ss316.set_density("g/cc",7.67)
mat_list.append(mat_mod_ss316)
-mat_mod_yh2 = openmc.Material(name="Moderater Pin YH2")
-mat_mod_yh2.add_element("Y",1.0)
-mat_mod_yh2.add_element("H",2.0)
+# Official Serpent smeared composition
+mat_mod_ss316_he_smear = openmc.Material(302,name="Moderator Pin SS316/He Smear")
+mat_mod_ss316_he_smear.add_nuclide('He4',1.983e-5)
+mat_mod_ss316_he_smear.add_nuclide('C12',4.349e-5)
+mat_mod_ss316_he_smear.add_nuclide('Si28',2.121e-4)
+mat_mod_ss316_he_smear.add_nuclide('Si29',1.081e-5)
+mat_mod_ss316_he_smear.add_nuclide('Si30',7.13e-6)
+mat_mod_ss316_he_smear.add_nuclide('P31',9.454e-6)
+mat_mod_ss316_he_smear.add_nuclide('S32',5.653e-6)
+mat_mod_ss316_he_smear.add_nuclide('S33',4.464e-8)
+mat_mod_ss316_he_smear.add_nuclide('S34',2.53e-7)
+mat_mod_ss316_he_smear.add_nuclide('S36',6.867e-10)
+mat_mod_ss316_he_smear.add_nuclide('Cr50',1.81e-4)
+mat_mod_ss316_he_smear.add_nuclide('Cr52',3.491e-3)
+mat_mod_ss316_he_smear.add_nuclide('Cr53',3.958e-4)
+mat_mod_ss316_he_smear.add_nuclide('Cr54',9.852e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mn55',2.352e-4)
+mat_mod_ss316_he_smear.add_nuclide('Fe54',8.929e-4)
+mat_mod_ss316_he_smear.add_nuclide('Fe56',0.014)
+mat_mod_ss316_he_smear.add_nuclide('Fe57',3.236e-4)
+mat_mod_ss316_he_smear.add_nuclide('Fe58',3.053e-5)
+mat_mod_ss316_he_smear.add_nuclide('Ni58',1.773e-3)
+mat_mod_ss316_he_smear.add_nuclide('Ni60',6.831e-4)
+mat_mod_ss316_he_smear.add_nuclide('Ni61',2.97e-5)
+mat_mod_ss316_he_smear.add_nuclide('Ni62',9.469e-5)
+mat_mod_ss316_he_smear.add_nuclide('Ni64',2.412e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo92',4.864e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo94',3.043e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo95',5.269e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo96',5.535e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo97',3.181e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo98',8.065e-5)
+mat_mod_ss316_he_smear.add_nuclide('Mo100',3.234e-5)
+mat_mod_ss316_he_smear.set_density("atom/b-cm",0.0229)
+mat_mod_ss316_he_smear.temperature = mat_temp_global
+mat_list.add_nuclide(mat_mod_ss316_he_smear)
+
+# YH2 from official Serpent
+mat_mod_yh2 = openmc.Material(303,name="Moderater Pin YH2")
+mat_mod_yh2.add_nuclide("Y89",0.357142857)
+mat_mod_yh2.add_nuclide("H1",0.642857143)
+mat_mod_yh2.set_density("g/cc",4.085)
+mat_mod_yh2.temperature = mat_temp_global
mat_mod_yh2.add_s_alpha_beta("c_H_in_YH2")
mat_mod_yh2.add_s_alpha_beta("c_Y_in_YH2")
-mat_mod_yh2.set_density("g/cc",4.3)
mat_list.append(mat_mod_yh2)
-## Heat Pipes ##
+## 400s - Heat Pipes ##
mat_pipe_helium = openmc.Material(name="Heat Pipe Helium")
-mat_pipe_helium.add_element("He",1.0)
+mat_pipe_helium.add_element("He4",1.0)
mat_pipe_helium.set_density("g/cc",0.18e-3)
mat_list.append(mat_pipe_helium)
-# Composition from PNNL-15870r2
-mat_pipe_ss316 = openmc.Material(name="Heat Pipe SS316")
-mat_pipe_ss316.add_element("C",0.000800,"wo")
-mat_pipe_ss316.add_element("Mn",0.020000,"wo")
-mat_pipe_ss316.add_element("P",0.000450,"wo")
-mat_pipe_ss316.add_element("S",0.000300,"wo")
-mat_pipe_ss316.add_element("Si",0.010000,"wo")
-mat_pipe_ss316.add_element("Cr",0.170000,"wo")
-mat_pipe_ss316.add_element("Ni",0.120000,"wo")
-mat_pipe_ss316.add_element("Mo",0.025000,"wo")
-mat_pipe_ss316.add_element("Fe",0.653450,"wo")
+
+# From the offical Serpent input
+mat_pipe_ss316 = openmc.Material(401,name="Heat Pipe SS316")
+mat_pipe_ss316.add_nuclide('C12', 0.001901)
+mat_pipe_ss316.add_nuclide('Si28', 0.0092693)
+mat_pipe_ss316.add_nuclide('Si29', 4.7251e-4)
+mat_pipe_ss316.add_nuclide('Si30', 3.1166e-4)
+mat_pipe_ss316.add_nuclide('P31', 4.1322e-4)
+mat_pipe_ss316.add_nuclide('S32', 2.471e-4)
+mat_pipe_ss316.add_nuclide('S33', 1.9511e-6)
+mat_pipe_ss316.add_nuclide('S34', 1.1056e-5)
+mat_pipe_ss316.add_nuclide('S36', 3.0016e-8)
+mat_pipe_ss316.add_nuclide('Cr50', 7.9116e-3)
+mat_pipe_ss316.add_nuclide('Cr52', 0.15257)
+mat_pipe_ss316.add_nuclide('Cr53', 0.01730)
+mat_pipe_ss316.add_nuclide('Cr54', 4.3063e-3)
+mat_pipe_ss316.add_nuclide('Mn55', 0.01028)
+mat_pipe_ss316.add_nuclide('Fe54', 0.039029)
+mat_pipe_ss316.add_nuclide('Fe56', 0.61213)
+mat_pipe_ss316.add_nuclide('Fe57', 0.014144)
+mat_pipe_ss316.add_nuclide('Fe58', 1.3343e-3)
+mat_pipe_ss316.add_nuclide('Ni58', 0.077516)
+mat_pipe_ss316.add_nuclide('Ni60', 0.029859)
+mat_pipe_ss316.add_nuclide('Ni61', 1.2981e-3)
+mat_pipe_ss316.add_nuclide('Ni62', 4.1389e-3)
+mat_pipe_ss316.add_nuclide('Ni64', 1.0544e-3)
+mat_pipe_ss316.add_nuclide('Mo92', 2.1259e-3)
+mat_pipe_ss316.add_nuclide('Mo94', 1.3299e-3)
+mat_pipe_ss316.add_nuclide('Mo95', 2.303e-3)
+mat_pipe_ss316.add_nuclide('Mo96', 2.4191e-3)
+mat_pipe_ss316.add_nuclide('Mo97', 1.3903e-3)
+mat_pipe_ss316.add_nuclide('Mo98', 3.5249e-3)
+mat_pipe_ss316.add_nuclide('Mo100',1.4135e-3)
mat_pipe_ss316.set_density("g/cc",7.67)
mat_list.append(mat_pipe_ss316)
@@ -354,8 +448,8 @@ geometry = openmc.Geometry(geo_assembly_universe)
############ SETTINGS ############
settings = openmc.Settings()
settings.particles = 10000
-settings.batches = 100
-settings.inactive = 50
+settings.batches = 400
+settings.inactive = 80
# Source sampling
set_source_pts = []
@@ -373,6 +467,8 @@ set_entropy_mesh.dimension=(30,30,30)
settings.entropy_mesh=set_entropy_mesh
+settings.temperature = {'method': "interpolation"}
+
## Export ##
materials = openmc.Materials(mat_list)
materials.export_to_xml()