From 97f7f1ae5abe14cafabca79efb62e11b2529224e Mon Sep 17 00:00:00 2001 From: FusionSandwich <145234893+FusionSandwich@users.noreply.github.com> Date: Mon, 15 Jul 2024 01:00:51 -0500 Subject: [PATCH 1/4] Add files via upload This method uses Paul's suggestion. The potential downside is that you now rely on the initial and output scripts. Depending on how we want the overall workflow to be, I think will influence which works better. --- pureMaterials/PureFusionMaterials_libv1.json | 274 +++++++++++++++---- pureMaterials/mixPureFusionMaterials.py | 84 ++++-- 2 files changed, 282 insertions(+), 76 deletions(-) diff --git a/pureMaterials/PureFusionMaterials_libv1.json b/pureMaterials/PureFusionMaterials_libv1.json index 3182f91..23b604a 100644 --- a/pureMaterials/PureFusionMaterials_libv1.json +++ b/pureMaterials/PureFusionMaterials_libv1.json @@ -17,7 +17,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 21, + "mat_number" : 25, "name" : "AirSTP" } }, @@ -57,7 +57,7 @@ "mass" : 100.0010, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 46, + "mat_number" : 54, "name" : "Aluminum6061" } }, @@ -73,7 +73,7 @@ "mass" : 101.9612915890446, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 49, + "mat_number" : 57, "name" : "AluminumOxide" } }, @@ -106,7 +106,7 @@ "mass" : 100.0, "metadata" : { "citation" : "KluehJNM_2000", - "mat_number" : 4, + "mat_number" : 8, "name" : "BMF82H" } }, @@ -119,7 +119,7 @@ "mass" : 1.0, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 32, + "mat_number" : 36, "name" : "Be" } }, @@ -137,7 +137,7 @@ "mass" : 156.0129407222201, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 33, + "mat_number" : 37, "name" : "Be12Ti" } }, @@ -152,7 +152,7 @@ "mass" : 159.0876616564450, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 34, + "mat_number" : 38, "name" : "Be12V" } }, @@ -166,7 +166,7 @@ "mass" : 1.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 26, + "mat_number" : 30, "name" : "C" } }, @@ -208,7 +208,7 @@ "mass" : 99.99990000000001, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 22, + "mat_number" : 26, "name" : "Concrete" } }, @@ -241,7 +241,7 @@ "mass" : 100.0, "metadata" : { "citation" : "JawadORNL_2005 and ???", - "mat_number" : 15, + "mat_number" : 19, "name" : "Cr3FS" } }, @@ -255,7 +255,7 @@ "mass" : 1.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 28, + "mat_number" : 32, "name" : "Cu" } }, @@ -271,7 +271,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 17, + "mat_number" : 21, "name" : "D2O" } }, @@ -303,7 +303,7 @@ "mass" : 100.0, "metadata" : { "citation" : "MergiaJNM_2008", - "mat_number" : 3, + "mat_number" : 7, "name" : "EUROFER97" } }, @@ -331,7 +331,7 @@ "mass" : 100.0, "metadata" : { "citation" : "FESS-FNSF and ARIES GFFpolyimide", - "mat_number" : 10, + "mat_number" : 14, "name" : "Eins" } }, @@ -350,7 +350,7 @@ "mass" : 62.06792616656458, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 48, + "mat_number" : 56, "name" : "EthyleneGlycol" } }, @@ -366,7 +366,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 24, + "mat_number" : 28, "name" : "Fe" } }, @@ -382,7 +382,7 @@ "mass" : 97.76406288307290, "metadata" : { "citation" : "SohalINLEXT-10-18297_2013", - "mat_number" : 40, + "mat_number" : 48, "name" : "FlibeLi60.0" } }, @@ -398,7 +398,7 @@ "mass" : 98.88586892346537, "metadata" : { "citation" : "SohalINLEXT-10-18297_2013", - "mat_number" : 39, + "mat_number" : 47, "name" : "FlibeNat" } }, @@ -439,7 +439,7 @@ "mass" : 100.0, "metadata" : { "citation" : "KluehJNM_2000 and SmithBCSSANLvol2_1984", - "mat_number" : 2, + "mat_number" : 6, "name" : "HT9" } }, @@ -453,7 +453,7 @@ "mass" : 100.0, "metadata" : { "citation" : "WidodoJoPCS_2018 and pnnl-15870rev1", - "mat_number" : 18, + "mat_number" : 22, "name" : "HeNIST" } }, @@ -467,7 +467,7 @@ "mass" : 100.0, "metadata" : { "citation" : "WidodoJoPCS_2018", - "mat_number" : 19, + "mat_number" : 23, "name" : "HeT410P1" } }, @@ -481,7 +481,7 @@ "mass" : 100.0, "metadata" : { "citation" : "WidodoJoPCS_2018", - "mat_number" : 20, + "mat_number" : 24, "name" : "HeT410P80" } }, @@ -536,7 +536,7 @@ "mass" : 99.99999999999999, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 52, + "mat_number" : 60, "name" : "Inconel718" } }, @@ -583,7 +583,7 @@ "mass" : 100.0, "metadata" : { "citation" : "ElGuebalyARIESCSFTI_2006", - "mat_number" : 12, + "mat_number" : 16, "name" : "JK2LBSteel" } }, @@ -597,7 +597,7 @@ "mass" : 100.0, "metadata" : { "citation" : "CRChandbook64B117", - "mat_number" : 14, + "mat_number" : 18, "name" : "LHe" } }, @@ -615,14 +615,102 @@ "Ti49" : 0.02437857516327805, "Ti50" : 0.02381755730201424 }, - "density" : 3.420, + "density" : 3.430, "mass" : 108.6232258688177, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 38, + "mat_number" : 45, "name" : "Li2TiO3Li60.0" } }, + "Li2TiO3_atom_oxygen" : { + "atoms_per_molecule" : 6.0, + "comp" : { + "Li6" : 0.06939935402611946, + "Li7" : 0.04626623601741299, + "O16" : 0.2702266418097352, + "O17" : 0.09007554726991172, + "O18" : 0.09007554726991174, + "Ti46" : 0.03436978192307137, + "Ti47" : 0.03166921341246003, + "Ti48" : 0.3204555322715177, + "Ti49" : 0.02400731001603293, + "Ti50" : 0.02345483598382698 + }, + "density" : 3.430, + "mass" : 110.3030483028802, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 46, + "name" : "Li2TiO3_atom_oxygen" + } + }, + "Li2TiO3_mass_oxygen" : { + "atoms_per_molecule" : -1.0, + "comp" : { + "Li6" : 0.20, + "Li7" : 0.1333333333333334, + "O16" : 0.30, + "O17" : 0.10, + "O18" : 0.10, + "Ti46" : 0.01320015876139613, + "Ti47" : 0.01216297053698766, + "Ti48" : 0.1230750870465147, + "Ti49" : 0.009220317555549135, + "Ti50" : 0.009008132766219068 + }, + "density" : 3.430, + "mass" : 6.0, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 43, + "name" : "Li2TiO3_mass_oxygen" + } + }, + "Li2TiO3mass" : { + "atoms_per_molecule" : -1.0, + "comp" : { + "Li6" : 0.02192821418067742, + "Li7" : 0.3114051191526560, + "O16" : 0.4986450137527346, + "O17" : 0.0002018721976869510, + "O18" : 0.001153114049578477, + "Ti46" : 0.01320015876139613, + "Ti47" : 0.01216297053698766, + "Ti48" : 0.1230750870465147, + "Ti49" : 0.009220317555549135, + "Ti50" : 0.009008132766219068 + }, + "density" : 3.430, + "mass" : 6.0, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 2, + "name" : "Li2TiO3mass" + } + }, + "Li2TiO3mass60" : { + "atoms_per_molecule" : -1.0, + "comp" : { + "Li6" : 0.20, + "Li7" : 0.1333333333333334, + "O16" : 0.4986450137527346, + "O17" : 0.0002018721976869510, + "O18" : 0.001153114049578477, + "Ti46" : 0.01320015876139613, + "Ti47" : 0.01216297053698766, + "Ti48" : 0.1230750870465147, + "Ti49" : 0.009220317555549135, + "Ti50" : 0.009008132766219068 + }, + "density" : 3.430, + "mass" : 6.0, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 3, + "name" : "Li2TiO3mass60" + } + }, "Li2TiO3nat" : { "atoms_per_molecule" : 6.0, "comp" : { @@ -641,7 +729,7 @@ "mass" : 109.7450319092101, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 36, + "mat_number" : 40, "name" : "Li2TiO3nat" } }, @@ -661,10 +749,90 @@ "mass" : 117.5996527345346, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 37, + "mat_number" : 41, "name" : "Li4SiO4Li60.0" } }, + "Li4SiO4_atom_oxygen" : { + "atoms_per_molecule" : 9.0, + "comp" : { + "Li6" : 0.1277536315866624, + "Li7" : 0.08516908772444161, + "O16" : 0.3316307029761771, + "O17" : 0.1105435676587257, + "O18" : 0.1105435676587257, + "Si28" : 0.2152977861864770, + "Si29" : 0.01132806567827463, + "Si30" : 0.007733590530516008 + }, + "density" : 2.40, + "mass" : 119.8394159799513, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 42, + "name" : "Li4SiO4_atom_oxygen" + } + }, + "Li4SiO4_mass_oxygen" : { + "atoms_per_molecule" : -1.0, + "comp" : { + "Li6" : 0.2666666666666667, + "Li7" : 0.1777777777777778, + "O16" : 0.2666666666666667, + "O17" : 0.08888888888888891, + "O18" : 0.08888888888888891, + "Si28" : 0.1020738742098361, + "Si29" : 0.005370698749700357, + "Si30" : 0.003666538151574611 + }, + "density" : 2.40, + "mass" : 9.0, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 44, + "name" : "Li4SiO4_mass_oxygen" + } + }, + "Li4SiO4mass" : { + "atoms_per_molecule" : -1.0, + "comp" : { + "Li6" : 0.02923761890756990, + "Li7" : 0.4152068255368745, + "O16" : 0.4432400122246530, + "O17" : 0.0001794419534995120, + "O18" : 0.001024990266291979, + "Si28" : 0.1020738742098361, + "Si29" : 0.005370698749700357, + "Si30" : 0.003666538151574611 + }, + "density" : 2.40, + "mass" : 9.0, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 4, + "name" : "Li4SiO4mass" + } + }, + "Li4SiO4mass60" : { + "atoms_per_molecule" : -1.0, + "comp" : { + "Li6" : 0.2666666666666667, + "Li7" : 0.1777777777777778, + "O16" : 0.4432400122246530, + "O17" : 0.0001794419534995120, + "O18" : 0.001024990266291979, + "Si28" : 0.1020738742098361, + "Si29" : 0.005370698749700357, + "Si30" : 0.003666538151574611 + }, + "density" : 3.430, + "mass" : 9.0, + "metadata" : { + "citation" : "HernandezFusEngDes_2018", + "mat_number" : 5, + "name" : "Li4SiO4mass60" + } + }, "Li4SiO4nat" : { "atoms_per_molecule" : 9.0, "comp" : { @@ -681,7 +849,7 @@ "mass" : 119.8432648153195, "metadata" : { "citation" : "HernandezFusEngDes_2018", - "mat_number" : 35, + "mat_number" : 39, "name" : "Li4SiO4nat" } }, @@ -695,7 +863,7 @@ "mass" : 6.379133582776449, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 43, + "mat_number" : 51, "name" : "Li60.0" } }, @@ -709,7 +877,7 @@ "mass" : 6.379133582776449, "metadata" : { "citation" : "BohmFusSciTec_2019", - "mat_number" : 44, + "mat_number" : 52, "name" : "Li60.0T500" } }, @@ -723,7 +891,7 @@ "mass" : 1.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 41, + "mat_number" : 49, "name" : "LiNat" } }, @@ -737,7 +905,7 @@ "mass" : 1.0, "metadata" : { "citation" : "BohmFusSciTec_2019", - "mat_number" : 42, + "mat_number" : 50, "name" : "LiNatT500" } }, @@ -787,7 +955,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 45, + "mat_number" : 53, "name" : "Mo" } }, @@ -800,7 +968,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 25, + "mat_number" : 29, "name" : "Na" } }, @@ -846,7 +1014,7 @@ "mass" : 100.0, "metadata" : { "citation" : "PintDOE_ER_0313_57_2014 and KluehJNM_2000 ", - "mat_number" : 16, + "mat_number" : 20, "name" : "ODS125Y" } }, @@ -868,7 +1036,7 @@ "mass" : 99.99990000000001, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 47, + "mat_number" : 55, "name" : "OilTexasCrude" } }, @@ -884,7 +1052,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 31, + "mat_number" : 35, "name" : "Pb" } }, @@ -902,7 +1070,7 @@ "mass" : 100.0, "metadata" : { "citation" : "BohmFusSciTec_2019", - "mat_number" : 11, + "mat_number" : 15, "name" : "Pb157Li90" } }, @@ -947,7 +1115,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 9, + "mat_number" : 13, "name" : "SS316L" } }, @@ -996,7 +1164,7 @@ "mass" : 99.99999999999999, "metadata" : { "citation" : "GilbertHandbookITERCCFE_2016", - "mat_number" : 7, + "mat_number" : 11, "name" : "SS316LN" } }, @@ -1054,7 +1222,7 @@ "mass" : 100.0, "metadata" : { "citation" : "GilbertHandbookITERCCFE_2016", - "mat_number" : 8, + "mat_number" : 12, "name" : "SS316LNIG" } }, @@ -1069,7 +1237,7 @@ "mass" : 1.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 27, + "mat_number" : 31, "name" : "Si" } }, @@ -1086,7 +1254,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 6, + "mat_number" : 10, "name" : "SiC" } }, @@ -1108,7 +1276,7 @@ "mass" : 1.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 29, + "mat_number" : 33, "name" : "Sn" } }, @@ -1122,7 +1290,7 @@ "mass" : 1.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 30, + "mat_number" : 34, "name" : "Ta" } }, @@ -1150,7 +1318,7 @@ "mass" : 100.0, "metadata" : { "citation" : "FESS-FNSF and ???", - "mat_number" : 13, + "mat_number" : 17, "name" : "TernaryNb3Sn" } }, @@ -1173,7 +1341,7 @@ "mass" : 100.0, "metadata" : { "citation" : "GrossbeckJNM_1998 and density ARIES_PropertiesArchive and MetalsHandbook_1979", - "mat_number" : 50, + "mat_number" : 58, "name" : "V4Cr4Ti" } }, @@ -1190,7 +1358,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 23, + "mat_number" : 27, "name" : "W" } }, @@ -1209,7 +1377,7 @@ "mass" : 195.8525155763622, "metadata" : { "citation" : "CRChandbook64B152", - "mat_number" : 53, + "mat_number" : 61, "name" : "WC" } }, @@ -1226,7 +1394,7 @@ "mass" : 100.0, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 5, + "mat_number" : 9, "name" : "Water" } }, @@ -1245,7 +1413,7 @@ "mass" : 93.23952429992536, "metadata" : { "citation" : "pnnl-15870rev1", - "mat_number" : 51, + "mat_number" : 59, "name" : "ZrH2" } } diff --git a/pureMaterials/mixPureFusionMaterials.py b/pureMaterials/mixPureFusionMaterials.py index 77c44f8..1ea27a2 100755 --- a/pureMaterials/mixPureFusionMaterials.py +++ b/pureMaterials/mixPureFusionMaterials.py @@ -7,46 +7,82 @@ # designs # -can be used for mixing homogenized regions # -# -# + +# Doesn't work currently to enrich elements that are currently enriched +# If this version moves forward I plan to add logic to warn the user when mat input already contains the isotopes to be enriched + import os from pyne import material from pyne.material import Material, MultiMaterial from pyne.material_library import MaterialLibrary +from working_multi_createPurematlib import ( + make_mat, + make_mat_from_atom, + update_nucvec, + update_atom_frac, +) +from createPurematlib_og import mat_data as pure +from pyne import nucname def get_consituent_citations(materials): - citation_str = "" + citation_list = [] for mat in materials: - citation_str = " ".join([citation_str, mat.metadata["citation"]]) - return citation_str + citation_list.append(mat.metadata["citation"]) + + return ", ".join(citation_list) # Mix Materials by Volume -def mix_by_volume(material_library, vol_fracs, citation): - """ - Mixes materials by volume, adds list of constituent citations to the - metadata - - Arguments: - material_library (PyNE material library): library containing constituent - materials. - vol_fracs (dict): dictionary where the keys are names of materials (str) - and values are the volume fraction (float) - citation (str): citation for the mixture - """ +def mix_by_volume(material_library, vol_fracs, citation, mass_enrichment=None): + mix_dict = {} for name, volume_fraction in vol_fracs.items(): - mix_dict[material_library[name]] = volume_fraction - + material = material_library[name] + + if mass_enrichment and name in mass_enrichment: + # Will update later so things are less explicit, seems easier to read like this + + material = material.collapse_elements({1}) + + nucvec = dict(material.to_atom_frac()) + + mat_input = pure[name] + if "atom_frac" in mat_input: + + atom_frac = mat_input["atom_frac"] + mat_atom_input = dict(atom_frac) + # Which of the two methods is better? + enriched_material = make_mat_from_atom( + atom_frac=mat_atom_input, + density=mat_input["density"], + citation=mat_input["citation"], + mass_enrichment=mass_enrichment[name], + ) + + else: + nucvec = mat_input["nucvec"] + mat_mass_input = dict(nucvec) + enriched_material_params = { + "nucvec": mat_mass_input, + "density": mat_input["density"], + "citation": mat_input["citation"], + "mass_enrichment": mass_enrichment[name], + } + + enriched_material = make_mat(**enriched_material_params) + + mix_dict[enriched_material.expand_elements()] = volume_fraction + else: + mix_dict[material.expand_elements()] = volume_fraction mix = MultiMaterial(mix_dict) mat = mix.mix_by_volume() mat.metadata["mixture_citation"] = citation mat.metadata["constituent_citation"] = get_consituent_citations( list(mix_dict.keys()) ) - return mat + return mat.expand_elements() mat_data = {} @@ -207,7 +243,6 @@ def mix_by_volume(material_library, vol_fracs, citation): ######################################################################## def main(): - # # remove old mixmat_lib try: os.remove("mixedPureFusionMaterials_libv1.json") @@ -222,11 +257,14 @@ def main(): mixmat_lib = MaterialLibrary() for mat_name, mat_input in mat_data.items(): mixmat_lib[mat_name] = mix_by_volume( - mat_lib, mat_input["vol_fracs"], mat_input["mixture_citation"] + mat_lib, + mat_input["vol_fracs"], + mat_input["mixture_citation"], + mat_input.get("mass_enrichment"), ) # write fnsf material library - mixmat_lib.write_json("mixedPureFusionMats_libv1.json") + mixmat_lib.write_json("mixedPureFusionMaterials_libv1.json") if __name__ == "__main__": From a769d281afc2cd71a7a7d46156c973c39f7d99c5 Mon Sep 17 00:00:00 2001 From: FusionSandwich <145234893+FusionSandwich@users.noreply.github.com> Date: Mon, 15 Jul 2024 01:13:33 -0500 Subject: [PATCH 2/4] Fixed createPureMatLib.py import issue --- pureMaterials/mixPureFusionMaterials.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pureMaterials/mixPureFusionMaterials.py b/pureMaterials/mixPureFusionMaterials.py index 1ea27a2..788a49b 100755 --- a/pureMaterials/mixPureFusionMaterials.py +++ b/pureMaterials/mixPureFusionMaterials.py @@ -15,7 +15,7 @@ from pyne import material from pyne.material import Material, MultiMaterial from pyne.material_library import MaterialLibrary -from working_multi_createPurematlib import ( +from createPurematlib import ( make_mat, make_mat_from_atom, update_nucvec, From aa699a7c47fe8e18618f99b7253f4bcb56602627 Mon Sep 17 00:00:00 2001 From: FusionSandwich <145234893+FusionSandwich@users.noreply.github.com> Date: Mon, 15 Jul 2024 01:13:59 -0500 Subject: [PATCH 3/4] Adding new createPurematlib.py with enrich function --- pureMaterials/PureFusionMaterials_libv1.h5 | Bin 0 -> 27236 bytes pureMaterials/createPurematlib.py | 835 +++++++++++++-------- 2 files changed, 522 insertions(+), 313 deletions(-) create mode 100644 pureMaterials/PureFusionMaterials_libv1.h5 diff --git a/pureMaterials/PureFusionMaterials_libv1.h5 b/pureMaterials/PureFusionMaterials_libv1.h5 new file mode 100644 index 0000000000000000000000000000000000000000..5b1a30ce9c21b84f8ccaad07c7c9e6405fb9047f GIT binary patch literal 27236 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 literal 0 HcmV?d00001 diff --git a/pureMaterials/createPurematlib.py b/pureMaterials/createPurematlib.py index 0630670..f5257d7 100755 --- a/pureMaterials/createPurematlib.py +++ b/pureMaterials/createPurematlib.py @@ -6,73 +6,158 @@ # -can be used for mixing homogenized regions # -generally impurities at <~1e-3 wt. percent (10 wppm) are removed from materials # (except SS-316 steels may contain boron impurity) -# +# # import os +from typing import Dict, Union, Optional from pyne import material from pyne.material import Material, MultiMaterial from pyne.material_library import MaterialLibrary +from pyne import nucname # # -def make_mat(nucvec, density, citation, molecular_mass = None): - mat = Material(nucvec, density = density, metadata = {'citation' : citation}) + +def enrich( + nucvec: Dict[int, float], old_key: int, new_values: Dict[int, float] +) -> Dict[int, float]: + """Update nuclear vector by replacing an old key with new key-value pairs.""" + + if old_key in nucvec: + fract = nucvec.pop(old_key) + for key, value in new_values.items(): + nucvec[key] = value * fract + else: + found_key = None + for key in list(nucvec.keys()): + if nucname.id(old_key) == nucname.id(key): + found_key = key + break + + if found_key is not None: + fract = nucvec.pop(found_key) + for new_key, value in new_values.items(): + nucvec[new_key] = value * fract # check if percent works also + + return nucvec + + +def make_mat( + nucvec: Dict[int, float], + density: float, + citation: str, + molecular_mass: Optional[float] = None, + mass_enrichment: Optional[Dict[int, Dict[int, float]]] = None, +) -> Material: + """Create a Material object from nuclear vector data.""" + if mass_enrichment is not None: + for isotope, enrichment_vector in mass_enrichment.items(): + enriched_mat = Material( + {key: value for key, value in enrichment_vector.items()} + ) + nucvec = enrich(nucvec, isotope, enriched_mat.comp) + mat = Material(nucvec, density=density, metadata={"citation": citation}) if molecular_mass: mat.molecular_mass = molecular_mass return mat.expand_elements() -def make_mat_from_atom(atom_frac, density, citation): + +def make_mat_from_atom( + atom_frac: Dict[Union[int, str], float], + density: float, + citation: str, + mass_enrichment: Optional[Dict[int, Dict[int, float]]] = None, +) -> Material: + """Create a Material object from atom fraction data.""" + if mass_enrichment is not None: + for isotope, enrichment_vector in mass_enrichment.items(): + enriched_mat = Material( + {key: value for key, value in enrichment_vector.items()} + ) + atom_frac = enrich(atom_frac, isotope, enriched_mat.to_atom_frac()) + mat = Material() mat.from_atom_frac(atom_frac) mat.density = density - mat.metadata['citation'] = citation + mat.metadata["citation"] = citation return mat.expand_elements() mat_data = {} # fullreference: KluehJNM_2000 R.L. Klueh et al. jnm 2000 DOI:10.1016/S0022-3115(00)00060-X -mat_data['MF82H'] = { - 'nucvec' : {60000000: 0.1, 230000000: 0.2, 240000000: 7.5, 260000000: 90.18, 730000000: 0.02, 740000000: 2.0}, - 'density' : 7.89, - 'citation' : 'KluehJNM_2000' - } +mat_data["MF82H"] = { + "nucvec": { + 60000000: 0.1, + 230000000: 0.2, + 240000000: 7.5, + 260000000: 90.18, + 730000000: 0.02, + 740000000: 2.0, + }, + "density": 7.89, + "citation": "KluehJNM_2000", +} # fullreference: ChenNucEngTech_2013 Y. Chen Nuclear and Engineering Technology, vol. 45, 2013. https://doi.org/10.5516/NET.07.2013.706 # fullreference: SmithBCSSANLvol2_1984, D.L. Smith et al., "Blanket Comparison and Selection Study Final Report", ANL/FPP-84-1, volume 2, Chapter 6, 1984. (HT-9 density pdf page 32 and 49) -mat_data['HT9'] = { - 'nucvec' : {60000000: 0.2, 230000000: 0.25, 240000000: 12.0, 260000000: 85.55, 280000000: 0.5, 420000000: 1.0, 740000000: 0.5}, - 'density' : 7.8, # density BCSSvol2 pdf page 32 and page 49 - 'citation' : 'KluehJNM_2000 and SmithBCSSANLvol2_1984' - } +mat_data["HT9"] = { + "nucvec": { + 60000000: 0.2, + 230000000: 0.25, + 240000000: 12.0, + 260000000: 85.55, + 280000000: 0.5, + 420000000: 1.0, + 740000000: 0.5, + }, + "density": 7.8, # density BCSSvol2 pdf page 32 and page 49 + "citation": "KluehJNM_2000 and SmithBCSSANLvol2_1984", +} # fullreference: MergiaJNM_2008 K. Mergia, N. Boukos jnm 2008 https://doi.org/10.1016/j.jnucmat.2007.03.267 # wt percent 0.11C, 8.9Cr, 0.42Mn, 0.19V, 1.10W, 0.14Ta, balance Fe -mat_data['EUROFER97'] = { - 'nucvec' : {60000000: 0.11, 230000000: 0.19, 240000000: 8.9, 250000000: 0.42, 260000000: 89.14, 730000000: 0.14, 740000000: 1.10}, - 'density' : 7.75, - 'citation' : 'MergiaJNM_2008' - } +mat_data["EUROFER97"] = { + "nucvec": { + 60000000: 0.11, + 230000000: 0.19, + 240000000: 8.9, + 250000000: 0.42, + 260000000: 89.14, + 730000000: 0.14, + 740000000: 1.10, + }, + "density": 7.75, + "citation": "MergiaJNM_2008", +} # reference: KluehJNM_2000 MF82H with 3 wt. percent B replacing some Fe -mat_data['BMF82H'] = { - 'nucvec' : {50000000: 3.0, 60000000: 0.1, 230000000: 0.2, 240000000: 7.5, 260000000: 87.18, 730000000: 0.02, 740000000: 2.0}, - 'density' : 7.89, - 'citation' : 'KluehJNM_2000' - } +mat_data["BMF82H"] = { + "nucvec": { + 50000000: 3.0, + 60000000: 0.1, + 230000000: 0.2, + 240000000: 7.5, + 260000000: 87.18, + 730000000: 0.02, + 740000000: 2.0, + }, + "density": 7.89, + "citation": "KluehJNM_2000", +} # fullreference: pnnl-15870rev1 R.J. McConn, et al. "Compendium of Material Composition Data for Radiation Transport Modeling", PNNL-15870 Rev. 1, 2011. -mat_data['Water'] = { - 'nucvec' : {10000000: 11.1894, 80000000: 88.8106}, - 'density' : 1.0, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Water"] = { + "nucvec": {10000000: 11.1894, 80000000: 88.8106}, + "density": 1.0, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['SiC'] = { - 'nucvec' : {60000000 : 29.9547, 140000000: 70.0453}, - 'density' : 3.21, - 'citation' : 'pnnl-15870rev1' - } +mat_data["SiC"] = { + "nucvec": {60000000: 29.9547, 140000000: 70.0453}, + "density": 3.21, + "citation": "pnnl-15870rev1", +} # note SS-316L(N)-IG and EUROFER composition (but not density) in # reference: GilbertNucFus_2017 @@ -84,221 +169,319 @@ def make_mat_from_atom(atom_frac, density, citation): # reference: GilbertHandbookITERCCFE_2016 # contains 300 wppm B which is important to assess typical He production level -mat_data['SS316LN'] = { - 'nucvec' : {50000000:0.030, 60000000:0.030, 70000000:0.160, 140000000:1.0, 150000000:0.030, 160000000:0.020, 240000000:17.250, 250000000:2.00 , 260000000:64.830, 270000000:0.100, 280000000:12.00, 410000000:0.050, 420000000:2.5}, - 'density' : 7.93, - 'citation' : 'GilbertHandbookITERCCFE_2016' - } +mat_data["SS316LN"] = { + "nucvec": { + 50000000: 0.030, + 60000000: 0.030, + 70000000: 0.160, + 140000000: 1.0, + 150000000: 0.030, + 160000000: 0.020, + 240000000: 17.250, + 250000000: 2.00, + 260000000: 64.830, + 270000000: 0.100, + 280000000: 12.00, + 410000000: 0.050, + 420000000: 2.5, + }, + "density": 7.93, + "citation": "GilbertHandbookITERCCFE_2016", +} # reference: GilbertHandbookITERCCFE_2016 10 wppm B which is important to assess typical He production level -mat_data['SS316LNIG'] = { - 'nucvec' : {50000000:0.001, 60000000:0.03, 70000000:0.070, 140000000:0.50, 150000000:0.025, 160000000:0.010, 220000000:0.10, 240000000:17.50, 250000000:1.80, 260000000:64.844, 270000000:0.05, 280000000:12.25, 290000000:0.30, 410000000:0.010, 420000000:2.5, 730000000:0.01}, - 'density' : 7.93, - 'citation' : 'GilbertHandbookITERCCFE_2016' - } +mat_data["SS316LNIG"] = { + "nucvec": { + 50000000: 0.001, + 60000000: 0.03, + 70000000: 0.070, + 140000000: 0.50, + 150000000: 0.025, + 160000000: 0.010, + 220000000: 0.10, + 240000000: 17.50, + 250000000: 1.80, + 260000000: 64.844, + 270000000: 0.05, + 280000000: 12.25, + 290000000: 0.30, + 410000000: 0.010, + 420000000: 2.5, + 730000000: 0.01, + }, + "density": 7.93, + "citation": "GilbertHandbookITERCCFE_2016", +} # reference: pnnl-15870rev1 # added 10 wppm B which is important to assess typical He production level -mat_data['SS316L'] = { - 'nucvec' : {50000000:0.001, 60000000:0.03, 140000000:1.0, 150000000:0.045, 160000000:0.03, 240000000:17, 250000000:2, 260000000:65.394, 280000000:12, 420000000:2.5}, - 'density' : 8.00, - 'citation' : 'pnnl-15870rev1' - } +mat_data["SS316L"] = { + "nucvec": { + 50000000: 0.001, + 60000000: 0.03, + 140000000: 1.0, + 150000000: 0.045, + 160000000: 0.03, + 240000000: 17, + 250000000: 2, + 260000000: 65.394, + 280000000: 12, + 420000000: 2.5, + }, + "density": 8.00, + "citation": "pnnl-15870rev1", +} # reference: FESS-FNSF very similar to GFFpolyimide from ARIES -mat_data['Eins'] = { - 'nucvec' : {10000000:1.96, 60000000:24.12, 70000000:1.46, 80000000:40.19, 120000000:3.92, 130000000: 8.6, 140000000:19.75}, - 'density' : 1.8, - 'citation' : 'FESS-FNSF and ARIES GFFpolyimide' - } +mat_data["Eins"] = { + "nucvec": { + 10000000: 1.96, + 60000000: 24.12, + 70000000: 1.46, + 80000000: 40.19, + 120000000: 3.92, + 130000000: 8.6, + 140000000: 19.75, + }, + "density": 1.8, + "citation": "FESS-FNSF and ARIES GFFpolyimide", +} # fullreference: BohmFusSciTec_2019 https://doi.org/10.1080/15361055.2019.1600930 # fullreference: MartelliFusEngDes_2019 https://doi.org/10.1016/j.fusengdes.2018.11.028 -mat_data['Pb157Li90'] = { - 'nucvec' : {30060000: 0.4905, 30070000: 0.0545,820000000: 99.455}, - 'density' : 9.32, # not sure of Temperature - 'molecular_mass': 175.6273, - 'citation' : 'BohmFusSciTec_2019' - } +mat_data["Pb157Li90"] = { + "nucvec": {30060000: 0.4905, 30070000: 0.0545, 820000000: 99.455}, + "density": 9.32, # not sure of Temperature + "molecular_mass": 175.6273, + "citation": "BohmFusSciTec_2019", +} # fullreference: ElGuebalyARIESCSFTI_2006 L. El-Guebaly, "Final Radial Build and Composition for LiPb/FS/He System", Sep. 2006. https://fti.neep.wisc.edu/fti.neep.wisc.edu/aries/BUILD-CS/build092606.pdf # fullreference: HeizenroederComments2005 P. Heizenroeder and R. Reed "Comments on Selection of U.S. ITER CS Coil Jacket Material", Sep. 12, 2005 -mat_data['JK2LBSteel'] = { - 'nucvec' : {50000000:0.002, 60000000:0.02, 70000000:0.2, 140000000:0.3, 150000000:0.004, 160000000:0.004, 240000000:13, 250000000:21, 260000000:55.47, 280000000:9, 420000000:1}, - 'density' : 8.0, - 'citation' : 'ElGuebalyARIESCSFTI_2006' - } +mat_data["JK2LBSteel"] = { + "nucvec": { + 50000000: 0.002, + 60000000: 0.02, + 70000000: 0.2, + 140000000: 0.3, + 150000000: 0.004, + 160000000: 0.004, + 240000000: 13, + 250000000: 21, + 260000000: 55.47, + 280000000: 9, + 420000000: 1, + }, + "density": 8.0, + "citation": "ElGuebalyARIESCSFTI_2006", +} # reference: FESS-FNSF and ??? -mat_data['TernaryNb3Sn'] = { - 'nucvec' : {410000000:68.95, 500000000:30, 220000000:1.05}, - 'density' : 8.9, - 'citation' : 'FESS-FNSF and ???' - } - +mat_data["TernaryNb3Sn"] = { + "nucvec": {410000000: 68.95, 500000000: 30, 220000000: 1.05}, + "density": 8.9, + "citation": "FESS-FNSF and ???", +} + # reference: ITER and CRC Handbook of Chemistry and Physics density at 4 K # fullreference: CRChandbook64 64th CRC Handbook of Chemistry and Physics page B-117, density at 4 K -mat_data['LHe'] = { - 'nucvec' : {20000000: 100}, - 'density' : 0.149, - 'citation' : 'CRChandbook64B117' - } +mat_data["LHe"] = { + "nucvec": {20000000: 100}, + "density": 0.149, + "citation": "CRChandbook64B117", +} # fullreference: JawadORNL_2005 M. Jawad et al. , "Development of a New Class of Fe-3Cr-W(V) Ferritic Steels for Industrial Process Applications", ORNL/TM-2005/82, 2005. https://doi.org/10.2172/838517 -mat_data['Cr3FS'] = { - 'nucvec' : {60000:0.1, 140000:0.14, 230000:0.25, 240000:3.0, 250000:0.5, 260000:93.01, 740000:3.0}, - 'density' : 7.89, - 'citation' : 'JawadORNL_2005 and ???' - } +mat_data["Cr3FS"] = { + "nucvec": { + 60000: 0.1, + 140000: 0.14, + 230000: 0.25, + 240000: 3.0, + 250000: 0.5, + 260000: 93.01, + 740000: 3.0, + }, + "density": 7.89, + "citation": "JawadORNL_2005 and ???", +} # ODS LiPb-corrosion-resistant steel with Present impurities removed # fullreference: PintDOE_ER_0313_57_2014 B. Pint et al., DEVELOPMENT OF ODS FeCrAl FOR FUSION REACTOR APPLICATIONS, Fusion Reactor Materials Program Semi-annual Report, Dec. 2014, DOE/ER- 0313/57 Section 2.1, https://fmp.ornl.gov/semiannual-progress-reports/fusion-materials-semiannual-progress-report-57.pdf # reference: KluehJNM_2000 (for some impurities) # Density = 7.799 g/cm3, as determined for 14YWT alloy, per David Hoelzer # -mat_data['ODS125Y'] = { - 'nucvec' : {60000000: 0.0380, 70000000:0.0455, 80000000:0.8420, 130000000:4.8, 140000000:0.02, 160000000:0.0020, 220000000:0.01, 240000000:11.4, 260000000:82.6025, 390000000:0.19, 740000000:0.05}, - 'density' : 7.799, - 'citation' : 'PintDOE_ER_0313_57_2014 and KluehJNM_2000 ' - } +mat_data["ODS125Y"] = { + "nucvec": { + 60000000: 0.0380, + 70000000: 0.0455, + 80000000: 0.8420, + 130000000: 4.8, + 140000000: 0.02, + 160000000: 0.0020, + 220000000: 0.01, + 240000000: 11.4, + 260000000: 82.6025, + 390000000: 0.19, + 740000000: 0.05, + }, + "density": 7.799, + "citation": "PintDOE_ER_0313_57_2014 and KluehJNM_2000 ", +} # reference: pnnl-15870rev1 at T=20C -mat_data['D2O'] = { - 'nucvec' : {10020000:20.1133, 80000000:79.8867}, - 'density' : 1.10534, - 'citation' : 'pnnl-15870rev1' - } +mat_data["D2O"] = { + "nucvec": {10020000: 20.1133, 80000000: 79.8867}, + "density": 1.10534, + "citation": "pnnl-15870rev1", +} # fullreference: WidodoJoPCS_2018 Journal of Physics Conference Series doi:10.1088/1742-6596/962/1/012039 and KTA Standards 1986 # also reference: pnnl-15870rev1 -mat_data['HeNIST'] = { - 'nucvec' : {20000000: 100}, - 'density' : 0.00016647, # at 20 C (293.15 K), 1 atm (1.01325 bar) - 'citation' : 'WidodoJoPCS_2018 and pnnl-15870rev1' - } +mat_data["HeNIST"] = { + "nucvec": {20000000: 100}, + "density": 0.00016647, # at 20 C (293.15 K), 1 atm (1.01325 bar) + "citation": "WidodoJoPCS_2018 and pnnl-15870rev1", +} # high pressure He gas ref. # reference: WidodoJoPCS_2018 doi:10.1088/1742-6596/962/1/012039 and KTA Standards 1986 -mat_data['HeT410P1'] = { - 'nucvec' : {20000000: 100}, - 'density' : 0.00007048, # at 410 C, 1 bar - 'citation' : 'WidodoJoPCS_2018' - } - -mat_data['HeT410P80'] = { - 'nucvec' : {20000000: 100}, - 'density' : 0.00571698, # at 410 C, 80 bar - 'citation' : 'WidodoJoPCS_2018' - } +mat_data["HeT410P1"] = { + "nucvec": {20000000: 100}, + "density": 0.00007048, # at 410 C, 1 bar + "citation": "WidodoJoPCS_2018", +} + +mat_data["HeT410P80"] = { + "nucvec": {20000000: 100}, + "density": 0.00571698, # at 410 C, 80 bar + "citation": "WidodoJoPCS_2018", +} # air (Dry, Near Sea Level) # reference: pnnl-15870rev1 -mat_data['AirSTP'] = { - 'nucvec' : {60000000 : 0.0124, 70000000 : 75.5268, 80000000 : 23.1781, 180000000: 1.2827}, - 'density' : 0.001205, - 'citation' : 'pnnl-15870rev1' - } +mat_data["AirSTP"] = { + "nucvec": { + 60000000: 0.0124, + 70000000: 75.5268, + 80000000: 23.1781, + 180000000: 1.2827, + }, + "density": 0.001205, + "citation": "pnnl-15870rev1", +} # concrete (Ordinary NBS 04) # reference: pnnl-15870rev1 -mat_data['Concrete'] = { - 'nucvec' : {10000000 : 0.5558, 80000000 : 49.8076, 110000000: 1.7101, 120000000: 0.2565, 130000000: 4.5746, 140000000: 31.5092, 160000000: 0.1283, 190000000: 1.9239, 200000000: 8.2941, 260000000: 1.2398}, - 'density' : 2.35, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Concrete"] = { + "nucvec": { + 10000000: 0.5558, + 80000000: 49.8076, + 110000000: 1.7101, + 120000000: 0.2565, + 130000000: 4.5746, + 140000000: 31.5092, + 160000000: 0.1283, + 190000000: 1.9239, + 200000000: 8.2941, + 260000000: 1.2398, + }, + "density": 2.35, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['W'] = { - 'nucvec' : {740000000: 100.0}, - 'density' : 19.30, - 'citation' : 'pnnl-15870rev1' - } +mat_data["W"] = { + "nucvec": {740000000: 100.0}, + "density": 19.30, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Fe'] = { - 'nucvec' : {260000000: 100.0}, - 'density' : 7.874, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Fe"] = { + "nucvec": {260000000: 100.0}, + "density": 7.874, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Na'] = { - 'nucvec' : {110000000: 100.0}, - 'density' : 0.971, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Na"] = { + "nucvec": {110000000: 100.0}, + "density": 0.971, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 reactor graphite without boron impurity -mat_data['C'] = { - 'nucvec' : {60000000:1.0}, - 'density' : 1.7, - 'citation' : 'pnnl-15870rev1' - } +mat_data["C"] = { + "nucvec": {60000000: 1.0}, + "density": 1.7, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Si'] = { - 'nucvec' : {140000000:1.0}, - 'density' : 2.33, - 'citation' : 'pnnl-15870rev1' - } - +mat_data["Si"] = { + "nucvec": {140000000: 1.0}, + "density": 2.33, + "citation": "pnnl-15870rev1", +} + # reference: pnnl-15870rev1 -mat_data['Cu'] = { - 'nucvec' : {290000000:1.0}, - 'density' : 8.96, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Cu"] = { + "nucvec": {290000000: 1.0}, + "density": 8.96, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Sn'] = { - 'nucvec' : {500000000:1.0}, - 'density' : 7.31, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Sn"] = { + "nucvec": {500000000: 1.0}, + "density": 7.31, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Ta'] = { - 'nucvec' : {730000000:1.0}, - 'density' : 16.654, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Ta"] = { + "nucvec": {730000000: 1.0}, + "density": 16.654, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Pb'] = { - 'nucvec' : {820000000: 100.0}, - 'density' : 11.35, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Pb"] = { + "nucvec": {820000000: 100.0}, + "density": 11.35, + "citation": "pnnl-15870rev1", +} # fullreference: HernandezFusEngDes_2018 F.A. Hernandez, P. Pereslavtsev, Fusion Engineering and Design vol. 137, 2018 https://doi.org/10.1016/j.fusengdes.2018.09.014 -mat_data['Be'] = { - 'nucvec' : {40000000:1.0}, - 'density' : 1.85, - 'citation' : 'HernandezFusEngDes_2018' - } +mat_data["Be"] = { + "nucvec": {40000000: 1.0}, + "density": 1.85, + "citation": "HernandezFusEngDes_2018", +} # reference: HernandezFusEngDes_2018 # F.A. Hernandez, P. Pereslavtsev, Fusion Engineering and Design vol. 137, 2018 # https://doi.org/10.1016/j.fusengdes.2018.09.014 -mat_data['Be12Ti'] = { - 'atom_frac' : {40000000:12,220000000:1}, - 'density' : 2.28, - 'citation' : 'HernandezFusEngDes_2018' - } +mat_data["Be12Ti"] = { + "atom_frac": {40000000: 12, 220000000: 1}, + "density": 2.28, + "citation": "HernandezFusEngDes_2018", +} # reference: HernandezFusEngDes_2018 # F.A. Hernandez, P. Pereslavtsev, Fusion Engineering and Design vol. 137, 2018 # https://doi.org/10.1016/j.fusengdes.2018.09.014 -mat_data['Be12V'] = { - 'atom_frac' : {40000000:12,230000000:1}, - 'density' : 2.39, - 'citation' : 'HernandezFusEngDes_2018' - } +mat_data["Be12V"] = { + "atom_frac": {40000000: 12, 230000000: 1}, + "density": 2.39, + "citation": "HernandezFusEngDes_2018", +} -li6enrichment = 0.60 # weight fraction enrichment of Li-6 desired -li6enrichStr = f'Li{li6enrichment * 100}' -liXweightfraction = Material({'Li6': li6enrichment, 'Li7': (1.0-li6enrichment)}) +li6enrichment = 0.60 # weight fraction enrichment of Li-6 desired +li6enrichStr = f"Li{li6enrichment * 100}" +liXweightfraction = Material({"Li6": li6enrichment, "Li7": (1.0 - li6enrichment)}) # Li ceramics # reference: HernandezFusEngDes_2018 F.A. Hernandez, P. Pereslavtsev, Fusion Engineering and Design vol. 137, 2018 https://doi.org/10.1016/j.fusengdes.2018.09.014 @@ -307,176 +490,202 @@ def make_mat_from_atom(atom_frac, density, citation): # ceramic breeders Li4SiO4 and Li2TiO3 at 60 wt. percent Li-6 EU-DEMO # note manufacturing may result in lower density of 80-90% of theoretical -mat_data['Li4SiO4nat'] = { - 'atom_frac' : {30000000:4, 80000000:4, 140000000:1}, - 'density' : 2.40, - 'citation' : 'HernandezFusEngDes_2018' - } - -mat_data['Li2TiO3nat'] = { - 'atom_frac' : {30000000:2, 80000000:3, 220000000:1}, - 'density' : 3.43, - 'citation' : 'HernandezFusEngDes_2018' - } - -mat_data['Li4SiO4' + li6enrichStr] = { - 'atom_frac' : {liXweightfraction:4, 80000000:4, 140000000:1}, - 'density' : 2.40, - 'citation' : 'HernandezFusEngDes_2018' - } - -mat_data['Li2TiO3' + li6enrichStr] = { - 'atom_frac' : {liXweightfraction:2, 80000000:3, 220000000:1}, - 'density' : 3.42, - 'citation' : 'HernandezFusEngDes_2018' - } +mat_data["Li4SiO4nat"] = { + "atom_frac": {30000000: 4, 80000000: 4, 140000000: 1}, + "density": 2.40, + "citation": "HernandezFusEngDes_2018", +} + +mat_data["Li2TiO3nat"] = { + "atom_frac": {30000000: 2, 80000000: 3, 220000000: 1}, + "density": 3.43, + "citation": "HernandezFusEngDes_2018", +} + +mat_data["Li4SiO4" + li6enrichStr] = { + "atom_frac": {liXweightfraction: 4, 80000000: 4, 140000000: 1}, + "density": 2.40, + "citation": "HernandezFusEngDes_2018", +} + +mat_data["Li2TiO3" + li6enrichStr] = { + "atom_frac": {liXweightfraction: 2, 80000000: 3, 220000000: 1}, + "density": 3.42, + "citation": "HernandezFusEngDes_2018", +} # fullreference: SohalINLEXT-10-18297_2013 M. Sohal et al., "Engineering Database of Liquid Salt Thermophysical and Thermochemical Properties", INL/EXT-10-18297, June 2013. https://inldigitallibrary.inl.gov/sites/STI/STI/5698704.pdf -mat_data['FlibeNat'] = { - 'atom_frac' : {30000000:2,40000000:1,90000000:4}, - 'density' : 1.94, - 'citation' : 'SohalINLEXT-10-18297_2013' - } +mat_data["FlibeNat"] = { + "atom_frac": {30000000: 2, 40000000: 1, 90000000: 4}, + "density": 1.94, + "citation": "SohalINLEXT-10-18297_2013", +} # reference: SohalINLEXT-10-18297_2013 M. Sohal et al., "Engineering Database of Liquid Salt Thermophysical and Thermochemical Properties", INL/EXT-10-18297, June 2013. https://inldigitallibrary.inl.gov/sites/STI/STI/5698704.pdf -mat_data['Flibe' + li6enrichStr] = { - 'atom_frac' : {liXweightfraction:2,40000000:1,90000000:4}, - 'density' : 1.94, - 'citation' : 'SohalINLEXT-10-18297_2013' - } +mat_data["Flibe" + li6enrichStr] = { + "atom_frac": {liXweightfraction: 2, 40000000: 1, 90000000: 4}, + "density": 1.94, + "citation": "SohalINLEXT-10-18297_2013", +} # reference: pnnl-15870rev1 at STP -mat_data['LiNat'] = { - 'nucvec' : {30000000:1.0}, - 'density' : 0.534, # at STP - 'citation' : 'pnnl-15870rev1' - } +mat_data["LiNat"] = { + "nucvec": {30000000: 1.0}, + "density": 0.534, # at STP + "citation": "pnnl-15870rev1", +} # reference: BohmFusSciTec_2019 rho=0.485 g/cm3 at T=500 C -mat_data['LiNatT500'] = { - 'nucvec' : {30000000:1.0}, - 'density' : 0.485, # at T=500 C - 'citation' : 'BohmFusSciTec_2019' - } +mat_data["LiNatT500"] = { + "nucvec": {30000000: 1.0}, + "density": 0.485, # at T=500 C + "citation": "BohmFusSciTec_2019", +} # reference: pnnl-15870rev1 mat_data[li6enrichStr] = { - 'atom_frac' : {liXweightfraction:1}, - 'density' : 0.534, # at STP - 'citation' : 'pnnl-15870rev1' - } + "atom_frac": {liXweightfraction: 1}, + "density": 0.534, # at STP + "citation": "pnnl-15870rev1", +} # reference: BohmFusSciTec_2019 rho=0.485 g/cm3 at T=500 C -mat_data[li6enrichStr + 'T500'] = { - 'atom_frac' : {liXweightfraction:1}, - 'density' : 0.485, # at T=500 C - 'citation' : 'BohmFusSciTec_2019' - } +mat_data[li6enrichStr + "T500"] = { + "atom_frac": {liXweightfraction: 1}, + "density": 0.485, # at T=500 C + "citation": "BohmFusSciTec_2019", +} # reference: pnnl-15870rev1 -mat_data['Mo'] = { - 'nucvec' : {420000000: 100.0}, - 'density' : 10.22, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Mo"] = { + "nucvec": {420000000: 100.0}, + "density": 10.22, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['Aluminum6061'] = { - 'nucvec' : {120000000:1.0, 130000000:97.2, 140000000:0.6, 220000000:0.088, 240000000:0.195, 250000000:0.088, 260000000:0.4090, 290000000:0.275, 300000000:0.146}, - 'density' : 2.70, - 'citation' : 'pnnl-15870rev1' - } +mat_data["Aluminum6061"] = { + "nucvec": { + 120000000: 1.0, + 130000000: 97.2, + 140000000: 0.6, + 220000000: 0.088, + 240000000: 0.195, + 250000000: 0.088, + 260000000: 0.4090, + 290000000: 0.275, + 300000000: 0.146, + }, + "density": 2.70, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['OilTexasCrude'] = { - 'nucvec' : {10000000:12.3246, 60000000:85.2204, 70000000:0.7014, 160000000:1.7535}, - 'density' : 0.875, - 'citation' : 'pnnl-15870rev1' - } +mat_data["OilTexasCrude"] = { + "nucvec": { + 10000000: 12.3246, + 60000000: 85.2204, + 70000000: 0.7014, + 160000000: 1.7535, + }, + "density": 0.875, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['EthyleneGlycol'] = { - 'atom_frac' : {10000000:6, 60000000:2, 80000000:2}, - 'density' : 1.114, - 'citation' : 'pnnl-15870rev1' - } +mat_data["EthyleneGlycol"] = { + "atom_frac": {10000000: 6, 60000000: 2, 80000000: 2}, + "density": 1.114, + "citation": "pnnl-15870rev1", +} # reference: pnnl-15870rev1 -mat_data['AluminumOxide'] = { - 'atom_frac' : {80000000:3, 130000000:2}, - 'density' : 3.97, - 'citation' : 'pnnl-15870rev1' - } +mat_data["AluminumOxide"] = { + "atom_frac": {80000000: 3, 130000000: 2}, + "density": 3.97, + "citation": "pnnl-15870rev1", +} # fullreference: GrossbeckJNM_1998 M.L. Grossbeck et al.,"Analysis of V-Cr-Ti alloys in terms of activation of impurities", Journal of Nuclear Materials, vol. 258-263, page 1778-1783 1998. https://doi.org/10.1016/S0022-3115(98)00228-1 -# fullreference: ARIES_PropertiesArchive http://qedfusion.org/LIB/PROPS/ +# fullreference: ARIES_PropertiesArchive http://qedfusion.org/LIB/PROPS/ # fullreference: MetalsHandbook_1979 Metals Handbook, Ninth Edition, Vol. 2: "Properties and SelectionNonferrous Alloys and Pure Metals," ASM, Metals Park OH (1979) -mat_data['V4Cr4Ti'] = { - 'nucvec' : {220000000: 4.0,230000000: 92.0, 240000000: 4.0}, - 'density' : 6.05, # room temperature - 'citation' : 'GrossbeckJNM_1998 and density ARIES_PropertiesArchive and MetalsHandbook_1979' - } - -mat_data['ZrH2'] = { - 'atom_frac' : {10000000: 2,400000000: 1}, - 'density' : 5.61, #this is at room temperature - 'citation' : 'pnnl-15870rev1' - } - -# -mat_data['Inconel718'] = { - 'nucvec' : { 50000000: 0.0050, - 60000000: 0.0730, - 130000000: 0.5000, - 140000000: 0.3180, - 150000000: 0.0140, - 160000000: 0.0140, - 220000000: 0.9000, - 240000000: 19.0000, - 250000000: 0.3180, - 260000000: 17.0000, - 280000000: 52.5000, - 270000000: 0.9100, - 290000000: 0.2730, - 410000000: 5.1250, - 420000000: 3.0500}, - 'density' : 8.19, # room temperature - 'citation' : 'pnnl-15870rev1' - } +mat_data["V4Cr4Ti"] = { + "nucvec": {220000000: 4.0, 230000000: 92.0, 240000000: 4.0}, + "density": 6.05, # room temperature + "citation": "GrossbeckJNM_1998 and density ARIES_PropertiesArchive and MetalsHandbook_1979", +} + +mat_data["ZrH2"] = { + "atom_frac": {10000000: 2, 400000000: 1}, + "density": 5.61, # this is at room temperature + "citation": "pnnl-15870rev1", +} + +# +mat_data["Inconel718"] = { + "nucvec": { + 50000000: 0.0050, + 60000000: 0.0730, + 130000000: 0.5000, + 140000000: 0.3180, + 150000000: 0.0140, + 160000000: 0.0140, + 220000000: 0.9000, + 240000000: 19.0000, + 250000000: 0.3180, + 260000000: 17.0000, + 280000000: 52.5000, + 270000000: 0.9100, + 290000000: 0.2730, + 410000000: 5.1250, + 420000000: 3.0500, + }, + "density": 8.19, # room temperature + "citation": "pnnl-15870rev1", +} # reference: aries.ucsd.edu/PROPS/ITER/AM01/AM01-1100.html # fullreference: CRChandbook64 Bulk density of WC: 64th CRC Handbook of Chemistry and Physics, B-152 -mat_data['WC'] = { - 'atom_frac' : {60000000:1,740000000:1}, - 'density' : 15.63, - 'citation' : 'CRChandbook64B152' - } +mat_data["WC"] = { + "atom_frac": {60000000: 1, 740000000: 1}, + "density": 15.63, + "citation": "CRChandbook64B152", +} + # -------------------------------------------------------- def main(): - # create material library object + """Main function to create and write Pure Fusion Materials.""" mat_lib = MaterialLibrary() - print( "\n Creating Pure Fusion Materials...") - # - # get material definition + print("\nCreating Pure Fusion Materials...") + for mat_name, mat_input in mat_data.items(): - if 'nucvec' in mat_input: - mat_lib[mat_name] = make_mat(mat_input['nucvec'], mat_input['density'], mat_input['citation'], - mat_input.get('molecular_mass')) - if 'atom_frac' in mat_input: - mat_lib[mat_name] = make_mat_from_atom(mat_input['atom_frac'], mat_input['density'], mat_input['citation']) - + if "nucvec" in mat_input: + mat_lib[mat_name] = make_mat( + mat_input["nucvec"], + mat_input["density"], + mat_input["citation"], + mat_input.get("molecular_mass"), + mat_input.get("mass_enrichment"), + ) + elif "atom_frac" in mat_input: + mat_lib[mat_name] = make_mat_from_atom( + mat_input["atom_frac"], + mat_input["density"], + mat_input["citation"], + mat_input.get("mass_enrichment"), + ) # remove lib - try: + try: os.remove("PureFusionMaterials_libv1.json") - except: - pass - + except: + pass + # write fnsf1d material library mat_lib.write_json("PureFusionMaterials_libv1.json") print("All done!") - - + + if __name__ == "__main__": main() From 49166cf828b29f65661cfed4bf06204ca1fdd3fd Mon Sep 17 00:00:00 2001 From: FusionSandwich <145234893+FusionSandwich@users.noreply.github.com> Date: Tue, 16 Jul 2024 22:04:11 +0000 Subject: [PATCH 4/4] "Clear out a unused line of code" --- pureMaterials/mixPureFusionMaterials.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pureMaterials/mixPureFusionMaterials.py b/pureMaterials/mixPureFusionMaterials.py index 788a49b..085a658 100755 --- a/pureMaterials/mixPureFusionMaterials.py +++ b/pureMaterials/mixPureFusionMaterials.py @@ -18,11 +18,8 @@ from createPurematlib import ( make_mat, make_mat_from_atom, - update_nucvec, - update_atom_frac, ) from createPurematlib_og import mat_data as pure -from pyne import nucname def get_consituent_citations(materials): @@ -45,10 +42,8 @@ def mix_by_volume(material_library, vol_fracs, citation, mass_enrichment=None): # Will update later so things are less explicit, seems easier to read like this material = material.collapse_elements({1}) - - nucvec = dict(material.to_atom_frac()) - mat_input = pure[name] + if "atom_frac" in mat_input: atom_frac = mat_input["atom_frac"]