diff --git a/README.md b/README.md index a6cc926..6a26cfd 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ temperature and pressure. :point_right: [Documentation](https://neutronics-material-maker.readthedocs.io/en/latest/) -:point_right: [Video presentation](https://www.youtube.com/watch?v=V-VHLwRar9s) +:point_right: [Video presentation]() ## Installation @@ -106,17 +106,17 @@ my_mat2.openmc_material ``` -## Usage - MultiMaterial (Mixed Materials)) +## Usage - Material.from_mixture -Materials can also be mixed together using the MultiMaterial class. This +Materials can also be mixed together using the from_mixture method. This accepts a list of ```neutronics_material_maker.Materials``` or ```openmc.Material``` objects along with the material fractions (fracs). ```python import neutronics_material_maker as nmm -my_mat1 = nmm.Material('Li4SiO4', packing_fraction=0.64) -my_mat2 = nmm.Material('Be12Ti') -my_mat3 = MultiMaterial(materials=[my_mat1, my_mat2], +my_mat1 = nmm.Material.from_library(name='Li4SiO4', packing_fraction=0.64) +my_mat2 = nmm.Material.from_library(name='Be12Ti') +my_mat3 = nmm.Material.from_mixture(materials=[my_mat1, my_mat2], fracs=[0.4, 0.6], percent_type='vo') my_mat3.openmc_material diff --git a/docs/source/conf.py b/docs/source/conf.py index 61141f1..d62f974 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -20,7 +20,7 @@ # -- Project information ----------------------------------------------------- project = "NeutronicsMaterialMaker" -copyright = "2020, UKAEA and neutronics-material-maker contributors" +copyright = "2020-2021 neutronics-material-maker contributors" author = "neutronics-material-maker development team" # The short X.Y version @@ -133,7 +133,7 @@ master_doc, "NeutronicsMaterialMaker.tex", "NeutronicsMaterialMaker Documentation", - "John Billingsley", + "Neutronics material maker contributors", "manual", ) ] diff --git a/docs/source/example_library_usage.rst b/docs/source/example_library_usage.rst deleted file mode 100644 index 063ccfc..0000000 --- a/docs/source/example_library_usage.rst +++ /dev/null @@ -1,68 +0,0 @@ -Interal library searching, extension and exporting -================================================== - -Usage - finding available materials ------------------------------------ - -Each of the materials available is stored in an internal dictionary that can be -accessed using the AvailableMaterials() command. - -.. code-block:: python - - import neutronics_material_maker as nmm - all_materials = nmm.AvailableMaterials() - print(all_materials.keys()) - -Usage - importing your own library from a file ----------------------------------------------- - -A correctly formated JSON file that contains materials defined in the same -format as the `exisiting materials `_ can be added to the material library. - -Assuming you have a JSON file saved as mat_lib.json with the following contents -then this can be added to the material library in the the following manner. - -:: - - { - "my_secret_material": { - "density": 1.0, - "percent_type":"ao", - "density_unit": "g/cm3", - "elements": { - "H": 0.2, - "C": 0.8 - }, - } - } - -This example file only contains one material but it could contain a list of -several materials. - -You can import this file into the package using AddMaterialFromFile(). - -.. code-block:: python - - import neutronics_material_maker as nmm - nmm.AddMaterialFromFile('mat_lib.json') - my_new_material = nmm.Material('my_secret_material') - -Another option is to use AddMaterialFromDir() to import a directory of JSON files. - -Usage - exporting a material to a JSON file -------------------------------------------- - -Materials can also be exported to a JSON file as demonstrated below - -.. code-block:: python - - import json - - import neutronics_material_maker as nmm - - my_mat1 = nmm.Material('eurofer') - my_mat2 = nmm.Material('Li4SiO4') - - with open('my_materials.json', 'w') as outfile: - json.dump([my_mat1, my_mat2], outfile, indent=4) - diff --git a/docs/source/example_material.rst b/docs/source/example_material.rst index 32308a4..b132e50 100644 --- a/docs/source/example_material.rst +++ b/docs/source/example_material.rst @@ -1,103 +1,7 @@ Example Material() usage ======================== -Usage - basic Material() ------------------------- - -Here is an example that accesses a material from the internal collection called eurofer which has about 60 isotopes and a density of 7.78g/cm3. - -.. code-block:: python - - import neutronics_material_maker as nmm - - my_mat = nmm.Material('eurofer') - -Once the object has been initiated the OpenMC or Serpent material card can be accessed. - -.. code-block:: python - - my_mat.openmc_material - my_mat.serpent_material - -To access MCNP material it is necessary to also provide an id. - -.. code-block:: python - - my_mat = nmm.Material('eurofer', material_id=1) - my_mat.mcnp_material - -To access the Fispact material it is necessary to also provide a volume. - -.. code-block:: python - - my_mat = nmm.Material('eurofer', volume_in_cm3=10) - my_mat.fispact_material - -To access the Shift material it is necessary to also provide a temperature and -a material id - -.. code-block:: python - - my_mat = nmm.Material('eurofer', temperature=293, material_id=1) - my_mat.shift_material - - -Usage - hot pressurised Material() ------------------------------------ - -For several materials within the collection the temperature and the pressure impacts the density of the material. The neutronics_material_maker adjusts the density to take temperature (in C or K) and the pressure into account when appropriate. Densities are calculated either by a material specific formula (for example `FLiBe `_) or using `CoolProps `_ (for example coolants such as H2O). - -.. code-block:: python - - import neutronics_material_maker as nmm - - my_mat1 = nmm.Material('H2O', temperature=300, pressure=15e6) - - my_mat1.openmc_material - -Temperature can be provided in degrees C or Kelvin. - -.. code-block:: python - - import neutronics_material_maker as nmm - - my_mat1 = nmm.Material('H2O', temperature=573.15, pressure=15e6) - - my_mat1.openmc_material - -The temperature is automatically sent to the openmc_material and -serpent_material cards. However if this causes difficulties for you (perhaps -due to not having cross sections at that temperature) this automatic propagate -of temperature information can be disabled by setting the -temperature_to_neutronics_code to False. - - -Usage - enriched Material() ---------------------------- - -For several materials within the collection the density is adjusted when the material is enriched. For breeder blankets in fusion it is common to enrich the lithium 6 content. - -Lithium ceramics used in fusion breeder blankets often contain enriched lithium-6 content. This slight change in density is accounted for by the neutronics_material_maker. - -.. code-block:: python - - import neutronics_material_maker as nmm - - my_mat2 = nmm.Material('Li4SiO4', enrichment=60) - - my_mat2.openmc_material - - -The default enrichment target for 'Li4SiO4' is Li6 but this can be changed if required. - -.. code-block:: python - - import neutronics_material_maker as nmm - - my_mat2 = nmm.Material('Li4SiO4', enrichment_target='Li7', enrichment=40) - - my_mat2.openmc_material - +While the internal data bases contain Usage - make a your own materials --------------------------------- @@ -154,7 +58,8 @@ Example making materials from isotopes defined by zaid } ) -It is also possible to make your own materials directly from a dictionary by making use of the python syntax ** +It is also possible to make your own materials directly from a dictionary by +making use of the python syntax to exspand a dictionary ** .. code-block:: python @@ -172,54 +77,3 @@ It is also possible to make your own materials directly from a dictionary by mak } my_mat = nmm.Material(**my_dict) - -Usage - adding extra lines to a material card ---------------------------------------------- - -If you require additional lines at the end of the MCNP, Serpent, Fispact or -Shift materia card then the additional_end_lines argument can be used. This -will add specific line(s) to the end of a material card. Multiple lines can be -added by creating a list with multiple entries. - -In this example and additional line can be added to allow the S(α,β) treatment -of water to be correctly modeled in MCNP. But this could also be used to add -comments to the material card or other text at the end of the material card -string. - -.. code-block:: python - - import neutronics_material_maker as nmm - - my_mat2 = nmm.Material( - 'H2O', - material_id=24, - temperature=573.15, - pressure=15e6, - additional_end_lines={'mcnp': [' mt24 lwtr.01']} - ) - - print(my_mat2.mcnp_material) - -The above code will return a MCNP material card string with the additional line -' mt24 lwtr.01' at the end. Notice that spaces should also be set by the -user. - -.. code-block:: bash - - c H2O density 7.25553605e-01 g/cm3 - M24 001001 6.66562840e-01 - 001002 1.03826667e-04 - 008016 3.32540200e-01 - 008017 1.26333333e-04 - 008018 6.66800000e-04 - mt24 lwtr.01 - -It is also possible to specifiy this additional line in a JSON file and -then read in the file and export the material. The additional end lines can -also support different outputs for different codes and multiple lines being -appended to the material card as demonstrated in this video on the feature. - -.. raw:: html - - - diff --git a/docs/source/example_material_from_library.rst b/docs/source/example_material_from_library.rst new file mode 100644 index 0000000..9c39c53 --- /dev/null +++ b/docs/source/example_material_from_library.rst @@ -0,0 +1,225 @@ +Example Material.from_library() usage +===================================== + +Usage - finding available materials +----------------------------------- + +Each of the materials available is stored in an internal dictionary that can be +accessed using the AvailableMaterials() command. + +.. code-block:: python + + import neutronics_material_maker as nmm + all_materials = nmm.AvailableMaterials() + print(all_materials.keys()) + + +Usage - making materials from libraries +--------------------------------------- + +Here is an example that accesses a material from the internal collection called eurofer which has about 60 isotopes and a density of 7.78g/cm3. + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat = nmm.Material.from_library(name='eurofer') + +Once the object has been initiated the OpenMC or Serpent material card can be accessed. + +.. code-block:: python + + my_mat.openmc_material + my_mat.serpent_material + +To access MCNP material it is necessary to also provide an id. + +.. code-block:: python + + my_mat = nmm.Material.from_library(name='eurofer', material_id=1) + my_mat.mcnp_material + +To access the Fispact material it is necessary to also provide a volume. + +.. code-block:: python + + my_mat = nmm.Material.from_library(name='eurofer', volume_in_cm3=10) + my_mat.fispact_material + +To access the Shift material it is necessary to also provide a temperature and +a material id + +.. code-block:: python + + my_mat = nmm.Material.from_library(name='eurofer', temperature=293, material_id=1) + my_mat.shift_material + +Usage - customising materials from libraries +-------------------------------------------- + +Usage - hot pressurised Material() +----------------------------------- + +For several materials within the collection the temperature and the pressure impacts the density of the material. The neutronics_material_maker adjusts the density to take temperature (in C or K) and the pressure into account when appropriate. Densities are calculated either by a material specific formula (for example `FLiBe `_) or using `CoolProps `_ (for example coolants such as H2O). + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat1 = nmm.Material.from_library('H2O', temperature=300, pressure=15e6) + + my_mat1.openmc_material + +Temperature can be provided in degrees C or Kelvin. + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat1 = nmm.Material.from_library('H2O', temperature=573.15, pressure=15e6) + + my_mat1.openmc_material + +The temperature is automatically sent to the openmc_material and +serpent_material cards. However if this causes difficulties for you (perhaps +due to not having cross sections at that temperature) this automatic propagate +of temperature information can be disabled by setting the +temperature_to_neutronics_code to False. + + +Usage - enriched Material() +--------------------------- + +For several materials within the collection the density is adjusted when the material is enriched. For breeder blankets in fusion it is common to enrich the lithium 6 content. + +Lithium ceramics used in fusion breeder blankets often contain enriched lithium-6 content. This slight change in density is accounted for by the neutronics_material_maker. + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat2 = nmm.Material.from_library('Li4SiO4', enrichment=60) + + my_mat2.openmc_material + + +The default enrichment target for 'Li4SiO4' is Li6 but this can be changed if required. + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat2 = nmm.Material.from_library('Li4SiO4', enrichment_target='Li7', enrichment=40) + + my_mat2.openmc_material + + +Usage - adding extra lines to a material card +--------------------------------------------- + +If you require additional lines at the end of the MCNP, Serpent, Fispact or +Shift materia card then the additional_end_lines argument can be used. This +will add specific line(s) to the end of a material card. Multiple lines can be +added by creating a list with multiple entries. + +In this example and additional line can be added to allow the S(α,β) treatment +of water to be correctly modeled in MCNP. But this could also be used to add +comments to the material card or other text at the end of the material card +string. + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat2 = nmm.Material.from_library( + name='H2O', + material_id=24, + temperature=573.15, + pressure=15e6, + additional_end_lines={'mcnp': [' mt24 lwtr.01']} + ) + + print(my_mat2.mcnp_material) + +The above code will return a MCNP material card string with the additional line +' mt24 lwtr.01' at the end. Notice that spaces should also be set by the +user. + +.. code-block:: bash + + c H2O density 7.25553605e-01 g/cm3 + M24 001001 6.66562840e-01 + 001002 1.03826667e-04 + 008016 3.32540200e-01 + 008017 1.26333333e-04 + 008018 6.66800000e-04 + mt24 lwtr.01 + +It is also possible to specifiy this additional line in a JSON file and +then read in the file and export the material. The additional end lines can +also support different outputs for different codes and multiple lines being +appended to the material card as demonstrated in this video on the feature. + +.. raw:: html + + + + +Usage - importing your own library from a file +---------------------------------------------- + +A correctly formated JSON file that contains materials defined in the same +format as the `exisiting materials `_ can be added to the material library. + +Assuming you have a JSON file saved as mat_lib.json with the following contents +then this can be added to the material library in the the following manner. + +:: + + { + "my_secret_material": { + "density": 1.0, + "percent_type":"ao", + "density_unit": "g/cm3", + "elements": { + "H": 0.2, + "C": 0.8 + }, + } + } + +This example file only contains one material but it could contain a list of +several materials. + +You can import this file into the package using AddMaterialFromFile(). + +.. code-block:: python + + import neutronics_material_maker as nmm + nmm.AddMaterialFromFile('mat_lib.json') + my_new_material = nmm.Material.from_library(name='my_secret_material') + +Another option is to use AddMaterialFromDir() to import a directory of JSON files. + +Usage - exporting a material to a JSON file +------------------------------------------- + +Materials can also be exported to a JSON file as demonstrated below. This JSON +file can then be read back in if required using the AddMaterialFromDir or +AddMaterialFromFile utility functions. + +.. code-block:: python + + import neutronics_material_maker as nmm + + my_mat1 = nmm.Material.from_library(name='eurofer', material_id=1) + my_mat2 = nmm.Material.from_library(name='Li4SiO4', material_id=1) + + nmm.SaveMaterialsToFile( + filename='my_materials.json', + materials=[my_mat1, my_mat2], + format='json', + ) + +The format can be changed to 'mcnp', 'serpent', 'shift' or 'fispact' to output +a list of nmm.Materials in those formats. diff --git a/docs/source/example_material_from_mixture.rst b/docs/source/example_material_from_mixture.rst new file mode 100644 index 0000000..de97bef --- /dev/null +++ b/docs/source/example_material_from_mixture.rst @@ -0,0 +1,35 @@ +Example Material.from_mixture() usage +===================================== + +Usage - mixing two materials using Material.from_mixture +-------------------------------------------------------- + +Making two materials and mixing them to create a new material, the density +of the new material will be calculated from the mixture of the two materials. + +This example mixes two materials with 40% of mat1 and 60% of mat2 by volume +fraction + +.. code-block:: python + + import neutronics_material_maker as nmm + + mat1 = nmm.Material.from_library(name='eurofer') + mat2 = nmm.Material.from_library(name='tungsten') + + mat3 = nmm.Material.from_mixture( + name='mixed_eurofer_and_tungsten', + materials=[mat1, mat2], + fracs=[0.4, 0.6], + percent_type='vo' + ) + +This new material can then be exported to a file, perhaps as part of +a new material library and retrieve later + +.. code-block:: python + + import json + + with open('my_mixed_material.json', 'w') as outfile: + json.dump(mat3, outfile, indent=4) diff --git a/docs/source/example_multimaterial.rst b/docs/source/example_multimaterial.rst deleted file mode 100644 index 3aa7ad4..0000000 --- a/docs/source/example_multimaterial.rst +++ /dev/null @@ -1,25 +0,0 @@ -Example MultiMaterial() usage -============================= - -Usage - mixing two materials to make a MultiMaterial ----------------------------------------------------- - -Making two materials and mixing them to create a MultiMaterial, the density -of the new material will be calculated from the mixture of the two materials. - -This example mixes two materials with 40% of mat1 and 60% of mat2 by volume -fraction - -.. code-block:: python - - import neutronics_material_maker as nmm - - mat1 = nmm.Material('eurofer') - mat2 = nmm.Material('tungsten') - - mat3 = nmm.MultiMaterial( - material_tag='mixed_mat', - materials=[mat1, mat2], - fracs=[0.4, 0.6], - percent_type='vo' - ) diff --git a/docs/source/index.rst b/docs/source/index.rst index e097c23..2aec3d3 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -16,7 +16,7 @@ isotopic enrichment. .. raw:: html - + .. toctree:: @@ -24,10 +24,9 @@ isotopic enrichment. material - multimaterial example_material - example_multimaterial - example_library_usage + example_material_from_mixture + example_material_from_library History @@ -86,17 +85,14 @@ the development version. Features -------- -There are two main user classes +There is just on user class `Material() `_ -and -`MutliMaterial() `_ -which are both fully documented. Example Scripts --------------- -There are several examples in the relevant example webpages; `example Material usage `_ and `example MutliMaterial usage `_ . +There are several examples in the relevant example webpages; `example Material usage `_ . Additionally there are more examples in the `OpenMC workshop `_ . diff --git a/docs/source/material.rst b/docs/source/material.rst index 649dc50..fe44852 100644 --- a/docs/source/material.rst +++ b/docs/source/material.rst @@ -1,5 +1,5 @@ -Material() -========== +Material() class +================ .. automodule:: neutronics_material_maker.material.Material diff --git a/docs/source/multimaterial.rst b/docs/source/multimaterial.rst deleted file mode 100644 index da682ef..0000000 --- a/docs/source/multimaterial.rst +++ /dev/null @@ -1,6 +0,0 @@ -MultiMaterial() -=============== - -.. automodule:: neutronics_material_maker.MultiMaterial - :members: - :show-inheritance: \ No newline at end of file diff --git a/neutronics_material_maker/__init__.py b/neutronics_material_maker/__init__.py index e031dbe..3aaddcb 100644 --- a/neutronics_material_maker/__init__.py +++ b/neutronics_material_maker/__init__.py @@ -10,6 +10,6 @@ from .utils import zaid_to_isotope from .utils import check_add_additional_end_lines from .utils import NATURAL_ABUNDANCE +from .utils import SaveMaterialsToFile from .material import Material -from .mutlimaterial import MultiMaterial diff --git a/neutronics_material_maker/data/breeder_materials.json b/neutronics_material_maker/data/breeder_materials.json index 5e75e02..d67206c 100644 --- a/neutronics_material_maker/data/breeder_materials.json +++ b/neutronics_material_maker/data/breeder_materials.json @@ -1,10 +1,9 @@ { "Li": { "chemical_equation": "Li", - "density_equation": "0.515 - 1.01e-4 * (temperature + 273.15 - 200)", + "density": "0.515 - 1.01e-4 * (temperature + 273.15 - 200)", "density_unit": "g/cm3", - "reference": "http://aries.ucsd.edu/LIB/PROPS/PANOS/li.html", - "temperature_dependant": true, + "comment": "http://aries.ucsd.edu/LIB/PROPS/PANOS/li.html", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" @@ -13,8 +12,7 @@ "chemical_equation": "FLiNaK", "density": 2.1, "density_unit":"g/cm3", - "enrichable": true, - "reference": "Based on chemical formula", + "comment": "Based on chemical formula", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" diff --git a/neutronics_material_maker/data/breeder_materials_with_crystal_structure.json b/neutronics_material_maker/data/breeder_materials_with_crystal_structure.json index af993f0..59119d6 100644 --- a/neutronics_material_maker/data/breeder_materials_with_crystal_structure.json +++ b/neutronics_material_maker/data/breeder_materials_with_crystal_structure.json @@ -4,9 +4,7 @@ "atoms_per_unit_cell": 2, "volume_of_unit_cell_cm3": 0.17162883501e-21, "density_unit":"g/cm3", - "enrichable": true, - "packable": true, - "reference": "DOI 10.17188/1188336 https://materialsproject.org/materials/mp-11737/", + "comment": "DOI 10.17188/1188336 https://materialsproject.org/materials/mp-11737/", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" @@ -16,9 +14,7 @@ "atoms_per_unit_cell": 2, "volume_of_unit_cell_cm3": 0.12255616623e-21, "density_unit":"g/cm3", - "enrichable": true, - "packable": true, - "reference": "DOI 10.17188/1208560 https://materialsproject.org/materials/mp-5012/", + "comment": "DOI 10.17188/1208560 https://materialsproject.org/materials/mp-5012/", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" @@ -28,9 +24,7 @@ "atoms_per_unit_cell": 2, "volume_of_unit_cell_cm3": 0.12610426777e-21, "density_unit":"g/cm3", - "enrichable": true, - "packable": true, - "reference": "DOI 10.17188/1207897 https://materialsproject.org/materials/mp-4156/", + "comment": "DOI 10.17188/1207897 https://materialsproject.org/materials/mp-4156/", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" @@ -40,9 +34,7 @@ "atoms_per_unit_cell": 4, "volume_of_unit_cell_cm3": 0.21849596020e-21, "density_unit":"g/cm3", - "enrichable": true, - "packable": true, - "reference": "DOI 10.17188/1203676 https://materialsproject.org/materials/mp-2931/", + "comment": "DOI 10.17188/1203676 https://materialsproject.org/materials/mp-2931/", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" diff --git a/neutronics_material_maker/data/coolant_materials.json b/neutronics_material_maker/data/coolant_materials.json index bd9a8cf..ab97c85 100644 --- a/neutronics_material_maker/data/coolant_materials.json +++ b/neutronics_material_maker/data/coolant_materials.json @@ -1,20 +1,16 @@ { "He": { "elements": {"He": 1.0}, - "density_equation": "PropsSI('D', 'T', temperature, 'P', pressure, 'Helium')", + "density": "PropsSI('D', 'T', temperature, 'P', pressure, 'Helium')", "density_unit": "kg/m3", - "reference": "CoolProp python package for density equation", - "temperature_dependant": true, - "pressure_dependant": true, + "comment": "CoolProp python package for density equation", "percent_type": "ao" }, "H2O": { "chemical_equation": "H2O", - "density_equation": "PropsSI('D', 'T', temperature, 'P', pressure, 'Water')/1000.", + "density": "PropsSI('D', 'T', temperature, 'P', pressure, 'Water')/1000.", "density_unit": "g/cm3", - "reference": "CoolProp python package", - "temperature_dependant": true, - "pressure_dependant": true, + "comment": "CoolProp python package", "percent_type": "ao" }, "D2O": { @@ -28,38 +24,30 @@ }, "CO2": { "chemical_equation": "CO2", - "density_equation": "PropsSI('D', 'T', temperature, 'P', pressure, 'CO2')/1000.", + "density": "PropsSI('D', 'T', temperature, 'P', pressure, 'CO2')/1000.", "density_unit": "g/cm3", - "reference": "CoolProp python package", - "temperature_dependant": true, - "pressure_dependant": true, + "comment": "CoolProp python package", "percent_type": "ao" }, "nitrogen": { "chemical_equation": "N", - "density_equation": "PropsSI('D', 'T', temperature, 'P', pressure, 'nitrogen')/1000.", + "density": "PropsSI('D', 'T', temperature, 'P', pressure, 'nitrogen')/1000.", "density_unit": "g/cm3", - "reference": "CoolProp python package", - "temperature_dependant": true, - "pressure_dependant": true, + "comment": "CoolProp python package", "percent_type": "ao" }, "argon": { "chemical_equation": "Ar", - "density_equation": "PropsSI('D', 'T', temperature, 'P', pressure, 'argon')/1000.", + "density": "PropsSI('D', 'T', temperature, 'P', pressure, 'argon')/1000.", "density_unit": "g/cm3", - "reference": "CoolProp python package", - "temperature_dependant": true, - "pressure_dependant": true, + "comment": "CoolProp python package", "percent_type": "ao" }, "xenon": { "chemical_equation": "Xe", - "density_equation": "PropsSI('D', 'T', temperature, 'P', pressure, 'xenon')/1000.", + "density": "PropsSI('D', 'T', temperature, 'P', pressure, 'xenon')/1000.", "density_unit": "g/cm3", - "reference": "CoolProp python package", - "temperature_dependant": true, - "pressure_dependant": true, + "comment": "CoolProp python package", "percent_type": "ao" } } diff --git a/neutronics_material_maker/data/moderators.json b/neutronics_material_maker/data/moderators.json index 1d534dd..ab94e08 100644 --- a/neutronics_material_maker/data/moderators.json +++ b/neutronics_material_maker/data/moderators.json @@ -5,7 +5,7 @@ }, "density": 1.91, "density_unit": "g/cm3", - "reference": "Toyo Tanso isotropic graphite HPG-59 https://www.toyotanso.com/Products/Special_graphite/data.html", + "comment": "Toyo Tanso isotropic graphite HPG-59 https://www.toyotanso.com/Products/Special_graphite/data.html", "percent_type": "ao" } } diff --git a/neutronics_material_maker/data/multiplier_and_breeder_materials.json b/neutronics_material_maker/data/multiplier_and_breeder_materials.json index 280f400..789d85d 100644 --- a/neutronics_material_maker/data/multiplier_and_breeder_materials.json +++ b/neutronics_material_maker/data/multiplier_and_breeder_materials.json @@ -1,21 +1,18 @@ { "Pb842Li158": { "chemical_equation": "Pb842Li158", - "density_equation": "99.90*(0.1-16.8e-6*(temperature + 273.15))", + "density": "99.90*(0.1-16.8e-6*(temperature + 273.15))", "density_unit": "g/cm3", - "reference": "density equation valid for in the range 240-350 C. source http://aries.ucsd.edu/LIB/PROPS/PANOS/lipb.html", - "temperature_dependant": true, - "enrichable": true, + "comment": "density equation valid for in the range 240-350 C. source http://aries.ucsd.edu/LIB/PROPS/PANOS/lipb.html", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type": "ao" }, "lithium-lead": { "chemical_equation": "Pb842Li158", - "density_equation": "99.90*(0.1-16.8e-6*(temperature + 273.15))", + "density": "99.90*(0.1-16.8e-6*(temperature + 273.15))", "density_unit": "g/cm3", - "reference": "density equation valid for in the range 240-350 C. source http://aries.ucsd.edu/LIB/PROPS/PANOS/lipb.html", - "temperature_dependant": true, + "comment": "density equation valid for in the range 240-350 C. source http://aries.ucsd.edu/LIB/PROPS/PANOS/lipb.html", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" @@ -25,19 +22,16 @@ "atoms_per_unit_cell": 1, "volume_of_unit_cell_cm3": 0.14400485967e-21, "density_unit":"g/cm3", - "enrichable": true, - "packable": true, - "reference": "DOI 10.17188/1198772 https://materialsproject.org/materials/mp-22538/", + "comment": "DOI 10.17188/1198772 https://materialsproject.org/materials/mp-22538/", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" }, "FLiBe": { "chemical_equation": "F2Li2BeF2", - "density_equation": "2.214 - 4.2e-4 * (temperature + 273.15)", + "density": "2.214 - 4.2e-4 * (temperature + 273.15)", "density_unit": "g/cm3", - "reference": "source http://aries.ucsd.edu/LIB/MEETINGS/0103-TRANSMUT/gohar/Gohar-present.pdf", - "temperature_dependant": true, + "comment": "source http://aries.ucsd.edu/LIB/MEETINGS/0103-TRANSMUT/gohar/Gohar-present.pdf", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" @@ -46,8 +40,7 @@ "chemical_equation": "FLiNaBe", "density": 2.05, "density_unit":"g/cm3", - "enrichable": true, - "reference": "Based on chemical formula", + "comment": "Based on chemical formula", "percent_type": "ao", "enrichment_target":"Li6", "enrichment_type":"ao" diff --git a/neutronics_material_maker/data/multiplier_materials.json b/neutronics_material_maker/data/multiplier_materials.json index 098a123..16f8fb9 100644 --- a/neutronics_material_maker/data/multiplier_materials.json +++ b/neutronics_material_maker/data/multiplier_materials.json @@ -1,9 +1,9 @@ { "Pb": { "chemical_equation": "Pb", - "density_equation": "10.678 - 13.174e-4 * (temperature-600.6)", + "density": "10.678 - 13.174e-4 * (temperature-600.6)", "density_unit": "g/cm3", - "reference": "https://www.sciencedirect.com/science/article/abs/pii/0022190261802261", + "comment": "https://www.sciencedirect.com/science/article/abs/pii/0022190261802261", "percent_type": "ao" }, "Be": { @@ -11,19 +11,15 @@ "atoms_per_unit_cell": 2, "volume_of_unit_cell_cm3": 0.01587959994e-21, "density_unit": "g/cm3", - "enrichable": false, - "packable": true, - "reference": "DOI 10.17188/1312591 https://materialsproject.org/materials/mp-87/", + "comment": "DOI 10.17188/1312591 https://materialsproject.org/materials/mp-87/", "percent_type": "ao" }, "Be12Ti": { "chemical_equation": "Be12Ti", "atoms_per_unit_cell": 1, "volume_of_unit_cell_cm3": 0.11350517285e-21, - "enrichable": false, "density_unit": "g/cm3", - "packable": true, - "reference": "DOI 10.17188/1187703 https://materialsproject.org/materials/mp-11280/", + "comment": "DOI 10.17188/1187703 https://materialsproject.org/materials/mp-11280/", "percent_type": "ao" }, "Ba5Pb3": { @@ -31,9 +27,7 @@ "atoms_per_unit_cell": 2, "volume_of_unit_cell_cm3": 0.74343377212e-21, "density_unit": "g/cm3", - "enrichable": false, - "packable": true, - "reference": "DOI 10.17188/1278091 https://materialsproject.org/materials/mp-622106/", + "comment": "DOI 10.17188/1278091 https://materialsproject.org/materials/mp-622106/", "percent_type": "ao" }, "Nd5Pb4": { @@ -41,9 +35,7 @@ "atoms_per_unit_cell": 4, "volume_of_unit_cell_cm3": 1.17174024048e-21, "density_unit": "g/cm3", - "enrichable": false, - "packable": true, - "reference": "https://materialsproject.org/materials/mp-1204902/", + "comment": "https://materialsproject.org/materials/mp-1204902/", "percent_type": "ao" }, "Zr5Pb3": { @@ -51,9 +43,7 @@ "atoms_per_unit_cell": 2, "volume_of_unit_cell_cm3": 0.43511266920e-21, "density_unit": "g/cm3", - "enrichable": false, - "packable": true, - "reference": "DOI 10.17188/1283750 https://materialsproject.org/materials/mp-681992/", + "comment": "DOI 10.17188/1283750 https://materialsproject.org/materials/mp-681992/", "percent_type": "ao" }, "Zr5Pb4": { diff --git a/neutronics_material_maker/data/pnnl_materials.json b/neutronics_material_maker/data/pnnl_materials.json index b8c1101..1173603 100644 --- a/neutronics_material_maker/data/pnnl_materials.json +++ b/neutronics_material_maker/data/pnnl_materials.json @@ -3,7 +3,7 @@ "density":1.127, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.58364, "C":0.374859, @@ -17,7 +17,7 @@ "density":0.7899, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.599985, "C":0.300013, @@ -28,7 +28,7 @@ "density":0.001097, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499983, "C":0.500017 @@ -38,7 +38,7 @@ "density":0.001205, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.00015, "N":0.784431, @@ -50,7 +50,7 @@ "density":1.42, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.53845, "C":0.230778, @@ -62,7 +62,7 @@ "density":2.6989, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Al":1.0 } @@ -71,7 +71,7 @@ "density":3.97, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6, "Al":0.4 @@ -81,7 +81,7 @@ "density":2.78, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Mg":0.017158, "Al":0.955163, @@ -98,7 +98,7 @@ "density":2.59, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.083519, "Mg":0.001728, @@ -117,7 +117,7 @@ "density":2.73, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Al":0.987924, "Si":0.00322, @@ -131,7 +131,7 @@ "density":2.69, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Be":1.5e-05, "Mg":0.000313, @@ -148,7 +148,7 @@ "density":2.66, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Mg":0.044473, "Al":0.947944, @@ -165,7 +165,7 @@ "density":2.7, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Mg":0.011162, "Al":0.977325, @@ -182,7 +182,7 @@ "density":2.81, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Mg":0.029014, "Al":0.933062, @@ -199,7 +199,7 @@ "density":0.771, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.749992, "N":0.250008 @@ -209,7 +209,7 @@ "density":1.25, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.416667, "C":0.583333 @@ -219,7 +219,7 @@ "density":0.001662, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ar":1.0 } @@ -228,7 +228,7 @@ "density":1.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.586755, "C":0.402588, @@ -243,7 +243,7 @@ "density":2.5784, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.134043, "C":0.110118, @@ -268,7 +268,7 @@ "density":1.25, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.431814, "C":0.488641, @@ -279,7 +279,7 @@ "density":4.89, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.666662, "Ba":0.333338 @@ -289,7 +289,7 @@ "density":4.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666682, "S":0.166644, @@ -300,7 +300,7 @@ "density":0.8765, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499983, "C":0.500017 @@ -310,7 +310,7 @@ "density":1.848, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Be":1.0 } @@ -319,7 +319,7 @@ "density":1.9, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Be":0.666667, "C":0.333333 @@ -329,7 +329,7 @@ "density":3.01, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Be":0.5, "O":0.5 @@ -339,7 +339,7 @@ "density":9.747, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Bi":1.0 } @@ -348,7 +348,7 @@ "density":7.13, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.631647, "Ge":0.157804, @@ -359,7 +359,7 @@ "density":1.06, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.634604, "C":0.052291, @@ -381,7 +381,7 @@ "density":1.45, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.513809, "C":0.35363, @@ -395,7 +395,7 @@ "density":1.785, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.386404, "C":0.335506, @@ -409,7 +409,7 @@ "density":1.85, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.527886, "C":0.192478, @@ -425,7 +425,7 @@ "density":1.85, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.475389, "C":0.121904, @@ -442,7 +442,7 @@ "density":2.53, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.454507, "C":0.113475, @@ -453,7 +453,7 @@ "density":2.6, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.217879, "Na":0.005123, @@ -468,7 +468,7 @@ "density":2.6, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.116547, "Na":0.005481, @@ -483,7 +483,7 @@ "density":1.73, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.465116, "B":0.093023, @@ -495,7 +495,7 @@ "density":1.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.428571, "B":0.142857, @@ -506,7 +506,7 @@ "density":2.37, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":1.0 } @@ -515,7 +515,7 @@ "density":2.52, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.799981, "C":0.200019 @@ -525,7 +525,7 @@ "density":0.004058, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.333333, "F":0.666667 @@ -535,7 +535,7 @@ "density":0.002831, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.25, "F":0.75 @@ -545,7 +545,7 @@ "density":1.812, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.399978, "O":0.600022 @@ -555,7 +555,7 @@ "density":1.03, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.654712, "C":0.062268, @@ -576,7 +576,7 @@ "density":8.07, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Fe":0.001002, "Cu":0.674918, @@ -589,7 +589,7 @@ "density":1.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.663432, "AL":0.003747, @@ -602,7 +602,7 @@ "density":2.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.636337, "Mg":0.005057, @@ -617,7 +617,7 @@ "density":2.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.635745, "Mg":0.001008, @@ -632,7 +632,7 @@ "density":8.4, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Al":0.065613, "Si":0.007378, @@ -649,7 +649,7 @@ "density":1.76, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.268599, "C":0.458133, @@ -662,7 +662,7 @@ "density":8.65, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Cd":1.0 } @@ -671,7 +671,7 @@ "density":2.45, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.380952, "N":0.095238, @@ -683,7 +683,7 @@ "density":6.2, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Cd":0.499997, "Te":0.500003 @@ -693,7 +693,7 @@ "density":7.9, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666662, "Cd":0.166664, @@ -704,7 +704,7 @@ "density":2.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200002, "O":0.599991, @@ -715,7 +715,7 @@ "density":3.18, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.666655, "Ca":0.333345 @@ -725,7 +725,7 @@ "density":3.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.499987, "Ca":0.500013 @@ -735,7 +735,7 @@ "density":2.96, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666678, "S":0.166644, @@ -746,7 +746,7 @@ "density":0.001842, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.333333, "O":0.666667 @@ -756,7 +756,7 @@ "density":1.594, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200003, "Cl":0.799997 @@ -766,7 +766,7 @@ "density":0.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":1e-06, "C":0.999999 @@ -776,7 +776,7 @@ "density":2.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":1e-06, "C":0.999999 @@ -786,7 +786,7 @@ "density":1.7, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":1e-06, "C":0.999999 @@ -796,7 +796,7 @@ "density":1.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.437442, "O":0.437316, @@ -810,7 +810,7 @@ "density":1.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.213314, "O":0.528366, @@ -827,7 +827,7 @@ "density":1.42, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.476179, "C":0.285724, @@ -838,7 +838,7 @@ "density":0.24, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.47619, "C":0.285714, @@ -849,7 +849,7 @@ "density":1.03, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.659087, "N":0.000353, @@ -862,7 +862,7 @@ "density":6.16, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.75, "Ce":0.25 @@ -872,7 +872,7 @@ "density":4.51, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "I":0.5, "Cs":0.5 @@ -882,7 +882,7 @@ "density":7.18, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Cr":1.0 } @@ -891,7 +891,7 @@ "density":2.2, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6333, "Na":0.006923, @@ -910,7 +910,7 @@ "density":0.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.228612, "C":0.74902, @@ -923,7 +923,7 @@ "density":0.75, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.421425, "C":0.533649, @@ -936,7 +936,7 @@ "density":0.75, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.357505, "C":0.519319, @@ -949,7 +949,7 @@ "density":3.35, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.109602, "O":0.600189, @@ -966,7 +966,7 @@ "density":3.36, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.235416, "O":0.548162, @@ -985,7 +985,7 @@ "density":3.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.147522, "B":0.025543, @@ -1008,7 +1008,7 @@ "density":3.2, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.208729, "B":0.022437, @@ -1028,7 +1028,7 @@ "density":4.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.158643, "O":0.207881, @@ -1044,7 +1044,7 @@ "density":2.18, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.07844, "O":0.595591, @@ -1061,7 +1061,7 @@ "density":2.35, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.20517, "O":0.539084, @@ -1078,7 +1078,7 @@ "density":4.4, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.018192, "O":0.412591, @@ -1095,7 +1095,7 @@ "density":5.9, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.135585, "O":0.150644, @@ -1112,7 +1112,7 @@ "density":4.54, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.20964, "O":0.301631, @@ -1129,7 +1129,7 @@ "density":2.25, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.084739, "O":0.604079, @@ -1144,7 +1144,7 @@ "density":3.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.247678, "B":0.018643, @@ -1165,7 +1165,7 @@ "density":3.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.24827, "B":0.021464, @@ -1186,7 +1186,7 @@ "density":4.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.244686, "B":0.025664, @@ -1202,7 +1202,7 @@ "density":3.53, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.082371, "O":0.551004, @@ -1222,7 +1222,7 @@ "density":4.64, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.086069, "O":0.314488, @@ -1239,7 +1239,7 @@ "density":2.147, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.059733, "C":0.159071, @@ -1261,7 +1261,7 @@ "density":5.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.187558, "O":0.141791, @@ -1275,7 +1275,7 @@ "density":2.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.106691, "C":0.25354, @@ -1293,7 +1293,7 @@ "density":2.35, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.149867, "C":0.074204, @@ -1311,7 +1311,7 @@ "density":2.35, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.103586, "O":0.58481, @@ -1329,7 +1329,7 @@ "density":2.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.30533, "C":0.00288, @@ -1347,7 +1347,7 @@ "density":2.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.168759, "C":0.001416, @@ -1365,7 +1365,7 @@ "density":2.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.168038, "O":0.563183, @@ -1380,7 +1380,7 @@ "density":2.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.133302, "C":0.082334, @@ -1401,7 +1401,7 @@ "density":2.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.246195, "C":0.001181, @@ -1420,7 +1420,7 @@ "density":8.96, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Cu":1.0 } @@ -1429,7 +1429,7 @@ "density":0.22, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.151312, "O":0.581761, @@ -1446,7 +1446,7 @@ "density":1.52, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.316855, "O":0.501581, @@ -1458,7 +1458,7 @@ "density":1.52, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.670604, "Na":0.005578, @@ -1476,7 +1476,7 @@ "density":0.001253, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.75, "C":0.25 @@ -1486,7 +1486,7 @@ "density":0.901, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.571429, "C":0.285714, @@ -1497,7 +1497,7 @@ "density":0.7893, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666654, "C":0.222232, @@ -1508,7 +1508,7 @@ "density":0.001175, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666653, "C":0.333347 @@ -1518,7 +1518,7 @@ "density":1.114, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.6, "C":0.2, @@ -1529,7 +1529,7 @@ "density":1.72, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.444444, "N":0.222222, @@ -1540,7 +1540,7 @@ "density":1.49, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.285714, "C":0.142857, @@ -1552,7 +1552,7 @@ "density":1.89, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.285714, "C":0.142857, @@ -1564,7 +1564,7 @@ "density":1.49, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.300771, "C":0.234383, @@ -1576,7 +1576,7 @@ "density":1.6, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.25, "C":0.15, @@ -1588,7 +1588,7 @@ "density":1.77, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.275862, "C":0.172414, @@ -1600,7 +1600,7 @@ "density":1.82, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.285714, "C":0.142857, @@ -1612,7 +1612,7 @@ "density":1.65, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.238095, "C":0.333333, @@ -1624,7 +1624,7 @@ "density":1.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.618329, "C":0.101257, @@ -1636,7 +1636,7 @@ "density":0.185, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.384052, "C":0.316901, @@ -1648,7 +1648,7 @@ "density":5.2, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.599991, "Fe":0.400009 @@ -1658,7 +1658,7 @@ "density":1.024, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.660018, "N":1.2e-05, @@ -1673,7 +1673,7 @@ "density":1.27, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.001849, "O":0.001658, @@ -1690,7 +1690,7 @@ "density":2.49, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.035039, "O":0.609968, @@ -1707,7 +1707,7 @@ "density":2.565, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.043757, "O":0.611965, @@ -1726,7 +1726,7 @@ "density":2.55, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.628478, "Mg":0.030755, @@ -1739,7 +1739,7 @@ "density":1.12, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200004, "F":0.399998, @@ -1750,7 +1750,7 @@ "density":1.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200003, "F":0.399999, @@ -1761,7 +1761,7 @@ "density":0.95, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200004, "F":0.599997, @@ -1772,7 +1772,7 @@ "density":1.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200003, "F":0.599998, @@ -1783,7 +1783,7 @@ "density":1.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.200005, "F":0.599996, @@ -1794,7 +1794,7 @@ "density":7.9004, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Gd":1.0 } @@ -1803,7 +1803,7 @@ "density":7.44, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.400012, "S":0.199976, @@ -1814,7 +1814,7 @@ "density":6.71, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.625, "Si":0.125, @@ -1825,7 +1825,7 @@ "density":1.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.558087, "C":0.316304, @@ -1837,7 +1837,7 @@ "density":5.31, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ga":0.5, "As":0.5 @@ -1847,7 +1847,7 @@ "density":0.721, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.689368, "C":0.310632 @@ -1857,7 +1857,7 @@ "density":5.323, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ge":1.0 } @@ -1866,7 +1866,7 @@ "density":2.66, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.078133, "O":0.581195, @@ -1880,7 +1880,7 @@ "density":2.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.209694, "O":0.545112, @@ -1894,7 +1894,7 @@ "density":2.42, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.124299, "O":0.585945, @@ -1908,7 +1908,7 @@ "density":2.42, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.239068, "O":0.546269, @@ -1920,7 +1920,7 @@ "density":2.23, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.070449, "O":0.641095, @@ -1934,7 +1934,7 @@ "density":0.128, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.018718, "B":0.026176, @@ -1948,7 +1948,7 @@ "density":6.22, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.592955, "Si":0.174592, @@ -1961,7 +1961,7 @@ "density":2.4, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.603858, "Na":0.088145, @@ -1973,7 +1973,7 @@ "density":1.2613, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.571417, "C":0.214294, @@ -1984,7 +1984,7 @@ "density":19.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Au":1.0 } @@ -1993,7 +1993,7 @@ "density":2.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.333321, "O":0.500014, @@ -2005,7 +2005,7 @@ "density":0.000125, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "He3":1.0 } @@ -2014,7 +2014,7 @@ "density":0.000166, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "He":1.0 } @@ -2023,7 +2023,7 @@ "density":8.4e-05, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":1.0 } @@ -2032,7 +2032,7 @@ "density":7.94, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.002984, "Al":0.007663, @@ -2050,7 +2050,7 @@ "density":8.47, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.004642, "Si":0.006583, @@ -2066,7 +2066,7 @@ "density":8.44, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.133302, "C":0.082334, @@ -2087,7 +2087,7 @@ "density":8.19, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.000267, "C":0.003507, @@ -2110,7 +2110,7 @@ "density":7.31, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "In":1.0 } @@ -2119,7 +2119,7 @@ "density":7.874, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Fe":1.0 } @@ -2128,7 +2128,7 @@ "density":7.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.333333, "Fe":0.666667 @@ -2138,7 +2138,7 @@ "density":7.15, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.499969, "Fe":0.500031 @@ -2148,7 +2148,7 @@ "density":7.866, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.000556, "O":0.003826, @@ -2162,7 +2162,7 @@ "density":7.15, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.137104, "Si":0.044836, @@ -2176,7 +2176,7 @@ "density":7.7, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.003746, "Si":0.003164, @@ -2190,7 +2190,7 @@ "density":0.096, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.000468, "O":0.636102, @@ -2205,7 +2205,7 @@ "density":1.42, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.256399, "C":0.564114, @@ -2217,7 +2217,7 @@ "density":16.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ni":0.191007, "Cu":0.294036, @@ -2228,7 +2228,7 @@ "density":1.95, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.32, "B":0.16, @@ -2240,7 +2240,7 @@ "density":0.819, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.694164, "C":0.305836 @@ -2250,7 +2250,7 @@ "density":0.003478, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Kr":1.0 } @@ -2259,7 +2259,7 @@ "density":1.79, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.333333, "C":0.333333, @@ -2270,7 +2270,7 @@ "density":11.35, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Pb":1.0 } @@ -2279,7 +2279,7 @@ "density":8.24, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667, "W":0.166667, @@ -2290,7 +2290,7 @@ "density":0.534, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":1.0 } @@ -2299,7 +2299,7 @@ "density":1.178, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499991, "Li":0.250004, @@ -2310,7 +2310,7 @@ "density":2.635, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.5, "F":0.5 @@ -2320,7 +2320,7 @@ "density":3.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Li6":0.315789, "B10":0.157895 @@ -2334,7 +2334,7 @@ "density":0.82, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499989, "Li":0.500011 @@ -2344,7 +2344,7 @@ "density":4.08, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.499998, "I":0.500002 @@ -2354,7 +2354,7 @@ "density":3.494, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.499998, "I":0.500002 @@ -2364,7 +2364,7 @@ "density":2.013, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.666667, "O":0.333333 @@ -2374,7 +2374,7 @@ "density":2.44, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Li":0.153851, "B":0.307673, @@ -2385,7 +2385,7 @@ "density":1.19, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.53332, "C":0.333345, @@ -2396,7 +2396,7 @@ "density":6.73, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6, "Al":0.25, @@ -2407,7 +2407,7 @@ "density":8.4, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6, "Al":0.2, @@ -2418,7 +2418,7 @@ "density":7.4, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.625, "Si":0.125, @@ -2429,7 +2429,7 @@ "density":7.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.5, "Si":0.1, @@ -2441,7 +2441,7 @@ "density":1.74, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Mg":1.0 } @@ -2450,7 +2450,7 @@ "density":3.58, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.5, "Mg":0.5 @@ -2460,7 +2460,7 @@ "density":2.53, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.333313, "O":0.583351, @@ -2471,7 +2471,7 @@ "density":1.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.47619, "C":0.285714, @@ -2482,7 +2482,7 @@ "density":1.35, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.388889, "C":0.277778, @@ -2493,7 +2493,7 @@ "density":13.546, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Hg":1.0 } @@ -2502,7 +2502,7 @@ "density":6.36, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "I":0.666667, "Hg":0.333333 @@ -2512,7 +2512,7 @@ "density":0.000667, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.8, "C":0.2 @@ -2522,7 +2522,7 @@ "density":0.7914, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666654, "C":0.166675, @@ -2533,7 +2533,7 @@ "density":1.3266, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.4, "C":0.2, @@ -2544,7 +2544,7 @@ "density":10.22, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Mo":1.0 } @@ -2553,7 +2553,7 @@ "density":1.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.111111, "O":0.555556, @@ -2565,7 +2565,7 @@ "density":1.11, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.619265, "C":0.082642, @@ -2577,7 +2577,7 @@ "density":1.07, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.631883, "C":0.062435, @@ -2589,7 +2589,7 @@ "density":1.04, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.630932, "C":0.056732, @@ -2610,7 +2610,7 @@ "density":1.04, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.633101, "C":0.06407, @@ -2627,7 +2627,7 @@ "density":0.000839, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ne":1.0 } @@ -2636,7 +2636,7 @@ "density":8.902, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ni":1.0 } @@ -2645,7 +2645,7 @@ "density":8.57, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Nb":1.0 } @@ -2654,7 +2654,7 @@ "density":0.001165, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "N":1.0 } @@ -2663,7 +2663,7 @@ "density":1.08, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.593363, "C":0.311934, @@ -2675,7 +2675,7 @@ "density":1.425, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.617633, "C":0.323542, @@ -2687,7 +2687,7 @@ "density":1.14, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.578932, "C":0.315803, @@ -2699,7 +2699,7 @@ "density":1.14, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.599986, "C":0.320013, @@ -2711,7 +2711,7 @@ "density":0.97, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.588884, "C":0.39773, @@ -2724,7 +2724,7 @@ "density":0.975, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.587752, "C":0.404749, @@ -2735,7 +2735,7 @@ "density":0.97, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.590046, "C":0.391765, @@ -2747,7 +2747,7 @@ "density":0.875, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.629388, "C":0.36522, @@ -2759,7 +2759,7 @@ "density":0.955, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.633782, "C":0.364349, @@ -2770,7 +2770,7 @@ "density":0.871, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.392857, "C":0.47619, @@ -2783,7 +2783,7 @@ "density":0.915, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.62069, "C":0.344828, @@ -2794,7 +2794,7 @@ "density":0.001332, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":1.0 } @@ -2803,7 +2803,7 @@ "density":0.001561, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.285714, "C":0.071429, @@ -2814,7 +2814,7 @@ "density":0.001611, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.166667, "C":0.041667, @@ -2825,7 +2825,7 @@ "density":12.02, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Pd":1.0 } @@ -2834,7 +2834,7 @@ "density":1.2914, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.546952, "C":0.235246, @@ -2847,7 +2847,7 @@ "density":2.2, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.440293, "C":0.255254, @@ -2861,7 +2861,7 @@ "density":3.815, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.407082, "C":0.175079, @@ -2877,7 +2877,7 @@ "density":21.45, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Pt":1.0 } @@ -2886,7 +2886,7 @@ "density":6.75, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Br":0.75 }, @@ -2902,7 +2902,7 @@ "density":13.6, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.5 }, @@ -2918,7 +2918,7 @@ "density":5.71, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Cl":0.75 }, @@ -2934,7 +2934,7 @@ "density":11.46, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667 }, @@ -2950,7 +2950,7 @@ "density":9.33, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.75 }, @@ -2966,7 +2966,7 @@ "density":7.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.8 }, @@ -2982,7 +2982,7 @@ "density":5.08, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.857143 }, @@ -2998,7 +2998,7 @@ "density":6.92, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "I":0.75 }, @@ -3014,7 +3014,7 @@ "density":2.447, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "N":0.235294, "O":0.705882 @@ -3031,7 +3031,7 @@ "density":14.25, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "N":0.5 }, @@ -3047,7 +3047,7 @@ "density":10.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6 }, @@ -3063,7 +3063,7 @@ "density":14.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.5 }, @@ -3079,7 +3079,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.0001, "Pu239":0.936559, @@ -3093,7 +3093,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.000897, "Pu239":0.86247, @@ -3107,7 +3107,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.002347, "Pu239":0.785422, @@ -3121,7 +3121,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.000502, "Pu239":0.935269, @@ -3134,7 +3134,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.001005, "Pu239":0.861564, @@ -3147,7 +3147,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.009965, "Pu239":0.625153, @@ -3160,7 +3160,7 @@ "density":19.84, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "Pu238":0.000301, "Pu239":0.939451, @@ -3174,7 +3174,7 @@ "density":1.2, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.424226, "C":0.484864, @@ -3185,7 +3185,7 @@ "density":1.38, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.363632, "C":0.454552, @@ -3196,7 +3196,7 @@ "density":1.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.627759, "B":0.04669, @@ -3207,7 +3207,7 @@ "density":0.93, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666662, "C":0.333338 @@ -3217,7 +3217,7 @@ "density":0.0482, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.344828, "C":0.517241, @@ -3229,7 +3229,7 @@ "density":0.9, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666653, "C":0.333347 @@ -3239,7 +3239,7 @@ "density":1.06, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499994, "C":0.500006 @@ -3249,7 +3249,7 @@ "density":2.25, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.333339, "F":0.666661 @@ -3259,7 +3259,7 @@ "density":0.021, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.360023, "C":0.400878, @@ -3271,7 +3271,7 @@ "density":1.19, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499986, "C":0.333345, @@ -3282,7 +3282,7 @@ "density":1.406, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499995, "C":0.33334, @@ -3293,7 +3293,7 @@ "density":1.032, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.525382, "C":0.474618 @@ -3303,7 +3303,7 @@ "density":1.7, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.333317, "C":0.333346, @@ -3314,7 +3314,7 @@ "density":1.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.615385, "Al":0.076923, @@ -3326,7 +3326,7 @@ "density":3.13, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "K":0.5, "I":0.5 @@ -3336,7 +3336,7 @@ "density":2.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.333333, "K":0.666667 @@ -3346,7 +3346,7 @@ "density":0.001879, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.72726, "C":0.27274 @@ -3356,7 +3356,7 @@ "density":0.43, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.72726, "C":0.27274 @@ -3366,7 +3366,7 @@ "density":1.23, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.416667, "C":0.583333 @@ -3376,7 +3376,7 @@ "density":1.08, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.589073, "C":0.317171, @@ -3388,7 +3388,7 @@ "density":2.662, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.032837, "C":0.044735, @@ -3410,7 +3410,7 @@ "density":3.01, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.607469, "Na":0.020797, @@ -3429,7 +3429,7 @@ "density":2.69, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.629769, "Na":0.024738, @@ -3448,7 +3448,7 @@ "density":2.61, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.017089, "C":0.181445, @@ -3469,7 +3469,7 @@ "density":2.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.034647, "C":0.022161, @@ -3490,7 +3490,7 @@ "density":2.68, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.1039, "C":0.011058, @@ -3511,7 +3511,7 @@ "density":0.92, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666653, "C":0.333347 @@ -3521,7 +3521,7 @@ "density":0.92, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.61537, "C":0.38463 @@ -3531,7 +3531,7 @@ "density":1.23, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.499985, "C":0.400014, @@ -3542,7 +3542,7 @@ "density":1.0185, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.597039, "C":0.199359, @@ -3554,7 +3554,7 @@ "density":1.209865, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.621161, "O":0.310581, @@ -3566,7 +3566,7 @@ "density":1.022394, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.661906, "O":0.330953, @@ -3578,7 +3578,7 @@ "density":1.7, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.135405, "C":0.004874, @@ -3595,7 +3595,7 @@ "density":1.023343, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.66159, "O":0.331493, @@ -3611,7 +3611,7 @@ "density":1.023343, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.661599, "B":3e-06, @@ -3631,7 +3631,7 @@ "density":2.14, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.297872, "O":0.489362, @@ -3643,7 +3643,7 @@ "density":2.33, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Si":1.0 } @@ -3652,7 +3652,7 @@ "density":3.21, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.5, "Si":0.5 @@ -3662,7 +3662,7 @@ "density":2.648, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667, "Si":0.333333 @@ -3672,7 +3672,7 @@ "density":2.32, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667, "Si":0.333333 @@ -3682,7 +3682,7 @@ "density":10.5, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ag":1.0 } @@ -3691,7 +3691,7 @@ "density":1.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.619966, "C":0.118059, @@ -3712,7 +3712,7 @@ "density":0.971, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Na":1.0 } @@ -3721,7 +3721,7 @@ "density":7.57, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667, "Na":0.083333, @@ -3733,7 +3733,7 @@ "density":2.17, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Na":0.5, "Cl":0.5 @@ -3743,7 +3743,7 @@ "density":3.667, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Na":0.499999, "I":0.500001 @@ -3753,7 +3753,7 @@ "density":2.261, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "N":0.2, "O":0.6, @@ -3764,7 +3764,7 @@ "density":2.27, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.333333, "Na":0.666667 @@ -3774,7 +3774,7 @@ "density":7.87, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "B":0.048827, "C":0.00174, @@ -3791,7 +3791,7 @@ "density":7.82, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.022831, "Fe":0.977169 @@ -3801,7 +3801,7 @@ "density":7.874, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.009183, "Si":0.007854, @@ -3820,7 +3820,7 @@ "density":7.86, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.003405, "N":0.004866, @@ -3837,7 +3837,7 @@ "density":7.86, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.006356, "Si":0.018057, @@ -3853,7 +3853,7 @@ "density":8.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.00183, "Si":0.009781, @@ -3869,7 +3869,7 @@ "density":8.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.000687, "Si":0.009793, @@ -3885,7 +3885,7 @@ "density":8.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.0019, "Si":0.010048, @@ -3902,7 +3902,7 @@ "density":8.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.001384, "Si":0.019722, @@ -3919,7 +3919,7 @@ "density":8.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.00364, "Si":0.019457, @@ -3936,7 +3936,7 @@ "density":8.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.003659, "Si":0.019559, @@ -3954,7 +3954,7 @@ "density":7.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.003591, "Si":0.019108, @@ -3970,7 +3970,7 @@ "density":7.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.030406, "Si":0.012521, @@ -3986,7 +3986,7 @@ "density":0.862, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.635838, "C":0.32948, @@ -3997,7 +3997,7 @@ "density":1.22, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.416667, "C":0.583333 @@ -4007,7 +4007,7 @@ "density":2.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "S":1.0 } @@ -4016,7 +4016,7 @@ "density":16.654, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ta":1.0 } @@ -4025,7 +4025,7 @@ "density":11.72, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Th":1.0 } @@ -4034,7 +4034,7 @@ "density":10.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667, "Th":0.333333 @@ -4044,7 +4044,7 @@ "density":7.31, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Sn":1.0 } @@ -4053,7 +4053,7 @@ "density":1.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.546359, "C":0.32948, @@ -4067,7 +4067,7 @@ "density":0.001064, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.605249, "C":0.227454, @@ -4079,7 +4079,7 @@ "density":0.001826, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.598952, "C":0.278531, @@ -4091,7 +4091,7 @@ "density":0.92, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.634643, "C":0.284063, @@ -4112,7 +4112,7 @@ "density":1.02, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.625781, "C":0.164483, @@ -4128,7 +4128,7 @@ "density":1.05, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.633136, "C":0.053674, @@ -4149,7 +4149,7 @@ "density":1.05, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.64323, "C":0.047811, @@ -4166,7 +4166,7 @@ "density":1.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.630454, "C":0.117588, @@ -4187,7 +4187,7 @@ "density":1.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.630936, "C":0.058092, @@ -4199,7 +4199,7 @@ "density":1.04, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.64136, "C":0.047676, @@ -4220,7 +4220,7 @@ "density":1.04, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.645178, "C":0.050568, @@ -4237,7 +4237,7 @@ "density":4.54, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Ti":1.0 } @@ -4246,7 +4246,7 @@ "density":4.43, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.004953, "C":0.002154, @@ -4262,7 +4262,7 @@ "density":4.26, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666606, "Ti":0.333394 @@ -4272,7 +4272,7 @@ "density":3.75, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666667, "Ti":0.333333 @@ -4282,7 +4282,7 @@ "density":0.8669, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.533317, "C":0.466683 @@ -4292,7 +4292,7 @@ "density":0.864, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.627907, "B":0.023256, @@ -4304,7 +4304,7 @@ "density":0.9724, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.613636, "C":0.272727, @@ -4316,7 +4316,7 @@ "density":19.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "W":1.0 } @@ -4325,7 +4325,7 @@ "density":13.63, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.5 }, @@ -4340,7 +4340,7 @@ "density":11.28, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "C":0.666667 }, @@ -4355,7 +4355,7 @@ "density":10.96, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666667 }, @@ -4370,7 +4370,7 @@ "density":4.68, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.857143 }, @@ -4385,7 +4385,7 @@ "density":11.1, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.75 }, @@ -4400,7 +4400,7 @@ "density":14.31, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "N":0.5 }, @@ -4415,7 +4415,7 @@ "density":8.3, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.727273 }, @@ -4430,7 +4430,7 @@ "density":6.7, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "F":0.8 }, @@ -4445,7 +4445,7 @@ "density":7.29, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.75 }, @@ -4460,7 +4460,7 @@ "density":18.951157, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":5e-06, "U235":0.002532, @@ -4471,7 +4471,7 @@ "density":18.944492, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":0.00031, "U235":0.029967, @@ -4482,7 +4482,7 @@ "density":18.724868, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":0.010582, "U235":0.932362, @@ -4494,7 +4494,7 @@ "density":18.732854, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":0.009722, "U235":0.898982, @@ -4506,7 +4506,7 @@ "density":18.72476, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":0.009849, "U235":0.932166, @@ -4518,7 +4518,7 @@ "density":18.944386, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":0.000271, "U235":0.030372, @@ -4530,7 +4530,7 @@ "density":18.95, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "isotopes": { "U234":5.8e-05, "U235":0.007295, @@ -4541,7 +4541,7 @@ "density":11.0, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.666666 }, @@ -4561,7 +4561,7 @@ "density":6.37, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.4, "F":0.4 @@ -4577,7 +4577,7 @@ "density":2.203, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "N":0.181818, "O":0.727273 @@ -4593,7 +4593,7 @@ "density":0.085, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.197175, "O":0.520978, @@ -4610,7 +4610,7 @@ "density":1.8, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.133327, "C":0.333341, @@ -4621,7 +4621,7 @@ "density":1.10534, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.333333 }, @@ -4633,7 +4633,7 @@ "density":0.998207, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666657, "O":0.333343 @@ -4643,7 +4643,7 @@ "density":0.000756, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666657, "O":0.333343 @@ -4653,7 +4653,7 @@ "density":1.05, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.632204, "C":0.304366, @@ -4666,7 +4666,7 @@ "density":0.99, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.65888, "C":0.320919, @@ -4679,7 +4679,7 @@ "density":0.93, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.675311, "C":0.324689 @@ -4689,7 +4689,7 @@ "density":0.64, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.462423, "C":0.323389, @@ -4705,7 +4705,7 @@ "density":0.005485, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Xe":1.0 } @@ -4714,7 +4714,7 @@ "density":4.56, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6, "Al":0.25, @@ -4725,7 +4725,7 @@ "density":5.37, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.6, "Al":0.2, @@ -4736,7 +4736,7 @@ "density":4.45, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.625, "Si":0.125, @@ -4747,7 +4747,7 @@ "density":2.25, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.173913, "O":0.521739, @@ -4760,7 +4760,7 @@ "density":7.133, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Zn":1.0 } @@ -4769,7 +4769,7 @@ "density":5.42, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Zn":0.5, "Se":0.5 @@ -4779,7 +4779,7 @@ "density":4.09, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "S":0.5, "Zn":0.5 @@ -4789,7 +4789,7 @@ "density":6.56, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.006796, "Cr":0.001743, @@ -4803,7 +4803,7 @@ "density":6.56, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "O":0.00679, "Cr":0.001741, @@ -4816,7 +4816,7 @@ "density":6.506, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "Zr":1.0 } @@ -4825,7 +4825,7 @@ "density":5.61, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.615385, "Zr":0.384615 @@ -4835,7 +4835,7 @@ "density":5.61, "density_unit":"g/cm3", "percent_type": "ao", - "reference":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", + "comment":"https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-15870Rev1.pdf", "elements": { "H":0.666667, "Zr":0.333333 diff --git a/neutronics_material_maker/data/structural_materials.json b/neutronics_material_maker/data/structural_materials.json index ab0cb35..20d126d 100644 --- a/neutronics_material_maker/data/structural_materials.json +++ b/neutronics_material_maker/data/structural_materials.json @@ -42,7 +42,7 @@ }, "density": 7.78, "density_unit": "g/cm3", - "reference": "neutronics handbook", + "comment": "neutronics handbook", "percent_type": "ao" }, "SS_316L_N_IG": { @@ -66,7 +66,7 @@ }, "density": 7.93, "density_unit": "g/cm3", - "reference": "neutronics handbook", + "comment": "neutronics handbook", "percent_type": "ao" }, "tungsten_with_impurities": { @@ -104,7 +104,7 @@ }, "density": 19.0, "density_unit": "g/cm3", - "reference": "neutronics handbook", + "comment": "neutronics handbook", "percent_type": "ao" }, "tungsten": { @@ -238,7 +238,7 @@ }, "density": 8.9, "density_unit": "g/cm3", - "reference": "neutronics handbook", + "comment": "neutronics handbook", "percent_type": "ao" }, "CuCrZr": { @@ -249,7 +249,7 @@ }, "density": 8.9, "density_unit": "g/cm3", - "reference": "", + "comment": "", "percent_type": "wo" } } diff --git a/neutronics_material_maker/material.py b/neutronics_material_maker/material.py index 8e48a04..cfbbea9 100644 --- a/neutronics_material_maker/material.py +++ b/neutronics_material_maker/material.py @@ -3,24 +3,23 @@ __author__ = "neutronics material maker development team" +import json import os import re import warnings from json import JSONEncoder -from typing import Optional, Dict, List +from typing import Dict, List, Optional, Union + import asteval from CoolProp.CoolProp import PropsSI -from neutronics_material_maker import ( - make_fispact_material, - make_serpent_material, - make_mcnp_material, - make_shift_material, - material_dict, - zaid_to_isotope, - check_add_additional_end_lines, - NATURAL_ABUNDANCE -) +from neutronics_material_maker import (NATURAL_ABUNDANCE, + check_add_additional_end_lines, + make_fispact_material, + make_mcnp_material, + make_serpent_material, + make_shift_material, material_dict, + zaid_to_isotope) OPENMC_AVAILABLE = True try: @@ -50,39 +49,20 @@ def _default(self, obj): class Material: """ - Produces a material by looking up the material_name in a - collection of prepared materials. Modifiers to the material - isotopes are applied according to arguments such - as enrichment. Modifiers to the material density are applied - according to arguments like temperature and pressure - where appropiate (gases, liquids). The collection of materials - includes relationships between presure, temperature and density - relationships. This allows the code to adjust the density of the - material accordingly. The intended use is a tool to facilitate - the use of a common materials library (internal or your own). - However it is also possible to make complete Materials without - using the reference collection but more inputs are needed from - the user. The Material object is also json serializable + Produces a material from input arguments that can be output in formats + suitable for several different neutronics codes. Args: - material_name: This is the reference name used to look up the material - from the internal collection. Look up the available materials - AvailableMaterials() - material_tag: This is a string that is assigned to the - material as an identifier. This is used by neutronics - codes to label the material with a unique identifier + name: This is a string that is assigned to the material as an + identifier. This is used by neutronics codes to label the material + with a unique identifier. packing_fraction: This value is mutliplied by the density which allows packing_fraction to be taken into account for materials involving an amount of void. Recall that packing_fraction is equal to 1/void fraction enrichment: This is the percentage of isotope enrichment required for the material. This works for materials that have - an enrichment_target specified. The internal material collection - have Li6 specified as an enrichment_target for Lithium containing - compounds. Enrichment of Li6 impacts the density of a material and - the internal package materials take this into account. It is also - possible to use this when making materials not included in the - reference collection but an enrichment_target must also be provided. + an enrichment_target and enrichment_type also specified. enrichment_target: The isotope to enrich e.g. Li6 temperature: The temperature of the material in degrees Kelvin. Temperature impacts the density of some materials in the @@ -124,16 +104,16 @@ class Material: e.g. {'Li6': 0.9, 'Li7': 0.1} alternatively zaid representation can also be used instead of the symbol e.g. {'3006': 0.9, '4007': 0.1} percent_type: Atom "ao" or or weight fraction "wo" - density): value to be used as the density + density: value to be used as the density. Can be a number or a string. + if a string then it will be evaluated as an equation to find the + density and can contain temperature and pressure varibles. + variables as part of the equation. density_unit: the units of density "g/cm3", "g/cc", "kg/m3", "atom/b-cm", "atom/cm3" - density_equation: An equation to be evaluated to find the density, - can contain temperature and pressure - variables as part of the equation. atoms_per_unit_cell: The number of atoms in a unit cell of the crystal structure volume_of_unit_cell_cm3: The volume of the unit cell in cm3 - reference: An entry used to store information on the source of the + comment: An entry used to store information on the source of the material data additional_end_lines: Additional lines of test that are added to the end of the material card. Compatable with MCNP, Serpent, Fispact outputs @@ -149,9 +129,8 @@ class Material: def __init__( self, - material_name: Optional[str] = None, - packing_fraction: Optional[float] = 1.0, - material_tag: Optional[str] = None, + name: Optional[str] = None, + packing_fraction: Optional[float] = 1., enrichment: Optional[float] = None, enrichment_target: Optional[str] = None, temperature: Optional[float] = None, @@ -163,11 +142,10 @@ def __init__( percent_type: Optional[str] = None, density: Optional[float] = None, density_unit: Optional[str] = None, - density_equation: Optional[str] = None, atoms_per_unit_cell: Optional[int] = None, volume_of_unit_cell_cm3: Optional[float] = None, enrichment_type: Optional[str] = None, - reference: Optional[str] = None, + comment: Optional[str] = None, zaid_suffix: Optional[str] = None, material_id: Optional[int] = None, decimal_places: Optional[int] = 8, @@ -175,8 +153,7 @@ def __init__( additional_end_lines: Optional[Dict[str, List[str]]] = None, ): - self.material_name = material_name - self.material_tag = material_tag + self.name = name self.temperature = temperature self.temperature_to_neutronics_code = temperature_to_neutronics_code self.pressure = pressure @@ -185,7 +162,6 @@ def __init__( self.chemical_equation = chemical_equation self.isotopes = isotopes self.density = density - self.density_equation = density_equation self.atoms_per_unit_cell = atoms_per_unit_cell self.volume_of_unit_cell_cm3 = volume_of_unit_cell_cm3 self.density_unit = density_unit @@ -193,7 +169,7 @@ def __init__( self.enrichment = enrichment self.enrichment_target = enrichment_target self.enrichment_type = enrichment_type - self.reference = reference + self.comment = comment self.zaid_suffix = zaid_suffix self.material_id = material_id self.decimal_places = decimal_places @@ -213,49 +189,8 @@ def __init__( "Material.chemical_equation and Material.elements can not both be set" ) - if self.material_name in material_dict.keys(): - - self._populate_from_inbuilt_dictionary() - - # checks that if we try to enrich a material by providing any of the - # arguments, that the other arguments are also provided - if self.enrichment is not None: - if self.enrichment_target is None or self.enrichment_type is None: - raise ValueError( - "Material.enrichment_target and enrichment type are \ - needed to enrich a material" - ) - - if "temperature_dependant" in material_dict[self.material_name].keys( - ): - if temperature is None: - if self.material_name == "He": - raise ValueError( - "temperature is needed for", - self.material_name, - ". Typical helium cooled blankets are 670K and 8e6Pa", - ) - elif self.material_name == "H2O": - raise ValueError( - "temperature is needed for", - self.material_name, - ". Typical water cooled blankets are 305C and 15.5e6Pa", - ) - raise ValueError( - "temperature is needed for", self.material_name - ) - - if "pressure_dependant" in material_dict[self.material_name].keys( - ): - if pressure is None: - raise ValueError( - "pressure is needed for", - self.material_name) - - # this populates the density of materials when density is provided by - # equations and crystal latic information by making the openmc material - # however it should also be possible to ininitialize nmm.Material - # without openmc installed, hence the if + # It should also be possible to ininitialize nmm.Material without + # OpenMC if OPENMC_AVAILABLE: self._make_openmc_material() @@ -355,36 +290,20 @@ def fispact_material(self, value): self._fispact_material = value @property - def material_name(self) -> str: + def name(self) -> str: """ The name of the material, used to look up the material from the internal database of material names available """ - return self._material_name + return self._name - @material_name.setter - def material_name(self, value): + @name.setter + def name(self, value): if value is not None: if not isinstance(value, str): raise ValueError( - "Material.material_name must be a string", value) - self._material_name = value - - @property - def material_tag(self) -> str: - """ - The material tag to assign the material, used when naming openmc - materials. This is the label attached to the material. - """ - return self._material_tag - - @material_tag.setter - def material_tag(self, value): - if value is not None: - if not isinstance(value, str): - raise ValueError( - "Material.material_tag must be a string", value) - self._material_tag = value + "Material.name must be a string", value) + self._name = value @property def packing_fraction(self): @@ -451,18 +370,6 @@ def isotopes(self, value): "Material.isotopes must be dictionaries e.g. {'Li6':0.07, 'Li7': 0.93}" ) - @property - def density_equation(self): - return self._density_equation - - @density_equation.setter - def density_equation(self, value): - if value is not None: - if not isinstance(value, str): - raise ValueError( - "Material.density_equation should be a string") - self._density_equation = value - @property def density_unit(self) -> float: """ @@ -528,9 +435,9 @@ def atoms_per_unit_cell(self, value): @property def volume_of_unit_cell_cm3(self): """ - The volume of the crystal unit cell. Can be used in density_equation - calculations if 'volume_of_unit_cell_cm3' is used in the - density_equation attribute. + The volume of the crystal unit cell. Can be used in a density string as + part of the equation calculations if 'volume_of_unit_cell_cm3' is used + in the density attribute. :type: float """ @@ -559,7 +466,7 @@ def temperature(self, value): if value is not None: if value < 0.0: raise ValueError( - "Material.temperature must be greater than 0") + "Material.temperature must be greater than 0 Kelvin") self._temperature = value @property @@ -576,7 +483,9 @@ def density(self): def density(self, value): if value is None: self._density = value - else: + elif isinstance(value, str): + self._density = value + elif isinstance(value, (int, float)): if value < 0: raise ValueError("Material.density should be above 0", value) self._density = float(value) @@ -614,8 +523,8 @@ def enrichment_target(self, value): if value is not None: if value not in NATURAL_ABUNDANCE.keys(): raise ValueError( - "Material.enrichment_target must be a naturally occuring \ - isotope from this list", + "Material.enrichment_target must be a naturally occuring " + "isotope from this list", NATURAL_ABUNDANCE.keys(), ) self._enrichment_target = value @@ -624,8 +533,7 @@ def enrichment_target(self, value): def pressure(self): """ The pressure of the material in Pascals. Must be a possive number. Used - to calculate the density if the density_equation contains - pressure. + to calculate the density if it appears in the density attribute. :type: float """ @@ -640,21 +548,21 @@ def pressure(self, value): self._pressure = value @property - def reference(self): + def comment(self): """ - A reference string to state where the material properties information + A comment string to state where the material properties information came from :type: str """ - return self._reference + return self._comment - @reference.setter - def reference(self, value): + @comment.setter + def comment(self, value): if value is not None: if not isinstance(value, str): - raise ValueError("Material.reference must be a string") - self._reference = value + raise ValueError("Material.comment must be a string") + self._comment = value @property def zaid_suffix(self): @@ -698,7 +606,7 @@ def volume_in_cm3(self, value): """ The volume of the material in cm3. Used when writing Fispact materials and can also be used in density equation calculation if volume_in_cm3 - appears in density_equation. + appears in density attribute. :type: float """ @@ -720,17 +628,13 @@ def _make_openmc_material(self): if original_cross_sections is not None: del os.environ["OPENMC_CROSS_SECTIONS"] - if self.material_tag is None: - name = self.material_name - else: - name = self.material_tag if self.material_id is not None: openmc_material = openmc.Material( material_id=self.material_id, - name=name) + name=self.name) else: openmc_material = openmc.Material( - name=name) + name=self.name) if self.temperature_to_neutronics_code is True: openmc_material.temperature = self.temperature @@ -754,140 +658,27 @@ def _make_openmc_material(self): return openmc_material - def _populate_from_inbuilt_dictionary(self): - """This runs on initilisation and if attributes of the Material object - are not specified (left as None) then the internal material dictionary - is checked to see if defaults are pressent for the particular material. - If the attributed has defaults that are present in the internal - dictionary then these are used to populated the attributes of the - Material object when present. - """ - - if ( - self.material_id is None - and "material_id" in material_dict[self.material_name].keys() - ): - self.material_id = material_dict[self.material_name]["material_id"] - - if ( - self.additional_end_lines is None - and "additional_end_lines" in material_dict[self.material_name].keys() - ): - self.additional_end_lines = material_dict[self.material_name]["additional_end_lines"] + def _check_enrichment_attributes(self): - if ( - self.chemical_equation is None - and "chemical_equation" in material_dict[self.material_name].keys() - ): - self.chemical_equation = material_dict[self.material_name][ - "chemical_equation" - ] + if self.enrichment is None: + return None - if ( - self.temperature is None - and "temperature" in material_dict[self.material_name].keys() - ): - self.temperature = material_dict[self.material_name][ - "temperature" - ] - - if ( - self.pressure is None - and "pressure" in material_dict[self.material_name].keys() - ): - self.pressure = material_dict[self.material_name]["pressure"] + elif (self.enrichment_type is not None and self.enrichment_target is not None): + return re.split(r"(\d+)", self.enrichment_target)[0] - if ( - self.packing_fraction is None - and "packing_fraction" in material_dict[self.material_name].keys() - ): - self.packing_fraction = material_dict[self.material_name][ - "packing_fraction" - ] - - if ( - self.elements is None - and "elements" in material_dict[self.material_name].keys() - ): - self.elements = material_dict[self.material_name]["elements"] - - if ( - self.isotopes is None - and "isotopes" in material_dict[self.material_name].keys() - ): - self.isotopes = material_dict[self.material_name]["isotopes"] - - if ( - self.density is None - and "density" in material_dict[self.material_name].keys() - ): - self.density = material_dict[self.material_name]["density"] - - if ( - self.density_equation is None - and "density_equation" in material_dict[self.material_name].keys() - ): - self.density_equation = material_dict[self.material_name][ - "density_equation" - ] - - if ( - self.atoms_per_unit_cell is None - and "atoms_per_unit_cell" in material_dict[self.material_name].keys() - ): - self.atoms_per_unit_cell = material_dict[self.material_name][ - "atoms_per_unit_cell" - ] - - if ( - self.volume_of_unit_cell_cm3 is None - and "volume_of_unit_cell_cm3" in material_dict[self.material_name].keys() - ): - self.volume_of_unit_cell_cm3 = material_dict[self.material_name][ - "volume_of_unit_cell_cm3" - ] - - if ( - self.density_unit is None - and "density_unit" in material_dict[self.material_name].keys() - ): - self.density_unit = material_dict[self.material_name]["density_unit"] - - if ( - self.percent_type is None - and "percent_type" in material_dict[self.material_name].keys() - ): - self.percent_type = material_dict[self.material_name]["percent_type"] - - if ( - self.enrichment is None - and "enrichment" in material_dict[self.material_name].keys() - ): - self.enrichment = material_dict[self.material_name]["enrichment"] - - if ( - self.enrichment_target is None - and "enrichment_target" in material_dict[self.material_name].keys() - ): - self.enrichment_target = material_dict[self.material_name][ - "enrichment_target" - ] - - if ( - self.enrichment_type is None - and "enrichment_type" in material_dict[self.material_name].keys() - ): - self.enrichment_type = material_dict[self.material_name]["enrichment_type"] + elif (self.enrichment is not None or self.enrichment_type is not None or self.enrichment_target is not None): + raise ValueError( + "Material.enrichment_target, Material.enrichment_type and " + "Material.enrichment are all needed to enrich a material" + ) - if ( - self.reference is None - and "reference" in material_dict[self.material_name].keys() - ): - self.reference = material_dict[self.material_name]["reference"] + return None def _add_elements_from_equation(self, openmc_material): """Adds elements from a dictionary or chemical equation to the Material""" + self._check_enrichment_attributes() + openmc_material.add_elements_from_formula( self.chemical_equation, percent_type=self.percent_type, @@ -908,10 +699,7 @@ def _add_elements_from_dict(self, openmc_material): openmc material object with additional elements """ - if self.enrichment_target is not None: - enrichment_element = re.split(r"(\d+)", self.enrichment_target)[0] - else: - enrichment_element = None + enrichment_element = self._check_enrichment_attributes() for element_symbol, element_number in zip( self.elements.keys(), self.elements.values() @@ -965,50 +753,60 @@ def _add_density(self, openmc_material): openmc material object with density set """ - if not isinstance(self.density, float): + if isinstance(self.density, float): + density = self.density - if self.density is None and self.density_equation is not None: + # a density equation is being used + elif isinstance(self.density, str): + aeval = asteval.Interpreter(usersyms=asteval_user_symbols) - aeval = asteval.Interpreter(usersyms=asteval_user_symbols) + if "temperature" in self.density and self.temperature is None: + raise ValueError( + "Material.temperature is needed to calculate the density") - # Potentially used in the eval part - aeval.symtable["temperature"] = self.temperature - aeval.symtable["pressure"] = self.pressure + if "pressure" in self.density and self.pressure is None: + raise ValueError( + "Material.pressure is needed to calculate the density" + ) - density = aeval.eval(self.density_equation) + # Potentially used in the eval part + aeval.symtable["temperature"] = self.temperature + aeval.symtable["pressure"] = self.pressure - if len(aeval.error) > 0: - raise aeval.error[0].exc(aeval.error[0].msg) + density = aeval.eval(self.density) - if density is None: - raise ValueError( - "Density value of ", - self.material_name, - " can not be found") - else: - self.density = density + if len(aeval.error) > 0: + raise aeval.error[0].exc(aeval.error[0].msg) - elif ( - self.atoms_per_unit_cell is not None - and self.volume_of_unit_cell_cm3 is not None - ): + if density is None: + raise ValueError( + "Density value of ", + self.name, + " can not be found") + else: + self.density = density - molar_mass = ( - self._get_atoms_in_crystal() * - openmc_material.average_molar_mass) + elif ( + self.atoms_per_unit_cell is not None + and self.volume_of_unit_cell_cm3 is not None + ): - mass = self.atoms_per_unit_cell * molar_mass * atomic_mass_unit_in_g + molar_mass = ( + self._get_atoms_in_crystal() * + openmc_material.average_molar_mass) - self.density = mass / self.volume_of_unit_cell_cm3 - else: + mass = self.atoms_per_unit_cell * molar_mass * atomic_mass_unit_in_g - raise ValueError( - "density can't be set for " - + str(self.material_name) - + " provide either a density_value, density_equation as a \ - string, or atoms_per_unit_cell and \ - volume_of_unit_cell_cm3" - ) + self.density = mass / self.volume_of_unit_cell_cm3 + else: + + raise ValueError( + "density can't be set for " + + str(self.name) + + " provide either a density value as a number or density " + "as a string, or atoms_per_unit_cell and " + "volume_of_unit_cell_cm3" + ) openmc_material.set_density( self.density_unit, self.density * self.packing_fraction @@ -1037,13 +835,117 @@ def _get_atoms_in_crystal(self): self.list_of_fractions = list_of_fractions return sum(list_of_fractions) + def from_json_file( + filename: str, + name: str, + **kwargs + ): + + with open(filename, "r") as file: + new_data = json.load(file) + + print(new_data) + print(new_data.keys()) + + entry = new_data[name] + + # customisation of the library entry + for key, value in kwargs.items(): + entry[key] = value + + return Material(name=name, **entry) + + def from_library( + name: str, + **kwargs + ): + # TODO allow discreat libraries to be searched library: List('str') + + if name not in material_dict.keys(): + + raise ValueError( + 'name of ', name, 'not found in the internal library' + ) + + entry = material_dict[name].copy() + + # customisation of the library entry + for key, value in kwargs.items(): + entry[key] = value + + return Material(name=name, **entry) + + def from_mixture( + materials, + fracs: List[float], + percent_type: Optional[str] = 'vo', + name: Optional[str] = None, + packing_fraction: Optional[float] = 1., + temperature: Optional[float] = None, + temperature_to_neutronics_code: Optional[bool] = True, + pressure: Optional[float] = None, + comment: Optional[str] = None, + zaid_suffix: Optional[str] = None, + material_id: Optional[int] = None, + decimal_places: Optional[int] = 8, + volume_in_cm3: Optional[float] = None, + additional_end_lines: Optional[Dict[str, List[str]]] = None, + ): + if sum(fracs) != 1.0: + warnings.warn( + "warning sum of MutliMaterials.fracs do not sum to 1." + + str(fracs) + + " = " + + str(sum(fracs)), + UserWarning, + ) + + openmc_material_objects = [] + for material in materials: + if isinstance(material, openmc.Material): + openmc_material_objects.append(material) + elif isinstance(material, Material): + openmc_material_objects.append(material.openmc_material) + else: + raise ValueError( + "only openmc.Material or neutronics_material_maker. \ + Materials are accepted. Not", type(material), + ) + + openmc_material = openmc.Material.mix_materials( + materials=openmc_material_objects, + fracs=fracs, + percent_type=percent_type, + ) + + isotopes = {} + for nuclide in sorted(openmc_material.nuclides): + isotopes[nuclide.name] = nuclide.percent + + return Material( + percent_type=nuclide.percent_type, + isotopes=isotopes, + density=openmc_material.get_mass_density(), + density_unit='g/cm3', + packing_fraction=packing_fraction, + name=name, + temperature=temperature, + temperature_to_neutronics_code=temperature_to_neutronics_code, + pressure=pressure, + comment=comment, + zaid_suffix=zaid_suffix, + material_id=material_id, + decimal_places=decimal_places, + volume_in_cm3=volume_in_cm3, + additional_end_lines=additional_end_lines, + ) + def to_json(self) -> dict: """ Json serializable version of the material """ - jsonified_object = { - "material_name": self.material_name, - "material_tag": self.material_tag, + + contents = { "temperature": self.temperature, "pressure": self.pressure, "packing_fraction": self.packing_fraction, @@ -1051,7 +953,6 @@ def to_json(self) -> dict: "chemical_equation": self.chemical_equation, "isotopes": self.isotopes, "density": self.density, - "density_equation": self.density_equation, "atoms_per_unit_cell": self.atoms_per_unit_cell, "volume_of_unit_cell_cm3": self.volume_of_unit_cell_cm3, "density_unit": self.density_unit, @@ -1059,11 +960,19 @@ def to_json(self) -> dict: "enrichment": self.enrichment, "enrichment_target": self.enrichment_target, "enrichment_type": self.enrichment_type, - "reference": self.reference, + "comment": self.comment, "zaid_suffix": self.zaid_suffix, "material_id": self.material_id, "decimal_places": self.decimal_places, "volume_in_cm3": self.volume_in_cm3, } + for key, value in dict(contents).items(): + if value is None: + del contents[key] + + jsonified_object = { + self.name: contents + } + return jsonified_object diff --git a/neutronics_material_maker/mutlimaterial.py b/neutronics_material_maker/mutlimaterial.py deleted file mode 100644 index 51e0392..0000000 --- a/neutronics_material_maker/mutlimaterial.py +++ /dev/null @@ -1,348 +0,0 @@ -#!/usr/bin/env python3 - -__author__ = "neutronics material maker development team" - -import warnings -from json import JSONEncoder -from typing import List, Optional, Union, Dict - -import neutronics_material_maker as nmm -from neutronics_material_maker import (make_fispact_material, - make_mcnp_material, - make_shift_material, - make_serpent_material, - check_add_additional_end_lines) - -OPENMC_AVAILABLE = True -try: - import openmc -except ImportError: - OPENMC_AVAILABLE = False - warnings.warn( - "OpenMC python package not found, .openmc_material, .serpent_material, \ - .mcnp_material, .fispact_material methods not avaiable") - - -atomic_mass_unit_in_g = 1.660539040e-24 - - -def _default(self, obj): - """ monkey-patches json module so that the custom to_json - method is used which allows Materials to be json dumped - """ - return getattr(obj.__class__, "to_json", _default.default)(obj) - - -_default.default = JSONEncoder.default -JSONEncoder.default = _default - - -class MultiMaterial: - """ - Produces a mixed material from several individual materials. - This class extends the existing openmc.Material.mix_materials - to perform this mixing of neutronics_material_maker.Materials - and openmc.Materials. The MultiMaterial object is json serializable. - - Args: - material_tag: This is a string that is assigned to the material as an - identifier. This is used by neutronics codes to label the material - with a unique identifier - materials: a list of neutronics_material_maker.Materials - or openmc.Materials that are to be mixed - fracs: A list of fractions that represent the amount of each material - to mix, should sum to 1. - percent_type: Type of frac percentage, must be one of - atom percent 'ao', weight percent 'wo', or volume percent 'vo'. - Defaults to 'vo' - packing_fraction: This value is multiplied by the density which allows - packing_fraction to be taken into account for materials involving - an amount of void. Recall that packing_fraction is equal to 1/void - fraction - zaid_suffix: The nuclear library to apply to the zaid, for example - ".31c", this is used in MCNP and Serpent material cards. - material_id: The id number or mat number used in the MCNP material - card - decimal_places: The number of decimal places to use in MCNP and - Seprent material cards when they are printed out (default of 8). - volume_in_cm3: The volume of the material in cm3, used when - creating fispact material cards - temperature: The temperature of the material in degrees Kelvin. Added - to the openmc material object and the serpent material card. - temperature_to_neutronics_code: The temperature args are often used to - find the material density via density equations. However it can be - desirable to not make use of this temperature in the neutronics - codes. Typically this is due to missing cross section data. - Defaults to True which makes use of any material temperature in the - neutronics material. Can be set to False which doesn't propagate - temperature data to the neutroics material. This only impacts - openmc and serpent materials. As shift materials require the use of - temperature and fispact/mcnp materials don't make use of - temperature on the material card. - additional_end_lines: Additional lines of test that are added to the - end of the material card. Compatable with MCNP, Serpent, Fispact - outputs which are string based. Agument should be a dictionary - specifying the code and a list of lines to be added, besure to - include any white required spaces in the string. This example will - add a single S(a,b) card to an MCNP card - {'mnnp': [' mt24 lwtr.01']}. Additional lines are not - carried over from materials. - - Returns: - Material: a neutronics_material_maker.Material instance - - """ - - def __init__( - self, - material_tag: Optional[str] = None, - materials: List[Union[nmm.Material, openmc.Material]] = [], - fracs: List[float] = [], - percent_type: Optional[str] = "vo", - packing_fraction: float = 1.0, - zaid_suffix: Optional[str] = None, - material_id: Optional[int] = None, - decimal_places: Optional[int] = 8, - volume_in_cm3: Optional[float] = None, - temperature: Optional[float] = None, - temperature_to_neutronics_code: Optional[bool] = True, - additional_end_lines: Optional[Dict[str, List[str]]] = None, - ): - self.material_tag = material_tag - self.materials = materials - self.fracs = fracs - self.percent_type = percent_type - self.packing_fraction = packing_fraction - self.zaid_suffix = zaid_suffix - self.material_id = material_id - self.decimal_places = decimal_places - self.volume_in_cm3 = volume_in_cm3 - self.temperature = temperature - self.temperature_to_neutronics_code = temperature_to_neutronics_code - self.additional_end_lines = additional_end_lines - - # derived values - self.openmc_material = None - self.serpent_material = None - self.mcnp_material = None - self.shift_material = None - self.fispact_material = None - - if len(self.fracs) != len(self.materials): - raise ValueError( - "There must be equal numbers of fracs and materials") - - if sum(self.fracs) != 1.0: - warnings.warn( - "warning sum of MutliMaterials.fracs do not sum to 1." - + str(self.fracs) - + " = " - + str(sum(self.fracs)), - UserWarning, - ) - - if OPENMC_AVAILABLE: - self._make_openmc_material() - - @property - def additional_end_lines(self): - """Returns a dictionary of lists where each entry in the list is a to - be added to the end of the material card and each key is the name of - the neutronics code to add the line to. - - Returns: - dictionary of neutronics codes each with a list of lines to add - """ - return self._additional_end_lines - - @additional_end_lines.setter - def additional_end_lines(self, value): - check_add_additional_end_lines(value) - - self._additional_end_lines = value - - @property - def temperature(self): - return self._temperature - - @temperature.setter - def temperature(self, value): - if value is not None: - if value < 0.0: - raise ValueError( - "Material.temperature must be greater than 0") - self._temperature = value - - @property - def packing_fraction(self): - return self._packing_fraction - - @packing_fraction.setter - def packing_fraction(self, value): - if not isinstance(value, (float, int)): - raise ValueError( - "MultiMaterial.packing_fraction must be a float or int") - if value < 0.0: - raise ValueError( - "MultiMaterial.packing_fraction must be greater than 0") - if value > 1.0: - raise ValueError( - "MultiMaterial.packing_fraction must be less than 1.") - self._packing_fraction = float(value) - - @property - def openmc_material(self): - """Creates an OpenMC version of the Material. - - Returns: - openmc.Material() object - """ - self._openmc_material = self._make_openmc_material() - return self._openmc_material - - @openmc_material.setter - def openmc_material(self, value): - self._openmc_material = value - - @property - def serpent_material(self) -> str: - """Creates a a Serpent version of the Material with '\n' as line - endings. Decimal places can be controlled with the - Material.decimal_places attribute. - - Returns: - A Serpent material card - """ - - self._serpent_material = make_serpent_material(self) - return self._serpent_material - - @serpent_material.setter - def serpent_material(self, value): - self._serpent_material = value - - @property - def mcnp_material(self): - """Creates a a MCNP version of the Material with '\n' as line endings. - Requires the Material.material_id to be set. Decimal places can be - controlled with the Material.decimal_places attribute. - - Returns: - A MCNP material card - """ - self._mcnp_material = make_mcnp_material(self) - return self._mcnp_material - - @mcnp_material.setter - def mcnp_material(self, value): - self._mcnp_material = value - - @property - def shift_material(self): - """Creates a a Shift version of the Material with '\n' as line endings. - Requires the Material.material_id and Material.temperature to be set. - Decimal places can be controlled with the Material.deicmal_places - attribute. - - Returns: - A Shift material card - """ - self._shift_material = make_shift_material(self) - return self._shift_material - - @shift_material.setter - def shift_material(self, value): - self._shift_material = value - - @property - def fispact_material(self): - """Creates a a FISPACT version of the Material with '\n' as line - endings. Requires the Material.volume_in_cm3 to be set. - - Returns: - A FISPACT material card - """ - self._fispact_material = make_fispact_material(self) - return self._fispact_material - - @fispact_material.setter - def fispact_material(self, value): - self._fispact_material = value - - def _make_openmc_material(self): - - openmc_material_objects = [] - for material in self.materials: - if isinstance(material, openmc.Material): - openmc_material_objects.append(material) - elif isinstance(material, nmm.Material): - openmc_material_objects.append(material.openmc_material) - else: - raise ValueError( - "only openmc.Material or neutronics_material_maker. \ - Materials are accepted. Not", type(material), - ) - - openmc_material = openmc.Material.mix_materials( - name=self.material_tag, - materials=openmc_material_objects, - fracs=self.fracs, - percent_type=self.percent_type, - ) - - if self.temperature is not None and self.temperature_to_neutronics_code is True: - openmc_material.temperature = self.temperature - - # this modifies the density by the packing fraction of the material - if self.packing_fraction != 1.0: - density_in_g_per_cm3 = openmc_material.get_mass_density() - - openmc_material.set_density( - "g/cm3", density_in_g_per_cm3 * self.packing_fraction - ) - - return openmc_material - - def to_json(self): - - materials_list = [] - for material in self.materials: - materials_list.append( - { - "material_name": material.material_name, - "material_tag": material.material_tag, - "temperature": material.temperature, - "pressure": material.pressure, - "packing_fraction": material.packing_fraction, - "elements": material.elements, - "chemical_equation": material.chemical_equation, - "isotopes": material.isotopes, - "density": material.density, - "density_equation": material.density_equation, - "atoms_per_unit_cell": material.atoms_per_unit_cell, - "volume_of_unit_cell_cm3": material.volume_of_unit_cell_cm3, - "density_unit": material.density_unit, - "percent_type": material.percent_type, - "enrichment": material.enrichment, - "enrichment_target": material.enrichment_target, - "enrichment_type": material.enrichment_type, - "reference": material.reference, - "zaid_suffix": material.zaid_suffix, - "material_id": material.material_id, - "decimal_places": material.decimal_places, - "volume_in_cm3": material.volume_in_cm3, - }) - - jsonified_object = { - "material_tag": self.material_tag, - "materials": materials_list, - "fracs": self.fracs, - "percent_type": self.percent_type, - "packing_fraction": self.packing_fraction, - "zaid_suffix": self.zaid_suffix, - "material_id": self.material_id, - "decimal_places": self.decimal_places, - "volume_in_cm3": self.volume_in_cm3, - } - - return jsonified_object diff --git a/neutronics_material_maker/utils.py b/neutronics_material_maker/utils.py index 8e12b6b..d1fe02c 100644 --- a/neutronics_material_maker/utils.py +++ b/neutronics_material_maker/utils.py @@ -217,16 +217,16 @@ def make_fispact_material(mat) -> str: def make_serpent_material(mat) -> str: """Returns the material in a string compatable with Serpent II""" - if mat.material_tag is None: - name = mat.material_name - else: - name = mat.material_tag - if mat.zaid_suffix is None: zaid_suffix = "" else: zaid_suffix = mat.zaid_suffix + if mat.name is None: + name = '' + else: + name = mat.name + mat_card = ["mat " + name + " " + str(mat.openmc_material.get_mass_density())] if mat.temperature_to_neutronics_code is True: @@ -260,16 +260,16 @@ def make_mcnp_material(mat) -> str: "Material.material_id needs setting before mcnp_material can be made" ) - if mat.material_tag is None: - name = mat.material_name - else: - name = mat.material_tag - if mat.zaid_suffix is None: zaid_suffix = "" else: zaid_suffix = mat.zaid_suffix + if mat.name is None: + name = '' + else: + name = mat.name + mat_card = [ "c " + name @@ -315,14 +315,9 @@ def make_shift_material(mat) -> str: "Material.temperature needs setting before shift_material can be made" ) - if mat.material_tag is None: - name = mat.material_name - else: - name = mat.material_tag - mat_card = [ "[COMP][MATERIAL]\n" - + "name %s\n" % name + + "name %s\n" % mat.name + "matid %s\n" % mat.material_id + "tmp %s" % mat.temperature ] @@ -359,12 +354,7 @@ def zaid_to_isotope(zaid: str) -> str: def AddMaterialFromDir(directory: str, verbose: bool = True): """Add materials to the internal library from a directory of json files""" for filename in Path(directory).rglob("*.json"): - with open(filename, "r") as f: - new_data = json.load(f) - material_dict.update(new_data) - if verbose: - print("Added materials to library from", filename) - print(sorted(list(new_data.keys())), "\n") + AddMaterialFromFile(filename, verbose) def AddMaterialFromFile(filename: str, verbose: Optional[bool] = True) -> None: @@ -382,6 +372,44 @@ def AvailableMaterials() -> dict: return material_dict +def SaveMaterialsToFile(filename: str, materials: list, format='json') -> str: + """Saves a list of materials to a json file. Useful for saving as a library + for future use. + + Arguments: + filename: The output filename. + materials: List of neutronics_material_maker.Materials to save. + + Returns + str: the filename of the json file + """ + + if format == 'json': + with open(filename, 'w') as outfile: + json.dump({mat.name: mat.to_json()[mat.name] + for mat in materials}, outfile, indent=4) + return filename + + all_materials = '' + for mat in materials: + if format == 'mcnp': + all_materials += 'c\nc\nc\n' + mat.mcnp_material + + if format == 'serpent': + all_materials += mat.serpent_material + + if format == 'shift': + all_materials += mat.shift_material + + if format == 'fispact': + all_materials += mat.shift_material + + with open(filename, 'w') as outfile: + outfile.write(all_materials) + + return filename + + # loads the internal material library of materials material_dict = {} AddMaterialFromDir(Path(__file__).parent / "data", verbose=False) diff --git a/setup.py b/setup.py index d5ed498..d5600b4 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="neutronics_material_maker", - version="0.2.7", + version="0.3.0", summary="Package for making material cards for neutronics codes", author="neutronics_material_maker development team", author_email="mail@jshimwell.com", diff --git a/tests/test_Material.py b/tests/test_Material.py index 62671e9..7210245 100644 --- a/tests/test_Material.py +++ b/tests/test_Material.py @@ -16,11 +16,12 @@ def test_error_raised_when_enrichment_and_enrichment_target(self): def error_raised_correctly(): - nmm.Material( - "WC", + test_material = nmm.Material.from_library( + name="WC", enrichment=90, enrichment_target=None ) + test_material.openmc_material self.assertRaises(ValueError, error_raised_correctly) @@ -29,13 +30,14 @@ def test_temperature_to_neutronics_code_openmc(self): selectivly propagated to the openmc_material and that the density remains unchanged""" - test_mat = nmm.Material("FLiBe", temperature=80, pressure=1) + test_mat = nmm.Material.from_library( + "FLiBe", temperature=80, pressure=1) assert test_mat.temperature == 80 assert test_mat.openmc_material.temperature == 80 - test_mat_2 = nmm.Material( - "FLiBe", + test_mat_2 = nmm.Material.from_library( + name="FLiBe", temperature=80, pressure=1, temperature_to_neutronics_code=False) @@ -49,8 +51,8 @@ def test_temperature_to_neutronics_code_serpent(self): selectivly propagated to the serpent_material and that the density remains unchanged""" - test_mat = nmm.Material( - "FLiBe", + test_mat = nmm.Material.from_library( + name="FLiBe", temperature=180, pressure=2) @@ -58,8 +60,8 @@ def test_temperature_to_neutronics_code_serpent(self): assert test_mat.openmc_material.temperature == 180 assert test_mat.serpent_material.split('\n')[0].endswith(' tmp 180') - test_mat_2 = nmm.Material( - "FLiBe", + test_mat_2 = nmm.Material.from_library( + name="FLiBe", temperature=180, pressure=1, temperature_to_neutronics_code=False) @@ -71,20 +73,21 @@ def test_temperature_to_neutronics_code_serpent(self): assert test_mat.openmc_material.density == test_mat_2.openmc_material.density def test_density_of_material_is_set_from_equation(self): - test_mat = nmm.Material("FLiBe", temperature=80, pressure=1) + test_mat = nmm.Material.from_library( + "FLiBe", temperature=80, pressure=1) assert test_mat.density is not None def test_density_of_material_is_set_from_crystal(self): - test_mat = nmm.Material("Li4SiO4") + test_mat = nmm.Material.from_library("Li4SiO4") assert test_mat.density is not None def test_density_of_material_is_set(self): - test_mat = nmm.Material("eurofer") + test_mat = nmm.Material.from_library("eurofer") assert test_mat.density is not None def test_material_from_elements(self): test_mat = nmm.Material( - material_name="test", + name="test", elements={"Li": 0.4, "Zr": 0.6}, percent_type="ao", density=1, @@ -96,7 +99,7 @@ def test_material_from_elements(self): def test_material_from_isotopes(self): test_mat = nmm.Material( - material_name="test", + name="test", isotopes={"Li6": 0.4, "Li7": 0.6}, percent_type="ao", density=1, @@ -107,7 +110,7 @@ def test_material_from_isotopes(self): def test_material_from_zaid_int_isotopes(self): test_mat = nmm.Material( - material_name="test", + name="test", isotopes={3006: 0.4, 3007: 0.6}, percent_type="ao", density=1, @@ -119,7 +122,7 @@ def test_material_from_zaid_int_isotopes(self): def test_material_from_zaid_str_isotopes(self): test_mat = nmm.Material( - material_name="test", + name="test", isotopes={"3006": 0.4, "3007": 0.6}, percent_type="ao", density=1, @@ -130,29 +133,29 @@ def test_material_from_zaid_str_isotopes(self): assert "Li7" in test_mat.openmc_material.get_nuclides() def test_iron_density(self): - a = nmm.Material("Iron") - assert a.openmc_material.density == 7.874 + test_mat = nmm.Material.from_library("Iron") + assert test_mat.openmc_material.density == 7.874 - a = nmm.Material("Iron") - serpent_density = a.serpent_material.split("\n")[0].split()[2] + test_mat = nmm.Material.from_library("Iron") + serpent_density = test_mat.serpent_material.split("\n")[0].split()[2] assert float(serpent_density) == pytest.approx(7.874) - a = nmm.Material("Iron", material_id=45) - mcnp_density = a.mcnp_material.split("\n")[0].split()[3] + test_mat = nmm.Material.from_library("Iron", material_id=45) + mcnp_density = test_mat.mcnp_material.split("\n")[0].split()[3] assert float(mcnp_density) == pytest.approx(7.874) - a = nmm.Material("Iron", volume_in_cm3=100) - fispact_density = a.fispact_material.split("\n")[0].split()[1] + test_mat = nmm.Material.from_library("Iron", volume_in_cm3=100) + fispact_density = test_mat.fispact_material.split("\n")[0].split()[1] assert float(fispact_density) == pytest.approx(7.874) def test_fispact_material(self): - a = nmm.Material("Li4SiO4", volume_in_cm3=1.0) - line_by_line_material = a.fispact_material.split("\n") + test_mat = nmm.Material.from_library("Li4SiO4", volume_in_cm3=1.0) + line_by_line_material = test_mat.fispact_material.split("\n") assert len(line_by_line_material) == 10 - assert a.fispact_material.split( + assert test_mat.fispact_material.split( "\n")[0].startswith("DENSITY 2.31899993235464") - assert a.fispact_material.split("\n")[1] == "FUEL 8" + assert test_mat.fispact_material.split("\n")[1] == "FUEL 8" assert "Li6 3.537400925715E+21" in line_by_line_material assert "Li7 4.307481314353E+22" in line_by_line_material assert "Si28 1.074757396925E+22" in line_by_line_material @@ -163,8 +166,8 @@ def test_fispact_material(self): assert "O18 9.324307302413E+19" in line_by_line_material def test_fispact_material_with_volume(self): - a = nmm.Material("Li4SiO4", volume_in_cm3=2.0) - line_by_line_material = a.fispact_material.split("\n") + test_mat = nmm.Material.from_library("Li4SiO4", volume_in_cm3=2.0) + line_by_line_material = test_mat.fispact_material.split("\n") assert len(line_by_line_material) == 10 assert line_by_line_material[0].startswith("DENSITY 2.31899993235464") @@ -179,16 +182,16 @@ def test_fispact_material_with_volume(self): assert "O18 1.864861460483E+20" in line_by_line_material def test_mcnp_material_suffix(self): - test_material1 = nmm.Material( - "Nb3Sn", material_tag="Nb3Sn", zaid_suffix=".21c", material_id=27 + test_material1 = nmm.Material.from_library( + name="Nb3Sn", zaid_suffix=".21c", material_id=27 ) mcnp_material1 = test_material1.mcnp_material - test_material2 = nmm.Material( - "Nb3Sn", material_tag="Nb3Sn", zaid_suffix=".30c", material_id=27 + test_material2 = nmm.Material.from_library( + name="Nb3Sn", zaid_suffix=".30c", material_id=27 ) mcnp_material2 = test_material2.mcnp_material - test_material3 = nmm.Material( - "Nb3Sn", material_tag="Nb3Sn", material_id=27) + test_material3 = nmm.Material.from_library( + name="Nb3Sn", material_id=27) mcnp_material3 = test_material3.mcnp_material assert len(mcnp_material3) < len(mcnp_material2) @@ -196,9 +199,8 @@ def test_mcnp_material_suffix(self): assert mcnp_material1.count("21c") == mcnp_material2.count("30c") def test_mcnp_material_lines(self): - test_material = nmm.Material( - "Nb3Sn", - material_tag="test", + test_material = nmm.Material.from_library( + name="Nb3Sn", density=3, zaid_suffix=".30c", decimal_places=6, @@ -209,7 +211,7 @@ def test_mcnp_material_lines(self): assert len(line_by_line_material) == 12 assert line_by_line_material[0].split()[0] == "c" - assert line_by_line_material[0].split()[1] == "test" + assert line_by_line_material[0].split()[1] == "Nb3Sn" assert line_by_line_material[0].split()[2] == "density" assert float(line_by_line_material[0].split()[3]) == pytest.approx(3) assert line_by_line_material[0].split()[4] == "g/cm3" @@ -228,9 +230,8 @@ def test_mcnp_material_lines(self): assert " 050116.30c 3.635000e-02" in line_by_line_material def test_mcnp_material_lines_with_decimal_places(self): - test_material = nmm.Material( - "Nb3Sn", - material_tag="test", + test_material = nmm.Material.from_library( + name="Nb3Sn", density=3, zaid_suffix=".30c", material_id=27, @@ -241,7 +242,7 @@ def test_mcnp_material_lines_with_decimal_places(self): assert len(line_by_line_material) == 12 assert line_by_line_material[0].split()[0] == "c" - assert line_by_line_material[0].split()[1] == "test" + assert line_by_line_material[0].split()[1] == "Nb3Sn" assert line_by_line_material[0].split()[2] == "density" assert float(line_by_line_material[0].split()[3]) == pytest.approx(3) assert line_by_line_material[0].split()[4] == "g/cm3" @@ -262,7 +263,7 @@ def test_mcnp_material_lines_with_decimal_places(self): def test_mcnp_material_lines_contain_underscore(self): test_material = nmm.Material( chemical_equation="Nb3Sn", - material_tag="test2", + name="test2", density=3.2, density_unit="g/cm3", material_id=1, @@ -293,7 +294,7 @@ def test_mcnp_material_lines_contain_underscore(self): def test_serpent_material_lines_contain_underscore(self): test_material = nmm.Material( chemical_equation="Nb3Sn", - material_tag="test2", + name="test2", density=3.2, density_unit="g/cm3", material_id=1, @@ -320,15 +321,15 @@ def test_serpent_material_lines_contain_underscore(self): assert "-" in line_by_line_material[11] def test_serpent_material_suffix(self): - test_material1 = nmm.Material( - "Nb3Sn", material_tag="Nb3Sn", zaid_suffix=".21c") + test_material1 = nmm.Material.from_library( + name="Nb3Sn", zaid_suffix=".21c") serpent_material1 = test_material1.serpent_material - test_material2 = nmm.Material( - "Nb3Sn", material_tag="Nb3Sn", zaid_suffix=".30c") + test_material2 = nmm.Material.from_library( + name="Nb3Sn", zaid_suffix=".30c") serpent_material2 = test_material2.serpent_material - test_material3 = nmm.Material("Nb3Sn", material_tag="Nb3Sn") + test_material3 = nmm.Material.from_library(name="Nb3Sn") serpent_material3 = test_material3.serpent_material assert len(serpent_material3) < len(serpent_material2) @@ -336,14 +337,14 @@ def test_serpent_material_suffix(self): assert serpent_material1.count("21c") == serpent_material2.count("30c") def test_serpent_material_lines(self): - test_material = nmm.Material( - "Nb3Sn", material_tag="test", density=3, zaid_suffix=".30c" + test_material = nmm.Material.from_library( + name="Nb3Sn", density=3, zaid_suffix=".30c" ) line_by_line_material = test_material.serpent_material.split("\n") assert len(line_by_line_material) == 12 assert line_by_line_material[0].split()[0] == "mat" - assert line_by_line_material[0].split()[1] == "test" + assert line_by_line_material[0].split()[1] == "Nb3Sn" assert float(line_by_line_material[0].split()[2]) == pytest.approx(3) assert " 041093.30c 7.50000000e-01" in line_by_line_material assert " 050120.30c 8.14500000e-02" in line_by_line_material @@ -358,9 +359,8 @@ def test_serpent_material_lines(self): assert " 050116.30c 3.63500000e-02" in line_by_line_material def test_serpent_material_lines_with_decimal_places(self): - test_material = nmm.Material( - "Nb3Sn", - material_tag="test", + test_material = nmm.Material.from_library( + name="Nb3Sn", density=3.3333, zaid_suffix=".30c", decimal_places=4, @@ -369,7 +369,7 @@ def test_serpent_material_lines_with_decimal_places(self): assert len(line_by_line_material) == 12 assert line_by_line_material[0].split()[0] == "mat" - assert line_by_line_material[0].split()[1] == "test" + assert line_by_line_material[0].split()[1] == "Nb3Sn" assert float(line_by_line_material[0].split()[ 2]) == pytest.approx(3.3333) assert " 041093.30c 7.5000e-01" in line_by_line_material @@ -392,7 +392,7 @@ def test_material_creation_from_chemical_formula_with_enrichment(self): lithium_lead_elements = "Li" + \ str(li_fraction) + "Pb" + str(pb_fraction) - test_material = nmm.Material( + test_material = nmm.Material.from_library( "lithium-lead", enrichment=enrichment, enrichment_target="Li6", @@ -439,7 +439,7 @@ def test_material_creation_from_chemical_formula_with_enrichment2(self): lithium_lead_elements = "Li" + \ str(li_fraction) + "Pb" + str(pb_fraction) - test_material = nmm.Material( + test_material = nmm.Material.from_library( "lithium-lead", enrichment=enrichment, enrichment_target="Li6", @@ -477,43 +477,43 @@ def test_density_of_crystals(self): # these tests fail because the density value is too far away from calculated value # however, this could be becuase the density values are rounded to 2 dp - test_mat = nmm.Material(material_name="Li4SiO4") + test_mat = nmm.Material.from_library(name="Li4SiO4") assert test_mat.openmc_material.density == pytest.approx( 2.32, rel=0.01) - test_mat = nmm.Material(material_name="Li2SiO3") + test_mat = nmm.Material.from_library(name="Li2SiO3") assert test_mat.openmc_material.density == pytest.approx( 2.44, rel=0.01) - test_mat = nmm.Material(material_name="Li2ZrO3") + test_mat = nmm.Material.from_library(name="Li2ZrO3") assert test_mat.openmc_material.density == pytest.approx( 4.03, rel=0.01) - test_mat = nmm.Material(material_name="Li2TiO3") + test_mat = nmm.Material.from_library(name="Li2TiO3") assert test_mat.openmc_material.density == pytest.approx( 3.34, rel=0.01) - test_mat = nmm.Material(material_name="Li8PbO6") + test_mat = nmm.Material.from_library(name="Li8PbO6") assert test_mat.openmc_material.density == pytest.approx( 4.14, rel=0.01) - test_mat = nmm.Material(material_name="Be") + test_mat = nmm.Material.from_library(name="Be") assert test_mat.openmc_material.density == pytest.approx( 1.88, rel=0.01) - test_mat = nmm.Material(material_name="Be12Ti") + test_mat = nmm.Material.from_library(name="Be12Ti") assert test_mat.openmc_material.density == pytest.approx( 2.28, rel=0.01) - test_mat = nmm.Material(material_name="Ba5Pb3") + test_mat = nmm.Material.from_library(name="Ba5Pb3") assert test_mat.openmc_material.density == pytest.approx( 5.84, rel=0.01) - test_mat = nmm.Material(material_name="Nd5Pb4") + test_mat = nmm.Material.from_library(name="Nd5Pb4") assert test_mat.openmc_material.density == pytest.approx( 8.79, rel=0.01) - test_mat = nmm.Material(material_name="Zr5Pb3") + test_mat = nmm.Material.from_library(name="Zr5Pb3") assert test_mat.openmc_material.density == pytest.approx( 8.23, rel=0.01) @@ -521,9 +521,9 @@ def test_density_of_crystals(self): def test_density_of_enriched_crystals(self): - test_mat = nmm.Material(material_name="Li4SiO4") - test_mat_enriched = nmm.Material( - material_name="Li4SiO4", + test_mat = nmm.Material.from_library(name="Li4SiO4") + test_mat_enriched = nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -533,9 +533,9 @@ def test_density_of_enriched_crystals(self): def test_density_of_packed_crystals(self): - test_mat = nmm.Material(material_name="Li4SiO4") - test_mat_packed = nmm.Material( - material_name="Li4SiO4", + test_mat = nmm.Material.from_library(name="Li4SiO4") + test_mat_packed = nmm.Material.from_library( + name="Li4SiO4", packing_fraction=0.35) assert ( test_mat.openmc_material.density * 0.35 @@ -549,7 +549,7 @@ def test_material_creation_from_chemical_formula(self): lithium_lead_elements = "Li" + \ str(li_fraction) + "Pb" + str(pb_fraction) - test_material = nmm.Material( + test_material = nmm.Material.from_library( "lithium-lead", chemical_equation=lithium_lead_elements, temperature=450, @@ -572,43 +572,43 @@ def test_incorrect_settings(self): def enrichment_too_high(): """checks a ValueError is raised when enrichment is over 100""" - nmm.Material("Li4SiO4", enrichment=200) + nmm.Material.from_library("Li4SiO4", enrichment=200) self.assertRaises(ValueError, enrichment_too_high) def enrichment_too_low(): """checks a ValueError is raised when enrichment is under 0""" - nmm.Material("Li4SiO4", enrichment=-10) + nmm.Material.from_library("Li4SiO4", enrichment=-10) self.assertRaises(ValueError, enrichment_too_low) def incorrect_pressure(): """checks a ValueError is raised when pressure is below 0""" - nmm.Material("H2O", temperature=283, pressure=-1e6) + nmm.Material.from_library("H2O", temperature=283, pressure=-1e6) self.assertRaises(ValueError, incorrect_pressure) def incorrect_temperature(): """checks a ValueError is raised when temperature is below 0""" - nmm.Material("H2O", temperature=-10, pressure=1e6) + nmm.Material.from_library("H2O", temperature=-10, pressure=1e6) self.assertRaises(ValueError, incorrect_temperature) def incorrect_temperature_too_low(): """checks a ValueError is raised when temperature is below absolute zero""" - nmm.Material("H2O", temperature=-1, pressure=1e6) + nmm.Material.from_library("H2O", temperature=-1, pressure=1e6) self.assertRaises(ValueError, incorrect_temperature_too_low) def incorrect_elements_chemical_equation_usage(): """checks a ValueError is raised when the both chemical_equation and elements are used""" - nmm.Material( - material_name='my_mat', + nmm.Material.from_library( + name='my_mat', enrichment=50.0, chemical_equation="Li4SiO4", elements={'C': 0.3333, 'O': 0.666}, @@ -622,8 +622,8 @@ def incorrect_elements_chemical_equation_usage(): def incorrect_enrichment_target(): """checks a ValueError is raised when the enrichment target is not a natural isotope""" - nmm.Material( - material_name="Li4SiO4", + nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li9", enrichment_type="ao", @@ -634,8 +634,8 @@ def incorrect_enrichment_target(): def test_missing_temperature_He(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( - material_name="He", + nmm.Material.from_library( + name="He", pressure=1e6, ) @@ -644,8 +644,8 @@ def test_missing_temperature_He(): def test_missing_temperature_H2O(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( - material_name="H2O", + nmm.Material.from_library( + name="H2O", pressure=1e6, ) @@ -654,27 +654,27 @@ def test_missing_temperature_H2O(): def test_missing_temperature_CO2(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( - material_name="CO2", + nmm.Material.from_library( + name="CO2", pressure=1e6, ) self.assertRaises(ValueError, test_missing_temperature_CO2) - def test_incorrect_material_name_type(): + def test_incorrect_name_type(): """checks a ValueError is raised when the temperature is not set""" - test_material = nmm.Material("H2O", - temperature=283, - pressure=-1e6) - test_material.material_name = 1 + test_material = nmm.Material.from_library("H2O", + temperature=283, + pressure=-1e6) + test_material.name = 1 - self.assertRaises(ValueError, test_incorrect_material_name_type) + self.assertRaises(ValueError, test_incorrect_name_type) def test_incorrect_density_unit_type(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", density=1., density_unit='grams per cm3') @@ -684,7 +684,7 @@ def test_incorrect_density_unit_type(): def test_incorrect_percent_type_type(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", density=1., percent_type='weight percent') @@ -694,7 +694,7 @@ def test_incorrect_percent_type_type(): def test_incorrect_enrichment_type_type(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", density=1., enrichment_type='weight percent') @@ -704,7 +704,7 @@ def test_incorrect_enrichment_type_type(): def test_incorrect_atoms_per_unit_cell(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", atoms_per_unit_cell=-1.) @@ -713,7 +713,7 @@ def test_incorrect_atoms_per_unit_cell(): def test_incorrect_volume_of_unit_cell_cm3(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", volume_of_unit_cell_cm3=-1.) @@ -722,7 +722,7 @@ def test_incorrect_volume_of_unit_cell_cm3(): def test_incorrect_temperature(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", temperature=-1.) @@ -731,7 +731,7 @@ def test_incorrect_temperature(): def test_incorrect_zaid_suffix_type(): """checks a ValueError is raised when the temperature is not set""" - nmm.Material( + nmm.Material.from_library( "eurofer", zaid_suffix=0.80) @@ -741,7 +741,7 @@ def test_incorrect_packing_fraction(): """checks a ValueError is raised when the packing_fraction is the wrong type""" - nmm.Material( + nmm.Material.from_library( "eurofer", packing_fraction="1" ) @@ -752,7 +752,7 @@ def test_too_large_packing_fraction(): """checks a ValueError is raised when the packing_fraction is the too large""" - nmm.Material( + nmm.Material.from_library( "eurofer", packing_fraction=1.1 ) @@ -763,7 +763,7 @@ def test_too_small_packing_fraction(): """checks a ValueError is raised when the packing_fraction is the too large""" - nmm.Material( + nmm.Material.from_library( "eurofer", packing_fraction=-0.1 ) @@ -774,7 +774,7 @@ def test_chemical_equation_wrong_type(): """checks a ValueError is raised when the chemical_equation is the not a str""" - nmm.Material( + nmm.Material.from_library( "eurofer", chemical_equation=-0.1 ) @@ -785,7 +785,7 @@ def test_enrichment_too_high(): """checks a ValueError is raised when the enrichment is the too large""" - nmm.Material( + nmm.Material.from_library( "Li4SiO4", enrichment=101, enrichment_target='Li6' @@ -797,7 +797,7 @@ def test_enrichment_too_low(): """checks a ValueError is raised when the enrichment is the too small""" - nmm.Material( + nmm.Material.from_library( "Li4SiO4", enrichment=-1, enrichment_target='Li6' @@ -809,29 +809,29 @@ def test_pressure_too_low(): """checks a ValueError is raised when the pressure is the too small""" - nmm.Material( + nmm.Material.from_library( "Li4SiO4", pressure=-1 ) self.assertRaises(ValueError, test_pressure_too_low) - def test_reference_wrong_type(): - """checks a ValueError is raised when the reference is the + def test_comment_wrong_type(): + """checks a ValueError is raised when the comment is the not a string""" - nmm.Material( + nmm.Material.from_library( "Li4SiO4", - reference=-1 + comment=-1 ) - self.assertRaises(ValueError, test_reference_wrong_type) + self.assertRaises(ValueError, test_comment_wrong_type) def test_material_id_wrong_type(): """checks a ValueError is raised when the material_id is the not an int""" - nmm.Material( + nmm.Material.from_library( "Li4SiO4", material_id='one' ) @@ -842,8 +842,8 @@ def test_material_id_wrong_type(): # def no_enrichment_target(): # """checks a ValueError is raised when the enrichment target is set to none""" - # nmm.Material( - # material_name="my_mat", + # nmm.Material.from_library( + # name="my_mat", # chemical_equation="Li4SiO", # enrichment=50.0, # enrichment_target=None, @@ -851,25 +851,25 @@ def test_material_id_wrong_type(): # ) # self.assertRaises(ValueError, no_enrichment_target) - def incorrect_reference_type(): - """checks a ValueError is raised when the reference is an int""" + def incorrect_comment_type(): + """checks a ValueError is raised when the comment is an int""" - nmm.Material( - material_name="Li4SiO4", + nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", - reference=1, + comment=1, ) - self.assertRaises(ValueError, incorrect_reference_type) + self.assertRaises(ValueError, incorrect_comment_type) def incorrect_setting_for_id(): """checks a ValueError is raised when the id is not set and an mcnp material card is need""" - test_material = nmm.Material( - material_name="Li4SiO4", + test_material = nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -884,8 +884,8 @@ def incorrect_setting_for_id2(): """checks a ValueError is raised when the id is set as a str and an mcnp material card is need""" - test_material = nmm.Material( - material_name="Li4SiO4", + test_material = nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -899,8 +899,8 @@ def incorrect_setting_for_id2(): def incorrect_setting_for_volume_in_cm3_1(): """checks a ValueError is raised when the volume_in_cm3 is set to a string""" - test_material = nmm.Material( - material_name="Li4SiO4", + test_material = nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -915,8 +915,8 @@ def incorrect_setting_for_volume_in_cm3_2(): """checks a ValueError is raised when the id is not set and an mcnp material card is need""" - test_material = nmm.Material( - material_name="Li4SiO4", + test_material = nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -930,8 +930,8 @@ def incorrect_setting_for_volume_in_cm3_2(): def test_setting_for_volume_int(self): """checks the volume_in_cm3 is set to an int""" - nmm.Material( - material_name="Li4SiO4", + nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -941,8 +941,8 @@ def test_setting_for_volume_int(self): def test_setting_for_volume_float(self): """checks the volume_in_cm3 is set to an float""" - nmm.Material( - material_name="Li4SiO4", + nmm.Material.from_library( + name="Li4SiO4", enrichment=50.0, enrichment_target="Li6", enrichment_type="ao", @@ -950,48 +950,61 @@ def test_setting_for_volume_float(self): ) def test_json_dump_works(self): - test_material = nmm.Material( - "H2O", temperature=373, pressure=1e6) + test_material = nmm.Material.from_library( + name="H2O", temperature=373, pressure=1e6) assert isinstance(json.dumps(test_material), str) def test_json_dump_contains_correct_keys(self): - test_material = nmm.Material( - "H2O", temperature=373, pressure=1e6) + test_material = nmm.Material.from_library( + name="H2O", temperature=373, pressure=1e6, comment='test') test_material_in_json_form = test_material.to_json() - assert "atoms_per_unit_cell" in test_material_in_json_form.keys() - assert "density" in test_material_in_json_form.keys() - assert "density_equation" in test_material_in_json_form.keys() - assert "density_unit" in test_material_in_json_form.keys() - assert "chemical_equation" in test_material_in_json_form.keys() - assert "enrichment" in test_material_in_json_form.keys() - assert "enrichment_target" in test_material_in_json_form.keys() - assert "enrichment_type" in test_material_in_json_form.keys() - assert "isotopes" in test_material_in_json_form.keys() - assert "material_name" in test_material_in_json_form.keys() - assert "material_tag" in test_material_in_json_form.keys() - assert "packing_fraction" in test_material_in_json_form.keys() - assert "percent_type" in test_material_in_json_form.keys() - assert "pressure" in test_material_in_json_form.keys() - assert "reference" in test_material_in_json_form.keys() - assert "temperature" in test_material_in_json_form.keys() - assert "temperature" in test_material_in_json_form.keys() - assert "volume_of_unit_cell_cm3" in test_material_in_json_form.keys() + assert "density" in test_material_in_json_form['H2O'].keys() + assert "density_unit" in test_material_in_json_form['H2O'].keys() + assert "chemical_equation" in test_material_in_json_form['H2O'].keys() + assert "packing_fraction" in test_material_in_json_form['H2O'].keys() + assert "percent_type" in test_material_in_json_form['H2O'].keys() + assert "pressure" in test_material_in_json_form['H2O'].keys() + assert "comment" in test_material_in_json_form['H2O'].keys() + assert "temperature" in test_material_in_json_form['H2O'].keys() + + def test_json_dump_contains_correct_keys_2(self): + test_material = nmm.Material.from_library( + name="Li4SiO4", enrichment=90) + test_material_in_json_form = test_material.to_json() + + assert "atoms_per_unit_cell" in test_material_in_json_form['Li4SiO4'].keys( + ) + assert "density" in test_material_in_json_form['Li4SiO4'].keys() + assert "density_unit" in test_material_in_json_form['Li4SiO4'].keys() + assert "chemical_equation" in test_material_in_json_form['Li4SiO4'].keys( + ) + assert "enrichment_type" in test_material_in_json_form['Li4SiO4'].keys( + ) + assert "packing_fraction" in test_material_in_json_form['Li4SiO4'].keys( + ) + assert "percent_type" in test_material_in_json_form['Li4SiO4'].keys() + assert "comment" in test_material_in_json_form['Li4SiO4'].keys() + assert "enrichment" in test_material_in_json_form['Li4SiO4'].keys() + assert "enrichment_target" in test_material_in_json_form['Li4SiO4'].keys( + ) + assert "volume_of_unit_cell_cm3" in test_material_in_json_form['Li4SiO4'].keys( + ) def test_json_dump_contains_correct_values(self): - test_material = nmm.Material( + test_material = nmm.Material.from_library( "H2O", temperature=373, pressure=1e6) test_material_in_json_form = test_material.to_json() - assert test_material_in_json_form["pressure"] == 1e6 - assert test_material_in_json_form["temperature"] == 373 - assert test_material_in_json_form["material_name"] == "H2O" + assert test_material_in_json_form["H2O"]["pressure"] == 1e6 + assert test_material_in_json_form["H2O"]["temperature"] == 373 + assert list(test_material_in_json_form.keys())[0] == "H2O" def test_temperature_from_C_in_materials(self): """checks that the temperature set in C ends up in the temperature attribute of the openmc materials""" - test_material = nmm.Material( + test_material = nmm.Material.from_library( 'H2O', temperature=383, pressure=15.5e6 @@ -1009,7 +1022,7 @@ def test_temperature_from_K_in_materials(self): """checks that the temperature set in K ends up in the temperature attribute of the openmc materials""" - test_material = nmm.Material( + test_material = nmm.Material.from_library( 'H2O', temperature=300, pressure=15.5e6 @@ -1027,7 +1040,7 @@ def test_temperature_not_in_materials(self): """checks that the temperature set in K ends up in the temperature attribute of the openmc materials""" - test_material = nmm.Material('WC') + test_material = nmm.Material.from_library('WC') assert test_material.openmc_material.temperature is None line_by_line_material = test_material.serpent_material.split("\n") @@ -1039,11 +1052,11 @@ def test_temperature_not_in_materials(self): def test_restricted_eval(): """Test that arbitrary commands cannot be injected.""" with pytest.raises(NameError): - nmm.Material( - "BadMaterial", + nmm.Material.from_library( + name="Nb3Sn", temperature=373, pressure=1e6, - density_equation="os.system('ls')" + density="os.system('ls')" ) diff --git a/tests/test_Material_from_mixture.py b/tests/test_Material_from_mixture.py new file mode 100644 index 0000000..97adbbc --- /dev/null +++ b/tests/test_Material_from_mixture.py @@ -0,0 +1,598 @@ +#!/usr/bin/env python3 + +__author__ = "neutronics material maker development team" + +import json +import unittest +import warnings + +import neutronics_material_maker as nmm +import openmc +import pytest + + +class test_object_properties(unittest.TestCase): + def test_serpent_from_mixture_type(self): + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("Li4SiO4"), + nmm.Material.from_library("Be12Ti")], + fracs=[ + 0.50, + 0.50], + percent_type="vo", + ) + + assert len(test_material.serpent_material) > 100 + assert isinstance(test_material.serpent_material, str) + + def test_mcnp_from_mixture_type(self): + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("Li4SiO4"), + nmm.Material.from_library("Be12Ti")], + fracs=[ + 0.50, + 0.50], + percent_type="vo", + material_id=2, + ) + + assert len(test_material.mcnp_material) > 100 + assert isinstance(test_material.mcnp_material, str) + + def test_shift_from_mixture_type(self): + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("Li4SiO4"), + nmm.Material.from_library("Be12Ti")], + fracs=[ + 0.50, + 0.50], + percent_type="vo", + temperature=300, + material_id=2, + ) + + assert len(test_material.shift_material) > 100 + assert isinstance(test_material.shift_material, str) + + def test_fispact_from_mixture_type(self): + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("Li4SiO4"), + nmm.Material.from_library("Be12Ti")], + fracs=[ + 0.50, + 0.50], + percent_type="vo", + volume_in_cm3=20, + ) + + assert len(test_material.fispact_material) > 100 + assert isinstance(test_material.fispact_material, str) + + def test_make_from_mixture_from_material_objects(self): + # tests that a from_mixture can be created by passing Material objects + # into the from_mixture function + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("Li4SiO4"), + nmm.Material.from_library("Be12Ti")], + fracs=[ + 0.50, + 0.50], + percent_type="vo", + ) + + assert isinstance(test_material, openmc.Material) is False + assert isinstance(test_material.openmc_material, openmc.Material) + + def test_make_from_mixture_from_openmc_materials(self): + # tests that a from_mixture can be created by passing neutronics + # materials into the from_mixture function + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("Li4SiO4").openmc_material, + nmm.Material.from_library("Be12Ti").openmc_material, + ], + fracs=[0.50, 0.50], + percent_type="vo", + ) + + assert isinstance(test_material, openmc.Material) is False + assert isinstance(test_material.openmc_material, openmc.Material) + + def test_mutliname_setting(self): + + test_material = nmm.Material.from_mixture( + materials=[ + nmm.Material.from_library('Pb842Li158', temperature=500), + nmm.Material.from_library('SiC') + ], + fracs=[0.5, 0.5]) + + assert test_material.name is None + test_material.name = 'tag_set_after_creation' + assert test_material.name == 'tag_set_after_creation' + + test_material.openmc_material + assert test_material.openmc_material.name == 'tag_set_after_creation' + + test_material = nmm.Material.from_mixture( + materials=[ + nmm.Material.from_library('Pb842Li158', temperature=500), + nmm.Material.from_library('SiC') + ], + fracs=[0.5, 0.5], + name='tag_set_on_creation') + + assert test_material.name == 'tag_set_on_creation' + + test_material.openmc_material + assert test_material.openmc_material.name == 'tag_set_on_creation' + + def test_from_mixture_attributes_from_material_objects_and_openmc_materials( + self): + # tests that from_mixtures made from material objects and neutronics + # materials have the same properties + + test_material_1 = nmm.Material.from_mixture( + name="test_material_1", + materials=[ + nmm.Material.from_library("Li4SiO4"), + nmm.Material.from_library("Be12Ti")], + fracs=[ + 0.5, + 0.5], + percent_type="vo", + ).openmc_material + + test_material_2 = nmm.Material.from_mixture( + name="test_material_2", + materials=[ + nmm.Material.from_library("Li4SiO4").openmc_material, + nmm.Material.from_library("Be12Ti").openmc_material, + ], + fracs=[0.5, 0.5], + percent_type="vo", + ).openmc_material + + assert test_material_1.density == test_material_2.density + assert test_material_1.nuclides == test_material_2.nuclides + + def test_density_of_mixed_two_packed_crystals(self): + + test_material_1 = nmm.Material.from_library(name="Li4SiO4") + test_material_packed_1 = nmm.Material.from_library( + name="Li4SiO4", packing_fraction=0.65 + ) + assert ( + test_material_1.openmc_material.density * 0.65 + == test_material_packed_1.openmc_material.density + ) + + test_material_2 = nmm.Material.from_library(name="Be12Ti") + test_material_packed_2 = nmm.Material.from_library( + name="Be12Ti", packing_fraction=0.35 + ) + assert ( + test_material_2.openmc_material.density * 0.35 + == test_material_packed_2.openmc_material.density + ) + + mixed_packed_crystals = nmm.Material.from_mixture( + name="mixed_packed_crystals", + materials=[test_material_packed_1, test_material_packed_2], + fracs=[0.75, 0.25], + percent_type="vo", + ) + + assert mixed_packed_crystals.openmc_material.density == pytest.approx( + (test_material_1.openmc_material.density * 0.65 * 0.75) + + (test_material_2.openmc_material.density * 0.35 * 0.25), + rel=0.01, + ) + + def test_density_of_mixed_two_packed_and_non_packed_crystals(self): + + test_material_1 = nmm.Material.from_library(name="Li4SiO4") + test_material_1_packed = nmm.Material.from_library( + name="Li4SiO4", packing_fraction=0.65 + ) + + mixed_material = nmm.Material.from_mixture( + name="mixed_material", + materials=[test_material_1, test_material_1_packed], + fracs=[0.2, 0.8], + percent_type="vo", + ) + + assert mixed_material.openmc_material.density == pytest.approx( + (test_material_1.openmc_material.density * 0.2) + + (test_material_1.openmc_material.density * 0.65 * 0.8) + ) + + def test_density_of_mixed_materials_from_density(self): + + test_material = nmm.Material.from_library( + "H2O", temperature=300, pressure=100000) + test_mixed_material = nmm.Material.from_mixture( + name="test_mixed_material", + materials=[test_material], + fracs=[1]) + + assert test_material.openmc_material.density == pytest.approx( + test_mixed_material.openmc_material.density + ) + + def test_density_of_mixed_one_packed_crystal_and_one_non_crystal(self): + + test_material_1 = nmm.Material.from_library( + name="H2O", temperature=300, pressure=100000 + ) + + test_material_2 = nmm.Material.from_library(name="Li4SiO4") + test_material_2_packed = nmm.Material.from_library( + name="Li4SiO4", packing_fraction=0.65 + ) + + mixed_packed_crystal_and_non_crystal = nmm.Material.from_mixture( + name="mixed_packed_crystal_and_non_crystal", + materials=[test_material_1, test_material_2_packed], + fracs=[0.5, 0.5], + percent_type="vo", + ) + + assert ( + mixed_packed_crystal_and_non_crystal.openmc_material.density + == pytest.approx( + (test_material_1.openmc_material.density * 0.5) + + (test_material_2.openmc_material.density * 0.65 * 0.5) + ) + ) + + def test_packing_fraction_for_single_materials(self): + + test_material_1 = nmm.Material.from_library("Li4SiO4").openmc_material + + test_material_2 = nmm.Material.from_library( + "Li4SiO4", packing_fraction=1).openmc_material + + assert test_material_1.density == test_material_2.density + + test_material_3 = nmm.Material.from_library( + "Li4SiO4", packing_fraction=0.5).openmc_material + + assert test_material_3.density == pytest.approx( + test_material_1.density * 0.5) + + test_material_4 = nmm.Material.from_library( + "Li4SiO4", packing_fraction=0.75).openmc_material + + assert test_material_4.density == pytest.approx( + test_material_1.density * 0.75) + + def test_packing_fraction_for_from_mixture_function(self): + + test_material_5 = nmm.Material.from_mixture( + name="test_material_5", + materials=[ + nmm.Material.from_library("tungsten"), + nmm.Material.from_library("eurofer")], + fracs=[ + 0.5, + 0.5], + ).openmc_material + + test_material_6 = nmm.Material.from_mixture( + name="test_material_6", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=1), + nmm.Material.from_library("eurofer", packing_fraction=1), + ], + fracs=[0.5, 0.5], + ).openmc_material + + assert test_material_5.density == test_material_6.density + + test_material_7 = nmm.Material.from_mixture( + name="test_material_7", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.5), + nmm.Material.from_library("eurofer", packing_fraction=0.5), + ], + fracs=[0.5, 0.5], + ).openmc_material + + assert test_material_7.density == pytest.approx( + test_material_5.density * 0.5) + + def test_packing_fraction_of_a_from_mixture(self): + + test_material_6 = nmm.Material.from_mixture( + name="test_material_6", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.34), + nmm.Material.from_library("eurofer", packing_fraction=0.60), + ], + fracs=[0.5, 0.5], + ).openmc_material + + test_material_7 = nmm.Material.from_mixture( + name="test_material_7", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.34), + nmm.Material.from_library("eurofer", packing_fraction=0.60), + ], + fracs=[0.5, 0.5], + packing_fraction=0.25, + ).openmc_material + + assert test_material_6.get_mass_density() * 0.25 == pytest.approx( + test_material_7.get_mass_density() + ) + + def test_packing_fraction_for_mix_materials_function(self): + + test_material_8 = openmc.Material.mix_materials( + name="test_material_8", + materials=[ + nmm.Material.from_library("tungsten").openmc_material, + nmm.Material.from_library("eurofer").openmc_material, + ], + fracs=[0.5, 0.5], + percent_type="vo", + ) + + test_material_9 = openmc.Material.mix_materials( + name="test_material_9", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=1).openmc_material, nmm.Material.from_library( + "eurofer", packing_fraction=1).openmc_material, ], fracs=[ + 0.5, 0.5], percent_type="vo", ) + + assert test_material_8.density == test_material_9.density + + test_material_10 = openmc.Material.mix_materials( + name="test_material_10", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.5).openmc_material, nmm.Material.from_library( + "eurofer", packing_fraction=0.5).openmc_material, ], fracs=[ + 0.5, 0.5], percent_type="vo", ) + + assert test_material_10.density == pytest.approx( + test_material_8.density * 0.5) + + def test_from_mixture_vs_mix_materials(self): + + test_material_11 = nmm.Material.from_mixture( + name="test_material_11", + materials=[ + nmm.Material.from_library("tungsten"), + nmm.Material.from_library("eurofer")], + fracs=[ + 0.5, + 0.5], + ).openmc_material + + test_material_12 = openmc.Material.mix_materials( + name="test_material_12", + materials=[ + nmm.Material.from_library("tungsten").openmc_material, + nmm.Material.from_library("eurofer").openmc_material, + ], + fracs=[0.5, 0.5], + percent_type="vo", + ) + + assert pytest.approx( + test_material_11.density) == test_material_12.density + + test_material_13 = nmm.Material.from_mixture( + name="test_material_13", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.6), + nmm.Material.from_library("eurofer", packing_fraction=0.8), + ], + fracs=[0.3, 0.7], + ).openmc_material + + test_material_14 = openmc.Material.mix_materials( + name="test_material_14", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.6).openmc_material, nmm.Material.from_library( + "eurofer", packing_fraction=0.8).openmc_material, ], fracs=[ + 0.3, 0.7], percent_type="vo", ) + + assert pytest.approx( + test_material_13.density) == test_material_14.density + + def test_json_dump_works(self): + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.6), + nmm.Material.from_library("eurofer", packing_fraction=0.8), + ], + fracs=[0.3, 0.7], + ) + assert isinstance(json.dumps(test_material), str) + + def test_json_dump_contains_correct_keys(self): + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.6), + nmm.Material.from_library("eurofer", packing_fraction=0.8), + ], + fracs=[0.3, 0.7], + ) + test_material_in_json_form = test_material.to_json() + + assert "test_material" in list(test_material_in_json_form.keys()) + assert "percent_type" in test_material_in_json_form["test_material"].keys( + ) + assert "packing_fraction" in test_material_in_json_form["test_material"].keys( + ) + + def test_json_dump_contains_correct_values(self): + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("tungsten", packing_fraction=0.6), + nmm.Material.from_library("eurofer", packing_fraction=0.8), + ], + fracs=[0.3, 0.7], + ) + test_material_in_json_form = test_material.to_json() + + assert list(test_material_in_json_form.keys()) == ["test_material"] + assert test_material_in_json_form["test_material"]["percent_type"] == "ao" + assert test_material_in_json_form["test_material"]["packing_fraction"] == 1.0 + + def test_incorrect_settings(self): + def too_large_fracs(): + """checks a ValueError is raised when the fracs are above 1""" + + nmm.Material.from_mixture( + name="test_material", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.6), nmm.Material.from_library( + "eurofer", packing_fraction=0.8), ], fracs=[ + 0.3, 0.75], ) + + with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + # Trigger a warning. + too_large_fracs() + # Verify some things + assert len(w) >= 1 + assert issubclass(w[-1].category, UserWarning) + # the second entry is needed as OpenMC material mixer also raises + # and error + assert "warning sum of MutliMaterials.fracs do not sum to 1." in str( + w[-2].message) + + def too_small_fracs(): + """checks a ValueError is raised when the fracs are above 1""" + + nmm.Material.from_mixture( + name="test_material", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.6), nmm.Material.from_library( + "eurofer", packing_fraction=0.8), ], fracs=[ + 0.3, 0.65], ) + + with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + # Trigger a warning. + too_small_fracs() + # Verify some things + assert len(w) >= 1 + assert issubclass(w[-1].category, UserWarning) + # the second entry is needed as OpenMC material mixer also raises + # and error + assert "warning sum of MutliMaterials.fracs do not sum to 1." in str( + w[-2].message) + + def test_incorrect_packing_fraction(): + """checks a ValueError is raised when the packing_fraction is the + wrong type""" + + nmm.Material.from_mixture( + name="test_material", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.6), nmm.Material.from_library( + "eurofer", packing_fraction=0.8), ], fracs=[ + 0.3, 0.7], packing_fraction="1") + + self.assertRaises(ValueError, test_incorrect_packing_fraction) + + def test_too_large_packing_fraction(): + """checks a ValueError is raised when the packing_fraction is the + too large""" + + nmm.Material.from_mixture( + name="test_material", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.6), nmm.Material.from_library( + "eurofer", packing_fraction=0.8), ], fracs=[ + 0.3, 0.7], packing_fraction=1.1) + + self.assertRaises(ValueError, test_too_large_packing_fraction) + + def test_too_small_packing_fraction(): + """checks a ValueError is raised when the packing_fraction is the + too large""" + + nmm.Material.from_mixture( + name="test_material", materials=[ + nmm.Material.from_library( + "tungsten", packing_fraction=0.6), nmm.Material.from_library( + "eurofer", packing_fraction=0.8), ], fracs=[ + 0.3, 0.7], packing_fraction=-0.1) + + self.assertRaises(ValueError, test_too_small_packing_fraction) + + def test_temperature_from_C_in_from_mixtures(self): + """checks that the temperature set in C ends up in the temperature + attribute of the openmc from_mixtures""" + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("tungsten"), + nmm.Material.from_library("eurofer"), + ], + fracs=[0.3, 0.7], + temperature=283.15 + ) + + assert test_material.temperature == 283.15 + assert test_material.openmc_material.temperature == 283.15 + + line_by_line_material = test_material.serpent_material.split("\n") + + assert line_by_line_material[0].split()[-1] == "283.15" + assert line_by_line_material[0].split()[-2] == "tmp" + + def test_temperature_from_K_in_from_mixtures(self): + """checks that the temperature set in K ends up in the temperature + attribute of the openmc from_mixtures""" + + test_material = nmm.Material.from_mixture( + name="test_material", + materials=[ + nmm.Material.from_library("tungsten"), + nmm.Material.from_library("eurofer"), + ], + fracs=[0.3, 0.7], + temperature=300 + ) + + assert test_material.temperature == 300 + assert test_material.openmc_material.temperature == 300 + + line_by_line_material = test_material.serpent_material.split("\n") + + assert line_by_line_material[0].split()[-1] == "300" + assert line_by_line_material[0].split()[-2] == "tmp" + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_Multmaterial.py b/tests/test_Multmaterial.py deleted file mode 100644 index 0d36a86..0000000 --- a/tests/test_Multmaterial.py +++ /dev/null @@ -1,588 +0,0 @@ -#!/usr/bin/env python3 - -__author__ = "neutronics material maker development team" - -import json -import unittest -import warnings - -import neutronics_material_maker as nmm -import openmc -import pytest - - -class test_object_properties(unittest.TestCase): - def test_serpent_multimaterial_type(self): - - test_material = nmm.MultiMaterial( - "test_material", - materials=[nmm.Material("Li4SiO4"), nmm.Material("Be12Ti")], - fracs=[0.50, 0.50], - percent_type="vo", - ) - - assert len(test_material.serpent_material) > 100 - assert isinstance(test_material.serpent_material, str) - - def test_mcnp_multimaterial_type(self): - - test_material = nmm.MultiMaterial( - "test_material", - materials=[nmm.Material("Li4SiO4"), nmm.Material("Be12Ti")], - fracs=[0.50, 0.50], - percent_type="vo", - material_id=2, - ) - - assert len(test_material.mcnp_material) > 100 - assert isinstance(test_material.mcnp_material, str) - - def test_shift_multimaterial_type(self): - - test_material = nmm.MultiMaterial( - "test_material", - materials=[nmm.Material("Li4SiO4"), nmm.Material("Be12Ti")], - fracs=[0.50, 0.50], - percent_type="vo", - temperature=300, - material_id=2, - ) - - assert len(test_material.shift_material) > 100 - assert isinstance(test_material.shift_material, str) - - def test_fispact_multimaterial_type(self): - - test_material = nmm.MultiMaterial( - "test_material", - materials=[nmm.Material("Li4SiO4"), nmm.Material("Be12Ti")], - fracs=[0.50, 0.50], - percent_type="vo", - volume_in_cm3=20, - ) - - assert len(test_material.fispact_material) > 100 - assert isinstance(test_material.fispact_material, str) - - def test_make_multimaterial_from_material_objects(self): - # tests that a multimaterial can be created by passing Material objects - # into the MultiMaterial function - - test_material = nmm.MultiMaterial( - "test_material", - materials=[nmm.Material("Li4SiO4"), nmm.Material("Be12Ti")], - fracs=[0.50, 0.50], - percent_type="vo", - ) - - assert isinstance(test_material, openmc.Material) is False - assert isinstance(test_material.openmc_material, openmc.Material) - - def test_make_multimaterial_from_openmc_materials(self): - # tests that a multimaterial can be created by passing neutronics - # materials into the MultiMaterial function - - test_material = nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("Li4SiO4").openmc_material, - nmm.Material("Be12Ti").openmc_material, - ], - fracs=[0.50, 0.50], - percent_type="vo", - ) - - assert isinstance(test_material, openmc.Material) is False - assert isinstance(test_material.openmc_material, openmc.Material) - - def test_mutlimaterial_material_tag_setting(self): - - test_material = nmm.MultiMaterial( - materials=[ - nmm.Material('Pb842Li158', temperature=500), - nmm.Material('SiC') - ], - fracs=[0.5, 0.5]) - - assert test_material.material_tag is None - test_material.material_tag = 'tag_set_after_creation' - assert test_material.material_tag == 'tag_set_after_creation' - - test_material.openmc_material - assert test_material.openmc_material.name == 'tag_set_after_creation' - - test_material = nmm.MultiMaterial( - materials=[ - nmm.Material('Pb842Li158', temperature=500), - nmm.Material('SiC') - ], - fracs=[0.5, 0.5], - material_tag='tag_set_on_creation') - - assert test_material.material_tag == 'tag_set_on_creation' - - test_material.openmc_material - assert test_material.openmc_material.name == 'tag_set_on_creation' - - def test_multimaterial_attributes_from_material_objects_and_openmc_materials( - self): - # tests that multimaterials made from material objects and neutronics - # materials have the same properties - - test_material_1 = nmm.MultiMaterial( - "test_material_1", - materials=[nmm.Material("Li4SiO4"), nmm.Material("Be12Ti")], - fracs=[0.5, 0.5], - percent_type="vo", - ).openmc_material - - test_material_2 = nmm.MultiMaterial( - "test_material_2", - materials=[ - nmm.Material("Li4SiO4").openmc_material, - nmm.Material("Be12Ti").openmc_material, - ], - fracs=[0.5, 0.5], - percent_type="vo", - ).openmc_material - - assert test_material_1.density == test_material_2.density - assert test_material_1.nuclides == test_material_2.nuclides - - def test_density_of_mixed_two_packed_crystals(self): - - test_material_1 = nmm.Material(material_name="Li4SiO4") - test_material_packed_1 = nmm.Material( - material_name="Li4SiO4", packing_fraction=0.65 - ) - assert ( - test_material_1.openmc_material.density * 0.65 - == test_material_packed_1.openmc_material.density - ) - - test_material_2 = nmm.Material(material_name="Be12Ti") - test_material_packed_2 = nmm.Material( - material_name="Be12Ti", packing_fraction=0.35 - ) - assert ( - test_material_2.openmc_material.density * 0.35 - == test_material_packed_2.openmc_material.density - ) - - mixed_packed_crystals = nmm.MultiMaterial( - material_tag="mixed_packed_crystals", - materials=[test_material_packed_1, test_material_packed_2], - fracs=[0.75, 0.25], - percent_type="vo", - ) - - assert mixed_packed_crystals.openmc_material.density == pytest.approx( - (test_material_1.openmc_material.density * 0.65 * 0.75) - + (test_material_2.openmc_material.density * 0.35 * 0.25), - rel=0.01, - ) - - def test_density_of_mixed_two_packed_and_non_packed_crystals(self): - - test_material_1 = nmm.Material(material_name="Li4SiO4") - test_material_1_packed = nmm.Material( - material_name="Li4SiO4", packing_fraction=0.65 - ) - - mixed_material = nmm.MultiMaterial( - material_tag="mixed_material", - materials=[test_material_1, test_material_1_packed], - fracs=[0.2, 0.8], - percent_type="vo", - ) - - assert mixed_material.openmc_material.density == pytest.approx( - (test_material_1.openmc_material.density * 0.2) - + (test_material_1.openmc_material.density * 0.65 * 0.8) - ) - - def test_density_of_mixed_materials_from_density_equation(self): - - test_material = nmm.Material( - "H2O", temperature=300, pressure=100000) - test_mixed_material = nmm.MultiMaterial( - material_tag="test_mixed_material", - materials=[test_material], - fracs=[1]) - - assert test_material.openmc_material.density == pytest.approx( - test_mixed_material.openmc_material.density - ) - - def test_density_of_mixed_one_packed_crystal_and_one_non_crystal(self): - - test_material_1 = nmm.Material( - material_name="H2O", temperature=300, pressure=100000 - ) - - test_material_2 = nmm.Material(material_name="Li4SiO4") - test_material_2_packed = nmm.Material( - material_name="Li4SiO4", packing_fraction=0.65 - ) - - mixed_packed_crystal_and_non_crystal = nmm.MultiMaterial( - material_tag="mixed_packed_crystal_and_non_crystal", - materials=[test_material_1, test_material_2_packed], - fracs=[0.5, 0.5], - percent_type="vo", - ) - - assert ( - mixed_packed_crystal_and_non_crystal.openmc_material.density - == pytest.approx( - (test_material_1.openmc_material.density * 0.5) - + (test_material_2.openmc_material.density * 0.65 * 0.5) - ) - ) - - def test_packing_fraction_for_single_materials(self): - - test_material_1 = nmm.Material("Li4SiO4").openmc_material - - test_material_2 = nmm.Material( - "Li4SiO4", packing_fraction=1).openmc_material - - assert test_material_1.density == test_material_2.density - - test_material_3 = nmm.Material( - "Li4SiO4", packing_fraction=0.5).openmc_material - - assert test_material_3.density == pytest.approx( - test_material_1.density * 0.5) - - test_material_4 = nmm.Material( - "Li4SiO4", packing_fraction=0.75).openmc_material - - assert test_material_4.density == pytest.approx( - test_material_1.density * 0.75) - - def test_packing_fraction_for_multimaterial_function(self): - - test_material_5 = nmm.MultiMaterial( - "test_material_5", - materials=[nmm.Material("tungsten"), nmm.Material("eurofer")], - fracs=[0.5, 0.5], - ).openmc_material - - test_material_6 = nmm.MultiMaterial( - "test_material_6", - materials=[ - nmm.Material("tungsten", packing_fraction=1), - nmm.Material("eurofer", packing_fraction=1), - ], - fracs=[0.5, 0.5], - ).openmc_material - - assert test_material_5.density == test_material_6.density - - test_material_7 = nmm.MultiMaterial( - "test_material_7", - materials=[ - nmm.Material("tungsten", packing_fraction=0.5), - nmm.Material("eurofer", packing_fraction=0.5), - ], - fracs=[0.5, 0.5], - ).openmc_material - - assert test_material_7.density == pytest.approx( - test_material_5.density * 0.5) - - def test_packing_fraction_of_a_multimaterial(self): - - test_material_6 = nmm.MultiMaterial( - "test_material_6", - materials=[ - nmm.Material("tungsten", packing_fraction=0.34), - nmm.Material("eurofer", packing_fraction=0.60), - ], - fracs=[0.5, 0.5], - ).openmc_material - - test_material_7 = nmm.MultiMaterial( - "test_material_7", - materials=[ - nmm.Material("tungsten", packing_fraction=0.34), - nmm.Material("eurofer", packing_fraction=0.60), - ], - fracs=[0.5, 0.5], - packing_fraction=0.25, - ).openmc_material - - assert test_material_6.get_mass_density() * 0.25 == pytest.approx( - test_material_7.get_mass_density() - ) - - def test_packing_fraction_for_mix_materials_function(self): - - test_material_8 = openmc.Material.mix_materials( - name="test_material_8", - materials=[ - nmm.Material("tungsten").openmc_material, - nmm.Material("eurofer").openmc_material, - ], - fracs=[0.5, 0.5], - percent_type="vo", - ) - - test_material_9 = openmc.Material.mix_materials( - name="test_material_9", - materials=[ - nmm.Material("tungsten", packing_fraction=1).openmc_material, - nmm.Material("eurofer", packing_fraction=1).openmc_material, - ], - fracs=[0.5, 0.5], - percent_type="vo", - ) - - assert test_material_8.density == test_material_9.density - - test_material_10 = openmc.Material.mix_materials( - name="test_material_10", - materials=[ - nmm.Material("tungsten", packing_fraction=0.5).openmc_material, - nmm.Material("eurofer", packing_fraction=0.5).openmc_material, - ], - fracs=[0.5, 0.5], - percent_type="vo", - ) - - assert test_material_10.density == pytest.approx( - test_material_8.density * 0.5) - - def test_multimaterial_vs_mix_materials(self): - - test_material_11 = nmm.MultiMaterial( - "test_material_11", - materials=[nmm.Material("tungsten"), nmm.Material("eurofer")], - fracs=[0.5, 0.5], - ).openmc_material - - test_material_12 = openmc.Material.mix_materials( - name="test_material_12", - materials=[ - nmm.Material("tungsten").openmc_material, - nmm.Material("eurofer").openmc_material, - ], - fracs=[0.5, 0.5], - percent_type="vo", - ) - - assert test_material_11.density == test_material_12.density - - test_material_13 = nmm.MultiMaterial( - "test_material_13", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - ).openmc_material - - test_material_14 = openmc.Material.mix_materials( - name="test_material_14", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6).openmc_material, - nmm.Material("eurofer", packing_fraction=0.8).openmc_material, - ], - fracs=[0.3, 0.7], - percent_type="vo", - ) - - assert test_material_13.density == test_material_14.density - - def test_json_dump_works(self): - test_material = nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - ) - assert isinstance(json.dumps(test_material), str) - - def test_json_dump_contains_correct_keys(self): - test_material = nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - ) - test_material_in_json_form = test_material.to_json() - - assert "material_tag" in test_material_in_json_form.keys() - assert "materials" in test_material_in_json_form.keys() - assert "fracs" in test_material_in_json_form.keys() - assert "percent_type" in test_material_in_json_form.keys() - assert "packing_fraction" in test_material_in_json_form.keys() - - def test_json_dump_contains_correct_values(self): - test_material = nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - ) - test_material_in_json_form = test_material.to_json() - - assert test_material_in_json_form["material_tag"] == "test_material" - assert len(test_material_in_json_form["materials"]) == 2 - assert test_material_in_json_form["fracs"] == [0.3, 0.7] - assert test_material_in_json_form["percent_type"] == "vo" - assert test_material_in_json_form["packing_fraction"] == 1.0 - - def test_incorrect_settings(self): - def too_large_fracs(): - """checks a ValueError is raised when the fracs are above 1""" - - nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.75], - ) - - with warnings.catch_warnings(record=True) as w: - # Cause all warnings to always be triggered. - warnings.simplefilter("always") - # Trigger a warning. - too_large_fracs() - # Verify some things - assert len(w) >= 1 - assert issubclass(w[-1].category, UserWarning) - # the second entry is needed as OpenMC material mixer also raises - # and error - assert "warning sum of MutliMaterials.fracs do not sum to 1." in str( - w[-2].message) - - def too_small_fracs(): - """checks a ValueError is raised when the fracs are above 1""" - - nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.65], - ) - - with warnings.catch_warnings(record=True) as w: - # Cause all warnings to always be triggered. - warnings.simplefilter("always") - # Trigger a warning. - too_small_fracs() - # Verify some things - assert len(w) >= 1 - assert issubclass(w[-1].category, UserWarning) - # the second entry is needed as OpenMC material mixer also raises - # and error - assert "warning sum of MutliMaterials.fracs do not sum to 1." in str( - w[-2].message) - - def test_incorrect_packing_fraction(): - """checks a ValueError is raised when the packing_fraction is the - wrong type""" - - nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - packing_fraction="1" - ) - - self.assertRaises(ValueError, test_incorrect_packing_fraction) - - def test_too_large_packing_fraction(): - """checks a ValueError is raised when the packing_fraction is the - too large""" - - nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - packing_fraction=1.1 - ) - - self.assertRaises(ValueError, test_too_large_packing_fraction) - - def test_too_small_packing_fraction(): - """checks a ValueError is raised when the packing_fraction is the - too large""" - - nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten", packing_fraction=0.6), - nmm.Material("eurofer", packing_fraction=0.8), - ], - fracs=[0.3, 0.7], - packing_fraction=-0.1 - ) - - self.assertRaises(ValueError, test_too_small_packing_fraction) - - def test_temperature_from_C_in_multimaterials(self): - """checks that the temperature set in C ends up in the temperature - attribute of the openmc multimaterials""" - - test_material = nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten"), - nmm.Material("eurofer"), - ], - fracs=[0.3, 0.7], - temperature=283.15 - ) - - assert test_material.temperature == 283.15 - assert test_material.openmc_material.temperature == 283.15 - - line_by_line_material = test_material.serpent_material.split("\n") - - assert line_by_line_material[0].split()[-1] == "283.15" - assert line_by_line_material[0].split()[-2] == "tmp" - - def test_temperature_from_K_in_multimaterials(self): - """checks that the temperature set in K ends up in the temperature - attribute of the openmc multimaterials""" - - test_material = nmm.MultiMaterial( - "test_material", - materials=[ - nmm.Material("tungsten"), - nmm.Material("eurofer"), - ], - fracs=[0.3, 0.7], - temperature=300 - ) - - assert test_material.temperature == 300 - assert test_material.openmc_material.temperature == 300 - - line_by_line_material = test_material.serpent_material.split("\n") - - assert line_by_line_material[0].split()[-1] == "300" - assert line_by_line_material[0].split()[-2] == "tmp" - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/test_utils.py b/tests/test_utils.py index 4e8e745..d414edd 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -19,17 +19,17 @@ class test_object_properties(unittest.TestCase): def test_additional_lines_multimaterial_mcnp(self): - test_mat1 = nmm.Material( + test_mat1 = nmm.Material.from_library( 'Li4SiO4', additional_end_lines={'mcnp': ['mat1_additional']} ) - test_mat2 = nmm.Material( + test_mat2 = nmm.Material.from_library( 'Be12Ti', additional_end_lines={'mcnp': ['mat2_additional']} ) - test_mat3 = nmm.MultiMaterial( - material_tag='mixed', + test_mat3 = nmm.Material.from_mixture( + name='mixed', materials=[test_mat1, test_mat2], temperature=500, fracs=[0.5, 0.5], @@ -52,7 +52,7 @@ def test_additional_lines_multimaterial_mcnp(self): def test_additional_lines_mcnp(self): - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( 'H2O', pressure=1e6, temperature=393, @@ -62,7 +62,7 @@ def test_additional_lines_mcnp(self): assert test_mat.mcnp_material.split('\n')[-1] == ' mt24 lwtr.01' def test_additional_lines_shift(self): - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( 'H2O', pressure=1e6, temperature=393, @@ -72,7 +72,7 @@ def test_additional_lines_shift(self): assert test_mat.shift_material.split('\n')[-1] == 'coucou' def test_additional_lines_fispact(self): - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( 'H2O', pressure=1e6, temperature=393, @@ -83,7 +83,7 @@ def test_additional_lines_fispact(self): assert test_mat.fispact_material.split('\n')[-1] == 'coucou' def test_additional_lines_serpent(self): - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( 'H2O', pressure=1e6, temperature=393, @@ -112,7 +112,7 @@ def test_additional_lines_from_json(self): nmm.AddMaterialFromFile("extra_material_1.json") - test_mat = nmm.Material('mat_with_add_line') + test_mat = nmm.Material.from_library('mat_with_add_line') assert test_mat.mcnp_material.split('\n')[-2] == 'coucou1' assert test_mat.mcnp_material.split('\n')[-1] == 'coucou2' @@ -122,7 +122,7 @@ def incorrect_additional_lines_code_name(): """Set additional_end_lines to not the name of a neutronics code which should raise an error""" - nmm.Material( + nmm.Material.from_library( 'Li4SiO4', additional_end_lines={'unknow code': ['coucou']} ) @@ -138,7 +138,7 @@ def incorrect_additional_lines_code_value_type(): """Set additional_end_lines value to a string which should raise an error""" - nmm.Material( + nmm.Material.from_library( 'Li4SiO4', additional_end_lines={'unknow code': 'serpent'} ) @@ -154,7 +154,7 @@ def incorrect_additional_lines_code_value_list_type(): """Set additional_end_lines value to a list of ints which should raise an error""" - nmm.Material( + nmm.Material.from_library( 'Li4SiO4', additional_end_lines={'unknow code': [1]} ) @@ -256,7 +256,7 @@ def test_dictionary_of_materials_makes_openmc_materials(self): for mat in nmm.AvailableMaterials().keys(): print(mat) - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( mat, temperature=300, pressure=5e6) assert isinstance(test_mat.openmc_material, openmc.Material) @@ -265,7 +265,7 @@ def test_dictionary_of_materials_makes_mcnp_materials(self): for mat in nmm.AvailableMaterials().keys(): print(mat) - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( mat, temperature=300, pressure=5e6, material_id=1 ) @@ -275,7 +275,7 @@ def test_dictionary_of_materials_makes_shift_materials(self): for mat in nmm.AvailableMaterials().keys(): print(mat) - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( mat, temperature=300, pressure=5e6, material_id=1 ) @@ -285,7 +285,7 @@ def test_dictionary_of_materials_makes_fispact_materials(self): for mat in nmm.AvailableMaterials().keys(): print(mat) - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( mat, temperature=300, pressure=5e6, @@ -297,7 +297,7 @@ def test_dictionary_of_materials_makes_serpent_materials(self): for mat in nmm.AvailableMaterials().keys(): print(mat) - test_mat = nmm.Material( + test_mat = nmm.Material.from_library( mat, temperature=300, pressure=5e6) assert isinstance(test_mat.serpent_material, str)