Refactor use of ACE tables to generate neutron/thermal scattering data

This commit is contained in:
Paul Romano 2016-06-09 14:52:58 -05:00
parent 9230203efb
commit e19291118e
36 changed files with 2467 additions and 10238 deletions

View file

@ -1,96 +0,0 @@
#!/usr/bin/env python
import glob
import os
from xml.dom.minidom import getDOMImplementation
import openmc.data.ace
if not os.path.isdir('nndc_hdf5'):
os.mkdir('nndc_hdf5')
nndc_files = glob.glob('nndc/293.6K/*.ace')
nndc_thermal_files = glob.glob('nndc/tsl/*.acer')
thermal_names = {'al': 'c_Al27',
'be': 'c_Be',
'bebeo': 'c_Be_in_BeO',
'benzine': 'c_Benzine',
'dd2o': 'c_D_in_D2O',
'fe': 'c_Fe56',
'graphite': 'c_Graphite',
'hch2': 'c_H_in_CH2',
'hh2o': 'c_H_in_H2O',
'hzrh': 'c_H_in_ZrH',
'lch4': 'c_liquid_CH4',
'obeo': 'c_O_in_BeO',
'orthod': 'c_ortho_D',
'orthoh': 'c_ortho_H',
'ouo2': 'c_O_in_UO2',
'parad': 'c_para_D',
'parah': 'c_para_H',
'sch4': 'c_solid_CH4',
'uuo2': 'c_U_in_UO2',
'zrzrh': 'c_Zr_in_ZrH'}
impl = getDOMImplementation()
doc = impl.createDocument(None, "cross_sections", None)
doc_root = doc.documentElement
for f in sorted(nndc_files):
print('Converting {}...'.format(f))
# Deterine output file name
dirname, basename = os.path.split(f)
root, ext = os.path.splitext(basename)
outfile = os.path.join('nndc_hdf5', root + '.h5')
if os.path.exists(outfile):
os.remove(outfile)
# Determine elemental symbol, mass number and metastable state
element, mass_number, temp = basename.split('_')
metastable = int(mass_number[-1]) if 'm' in mass_number else 0
mass_number = int(mass_number[:3])
# Parse ACE file, create HDF5 file
t = openmc.data.ace.get_table(f)
t.export_to_hdf5(outfile, element, mass_number, metastable)
xs = t.name.split('.')[1]
if metastable > 0:
name = "{}{}_m{}.{}".format(element, mass_number, metastable, xs)
else:
name = "{}{}.{}".format(element, mass_number, xs)
# Add entry to XML listing
libraryNode = doc.createElement("library")
libraryNode.setAttribute("path", root + '.h5')
libraryNode.setAttribute("materials", name)
libraryNode.setAttribute("type", "neutron")
doc_root.appendChild(libraryNode)
for f in sorted(nndc_thermal_files):
print('Converting {}...'.format(f))
# Deterine output file name
dirname, basename = os.path.split(f)
root, ext = os.path.splitext(basename)
outfile = os.path.join('nndc_hdf5', root + '.h5')
if os.path.exists(outfile):
os.remove(outfile)
# Parse ACE file, create HDF5 file
t = openmc.data.ace.get_table(f)
t.export_to_hdf5(outfile, thermal_names[root])
xs = t.name.split('.')[1]
# Add entry to XML listing
libraryNode = doc.createElement("library")
libraryNode.setAttribute("path", root + '.h5')
libraryNode.setAttribute("materials", thermal_names[root] + '.' + xs)
libraryNode.setAttribute("type", "thermal")
doc_root.appendChild(libraryNode)
# Write cross_sections.xml
lines = doc.toprettyxml(indent=' ')
open(os.path.join('nndc_hdf5', 'cross_sections.xml'), 'w').write(lines)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,870 +0,0 @@
<?xml version="1.0" ?>
<cross_sections>
<filetype>ascii</filetype>
<ace_table alias="H-1.71c" awr="0.999167" location="1" name="1001.71c" path="293.6K/H_001_293.6K.ace" temperature="2.53e-08" zaid="1001"/>
<ace_table alias="H-2.71c" awr="1.9968" location="1" name="1002.71c" path="293.6K/H_002_293.6K.ace" temperature="2.53e-08" zaid="1002"/>
<ace_table alias="H-3.71c" awr="2.989596" location="1" name="1003.71c" path="293.6K/H_003_293.6K.ace" temperature="2.53e-08" zaid="1003"/>
<ace_table alias="He-3.71c" awr="2.989032" location="1" name="2003.71c" path="293.6K/He_003_293.6K.ace" temperature="2.53e-08" zaid="2003"/>
<ace_table alias="He-4.71c" awr="3.968219" location="1" name="2004.71c" path="293.6K/He_004_293.6K.ace" temperature="2.53e-08" zaid="2004"/>
<ace_table alias="Li-6.71c" awr="5.9634" location="1" name="3006.71c" path="293.6K/Li_006_293.6K.ace" temperature="2.53e-08" zaid="3006"/>
<ace_table alias="Li-7.71c" awr="6.955732" location="1" name="3007.71c" path="293.6K/Li_007_293.6K.ace" temperature="2.53e-08" zaid="3007"/>
<ace_table alias="Be-7.71c" awr="6.9545" location="1" name="4007.71c" path="293.6K/Be_007_293.6K.ace" temperature="2.53e-08" zaid="4007"/>
<ace_table alias="Be-9.71c" awr="8.93478" location="1" name="4009.71c" path="293.6K/Be_009_293.6K.ace" temperature="2.53e-08" zaid="4009"/>
<ace_table alias="B-10.71c" awr="9.926921" location="1" name="5010.71c" path="293.6K/B_010_293.6K.ace" temperature="2.53e-08" zaid="5010"/>
<ace_table alias="B-11.71c" awr="10.9147" location="1" name="5011.71c" path="293.6K/B_011_293.6K.ace" temperature="2.53e-08" zaid="5011"/>
<ace_table alias="C-Nat.71c" awr="11.898" location="1" name="6000.71c" path="293.6K/C_000_293.6K.ace" temperature="2.53e-08" zaid="6000"/>
<ace_table alias="N-14.71c" awr="13.88278" location="1" name="7014.71c" path="293.6K/N_014_293.6K.ace" temperature="2.53e-08" zaid="7014"/>
<ace_table alias="N-15.71c" awr="14.871" location="1" name="7015.71c" path="293.6K/N_015_293.6K.ace" temperature="2.53e-08" zaid="7015"/>
<ace_table alias="O-16.71c" awr="15.85751" location="1" name="8016.71c" path="293.6K/O_016_293.6K.ace" temperature="2.53e-08" zaid="8016"/>
<ace_table alias="O-17.71c" awr="16.8531" location="1" name="8017.71c" path="293.6K/O_017_293.6K.ace" temperature="2.53e-08" zaid="8017"/>
<ace_table alias="F-19.71c" awr="18.835" location="1" name="9019.71c" path="293.6K/F_019_293.6K.ace" temperature="2.53e-08" zaid="9019"/>
<ace_table alias="Na-22.71c" awr="21.8055" location="1" name="11022.71c" path="293.6K/Na_022_293.6K.ace" temperature="2.53e-08" zaid="11022"/>
<ace_table alias="Na-23.71c" awr="22.792" location="1" name="11023.71c" path="293.6K/Na_023_293.6K.ace" temperature="2.53e-08" zaid="11023"/>
<ace_table alias="Mg-24.71c" awr="23.779" location="1" name="12024.71c" path="293.6K/Mg_024_293.6K.ace" temperature="2.53e-08" zaid="12024"/>
<ace_table alias="Mg-25.71c" awr="24.7712" location="1" name="12025.71c" path="293.6K/Mg_025_293.6K.ace" temperature="2.53e-08" zaid="12025"/>
<ace_table alias="Mg-26.71c" awr="25.7594" location="1" name="12026.71c" path="293.6K/Mg_026_293.6K.ace" temperature="2.53e-08" zaid="12026"/>
<ace_table alias="Al-27.71c" awr="26.74975" location="1" name="13027.71c" path="293.6K/Al_027_293.6K.ace" temperature="2.53e-08" zaid="13027"/>
<ace_table alias="Si-28.71c" awr="27.737" location="1" name="14028.71c" path="293.6K/Si_028_293.6K.ace" temperature="2.53e-08" zaid="14028"/>
<ace_table alias="Si-29.71c" awr="28.728" location="1" name="14029.71c" path="293.6K/Si_029_293.6K.ace" temperature="2.53e-08" zaid="14029"/>
<ace_table alias="Si-30.71c" awr="29.716" location="1" name="14030.71c" path="293.6K/Si_030_293.6K.ace" temperature="2.53e-08" zaid="14030"/>
<ace_table alias="P-31.71c" awr="30.708" location="1" name="15031.71c" path="293.6K/P_031_293.6K.ace" temperature="2.53e-08" zaid="15031"/>
<ace_table alias="S-32.71c" awr="31.6973" location="1" name="16032.71c" path="293.6K/S_032_293.6K.ace" temperature="2.53e-08" zaid="16032"/>
<ace_table alias="S-33.71c" awr="32.6878" location="1" name="16033.71c" path="293.6K/S_033_293.6K.ace" temperature="2.53e-08" zaid="16033"/>
<ace_table alias="S-34.71c" awr="33.6762" location="1" name="16034.71c" path="293.6K/S_034_293.6K.ace" temperature="2.53e-08" zaid="16034"/>
<ace_table alias="S-36.71c" awr="35.658" location="1" name="16036.71c" path="293.6K/S_036_293.6K.ace" temperature="2.53e-08" zaid="16036"/>
<ace_table alias="Cl-35.71c" awr="34.66845" location="1" name="17035.71c" path="293.6K/Cl_035_293.6K.ace" temperature="2.53e-08" zaid="17035"/>
<ace_table alias="Cl-37.71c" awr="36.6483" location="1" name="17037.71c" path="293.6K/Cl_037_293.6K.ace" temperature="2.53e-08" zaid="17037"/>
<ace_table alias="Ar-36.71c" awr="35.6585" location="1" name="18036.71c" path="293.6K/Ar_036_293.6K.ace" temperature="2.53e-08" zaid="18036"/>
<ace_table alias="Ar-38.71c" awr="37.6366" location="1" name="18038.71c" path="293.6K/Ar_038_293.6K.ace" temperature="2.53e-08" zaid="18038"/>
<ace_table alias="Ar-40.71c" awr="39.6191" location="1" name="18040.71c" path="293.6K/Ar_040_293.6K.ace" temperature="2.53e-08" zaid="18040"/>
<ace_table alias="K-39.71c" awr="38.6293" location="1" name="19039.71c" path="293.6K/K_039_293.6K.ace" temperature="2.53e-08" zaid="19039"/>
<ace_table alias="K-40.71c" awr="39.6207" location="1" name="19040.71c" path="293.6K/K_040_293.6K.ace" temperature="2.53e-08" zaid="19040"/>
<ace_table alias="K-41.71c" awr="40.6101" location="1" name="19041.71c" path="293.6K/K_041_293.6K.ace" temperature="2.53e-08" zaid="19041"/>
<ace_table alias="Ca-40.71c" awr="39.6193" location="1" name="20040.71c" path="293.6K/Ca_040_293.6K.ace" temperature="2.53e-08" zaid="20040"/>
<ace_table alias="Ca-42.71c" awr="41.59818" location="1" name="20042.71c" path="293.6K/Ca_042_293.6K.ace" temperature="2.53e-08" zaid="20042"/>
<ace_table alias="Ca-43.71c" awr="42.58973" location="1" name="20043.71c" path="293.6K/Ca_043_293.6K.ace" temperature="2.53e-08" zaid="20043"/>
<ace_table alias="Ca-44.71c" awr="43.57788" location="1" name="20044.71c" path="293.6K/Ca_044_293.6K.ace" temperature="2.53e-08" zaid="20044"/>
<ace_table alias="Ca-46.71c" awr="45.55893" location="1" name="20046.71c" path="293.6K/Ca_046_293.6K.ace" temperature="2.53e-08" zaid="20046"/>
<ace_table alias="Ca-48.71c" awr="47.5406" location="1" name="20048.71c" path="293.6K/Ca_048_293.6K.ace" temperature="2.53e-08" zaid="20048"/>
<ace_table alias="Sc-45.71c" awr="44.5679" location="1" name="21045.71c" path="293.6K/Sc_045_293.6K.ace" temperature="2.53e-08" zaid="21045"/>
<ace_table alias="Ti-46.71c" awr="45.5579" location="1" name="22046.71c" path="293.6K/Ti_046_293.6K.ace" temperature="2.53e-08" zaid="22046"/>
<ace_table alias="Ti-47.71c" awr="46.5484" location="1" name="22047.71c" path="293.6K/Ti_047_293.6K.ace" temperature="2.53e-08" zaid="22047"/>
<ace_table alias="Ti-48.71c" awr="47.5361" location="1" name="22048.71c" path="293.6K/Ti_048_293.6K.ace" temperature="2.53e-08" zaid="22048"/>
<ace_table alias="Ti-49.71c" awr="48.5274" location="1" name="22049.71c" path="293.6K/Ti_049_293.6K.ace" temperature="2.53e-08" zaid="22049"/>
<ace_table alias="Ti-50.71c" awr="49.5157" location="1" name="22050.71c" path="293.6K/Ti_050_293.6K.ace" temperature="2.53e-08" zaid="22050"/>
<ace_table alias="V-50.71c" awr="49.5181" location="1" name="23050.71c" path="293.6K/V_050_293.6K.ace" temperature="2.53e-08" zaid="23050"/>
<ace_table alias="V-51.71c" awr="50.5063" location="1" name="23051.71c" path="293.6K/V_051_293.6K.ace" temperature="2.53e-08" zaid="23051"/>
<ace_table alias="Cr-50.71c" awr="49.517" location="1" name="24050.71c" path="293.6K/Cr_050_293.6K.ace" temperature="2.53e-08" zaid="24050"/>
<ace_table alias="Cr-52.71c" awr="51.494" location="1" name="24052.71c" path="293.6K/Cr_052_293.6K.ace" temperature="2.53e-08" zaid="24052"/>
<ace_table alias="Cr-53.71c" awr="52.486" location="1" name="24053.71c" path="293.6K/Cr_053_293.6K.ace" temperature="2.53e-08" zaid="24053"/>
<ace_table alias="Cr-54.71c" awr="53.476" location="1" name="24054.71c" path="293.6K/Cr_054_293.6K.ace" temperature="2.53e-08" zaid="24054"/>
<ace_table alias="Mn-55.71c" awr="54.4661" location="1" name="25055.71c" path="293.6K/Mn_055_293.6K.ace" temperature="2.53e-08" zaid="25055"/>
<ace_table alias="Fe-54.71c" awr="53.476" location="1" name="26054.71c" path="293.6K/Fe_054_293.6K.ace" temperature="2.53e-08" zaid="26054"/>
<ace_table alias="Fe-56.71c" awr="55.454" location="1" name="26056.71c" path="293.6K/Fe_056_293.6K.ace" temperature="2.53e-08" zaid="26056"/>
<ace_table alias="Fe-57.71c" awr="56.446" location="1" name="26057.71c" path="293.6K/Fe_057_293.6K.ace" temperature="2.53e-08" zaid="26057"/>
<ace_table alias="Fe-58.71c" awr="57.436" location="1" name="26058.71c" path="293.6K/Fe_058_293.6K.ace" temperature="2.53e-08" zaid="26058"/>
<ace_table alias="Co-58.71c" awr="57.4381" location="1" name="27058.71c" path="293.6K/Co_058_293.6K.ace" temperature="2.53e-08" zaid="27058"/>
<ace_table alias="Co-58m.71c" awr="57.4381" location="1" metastable="1" name="27458.71c" path="293.6K/Co_058m1_293.6K.ace" temperature="2.53e-08" zaid="27458"/>
<ace_table alias="Co-59.71c" awr="58.4269" location="1" name="27059.71c" path="293.6K/Co_059_293.6K.ace" temperature="2.53e-08" zaid="27059"/>
<ace_table alias="Ni-58.71c" awr="57.438" location="1" name="28058.71c" path="293.6K/Ni_058_293.6K.ace" temperature="2.53e-08" zaid="28058"/>
<ace_table alias="Ni-59.71c" awr="58.4281" location="1" name="28059.71c" path="293.6K/Ni_059_293.6K.ace" temperature="2.53e-08" zaid="28059"/>
<ace_table alias="Ni-60.71c" awr="59.416" location="1" name="28060.71c" path="293.6K/Ni_060_293.6K.ace" temperature="2.53e-08" zaid="28060"/>
<ace_table alias="Ni-61.71c" awr="60.408" location="1" name="28061.71c" path="293.6K/Ni_061_293.6K.ace" temperature="2.53e-08" zaid="28061"/>
<ace_table alias="Ni-62.71c" awr="61.396" location="1" name="28062.71c" path="293.6K/Ni_062_293.6K.ace" temperature="2.53e-08" zaid="28062"/>
<ace_table alias="Ni-64.71c" awr="63.379" location="1" name="28064.71c" path="293.6K/Ni_064_293.6K.ace" temperature="2.53e-08" zaid="28064"/>
<ace_table alias="Cu-63.71c" awr="62.389" location="1" name="29063.71c" path="293.6K/Cu_063_293.6K.ace" temperature="2.53e-08" zaid="29063"/>
<ace_table alias="Cu-65.71c" awr="64.37" location="1" name="29065.71c" path="293.6K/Cu_065_293.6K.ace" temperature="2.53e-08" zaid="29065"/>
<ace_table alias="Zn-64.71c" awr="63.38" location="1" name="30064.71c" path="293.6K/Zn_064_293.6K.ace" temperature="2.53e-08" zaid="30064"/>
<ace_table alias="Zn-65.71c" awr="64.3715" location="1" name="30065.71c" path="293.6K/Zn_065_293.6K.ace" temperature="2.53e-08" zaid="30065"/>
<ace_table alias="Zn-66.71c" awr="65.3597" location="1" name="30066.71c" path="293.6K/Zn_066_293.6K.ace" temperature="2.53e-08" zaid="30066"/>
<ace_table alias="Zn-67.71c" awr="66.3522" location="1" name="30067.71c" path="293.6K/Zn_067_293.6K.ace" temperature="2.53e-08" zaid="30067"/>
<ace_table alias="Zn-68.71c" awr="67.3413" location="1" name="30068.71c" path="293.6K/Zn_068_293.6K.ace" temperature="2.53e-08" zaid="30068"/>
<ace_table alias="Zn-70.71c" awr="69.3246" location="1" name="30070.71c" path="293.6K/Zn_070_293.6K.ace" temperature="2.53e-08" zaid="30070"/>
<ace_table alias="Ga-69.71c" awr="68.3336" location="1" name="31069.71c" path="293.6K/Ga_069_293.6K.ace" temperature="2.53e-08" zaid="31069"/>
<ace_table alias="Ga-71.71c" awr="70.315" location="1" name="31071.71c" path="293.6K/Ga_071_293.6K.ace" temperature="2.53e-08" zaid="31071"/>
<ace_table alias="Ge-70.71c" awr="69.3236" location="1" name="32070.71c" path="293.6K/Ge_070_293.6K.ace" temperature="2.53e-08" zaid="32070"/>
<ace_table alias="Ge-72.71c" awr="71.3042" location="1" name="32072.71c" path="293.6K/Ge_072_293.6K.ace" temperature="2.53e-08" zaid="32072"/>
<ace_table alias="Ge-73.71c" awr="72.297" location="1" name="32073.71c" path="293.6K/Ge_073_293.6K.ace" temperature="2.53e-08" zaid="32073"/>
<ace_table alias="Ge-74.71c" awr="73.2862" location="1" name="32074.71c" path="293.6K/Ge_074_293.6K.ace" temperature="2.53e-08" zaid="32074"/>
<ace_table alias="Ge-76.71c" awr="75.2692" location="1" name="32076.71c" path="293.6K/Ge_076_293.6K.ace" temperature="2.53e-08" zaid="32076"/>
<ace_table alias="As-74.71c" awr="73.2889" location="1" name="33074.71c" path="293.6K/As_074_293.6K.ace" temperature="2.53e-08" zaid="33074"/>
<ace_table alias="As-75.71c" awr="74.278" location="1" name="33075.71c" path="293.6K/As_075_293.6K.ace" temperature="2.53e-08" zaid="33075"/>
<ace_table alias="Se-74.71c" awr="73.2875" location="1" name="34074.71c" path="293.6K/Se_074_293.6K.ace" temperature="2.53e-08" zaid="34074"/>
<ace_table alias="Se-76.71c" awr="75.267" location="1" name="34076.71c" path="293.6K/Se_076_293.6K.ace" temperature="2.53e-08" zaid="34076"/>
<ace_table alias="Se-77.71c" awr="76.2591" location="1" name="34077.71c" path="293.6K/Se_077_293.6K.ace" temperature="2.53e-08" zaid="34077"/>
<ace_table alias="Se-78.71c" awr="77.2479" location="1" name="34078.71c" path="293.6K/Se_078_293.6K.ace" temperature="2.53e-08" zaid="34078"/>
<ace_table alias="Se-79.71c" awr="78.2405" location="1" name="34079.71c" path="293.6K/Se_079_293.6K.ace" temperature="2.53e-08" zaid="34079"/>
<ace_table alias="Se-80.71c" awr="79.23" location="1" name="34080.71c" path="293.6K/Se_080_293.6K.ace" temperature="2.53e-08" zaid="34080"/>
<ace_table alias="Se-82.71c" awr="81.213" location="1" name="34082.71c" path="293.6K/Se_082_293.6K.ace" temperature="2.53e-08" zaid="34082"/>
<ace_table alias="Br-79.71c" awr="78.2403" location="1" name="35079.71c" path="293.6K/Br_079_293.6K.ace" temperature="2.53e-08" zaid="35079"/>
<ace_table alias="Br-81.71c" awr="80.2212" location="1" name="35081.71c" path="293.6K/Br_081_293.6K.ace" temperature="2.53e-08" zaid="35081"/>
<ace_table alias="Kr-78.71c" awr="77.25099" location="1" name="36078.71c" path="293.6K/Kr_078_293.6K.ace" temperature="2.53e-08" zaid="36078"/>
<ace_table alias="Kr-80.71c" awr="79.2299" location="1" name="36080.71c" path="293.6K/Kr_080_293.6K.ace" temperature="2.53e-08" zaid="36080"/>
<ace_table alias="Kr-82.71c" awr="81.2098" location="1" name="36082.71c" path="293.6K/Kr_082_293.6K.ace" temperature="2.53e-08" zaid="36082"/>
<ace_table alias="Kr-83.71c" awr="82.202" location="1" name="36083.71c" path="293.6K/Kr_083_293.6K.ace" temperature="2.53e-08" zaid="36083"/>
<ace_table alias="Kr-84.71c" awr="83.1907" location="1" name="36084.71c" path="293.6K/Kr_084_293.6K.ace" temperature="2.53e-08" zaid="36084"/>
<ace_table alias="Kr-85.71c" awr="84.1831" location="1" name="36085.71c" path="293.6K/Kr_085_293.6K.ace" temperature="2.53e-08" zaid="36085"/>
<ace_table alias="Kr-86.71c" awr="85.1726" location="1" name="36086.71c" path="293.6K/Kr_086_293.6K.ace" temperature="2.53e-08" zaid="36086"/>
<ace_table alias="Rb-85.71c" awr="84.1824" location="1" name="37085.71c" path="293.6K/Rb_085_293.6K.ace" temperature="2.53e-08" zaid="37085"/>
<ace_table alias="Rb-86.71c" awr="85.1731" location="1" name="37086.71c" path="293.6K/Rb_086_293.6K.ace" temperature="2.53e-08" zaid="37086"/>
<ace_table alias="Rb-87.71c" awr="86.1626" location="1" name="37087.71c" path="293.6K/Rb_087_293.6K.ace" temperature="2.53e-08" zaid="37087"/>
<ace_table alias="Sr-84.71c" awr="83.1926" location="1" name="38084.71c" path="293.6K/Sr_084_293.6K.ace" temperature="2.53e-08" zaid="38084"/>
<ace_table alias="Sr-86.71c" awr="85.1713" location="1" name="38086.71c" path="293.6K/Sr_086_293.6K.ace" temperature="2.53e-08" zaid="38086"/>
<ace_table alias="Sr-87.71c" awr="86.1623" location="1" name="38087.71c" path="293.6K/Sr_087_293.6K.ace" temperature="2.53e-08" zaid="38087"/>
<ace_table alias="Sr-88.71c" awr="87.15" location="1" name="38088.71c" path="293.6K/Sr_088_293.6K.ace" temperature="2.53e-08" zaid="38088"/>
<ace_table alias="Sr-89.71c" awr="88.144" location="1" name="38089.71c" path="293.6K/Sr_089_293.6K.ace" temperature="2.53e-08" zaid="38089"/>
<ace_table alias="Sr-90.71c" awr="89.1353" location="1" name="38090.71c" path="293.6K/Sr_090_293.6K.ace" temperature="2.53e-08" zaid="38090"/>
<ace_table alias="Y-89.71c" awr="88.1421" location="1" name="39089.71c" path="293.6K/Y_089_293.6K.ace" temperature="2.53e-08" zaid="39089"/>
<ace_table alias="Y-90.71c" awr="89.1348" location="1" name="39090.71c" path="293.6K/Y_090_293.6K.ace" temperature="2.53e-08" zaid="39090"/>
<ace_table alias="Y-91.71c" awr="90.1264" location="1" name="39091.71c" path="293.6K/Y_091_293.6K.ace" temperature="2.53e-08" zaid="39091"/>
<ace_table alias="Zr-90.71c" awr="89.1324" location="1" name="40090.71c" path="293.6K/Zr_090_293.6K.ace" temperature="2.53e-08" zaid="40090"/>
<ace_table alias="Zr-91.71c" awr="90.1247" location="1" name="40091.71c" path="293.6K/Zr_091_293.6K.ace" temperature="2.53e-08" zaid="40091"/>
<ace_table alias="Zr-92.71c" awr="91.1155" location="1" name="40092.71c" path="293.6K/Zr_092_293.6K.ace" temperature="2.53e-08" zaid="40092"/>
<ace_table alias="Zr-93.71c" awr="92.1084" location="1" name="40093.71c" path="293.6K/Zr_093_293.6K.ace" temperature="2.53e-08" zaid="40093"/>
<ace_table alias="Zr-94.71c" awr="93.0996" location="1" name="40094.71c" path="293.6K/Zr_094_293.6K.ace" temperature="2.53e-08" zaid="40094"/>
<ace_table alias="Zr-95.71c" awr="94.0927" location="1" name="40095.71c" path="293.6K/Zr_095_293.6K.ace" temperature="2.53e-08" zaid="40095"/>
<ace_table alias="Zr-96.71c" awr="95.0844" location="1" name="40096.71c" path="293.6K/Zr_096_293.6K.ace" temperature="2.53e-08" zaid="40096"/>
<ace_table alias="Nb-93.71c" awr="92.1051" location="1" name="41093.71c" path="293.6K/Nb_093_293.6K.ace" temperature="2.53e-08" zaid="41093"/>
<ace_table alias="Nb-94.71c" awr="93.1006" location="1" name="41094.71c" path="293.6K/Nb_094_293.6K.ace" temperature="2.53e-08" zaid="41094"/>
<ace_table alias="Nb-95.71c" awr="94.0915" location="1" name="41095.71c" path="293.6K/Nb_095_293.6K.ace" temperature="2.53e-08" zaid="41095"/>
<ace_table alias="Mo-92.71c" awr="91.1173" location="1" name="42092.71c" path="293.6K/Mo_092_293.6K.ace" temperature="2.53e-08" zaid="42092"/>
<ace_table alias="Mo-94.71c" awr="93.0984" location="1" name="42094.71c" path="293.6K/Mo_094_293.6K.ace" temperature="2.53e-08" zaid="42094"/>
<ace_table alias="Mo-95.71c" awr="94.0906" location="1" name="42095.71c" path="293.6K/Mo_095_293.6K.ace" temperature="2.53e-08" zaid="42095"/>
<ace_table alias="Mo-96.71c" awr="95.0808" location="1" name="42096.71c" path="293.6K/Mo_096_293.6K.ace" temperature="2.53e-08" zaid="42096"/>
<ace_table alias="Mo-97.71c" awr="96.0735" location="1" name="42097.71c" path="293.6K/Mo_097_293.6K.ace" temperature="2.53e-08" zaid="42097"/>
<ace_table alias="Mo-98.71c" awr="97.0643" location="1" name="42098.71c" path="293.6K/Mo_098_293.6K.ace" temperature="2.53e-08" zaid="42098"/>
<ace_table alias="Mo-99.71c" awr="98.058" location="1" name="42099.71c" path="293.6K/Mo_099_293.6K.ace" temperature="2.53e-08" zaid="42099"/>
<ace_table alias="Mo-100.71c" awr="99.049" location="1" name="42100.71c" path="293.6K/Mo_100_293.6K.ace" temperature="2.53e-08" zaid="42100"/>
<ace_table alias="Tc-99.71c" awr="98.0566" location="1" name="43099.71c" path="293.6K/Tc_099_293.6K.ace" temperature="2.53e-08" zaid="43099"/>
<ace_table alias="Ru-96.71c" awr="95.0837" location="1" name="44096.71c" path="293.6K/Ru_096_293.6K.ace" temperature="2.53e-08" zaid="44096"/>
<ace_table alias="Ru-98.71c" awr="97.0642" location="1" name="44098.71c" path="293.6K/Ru_098_293.6K.ace" temperature="2.53e-08" zaid="44098"/>
<ace_table alias="Ru-99.71c" awr="98.0562" location="1" name="44099.71c" path="293.6K/Ru_099_293.6K.ace" temperature="2.53e-08" zaid="44099"/>
<ace_table alias="Ru-100.71c" awr="99.046" location="1" name="44100.71c" path="293.6K/Ru_100_293.6K.ace" temperature="2.53e-08" zaid="44100"/>
<ace_table alias="Ru-101.71c" awr="100.039" location="1" name="44101.71c" path="293.6K/Ru_101_293.6K.ace" temperature="2.53e-08" zaid="44101"/>
<ace_table alias="Ru-102.71c" awr="101.03" location="1" name="44102.71c" path="293.6K/Ru_102_293.6K.ace" temperature="2.53e-08" zaid="44102"/>
<ace_table alias="Ru-103.71c" awr="102.02" location="1" name="44103.71c" path="293.6K/Ru_103_293.6K.ace" temperature="2.53e-08" zaid="44103"/>
<ace_table alias="Ru-104.71c" awr="103.01" location="1" name="44104.71c" path="293.6K/Ru_104_293.6K.ace" temperature="2.53e-08" zaid="44104"/>
<ace_table alias="Ru-105.71c" awr="104.01" location="1" name="44105.71c" path="293.6K/Ru_105_293.6K.ace" temperature="2.53e-08" zaid="44105"/>
<ace_table alias="Ru-106.71c" awr="104.997" location="1" name="44106.71c" path="293.6K/Ru_106_293.6K.ace" temperature="2.53e-08" zaid="44106"/>
<ace_table alias="Rh-103.71c" awr="102.021" location="1" name="45103.71c" path="293.6K/Rh_103_293.6K.ace" temperature="2.53e-08" zaid="45103"/>
<ace_table alias="Rh-105.71c" awr="104.0" location="1" name="45105.71c" path="293.6K/Rh_105_293.6K.ace" temperature="2.53e-08" zaid="45105"/>
<ace_table alias="Pd-102.71c" awr="101.0302" location="1" name="46102.71c" path="293.6K/Pd_102_293.6K.ace" temperature="2.53e-08" zaid="46102"/>
<ace_table alias="Pd-104.71c" awr="103.0114" location="1" name="46104.71c" path="293.6K/Pd_104_293.6K.ace" temperature="2.53e-08" zaid="46104"/>
<ace_table alias="Pd-105.71c" awr="104.004" location="1" name="46105.71c" path="293.6K/Pd_105_293.6K.ace" temperature="2.53e-08" zaid="46105"/>
<ace_table alias="Pd-106.71c" awr="104.9937" location="1" name="46106.71c" path="293.6K/Pd_106_293.6K.ace" temperature="2.53e-08" zaid="46106"/>
<ace_table alias="Pd-107.71c" awr="105.987" location="1" name="46107.71c" path="293.6K/Pd_107_293.6K.ace" temperature="2.53e-08" zaid="46107"/>
<ace_table alias="Pd-108.71c" awr="106.9769" location="1" name="46108.71c" path="293.6K/Pd_108_293.6K.ace" temperature="2.53e-08" zaid="46108"/>
<ace_table alias="Pd-110.71c" awr="108.961" location="1" name="46110.71c" path="293.6K/Pd_110_293.6K.ace" temperature="2.53e-08" zaid="46110"/>
<ace_table alias="Ag-107.71c" awr="105.987" location="1" name="47107.71c" path="293.6K/Ag_107_293.6K.ace" temperature="2.53e-08" zaid="47107"/>
<ace_table alias="Ag-109.71c" awr="107.969" location="1" name="47109.71c" path="293.6K/Ag_109_293.6K.ace" temperature="2.53e-08" zaid="47109"/>
<ace_table alias="Ag-110m.71c" awr="108.962" location="1" metastable="1" name="47510.71c" path="293.6K/Ag_110m1_293.6K.ace" temperature="2.53e-08" zaid="47510"/>
<ace_table alias="Ag-111.71c" awr="109.953" location="1" name="47111.71c" path="293.6K/Ag_111_293.6K.ace" temperature="2.53e-08" zaid="47111"/>
<ace_table alias="Cd-106.71c" awr="104.996" location="1" name="48106.71c" path="293.6K/Cd_106_293.6K.ace" temperature="2.53e-08" zaid="48106"/>
<ace_table alias="Cd-108.71c" awr="106.977" location="1" name="48108.71c" path="293.6K/Cd_108_293.6K.ace" temperature="2.53e-08" zaid="48108"/>
<ace_table alias="Cd-110.71c" awr="108.959" location="1" name="48110.71c" path="293.6K/Cd_110_293.6K.ace" temperature="2.53e-08" zaid="48110"/>
<ace_table alias="Cd-111.71c" awr="109.951" location="1" name="48111.71c" path="293.6K/Cd_111_293.6K.ace" temperature="2.53e-08" zaid="48111"/>
<ace_table alias="Cd-112.71c" awr="110.942" location="1" name="48112.71c" path="293.6K/Cd_112_293.6K.ace" temperature="2.53e-08" zaid="48112"/>
<ace_table alias="Cd-113.71c" awr="111.93" location="1" name="48113.71c" path="293.6K/Cd_113_293.6K.ace" temperature="2.53e-08" zaid="48113"/>
<ace_table alias="Cd-114.71c" awr="112.925" location="1" name="48114.71c" path="293.6K/Cd_114_293.6K.ace" temperature="2.53e-08" zaid="48114"/>
<ace_table alias="Cd-115m.71c" awr="113.918" location="1" metastable="1" name="48515.71c" path="293.6K/Cd_115m1_293.6K.ace" temperature="2.53e-08" zaid="48515"/>
<ace_table alias="Cd-116.71c" awr="114.909" location="1" name="48116.71c" path="293.6K/Cd_116_293.6K.ace" temperature="2.53e-08" zaid="48116"/>
<ace_table alias="In-113.71c" awr="111.934" location="1" name="49113.71c" path="293.6K/In_113_293.6K.ace" temperature="2.53e-08" zaid="49113"/>
<ace_table alias="In-115.71c" awr="113.917" location="1" name="49115.71c" path="293.6K/In_115_293.6K.ace" temperature="2.53e-08" zaid="49115"/>
<ace_table alias="Sn-112.71c" awr="110.944" location="1" name="50112.71c" path="293.6K/Sn_112_293.6K.ace" temperature="2.53e-08" zaid="50112"/>
<ace_table alias="Sn-113.71c" awr="111.935" location="1" name="50113.71c" path="293.6K/Sn_113_293.6K.ace" temperature="2.53e-08" zaid="50113"/>
<ace_table alias="Sn-114.71c" awr="112.925" location="1" name="50114.71c" path="293.6K/Sn_114_293.6K.ace" temperature="2.53e-08" zaid="50114"/>
<ace_table alias="Sn-115.71c" awr="113.916" location="1" name="50115.71c" path="293.6K/Sn_115_293.6K.ace" temperature="2.53e-08" zaid="50115"/>
<ace_table alias="Sn-116.71c" awr="114.906" location="1" name="50116.71c" path="293.6K/Sn_116_293.6K.ace" temperature="2.53e-08" zaid="50116"/>
<ace_table alias="Sn-117.71c" awr="115.899" location="1" name="50117.71c" path="293.6K/Sn_117_293.6K.ace" temperature="2.53e-08" zaid="50117"/>
<ace_table alias="Sn-118.71c" awr="116.889" location="1" name="50118.71c" path="293.6K/Sn_118_293.6K.ace" temperature="2.53e-08" zaid="50118"/>
<ace_table alias="Sn-119.71c" awr="117.882" location="1" name="50119.71c" path="293.6K/Sn_119_293.6K.ace" temperature="2.53e-08" zaid="50119"/>
<ace_table alias="Sn-120.71c" awr="118.872" location="1" name="50120.71c" path="293.6K/Sn_120_293.6K.ace" temperature="2.53e-08" zaid="50120"/>
<ace_table alias="Sn-122.71c" awr="120.856" location="1" name="50122.71c" path="293.6K/Sn_122_293.6K.ace" temperature="2.53e-08" zaid="50122"/>
<ace_table alias="Sn-123.71c" awr="121.85" location="1" name="50123.71c" path="293.6K/Sn_123_293.6K.ace" temperature="2.53e-08" zaid="50123"/>
<ace_table alias="Sn-124.71c" awr="122.841" location="1" name="50124.71c" path="293.6K/Sn_124_293.6K.ace" temperature="2.53e-08" zaid="50124"/>
<ace_table alias="Sn-125.71c" awr="123.835" location="1" name="50125.71c" path="293.6K/Sn_125_293.6K.ace" temperature="2.53e-08" zaid="50125"/>
<ace_table alias="Sn-126.71c" awr="124.826" location="1" name="50126.71c" path="293.6K/Sn_126_293.6K.ace" temperature="2.53e-08" zaid="50126"/>
<ace_table alias="Sb-121.71c" awr="119.87" location="1" name="51121.71c" path="293.6K/Sb_121_293.6K.ace" temperature="2.53e-08" zaid="51121"/>
<ace_table alias="Sb-123.71c" awr="121.85" location="1" name="51123.71c" path="293.6K/Sb_123_293.6K.ace" temperature="2.53e-08" zaid="51123"/>
<ace_table alias="Sb-124.71c" awr="122.842" location="1" name="51124.71c" path="293.6K/Sb_124_293.6K.ace" temperature="2.53e-08" zaid="51124"/>
<ace_table alias="Sb-125.71c" awr="123.832" location="1" name="51125.71c" path="293.6K/Sb_125_293.6K.ace" temperature="2.53e-08" zaid="51125"/>
<ace_table alias="Sb-126.71c" awr="124.826" location="1" name="51126.71c" path="293.6K/Sb_126_293.6K.ace" temperature="2.53e-08" zaid="51126"/>
<ace_table alias="Te-120.71c" awr="118.874" location="1" name="52120.71c" path="293.6K/Te_120_293.6K.ace" temperature="2.53e-08" zaid="52120"/>
<ace_table alias="Te-122.71c" awr="120.856" location="1" name="52122.71c" path="293.6K/Te_122_293.6K.ace" temperature="2.53e-08" zaid="52122"/>
<ace_table alias="Te-123.71c" awr="121.848" location="1" name="52123.71c" path="293.6K/Te_123_293.6K.ace" temperature="2.53e-08" zaid="52123"/>
<ace_table alias="Te-124.71c" awr="122.839" location="1" name="52124.71c" path="293.6K/Te_124_293.6K.ace" temperature="2.53e-08" zaid="52124"/>
<ace_table alias="Te-125.71c" awr="123.831" location="1" name="52125.71c" path="293.6K/Te_125_293.6K.ace" temperature="2.53e-08" zaid="52125"/>
<ace_table alias="Te-126.71c" awr="124.821" location="1" name="52126.71c" path="293.6K/Te_126_293.6K.ace" temperature="2.53e-08" zaid="52126"/>
<ace_table alias="Te-127m.71c" awr="125.815" location="1" metastable="1" name="52527.71c" path="293.6K/Te_127m1_293.6K.ace" temperature="2.53e-08" zaid="52527"/>
<ace_table alias="Te-128.71c" awr="126.805" location="1" name="52128.71c" path="293.6K/Te_128_293.6K.ace" temperature="2.53e-08" zaid="52128"/>
<ace_table alias="Te-129m.71c" awr="127.8" location="1" metastable="1" name="52529.71c" path="293.6K/Te_129m1_293.6K.ace" temperature="2.53e-08" zaid="52529"/>
<ace_table alias="Te-130.71c" awr="128.79" location="1" name="52130.71c" path="293.6K/Te_130_293.6K.ace" temperature="2.53e-08" zaid="52130"/>
<ace_table alias="Te-132.71c" awr="130.775" location="1" name="52132.71c" path="293.6K/Te_132_293.6K.ace" temperature="2.53e-08" zaid="52132"/>
<ace_table alias="I-127.71c" awr="125.8143" location="1" name="53127.71c" path="293.6K/I_127_293.6K.ace" temperature="2.53e-08" zaid="53127"/>
<ace_table alias="I-129.71c" awr="127.798" location="1" name="53129.71c" path="293.6K/I_129_293.6K.ace" temperature="2.53e-08" zaid="53129"/>
<ace_table alias="I-130.71c" awr="128.791" location="1" name="53130.71c" path="293.6K/I_130_293.6K.ace" temperature="2.53e-08" zaid="53130"/>
<ace_table alias="I-131.71c" awr="129.781" location="1" name="53131.71c" path="293.6K/I_131_293.6K.ace" temperature="2.53e-08" zaid="53131"/>
<ace_table alias="I-135.71c" awr="133.75" location="1" name="53135.71c" path="293.6K/I_135_293.6K.ace" temperature="2.53e-08" zaid="53135"/>
<ace_table alias="Xe-123.71c" awr="121.8526" location="1" name="54123.71c" path="293.6K/Xe_123_293.6K.ace" temperature="2.53e-08" zaid="54123"/>
<ace_table alias="Xe-124.71c" awr="122.8415" location="1" name="54124.71c" path="293.6K/Xe_124_293.6K.ace" temperature="2.53e-08" zaid="54124"/>
<ace_table alias="Xe-126.71c" awr="124.822" location="1" name="54126.71c" path="293.6K/Xe_126_293.6K.ace" temperature="2.53e-08" zaid="54126"/>
<ace_table alias="Xe-128.71c" awr="126.804" location="1" name="54128.71c" path="293.6K/Xe_128_293.6K.ace" temperature="2.53e-08" zaid="54128"/>
<ace_table alias="Xe-129.71c" awr="127.798" location="1" name="54129.71c" path="293.6K/Xe_129_293.6K.ace" temperature="2.53e-08" zaid="54129"/>
<ace_table alias="Xe-130.71c" awr="128.788" location="1" name="54130.71c" path="293.6K/Xe_130_293.6K.ace" temperature="2.53e-08" zaid="54130"/>
<ace_table alias="Xe-131.71c" awr="129.781" location="1" name="54131.71c" path="293.6K/Xe_131_293.6K.ace" temperature="2.53e-08" zaid="54131"/>
<ace_table alias="Xe-132.71c" awr="130.77" location="1" name="54132.71c" path="293.6K/Xe_132_293.6K.ace" temperature="2.53e-08" zaid="54132"/>
<ace_table alias="Xe-133.71c" awr="131.764" location="1" name="54133.71c" path="293.6K/Xe_133_293.6K.ace" temperature="2.53e-08" zaid="54133"/>
<ace_table alias="Xe-134.71c" awr="132.76" location="1" name="54134.71c" path="293.6K/Xe_134_293.6K.ace" temperature="2.53e-08" zaid="54134"/>
<ace_table alias="Xe-135.71c" awr="133.748" location="1" name="54135.71c" path="293.6K/Xe_135_293.6K.ace" temperature="2.53e-08" zaid="54135"/>
<ace_table alias="Xe-136.71c" awr="134.74" location="1" name="54136.71c" path="293.6K/Xe_136_293.6K.ace" temperature="2.53e-08" zaid="54136"/>
<ace_table alias="Cs-133.71c" awr="131.764" location="1" name="55133.71c" path="293.6K/Cs_133_293.6K.ace" temperature="2.53e-08" zaid="55133"/>
<ace_table alias="Cs-134.71c" awr="132.757" location="1" name="55134.71c" path="293.6K/Cs_134_293.6K.ace" temperature="2.53e-08" zaid="55134"/>
<ace_table alias="Cs-135.71c" awr="133.747" location="1" name="55135.71c" path="293.6K/Cs_135_293.6K.ace" temperature="2.53e-08" zaid="55135"/>
<ace_table alias="Cs-136.71c" awr="134.739" location="1" name="55136.71c" path="293.6K/Cs_136_293.6K.ace" temperature="2.53e-08" zaid="55136"/>
<ace_table alias="Cs-137.71c" awr="135.731" location="1" name="55137.71c" path="293.6K/Cs_137_293.6K.ace" temperature="2.53e-08" zaid="55137"/>
<ace_table alias="Ba-130.71c" awr="128.79" location="1" name="56130.71c" path="293.6K/Ba_130_293.6K.ace" temperature="2.53e-08" zaid="56130"/>
<ace_table alias="Ba-132.71c" awr="130.772" location="1" name="56132.71c" path="293.6K/Ba_132_293.6K.ace" temperature="2.53e-08" zaid="56132"/>
<ace_table alias="Ba-133.71c" awr="131.764" location="1" name="56133.71c" path="293.6K/Ba_133_293.6K.ace" temperature="2.53e-08" zaid="56133"/>
<ace_table alias="Ba-134.71c" awr="132.754" location="1" name="56134.71c" path="293.6K/Ba_134_293.6K.ace" temperature="2.53e-08" zaid="56134"/>
<ace_table alias="Ba-135.71c" awr="133.747" location="1" name="56135.71c" path="293.6K/Ba_135_293.6K.ace" temperature="2.53e-08" zaid="56135"/>
<ace_table alias="Ba-136.71c" awr="134.737" location="1" name="56136.71c" path="293.6K/Ba_136_293.6K.ace" temperature="2.53e-08" zaid="56136"/>
<ace_table alias="Ba-137.71c" awr="135.73" location="1" name="56137.71c" path="293.6K/Ba_137_293.6K.ace" temperature="2.53e-08" zaid="56137"/>
<ace_table alias="Ba-138.71c" awr="136.72" location="1" name="56138.71c" path="293.6K/Ba_138_293.6K.ace" temperature="2.53e-08" zaid="56138"/>
<ace_table alias="Ba-140.71c" awr="138.708" location="1" name="56140.71c" path="293.6K/Ba_140_293.6K.ace" temperature="2.53e-08" zaid="56140"/>
<ace_table alias="La-138.71c" awr="136.722" location="1" name="57138.71c" path="293.6K/La_138_293.6K.ace" temperature="2.53e-08" zaid="57138"/>
<ace_table alias="La-139.71c" awr="137.71" location="1" name="57139.71c" path="293.6K/La_139_293.6K.ace" temperature="2.53e-08" zaid="57139"/>
<ace_table alias="La-140.71c" awr="138.708" location="1" name="57140.71c" path="293.6K/La_140_293.6K.ace" temperature="2.53e-08" zaid="57140"/>
<ace_table alias="Ce-136.71c" awr="134.74" location="1" name="58136.71c" path="293.6K/Ce_136_293.6K.ace" temperature="2.53e-08" zaid="58136"/>
<ace_table alias="Ce-138.71c" awr="136.721" location="1" name="58138.71c" path="293.6K/Ce_138_293.6K.ace" temperature="2.53e-08" zaid="58138"/>
<ace_table alias="Ce-139.71c" awr="137.713" location="1" name="58139.71c" path="293.6K/Ce_139_293.6K.ace" temperature="2.53e-08" zaid="58139"/>
<ace_table alias="Ce-140.71c" awr="138.704" location="1" name="58140.71c" path="293.6K/Ce_140_293.6K.ace" temperature="2.53e-08" zaid="58140"/>
<ace_table alias="Ce-141.71c" awr="139.7" location="1" name="58141.71c" path="293.6K/Ce_141_293.6K.ace" temperature="2.53e-08" zaid="58141"/>
<ace_table alias="Ce-142.71c" awr="140.69" location="1" name="58142.71c" path="293.6K/Ce_142_293.6K.ace" temperature="2.53e-08" zaid="58142"/>
<ace_table alias="Ce-143.71c" awr="141.685" location="1" name="58143.71c" path="293.6K/Ce_143_293.6K.ace" temperature="2.53e-08" zaid="58143"/>
<ace_table alias="Ce-144.71c" awr="142.678" location="1" name="58144.71c" path="293.6K/Ce_144_293.6K.ace" temperature="2.53e-08" zaid="58144"/>
<ace_table alias="Pr-141.71c" awr="139.697" location="1" name="59141.71c" path="293.6K/Pr_141_293.6K.ace" temperature="2.53e-08" zaid="59141"/>
<ace_table alias="Pr-142.71c" awr="140.691" location="1" name="59142.71c" path="293.6K/Pr_142_293.6K.ace" temperature="2.53e-08" zaid="59142"/>
<ace_table alias="Pr-143.71c" awr="141.683" location="1" name="59143.71c" path="293.6K/Pr_143_293.6K.ace" temperature="2.53e-08" zaid="59143"/>
<ace_table alias="Nd-142.71c" awr="140.689" location="1" name="60142.71c" path="293.6K/Nd_142_293.6K.ace" temperature="2.53e-08" zaid="60142"/>
<ace_table alias="Nd-143.71c" awr="141.682" location="1" name="60143.71c" path="293.6K/Nd_143_293.6K.ace" temperature="2.53e-08" zaid="60143"/>
<ace_table alias="Nd-144.71c" awr="142.674" location="1" name="60144.71c" path="293.6K/Nd_144_293.6K.ace" temperature="2.53e-08" zaid="60144"/>
<ace_table alias="Nd-145.71c" awr="143.668" location="1" name="60145.71c" path="293.6K/Nd_145_293.6K.ace" temperature="2.53e-08" zaid="60145"/>
<ace_table alias="Nd-146.71c" awr="144.66" location="1" name="60146.71c" path="293.6K/Nd_146_293.6K.ace" temperature="2.53e-08" zaid="60146"/>
<ace_table alias="Nd-147.71c" awr="145.654" location="1" name="60147.71c" path="293.6K/Nd_147_293.6K.ace" temperature="2.53e-08" zaid="60147"/>
<ace_table alias="Nd-148.71c" awr="146.646" location="1" name="60148.71c" path="293.6K/Nd_148_293.6K.ace" temperature="2.53e-08" zaid="60148"/>
<ace_table alias="Nd-150.71c" awr="148.633" location="1" name="60150.71c" path="293.6K/Nd_150_293.6K.ace" temperature="2.53e-08" zaid="60150"/>
<ace_table alias="Pm-147.71c" awr="145.653" location="1" name="61147.71c" path="293.6K/Pm_147_293.6K.ace" temperature="2.53e-08" zaid="61147"/>
<ace_table alias="Pm-148.71c" awr="146.646" location="1" name="61148.71c" path="293.6K/Pm_148_293.6K.ace" temperature="2.53e-08" zaid="61148"/>
<ace_table alias="Pm-148m.71c" awr="146.65" location="1" metastable="1" name="61548.71c" path="293.6K/Pm_148m1_293.6K.ace" temperature="2.53e-08" zaid="61548"/>
<ace_table alias="Pm-149.71c" awr="147.639" location="1" name="61149.71c" path="293.6K/Pm_149_293.6K.ace" temperature="2.53e-08" zaid="61149"/>
<ace_table alias="Pm-151.71c" awr="149.625" location="1" name="61151.71c" path="293.6K/Pm_151_293.6K.ace" temperature="2.53e-08" zaid="61151"/>
<ace_table alias="Sm-144.71c" awr="142.676" location="1" name="62144.71c" path="293.6K/Sm_144_293.6K.ace" temperature="2.53e-08" zaid="62144"/>
<ace_table alias="Sm-147.71c" awr="145.653" location="1" name="62147.71c" path="293.6K/Sm_147_293.6K.ace" temperature="2.53e-08" zaid="62147"/>
<ace_table alias="Sm-148.71c" awr="146.644" location="1" name="62148.71c" path="293.6K/Sm_148_293.6K.ace" temperature="2.53e-08" zaid="62148"/>
<ace_table alias="Sm-149.71c" awr="147.638" location="1" name="62149.71c" path="293.6K/Sm_149_293.6K.ace" temperature="2.53e-08" zaid="62149"/>
<ace_table alias="Sm-150.71c" awr="148.629" location="1" name="62150.71c" path="293.6K/Sm_150_293.6K.ace" temperature="2.53e-08" zaid="62150"/>
<ace_table alias="Sm-151.71c" awr="149.623" location="1" name="62151.71c" path="293.6K/Sm_151_293.6K.ace" temperature="2.53e-08" zaid="62151"/>
<ace_table alias="Sm-152.71c" awr="150.615" location="1" name="62152.71c" path="293.6K/Sm_152_293.6K.ace" temperature="2.53e-08" zaid="62152"/>
<ace_table alias="Sm-153.71c" awr="151.608" location="1" name="62153.71c" path="293.6K/Sm_153_293.6K.ace" temperature="2.53e-08" zaid="62153"/>
<ace_table alias="Sm-154.71c" awr="152.6" location="1" name="62154.71c" path="293.6K/Sm_154_293.6K.ace" temperature="2.53e-08" zaid="62154"/>
<ace_table alias="Eu-151.71c" awr="149.62" location="1" name="63151.71c" path="293.6K/Eu_151_293.6K.ace" temperature="2.53e-08" zaid="63151"/>
<ace_table alias="Eu-152.71c" awr="150.617" location="1" name="63152.71c" path="293.6K/Eu_152_293.6K.ace" temperature="2.53e-08" zaid="63152"/>
<ace_table alias="Eu-153.71c" awr="151.608" location="1" name="63153.71c" path="293.6K/Eu_153_293.6K.ace" temperature="2.53e-08" zaid="63153"/>
<ace_table alias="Eu-154.71c" awr="152.6" location="1" name="63154.71c" path="293.6K/Eu_154_293.6K.ace" temperature="2.53e-08" zaid="63154"/>
<ace_table alias="Eu-155.71c" awr="153.59" location="1" name="63155.71c" path="293.6K/Eu_155_293.6K.ace" temperature="2.53e-08" zaid="63155"/>
<ace_table alias="Eu-156.71c" awr="154.586" location="1" name="63156.71c" path="293.6K/Eu_156_293.6K.ace" temperature="2.53e-08" zaid="63156"/>
<ace_table alias="Eu-157.71c" awr="155.577" location="1" name="63157.71c" path="293.6K/Eu_157_293.6K.ace" temperature="2.53e-08" zaid="63157"/>
<ace_table alias="Gd-152.71c" awr="150.615" location="1" name="64152.71c" path="293.6K/Gd_152_293.6K.ace" temperature="2.53e-08" zaid="64152"/>
<ace_table alias="Gd-153.71c" awr="151.608" location="1" name="64153.71c" path="293.6K/Gd_153_293.6K.ace" temperature="2.53e-08" zaid="64153"/>
<ace_table alias="Gd-154.71c" awr="152.599" location="1" name="64154.71c" path="293.6K/Gd_154_293.6K.ace" temperature="2.53e-08" zaid="64154"/>
<ace_table alias="Gd-155.71c" awr="153.592" location="1" name="64155.71c" path="293.6K/Gd_155_293.6K.ace" temperature="2.53e-08" zaid="64155"/>
<ace_table alias="Gd-156.71c" awr="154.583" location="1" name="64156.71c" path="293.6K/Gd_156_293.6K.ace" temperature="2.53e-08" zaid="64156"/>
<ace_table alias="Gd-157.71c" awr="155.576" location="1" name="64157.71c" path="293.6K/Gd_157_293.6K.ace" temperature="2.53e-08" zaid="64157"/>
<ace_table alias="Gd-158.71c" awr="156.567" location="1" name="64158.71c" path="293.6K/Gd_158_293.6K.ace" temperature="2.53e-08" zaid="64158"/>
<ace_table alias="Gd-160.71c" awr="158.553" location="1" name="64160.71c" path="293.6K/Gd_160_293.6K.ace" temperature="2.53e-08" zaid="64160"/>
<ace_table alias="Tb-159.71c" awr="157.56" location="1" name="65159.71c" path="293.6K/Tb_159_293.6K.ace" temperature="2.53e-08" zaid="65159"/>
<ace_table alias="Tb-160.71c" awr="158.553" location="1" name="65160.71c" path="293.6K/Tb_160_293.6K.ace" temperature="2.53e-08" zaid="65160"/>
<ace_table alias="Dy-156.71c" awr="154.585" location="1" name="66156.71c" path="293.6K/Dy_156_293.6K.ace" temperature="2.53e-08" zaid="66156"/>
<ace_table alias="Dy-158.71c" awr="156.568" location="1" name="66158.71c" path="293.6K/Dy_158_293.6K.ace" temperature="2.53e-08" zaid="66158"/>
<ace_table alias="Dy-160.71c" awr="158.551" location="1" name="66160.71c" path="293.6K/Dy_160_293.6K.ace" temperature="2.53e-08" zaid="66160"/>
<ace_table alias="Dy-161.71c" awr="159.544" location="1" name="66161.71c" path="293.6K/Dy_161_293.6K.ace" temperature="2.53e-08" zaid="66161"/>
<ace_table alias="Dy-162.71c" awr="160.536" location="1" name="66162.71c" path="293.6K/Dy_162_293.6K.ace" temperature="2.53e-08" zaid="66162"/>
<ace_table alias="Dy-163.71c" awr="161.529" location="1" name="66163.71c" path="293.6K/Dy_163_293.6K.ace" temperature="2.53e-08" zaid="66163"/>
<ace_table alias="Dy-164.71c" awr="162.521" location="1" name="66164.71c" path="293.6K/Dy_164_293.6K.ace" temperature="2.53e-08" zaid="66164"/>
<ace_table alias="Ho-165.71c" awr="163.513" location="1" name="67165.71c" path="293.6K/Ho_165_293.6K.ace" temperature="2.53e-08" zaid="67165"/>
<ace_table alias="Ho-166m.71c" awr="164.507" location="1" metastable="1" name="67566.71c" path="293.6K/Ho_166m1_293.6K.ace" temperature="2.53e-08" zaid="67566"/>
<ace_table alias="Er-162.71c" awr="160.538" location="1" name="68162.71c" path="293.6K/Er_162_293.6K.ace" temperature="2.53e-08" zaid="68162"/>
<ace_table alias="Er-164.71c" awr="162.521" location="1" name="68164.71c" path="293.6K/Er_164_293.6K.ace" temperature="2.53e-08" zaid="68164"/>
<ace_table alias="Er-166.71c" awr="164.505" location="1" name="68166.71c" path="293.6K/Er_166_293.6K.ace" temperature="2.53e-08" zaid="68166"/>
<ace_table alias="Er-167.71c" awr="165.498" location="1" name="68167.71c" path="293.6K/Er_167_293.6K.ace" temperature="2.53e-08" zaid="68167"/>
<ace_table alias="Er-168.71c" awr="166.487" location="1" name="68168.71c" path="293.6K/Er_168_293.6K.ace" temperature="2.53e-08" zaid="68168"/>
<ace_table alias="Er-170.71c" awr="168.476" location="1" name="68170.71c" path="293.6K/Er_170_293.6K.ace" temperature="2.53e-08" zaid="68170"/>
<ace_table alias="Tm-168.71c" awr="166.492" location="1" name="69168.71c" path="293.6K/Tm_168_293.6K.ace" temperature="2.53e-08" zaid="69168"/>
<ace_table alias="Tm-169.71c" awr="167.483" location="1" name="69169.71c" path="293.6K/Tm_169_293.6K.ace" temperature="2.53e-08" zaid="69169"/>
<ace_table alias="Tm-170.71c" awr="168.476" location="1" name="69170.71c" path="293.6K/Tm_170_293.6K.ace" temperature="2.53e-08" zaid="69170"/>
<ace_table alias="Lu-175.71c" awr="173.438" location="1" name="71175.71c" path="293.6K/Lu_175_293.6K.ace" temperature="2.53e-08" zaid="71175"/>
<ace_table alias="Lu-176.71c" awr="174.43" location="1" name="71176.71c" path="293.6K/Lu_176_293.6K.ace" temperature="2.53e-08" zaid="71176"/>
<ace_table alias="Hf-174.71c" awr="172.446" location="1" name="72174.71c" path="293.6K/Hf_174_293.6K.ace" temperature="2.53e-08" zaid="72174"/>
<ace_table alias="Hf-176.71c" awr="174.429" location="1" name="72176.71c" path="293.6K/Hf_176_293.6K.ace" temperature="2.53e-08" zaid="72176"/>
<ace_table alias="Hf-177.71c" awr="175.42" location="1" name="72177.71c" path="293.6K/Hf_177_293.6K.ace" temperature="2.53e-08" zaid="72177"/>
<ace_table alias="Hf-178.71c" awr="176.411" location="1" name="72178.71c" path="293.6K/Hf_178_293.6K.ace" temperature="2.53e-08" zaid="72178"/>
<ace_table alias="Hf-179.71c" awr="177.413" location="1" name="72179.71c" path="293.6K/Hf_179_293.6K.ace" temperature="2.53e-08" zaid="72179"/>
<ace_table alias="Hf-180.71c" awr="178.404" location="1" name="72180.71c" path="293.6K/Hf_180_293.6K.ace" temperature="2.53e-08" zaid="72180"/>
<ace_table alias="Ta-180.71c" awr="178.4016" location="1" name="73180.71c" path="293.6K/Ta_180_293.6K.ace" temperature="2.53e-08" zaid="73180"/>
<ace_table alias="Ta-181.71c" awr="179.3936" location="1" name="73181.71c" path="293.6K/Ta_181_293.6K.ace" temperature="2.53e-08" zaid="73181"/>
<ace_table alias="Ta-182.71c" awr="180.387" location="1" name="73182.71c" path="293.6K/Ta_182_293.6K.ace" temperature="2.53e-08" zaid="73182"/>
<ace_table alias="W-180.71c" awr="178.401" location="1" name="74180.71c" path="293.6K/W_180_293.6K.ace" temperature="2.53e-08" zaid="74180"/>
<ace_table alias="W-182.71c" awr="180.385" location="1" name="74182.71c" path="293.6K/W_182_293.6K.ace" temperature="2.53e-08" zaid="74182"/>
<ace_table alias="W-183.71c" awr="181.379" location="1" name="74183.71c" path="293.6K/W_183_293.6K.ace" temperature="2.53e-08" zaid="74183"/>
<ace_table alias="W-184.71c" awr="182.371" location="1" name="74184.71c" path="293.6K/W_184_293.6K.ace" temperature="2.53e-08" zaid="74184"/>
<ace_table alias="W-186.71c" awr="184.357" location="1" name="74186.71c" path="293.6K/W_186_293.6K.ace" temperature="2.53e-08" zaid="74186"/>
<ace_table alias="Re-185.71c" awr="183.3641" location="1" name="75185.71c" path="293.6K/Re_185_293.6K.ace" temperature="2.53e-08" zaid="75185"/>
<ace_table alias="Re-187.71c" awr="185.3497" location="1" name="75187.71c" path="293.6K/Re_187_293.6K.ace" temperature="2.53e-08" zaid="75187"/>
<ace_table alias="Ir-191.71c" awr="189.32" location="1" name="77191.71c" path="293.6K/Ir_191_293.6K.ace" temperature="2.53e-08" zaid="77191"/>
<ace_table alias="Ir-193.71c" awr="191.305" location="1" name="77193.71c" path="293.6K/Ir_193_293.6K.ace" temperature="2.53e-08" zaid="77193"/>
<ace_table alias="Au-197.71c" awr="195.274" location="1" name="79197.71c" path="293.6K/Au_197_293.6K.ace" temperature="2.53e-08" zaid="79197"/>
<ace_table alias="Hg-196.71c" awr="194.282" location="1" name="80196.71c" path="293.6K/Hg_196_293.6K.ace" temperature="2.53e-08" zaid="80196"/>
<ace_table alias="Hg-198.71c" awr="196.266" location="1" name="80198.71c" path="293.6K/Hg_198_293.6K.ace" temperature="2.53e-08" zaid="80198"/>
<ace_table alias="Hg-199.71c" awr="197.259" location="1" name="80199.71c" path="293.6K/Hg_199_293.6K.ace" temperature="2.53e-08" zaid="80199"/>
<ace_table alias="Hg-200.71c" awr="198.25" location="1" name="80200.71c" path="293.6K/Hg_200_293.6K.ace" temperature="2.53e-08" zaid="80200"/>
<ace_table alias="Hg-201.71c" awr="199.244" location="1" name="80201.71c" path="293.6K/Hg_201_293.6K.ace" temperature="2.53e-08" zaid="80201"/>
<ace_table alias="Hg-202.71c" awr="200.236" location="1" name="80202.71c" path="293.6K/Hg_202_293.6K.ace" temperature="2.53e-08" zaid="80202"/>
<ace_table alias="Hg-204.71c" awr="202.221" location="1" name="80204.71c" path="293.6K/Hg_204_293.6K.ace" temperature="2.53e-08" zaid="80204"/>
<ace_table alias="Tl-203.71c" awr="201.229" location="1" name="81203.71c" path="293.6K/Tl_203_293.6K.ace" temperature="2.53e-08" zaid="81203"/>
<ace_table alias="Tl-205.71c" awr="203.214" location="1" name="81205.71c" path="293.6K/Tl_205_293.6K.ace" temperature="2.53e-08" zaid="81205"/>
<ace_table alias="Pb-204.71c" awr="202.2208" location="1" name="82204.71c" path="293.6K/Pb_204_293.6K.ace" temperature="2.53e-08" zaid="82204"/>
<ace_table alias="Pb-206.71c" awr="204.205" location="1" name="82206.71c" path="293.6K/Pb_206_293.6K.ace" temperature="2.53e-08" zaid="82206"/>
<ace_table alias="Pb-207.71c" awr="205.1979" location="1" name="82207.71c" path="293.6K/Pb_207_293.6K.ace" temperature="2.53e-08" zaid="82207"/>
<ace_table alias="Pb-208.71c" awr="206.19" location="1" name="82208.71c" path="293.6K/Pb_208_293.6K.ace" temperature="2.53e-08" zaid="82208"/>
<ace_table alias="Bi-209.71c" awr="207.185" location="1" name="83209.71c" path="293.6K/Bi_209_293.6K.ace" temperature="2.53e-08" zaid="83209"/>
<ace_table alias="Ra-223.71c" awr="221.103" location="1" name="88223.71c" path="293.6K/Ra_223_293.6K.ace" temperature="2.53e-08" zaid="88223"/>
<ace_table alias="Ra-224.71c" awr="222.096" location="1" name="88224.71c" path="293.6K/Ra_224_293.6K.ace" temperature="2.53e-08" zaid="88224"/>
<ace_table alias="Ra-225.71c" awr="223.091" location="1" name="88225.71c" path="293.6K/Ra_225_293.6K.ace" temperature="2.53e-08" zaid="88225"/>
<ace_table alias="Ra-226.71c" awr="224.084" location="1" name="88226.71c" path="293.6K/Ra_226_293.6K.ace" temperature="2.53e-08" zaid="88226"/>
<ace_table alias="Ac-225.71c" awr="223.09" location="1" name="89225.71c" path="293.6K/Ac_225_293.6K.ace" temperature="2.53e-08" zaid="89225"/>
<ace_table alias="Ac-226.71c" awr="224.084" location="1" name="89226.71c" path="293.6K/Ac_226_293.6K.ace" temperature="2.53e-08" zaid="89226"/>
<ace_table alias="Ac-227.71c" awr="225.077" location="1" name="89227.71c" path="293.6K/Ac_227_293.6K.ace" temperature="2.53e-08" zaid="89227"/>
<ace_table alias="Th-227.71c" awr="225.077" location="1" name="90227.71c" path="293.6K/Th_227_293.6K.ace" temperature="2.53e-08" zaid="90227"/>
<ace_table alias="Th-228.71c" awr="226.07" location="1" name="90228.71c" path="293.6K/Th_228_293.6K.ace" temperature="2.53e-08" zaid="90228"/>
<ace_table alias="Th-229.71c" awr="227.064" location="1" name="90229.71c" path="293.6K/Th_229_293.6K.ace" temperature="2.53e-08" zaid="90229"/>
<ace_table alias="Th-230.71c" awr="228.057" location="1" name="90230.71c" path="293.6K/Th_230_293.6K.ace" temperature="2.53e-08" zaid="90230"/>
<ace_table alias="Th-231.71c" awr="229.052" location="1" name="90231.71c" path="293.6K/Th_231_293.6K.ace" temperature="2.53e-08" zaid="90231"/>
<ace_table alias="Th-232.71c" awr="230.045" location="1" name="90232.71c" path="293.6K/Th_232_293.6K.ace" temperature="2.53e-08" zaid="90232"/>
<ace_table alias="Th-233.71c" awr="231.04" location="1" name="90233.71c" path="293.6K/Th_233_293.6K.ace" temperature="2.53e-08" zaid="90233"/>
<ace_table alias="Th-234.71c" awr="232.033" location="1" name="90234.71c" path="293.6K/Th_234_293.6K.ace" temperature="2.53e-08" zaid="90234"/>
<ace_table alias="Pa-229.71c" awr="227.065" location="1" name="91229.71c" path="293.6K/Pa_229_293.6K.ace" temperature="2.53e-08" zaid="91229"/>
<ace_table alias="Pa-230.71c" awr="228.058" location="1" name="91230.71c" path="293.6K/Pa_230_293.6K.ace" temperature="2.53e-08" zaid="91230"/>
<ace_table alias="Pa-231.71c" awr="229.051" location="1" name="91231.71c" path="293.6K/Pa_231_293.6K.ace" temperature="2.53e-08" zaid="91231"/>
<ace_table alias="Pa-232.71c" awr="230.045" location="1" name="91232.71c" path="293.6K/Pa_232_293.6K.ace" temperature="2.53e-08" zaid="91232"/>
<ace_table alias="Pa-233.71c" awr="231.038" location="1" name="91233.71c" path="293.6K/Pa_233_293.6K.ace" temperature="2.53e-08" zaid="91233"/>
<ace_table alias="U-230.71c" awr="228.058" location="1" name="92230.71c" path="293.6K/U_230_293.6K.ace" temperature="2.53e-08" zaid="92230"/>
<ace_table alias="U-231.71c" awr="229.052" location="1" name="92231.71c" path="293.6K/U_231_293.6K.ace" temperature="2.53e-08" zaid="92231"/>
<ace_table alias="U-232.71c" awr="230.044" location="1" name="92232.71c" path="293.6K/U_232_293.6K.ace" temperature="2.53e-08" zaid="92232"/>
<ace_table alias="U-233.71c" awr="231.0377" location="1" name="92233.71c" path="293.6K/U_233_293.6K.ace" temperature="2.53e-08" zaid="92233"/>
<ace_table alias="U-234.71c" awr="232.0304" location="1" name="92234.71c" path="293.6K/U_234_293.6K.ace" temperature="2.53e-08" zaid="92234"/>
<ace_table alias="U-235.71c" awr="233.0248" location="1" name="92235.71c" path="293.6K/U_235_293.6K.ace" temperature="2.53e-08" zaid="92235"/>
<ace_table alias="U-236.71c" awr="234.0178" location="1" name="92236.71c" path="293.6K/U_236_293.6K.ace" temperature="2.53e-08" zaid="92236"/>
<ace_table alias="U-237.71c" awr="235.0124" location="1" name="92237.71c" path="293.6K/U_237_293.6K.ace" temperature="2.53e-08" zaid="92237"/>
<ace_table alias="U-238.71c" awr="236.0058" location="1" name="92238.71c" path="293.6K/U_238_293.6K.ace" temperature="2.53e-08" zaid="92238"/>
<ace_table alias="U-239.71c" awr="237.0007" location="1" name="92239.71c" path="293.6K/U_239_293.6K.ace" temperature="2.53e-08" zaid="92239"/>
<ace_table alias="U-240.71c" awr="237.9944" location="1" name="92240.71c" path="293.6K/U_240_293.6K.ace" temperature="2.53e-08" zaid="92240"/>
<ace_table alias="U-241.71c" awr="238.9895" location="1" name="92241.71c" path="293.6K/U_241_293.6K.ace" temperature="2.53e-08" zaid="92241"/>
<ace_table alias="Np-234.71c" awr="232.032" location="1" name="93234.71c" path="293.6K/Np_234_293.6K.ace" temperature="2.53e-08" zaid="93234"/>
<ace_table alias="Np-235.71c" awr="233.025" location="1" name="93235.71c" path="293.6K/Np_235_293.6K.ace" temperature="2.53e-08" zaid="93235"/>
<ace_table alias="Np-236.71c" awr="234.019" location="1" name="93236.71c" path="293.6K/Np_236_293.6K.ace" temperature="2.53e-08" zaid="93236"/>
<ace_table alias="Np-237.71c" awr="235.0118" location="1" name="93237.71c" path="293.6K/Np_237_293.6K.ace" temperature="2.53e-08" zaid="93237"/>
<ace_table alias="Np-238.71c" awr="236.006" location="1" name="93238.71c" path="293.6K/Np_238_293.6K.ace" temperature="2.53e-08" zaid="93238"/>
<ace_table alias="Np-239.71c" awr="236.999" location="1" name="93239.71c" path="293.6K/Np_239_293.6K.ace" temperature="2.53e-08" zaid="93239"/>
<ace_table alias="Pu-236.71c" awr="234.018" location="1" name="94236.71c" path="293.6K/Pu_236_293.6K.ace" temperature="2.53e-08" zaid="94236"/>
<ace_table alias="Pu-237.71c" awr="235.012" location="1" name="94237.71c" path="293.6K/Pu_237_293.6K.ace" temperature="2.53e-08" zaid="94237"/>
<ace_table alias="Pu-238.71c" awr="236.0046" location="1" name="94238.71c" path="293.6K/Pu_238_293.6K.ace" temperature="2.53e-08" zaid="94238"/>
<ace_table alias="Pu-239.71c" awr="236.9986" location="1" name="94239.71c" path="293.6K/Pu_239_293.6K.ace" temperature="2.53e-08" zaid="94239"/>
<ace_table alias="Pu-240.71c" awr="237.9916" location="1" name="94240.71c" path="293.6K/Pu_240_293.6K.ace" temperature="2.53e-08" zaid="94240"/>
<ace_table alias="Pu-241.71c" awr="238.978" location="1" name="94241.71c" path="293.6K/Pu_241_293.6K.ace" temperature="2.53e-08" zaid="94241"/>
<ace_table alias="Pu-242.71c" awr="239.979" location="1" name="94242.71c" path="293.6K/Pu_242_293.6K.ace" temperature="2.53e-08" zaid="94242"/>
<ace_table alias="Pu-243.71c" awr="240.974" location="1" name="94243.71c" path="293.6K/Pu_243_293.6K.ace" temperature="2.53e-08" zaid="94243"/>
<ace_table alias="Pu-244.71c" awr="241.967" location="1" name="94244.71c" path="293.6K/Pu_244_293.6K.ace" temperature="2.53e-08" zaid="94244"/>
<ace_table alias="Pu-246.71c" awr="243.956" location="1" name="94246.71c" path="293.6K/Pu_246_293.6K.ace" temperature="2.53e-08" zaid="94246"/>
<ace_table alias="Am-240.71c" awr="237.993" location="1" name="95240.71c" path="293.6K/Am_240_293.6K.ace" temperature="2.53e-08" zaid="95240"/>
<ace_table alias="Am-241.71c" awr="238.986" location="1" name="95241.71c" path="293.6K/Am_241_293.6K.ace" temperature="2.53e-08" zaid="95241"/>
<ace_table alias="Am-242.71c" awr="239.9801" location="1" name="95242.71c" path="293.6K/Am_242_293.6K.ace" temperature="2.53e-08" zaid="95242"/>
<ace_table alias="Am-242m.71c" awr="239.9801" location="1" metastable="1" name="95642.71c" path="293.6K/Am_242m1_293.6K.ace" temperature="2.53e-08" zaid="95642"/>
<ace_table alias="Am-243.71c" awr="240.9734" location="1" name="95243.71c" path="293.6K/Am_243_293.6K.ace" temperature="2.53e-08" zaid="95243"/>
<ace_table alias="Am-244.71c" awr="241.968" location="1" name="95244.71c" path="293.6K/Am_244_293.6K.ace" temperature="2.53e-08" zaid="95244"/>
<ace_table alias="Am-244m.71c" awr="241.968" location="1" metastable="1" name="95644.71c" path="293.6K/Am_244m1_293.6K.ace" temperature="2.53e-08" zaid="95644"/>
<ace_table alias="Cm-240.71c" awr="237.993" location="1" name="96240.71c" path="293.6K/Cm_240_293.6K.ace" temperature="2.53e-08" zaid="96240"/>
<ace_table alias="Cm-241.71c" awr="238.987" location="1" name="96241.71c" path="293.6K/Cm_241_293.6K.ace" temperature="2.53e-08" zaid="96241"/>
<ace_table alias="Cm-242.71c" awr="239.979" location="1" name="96242.71c" path="293.6K/Cm_242_293.6K.ace" temperature="2.53e-08" zaid="96242"/>
<ace_table alias="Cm-243.71c" awr="240.973" location="1" name="96243.71c" path="293.6K/Cm_243_293.6K.ace" temperature="2.53e-08" zaid="96243"/>
<ace_table alias="Cm-244.71c" awr="241.966" location="1" name="96244.71c" path="293.6K/Cm_244_293.6K.ace" temperature="2.53e-08" zaid="96244"/>
<ace_table alias="Cm-245.71c" awr="242.96" location="1" name="96245.71c" path="293.6K/Cm_245_293.6K.ace" temperature="2.53e-08" zaid="96245"/>
<ace_table alias="Cm-246.71c" awr="243.953" location="1" name="96246.71c" path="293.6K/Cm_246_293.6K.ace" temperature="2.53e-08" zaid="96246"/>
<ace_table alias="Cm-247.71c" awr="244.948" location="1" name="96247.71c" path="293.6K/Cm_247_293.6K.ace" temperature="2.53e-08" zaid="96247"/>
<ace_table alias="Cm-248.71c" awr="245.941" location="1" name="96248.71c" path="293.6K/Cm_248_293.6K.ace" temperature="2.53e-08" zaid="96248"/>
<ace_table alias="Cm-249.71c" awr="246.936" location="1" name="96249.71c" path="293.6K/Cm_249_293.6K.ace" temperature="2.53e-08" zaid="96249"/>
<ace_table alias="Cm-250.71c" awr="247.93" location="1" name="96250.71c" path="293.6K/Cm_250_293.6K.ace" temperature="2.53e-08" zaid="96250"/>
<ace_table alias="Bk-245.71c" awr="242.961" location="1" name="97245.71c" path="293.6K/Bk_245_293.6K.ace" temperature="2.53e-08" zaid="97245"/>
<ace_table alias="Bk-246.71c" awr="243.955" location="1" name="97246.71c" path="293.6K/Bk_246_293.6K.ace" temperature="2.53e-08" zaid="97246"/>
<ace_table alias="Bk-247.71c" awr="244.948" location="1" name="97247.71c" path="293.6K/Bk_247_293.6K.ace" temperature="2.53e-08" zaid="97247"/>
<ace_table alias="Bk-248.71c" awr="245.942" location="1" name="97248.71c" path="293.6K/Bk_248_293.6K.ace" temperature="2.53e-08" zaid="97248"/>
<ace_table alias="Bk-249.71c" awr="246.935" location="1" name="97249.71c" path="293.6K/Bk_249_293.6K.ace" temperature="2.53e-08" zaid="97249"/>
<ace_table alias="Bk-250.71c" awr="247.93" location="1" name="97250.71c" path="293.6K/Bk_250_293.6K.ace" temperature="2.53e-08" zaid="97250"/>
<ace_table alias="Cf-246.71c" awr="243.955" location="1" name="98246.71c" path="293.6K/Cf_246_293.6K.ace" temperature="2.53e-08" zaid="98246"/>
<ace_table alias="Cf-248.71c" awr="245.941" location="1" name="98248.71c" path="293.6K/Cf_248_293.6K.ace" temperature="2.53e-08" zaid="98248"/>
<ace_table alias="Cf-249.71c" awr="246.935" location="1" name="98249.71c" path="293.6K/Cf_249_293.6K.ace" temperature="2.53e-08" zaid="98249"/>
<ace_table alias="Cf-250.71c" awr="247.928" location="1" name="98250.71c" path="293.6K/Cf_250_293.6K.ace" temperature="2.53e-08" zaid="98250"/>
<ace_table alias="Cf-251.71c" awr="248.923" location="1" name="98251.71c" path="293.6K/Cf_251_293.6K.ace" temperature="2.53e-08" zaid="98251"/>
<ace_table alias="Cf-252.71c" awr="249.916" location="1" name="98252.71c" path="293.6K/Cf_252_293.6K.ace" temperature="2.53e-08" zaid="98252"/>
<ace_table alias="Cf-253.71c" awr="250.911" location="1" name="98253.71c" path="293.6K/Cf_253_293.6K.ace" temperature="2.53e-08" zaid="98253"/>
<ace_table alias="Cf-254.71c" awr="251.905" location="1" name="98254.71c" path="293.6K/Cf_254_293.6K.ace" temperature="2.53e-08" zaid="98254"/>
<ace_table alias="Es-251.71c" awr="248.923" location="1" name="99251.71c" path="293.6K/Es_251_293.6K.ace" temperature="2.53e-08" zaid="99251"/>
<ace_table alias="Es-252.71c" awr="249.917" location="1" name="99252.71c" path="293.6K/Es_252_293.6K.ace" temperature="2.53e-08" zaid="99252"/>
<ace_table alias="Es-253.71c" awr="250.911" location="1" name="99253.71c" path="293.6K/Es_253_293.6K.ace" temperature="2.53e-08" zaid="99253"/>
<ace_table alias="Es-254.71c" awr="251.905" location="1" name="99254.71c" path="293.6K/Es_254_293.6K.ace" temperature="2.53e-08" zaid="99254"/>
<ace_table alias="Es-254m.71c" awr="251.905" location="1" metastable="1" name="99654.71c" path="293.6K/Es_254m1_293.6K.ace" temperature="2.53e-08" zaid="99654"/>
<ace_table alias="Es-255.71c" awr="252.899" location="1" name="99255.71c" path="293.6K/Es_255_293.6K.ace" temperature="2.53e-08" zaid="99255"/>
<ace_table alias="Fm-255.71c" awr="252.899" location="1" name="100255.71c" path="293.6K/Fm_255_293.6K.ace" temperature="2.53e-08" zaid="100255"/>
<ace_table alias="H-1.72c" awr="0.999167" location="1" name="1001.72c" path="300K/H_001_300K.ace" temperature="2.585e-08" zaid="1001"/>
<ace_table alias="H-2.72c" awr="1.9968" location="1" name="1002.72c" path="300K/H_002_300K.ace" temperature="2.585e-08" zaid="1002"/>
<ace_table alias="H-3.72c" awr="2.989596" location="1" name="1003.72c" path="300K/H_003_300K.ace" temperature="2.585e-08" zaid="1003"/>
<ace_table alias="He-3.72c" awr="2.989032" location="1" name="2003.72c" path="300K/He_003_300K.ace" temperature="2.585e-08" zaid="2003"/>
<ace_table alias="He-4.72c" awr="3.968219" location="1" name="2004.72c" path="300K/He_004_300K.ace" temperature="2.585e-08" zaid="2004"/>
<ace_table alias="Li-6.72c" awr="5.9634" location="1" name="3006.72c" path="300K/Li_006_300K.ace" temperature="2.585e-08" zaid="3006"/>
<ace_table alias="Li-7.72c" awr="6.955732" location="1" name="3007.72c" path="300K/Li_007_300K.ace" temperature="2.585e-08" zaid="3007"/>
<ace_table alias="Be-7.72c" awr="6.9545" location="1" name="4007.72c" path="300K/Be_007_300K.ace" temperature="2.585e-08" zaid="4007"/>
<ace_table alias="Be-9.72c" awr="8.93478" location="1" name="4009.72c" path="300K/Be_009_300K.ace" temperature="2.585e-08" zaid="4009"/>
<ace_table alias="B-10.72c" awr="9.926921" location="1" name="5010.72c" path="300K/B_010_300K.ace" temperature="2.585e-08" zaid="5010"/>
<ace_table alias="B-11.72c" awr="10.9147" location="1" name="5011.72c" path="300K/B_011_300K.ace" temperature="2.585e-08" zaid="5011"/>
<ace_table alias="C-Nat.72c" awr="11.898" location="1" name="6000.72c" path="300K/C_000_300K.ace" temperature="2.585e-08" zaid="6000"/>
<ace_table alias="N-14.72c" awr="13.88278" location="1" name="7014.72c" path="300K/N_014_300K.ace" temperature="2.585e-08" zaid="7014"/>
<ace_table alias="N-15.72c" awr="14.871" location="1" name="7015.72c" path="300K/N_015_300K.ace" temperature="2.585e-08" zaid="7015"/>
<ace_table alias="O-16.72c" awr="15.85751" location="1" name="8016.72c" path="300K/O_016_300K.ace" temperature="2.585e-08" zaid="8016"/>
<ace_table alias="O-17.72c" awr="16.8531" location="1" name="8017.72c" path="300K/O_017_300K.ace" temperature="2.585e-08" zaid="8017"/>
<ace_table alias="F-19.72c" awr="18.835" location="1" name="9019.72c" path="300K/F_019_300K.ace" temperature="2.585e-08" zaid="9019"/>
<ace_table alias="Na-22.72c" awr="21.8055" location="1" name="11022.72c" path="300K/Na_022_300K.ace" temperature="2.585e-08" zaid="11022"/>
<ace_table alias="Na-23.72c" awr="22.792" location="1" name="11023.72c" path="300K/Na_023_300K.ace" temperature="2.585e-08" zaid="11023"/>
<ace_table alias="Mg-24.72c" awr="23.779" location="1" name="12024.72c" path="300K/Mg_024_300K.ace" temperature="2.585e-08" zaid="12024"/>
<ace_table alias="Mg-25.72c" awr="24.7712" location="1" name="12025.72c" path="300K/Mg_025_300K.ace" temperature="2.585e-08" zaid="12025"/>
<ace_table alias="Mg-26.72c" awr="25.7594" location="1" name="12026.72c" path="300K/Mg_026_300K.ace" temperature="2.585e-08" zaid="12026"/>
<ace_table alias="Al-27.72c" awr="26.74975" location="1" name="13027.72c" path="300K/Al_027_300K.ace" temperature="2.585e-08" zaid="13027"/>
<ace_table alias="Si-28.72c" awr="27.737" location="1" name="14028.72c" path="300K/Si_028_300K.ace" temperature="2.585e-08" zaid="14028"/>
<ace_table alias="Si-29.72c" awr="28.728" location="1" name="14029.72c" path="300K/Si_029_300K.ace" temperature="2.585e-08" zaid="14029"/>
<ace_table alias="Si-30.72c" awr="29.716" location="1" name="14030.72c" path="300K/Si_030_300K.ace" temperature="2.585e-08" zaid="14030"/>
<ace_table alias="P-31.72c" awr="30.708" location="1" name="15031.72c" path="300K/P_031_300K.ace" temperature="2.585e-08" zaid="15031"/>
<ace_table alias="S-32.72c" awr="31.6973" location="1" name="16032.72c" path="300K/S_032_300K.ace" temperature="2.585e-08" zaid="16032"/>
<ace_table alias="S-33.72c" awr="32.6878" location="1" name="16033.72c" path="300K/S_033_300K.ace" temperature="2.585e-08" zaid="16033"/>
<ace_table alias="S-34.72c" awr="33.6762" location="1" name="16034.72c" path="300K/S_034_300K.ace" temperature="2.585e-08" zaid="16034"/>
<ace_table alias="S-36.72c" awr="35.658" location="1" name="16036.72c" path="300K/S_036_300K.ace" temperature="2.585e-08" zaid="16036"/>
<ace_table alias="Cl-35.72c" awr="34.66845" location="1" name="17035.72c" path="300K/Cl_035_300K.ace" temperature="2.585e-08" zaid="17035"/>
<ace_table alias="Cl-37.72c" awr="36.6483" location="1" name="17037.72c" path="300K/Cl_037_300K.ace" temperature="2.585e-08" zaid="17037"/>
<ace_table alias="Ar-36.72c" awr="35.6585" location="1" name="18036.72c" path="300K/Ar_036_300K.ace" temperature="2.585e-08" zaid="18036"/>
<ace_table alias="Ar-38.72c" awr="37.6366" location="1" name="18038.72c" path="300K/Ar_038_300K.ace" temperature="2.585e-08" zaid="18038"/>
<ace_table alias="Ar-40.72c" awr="39.6191" location="1" name="18040.72c" path="300K/Ar_040_300K.ace" temperature="2.585e-08" zaid="18040"/>
<ace_table alias="K-39.72c" awr="38.6293" location="1" name="19039.72c" path="300K/K_039_300K.ace" temperature="2.585e-08" zaid="19039"/>
<ace_table alias="K-40.72c" awr="39.6207" location="1" name="19040.72c" path="300K/K_040_300K.ace" temperature="2.585e-08" zaid="19040"/>
<ace_table alias="K-41.72c" awr="40.6101" location="1" name="19041.72c" path="300K/K_041_300K.ace" temperature="2.585e-08" zaid="19041"/>
<ace_table alias="Ca-40.72c" awr="39.6193" location="1" name="20040.72c" path="300K/Ca_040_300K.ace" temperature="2.585e-08" zaid="20040"/>
<ace_table alias="Ca-42.72c" awr="41.59818" location="1" name="20042.72c" path="300K/Ca_042_300K.ace" temperature="2.585e-08" zaid="20042"/>
<ace_table alias="Ca-43.72c" awr="42.58973" location="1" name="20043.72c" path="300K/Ca_043_300K.ace" temperature="2.585e-08" zaid="20043"/>
<ace_table alias="Ca-44.72c" awr="43.57788" location="1" name="20044.72c" path="300K/Ca_044_300K.ace" temperature="2.585e-08" zaid="20044"/>
<ace_table alias="Ca-46.72c" awr="45.55893" location="1" name="20046.72c" path="300K/Ca_046_300K.ace" temperature="2.585e-08" zaid="20046"/>
<ace_table alias="Ca-48.72c" awr="47.5406" location="1" name="20048.72c" path="300K/Ca_048_300K.ace" temperature="2.585e-08" zaid="20048"/>
<ace_table alias="Sc-45.72c" awr="44.5679" location="1" name="21045.72c" path="300K/Sc_045_300K.ace" temperature="2.585e-08" zaid="21045"/>
<ace_table alias="Ti-46.72c" awr="45.5579" location="1" name="22046.72c" path="300K/Ti_046_300K.ace" temperature="2.585e-08" zaid="22046"/>
<ace_table alias="Ti-47.72c" awr="46.5484" location="1" name="22047.72c" path="300K/Ti_047_300K.ace" temperature="2.585e-08" zaid="22047"/>
<ace_table alias="Ti-48.72c" awr="47.5361" location="1" name="22048.72c" path="300K/Ti_048_300K.ace" temperature="2.585e-08" zaid="22048"/>
<ace_table alias="Ti-49.72c" awr="48.5274" location="1" name="22049.72c" path="300K/Ti_049_300K.ace" temperature="2.585e-08" zaid="22049"/>
<ace_table alias="Ti-50.72c" awr="49.5157" location="1" name="22050.72c" path="300K/Ti_050_300K.ace" temperature="2.585e-08" zaid="22050"/>
<ace_table alias="V-50.72c" awr="49.5181" location="1" name="23050.72c" path="300K/V_050_300K.ace" temperature="2.585e-08" zaid="23050"/>
<ace_table alias="V-51.72c" awr="50.5063" location="1" name="23051.72c" path="300K/V_051_300K.ace" temperature="2.585e-08" zaid="23051"/>
<ace_table alias="Cr-50.72c" awr="49.517" location="1" name="24050.72c" path="300K/Cr_050_300K.ace" temperature="2.585e-08" zaid="24050"/>
<ace_table alias="Cr-52.72c" awr="51.494" location="1" name="24052.72c" path="300K/Cr_052_300K.ace" temperature="2.585e-08" zaid="24052"/>
<ace_table alias="Cr-53.72c" awr="52.486" location="1" name="24053.72c" path="300K/Cr_053_300K.ace" temperature="2.585e-08" zaid="24053"/>
<ace_table alias="Cr-54.72c" awr="53.476" location="1" name="24054.72c" path="300K/Cr_054_300K.ace" temperature="2.585e-08" zaid="24054"/>
<ace_table alias="Mn-55.72c" awr="54.4661" location="1" name="25055.72c" path="300K/Mn_055_300K.ace" temperature="2.585e-08" zaid="25055"/>
<ace_table alias="Fe-54.72c" awr="53.476" location="1" name="26054.72c" path="300K/Fe_054_300K.ace" temperature="2.585e-08" zaid="26054"/>
<ace_table alias="Fe-56.72c" awr="55.454" location="1" name="26056.72c" path="300K/Fe_056_300K.ace" temperature="2.585e-08" zaid="26056"/>
<ace_table alias="Fe-57.72c" awr="56.446" location="1" name="26057.72c" path="300K/Fe_057_300K.ace" temperature="2.585e-08" zaid="26057"/>
<ace_table alias="Fe-58.72c" awr="57.436" location="1" name="26058.72c" path="300K/Fe_058_300K.ace" temperature="2.585e-08" zaid="26058"/>
<ace_table alias="Co-58.72c" awr="57.4381" location="1" name="27058.72c" path="300K/Co_058_300K.ace" temperature="2.585e-08" zaid="27058"/>
<ace_table alias="Co-58m.72c" awr="57.4381" location="1" metastable="1" name="27458.72c" path="300K/Co_058m1_300K.ace" temperature="2.585e-08" zaid="27458"/>
<ace_table alias="Co-59.72c" awr="58.4269" location="1" name="27059.72c" path="300K/Co_059_300K.ace" temperature="2.585e-08" zaid="27059"/>
<ace_table alias="Ni-58.72c" awr="57.438" location="1" name="28058.72c" path="300K/Ni_058_300K.ace" temperature="2.585e-08" zaid="28058"/>
<ace_table alias="Ni-59.72c" awr="58.4281" location="1" name="28059.72c" path="300K/Ni_059_300K.ace" temperature="2.585e-08" zaid="28059"/>
<ace_table alias="Ni-60.72c" awr="59.416" location="1" name="28060.72c" path="300K/Ni_060_300K.ace" temperature="2.585e-08" zaid="28060"/>
<ace_table alias="Ni-61.72c" awr="60.408" location="1" name="28061.72c" path="300K/Ni_061_300K.ace" temperature="2.585e-08" zaid="28061"/>
<ace_table alias="Ni-62.72c" awr="61.396" location="1" name="28062.72c" path="300K/Ni_062_300K.ace" temperature="2.585e-08" zaid="28062"/>
<ace_table alias="Ni-64.72c" awr="63.379" location="1" name="28064.72c" path="300K/Ni_064_300K.ace" temperature="2.585e-08" zaid="28064"/>
<ace_table alias="Cu-63.72c" awr="62.389" location="1" name="29063.72c" path="300K/Cu_063_300K.ace" temperature="2.585e-08" zaid="29063"/>
<ace_table alias="Cu-65.72c" awr="64.37" location="1" name="29065.72c" path="300K/Cu_065_300K.ace" temperature="2.585e-08" zaid="29065"/>
<ace_table alias="Zn-64.72c" awr="63.38" location="1" name="30064.72c" path="300K/Zn_064_300K.ace" temperature="2.585e-08" zaid="30064"/>
<ace_table alias="Zn-65.72c" awr="64.3715" location="1" name="30065.72c" path="300K/Zn_065_300K.ace" temperature="2.585e-08" zaid="30065"/>
<ace_table alias="Zn-66.72c" awr="65.3597" location="1" name="30066.72c" path="300K/Zn_066_300K.ace" temperature="2.585e-08" zaid="30066"/>
<ace_table alias="Zn-67.72c" awr="66.3522" location="1" name="30067.72c" path="300K/Zn_067_300K.ace" temperature="2.585e-08" zaid="30067"/>
<ace_table alias="Zn-68.72c" awr="67.3413" location="1" name="30068.72c" path="300K/Zn_068_300K.ace" temperature="2.585e-08" zaid="30068"/>
<ace_table alias="Zn-70.72c" awr="69.3246" location="1" name="30070.72c" path="300K/Zn_070_300K.ace" temperature="2.585e-08" zaid="30070"/>
<ace_table alias="Ga-69.72c" awr="68.3336" location="1" name="31069.72c" path="300K/Ga_069_300K.ace" temperature="2.585e-08" zaid="31069"/>
<ace_table alias="Ga-71.72c" awr="70.315" location="1" name="31071.72c" path="300K/Ga_071_300K.ace" temperature="2.585e-08" zaid="31071"/>
<ace_table alias="Ge-70.72c" awr="69.3236" location="1" name="32070.72c" path="300K/Ge_070_300K.ace" temperature="2.585e-08" zaid="32070"/>
<ace_table alias="Ge-72.72c" awr="71.3042" location="1" name="32072.72c" path="300K/Ge_072_300K.ace" temperature="2.585e-08" zaid="32072"/>
<ace_table alias="Ge-73.72c" awr="72.297" location="1" name="32073.72c" path="300K/Ge_073_300K.ace" temperature="2.585e-08" zaid="32073"/>
<ace_table alias="Ge-74.72c" awr="73.2862" location="1" name="32074.72c" path="300K/Ge_074_300K.ace" temperature="2.585e-08" zaid="32074"/>
<ace_table alias="Ge-76.72c" awr="75.2692" location="1" name="32076.72c" path="300K/Ge_076_300K.ace" temperature="2.585e-08" zaid="32076"/>
<ace_table alias="As-74.72c" awr="73.2889" location="1" name="33074.72c" path="300K/As_074_300K.ace" temperature="2.585e-08" zaid="33074"/>
<ace_table alias="As-75.72c" awr="74.278" location="1" name="33075.72c" path="300K/As_075_300K.ace" temperature="2.585e-08" zaid="33075"/>
<ace_table alias="Se-74.72c" awr="73.2875" location="1" name="34074.72c" path="300K/Se_074_300K.ace" temperature="2.585e-08" zaid="34074"/>
<ace_table alias="Se-76.72c" awr="75.267" location="1" name="34076.72c" path="300K/Se_076_300K.ace" temperature="2.585e-08" zaid="34076"/>
<ace_table alias="Se-77.72c" awr="76.2591" location="1" name="34077.72c" path="300K/Se_077_300K.ace" temperature="2.585e-08" zaid="34077"/>
<ace_table alias="Se-78.72c" awr="77.2479" location="1" name="34078.72c" path="300K/Se_078_300K.ace" temperature="2.585e-08" zaid="34078"/>
<ace_table alias="Se-79.72c" awr="78.2405" location="1" name="34079.72c" path="300K/Se_079_300K.ace" temperature="2.585e-08" zaid="34079"/>
<ace_table alias="Se-80.72c" awr="79.23" location="1" name="34080.72c" path="300K/Se_080_300K.ace" temperature="2.585e-08" zaid="34080"/>
<ace_table alias="Se-82.72c" awr="81.213" location="1" name="34082.72c" path="300K/Se_082_300K.ace" temperature="2.585e-08" zaid="34082"/>
<ace_table alias="Br-79.72c" awr="78.2403" location="1" name="35079.72c" path="300K/Br_079_300K.ace" temperature="2.585e-08" zaid="35079"/>
<ace_table alias="Br-81.72c" awr="80.2212" location="1" name="35081.72c" path="300K/Br_081_300K.ace" temperature="2.585e-08" zaid="35081"/>
<ace_table alias="Kr-78.72c" awr="77.25099" location="1" name="36078.72c" path="300K/Kr_078_300K.ace" temperature="2.585e-08" zaid="36078"/>
<ace_table alias="Kr-80.72c" awr="79.2299" location="1" name="36080.72c" path="300K/Kr_080_300K.ace" temperature="2.585e-08" zaid="36080"/>
<ace_table alias="Kr-82.72c" awr="81.2098" location="1" name="36082.72c" path="300K/Kr_082_300K.ace" temperature="2.585e-08" zaid="36082"/>
<ace_table alias="Kr-83.72c" awr="82.202" location="1" name="36083.72c" path="300K/Kr_083_300K.ace" temperature="2.585e-08" zaid="36083"/>
<ace_table alias="Kr-84.72c" awr="83.1907" location="1" name="36084.72c" path="300K/Kr_084_300K.ace" temperature="2.585e-08" zaid="36084"/>
<ace_table alias="Kr-85.72c" awr="84.1831" location="1" name="36085.72c" path="300K/Kr_085_300K.ace" temperature="2.585e-08" zaid="36085"/>
<ace_table alias="Kr-86.72c" awr="85.1726" location="1" name="36086.72c" path="300K/Kr_086_300K.ace" temperature="2.585e-08" zaid="36086"/>
<ace_table alias="Rb-85.72c" awr="84.1824" location="1" name="37085.72c" path="300K/Rb_085_300K.ace" temperature="2.585e-08" zaid="37085"/>
<ace_table alias="Rb-86.72c" awr="85.1731" location="1" name="37086.72c" path="300K/Rb_086_300K.ace" temperature="2.585e-08" zaid="37086"/>
<ace_table alias="Rb-87.72c" awr="86.1626" location="1" name="37087.72c" path="300K/Rb_087_300K.ace" temperature="2.585e-08" zaid="37087"/>
<ace_table alias="Sr-84.72c" awr="83.1926" location="1" name="38084.72c" path="300K/Sr_084_300K.ace" temperature="2.585e-08" zaid="38084"/>
<ace_table alias="Sr-86.72c" awr="85.1713" location="1" name="38086.72c" path="300K/Sr_086_300K.ace" temperature="2.585e-08" zaid="38086"/>
<ace_table alias="Sr-87.72c" awr="86.1623" location="1" name="38087.72c" path="300K/Sr_087_300K.ace" temperature="2.585e-08" zaid="38087"/>
<ace_table alias="Sr-88.72c" awr="87.15" location="1" name="38088.72c" path="300K/Sr_088_300K.ace" temperature="2.585e-08" zaid="38088"/>
<ace_table alias="Sr-89.72c" awr="88.144" location="1" name="38089.72c" path="300K/Sr_089_300K.ace" temperature="2.585e-08" zaid="38089"/>
<ace_table alias="Sr-90.72c" awr="89.1353" location="1" name="38090.72c" path="300K/Sr_090_300K.ace" temperature="2.585e-08" zaid="38090"/>
<ace_table alias="Y-89.72c" awr="88.1421" location="1" name="39089.72c" path="300K/Y_089_300K.ace" temperature="2.585e-08" zaid="39089"/>
<ace_table alias="Y-90.72c" awr="89.1348" location="1" name="39090.72c" path="300K/Y_090_300K.ace" temperature="2.585e-08" zaid="39090"/>
<ace_table alias="Y-91.72c" awr="90.1264" location="1" name="39091.72c" path="300K/Y_091_300K.ace" temperature="2.585e-08" zaid="39091"/>
<ace_table alias="Zr-90.72c" awr="89.1324" location="1" name="40090.72c" path="300K/Zr_090_300K.ace" temperature="2.585e-08" zaid="40090"/>
<ace_table alias="Zr-91.72c" awr="90.1247" location="1" name="40091.72c" path="300K/Zr_091_300K.ace" temperature="2.585e-08" zaid="40091"/>
<ace_table alias="Zr-92.72c" awr="91.1155" location="1" name="40092.72c" path="300K/Zr_092_300K.ace" temperature="2.585e-08" zaid="40092"/>
<ace_table alias="Zr-93.72c" awr="92.1084" location="1" name="40093.72c" path="300K/Zr_093_300K.ace" temperature="2.585e-08" zaid="40093"/>
<ace_table alias="Zr-94.72c" awr="93.0996" location="1" name="40094.72c" path="300K/Zr_094_300K.ace" temperature="2.585e-08" zaid="40094"/>
<ace_table alias="Zr-95.72c" awr="94.0927" location="1" name="40095.72c" path="300K/Zr_095_300K.ace" temperature="2.585e-08" zaid="40095"/>
<ace_table alias="Zr-96.72c" awr="95.0844" location="1" name="40096.72c" path="300K/Zr_096_300K.ace" temperature="2.585e-08" zaid="40096"/>
<ace_table alias="Nb-93.72c" awr="92.1051" location="1" name="41093.72c" path="300K/Nb_093_300K.ace" temperature="2.585e-08" zaid="41093"/>
<ace_table alias="Nb-94.72c" awr="93.1006" location="1" name="41094.72c" path="300K/Nb_094_300K.ace" temperature="2.585e-08" zaid="41094"/>
<ace_table alias="Nb-95.72c" awr="94.0915" location="1" name="41095.72c" path="300K/Nb_095_300K.ace" temperature="2.585e-08" zaid="41095"/>
<ace_table alias="Mo-92.72c" awr="91.1173" location="1" name="42092.72c" path="300K/Mo_092_300K.ace" temperature="2.585e-08" zaid="42092"/>
<ace_table alias="Mo-94.72c" awr="93.0984" location="1" name="42094.72c" path="300K/Mo_094_300K.ace" temperature="2.585e-08" zaid="42094"/>
<ace_table alias="Mo-95.72c" awr="94.0906" location="1" name="42095.72c" path="300K/Mo_095_300K.ace" temperature="2.585e-08" zaid="42095"/>
<ace_table alias="Mo-96.72c" awr="95.0808" location="1" name="42096.72c" path="300K/Mo_096_300K.ace" temperature="2.585e-08" zaid="42096"/>
<ace_table alias="Mo-97.72c" awr="96.0735" location="1" name="42097.72c" path="300K/Mo_097_300K.ace" temperature="2.585e-08" zaid="42097"/>
<ace_table alias="Mo-98.72c" awr="97.0643" location="1" name="42098.72c" path="300K/Mo_098_300K.ace" temperature="2.585e-08" zaid="42098"/>
<ace_table alias="Mo-99.72c" awr="98.058" location="1" name="42099.72c" path="300K/Mo_099_300K.ace" temperature="2.585e-08" zaid="42099"/>
<ace_table alias="Mo-100.72c" awr="99.049" location="1" name="42100.72c" path="300K/Mo_100_300K.ace" temperature="2.585e-08" zaid="42100"/>
<ace_table alias="Tc-99.72c" awr="98.0566" location="1" name="43099.72c" path="300K/Tc_099_300K.ace" temperature="2.585e-08" zaid="43099"/>
<ace_table alias="Ru-96.72c" awr="95.0837" location="1" name="44096.72c" path="300K/Ru_096_300K.ace" temperature="2.585e-08" zaid="44096"/>
<ace_table alias="Ru-98.72c" awr="97.0642" location="1" name="44098.72c" path="300K/Ru_098_300K.ace" temperature="2.585e-08" zaid="44098"/>
<ace_table alias="Ru-99.72c" awr="98.0562" location="1" name="44099.72c" path="300K/Ru_099_300K.ace" temperature="2.585e-08" zaid="44099"/>
<ace_table alias="Ru-100.72c" awr="99.046" location="1" name="44100.72c" path="300K/Ru_100_300K.ace" temperature="2.585e-08" zaid="44100"/>
<ace_table alias="Ru-101.72c" awr="100.039" location="1" name="44101.72c" path="300K/Ru_101_300K.ace" temperature="2.585e-08" zaid="44101"/>
<ace_table alias="Ru-102.72c" awr="101.03" location="1" name="44102.72c" path="300K/Ru_102_300K.ace" temperature="2.585e-08" zaid="44102"/>
<ace_table alias="Ru-103.72c" awr="102.02" location="1" name="44103.72c" path="300K/Ru_103_300K.ace" temperature="2.585e-08" zaid="44103"/>
<ace_table alias="Ru-104.72c" awr="103.01" location="1" name="44104.72c" path="300K/Ru_104_300K.ace" temperature="2.585e-08" zaid="44104"/>
<ace_table alias="Ru-105.72c" awr="104.01" location="1" name="44105.72c" path="300K/Ru_105_300K.ace" temperature="2.585e-08" zaid="44105"/>
<ace_table alias="Ru-106.72c" awr="104.997" location="1" name="44106.72c" path="300K/Ru_106_300K.ace" temperature="2.585e-08" zaid="44106"/>
<ace_table alias="Rh-103.72c" awr="102.021" location="1" name="45103.72c" path="300K/Rh_103_300K.ace" temperature="2.585e-08" zaid="45103"/>
<ace_table alias="Rh-105.72c" awr="104.0" location="1" name="45105.72c" path="300K/Rh_105_300K.ace" temperature="2.585e-08" zaid="45105"/>
<ace_table alias="Pd-102.72c" awr="101.0302" location="1" name="46102.72c" path="300K/Pd_102_300K.ace" temperature="2.585e-08" zaid="46102"/>
<ace_table alias="Pd-104.72c" awr="103.0114" location="1" name="46104.72c" path="300K/Pd_104_300K.ace" temperature="2.585e-08" zaid="46104"/>
<ace_table alias="Pd-105.72c" awr="104.004" location="1" name="46105.72c" path="300K/Pd_105_300K.ace" temperature="2.585e-08" zaid="46105"/>
<ace_table alias="Pd-106.72c" awr="104.9937" location="1" name="46106.72c" path="300K/Pd_106_300K.ace" temperature="2.585e-08" zaid="46106"/>
<ace_table alias="Pd-107.72c" awr="105.987" location="1" name="46107.72c" path="300K/Pd_107_300K.ace" temperature="2.585e-08" zaid="46107"/>
<ace_table alias="Pd-108.72c" awr="106.9769" location="1" name="46108.72c" path="300K/Pd_108_300K.ace" temperature="2.585e-08" zaid="46108"/>
<ace_table alias="Pd-110.72c" awr="108.961" location="1" name="46110.72c" path="300K/Pd_110_300K.ace" temperature="2.585e-08" zaid="46110"/>
<ace_table alias="Ag-107.72c" awr="105.987" location="1" name="47107.72c" path="300K/Ag_107_300K.ace" temperature="2.585e-08" zaid="47107"/>
<ace_table alias="Ag-109.72c" awr="107.969" location="1" name="47109.72c" path="300K/Ag_109_300K.ace" temperature="2.585e-08" zaid="47109"/>
<ace_table alias="Ag-110m.72c" awr="108.962" location="1" metastable="1" name="47510.72c" path="300K/Ag_110m1_300K.ace" temperature="2.585e-08" zaid="47510"/>
<ace_table alias="Ag-111.72c" awr="109.953" location="1" name="47111.72c" path="300K/Ag_111_300K.ace" temperature="2.585e-08" zaid="47111"/>
<ace_table alias="Cd-106.72c" awr="104.996" location="1" name="48106.72c" path="300K/Cd_106_300K.ace" temperature="2.585e-08" zaid="48106"/>
<ace_table alias="Cd-108.72c" awr="106.977" location="1" name="48108.72c" path="300K/Cd_108_300K.ace" temperature="2.585e-08" zaid="48108"/>
<ace_table alias="Cd-110.72c" awr="108.959" location="1" name="48110.72c" path="300K/Cd_110_300K.ace" temperature="2.585e-08" zaid="48110"/>
<ace_table alias="Cd-111.72c" awr="109.951" location="1" name="48111.72c" path="300K/Cd_111_300K.ace" temperature="2.585e-08" zaid="48111"/>
<ace_table alias="Cd-112.72c" awr="110.942" location="1" name="48112.72c" path="300K/Cd_112_300K.ace" temperature="2.585e-08" zaid="48112"/>
<ace_table alias="Cd-113.72c" awr="111.93" location="1" name="48113.72c" path="300K/Cd_113_300K.ace" temperature="2.585e-08" zaid="48113"/>
<ace_table alias="Cd-114.72c" awr="112.925" location="1" name="48114.72c" path="300K/Cd_114_300K.ace" temperature="2.585e-08" zaid="48114"/>
<ace_table alias="Cd-115m.72c" awr="113.918" location="1" metastable="1" name="48515.72c" path="300K/Cd_115m1_300K.ace" temperature="2.585e-08" zaid="48515"/>
<ace_table alias="Cd-116.72c" awr="114.909" location="1" name="48116.72c" path="300K/Cd_116_300K.ace" temperature="2.585e-08" zaid="48116"/>
<ace_table alias="In-113.72c" awr="111.934" location="1" name="49113.72c" path="300K/In_113_300K.ace" temperature="2.585e-08" zaid="49113"/>
<ace_table alias="In-115.72c" awr="113.917" location="1" name="49115.72c" path="300K/In_115_300K.ace" temperature="2.585e-08" zaid="49115"/>
<ace_table alias="Sn-112.72c" awr="110.944" location="1" name="50112.72c" path="300K/Sn_112_300K.ace" temperature="2.585e-08" zaid="50112"/>
<ace_table alias="Sn-113.72c" awr="111.935" location="1" name="50113.72c" path="300K/Sn_113_300K.ace" temperature="2.585e-08" zaid="50113"/>
<ace_table alias="Sn-114.72c" awr="112.925" location="1" name="50114.72c" path="300K/Sn_114_300K.ace" temperature="2.585e-08" zaid="50114"/>
<ace_table alias="Sn-115.72c" awr="113.916" location="1" name="50115.72c" path="300K/Sn_115_300K.ace" temperature="2.585e-08" zaid="50115"/>
<ace_table alias="Sn-116.72c" awr="114.906" location="1" name="50116.72c" path="300K/Sn_116_300K.ace" temperature="2.585e-08" zaid="50116"/>
<ace_table alias="Sn-117.72c" awr="115.899" location="1" name="50117.72c" path="300K/Sn_117_300K.ace" temperature="2.585e-08" zaid="50117"/>
<ace_table alias="Sn-118.72c" awr="116.889" location="1" name="50118.72c" path="300K/Sn_118_300K.ace" temperature="2.585e-08" zaid="50118"/>
<ace_table alias="Sn-119.72c" awr="117.882" location="1" name="50119.72c" path="300K/Sn_119_300K.ace" temperature="2.585e-08" zaid="50119"/>
<ace_table alias="Sn-120.72c" awr="118.872" location="1" name="50120.72c" path="300K/Sn_120_300K.ace" temperature="2.585e-08" zaid="50120"/>
<ace_table alias="Sn-122.72c" awr="120.856" location="1" name="50122.72c" path="300K/Sn_122_300K.ace" temperature="2.585e-08" zaid="50122"/>
<ace_table alias="Sn-123.72c" awr="121.85" location="1" name="50123.72c" path="300K/Sn_123_300K.ace" temperature="2.585e-08" zaid="50123"/>
<ace_table alias="Sn-124.72c" awr="122.841" location="1" name="50124.72c" path="300K/Sn_124_300K.ace" temperature="2.585e-08" zaid="50124"/>
<ace_table alias="Sn-125.72c" awr="123.835" location="1" name="50125.72c" path="300K/Sn_125_300K.ace" temperature="2.585e-08" zaid="50125"/>
<ace_table alias="Sn-126.72c" awr="124.826" location="1" name="50126.72c" path="300K/Sn_126_300K.ace" temperature="2.585e-08" zaid="50126"/>
<ace_table alias="Sb-121.72c" awr="119.87" location="1" name="51121.72c" path="300K/Sb_121_300K.ace" temperature="2.585e-08" zaid="51121"/>
<ace_table alias="Sb-123.72c" awr="121.85" location="1" name="51123.72c" path="300K/Sb_123_300K.ace" temperature="2.585e-08" zaid="51123"/>
<ace_table alias="Sb-124.72c" awr="122.842" location="1" name="51124.72c" path="300K/Sb_124_300K.ace" temperature="2.585e-08" zaid="51124"/>
<ace_table alias="Sb-125.72c" awr="123.832" location="1" name="51125.72c" path="300K/Sb_125_300K.ace" temperature="2.585e-08" zaid="51125"/>
<ace_table alias="Sb-126.72c" awr="124.826" location="1" name="51126.72c" path="300K/Sb_126_300K.ace" temperature="2.585e-08" zaid="51126"/>
<ace_table alias="Te-120.72c" awr="118.874" location="1" name="52120.72c" path="300K/Te_120_300K.ace" temperature="2.585e-08" zaid="52120"/>
<ace_table alias="Te-122.72c" awr="120.856" location="1" name="52122.72c" path="300K/Te_122_300K.ace" temperature="2.585e-08" zaid="52122"/>
<ace_table alias="Te-123.72c" awr="121.848" location="1" name="52123.72c" path="300K/Te_123_300K.ace" temperature="2.585e-08" zaid="52123"/>
<ace_table alias="Te-124.72c" awr="122.839" location="1" name="52124.72c" path="300K/Te_124_300K.ace" temperature="2.585e-08" zaid="52124"/>
<ace_table alias="Te-125.72c" awr="123.831" location="1" name="52125.72c" path="300K/Te_125_300K.ace" temperature="2.585e-08" zaid="52125"/>
<ace_table alias="Te-126.72c" awr="124.821" location="1" name="52126.72c" path="300K/Te_126_300K.ace" temperature="2.585e-08" zaid="52126"/>
<ace_table alias="Te-127m.72c" awr="125.815" location="1" metastable="1" name="52527.72c" path="300K/Te_127m1_300K.ace" temperature="2.585e-08" zaid="52526"/>
<ace_table alias="Te-128.72c" awr="126.805" location="1" name="52128.72c" path="300K/Te_128_300K.ace" temperature="2.585e-08" zaid="52128"/>
<ace_table alias="Te-129m.72c" awr="127.8" location="1" metastable="1" name="52529.72c" path="300K/Te_129m1_300K.ace" temperature="2.585e-08" zaid="52529"/>
<ace_table alias="Te-130.72c" awr="128.79" location="1" name="52130.72c" path="300K/Te_130_300K.ace" temperature="2.585e-08" zaid="52130"/>
<ace_table alias="Te-132.72c" awr="130.775" location="1" name="52132.72c" path="300K/Te_132_300K.ace" temperature="2.585e-08" zaid="52132"/>
<ace_table alias="I-127.72c" awr="125.8143" location="1" name="53127.72c" path="300K/I_127_300K.ace" temperature="2.585e-08" zaid="53127"/>
<ace_table alias="I-129.72c" awr="127.798" location="1" name="53129.72c" path="300K/I_129_300K.ace" temperature="2.585e-08" zaid="53129"/>
<ace_table alias="I-130.72c" awr="128.791" location="1" name="53130.72c" path="300K/I_130_300K.ace" temperature="2.585e-08" zaid="53130"/>
<ace_table alias="I-131.72c" awr="129.781" location="1" name="53131.72c" path="300K/I_131_300K.ace" temperature="2.585e-08" zaid="53131"/>
<ace_table alias="I-135.72c" awr="133.75" location="1" name="53135.72c" path="300K/I_135_300K.ace" temperature="2.585e-08" zaid="53135"/>
<ace_table alias="Xe-123.72c" awr="121.8526" location="1" name="54123.72c" path="300K/Xe_123_300K.ace" temperature="2.585e-08" zaid="54123"/>
<ace_table alias="Xe-124.72c" awr="122.8415" location="1" name="54124.72c" path="300K/Xe_124_300K.ace" temperature="2.585e-08" zaid="54124"/>
<ace_table alias="Xe-126.72c" awr="124.822" location="1" name="54126.72c" path="300K/Xe_126_300K.ace" temperature="2.585e-08" zaid="54126"/>
<ace_table alias="Xe-128.72c" awr="126.804" location="1" name="54128.72c" path="300K/Xe_128_300K.ace" temperature="2.585e-08" zaid="54128"/>
<ace_table alias="Xe-129.72c" awr="127.798" location="1" name="54129.72c" path="300K/Xe_129_300K.ace" temperature="2.585e-08" zaid="54129"/>
<ace_table alias="Xe-130.72c" awr="128.788" location="1" name="54130.72c" path="300K/Xe_130_300K.ace" temperature="2.585e-08" zaid="54130"/>
<ace_table alias="Xe-131.72c" awr="129.781" location="1" name="54131.72c" path="300K/Xe_131_300K.ace" temperature="2.585e-08" zaid="54131"/>
<ace_table alias="Xe-132.72c" awr="130.77" location="1" name="54132.72c" path="300K/Xe_132_300K.ace" temperature="2.585e-08" zaid="54132"/>
<ace_table alias="Xe-133.72c" awr="131.764" location="1" name="54133.72c" path="300K/Xe_133_300K.ace" temperature="2.585e-08" zaid="54133"/>
<ace_table alias="Xe-134.72c" awr="132.76" location="1" name="54134.72c" path="300K/Xe_134_300K.ace" temperature="2.585e-08" zaid="54134"/>
<ace_table alias="Xe-135.72c" awr="133.748" location="1" name="54135.72c" path="300K/Xe_135_300K.ace" temperature="2.585e-08" zaid="54135"/>
<ace_table alias="Xe-136.72c" awr="134.74" location="1" name="54136.72c" path="300K/Xe_136_300K.ace" temperature="2.585e-08" zaid="54136"/>
<ace_table alias="Cs-133.72c" awr="131.764" location="1" name="55133.72c" path="300K/Cs_133_300K.ace" temperature="2.585e-08" zaid="55133"/>
<ace_table alias="Cs-134.72c" awr="132.757" location="1" name="55134.72c" path="300K/Cs_134_300K.ace" temperature="2.585e-08" zaid="55134"/>
<ace_table alias="Cs-135.72c" awr="133.747" location="1" name="55135.72c" path="300K/Cs_135_300K.ace" temperature="2.585e-08" zaid="55135"/>
<ace_table alias="Cs-136.72c" awr="134.739" location="1" name="55136.72c" path="300K/Cs_136_300K.ace" temperature="2.585e-08" zaid="55136"/>
<ace_table alias="Cs-137.72c" awr="135.731" location="1" name="55137.72c" path="300K/Cs_137_300K.ace" temperature="2.585e-08" zaid="55137"/>
<ace_table alias="Ba-130.72c" awr="128.79" location="1" name="56130.72c" path="300K/Ba_130_300K.ace" temperature="2.585e-08" zaid="56130"/>
<ace_table alias="Ba-132.72c" awr="130.772" location="1" name="56132.72c" path="300K/Ba_132_300K.ace" temperature="2.585e-08" zaid="56132"/>
<ace_table alias="Ba-133.72c" awr="131.764" location="1" name="56133.72c" path="300K/Ba_133_300K.ace" temperature="2.585e-08" zaid="56133"/>
<ace_table alias="Ba-134.72c" awr="132.754" location="1" name="56134.72c" path="300K/Ba_134_300K.ace" temperature="2.585e-08" zaid="56134"/>
<ace_table alias="Ba-135.72c" awr="133.747" location="1" name="56135.72c" path="300K/Ba_135_300K.ace" temperature="2.585e-08" zaid="56135"/>
<ace_table alias="Ba-136.72c" awr="134.737" location="1" name="56136.72c" path="300K/Ba_136_300K.ace" temperature="2.585e-08" zaid="56136"/>
<ace_table alias="Ba-137.72c" awr="135.73" location="1" name="56137.72c" path="300K/Ba_137_300K.ace" temperature="2.585e-08" zaid="56137"/>
<ace_table alias="Ba-138.72c" awr="136.72" location="1" name="56138.72c" path="300K/Ba_138_300K.ace" temperature="2.585e-08" zaid="56138"/>
<ace_table alias="Ba-140.72c" awr="138.708" location="1" name="56140.72c" path="300K/Ba_140_300K.ace" temperature="2.585e-08" zaid="56140"/>
<ace_table alias="La-138.72c" awr="136.722" location="1" name="57138.72c" path="300K/La_138_300K.ace" temperature="2.585e-08" zaid="57138"/>
<ace_table alias="La-139.72c" awr="137.71" location="1" name="57139.72c" path="300K/La_139_300K.ace" temperature="2.585e-08" zaid="57139"/>
<ace_table alias="La-140.72c" awr="138.708" location="1" name="57140.72c" path="300K/La_140_300K.ace" temperature="2.585e-08" zaid="57140"/>
<ace_table alias="Ce-136.72c" awr="134.74" location="1" name="58136.72c" path="300K/Ce_136_300K.ace" temperature="2.585e-08" zaid="58136"/>
<ace_table alias="Ce-138.72c" awr="136.721" location="1" name="58138.72c" path="300K/Ce_138_300K.ace" temperature="2.585e-08" zaid="58138"/>
<ace_table alias="Ce-139.72c" awr="137.713" location="1" name="58139.72c" path="300K/Ce_139_300K.ace" temperature="2.585e-08" zaid="58139"/>
<ace_table alias="Ce-140.72c" awr="138.704" location="1" name="58140.72c" path="300K/Ce_140_300K.ace" temperature="2.585e-08" zaid="58140"/>
<ace_table alias="Ce-141.72c" awr="139.7" location="1" name="58141.72c" path="300K/Ce_141_300K.ace" temperature="2.585e-08" zaid="58141"/>
<ace_table alias="Ce-142.72c" awr="140.69" location="1" name="58142.72c" path="300K/Ce_142_300K.ace" temperature="2.585e-08" zaid="58142"/>
<ace_table alias="Ce-143.72c" awr="141.685" location="1" name="58143.72c" path="300K/Ce_143_300K.ace" temperature="2.585e-08" zaid="58143"/>
<ace_table alias="Ce-144.72c" awr="142.678" location="1" name="58144.72c" path="300K/Ce_144_300K.ace" temperature="2.585e-08" zaid="58144"/>
<ace_table alias="Pr-141.72c" awr="139.697" location="1" name="59141.72c" path="300K/Pr_141_300K.ace" temperature="2.585e-08" zaid="59141"/>
<ace_table alias="Pr-142.72c" awr="140.691" location="1" name="59142.72c" path="300K/Pr_142_300K.ace" temperature="2.585e-08" zaid="59142"/>
<ace_table alias="Pr-143.72c" awr="141.683" location="1" name="59143.72c" path="300K/Pr_143_300K.ace" temperature="2.585e-08" zaid="59143"/>
<ace_table alias="Nd-142.72c" awr="140.689" location="1" name="60142.72c" path="300K/Nd_142_300K.ace" temperature="2.585e-08" zaid="60142"/>
<ace_table alias="Nd-143.72c" awr="141.682" location="1" name="60143.72c" path="300K/Nd_143_300K.ace" temperature="2.585e-08" zaid="60143"/>
<ace_table alias="Nd-144.72c" awr="142.674" location="1" name="60144.72c" path="300K/Nd_144_300K.ace" temperature="2.585e-08" zaid="60144"/>
<ace_table alias="Nd-145.72c" awr="143.668" location="1" name="60145.72c" path="300K/Nd_145_300K.ace" temperature="2.585e-08" zaid="60145"/>
<ace_table alias="Nd-146.72c" awr="144.66" location="1" name="60146.72c" path="300K/Nd_146_300K.ace" temperature="2.585e-08" zaid="60146"/>
<ace_table alias="Nd-147.72c" awr="145.654" location="1" name="60147.72c" path="300K/Nd_147_300K.ace" temperature="2.585e-08" zaid="60147"/>
<ace_table alias="Nd-148.72c" awr="146.646" location="1" name="60148.72c" path="300K/Nd_148_300K.ace" temperature="2.585e-08" zaid="60148"/>
<ace_table alias="Nd-150.72c" awr="148.633" location="1" name="60150.72c" path="300K/Nd_150_300K.ace" temperature="2.585e-08" zaid="60150"/>
<ace_table alias="Pm-147.72c" awr="145.653" location="1" name="61147.72c" path="300K/Pm_147_300K.ace" temperature="2.585e-08" zaid="61147"/>
<ace_table alias="Pm-148.72c" awr="146.646" location="1" name="61148.72c" path="300K/Pm_148_300K.ace" temperature="2.585e-08" zaid="61148"/>
<ace_table alias="Pm-148m.72c" awr="146.65" location="1" metastable="1" name="61548.72c" path="300K/Pm_148m1_300K.ace" temperature="2.585e-08" zaid="61548"/>
<ace_table alias="Pm-149.72c" awr="147.639" location="1" name="61149.72c" path="300K/Pm_149_300K.ace" temperature="2.585e-08" zaid="61149"/>
<ace_table alias="Pm-151.72c" awr="149.625" location="1" name="61151.72c" path="300K/Pm_151_300K.ace" temperature="2.585e-08" zaid="61151"/>
<ace_table alias="Sm-144.72c" awr="142.676" location="1" name="62144.72c" path="300K/Sm_144_300K.ace" temperature="2.585e-08" zaid="62144"/>
<ace_table alias="Sm-147.72c" awr="145.653" location="1" name="62147.72c" path="300K/Sm_147_300K.ace" temperature="2.585e-08" zaid="62147"/>
<ace_table alias="Sm-148.72c" awr="146.644" location="1" name="62148.72c" path="300K/Sm_148_300K.ace" temperature="2.585e-08" zaid="62148"/>
<ace_table alias="Sm-149.72c" awr="147.638" location="1" name="62149.72c" path="300K/Sm_149_300K.ace" temperature="2.585e-08" zaid="62149"/>
<ace_table alias="Sm-150.72c" awr="148.629" location="1" name="62150.72c" path="300K/Sm_150_300K.ace" temperature="2.585e-08" zaid="62150"/>
<ace_table alias="Sm-151.72c" awr="149.623" location="1" name="62151.72c" path="300K/Sm_151_300K.ace" temperature="2.585e-08" zaid="62151"/>
<ace_table alias="Sm-152.72c" awr="150.615" location="1" name="62152.72c" path="300K/Sm_152_300K.ace" temperature="2.585e-08" zaid="62152"/>
<ace_table alias="Sm-153.72c" awr="151.608" location="1" name="62153.72c" path="300K/Sm_153_300K.ace" temperature="2.585e-08" zaid="62153"/>
<ace_table alias="Sm-154.72c" awr="152.6" location="1" name="62154.72c" path="300K/Sm_154_300K.ace" temperature="2.585e-08" zaid="62154"/>
<ace_table alias="Eu-151.72c" awr="149.62" location="1" name="63151.72c" path="300K/Eu_151_300K.ace" temperature="2.585e-08" zaid="63151"/>
<ace_table alias="Eu-152.72c" awr="150.617" location="1" name="63152.72c" path="300K/Eu_152_300K.ace" temperature="2.585e-08" zaid="63152"/>
<ace_table alias="Eu-153.72c" awr="151.608" location="1" name="63153.72c" path="300K/Eu_153_300K.ace" temperature="2.585e-08" zaid="63153"/>
<ace_table alias="Eu-154.72c" awr="152.6" location="1" name="63154.72c" path="300K/Eu_154_300K.ace" temperature="2.585e-08" zaid="63154"/>
<ace_table alias="Eu-155.72c" awr="153.59" location="1" name="63155.72c" path="300K/Eu_155_300K.ace" temperature="2.585e-08" zaid="63155"/>
<ace_table alias="Eu-156.72c" awr="154.586" location="1" name="63156.72c" path="300K/Eu_156_300K.ace" temperature="2.585e-08" zaid="63156"/>
<ace_table alias="Eu-157.72c" awr="155.577" location="1" name="63157.72c" path="300K/Eu_157_300K.ace" temperature="2.585e-08" zaid="63157"/>
<ace_table alias="Gd-152.72c" awr="150.615" location="1" name="64152.72c" path="300K/Gd_152_300K.ace" temperature="2.585e-08" zaid="64152"/>
<ace_table alias="Gd-153.72c" awr="151.608" location="1" name="64153.72c" path="300K/Gd_153_300K.ace" temperature="2.585e-08" zaid="64153"/>
<ace_table alias="Gd-154.72c" awr="152.599" location="1" name="64154.72c" path="300K/Gd_154_300K.ace" temperature="2.585e-08" zaid="64154"/>
<ace_table alias="Gd-155.72c" awr="153.592" location="1" name="64155.72c" path="300K/Gd_155_300K.ace" temperature="2.585e-08" zaid="64155"/>
<ace_table alias="Gd-156.72c" awr="154.583" location="1" name="64156.72c" path="300K/Gd_156_300K.ace" temperature="2.585e-08" zaid="64156"/>
<ace_table alias="Gd-157.72c" awr="155.576" location="1" name="64157.72c" path="300K/Gd_157_300K.ace" temperature="2.585e-08" zaid="64157"/>
<ace_table alias="Gd-158.72c" awr="156.567" location="1" name="64158.72c" path="300K/Gd_158_300K.ace" temperature="2.585e-08" zaid="64158"/>
<ace_table alias="Gd-160.72c" awr="158.553" location="1" name="64160.72c" path="300K/Gd_160_300K.ace" temperature="2.585e-08" zaid="64160"/>
<ace_table alias="Tb-159.72c" awr="157.56" location="1" name="65159.72c" path="300K/Tb_159_300K.ace" temperature="2.585e-08" zaid="65159"/>
<ace_table alias="Tb-160.72c" awr="158.553" location="1" name="65160.72c" path="300K/Tb_160_300K.ace" temperature="2.585e-08" zaid="65160"/>
<ace_table alias="Dy-156.72c" awr="154.585" location="1" name="66156.72c" path="300K/Dy_156_300K.ace" temperature="2.585e-08" zaid="66156"/>
<ace_table alias="Dy-158.72c" awr="156.568" location="1" name="66158.72c" path="300K/Dy_158_300K.ace" temperature="2.585e-08" zaid="66158"/>
<ace_table alias="Dy-160.72c" awr="158.551" location="1" name="66160.72c" path="300K/Dy_160_300K.ace" temperature="2.585e-08" zaid="66160"/>
<ace_table alias="Dy-161.72c" awr="159.544" location="1" name="66161.72c" path="300K/Dy_161_300K.ace" temperature="2.585e-08" zaid="66161"/>
<ace_table alias="Dy-162.72c" awr="160.536" location="1" name="66162.72c" path="300K/Dy_162_300K.ace" temperature="2.585e-08" zaid="66162"/>
<ace_table alias="Dy-163.72c" awr="161.529" location="1" name="66163.72c" path="300K/Dy_163_300K.ace" temperature="2.585e-08" zaid="66163"/>
<ace_table alias="Dy-164.72c" awr="162.521" location="1" name="66164.72c" path="300K/Dy_164_300K.ace" temperature="2.585e-08" zaid="66164"/>
<ace_table alias="Ho-165.72c" awr="163.513" location="1" name="67165.72c" path="300K/Ho_165_300K.ace" temperature="2.585e-08" zaid="67165"/>
<ace_table alias="Ho-166m.72c" awr="164.507" location="1" metastable="1" name="67566.72c" path="300K/Ho_166m1_300K.ace" temperature="2.585e-08" zaid="67566"/>
<ace_table alias="Er-162.72c" awr="160.538" location="1" name="68162.72c" path="300K/Er_162_300K.ace" temperature="2.585e-08" zaid="68162"/>
<ace_table alias="Er-164.72c" awr="162.521" location="1" name="68164.72c" path="300K/Er_164_300K.ace" temperature="2.585e-08" zaid="68164"/>
<ace_table alias="Er-166.72c" awr="164.505" location="1" name="68166.72c" path="300K/Er_166_300K.ace" temperature="2.585e-08" zaid="68166"/>
<ace_table alias="Er-167.72c" awr="165.498" location="1" name="68167.72c" path="300K/Er_167_300K.ace" temperature="2.585e-08" zaid="68167"/>
<ace_table alias="Er-168.72c" awr="166.487" location="1" name="68168.72c" path="300K/Er_168_300K.ace" temperature="2.585e-08" zaid="68168"/>
<ace_table alias="Er-170.72c" awr="168.476" location="1" name="68170.72c" path="300K/Er_170_300K.ace" temperature="2.585e-08" zaid="68170"/>
<ace_table alias="Tm-168.72c" awr="166.492" location="1" name="69168.72c" path="300K/Tm_168_300K.ace" temperature="2.585e-08" zaid="69168"/>
<ace_table alias="Tm-169.72c" awr="167.483" location="1" name="69169.72c" path="300K/Tm_169_300K.ace" temperature="2.585e-08" zaid="69169"/>
<ace_table alias="Tm-170.72c" awr="168.476" location="1" name="69170.72c" path="300K/Tm_170_300K.ace" temperature="2.585e-08" zaid="69170"/>
<ace_table alias="Lu-175.72c" awr="173.438" location="1" name="71175.72c" path="300K/Lu_175_300K.ace" temperature="2.585e-08" zaid="71175"/>
<ace_table alias="Lu-176.72c" awr="174.43" location="1" name="71176.72c" path="300K/Lu_176_300K.ace" temperature="2.585e-08" zaid="71176"/>
<ace_table alias="Hf-174.72c" awr="172.446" location="1" name="72174.72c" path="300K/Hf_174_300K.ace" temperature="2.585e-08" zaid="72174"/>
<ace_table alias="Hf-176.72c" awr="174.429" location="1" name="72176.72c" path="300K/Hf_176_300K.ace" temperature="2.585e-08" zaid="72176"/>
<ace_table alias="Hf-177.72c" awr="175.42" location="1" name="72177.72c" path="300K/Hf_177_300K.ace" temperature="2.585e-08" zaid="72177"/>
<ace_table alias="Hf-178.72c" awr="176.411" location="1" name="72178.72c" path="300K/Hf_178_300K.ace" temperature="2.585e-08" zaid="72178"/>
<ace_table alias="Hf-179.72c" awr="177.413" location="1" name="72179.72c" path="300K/Hf_179_300K.ace" temperature="2.585e-08" zaid="72179"/>
<ace_table alias="Hf-180.72c" awr="178.404" location="1" name="72180.72c" path="300K/Hf_180_300K.ace" temperature="2.585e-08" zaid="72180"/>
<ace_table alias="Ta-180.72c" awr="178.4016" location="1" name="73180.72c" path="300K/Ta_180_300K.ace" temperature="2.585e-08" zaid="73180"/>
<ace_table alias="Ta-181.72c" awr="179.3936" location="1" name="73181.72c" path="300K/Ta_181_300K.ace" temperature="2.585e-08" zaid="73181"/>
<ace_table alias="Ta-182.72c" awr="180.387" location="1" name="73182.72c" path="300K/Ta_182_300K.ace" temperature="2.585e-08" zaid="73182"/>
<ace_table alias="W-180.72c" awr="178.401" location="1" name="74180.72c" path="300K/W_180_300K.ace" temperature="2.585e-08" zaid="74180"/>
<ace_table alias="W-182.72c" awr="180.385" location="1" name="74182.72c" path="300K/W_182_300K.ace" temperature="2.585e-08" zaid="74182"/>
<ace_table alias="W-183.72c" awr="181.379" location="1" name="74183.72c" path="300K/W_183_300K.ace" temperature="2.585e-08" zaid="74183"/>
<ace_table alias="W-184.72c" awr="182.371" location="1" name="74184.72c" path="300K/W_184_300K.ace" temperature="2.585e-08" zaid="74184"/>
<ace_table alias="W-186.72c" awr="184.357" location="1" name="74186.72c" path="300K/W_186_300K.ace" temperature="2.585e-08" zaid="74186"/>
<ace_table alias="Re-185.72c" awr="183.3641" location="1" name="75185.72c" path="300K/Re_185_300K.ace" temperature="2.585e-08" zaid="75185"/>
<ace_table alias="Re-187.72c" awr="185.3497" location="1" name="75187.72c" path="300K/Re_187_300K.ace" temperature="2.585e-08" zaid="75187"/>
<ace_table alias="Ir-191.72c" awr="189.32" location="1" name="77191.72c" path="300K/Ir_191_300K.ace" temperature="2.585e-08" zaid="77191"/>
<ace_table alias="Ir-193.72c" awr="191.305" location="1" name="77193.72c" path="300K/Ir_193_300K.ace" temperature="2.585e-08" zaid="77193"/>
<ace_table alias="Au-197.72c" awr="195.274" location="1" name="79197.72c" path="300K/Au_197_300K.ace" temperature="2.585e-08" zaid="79197"/>
<ace_table alias="Hg-196.72c" awr="194.282" location="1" name="80196.72c" path="300K/Hg_196_300K.ace" temperature="2.585e-08" zaid="80196"/>
<ace_table alias="Hg-198.72c" awr="196.266" location="1" name="80198.72c" path="300K/Hg_198_300K.ace" temperature="2.585e-08" zaid="80198"/>
<ace_table alias="Hg-199.72c" awr="197.259" location="1" name="80199.72c" path="300K/Hg_199_300K.ace" temperature="2.585e-08" zaid="80199"/>
<ace_table alias="Hg-200.72c" awr="198.25" location="1" name="80200.72c" path="300K/Hg_200_300K.ace" temperature="2.585e-08" zaid="80200"/>
<ace_table alias="Hg-201.72c" awr="199.244" location="1" name="80201.72c" path="300K/Hg_201_300K.ace" temperature="2.585e-08" zaid="80201"/>
<ace_table alias="Hg-202.72c" awr="200.236" location="1" name="80202.72c" path="300K/Hg_202_300K.ace" temperature="2.585e-08" zaid="80202"/>
<ace_table alias="Hg-204.72c" awr="202.221" location="1" name="80204.72c" path="300K/Hg_204_300K.ace" temperature="2.585e-08" zaid="80204"/>
<ace_table alias="Tl-203.72c" awr="201.229" location="1" name="81203.72c" path="300K/Tl_203_300K.ace" temperature="2.585e-08" zaid="81203"/>
<ace_table alias="Tl-205.72c" awr="203.214" location="1" name="81205.72c" path="300K/Tl_205_300K.ace" temperature="2.585e-08" zaid="81205"/>
<ace_table alias="Pb-204.72c" awr="202.2208" location="1" name="82204.72c" path="300K/Pb_204_300K.ace" temperature="2.585e-08" zaid="82204"/>
<ace_table alias="Pb-206.72c" awr="204.205" location="1" name="82206.72c" path="300K/Pb_206_300K.ace" temperature="2.585e-08" zaid="82206"/>
<ace_table alias="Pb-207.72c" awr="205.1979" location="1" name="82207.72c" path="300K/Pb_207_300K.ace" temperature="2.585e-08" zaid="82207"/>
<ace_table alias="Pb-208.72c" awr="206.19" location="1" name="82208.72c" path="300K/Pb_208_300K.ace" temperature="2.585e-08" zaid="82208"/>
<ace_table alias="Bi-209.72c" awr="207.185" location="1" name="83209.72c" path="300K/Bi_209_300K.ace" temperature="2.585e-08" zaid="83209"/>
<ace_table alias="Ra-223.72c" awr="221.103" location="1" name="88223.72c" path="300K/Ra_223_300K.ace" temperature="2.585e-08" zaid="88223"/>
<ace_table alias="Ra-224.72c" awr="222.096" location="1" name="88224.72c" path="300K/Ra_224_300K.ace" temperature="2.585e-08" zaid="88224"/>
<ace_table alias="Ra-225.72c" awr="223.091" location="1" name="88225.72c" path="300K/Ra_225_300K.ace" temperature="2.585e-08" zaid="88225"/>
<ace_table alias="Ra-226.72c" awr="224.084" location="1" name="88226.72c" path="300K/Ra_226_300K.ace" temperature="2.585e-08" zaid="88226"/>
<ace_table alias="Ac-225.72c" awr="223.09" location="1" name="89225.72c" path="300K/Ac_225_300K.ace" temperature="2.585e-08" zaid="89225"/>
<ace_table alias="Ac-226.72c" awr="224.084" location="1" name="89226.72c" path="300K/Ac_226_300K.ace" temperature="2.585e-08" zaid="89226"/>
<ace_table alias="Ac-227.72c" awr="225.077" location="1" name="89227.72c" path="300K/Ac_227_300K.ace" temperature="2.585e-08" zaid="89227"/>
<ace_table alias="Th-227.72c" awr="225.077" location="1" name="90227.72c" path="300K/Th_227_300K.ace" temperature="2.585e-08" zaid="90227"/>
<ace_table alias="Th-228.72c" awr="226.07" location="1" name="90228.72c" path="300K/Th_228_300K.ace" temperature="2.585e-08" zaid="90228"/>
<ace_table alias="Th-229.72c" awr="227.064" location="1" name="90229.72c" path="300K/Th_229_300K.ace" temperature="2.585e-08" zaid="90229"/>
<ace_table alias="Th-230.72c" awr="228.057" location="1" name="90230.72c" path="300K/Th_230_300K.ace" temperature="2.585e-08" zaid="90230"/>
<ace_table alias="Th-231.72c" awr="229.052" location="1" name="90231.72c" path="300K/Th_231_300K.ace" temperature="2.585e-08" zaid="90231"/>
<ace_table alias="Th-232.72c" awr="230.045" location="1" name="90232.72c" path="300K/Th_232_300K.ace" temperature="2.585e-08" zaid="90232"/>
<ace_table alias="Th-233.72c" awr="231.04" location="1" name="90233.72c" path="300K/Th_233_300K.ace" temperature="2.585e-08" zaid="90233"/>
<ace_table alias="Th-234.72c" awr="232.033" location="1" name="90234.72c" path="300K/Th_234_300K.ace" temperature="2.585e-08" zaid="90234"/>
<ace_table alias="Pa-229.72c" awr="227.065" location="1" name="91229.72c" path="300K/Pa_229_300K.ace" temperature="2.585e-08" zaid="91229"/>
<ace_table alias="Pa-230.72c" awr="228.058" location="1" name="91230.72c" path="300K/Pa_230_300K.ace" temperature="2.585e-08" zaid="91230"/>
<ace_table alias="Pa-231.72c" awr="229.051" location="1" name="91231.72c" path="300K/Pa_231_300K.ace" temperature="2.585e-08" zaid="91231"/>
<ace_table alias="Pa-232.72c" awr="230.045" location="1" name="91232.72c" path="300K/Pa_232_300K.ace" temperature="2.585e-08" zaid="91232"/>
<ace_table alias="Pa-233.72c" awr="231.038" location="1" name="91233.72c" path="300K/Pa_233_300K.ace" temperature="2.585e-08" zaid="91233"/>
<ace_table alias="U-230.72c" awr="228.058" location="1" name="92230.72c" path="300K/U_230_300K.ace" temperature="2.585e-08" zaid="92230"/>
<ace_table alias="U-231.72c" awr="229.052" location="1" name="92231.72c" path="300K/U_231_300K.ace" temperature="2.585e-08" zaid="92231"/>
<ace_table alias="U-232.72c" awr="230.044" location="1" name="92232.72c" path="300K/U_232_300K.ace" temperature="2.585e-08" zaid="92232"/>
<ace_table alias="U-233.72c" awr="231.0377" location="1" name="92233.72c" path="300K/U_233_300K.ace" temperature="2.585e-08" zaid="92233"/>
<ace_table alias="U-234.72c" awr="232.0304" location="1" name="92234.72c" path="300K/U_234_300K.ace" temperature="2.585e-08" zaid="92234"/>
<ace_table alias="U-235.72c" awr="233.0248" location="1" name="92235.72c" path="300K/U_235_300K.ace" temperature="2.585e-08" zaid="92235"/>
<ace_table alias="U-236.72c" awr="234.0178" location="1" name="92236.72c" path="300K/U_236_300K.ace" temperature="2.585e-08" zaid="92236"/>
<ace_table alias="U-237.72c" awr="235.0124" location="1" name="92237.72c" path="300K/U_237_300K.ace" temperature="2.585e-08" zaid="92237"/>
<ace_table alias="U-238.72c" awr="236.0058" location="1" name="92238.72c" path="300K/U_238_300K.ace" temperature="2.585e-08" zaid="92238"/>
<ace_table alias="U-239.72c" awr="237.0007" location="1" name="92239.72c" path="300K/U_239_300K.ace" temperature="2.585e-08" zaid="92239"/>
<ace_table alias="U-240.72c" awr="237.9944" location="1" name="92240.72c" path="300K/U_240_300K.ace" temperature="2.585e-08" zaid="92240"/>
<ace_table alias="U-241.72c" awr="238.9895" location="1" name="92241.72c" path="300K/U_241_300K.ace" temperature="2.585e-08" zaid="92241"/>
<ace_table alias="Np-234.72c" awr="232.032" location="1" name="93234.72c" path="300K/Np_234_300K.ace" temperature="2.585e-08" zaid="93234"/>
<ace_table alias="Np-235.72c" awr="233.025" location="1" name="93235.72c" path="300K/Np_235_300K.ace" temperature="2.585e-08" zaid="93235"/>
<ace_table alias="Np-236.72c" awr="234.019" location="1" name="93236.72c" path="300K/Np_236_300K.ace" temperature="2.585e-08" zaid="93236"/>
<ace_table alias="Np-237.72c" awr="235.0118" location="1" name="93237.72c" path="300K/Np_237_300K.ace" temperature="2.585e-08" zaid="93237"/>
<ace_table alias="Np-238.72c" awr="236.006" location="1" name="93238.72c" path="300K/Np_238_300K.ace" temperature="2.585e-08" zaid="93238"/>
<ace_table alias="Np-239.72c" awr="236.999" location="1" name="93239.72c" path="300K/Np_239_300K.ace" temperature="2.585e-08" zaid="93239"/>
<ace_table alias="Pu-236.72c" awr="234.018" location="1" name="94236.72c" path="300K/Pu_236_300K.ace" temperature="2.585e-08" zaid="94236"/>
<ace_table alias="Pu-237.72c" awr="235.012" location="1" name="94237.72c" path="300K/Pu_237_300K.ace" temperature="2.585e-08" zaid="94237"/>
<ace_table alias="Pu-238.72c" awr="236.0046" location="1" name="94238.72c" path="300K/Pu_238_300K.ace" temperature="2.585e-08" zaid="94238"/>
<ace_table alias="Pu-239.72c" awr="236.9986" location="1" name="94239.72c" path="300K/Pu_239_300K.ace" temperature="2.585e-08" zaid="94239"/>
<ace_table alias="Pu-240.72c" awr="237.9916" location="1" name="94240.72c" path="300K/Pu_240_300K.ace" temperature="2.585e-08" zaid="94240"/>
<ace_table alias="Pu-241.72c" awr="238.978" location="1" name="94241.72c" path="300K/Pu_241_300K.ace" temperature="2.585e-08" zaid="94241"/>
<ace_table alias="Pu-242.72c" awr="239.979" location="1" name="94242.72c" path="300K/Pu_242_300K.ace" temperature="2.585e-08" zaid="94242"/>
<ace_table alias="Pu-243.72c" awr="240.974" location="1" name="94243.72c" path="300K/Pu_243_300K.ace" temperature="2.585e-08" zaid="94243"/>
<ace_table alias="Pu-244.72c" awr="241.967" location="1" name="94244.72c" path="300K/Pu_244_300K.ace" temperature="2.585e-08" zaid="94244"/>
<ace_table alias="Pu-246.72c" awr="243.956" location="1" name="94246.72c" path="300K/Pu_246_300K.ace" temperature="2.585e-08" zaid="94246"/>
<ace_table alias="Am-240.72c" awr="237.993" location="1" name="95240.72c" path="300K/Am_240_300K.ace" temperature="2.585e-08" zaid="95240"/>
<ace_table alias="Am-241.72c" awr="238.986" location="1" name="95241.72c" path="300K/Am_241_300K.ace" temperature="2.585e-08" zaid="95241"/>
<ace_table alias="Am-242.72c" awr="239.9801" location="1" name="95242.72c" path="300K/Am_242_300K.ace" temperature="2.585e-08" zaid="95242"/>
<ace_table alias="Am-242m.72c" awr="239.9801" location="1" metastable="1" name="95642.72c" path="300K/Am_242m1_300K.ace" temperature="2.585e-08" zaid="95642"/>
<ace_table alias="Am-243.72c" awr="240.9734" location="1" name="95243.72c" path="300K/Am_243_300K.ace" temperature="2.585e-08" zaid="95243"/>
<ace_table alias="Am-244.72c" awr="241.968" location="1" name="95244.72c" path="300K/Am_244_300K.ace" temperature="2.585e-08" zaid="95244"/>
<ace_table alias="Am-244m.72c" awr="241.968" location="1" metastable="1" name="95644.72c" path="300K/Am_244m1_300K.ace" temperature="2.585e-08" zaid="95644"/>
<ace_table alias="Cm-240.72c" awr="237.993" location="1" name="96240.72c" path="300K/Cm_240_300K.ace" temperature="2.585e-08" zaid="96240"/>
<ace_table alias="Cm-241.72c" awr="238.987" location="1" name="96241.72c" path="300K/Cm_241_300K.ace" temperature="2.585e-08" zaid="96241"/>
<ace_table alias="Cm-242.72c" awr="239.979" location="1" name="96242.72c" path="300K/Cm_242_300K.ace" temperature="2.585e-08" zaid="96242"/>
<ace_table alias="Cm-243.72c" awr="240.973" location="1" name="96243.72c" path="300K/Cm_243_300K.ace" temperature="2.585e-08" zaid="96243"/>
<ace_table alias="Cm-244.72c" awr="241.966" location="1" name="96244.72c" path="300K/Cm_244_300K.ace" temperature="2.585e-08" zaid="96244"/>
<ace_table alias="Cm-245.72c" awr="242.96" location="1" name="96245.72c" path="300K/Cm_245_300K.ace" temperature="2.585e-08" zaid="96245"/>
<ace_table alias="Cm-246.72c" awr="243.953" location="1" name="96246.72c" path="300K/Cm_246_300K.ace" temperature="2.585e-08" zaid="96246"/>
<ace_table alias="Cm-247.72c" awr="244.948" location="1" name="96247.72c" path="300K/Cm_247_300K.ace" temperature="2.585e-08" zaid="96247"/>
<ace_table alias="Cm-248.72c" awr="245.941" location="1" name="96248.72c" path="300K/Cm_248_300K.ace" temperature="2.585e-08" zaid="96248"/>
<ace_table alias="Cm-249.72c" awr="246.936" location="1" name="96249.72c" path="300K/Cm_249_300K.ace" temperature="2.585e-08" zaid="96249"/>
<ace_table alias="Cm-250.72c" awr="247.93" location="1" name="96250.72c" path="300K/Cm_250_300K.ace" temperature="2.585e-08" zaid="96250"/>
<ace_table alias="Bk-245.72c" awr="242.961" location="1" name="97245.72c" path="300K/Bk_245_300K.ace" temperature="2.585e-08" zaid="97245"/>
<ace_table alias="Bk-246.72c" awr="243.955" location="1" name="97246.72c" path="300K/Bk_246_300K.ace" temperature="2.585e-08" zaid="97246"/>
<ace_table alias="Bk-247.72c" awr="244.948" location="1" name="97247.72c" path="300K/Bk_247_300K.ace" temperature="2.585e-08" zaid="97247"/>
<ace_table alias="Bk-248.72c" awr="245.942" location="1" name="97248.72c" path="300K/Bk_248_300K.ace" temperature="2.585e-08" zaid="97248"/>
<ace_table alias="Bk-249.72c" awr="246.935" location="1" name="97249.72c" path="300K/Bk_249_300K.ace" temperature="2.585e-08" zaid="97249"/>
<ace_table alias="Bk-250.72c" awr="247.93" location="1" name="97250.72c" path="300K/Bk_250_300K.ace" temperature="2.585e-08" zaid="97250"/>
<ace_table alias="Cf-246.72c" awr="243.955" location="1" name="98246.72c" path="300K/Cf_246_300K.ace" temperature="2.585e-08" zaid="98246"/>
<ace_table alias="Cf-248.72c" awr="245.941" location="1" name="98248.72c" path="300K/Cf_248_300K.ace" temperature="2.585e-08" zaid="98248"/>
<ace_table alias="Cf-249.72c" awr="246.935" location="1" name="98249.72c" path="300K/Cf_249_300K.ace" temperature="2.585e-08" zaid="98249"/>
<ace_table alias="Cf-250.72c" awr="247.928" location="1" name="98250.72c" path="300K/Cf_250_300K.ace" temperature="2.585e-08" zaid="98250"/>
<ace_table alias="Cf-251.72c" awr="248.923" location="1" name="98251.72c" path="300K/Cf_251_300K.ace" temperature="2.585e-08" zaid="98251"/>
<ace_table alias="Cf-252.72c" awr="249.916" location="1" name="98252.72c" path="300K/Cf_252_300K.ace" temperature="2.585e-08" zaid="98252"/>
<ace_table alias="Cf-253.72c" awr="250.911" location="1" name="98253.72c" path="300K/Cf_253_300K.ace" temperature="2.585e-08" zaid="98253"/>
<ace_table alias="Cf-254.72c" awr="251.905" location="1" name="98254.72c" path="300K/Cf_254_300K.ace" temperature="2.585e-08" zaid="98254"/>
<ace_table alias="Es-251.72c" awr="248.923" location="1" name="99251.72c" path="300K/Es_251_300K.ace" temperature="2.585e-08" zaid="99251"/>
<ace_table alias="Es-252.72c" awr="249.917" location="1" name="99252.72c" path="300K/Es_252_300K.ace" temperature="2.585e-08" zaid="99252"/>
<ace_table alias="Es-253.72c" awr="250.911" location="1" name="99253.72c" path="300K/Es_253_300K.ace" temperature="2.585e-08" zaid="99253"/>
<ace_table alias="Es-254.72c" awr="251.905" location="1" name="99254.72c" path="300K/Es_254_300K.ace" temperature="2.585e-08" zaid="99254"/>
<ace_table alias="Es-254m.72c" awr="251.905" location="1" metastable="1" name="99654.72c" path="300K/Es_254m1_300K.ace" temperature="2.585e-08" zaid="99654"/>
<ace_table alias="Es-255.72c" awr="252.899" location="1" name="99255.72c" path="300K/Es_255_300K.ace" temperature="2.585e-08" zaid="99255"/>
<ace_table alias="Fm-255.72c" awr="252.899" location="1" name="100255.72c" path="300K/Fm_255_300K.ace" temperature="2.585e-08" zaid="100255"/>
<ace_table awr="26.74975" location="1" name="Al.71t" path="tsl/al.acer" temperature="2.53e-08" zaid="0"/>
<ace_table awr="8.93478" location="1" name="BeBeO.71t" path="tsl/bebeo.acer" temperature="2.53e-08" zaid="0"/>
<ace_table awr="8.93478" location="1" name="Be.71t" path="tsl/be.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="0.999167" location="1" name="Benz.71t" path="tsl/benzine.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="1.9968" location="1" name="DD2O.71t" path="tsl/dd2o.acer" temperature="2.53e-08" zaid="0"/>
<ace_table awr="55.454" location="1" name="Fe.71t" path="tsl/fe.acer" temperature="2.53e-08" zaid="0"/>
<ace_table awr="11.898" location="1" name="Graph.71t" path="tsl/graphite.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="0.999167" location="1" name="HCH2.71t" path="tsl/hch2.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="0.999167" location="1" name="HH2O.71t" path="tsl/hh2o.acer" temperature="2.53e-08" zaid="0"/>
<ace_table awr="0.999167" location="1" name="HZrH.71t" path="tsl/hzrh.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="0.999167" location="1" name="lCH4.71t" path="tsl/lch4.acer" temperature="8.617e-09" zaid="0"/>
<ace_table awr="15.85751" location="1" name="OBeO.71t" path="tsl/obeo.acer" temperature="2.53e-08" zaid="0"/>
<ace_table awr="1.9968" location="1" name="orthoD.71t" path="tsl/orthod.acer" temperature="1.637e-09" zaid="0"/>
<ace_table awr="0.999167" location="1" name="orthoH.71t" path="tsl/orthoh.acer" temperature="1.723e-09" zaid="0"/>
<ace_table awr="15.85751" location="1" name="OUO2.71t" path="tsl/ouo2.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="1.9968" location="1" name="paraD.71t" path="tsl/parad.acer" temperature="1.637e-09" zaid="0"/>
<ace_table awr="0.999167" location="1" name="paraH.71t" path="tsl/parah.acer" temperature="1.723e-09" zaid="0"/>
<ace_table awr="0.999167" location="1" name="sCH4.71t" path="tsl/sch4.acer" temperature="1.896e-09" zaid="0"/>
<ace_table awr="236.0058" location="1" name="UUO2.71t" path="tsl/uuo2.acer" temperature="2.551e-08" zaid="0"/>
<ace_table awr="89.1324" location="1" name="ZrZrH.71t" path="tsl/zrzrh.acer" temperature="2.551e-08" zaid="0"/>
</cross_sections>

File diff suppressed because it is too large Load diff

View file

@ -20,10 +20,6 @@ try:
except ImportError:
from urllib2 import urlopen
cwd = os.getcwd()
sys.path.insert(0, os.path.join(cwd, '..'))
from openmc.data.ace import ascii_to_binary
baseUrl = 'http://www.nndc.bnl.gov/endf/b7.1/aceFiles/'
files = ['ENDF-B-VII.1-neutron-293.6K.tar.gz',
'ENDF-B-VII.1-tsl.tar.gz']
@ -114,12 +110,6 @@ text = text.replace('6012', '6000', 1)
with open(graphite, 'w') as fh:
fh.write(text)
# ==============================================================================
# COPY CROSS_SECTIONS.XML
print('Copying cross_sections_nndc.xml...')
shutil.copyfile('cross_sections_nndc.xml', 'nndc/cross_sections.xml')
# ==============================================================================
# PROMPT USER TO DELETE .TAR.GZ FILES
@ -140,44 +130,26 @@ if not response or response.lower().startswith('y'):
os.remove(f)
# ==============================================================================
# PROMPT USER TO CONVERT ASCII TO BINARY
# PROMPT USER TO GENERATE HDF5 LIBRARY
# Ask user to convert
if not args.batch:
if sys.version_info[0] < 3:
response = raw_input('Convert ACE files to binary? ([y]/n) ')
response = raw_input('Generate HDF5 library? ([y]/n) ')
else:
response = input('Convert ACE files to binary? ([y]/n) ')
response = input('Generate HDF5 library? ([y]/n) ')
else:
response = 'y'
# Convert files if requested
if not response or response.lower().startswith('y'):
# get a list of all ACE files
ace_files = sorted(glob.glob(os.path.join('nndc', '**', '*.ace*')))
# get a list of directories
ace_dirs = glob.glob(os.path.join('nndc', '*K'))
ace_dirs += glob.glob(os.path.join('nndc', 'tsl'))
# Ensure 'import openmc.data' works in the openmc-ace-to-xml script
cwd = os.getcwd()
env = os.environ.copy()
env['PYTHONPATH'] = os.path.join(cwd, '..')
# loop around ace directories
for d in ace_dirs:
print('Converting {0}...'.format(d))
# get a list of files to convert
ace_files = glob.glob(os.path.join(d, '*.ace*'))
# convert files
for f in ace_files:
print(' Converting {0}...'.format(os.path.split(f)[1]))
ascii_to_binary(f, f)
# Change cross_sections.xml file
xs_file = os.path.join('nndc', 'cross_sections.xml')
asc_str = "<filetype>ascii</filetype>"
bin_str = "<filetype> binary </filetype>\n "
bin_str += "<record_length> 4096 </record_length>\n "
bin_str += "<entries> 512 </entries>"
with open(xs_file) as fh:
text = fh.read()
text = text.replace(asc_str, bin_str)
with open(xs_file, 'w') as fh:
fh.write(text)
subprocess.call(['../scripts/openmc-ace-to-hdf5', '-d', 'nndc_hdf5']
+ ace_files, env=env)

View file

@ -5,9 +5,9 @@ The OpenMC Monte Carlo Code
OpenMC is a Monte Carlo particle transport simulation code focused on neutron
criticality calculations. It is capable of simulating 3D models based on
constructive solid geometry with second-order surfaces. OpenMC supports either
continuous-energy or multi-group transport. The continuous-energy
particle interaction data is based on ACE format cross sections, also used
in the MCNP and Serpent Monte Carlo codes.
continuous-energy or multi-group transport. The continuous-energy particle
interaction data is based on a native HDF5 format that can be generated from ACE
files used by the MCNP and Serpent Monte Carlo codes.
OpenMC was originally developed by members of the `Computational Reactor Physics
Group`_ at the `Massachusetts Institute of Technology`_ starting

View file

@ -279,9 +279,9 @@ idiosyncrasies in treating fission. In an eigenvalue calculation, secondary
neutrons from fission are only "banked" for use in the next generation rather
than being tracked as secondary neutrons from elastic and inelastic scattering
would be. On top of this, fission is sometimes broken into first-chance fission,
second-chance fission, etc. An ACE table either lists the partial fission
reactions with secondary energy distributions for each one, or a total fission
reaction with a single secondary energy distribution.
second-chance fission, etc. The nuclear data file either lists the partial
fission reactions with secondary energy distributions for each one, or a total
fission reaction with a single secondary energy distribution.
When a fission reaction is sampled in OpenMC (either total fission or, if data
exists, first- or second-chance fission), the following algorithm is used to
@ -290,7 +290,7 @@ number of prompt and delayed neutrons must be determined to decide whether the
secondary neutrons will be prompt or delayed. This is important because delayed
neutrons have a markedly different spectrum from prompt neutrons, one that has a
lower average energy of emission. The total number of neutrons emitted
:math:`\nu_t` is given as a function of incident energy in the ACE format. Two
:math:`\nu_t` is given as a function of incident energy in the ENDF format. Two
representations exist for :math:`\nu_t`. The first is a polynomial of order
:math:`N` with coefficients :math:`c_0,c_1,\dots,c_N`. If :math:`\nu_t` has this
format, we can evaluate it at incoming energy :math:`E` by using the equation
@ -347,26 +347,52 @@ provided as group-wise data instead of in a continuous-energy format. In this
case, the outgoing energy of the fission neutrons are represented as histograms
by way of either the nu-fission matrix or chi vector.
-----------------------------------------
Secondary Angles and Energy Distributions
-----------------------------------------
------------------------------------
Secondary Angle-Energy Distributions
------------------------------------
Note that this section is specific to continuous-energy mode since the
multi-group scattering process has already been described including the
secondary energy and angle sampling.
For any reactions with secondary neutrons, it is necessary to sample secondary
angle and energy distributions. This includes elastic and inelastic scattering,
fission, and :math:`(n,xn)` reactions. In some cases, the angle and energy
distributions may be specified separately, and in other cases, they may be
specified as a correlated angle-energy distribution. In the following sections,
we will outline the methods used to sample secondary distributions as well as
how they are used to modify the state of a particle.
For a reaction with secondary products, it is necessary to determine the
outgoing angle and energy of the products. For any reaction other than elastic
and level inelastic scattering, the outgoing energy must be determined based on
tabulated or parameterized data. The `ENDF-6 Format`_ specifies a variety of
ways that the secondary energy distribution can be represented. ENDF File 5
contains uncorrelated energy distribution whereas ENDF File 6 contains
correlated energy-angle distributions. The ACE format specifies its own
representations based loosely on the formats given in ENDF-6. OpenMC's HDF5
nuclear data files use a combination of ENDF and ACE distributions; in this
section, we will describe how the outgoing angle and energy of secondary
particles are sampled.
One of the subtleties in the nuclear data format is the fact that a single
reaction product can have multiple angle-energy distributions. This is mainly
useful for reactions with multiple products of the same type in the exit channel
such as :math:`(n,2n)` or :math:`(n,3n)`. In these types of reactions, each
neutron is emitted corresponding to a different excitation level of the compound
nucleus, and thus in general the neutrons will originate from different energy
distributions. If multiple angle-energy distributions are present, they are
assigned incoming-energy-dependent probabilities that can then be used to
randomly select one.
Once a distribution has been selected, the procedure for determining the
outgoing angle and energy will depend on the type of the distribution.
Uncorrelated Angle-Energy Distributions
---------------------------------------
The first set of distributions we will look at are uncorrelated angle-energy
distributions, where angle and energy are specified separately. For these
distributions, OpenMC first samples the angular distribution as described
:ref:`sample-angle` and then samples an energy as described in
:ref:`sample-energy`.
.. _sample-angle:
Sampling Secondary Angle Distributions
--------------------------------------
Sampling Angular Distributions
++++++++++++++++++++++++++++++
For elastic scattering, it is only necessary to specific a secondary angle
distribution since the outgoing energy can be determined analytically. Other
@ -374,15 +400,14 @@ reactions may also have separate secondary angle and secondary energy
distributions that are uncorrelated. In these cases, the secondary angle
distribution is represented as either
- An Isotropic angular distribution,
- An equiprobable distribution with 32 bins, or
- An isotropic angular distribution,
- A tabular distribution.
Isotropic Angular Distribution
++++++++++++++++++++++++++++++
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In the first case, no data needs to be stored on the ACE table, and the cosine
of the scattering angle is simply calculated as
In the first case, no data is stored in the nuclear data file, and the cosine of
the scattering angle is simply calculated as
.. math::
:label: isotropic-angle
@ -392,42 +417,17 @@ of the scattering angle is simply calculated as
where :math:`\mu` is the cosine of the scattering angle and :math:`\xi` is a
random number sampled uniformly on :math:`[0,1)`.
Equiprobable Angle Bin Distribution
+++++++++++++++++++++++++++++++++++
For a 32 equiprobable bin distribution, we select a random number :math:`\xi` to
sample a cosine bin :math:`i` such that
.. math::
:label: equiprobable-bin
i = 1 + \lfloor 32\xi \rfloor.
The same random number can then also be used to interpolate between neighboring
:math:`\mu` values to get the final scattering cosine:
.. math::
:label: equiprobable-cosine
\mu = \mu_i + (32\xi - i) (\mu_{i+1} - \mu_i)
where :math:`\mu_i` is the :math:`i`-th scattering cosine.
.. _angle-tabular:
Tabular Angular Distribution
++++++++++++++++++++++++++++
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
As the `MCNP Manual`_ points out, using an equiprobable bin distribution works
well for high-probability regions of the scattering cosine probability, but for
low-probability regions it is not very accurate. Thus, a more accurate method is
to represent the scattering cosine with a tabular distribution. In this case, we
have a table of cosines and their corresponding values for a probability
distribution function and cumulative distribution function. For each incoming
neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th value in the
probability distribution function and :math:`c_{i,j}` the j-th value in the
cumulative distribution function. We first find the interpolation factor on the
incoming energy grid:
In this case, we have a table of cosines and their corresponding values for a
probability distribution function and cumulative distribution function. For each
incoming neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th value
in the probability distribution function and :math:`c_{i,j}` the j-th value in
the cumulative distribution function. We first find the interpolation factor on
the incoming energy grid:
.. math::
:label: interpolation-factor
@ -545,89 +545,11 @@ linear-linear interpolation:
.. _sample-energy:
Sampling Secondary Energy and Correlated Angle/Energy Distributions
-------------------------------------------------------------------
Sampling Energy Distributions
+++++++++++++++++++++++++++++
For a reaction with secondary neutrons, it is necessary to determine the
outgoing energy of the neutrons. For any reaction other than elastic scattering,
the outgoing energy must be determined based on tabulated or parameterized
data. The `ENDF-6 Format`_ specifies a variety of ways that the secondary energy
distribution can be represented. ENDF File 5 contains uncorrelated energy
distribution where ENDF File 6 contains correlated energy-angle
distributions. The ACE format specifies its own representations based loosely on
the formats given in ENDF-6. In this section, we will describe how the outgoing
energy of secondary particles is determined based on each ACE law.
One of the subtleties in the ACE format is the fact that a single reaction can
have multiple secondary energy distributions. This is mainly useful for
reactions with multiple neutrons in the exit channel such as :math:`(n,2n)` or
:math:`(n,3n)`. In these types of reactions, each neutron is emitted
corresponding to a different excitation level of the compound nucleus, and thus
in general the neutrons will originate from different energy distributions. If
multiple energy distributions are present, they are assigned probabilities that
can then be used to randomly select one.
Once a secondary energy distribution has been sampled, the procedure for
determining the outgoing energy will depend on which ACE law has been specified
for the data.
.. _ace-law-1:
ACE Law 1 - Tabular Equiprobable Energy Bins
++++++++++++++++++++++++++++++++++++++++++++
In the tabular equiprobable bin representation, an array of equiprobable
outgoing energy bins is given for a number of incident energies. While the
representation itself is simple, the complexity lies in how one interpolates
between incident as well as outgoing energies on such a table. If one performs
simple interpolation between tables for neighboring incident energies, it is
possible that the resulting energies would violate laws governing the
kinematics, i.e. the outgoing energy may be outside the range of available
energy in the reaction.
To avoid this situation, the accepted practice is to use a process known as
scaled interpolation [Doyas]_. First, we find the tabulated incident energies
which bound the actual incoming energy of the particle, i.e. find :math:`i` such
that :math:`E_i < E < E_{i+1}` and calculate the interpolation factor :math:`f`
via :eq:`interpolation-factor`. Then, we interpolate between the minimum and
maximum energies of the outgoing energy distributions corresponding to
:math:`E_i` and :math:`E_{i+1}`:
.. math::
:label: ace-law-1-minmax
E_{min} = E_{i,1} + f ( E_{i+1,1} - E_i ) \\
E_{max} = E_{i,M} + f ( E_{i+1,M} - E_M )
where :math:`E_{min}` and :math:`E_{max}` are the minimum and maximum outgoing
energies of a scaled distribution, :math:`E_{i,j}` is the j-th outgoing energy
corresponding to the incoming energy :math:`E_i`, and :math:`M` is the number of
outgoing energy bins. Next, statistical interpolation is performed to choose
between using the outgoing energy distributions corresponding to energy
:math:`E_i` and :math:`E_{i+1}`. Let :math:`\ell` be the chosen table where
:math:`\ell = i` if :math:`\xi_1 > f` and :math:`\ell = i + 1` otherwise, and
:math:`\xi_1` is a random number. Now, we randomly sample an equiprobable
outgoing energy bin :math:`j` and interpolate between successive values on the
outgoing energy distribution:
.. math::
:label: ace-law-1-intermediate
\hat{E} = E_{\ell,j} + \xi_2 (E_{\ell,j+1} - E_{\ell,j})
where :math:`\xi_2` is a random number sampled uniformly on :math:`[0,1)`. Since
this outgoing energy may violate reaction kinematics, we then scale it to the
minimum and maximum energies we calculated earlier to get the final outgoing
energy:
.. math::
:label: ace-law-1-energy
E' = E_{min} + \frac{\hat{E} - E_{\ell,1}}{E_{\ell,M} - E_{\ell,1}}
(E_{max} - E_{min})
ACE Law 3 - Inelastic Level Scattering
++++++++++++++++++++++++++++++++++++++
Inelastic Level Scattering
^^^^^^^^^^^^^^^^^^^^^^^^^^
It can be shown (see Foderaro_) that in inelastic level scattering, the outgoing
energy of the neutron :math:`E'` can be related to the Q-value of the reaction
@ -640,31 +562,50 @@ and the incoming energy:
where :math:`A` is the mass of the target nucleus measured in neutron masses.
.. _ace-law-4:
.. _continuous-tabular:
ACE Law 4 - Continuous Tabular Distribution
+++++++++++++++++++++++++++++++++++++++++++
Continuous Tabular Distribution
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This representation is very similar to :ref:`ace-law-1` except that instead of
equiprobable outgoing energy bins, the outgoing energy distribution for each
incoming energy is represented with a probability distribution function. For
each incoming neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th
value in the probability distribution function, :math:`c_{i,j}` the j-th value
in the cumulative distribution function, and :math:`E_{i,j}` the j-th outgoing
energy.
In a continuous tabular distribution, a tabulated energy distribution is
provided for each of a set of incoming energies. While the representation itself
is simple, the complexity lies in how one interpolates between incident as well
as outgoing energies on such a table. If one performs simple interpolation
between tables for neighboring incident energies, it is possible that the
resulting energies would violate laws governing the kinematics, i.e., the
outgoing energy may be outside the range of available energy in the reaction.
We proceed first as we did for ACE Law 1, determining the bounding energies of
the particle's incoming energy such that :math:`E_i < E < E_{i+1}` and
calculating an interpolation factor :math:`f` with equation
:eq:`interpolation-factor`. Next, statistical interpolation is performed to
choose between using the outgoing energy distributions corresponding to energy
:math:`E_i` and :math:`E_{i+1}`. Let :math:`\ell` be the chosen table where
:math:`\ell = i` if :math:`\xi_1 > f` and :math:`\ell = i + 1` otherwise, and
:math:`\xi_1` is a random number. Then, we sample an outgoing energy bin
To avoid this situation, the accepted practice is to use a process known as
scaled interpolation [Doyas]_. First, we find the tabulated incident energies
which bound the actual incoming energy of the particle, i.e., find :math:`i`
such that :math:`E_i < E < E_{i+1}` and calculate the interpolation factor
:math:`f` via :eq:`interpolation-factor`. Then, we interpolate between the
minimum and maximum energies of the outgoing energy distributions corresponding
to :math:`E_i` and :math:`E_{i+1}`:
.. math::
:label: continuous-minmax
E_{min} = E_{i,1} + f ( E_{i+1,1} - E_{i,1} ) \\
E_{max} = E_{i,M} + f ( E_{i+1,M} - E_{i,M} )
where :math:`E_{min}` and :math:`E_{max}` are the minimum and maximum outgoing
energies of a scaled distribution, :math:`E_{i,j}` is the j-th outgoing energy
corresponding to the incoming energy :math:`E_i`, and :math:`M` is the number of
outgoing energy bins.
Next, statistical interpolation is performed to choose between using the
outgoing energy distributions corresponding to energy :math:`E_i` and
:math:`E_{i+1}`. Let :math:`\ell` be the chosen table where :math:`\ell = i` if
:math:`\xi_1 > f` and :math:`\ell = i + 1` otherwise, and :math:`\xi_1` is a
random number. For each incoming neutron energy :math:`E_i`, let us call
:math:`p_{i,j}` the j-th value in the probability distribution function,
:math:`c_{i,j}` the j-th value in the cumulative distribution function, and
:math:`E_{i,j}` the j-th outgoing energy. We then sample an outgoing energy bin
:math:`j` using the cumulative distribution function:
.. math::
:label: ace-law-4-sample-cdf
:label: continuous-sample-cdf
c_{\ell,j} < \xi_2 < c_{\ell,j+1}
@ -692,22 +633,22 @@ If linear-linear interpolation is to be used, the outgoing energy on the
\right ).
Since this outgoing energy may violate reaction kinematics, we then scale it to
minimum and maximum energies interpolated between the neighboring outgoing
energy distributions to get the final outgoing energy:
minimum and maximum energies calculated in equation :eq:`continuous-minmax` to
get the final outgoing energy:
.. math::
:label: ace-law-4-energy
:label: continuous-eout
E' = E_{min} + \frac{\hat{E} - E_{\ell,1}}{E_{\ell,M} - E_{\ell,1}}
(E_{max} - E_{min})
where :math:`E_{min}` and :math:`E_{max}` are defined the same as in equation
:eq:`ace-law-1-minmax`.
:eq:`continuous-minmax`.
.. _maxwell:
ACE Law 7 - Maxwell Fission Spectrum
++++++++++++++++++++++++++++++++++++
Maxwell Fission Spectrum
^^^^^^^^^^^^^^^^^^^^^^^^
One representation of the secondary energies for neutrons from fission is the
so-called Maxwell spectrum. A probability distribution for the Maxwell spectrum
@ -720,7 +661,7 @@ can be written in the form
where :math:`E` is the incoming energy of the neutron and :math:`T` is the
so-called nuclear temperature, which is a function of the incoming energy of the
neutron. The ACE format contains a list of nuclear temperatures versus incoming
neutron. The ENDF format contains a list of nuclear temperatures versus incoming
energies. The nuclear temperature is interpolated between neighboring incoming
energies using a specified interpolation law. Once the temperature :math:`T` is
determined, we then calculate a candidate outgoing energy based on rule C64 in
@ -740,12 +681,12 @@ interval. The outgoing energy is only accepted if
0 \le E' \le E - U
where :math:`U` is called the restriction energy and is specified on the ACE
table. If the outgoing energy is rejected, it is resampled using equation
where :math:`U` is called the restriction energy and is specified in the ENDF
data. If the outgoing energy is rejected, it is resampled using equation
:eq:`maxwell-E-candidate`.
ACE Law 9 - Evaporation Spectrum
++++++++++++++++++++++++++++++++
Evaporation Spectrum
^^^^^^^^^^^^^^^^^^^^
Evaporation spectra are primarily used in compound nucleus processes where a
secondary particle can "evaporate" from the compound nucleus if it has
@ -759,7 +700,7 @@ be written in the form
where :math:`E` is the incoming energy of the neutron and :math:`T` is the
nuclear temperature, which is a function of the incoming energy of the
neutron. The ACE format contains a list of nuclear temperatures versus incoming
neutron. The ENDF format contains a list of nuclear temperatures versus incoming
energies. The nuclear temperature is interpolated between neighboring incoming
energies using a specified interpolation law. Once the temperature :math:`T` is
determined, we then calculate a candidate outgoing energy based on the algorithm
@ -777,11 +718,11 @@ energy as in equation :eq:`maxwell-restriction`. This algorithm has a much
higher rejection efficiency than the standard technique, i.e. rule C45 in the
`Monte Carlo Sampler`_.
ACE Law 11 - Energy-Dependent Watt Spectrum
+++++++++++++++++++++++++++++++++++++++++++
Energy-Dependent Watt Spectrum
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The probability distribution for a Watt fission spectrum can be written in the
form
The probability distribution for a [Watt]_ fission spectrum can be written in
the form
.. math::
:label: watt-spectrum
@ -805,29 +746,37 @@ where :math:`\xi` is a random number sampled on the interval :math:`[0,1)`. The
outgoing energy is only accepted according to a specified restriction energy
:math:`U` as defined in equation :eq:`maxwell-restriction`.
This algorithm can be found in Forrest Brown's lectures_ on Monte Carlo methods
and is an unpublished sampling scheme based on the original Watt spectrum
derivation [Watt]_.
A derivation of the algorithm described here can be found in a paper by Romano_.
ACE Law 44 - Kalbach-Mann Correlated Scattering
+++++++++++++++++++++++++++++++++++++++++++++++
Product Angle-Energy Distributions
----------------------------------
This law is very similar to ACE Law 4 except now the outgoing angle of the
neutron is correlated to the outgoing energy and is not sampled from a separate
distribution. For each incident neutron energy :math:`E_i` tabulated, there is
an array of precompound factors :math:`R_{i,j}` and angular distribution slopes
:math:`A_{i,j}` corresponding to each outgoing energy bin :math:`j` in addition
to the outgoing energies and distribution functions as in ACE Law 4.
If the secondary distribution for a product was given in file 6 in ENDF, the
angle and energy are correlated with one another and cannot be sampled
separately. Several representations exist in ENDF/ACE for correlated
angle-energy distributions.
Kalbach-Mann Correlated Scattering
++++++++++++++++++++++++++++++++++
This law is very similar to the uncorrelated continuous tabular energy
distribution except now the outgoing angle of the neutron is correlated to the
outgoing energy and is not sampled from a separate distribution. For each
incident neutron energy :math:`E_i` tabulated, there is an array of precompound
factors :math:`R_{i,j}` and angular distribution slopes :math:`A_{i,j}`
corresponding to each outgoing energy bin :math:`j` in addition to the outgoing
energies and distribution functions as in :ref:`continuous-tabular`.
The calculation of the outgoing energy of the neutron proceeds exactly the same
as in the algorithm described in :ref:`ace-law-4`. In that algorithm, we found
an interpolation factor :math:`f`, statistically sampled an incoming energy bin
:math:`\ell`, and sampled an outgoing energy bin :math:`j` based on the
tabulated cumulative distribution function. Once the outgoing energy has been
determined with equation :eq:`ace-law-4-energy`, we then need to calculate the
outgoing angle based on the tabulated Kalbach-Mann parameters. These parameters
themselves are subject to either histogram or linear-linear interpolation on the
outgoing energy grid. For histogram interpolation, the parameters are
as in the algorithm described in :ref:`continuous-tabular`. In that algorithm,
we found an interpolation factor :math:`f`, statistically sampled an incoming
energy bin :math:`\ell`, and sampled an outgoing energy bin :math:`j` based on
the tabulated cumulative distribution function. Once the outgoing energy has
been determined with equation :eq:`continuous-eout`, we then need to calculate
the outgoing angle based on the tabulated Kalbach-Mann parameters. These
parameters themselves are subject to either histogram or linear-linear
interpolation on the outgoing energy grid. For histogram interpolation, the
parameters are
.. math::
:label: KM-parameters-histogram
@ -873,52 +822,55 @@ outgoing angle is
\mu = \frac{1}{A} \ln \left ( \xi_4 e^A + (1 - \xi_4) e^{-A} \right ).
.. _ace-law-61:
.. _correlated-energy-angle:
ACE Law 61 - Correlated Energy and Angle Distribution
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Correlated Energy and Angle Distribution
++++++++++++++++++++++++++++++++++++++++
This law is very similar to ACE Law 44 in the sense that the outgoing angle of
the neutron is correlated to the outgoing energy and is not sampled from a
separate distribution. In this case though, rather than being determined from an
analytical distribution function, the cosine of the scattering angle is
determined from a tabulated distribution. For each incident energy :math:`i` and
outgoing energy :math:`j`, there is a tabulated angular distribution.
This distribution is very similar to a Kalbach-Mann distribution in the sense
that the outgoing angle of the neutron is correlated to the outgoing energy and
is not sampled from a separate distribution. In this case though, rather than
being determined from an analytical distribution function, the cosine of the
scattering angle is determined from a tabulated distribution. For each incident
energy :math:`i` and outgoing energy :math:`j`, there is a tabulated angular
distribution.
The calculation of the outgoing energy of the neutron proceeds exactly the same
as in the algorithm described in :ref:`ace-law-4`. In that algorithm, we found
an interpolation factor :math:`f`, statistically sampled an incoming energy bin
:math:`\ell`, and sampled an outgoing energy bin :math:`j` based on the
tabulated cumulative distribution function. Once the outgoing energy has been
determined with equation :eq:`ace-law-4-energy`, we then need to decide which
angular distribution to use. If histogram interpolation was used on the outgoing
energy bins, then we use the angular distribution corresponding to incoming
energy bin :math:`\ell` and outgoing energy bin :math:`j`. If linear-linear
interpolation was used on the outgoing energy bins, then we use the whichever
angular distribution was closer to the sampled value of the cumulative
distribution function for the outgoing energy. The actual algorithm used to
sample the chosen tabular angular distribution has been previously described in
:ref:`angle-tabular`.
as in the algorithm described in :ref:`continuous-tabular`. In that algorithm,
we found an interpolation factor :math:`f`, statistically sampled an incoming
energy bin :math:`\ell`, and sampled an outgoing energy bin :math:`j` based on
the tabulated cumulative distribution function. Once the outgoing energy has
been determined with equation :eq:`continuous-eout`, we then need to decide
which angular distribution to use. If histogram interpolation was used on the
outgoing energy bins, then we use the angular distribution corresponding to
incoming energy bin :math:`\ell` and outgoing energy bin :math:`j`. If
linear-linear interpolation was used on the outgoing energy bins, then we use
the whichever angular distribution was closer to the sampled value of the
cumulative distribution function for the outgoing energy. The actual algorithm
used to sample the chosen tabular angular distribution has been previously
described in :ref:`angle-tabular`.
ACE Law 66 - N-Body Phase Space Distribution
++++++++++++++++++++++++++++++++++++++++++++
N-Body Phase Space Distribution
+++++++++++++++++++++++++++++++
Reactions in which there are more than two products of similar masses are
sometimes best treated by using what's known as an N-body phase
distribution. This distribution has the following probability density function
for outgoing energy of the :math:`i`-th particle in the center-of-mass system:
for outgoing energy and angle of the :math:`i`-th particle in the center-of-mass
system:
.. math::
:label: n-body-pdf
p_i(E') dE' = C_n \sqrt{E'} (E_i^{max} - E')^{(3n/2) - 4} dE'
p_i(\mu, E') dE' d\mu = C_n \sqrt{E'} (E_i^{max} - E')^{(3n/2) - 4} dE' d\mu
where :math:`n` is the number of outgoing particles, :math:`C_n` is a
normalization constant, :math:`E_i^{max}` is the maximum center-of-mass energy
for particle :math:`i`, and :math:`E'` is the outgoing energy. The algorithm for
sampling the outgoing energy is based on algorithms R28, C45, and C64 in the
`Monte Carlo Sampler`_. First we calculate the maximum energy in the
center-of-mass using the following equation:
for particle :math:`i`, and :math:`E'` is the outgoing energy. We see in
equation :eq:`n-body-pdf` that the angle is simply isotropic in the
center-of-mass system. The algorithm for sampling the outgoing energy is based
on algorithms R28, C45, and C64 in the `Monte Carlo Sampler`_. First we
calculate the maximum energy in the center-of-mass using the following equation:
.. math::
:label: n-body-emax
@ -961,7 +913,7 @@ distribution. First, the documentation (and code) for MCNP5-1.60 has a mistake
in the algorithm for :math:`n = 4`. That being said, there are no existing
nuclear data evaluations which use an N-body phase space distribution with
:math:`n = 4`, so the error would not affect any calculations. In the
ENDF/B-VII.0 nuclear data evaluation, only one reaction uses an N-body phase
ENDF/B-VII.1 nuclear data evaluation, only one reaction uses an N-body phase
space distribution at all, the :math:`(n,2n)` reaction with H-2.
.. _transform-coordinates:
@ -1527,16 +1479,16 @@ accordingly.
Continuous Outgoing Energies
++++++++++++++++++++++++++++
If the thermal data was processed with :math:`iwt=2` in NJOY, then the
outgoing energy spectra is represented by a continuous outgoing energy spectra
in tabular form with linear-linear interpolation. The sampling of the outgoing
energy portion of this format is very similar to :ref:`ACE Law 61<ace-law-61>`,
but the sampling of the correlated angle is performed as it was in the other
two representations discussed in this sub-section. In the Law 61 algorithm,
we found an interpolation factor :math:`f`, statistically sampled an incoming
If the thermal data was processed with :math:`iwt=2` in NJOY, then the outgoing
energy spectra is represented by a continuous outgoing energy spectra in tabular
form with linear-linear interpolation. The sampling of the outgoing energy
portion of this format is very similar to :ref:`correlated-energy-angle`, but
the sampling of the correlated angle is performed as it was in the other two
representations discussed in this sub-section. In the Law 61 algorithm, we
found an interpolation factor :math:`f`, statistically sampled an incoming
energy bin :math:`\ell`, and sampled an outgoing energy bin :math:`j` based on
the tabulated cumulative distribution function. Once the outgoing energy has
been determined with equation :eq:`ace-law-4-energy`, we then need to decide
been determined with equation :eq:`continuous-eout`, we then need to decide
which angular distribution data to use. Like the linear-linear interpolation
case in Law 61, the angular distribution closest to the sampled value of the
cumulative distribution function for the outgoing energy is utilized. The
@ -1723,6 +1675,8 @@ another.
.. _MC21: http://www.osti.gov/bridge/servlets/purl/903083-HT5p1o/903083.pdf
.. _Romano: http://dx.doi.org/10.1016/j.cpc.2014.11.001
.. _Sutton and Brown: http://www.osti.gov/bridge/product.biblio.jsp?osti_id=307911
.. _lectures: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-05-4983.pdf

View file

@ -328,8 +328,11 @@ Core Classes
:nosignatures:
:template: myclass.rst
openmc.data.IncidentNeutron
openmc.data.Reaction
openmc.data.Product
openmc.data.Tabulated1D
openmc.data.ThermalScattering
openmc.data.CoherentElastic
Angle-Energy Distributions
@ -370,11 +373,6 @@ Classes
openmc.data.ace.Library
openmc.data.ace.Table
openmc.data.ace.NeutronTable
openmc.data.ace.SabTable
openmc.data.ace.PhotoatomicTable
openmc.data.ace.PhotonuclearTable
openmc.data.ace.Reaction
Functions
+++++++++

View file

@ -1,4 +1,6 @@
from .data import *
from .neutron import *
from .reaction import *
from .ace import *
from .angle_distribution import *
from .container import *
@ -11,3 +13,4 @@ from .kalbach_mann import *
from .nbody import *
from .thermal import *
from .urr import *
from .library import *

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@ from numbers import Real
import numpy as np
import openmc.checkvalue as cv
from openmc.stats import Univariate, Tabular
from openmc.stats import Univariate, Tabular, Uniform
from .container import interpolation_scheme
@ -132,3 +132,69 @@ class AngleDistribution(object):
mu.append(mu_i)
return cls(energy, mu)
@classmethod
def from_ace(cls, ace, location_dist, location_start):
"""Generate an angular distribution from ACE data
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
location_dist : int
Index in the XSS array corresponding to the start of a block,
e.g. JXS(9).
location_start : int
Index in the XSS array corresponding to the start of an angle
distribution array
Returns
-------
openmc.data.AngleDistribution
Angular distribution
"""
# Set starting index for angle distribution
idx = location_dist + location_start - 1
# Number of energies at which angular distributions are tabulated
n_energies = int(ace.xss[idx])
idx += 1
# Incoming energy grid
energy = ace.xss[idx:idx + n_energies]
idx += n_energies
# Read locations for angular distributions
lc = ace.xss[idx:idx + n_energies].astype(int)
idx += n_energies
mu = []
for i in range(n_energies):
if lc[i] > 0:
# Equiprobable 32 bin distribution
idx = location_dist + abs(lc[i]) - 1
cos = ace.xss[idx:idx + 33]
pdf = np.zeros(33)
pdf[:32] = 1.0/(32.0*np.diff(cos))
cdf = np.linspace(0.0, 1.0, 33)
mu_i = Tabular(cos, pdf, 'histogram', ignore_negative=True)
mu_i.c = cdf
elif lc[i] < 0:
# Tabular angular distribution
idx = location_dist + abs(lc[i]) - 1
intt = int(ace.xss[idx])
n_points = int(ace.xss[idx + 1])
data = ace.xss[idx + 2:idx + 2 + 3*n_points]
data.shape = (3, n_points)
mu_i = Tabular(data[0], data[1], interpolation_scheme[intt])
mu_i.c = data[2]
else:
# Isotropic angular distribution
mu_i = Uniform(-1., 1.)
mu.append(mu_i)
return cls(energy, mu)

View file

@ -38,3 +38,73 @@ class AngleEnergy(object):
return openmc.data.KalbachMann.from_hdf5(group)
elif dist_type == 'nbody':
return openmc.data.NBodyPhaseSpace.from_hdf5(group)
@staticmethod
def from_ace(ace, location_dist, location_start, rx=None):
"""Generate an AngleEnergy object from ACE data
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
location_dist : int
Index in the XSS array corresponding to the start of a block,
e.g. JXS(11) for the the DLW block.
location_start : int
Index in the XSS array corresponding to the start of an energy
distribution array
rx : Reaction
Reaction this energy distribution will be associated with
Returns
-------
distribution : openmc.data.AngleEnergy
Secondary angle-energy distribution
"""
# Set starting index for energy distribution
idx = location_dist + location_start - 1
law = int(ace.xss[idx + 1])
location_data = int(ace.xss[idx + 2])
# Position index for reading law data
idx = location_dist + location_data - 1
# Parse energy distribution data
if law == 2:
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.DiscretePhoton.from_ace(ace, idx)
elif law in (3, 33):
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.LevelInelastic.from_ace(ace, idx)
elif law == 4:
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.ContinuousTabular.from_ace(
ace, idx, location_dist)
elif law == 5:
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.GeneralEvaporation.from_ace(ace, idx)
elif law == 7:
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.MaxwellEnergy.from_ace(ace, idx)
elif law == 9:
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.Evaporation.from_ace(ace, idx)
elif law == 11:
distribution = openmc.data.UncorrelatedAngleEnergy()
distribution.energy = openmc.data.WattEnergy.from_ace(ace, idx)
elif law == 44:
distribution = openmc.data.KalbachMann.from_ace(
ace, idx, location_dist)
elif law == 61:
distribution = openmc.data.CorrelatedAngleEnergy.from_ace(
ace, idx, location_dist)
elif law == 66:
distribution = openmc.data.NBodyPhaseSpace.from_ace(
ace, idx, rx.q_value)
else:
raise IOError("Unsupported ACE secondary energy "
"distribution law {0}".format(law))
return distribution

View file

@ -267,3 +267,42 @@ class Tabulated1D(object):
breakpoints = dataset.attrs['breakpoints']
interpolation = dataset.attrs['interpolation']
return cls(x, y, breakpoints, interpolation)
@classmethod
def from_ace(cls, ace, idx=0):
"""Create a Tabulated1D object from an ACE table.
Parameters
----------
ace : openmc.data.ace.Table
An ACE table
idx : int
Offset to read from in XSS array (default of zero)
Returns
-------
openmc.data.Tabulated1D
Tabulated data object
"""
# Get number of regions and pairs
n_regions = int(ace.xss[idx])
n_pairs = int(ace.xss[idx + 1 + 2*n_regions])
# Get interpolation information
idx += 1
if n_regions > 0:
breakpoints = ace.xss[idx:idx + n_regions].astype(int)
interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int)
else:
# 0 regions implies linear-linear interpolation by default
breakpoints = np.array([n_pairs])
interpolation = np.array([2])
# Get (x,y) pairs
idx += 2*n_regions + 1
x = ace.xss[idx:idx + n_pairs]
y = ace.xss[idx + n_pairs:idx + 2*n_pairs]
return Tabulated1D(x, y, breakpoints, interpolation)

View file

@ -203,8 +203,8 @@ class CorrelatedAngleEnergy(AngleEnergy):
"""
interp_data = group['energy'].attrs['interpolation']
energy_breakpoints = interp_data[0,:]
energy_interpolation = interp_data[1,:]
energy_breakpoints = interp_data[0, :]
energy_interpolation = interp_data[1, :]
energy = group['energy'].value
offsets = group['energy_out'].attrs['offsets']
@ -289,3 +289,116 @@ class CorrelatedAngleEnergy(AngleEnergy):
return cls(energy_breakpoints, energy_interpolation,
energy, energy_out, mu)
@classmethod
def from_ace(cls, ace, idx, ldis):
"""Generate correlated angle-energy distribution from ACE data
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
idx : int
Index in XSS array of the start of the energy distribution data
(LDIS + LOCC - 1)
ldis : int
Index in XSS array of the start of the energy distribution block
(e.g. JXS[11])
Returns
-------
openmc.data.CorrelatedAngleEnergy
Correlated angle-energy distribution
"""
# Read number of interpolation regions and incoming energies
n_regions = int(ace.xss[idx])
n_energy_in = int(ace.xss[idx + 1 + 2*n_regions])
# Get interpolation information
idx += 1
if n_regions > 0:
breakpoints = ace.xss[idx:idx + n_regions].astype(int)
interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int)
else:
breakpoints = np.array([n_energy_in])
interpolation = np.array([2])
# Incoming energies at which distributions exist
idx += 2*n_regions + 1
energy = ace.xss[idx:idx + n_energy_in]
# Location of distributions
idx += n_energy_in
loc_dist = ace.xss[idx:idx + n_energy_in].astype(int)
# Initialize list of distributions
energy_out = []
mu = []
# Read each outgoing energy distribution
for i in range(n_energy_in):
idx = ldis + loc_dist[i] - 1
# intt = interpolation scheme (1=hist, 2=lin-lin)
INTTp = int(ace.xss[idx])
intt = INTTp % 10
n_discrete_lines = (INTTp - intt)//10
if intt not in (1, 2):
warn("Interpolation scheme for continuous tabular distribution "
"is not histogram or linear-linear.")
intt = 2
# Secondary energy distribution
n_energy_out = int(ace.xss[idx + 1])
data = ace.xss[idx + 2:idx + 2 + 4*n_energy_out]
data.shape = (4, n_energy_out)
# Create continuous distribution
eout_continuous = Tabular(data[0][n_discrete_lines:],
data[1][n_discrete_lines:],
interpolation_scheme[intt],
ignore_negative=True)
eout_continuous.c = data[2][n_discrete_lines:]
# If discrete lines are present, create a mixture distribution
if n_discrete_lines > 0:
eout_discrete = Discrete(data[0][:n_discrete_lines],
data[1][:n_discrete_lines])
eout_discrete.c = data[2][:n_discrete_lines]
if n_discrete_lines == n_energy_out:
eout_i = eout_discrete
else:
p_discrete = min(sum(eout_discrete.p), 1.0)
eout_i = Mixture([p_discrete, 1. - p_discrete],
[eout_discrete, eout_continuous])
else:
eout_i = eout_continuous
energy_out.append(eout_i)
lc = data[3].astype(int)
# Secondary angular distributions
mu_i = []
for j in range(n_energy_out):
if lc[j] > 0:
idx = ldis + abs(lc[j]) - 1
intt = int(ace.xss[idx])
n_cosine = int(ace.xss[idx + 1])
data = ace.xss[idx + 2:idx + 2 + 3*n_cosine]
data.shape = (3, n_cosine)
mu_ij = Tabular(data[0], data[1], interpolation_scheme[intt])
mu_ij.c = data[2]
else:
# Isotropic distribution
mu_ij = Uniform(-1., 1.)
mu_i.append(mu_ij)
# Add cosine distributions for this incoming energy to list
mu.append(mu_i)
return cls(breakpoints, interpolation, energy, energy_out, mu)

View file

@ -1,6 +1,7 @@
from abc import ABCMeta, abstractmethod
from collections import Iterable
from numbers import Integral, Real
from warnings import warn
import h5py
import numpy as np
@ -200,6 +201,33 @@ class MaxwellEnergy(EnergyDistribution):
u = group.attrs['u']
return cls(theta, u)
@classmethod
def from_ace(cls, ace, idx=0):
"""Create a Maxwell distribution from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
An ACE table
idx : int
Offset to read from in XSS array (default of zero)
Returns
-------
openmc.data.MaxwellEnergy
Maxwell distribution
"""
# Read nuclear temperature
theta = Tabulated1D.from_ace(ace, idx)
# Restriction energy
nr = int(ace.xss[idx])
ne = int(ace.xss[idx + 1 + 2*nr])
u = ace.xss[idx + 2 + 2*nr + 2*ne]
return cls(theta, u)
class Evaporation(EnergyDistribution):
r"""Evaporation spectrum represented as
@ -273,13 +301,40 @@ class Evaporation(EnergyDistribution):
Returns
-------
openmc.data.Evaporation
Evaporation spectrum distribution
Evaporation spectrum
"""
theta = Tabulated1D.from_hdf5(group['theta'])
u = group.attrs['u']
return cls(theta, u)
@classmethod
def from_ace(cls, ace, idx=0):
"""Create an evaporation spectrum from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
An ACE table
idx : int
Offset to read from in XSS array (default of zero)
Returns
-------
openmc.data.Evaporation
Evaporation spectrum
"""
# Read nuclear temperature
theta = Tabulated1D.from_ace(ace, idx)
# Restriction energy
nr = int(ace.xss[idx])
ne = int(ace.xss[idx + 1 + 2*nr])
u = ace.xss[idx + 2 + 2*nr + 2*ne]
return cls(theta, u)
class WattEnergy(EnergyDistribution):
r"""Energy-dependent Watt spectrum represented as
@ -375,6 +430,45 @@ class WattEnergy(EnergyDistribution):
u = group.attrs['u']
return cls(a, b, u)
@classmethod
def from_ace(cls, ace, idx):
"""Create a Watt fission spectrum from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
An ACE table
idx : int
Offset to read from in XSS array (default of zero)
Returns
-------
openmc.data.WattEnergy
Watt fission spectrum
"""
# Energy-dependent a parameter
a = Tabulated1D.from_ace(ace, idx)
# Advance index
nr = int(ace.xss[idx])
ne = int(ace.xss[idx + 1 + 2*nr])
idx += 2 + 2*nr + 2*ne
# Energy-dependent b parameter
b = Tabulated1D.from_ace(ace, idx)
# Advance index
nr = int(ace.xss[idx])
ne = int(ace.xss[idx + 1 + 2*nr])
idx += 2 + 2*nr + 2*ne
# Restriction energy
u = ace.xss[idx]
return cls(a, b, u)
class MadlandNix(EnergyDistribution):
r"""Energy-dependent fission neutron spectrum (Madland and Nix) given in
ENDF MF=5, LF=12 represented as
@ -574,6 +668,27 @@ class DiscretePhoton(EnergyDistribution):
awr = group.attrs['atomic_weight_ratio']
return cls(primary_flag, energy, awr)
@classmethod
def from_ace(cls, ace, idx):
"""Generate discrete photon energy distribution from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
An ACE table
idx : int
Offset to read from in XSS array (default of zero)
Returns
-------
openmc.data.DiscretePhoton
Discrete photon energy distribution
"""
primary_flag = int(ace.xss[idx])
energy = ace.xss[idx + 1]
return cls(primary_flag, energy, ace.atomic_weight_ratio)
class LevelInelastic(EnergyDistribution):
r"""Level inelastic scattering
@ -650,6 +765,26 @@ class LevelInelastic(EnergyDistribution):
mass_ratio = group.attrs['mass_ratio']
return cls(threshold, mass_ratio)
@classmethod
def from_ace(cls, ace, idx):
"""Generate level inelastic distribution from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
An ACE table
idx : int
Offset to read from in XSS array (default of zero)
Returns
-------
openmc.data.LevelInelastic
Level inelastic scattering distribution
"""
threshold, mass_ratio = ace.xss[idx:idx + 2]
return cls(threshold, mass_ratio)
class ContinuousTabular(EnergyDistribution):
"""Continuous tabular distribution
@ -802,8 +937,8 @@ class ContinuousTabular(EnergyDistribution):
"""
interp_data = group['energy'].attrs['interpolation']
energy_breakpoints = interp_data[0,:]
energy_interpolation = interp_data[1,:]
energy_breakpoints = interp_data[0, :]
energy_interpolation = interp_data[1, :]
energy = group['energy'].value
data = group['distribution']
@ -848,3 +983,89 @@ class ContinuousTabular(EnergyDistribution):
return cls(energy_breakpoints, energy_interpolation,
energy, energy_out)
@classmethod
def from_ace(cls, ace, idx, ldis):
"""Generate continuous tabular energy distribution from ACE data
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
idx : int
Index in XSS array of the start of the energy distribution data
(LDIS + LOCC - 1)
ldis : int
Index in XSS array of the start of the energy distribution block
(e.g. JXS[11])
Returns
-------
openmc.data.ContinuousTabular
Continuous tabular energy distribution
"""
# Read number of interpolation regions and incoming energies
n_regions = int(ace.xss[idx])
n_energy_in = int(ace.xss[idx + 1 + 2*n_regions])
# Get interpolation information
idx += 1
if n_regions > 0:
breakpoints = ace.xss[idx:idx + n_regions].astype(int)
interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int)
else:
breakpoints = np.array([n_energy_in])
interpolation = np.array([2])
# Incoming energies at which distributions exist
idx += 2*n_regions + 1
energy = ace.xss[idx:idx + n_energy_in]
# Location of distributions
idx += n_energy_in
loc_dist = ace.xss[idx:idx + n_energy_in].astype(int)
# Initialize variables
energy_out = []
# Read each outgoing energy distribution
for i in range(n_energy_in):
idx = ldis + loc_dist[i] - 1
# intt = interpolation scheme (1=hist, 2=lin-lin)
INTTp = int(ace.xss[idx])
intt = INTTp % 10
n_discrete_lines = (INTTp - intt)//10
if intt not in (1, 2):
warn("Interpolation scheme for continuous tabular distribution "
"is not histogram or linear-linear.")
intt = 2
n_energy_out = int(ace.xss[idx + 1])
data = ace.xss[idx + 2:idx + 2 + 3*n_energy_out]
data.shape = (3, n_energy_out)
# Create continuous distribution
eout_continuous = Tabular(data[0][n_discrete_lines:],
data[1][n_discrete_lines:],
interpolation_scheme[intt])
eout_continuous.c = data[2][n_discrete_lines:]
# If discrete lines are present, create a mixture distribution
if n_discrete_lines > 0:
eout_discrete = Discrete(data[0][:n_discrete_lines],
data[1][:n_discrete_lines])
eout_discrete.c = data[2][:n_discrete_lines]
if n_discrete_lines == n_energy_out:
eout_i = eout_discrete
else:
p_discrete = min(sum(eout_discrete.p), 1.0)
eout_i = Mixture([p_discrete, 1. - p_discrete],
[eout_discrete, eout_continuous])
else:
eout_i = eout_continuous
energy_out.append(eout_i)
return cls(breakpoints, interpolation, energy, energy_out)

View file

@ -197,8 +197,8 @@ class KalbachMann(AngleEnergy):
"""
interp_data = group['energy'].attrs['interpolation']
energy_breakpoints = interp_data[0,:]
energy_interpolation = interp_data[1,:]
energy_breakpoints = interp_data[0, :]
energy_interpolation = interp_data[1, :]
energy = group['energy'].value
data = group['distribution']
@ -251,3 +251,93 @@ class KalbachMann(AngleEnergy):
return cls(energy_breakpoints, energy_interpolation,
energy, energy_out, precompound, slope)
@classmethod
def from_ace(cls, ace, idx, ldis):
"""Generate Kalbach-Mann energy-angle distribution from ACE data
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
idx : int
Index in XSS array of the start of the energy distribution data
(LDIS + LOCC - 1)
ldis : int
Index in XSS array of the start of the energy distribution block
(e.g. JXS[11])
Returns
-------
openmc.data.KalbachMann
Kalbach-Mann energy-angle distribution
"""
# Read number of interpolation regions and incoming energies
n_regions = int(ace.xss[idx])
n_energy_in = int(ace.xss[idx + 1 + 2*n_regions])
# Get interpolation information
idx += 1
if n_regions > 0:
breakpoints = ace.xss[idx:idx + n_regions].astype(int)
interpolation = ace.xss[idx + n_regions:idx + 2*n_regions].astype(int)
else:
breakpoints = np.array([n_energy_in])
interpolation = np.array([2])
# Incoming energies at which distributions exist
idx += 2*n_regions + 1
energy = ace.xss[idx:idx + n_energy_in]
# Location of distributions
idx += n_energy_in
loc_dist = ace.xss[idx:idx + n_energy_in].astype(int)
# Initialize variables
energy_out = []
km_r = []
km_a = []
# Read each outgoing energy distribution
for i in range(n_energy_in):
idx = ldis + loc_dist[i] - 1
# intt = interpolation scheme (1=hist, 2=lin-lin)
INTTp = int(ace.xss[idx])
intt = INTTp % 10
n_discrete_lines = (INTTp - intt)//10
if intt not in (1, 2):
warn("Interpolation scheme for continuous tabular distribution "
"is not histogram or linear-linear.")
intt = 2
n_energy_out = int(ace.xss[idx + 1])
data = ace.xss[idx + 2:idx + 2 + 5*n_energy_out]
data.shape = (5, n_energy_out)
# Create continuous distribution
eout_continuous = Tabular(data[0][n_discrete_lines:],
data[1][n_discrete_lines:],
interpolation_scheme[intt])
eout_continuous.c = data[2][n_discrete_lines:]
# If discrete lines are present, create a mixture distribution
if n_discrete_lines > 0:
eout_discrete = Discrete(data[0][:n_discrete_lines],
data[1][:n_discrete_lines])
eout_discrete.c = data[2][:n_discrete_lines]
if n_discrete_lines == n_energy_out:
eout_i = eout_discrete
else:
p_discrete = min(sum(eout_discrete.p), 1.0)
eout_i = Mixture([p_discrete, 1. - p_discrete],
[eout_discrete, eout_continuous])
else:
eout_i = eout_continuous
energy_out.append(eout_i)
km_r.append(Tabulated1D(data[0], data[3]))
km_a.append(Tabulated1D(data[0], data[4]))
return cls(breakpoints, interpolation, energy, energy_out, km_r, km_a)

47
openmc/data/library.py Normal file
View file

@ -0,0 +1,47 @@
import os
import xml.etree.ElementTree as ET
import h5py
from openmc.clean_xml import clean_xml_indentation
class DataLibrary(object):
def __init__(self):
self.libraries = []
def register_file(self, filename, filetype='neutron'):
h5file = h5py.File(filename, 'r')
materials = []
for name, group in h5file.items():
materials.append(name)
library = {'path': filename, 'type': filetype, 'materials': materials}
self.libraries.append(library)
def export_to_xml(self, path='cross_sections.xml'):
root = ET.Element('cross_sections')
# Determine common directory for library paths
common_dir = os.path.commonpath([lib['path'] for lib in self.libraries])
if common_dir == '':
common_dir = '.'
directory = os.path.relpath(common_dir, os.path.dirname(path))
if directory != '.':
dir_element = ET.SubElement(root, "directory")
dir_element.text = directory
for library in self.libraries:
lib_element = ET.SubElement(root, "library")
lib_element.set('materials', ' '.join(library['materials']))
lib_element.set('path', os.path.relpath(library['path'], common_dir))
lib_element.set('type', library['type'])
# Clean the indentation to be user-readable
clean_xml_indentation(root)
# Write XML file
tree = ET.ElementTree(root)
tree.write(path, xml_declaration=True, encoding='utf-8',
method='xml')

View file

@ -116,3 +116,27 @@ class NBodyPhaseSpace(AngleEnergy):
awr = group.attrs['atomic_weight_ratio']
q_value = group.attrs['q_value']
return cls(total_mass, n_particles, awr, q_value)
@classmethod
def from_ace(cls, ace, idx, q_value):
"""Generate N-body phase space distribution from ACE data
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
idx : int
Index in XSS array of the start of the energy distribution data
(LDIS + LOCC - 1)
q_value : float
Q-value for reaction in MeV
Returns
-------
openmc.data.NBodyPhaseSpace
N-body phase space distribution
"""
n_particles = int(ace.xss[idx])
total_mass = ace.xss[idx + 1]
return cls(total_mass, n_particles, ace.atomic_weight_ratio, q_value)

405
openmc/data/neutron.py Normal file
View file

@ -0,0 +1,405 @@
from __future__ import division, unicode_literals
import io
import sys
from warnings import warn
from collections import OrderedDict, Iterable, Mapping
from copy import deepcopy
from numbers import Integral, Real
import sys
import numpy as np
from numpy.polynomial import Polynomial
import h5py
from . import atomic_number, atomic_symbol
from .ace import Table, get_table
from .container import Tabulated1D
from .energy_distribution import *
from .product import Product
from .reaction import Reaction, _get_photon_products
from .thermal import CoherentElastic
from .urr import ProbabilityTables
from openmc.stats import Tabular, Discrete, Uniform, Mixture
import openmc.checkvalue as cv
if sys.version_info[0] >= 3:
basestring = str
class IncidentNeutron(object):
"""Continuous-energy neutron interaction data.
Instances of this class are not normally instantiated by the user but rather
created using the factory methods :meth:`IncidentNeutron.from_hdf5` and
:meth:`IncidentNeutron.from_ace`.
Parameters
----------
name : str
Name of the table
atomic_number : int
Number of protons in the nucleus
mass_number : int
Number of nucleons in the nucleus
metastable : int
Metastable state of the nucleus. A value of zero indicates ground state.
atomic_weight_ratio : float
Atomic mass ratio of the target nuclide.
temperature : float
Temperature of the target nuclide in eV.
Attributes
----------
atomic_number : int
Number of protons in the nucleus
atomic_symbol : str
Atomic symbol of the nuclide, e.g., 'Zr'
atomic_weight_ratio : float
Atomic weight ratio of the target nuclide.
energy : numpy.ndarray
The energy values (MeV) at which reaction cross-sections are tabulated.
mass_number : int
Number of nucleons in the nucleus
metastable : int
Metastable state of the nucleus. A value of zero indicates ground state.
name : str
ZAID identifier of the table, e.g. 92235.70c.
reactions : collections.OrderedDict
Contains the cross sections, secondary angle and energy distributions,
and other associated data for each reaction. The keys are the MT values
and the values are Reaction objects.
summed_reactions : collections.OrderedDict
Contains summed cross sections, e.g., the total cross section. The keys
are the MT values and the values are Reaction objects.
temperature : float
Temperature of the target nuclide in eV.
urr : None or openmc.data.ProbabilityTables
Unresolved resonance region probability tables
"""
def __init__(self, name, atomic_number, mass_number, metastable,
atomic_weight_ratio, temperature):
self.name = name
self.atomic_number = atomic_number
self.mass_number = mass_number
self.metastable = metastable
self.atomic_weight_ratio = atomic_weight_ratio
self.temperature = temperature
self._energy = None
self.reactions = OrderedDict()
self.summed_reactions = OrderedDict()
self.urr = None
def __repr__(self):
return "<IncidentNeutron: {}>".format(self.name)
def __iter__(self):
return iter(self.reactions.values())
@property
def name(self):
return self._name
@property
def atomic_number(self):
return self._atomic_number
@property
def mass_number(self):
return self._mass_number
@property
def metastable(self):
return self._metastable
@property
def atomic_weight_ratio(self):
return self._atomic_weight_ratio
@property
def energy(self):
return self._energy
@property
def temperature(self):
return self._temperature
@property
def reactions(self):
return self._reactions
@property
def summed_reactions(self):
return self._summed_reactions
@property
def urr(self):
return self._urr
@name.setter
def name(self, name):
cv.check_type('name', name, basestring)
self._name = name
@property
def atomic_symbol(self):
return atomic_symbol[self.atomic_number]
@atomic_number.setter
def atomic_number(self, atomic_number):
cv.check_type('atomic number', atomic_number, Integral)
cv.check_greater_than('atomic number', atomic_number, 0)
self._atomic_number = atomic_number
@mass_number.setter
def mass_number(self, mass_number):
cv.check_type('mass number', mass_number, Integral)
cv.check_greater_than('mass number', mass_number, 0, True)
self._mass_number = mass_number
@metastable.setter
def metastable(self, metastable):
cv.check_type('metastable', metastable, Integral)
cv.check_greater_than('metastable', metastable, 0, True)
self._metastable = metastable
@atomic_weight_ratio.setter
def atomic_weight_ratio(self, atomic_weight_ratio):
cv.check_type('atomic weight ratio', atomic_weight_ratio, Real)
cv.check_greater_than('atomic weight ratio', atomic_weight_ratio, 0.0)
self._atomic_weight_ratio = atomic_weight_ratio
@temperature.setter
def temperature(self, temperature):
cv.check_type('temperature', temperature, Real)
cv.check_greater_than('temperature', temperature, 0.0)
self._temperature = temperature
@energy.setter
def energy(self, energy):
cv.check_type('energy grid', energy, Iterable, Real)
self._energy = energy
@reactions.setter
def reactions(self, reactions):
cv.check_type('reactions', reactions, Mapping)
self._reactions = reactions
@summed_reactions.setter
def summed_reactions(self, summed_reactions):
cv.check_type('summed reactions', summed_reactions, Mapping)
self._summed_reactions = summed_reactions
@urr.setter
def urr(self, urr):
cv.check_type('probability tables', urr,
(ProbabilityTables, type(None)))
self._urr = urr
def export_to_hdf5(self, path, mode='a'):
"""Export table to an HDF5 file.
Parameters
----------
path : str
Path to write HDF5 file to
mode : {'r', r+', 'w', 'x', 'a'}
Mode that is used to open the HDF5 file. This is the second argument
to the :class:`h5py.File` constructor.
"""
f = h5py.File(path, mode)
# Write basic data
g = f.create_group(self.name)
g.attrs['Z'] = self.atomic_number
g.attrs['A'] = self.mass_number
g.attrs['metastable'] = self.metastable
g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio
g.attrs['temperature'] = self.temperature
g.attrs['n_reaction'] = len(self.reactions)
# Write energy grid
g.create_dataset('energy', data=self.energy)
# Write reaction data
for i, rx in enumerate(self.reactions.values()):
rx_group = g.create_group('reaction_{}'.format(i))
rx.to_hdf5(rx_group)
# Write total nu data if available
if len(rx.derived_products) > 0 and 'total_nu' not in g:
tgroup = g.create_group('total_nu')
rx.derived_products[0].to_hdf5(tgroup)
# Write unresolved resonance probability tables
if self.urr is not None:
urr_group = g.create_group('urr')
self.urr.to_hdf5(urr_group)
f.close()
@classmethod
def from_hdf5(self, group_or_filename):
"""Generate continuous-energy neutron interaction data from HDF5 group
Parameters
----------
group_or_filename : h5py.Group or str
HDF5 group containing interaction data. If given as a string, it is
assumed to be the filename for the HDF5 file, and the first group is
used to read from.
Returns
-------
openmc.data.ace.IncidentNeutron
Continuous-energy neutron interaction data
"""
if isinstance(group_or_filename, h5py.Group):
group = group_or_filename
else:
h5file = h5py.File(group_or_filename, 'r')
group = list(h5file.values())[0]
name = group.name[1:]
atomic_number = group.attrs['Z']
mass_number = group.attrs['A']
metastable = group.attrs['metastable']
atomic_weight_ratio = group.attrs['atomic_weight_ratio']
temperature = group.attrs['temperature']
data = IncidentNeutron(name, atomic_number, mass_number, metastable,
atomic_weight_ratio, temperature)
# Read energy grid
data.energy = group['energy'].value
# Read reaction data
n_reaction = group.attrs['n_reaction']
# Write reaction data
for i in range(n_reaction):
rx_group = group['reaction_{}'.format(i)]
rx = Reaction.from_hdf5(rx_group, data.energy)
data.reactions[rx.mt] = rx
# Read total nu data if available
if 'total_nu' in rx_group:
tgroup = rx_group['total_nu']
rx.derived_products = [Product.from_hdf5(tgroup)]
# Read unresolved resonance probability tables
if 'urr' in group:
urr_group = group['urr']
data.urr = ProbabilityTables.from_hdf5(urr_group)
return data
@classmethod
def from_ace(cls, ace_or_filename, metastable_scheme='nndc'):
"""Generate incident neutron continuous-energy data from an ACE table
Parameters
----------
ace : openmc.data.ace.Table or str
ACE table to read from. If given as a string, it is assumed to be
the filename for the ACE file.
metastable_scheme : {'nndc', 'mcnp'}
Determine how ZAID identifiers are to be interpreted in the case of
a metastable nuclide. Because the normal ZAID (=1000*Z + A) does not
encode metastable information, different conventions are used among
different libraries. In MCNP libraries, the convention is to add 400
for a metastable nuclide except for Am242m, for which 95242 is
metastable and 95642 (or 1095242 in newer libraries) is the ground
state. For NNDC libraries, ZAID is given as 1000*Z + A + 100*m.
Returns
-------
openmc.data.IncidentNeutron
Incident neutron continuous-energy data
"""
if isinstance(ace_or_filename, Table):
ace = ace_or_filename
else:
ace = get_table(ace_or_filename)
# If mass number hasn't been specified, make an educated guess
zaid, xs = ace.name.split('.')
zaid = int(zaid)
Z = zaid // 1000
mass_number = zaid % 1000
if metastable_scheme == 'mcnp':
if zaid > 1000000:
# New SZA format
Z = Z % 1000
if zaid == 1095242:
metastable = 0
else:
metastable = zaid // 1000000
else:
if zaid == 95242:
metastable = 1
elif zaid == 95642:
metastable = 0
else:
metastable = 1 if mass_number > 300 else 0
elif metastable_scheme == 'nndc':
metastable = 1 if mass_number > 300 else 0
while mass_number > 3*Z:
mass_number -= 100
# Determine name for group
element = atomic_symbol[Z]
if metastable > 0:
name = '{}{}_m{}.{}'.format(element, mass_number, metastable, xs)
else:
name = '{}{}.{}'.format(element, mass_number, xs)
data = IncidentNeutron(name, Z, mass_number, metastable,
ace.atomic_weight_ratio, ace.temperature)
# Read energy grid
n_energy = ace.nxs[3]
energy = ace.xss[ace.jxs[1]:ace.jxs[1] + n_energy]
data.energy = energy
total_xs = ace.xss[ace.jxs[1] + n_energy:ace.jxs[1] + 2*n_energy]
absorption_xs = ace.xss[ace.jxs[1] + 2*n_energy:ace.jxs[1] + 3*n_energy]
# Create summed reactions (total and absorption)
total = Reaction(1)
total.xs = Tabulated1D(energy, total_xs)
data.summed_reactions[1] = total
absorption = Reaction(27)
absorption.xs = Tabulated1D(energy, absorption_xs)
data.summed_reactions[27] = absorption
# Read each reaction
n_reaction = ace.nxs[4] + 1
for i in range(n_reaction):
rx = Reaction.from_ace(ace, i)
data.reactions[rx.mt] = rx
# Some photon production reactions may be assigned to MTs that don't
# exist, usually MT=4. In this case, we create a new reaction and add
# them
n_photon_reactions = ace.nxs[6]
photon_mts = ace.xss[ace.jxs[13]:ace.jxs[13] +
n_photon_reactions].astype(int)
for mt in np.unique(photon_mts // 1000):
if mt not in data.reactions:
rx = Reaction(mt)
rx.products += _get_photon_products(ace, mt)
data.summed_reactions[mt] = rx
# Read unresolved resonance probability tables
data.urr = ProbabilityTables.from_ace(ace)
return data

512
openmc/data/reaction.py Normal file
View file

@ -0,0 +1,512 @@
from __future__ import division, unicode_literals
from collections import Iterable
from copy import deepcopy
from numbers import Real
import numpy as np
from numpy.polynomial import Polynomial
import openmc.checkvalue as cv
from openmc.stats import Uniform
from .angle_distribution import AngleDistribution
from .angle_energy import AngleEnergy
from .container import Tabulated1D
from .data import reaction_name
from .product import Product
from .uncorrelated import UncorrelatedAngleEnergy
def _get_fission_products(ace):
"""Generate fission products from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
Returns
-------
products : list of openmc.data.Product
Prompt and delayed fission neutrons
derived_products : list of openmc.data.Product
"Total" fission neutron
"""
# No NU block
if ace.jxs[2] == 0:
return None, None
products = []
derived_products = []
# Either prompt nu or total nu is given
if ace.xss[ace.jxs[2]] > 0:
whichnu = 'prompt' if ace.jxs[24] > 0 else 'total'
neutron = Product('neutron')
neutron.emission_mode = whichnu
idx = ace.jxs[2]
LNU = int(ace.xss[idx])
if LNU == 1:
# Polynomial function form of nu
NC = int(ace.xss[idx+1])
coefficients = ace.xss[idx+2 : idx+2+NC]
neutron.yield_ = Polynomial(coefficients)
elif LNU == 2:
# Tabular data form of nu
neutron.yield_ = Tabulated1D.from_ace(ace, idx + 1)
products.append(neutron)
# Both prompt nu and total nu
elif ace.xss[ace.jxs[2]] < 0:
# Read prompt neutron yield
prompt_neutron = Product('neutron')
prompt_neutron.emission_mode = 'prompt'
idx = ace.jxs[2] + 1
LNU = int(ace.xss[idx])
if LNU == 1:
# Polynomial function form of nu
NC = int(ace.xss[idx+1])
coefficients = ace.xss[idx+2 : idx+2+NC]
prompt_neutron.yield_ = Polynomial(coefficients)
elif LNU == 2:
# Tabular data form of nu
prompt_neutron.yield_ = Tabulated1D.from_ace(ace, idx + 1)
# Read total neutron yield
total_neutron = Product('neutron')
total_neutron.emission_mode = 'total'
idx = ace.jxs[2] + int(abs(ace.xss[ace.jxs[2]])) + 1
LNU = int(ace.xss[idx])
if LNU == 1:
# Polynomial function form of nu
NC = int(ace.xss[idx+1])
coefficients = ace.xss[idx+2 : idx+2+NC]
total_neutron.yield_ = Polynomial(coefficients)
elif LNU == 2:
# Tabular data form of nu
total_neutron.yield_ = Tabulated1D.from_ace(ace, idx + 1)
products.append(prompt_neutron)
derived_products.append(total_neutron)
# Check for delayed nu data
if ace.jxs[24] > 0:
yield_delayed = Tabulated1D.from_ace(ace, ace.jxs[24] + 1)
# Delayed neutron precursor distribution
idx = ace.jxs[25]
n_group = ace.nxs[8]
total_group_probability = 0.
for i, group in enumerate(range(n_group)):
delayed_neutron = Product('neutron')
delayed_neutron.emission_mode = 'delayed'
delayed_neutron.decay_rate = ace.xss[idx]
group_probability = Tabulated1D.from_ace(ace, idx + 1)
if np.all(group_probability.y == group_probability.y[0]):
delayed_neutron.yield_ = deepcopy(yield_delayed)
delayed_neutron.yield_.y *= group_probability.y[0]
total_group_probability += group_probability.y[0]
else:
raise NotImplementedError(
'Delayed neutron with energy-dependent group probability')
# Advance position
nr = int(ace.xss[idx + 1])
ne = int(ace.xss[idx + 2 + 2*nr])
idx += 3 + 2*nr + 2*ne
# Energy distribution for delayed fission neutrons
location_start = int(ace.xss[ace.jxs[26] + group])
delayed_neutron.distribution.append(
AngleEnergy.from_ace(ace, ace.jxs[27], location_start))
products.append(delayed_neutron)
# Renormalize delayed neutron yields to reflect fact that in ACE
# file, the sum of the group probabilities is not exactly one
for product in products[1:]:
product.yield_.y /= total_group_probability
return products, derived_products
def _get_photon_products(ace, mt):
"""Generate photon products from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
mt : int
MT number for the desired reaction
Returns
-------
photons : list of openmc.Products
Photons produced from reaction with given MT
"""
n_photon_reactions = ace.nxs[6]
photon_mts = ace.xss[ace.jxs[13]:ace.jxs[13] +
n_photon_reactions].astype(int)
photons = []
for i in range(n_photon_reactions):
# Determine corresponding reaction
neutron_mt = photon_mts[i] // 1000
# Restrict to photons that match the requested MT. Note that if the
# photon is assigned to MT=18 but the file splits fission into
# MT=19,20,21,38, we assign the photon product to each of the individual
# reactions
if neutron_mt == 18:
if mt not in (18, 19, 20, 21, 38):
continue
elif neutron_mt != mt:
continue
# Create photon product and assign to reactions
photon = Product('photon')
# ==================================================================
# Photon yield / production cross section
loca = int(ace.xss[ace.jxs[14] + i])
idx = ace.jxs[15] + loca - 1
mftype = int(ace.xss[idx])
idx += 1
if mftype in (12, 16):
# Yield data taken from ENDF File 12 or 6
mtmult = int(ace.xss[idx])
assert mtmult == neutron_mt
# Read photon yield as function of energy
photon.yield_ = Tabulated1D.from_ace(ace, idx + 1)
elif mftype == 13:
# Cross section data from ENDF File 13
# Energy grid index at which data starts
threshold_idx = int(ace.xss[idx]) - 1
# Get photon production cross section
n_energy = int(ace.xss[idx + 1])
photon._xs = ace.xss[idx + 2:idx + 2 + n_energy]
# Determine yield based on ratio of cross sections
energy = ace.xss[ace.jxs[1] + threshold_idx:
ace.jxs[1] + threshold_idx + n_energy]
photon.yield_ = Tabulated1D(energy, photon._xs)
else:
raise ValueError("MFTYPE must be 12, 13, 16. Got {0}".format(
mftype))
# ==================================================================
# Photon energy distribution
location_start = int(ace.xss[ace.jxs[18] + i])
distribution = AngleEnergy.from_ace(ace, ace.jxs[19], location_start)
assert isinstance(distribution, UncorrelatedAngleEnergy)
# ==================================================================
# Photon angular distribution
loc = int(ace.xss[ace.jxs[16] + i])
if loc == 0:
# No angular distribution data are given for this reaction,
# isotropic scattering is asssumed in LAB
energy = np.array([photon.yield_.x[0], photon.yield_.x[-1]])
mu_isotropic = Uniform(-1., 1.)
distribution.angle = AngleDistribution(
energy, [mu_isotropic, mu_isotropic])
else:
distribution.angle = AngleDistribution.from_ace(ace, ace.jxs[17], loc)
# Add to list of distributions
photon.distribution.append(distribution)
photons.append(photon)
return photons
class Reaction(object):
"""A nuclear reaction
A Reaction object represents a single reaction channel for a nuclide with
an associated cross section and, if present, a secondary angle and energy
distribution.
Parameters
----------
mt : int
The ENDF MT number for this reaction. On occasion, MCNP uses MT numbers
that don't correspond exactly to the ENDF specification.
Attributes
----------
center_of_mass : bool
Indicates whether scattering kinematics should be performed in the
center-of-mass or laboratory reference frame.
grid above the threshold value in barns.
mt : int
The ENDF MT number for this reaction.
q_value : float
The Q-value of this reaction in MeV.
table : openmc.data.ace.Table
The ACE table which contains this reaction.
threshold : float
Threshold of the reaction in MeV
threshold_idx : int
The index on the energy grid corresponding to the threshold of this
reaction.
xs : openmc.data.Tabulated1D
Microscopic cross section for this reaction as a function of incident
energy
products : Iterable of openmc.data.Product
Reaction products
derived_products : Iterable of openmc.data.Product
Derived reaction products. Used for 'total' fission neutron data when
prompt/delayed data also exists.
"""
def __init__(self, mt):
self.center_of_mass = True
self.mt = mt
self.q_value = 0.
self.threshold_idx = 0
self._xs = None
self.products = []
self.derived_products = []
def __repr__(self):
if self.mt in reaction_name:
return "<ACE Reaction: MT={} {}>".format(self.mt, reaction_name[self.mt])
else:
return "<ACE Reaction: MT={}>".format(self.mt)
@property
def center_of_mass(self):
return self._center_of_mass
@property
def q_value(self):
return self._q_value
@property
def products(self):
return self._products
@property
def threshold(self):
return self.xs.x[0]
@property
def xs(self):
return self._xs
@center_of_mass.setter
def center_of_mass(self, center_of_mass):
cv.check_type('center of mass', center_of_mass, (bool, np.bool_))
self._center_of_mass = center_of_mass
@q_value.setter
def q_value(self, q_value):
cv.check_type('Q value', q_value, Real)
self._q_value = q_value
@products.setter
def products(self, products):
cv.check_type('reaction products', products, Iterable, Product)
self._products = products
@xs.setter
def xs(self, xs):
cv.check_type('reaction cross section', xs, Tabulated1D)
for y in xs.y:
cv.check_greater_than('reaction cross section', y, 0.0, True)
self._xs = xs
def to_hdf5(self, group):
"""Write reaction to an HDF5 group
Parameters
----------
group : h5py.Group
HDF5 group to write to
"""
group.attrs['mt'] = self.mt
if self.mt in reaction_name:
group.attrs['label'] = np.string_(reaction_name[self.mt])
else:
group.attrs['label'] = np.string_(self.mt)
group.attrs['Q_value'] = self.q_value
group.attrs['threshold_idx'] = self.threshold_idx + 1
group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0
group.attrs['n_product'] = len(self.products)
if self.xs is not None:
group.create_dataset('xs', data=self.xs.y)
for i, p in enumerate(self.products):
pgroup = group.create_group('product_{}'.format(i))
p.to_hdf5(pgroup)
@classmethod
def from_hdf5(cls, group, energy):
"""Generate reaction from an HDF5 group
Parameters
----------
group : h5py.Group
HDF5 group to write to
energy : Iterable of float
Array of energies at which cross sections are tabulated at
Returns
-------
openmc.data.ace.Reaction
Reaction data
"""
mt = group.attrs['mt']
rx = cls(mt)
rx.q_value = group.attrs['Q_value']
rx.threshold_idx = group.attrs['threshold_idx'] - 1
rx.center_of_mass = bool(group.attrs['center_of_mass'])
# Read cross section
if 'xs' in group:
xs = group['xs'].value
rx.xs = Tabulated1D(energy, xs)
# Read reaction products
n_product = group.attrs['n_product']
products = []
for i in range(n_product):
pgroup = group['product_{}'.format(i)]
products.append(Product.from_hdf5(pgroup))
rx.products = products
return rx
@classmethod
def from_ace(cls, ace, i_reaction):
# Get nuclide energy grid
n_grid = ace.nxs[3]
grid = ace.xss[ace.jxs[1]:ace.jxs[1] + n_grid]
if i_reaction > 0:
mt = int(ace.xss[ace.jxs[3] + i_reaction - 1])
rx = cls(mt)
# Get Q-value of reaction
rx.q_value = ace.xss[ace.jxs[4] + i_reaction - 1]
# ==================================================================
# CROSS SECTION
# Get locator for cross-section data
loc = int(ace.xss[ace.jxs[6] + i_reaction - 1])
# Determine starting index on energy grid
rx.threshold_idx = int(ace.xss[ace.jxs[7] + loc - 1]) - 1
# Determine number of energies in reaction
n_energy = int(ace.xss[ace.jxs[7] + loc])
energy = grid[rx.threshold_idx:rx.threshold_idx + n_energy]
# Read reaction cross section
xs = ace.xss[ace.jxs[7] + loc + 1:ace.jxs[7] + loc + 1 + n_energy]
rx.xs = Tabulated1D(energy, xs)
# ==================================================================
# YIELD AND ANGLE-ENERGY DISTRIBUTION
# Determine multiplicity
ty = ace.xss[ace.jxs[5] + i_reaction - 1]
rx.center_of_mass = (ty < 0)
if i_reaction < ace.nxs[5] + 1:
if ty != 19:
if abs(ty) > 100:
# Energy-dependent neutron yield
idx = ace.jxs[11] + abs(ty) - 101
yield_ = Tabulated1D.from_ace(ace, idx)
else:
yield_ = abs(ty)
neutron = Product('neutron')
neutron.yield_ = yield_
rx.products.append(neutron)
else:
assert mt in (18, 19, 20, 21, 38)
rx.products, rx.derived_products = _get_fission_products(ace)
for p in rx.products:
if p.emission_mode in ('prompt', 'total'):
neutron = p
break
else:
raise Exception("Couldn't find prompt/total fission neutron")
# Determine locator for ith energy distribution
lnw = int(ace.xss[ace.jxs[10] + i_reaction - 1])
while lnw > 0:
# Applicability of this distribution
neutron.applicability.append(Tabulated1D.from_ace(
ace, ace.jxs[11] + lnw + 2))
# Read energy distribution data
neutron.distribution.append(AngleEnergy.from_ace(
ace, ace.jxs[11], lnw, rx))
lnw = int(ace.xss[ace.jxs[11] + lnw - 1])
else:
# Elastic scattering
mt = 2
rx = cls(mt)
elastic_xs = ace.xss[ace.jxs[1] + 3*n_grid:ace.jxs[1] + 4*n_grid]
rx.xs = Tabulated1D(grid, elastic_xs)
# No energy distribution for elastic scattering
neutron = Product('neutron')
neutron.distribution.append(UncorrelatedAngleEnergy())
rx.products.append(neutron)
# ======================================================================
# ANGLE DISTRIBUTION (FOR UNCORRELATED)
if i_reaction < ace.nxs[5] + 1:
# Check if angular distribution data exist
loc = int(ace.xss[ace.jxs[8] + i_reaction])
if loc <= 0:
# Angular distribution is either given as part of a product
# angle-energy distribution or is not given at all (in which
# case isotropic scattering is assumed)
angle_dist = None
else:
angle_dist = AngleDistribution.from_ace(ace, ace.jxs[9], loc)
# Apply angular distribution to each uncorrelated angle-energy
# distribution
if angle_dist is not None:
for d in neutron.distribution:
d.angle = angle_dist
# ======================================================================
# PHOTON PRODUCTION
rx.products += _get_photon_products(ace, mt)
return rx

View file

@ -1,9 +1,39 @@
from collections import Iterable
from difflib import get_close_matches
from numbers import Real
from warnings import warn
import numpy as np
import h5py
import openmc.checkvalue as cv
from .ace import Table, get_table
from .container import Tabulated1D
_THERMAL_NAMES = {'al': 'c_Al27', 'al27': 'c_Al27',
'be': 'c_Be',
'bebeo': 'c_Be_in_BeO', 'be-o': 'c_Be_in_BeO',
'benz': 'c_Benzine',
'cah': 'c_Ca_in_CaH2',
'dd2o': 'c_D_in_D2O', 'hwtr': 'c_D_in_D2O',
'fe': 'c_Fe56', 'fe56': 'c_Fe56',
'graph': 'c_Graphite', 'grph': 'c_Graphite',
'hca': 'c_H_in_CaH2',
'hch2': 'c_H_in_CH2', 'poly': 'c_H_in_CH2',
'hh2o': 'c_H_in_H2O', 'lwtr': 'c_H_in_H2O',
'hzrh': 'c_H_in_ZrH', 'h-zr': 'c_H_in_ZrH',
'lch4': 'c_liquid_CH4', 'lmeth': 'c_liquid_CH4',
'mg': 'c_Mg24',
'obeo': 'c_O_in_BeO', 'o-be': 'c_O_in_BeO',
'orthod': 'c_ortho_D', 'dortho': 'c_ortho_D',
'orthoh': 'c_ortho_H', 'hortho': 'c_ortho_H',
'ouo2': 'c_O_in_UO2', 'o2-u': 'c_O_in_UO2',
'parad': 'c_para_D', 'dpara': 'c_para_D',
'parah': 'c_para_H', 'hpara': 'c_para_H',
'sch4': 'c_solid_CH4', 'smeth': 'c_solid_CH4',
'uuo2': 'c_U_in_UO2', 'u-o2': 'c_U_in_UO2',
'zrzrh': 'c_Zr_in_ZrH', 'zr-h': 'c_Zr_in_ZrH'}
class CoherentElastic(object):
@ -87,6 +117,277 @@ class CoherentElastic(object):
Coherent elastic scattering cross section
"""
bragg_edges = dataset.value[0,:]
factors = dataset.value[1,:]
bragg_edges = dataset.value[0, :]
factors = dataset.value[1, :]
return cls(bragg_edges, factors)
class ThermalScattering(object):
"""A ThermalScattering object contains thermal scattering data as represented by
an S(alpha, beta) table.
Parameters
----------
name : str
ZAID identifier of the table, e.g. lwtr.10t.
atomic_weight_ratio : float
Atomic mass ratio of the target nuclide.
temperature : float
Temperature of the target nuclide in eV.
Attributes
----------
atomic_weight_ratio : float
Atomic mass ratio of the target nuclide.
elastic_xs : openmc.data.Tabulated1D or openmc.data.CoherentElastic
Elastic scattering cross section derived in the coherent or incoherent
approximation
inelastic_xs : openmc.data.Tabulated1D
Inelastic scattering cross section derived in the incoherent
approximation
name : str
Name of the table, e.g. lwtr.20t.
temperature : float
Temperature of the target nuclide in eV.
zaids : Iterable of int
ZAID identifiers that the thermal scattering data applies to
"""
def __init__(self, name, atomic_weight_ratio, temperature):
self.name = name
self.atomic_weight_ratio = atomic_weight_ratio
self.temperature = temperature
self.elastic_xs = None
self.elastic_mu_out = None
self.inelastic_xs = None
self.inelastic_e_out = None
self.inelastic_mu_out = None
self.secondary_mode = None
self.zaids = []
def __repr__(self):
if hasattr(self, 'name'):
return "<Thermal Scattering Data: {0}>".format(self.name)
else:
return "<Thermal Scattering Data>"
def export_to_hdf5(self, path, mode='a'):
"""Export table to an HDF5 file.
Parameters
----------
path : str
Path to write HDF5 file to
mode : {'r', r+', 'w', 'x', 'a'}
Mode that is used to open the HDF5 file. This is the second argument
to the :class:`h5py.File` constructor.
"""
f = h5py.File(path, mode)
# Write basic data
g = f.create_group(self.name)
g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio
g.attrs['temperature'] = self.temperature
g.attrs['zaids'] = self.zaids
# Write thermal elastic scattering
if self.elastic_xs is not None:
elastic_group = g.create_group('elastic')
self.elastic_xs.to_hdf5(elastic_group, 'xs')
if self.elastic_mu_out is not None:
elastic_group.create_dataset('mu_out', data=self.elastic_mu_out)
# Write thermal inelastic scattering
if self.inelastic_xs is not None:
inelastic_group = g.create_group('inelastic')
self.inelastic_xs.to_hdf5(inelastic_group, 'xs')
inelastic_group.attrs['secondary_mode'] = np.string_(self.secondary_mode)
if self.secondary_mode in ('equal', 'skewed'):
inelastic_group.create_dataset('energy_out', data=self.inelastic_e_out)
inelastic_group.create_dataset('mu_out', data=self.inelastic_mu_out)
elif self.secondary_mode == 'continuous':
self.inelastic_dist.to_hdf5(inelastic_group)
@classmethod
def from_hdf5(self, group):
"""Generate thermal scattering data from HDF5 group
Parameters
----------
group : h5py.Group
HDF5 group to read from
Returns
-------
openmc.data.ThermalScattering
Neutron thermal scattering data
"""
name = group.name[1:]
atomic_weight_ratio = group.attrs['atomic_weight_ratio']
temperature = group.attrs['temperature']
table = ThermalScattering(name, atomic_weight_ratio, temperature)
table.zaids = group.attrs['zaids']
# Read thermal elastic scattering
if 'elastic' in group:
elastic_group = group['elastic']
# Cross section
elastic_xs_type = elastic_group['xs'].attrs['type'].decode()
if elastic_xs_type == 'tab1':
table.elastic_xs = Tabulated1D.from_hdf5(elastic_group['xs'])
elif elastic_xs_type == 'bragg':
table.elastic_xs = CoherentElastic.from_hdf5(elastic_group['xs'])
# Angular distribution
if 'mu_out' in elastic_group:
table.elastic_mu_out = elastic_group['mu_out'].value
# Read thermal inelastic scattering
if 'inelastic' in group:
inelastic_group = group['inelastic']
table.secondary_mode = inelastic_group.attrs['secondary_mode'].decode()
table.inelastic_xs = Tabulated1D.from_hdf5(inelastic_group['xs'])
if table.secondary_mode in ('equal', 'skewed'):
table.inelastic_e_out = inelastic_group['energy_out']
table.inelastic_mu_out = inelastic_group['mu_out']
elif table.secondary_mode == 'continuous':
table.inelastic_dist = AngleEnergy.from_hdf5(inelastic_group)
return table
@classmethod
def from_ace(cls, ace_or_filename, name=None):
"""Generate thermal scattering data from an ACE table
Parameters
----------
ace : openmc.data.ace.Table or str
ACE table to read from. If given as a string, it is assumed to be
the filename for the ACE file.
name : str
GND-conforming name of the material, e.g. c_H_in_H2O. If none is
passed, the appropriate name is guessed based on the name of the ACE
table.
Returns
-------
openmc.data.ThermalScattering
Thermal scattering data
"""
if isinstance(ace_or_filename, Table):
ace = ace_or_filename
else:
ace = get_table(ace_or_filename)
# Get new name that is GND-consistent
ace_name, xs = ace.name.split('.')
if name is None:
if ace_name.lower() in _THERMAL_NAMES:
name = _THERMAL_NAMES[ace_name.lower()] + '.' + xs
else:
# Make an educated guess?? This actually works well for JEFF-3.2
# which stupidly uses names like lw00.32t, lw01.32t, etc. for
# different temperatures
matches = get_close_matches(
ace_name.lower(), _THERMAL_NAMES.keys(), cutoff=0.5)
if len(matches) > 0:
name = _THERMAL_NAMES[matches[0]] + '.' + xs
else:
# OK, we give up. Just use the ACE name.
name = 'c_' + ace.name
warn('Thermal scattering material "{}" is not recognized. '
'Assigning a name of {}.'.format(ace.name, name))
table = cls(name, ace.atomic_weight_ratio, ace.temperature)
# Incoherent inelastic scattering cross section
idx = ace.jxs[1]
n_energy = int(ace.xss[idx])
energy = ace.xss[idx+1 : idx+1+n_energy]
xs = ace.xss[idx+1+n_energy : idx+1+2*n_energy]
table.inelastic_xs = Tabulated1D(energy, xs)
if ace.nxs[7] == 0:
table.secondary_mode = 'equal'
elif ace.nxs[7] == 1:
table.secondary_mode = 'skewed'
elif ace.nxs[7] == 2:
table.secondary_mode = 'continuous'
n_energy_out = ace.nxs[4]
if table.secondary_mode in ('equal', 'skewed'):
n_mu = ace.nxs[3]
idx = ace.jxs[3]
table.inelastic_e_out = ace.xss[idx:idx+n_energy*n_energy_out*(n_mu+2):n_mu+2]
table.inelastic_e_out.shape = (n_energy, n_energy_out)
table.inelastic_mu_out = ace.xss[idx:idx+n_energy*n_energy_out*(n_mu+2)]
table.inelastic_mu_out.shape = (n_energy, n_energy_out, n_mu+2)
table.inelastic_mu_out = table.inelastic_mu_out[:, :, 1:]
else:
n_mu = ace.nxs[3] - 1
idx = ace.jxs[3]
locc = ace.xss[idx:idx + n_energy].astype(int)
n_energy_out = ace.xss[idx + n_energy:idx + 2*n_energy].astype(int)
energy_out = []
mu_out = []
for i in range(n_energy):
idx = locc[i]
# Outgoing energy distribution for incoming energy i
e = ace.xss[idx + 1:idx + 1 + n_energy_out[i]*(n_mu + 3):n_mu + 3]
p = ace.xss[idx + 2:idx + 2 + n_energy_out[i]*(n_mu + 3):n_mu + 3]
c = ace.xss[idx + 3:idx + 3 + n_energy_out[i]*(n_mu + 3):n_mu + 3]
eout_i = Tabular(e, p, 'linear-linear', ignore_negative=True)
eout_i.c = c
# Outgoing angle distribution for each (incoming, outgoing) energy pair
mu_i = []
for j in range(n_energy_out[i]):
mu = ace.xss[idx + 4:idx + 4 + n_mu]
p_mu = 1./n_mu*np.ones(n_mu)
mu_ij = Discrete(mu, p_mu)
mu_ij.c = np.cumsum(p_mu)
mu_i.append(mu_ij)
idx += 3 + n_mu
energy_out.append(eout_i)
mu_out.append(mu_i)
# Create correlated angle-energy distribution
breakpoints = [n_energy]
interpolation = [2]
energy = inelastic_xs.x
table.inelastic_dist = CorrelatedAngleEnergy(
breakpoints, interpolation, energy, energy_out, mu_out)
# Incoherent/coherent elastic scattering cross section
idx = ace.jxs[4]
if idx != 0:
n_energy = int(ace.xss[idx])
energy = ace.xss[idx+1 : idx+1+n_energy]
P = ace.xss[idx+1+n_energy : idx+1+2*n_energy]
if ace.nxs[5] == 4:
table.elastic_xs = CoherentElastic(energy, P)
else:
table.elastic_xs = Tabulated1D(energy, P)
# Angular distribution
n_mu = ace.nxs[6]
if n_mu != -1:
idx = ace.jxs[6]
table.elastic_mu_out = ace.xss[idx:idx + n_energy*n_mu]
table.elastic_mu_out.shape = (n_energy, n_mu)
# Get relevant ZAIDs
pairs = np.fromiter(map(lambda p: p[0], ace.pairs), int)
table.zaids = pairs[np.nonzero(pairs)]
return table

View file

@ -169,3 +169,42 @@ class ProbabilityTables(object):
return cls(energy, table, interpolation, inelastic_flag,
absorption_flag, multiply_smooth)
@classmethod
def from_ace(cls, ace):
"""Generate probability tables from an ACE table
Parameters
----------
ace : openmc.data.ace.Table
ACE table to read from
Returns
-------
openmc.data.ProbabilityTables
Unresolved resonance region probability tables
"""
# Check if URR probability tables are present
idx = ace.jxs[23]
if idx == 0:
return None
N = int(ace.xss[idx]) # Number of incident energies
M = int(ace.xss[idx+1]) # Length of probability table
interpolation = int(ace.xss[idx+2])
inelastic_flag = int(ace.xss[idx+3])
absorption_flag = int(ace.xss[idx+4])
multiply_smooth = (int(ace.xss[idx+5]) == 1)
idx += 6
# Get energies at which tables exist
energy = ace.xss[idx : idx+N]
idx += N
# Get probability tables
table = ace.xss[idx : idx+N*6*M]
table.shape = (N, 6, M)
return cls(energy, table, interpolation, inelastic_flag,
absorption_flag, multiply_smooth)

View file

@ -625,7 +625,7 @@ class Library(object):
in the report. Defaults to 'all'.
nuclides : {'all', 'sum'}
The nuclides of the cross-sections to include in the report. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will report the cross sections for all
nuclides in the spatial domain. The special string 'sum' will report
the cross sections summed over all nuclides. Defaults to 'all'.
@ -758,7 +758,7 @@ class Library(object):
xsdata_name : str
Name to apply to the "xsdata" entry produced by this method
nuclide : str
A nuclide name string (e.g., 'U-235'). Defaults to 'total' to
A nuclide name string (e.g., 'U235'). Defaults to 'total' to
obtain a material-wise macroscopic cross section.
xs_type: {'macro', 'micro'}
Provide the macro or micro cross section in units of cm^-1 or

View file

@ -120,7 +120,7 @@ class MGXS(object):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -494,7 +494,7 @@ class MGXS(object):
-------
list of str
A list of the string names for each nuclide in the spatial domain
(e.g., ['U-235', 'U-238', 'O-16'])
(e.g., ['U235', 'U238', 'O16'])
Raises
------
@ -522,7 +522,7 @@ class MGXS(object):
Parameters
----------
nuclide : str
A nuclide name string (e.g., 'U-235')
A nuclide name string (e.g., 'U235')
Returns
-------
@ -557,7 +557,7 @@ class MGXS(object):
Parameters
----------
nuclides : Iterable of str or 'all' or 'sum'
A list of nuclide name strings (e.g., ['U-235', 'U-238']). The
A list of nuclide name strings (e.g., ['U235', 'U238']). The
special string 'all' will return the atom densities for all nuclides
in the spatial domain. The special string 'sum' will return the atom
density summed across all nuclides in the spatial domain. Defaults
@ -716,7 +716,7 @@ class MGXS(object):
subdomains : Iterable of Integral or 'all'
Subdomain IDs of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
A list of nuclide name strings (e.g., ['U-235', 'U-238']). The
A list of nuclide name strings (e.g., ['U235', 'U238']). The
special string 'all' will return the cross sections for all nuclides
in the spatial domain. The special string 'sum' will return the
cross section summed over all nuclides. Defaults to 'all'.
@ -954,7 +954,7 @@ class MGXS(object):
----------
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
groups : list of int
A list of energy group indices starting at 1 for the high energies
(e.g., [1, 2, 3]; default is [])
@ -1111,7 +1111,7 @@ class MGXS(object):
Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the report. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will report the cross sections for all
nuclides in the spatial domain. The special string 'sum' will report
the cross sections summed over all nuclides. Defaults to 'all'.
@ -1215,7 +1215,7 @@ class MGXS(object):
Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the report. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will report the cross sections for all
nuclides in the spatial domain. The special string 'sum' will report
the cross sections summed over all nuclides. Defaults to 'all'.
@ -1414,7 +1414,7 @@ class MGXS(object):
Energy groups of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the dataframe. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will include the cross sections for all
nuclides in the spatial domain. The special string 'sum' will
include the cross sections summed over all nuclides. Defaults
@ -1603,7 +1603,7 @@ class MatrixMGXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -1652,7 +1652,7 @@ class MatrixMGXS(MGXS):
subdomains : Iterable of Integral or 'all'
Subdomain IDs of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
A list of nuclide name strings (e.g., ['U-235', 'U-238']). The
A list of nuclide name strings (e.g., ['U235', 'U238']). The
special string 'all' will return the cross sections for all
nuclides in the spatial domain. The special string 'sum' will
return the cross section summed over all nuclides. Defaults to
@ -1790,7 +1790,7 @@ class MatrixMGXS(MGXS):
----------
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
in_groups : list of int
A list of incoming energy group indices starting at 1 for the high
energies (e.g., [1, 2, 3]; default is [])
@ -1840,7 +1840,7 @@ class MatrixMGXS(MGXS):
Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the report. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will report the cross sections for all
nuclides in the spatial domain. The special string 'sum' will
report the cross sections summed over all nuclides. Defaults to
@ -2024,7 +2024,7 @@ class TotalXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2142,7 +2142,7 @@ class TransportXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2272,7 +2272,7 @@ class NuTransportXS(TransportXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2393,7 +2393,7 @@ class AbsorptionXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2509,7 +2509,7 @@ class CaptureXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2631,7 +2631,7 @@ class FissionXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2742,7 +2742,7 @@ class NuFissionXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2858,7 +2858,7 @@ class KappaFissionXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -2971,7 +2971,7 @@ class ScatterXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -3086,7 +3086,7 @@ class NuScatterXS(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -3220,7 +3220,7 @@ class ScatterMatrixXS(MatrixMGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -3383,7 +3383,7 @@ class ScatterMatrixXS(MatrixMGXS):
----------
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
in_groups : list of int
A list of incoming energy group indices starting at 1 for the high
energies (e.g., [1, 2, 3]; default is [])
@ -3465,7 +3465,7 @@ class ScatterMatrixXS(MatrixMGXS):
subdomains : Iterable of Integral or 'all'
Subdomain IDs of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
A list of nuclide name strings (e.g., ['U-235', 'U-238']). The
A list of nuclide name strings (e.g., ['U235', 'U238']). The
special string 'all' will return the cross sections for all nuclides
in the spatial domain. The special string 'sum' will return the
cross section summed over all nuclides. Defaults to 'all'.
@ -3612,7 +3612,7 @@ class ScatterMatrixXS(MatrixMGXS):
Energy groups of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the dataframe. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will include the cross sections for all
nuclides in the spatial domain. The special string 'sum' will
include the cross sections summed over all nuclides. Defaults
@ -3679,7 +3679,7 @@ class ScatterMatrixXS(MatrixMGXS):
Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the report. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will report the cross sections for all
nuclides in the spatial domain. The special string 'sum' will report
the cross sections summed over all nuclides. Defaults to 'all'.
@ -3869,7 +3869,7 @@ class NuScatterMatrixXS(ScatterMatrixXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -3991,7 +3991,7 @@ class MultiplicityMatrixXS(MatrixMGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -4138,7 +4138,7 @@ class NuFissionMatrixXS(MatrixMGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -4253,7 +4253,7 @@ class Chi(MGXS):
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
The optional user-specified nuclides for which to compute cross
sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
are not specified by the user, all nuclides in the spatial domain
are included. This attribute is 'sum' if by_nuclide is false.
sparse : bool
@ -4331,7 +4331,7 @@ class Chi(MGXS):
----------
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
groups : list of Integral
A list of energy group indices starting at 1 for the high energies
(e.g., [1, 2, 3]; default is [])
@ -4442,7 +4442,7 @@ class Chi(MGXS):
subdomains : Iterable of Integral or 'all'
Subdomain IDs of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
A list of nuclide name strings (e.g., ['U-235', 'U-238']). The
A list of nuclide name strings (e.g., ['U235', 'U238']). The
special string 'all' will return the cross sections for all nuclides
in the spatial domain. The special string 'sum' will return the
cross section summed over all nuclides. Defaults to 'all'.
@ -4575,7 +4575,7 @@ class Chi(MGXS):
Energy groups of interest. Defaults to 'all'.
nuclides : Iterable of str or 'all' or 'sum'
The nuclides of the cross-sections to include in the dataframe. This
may be a list of nuclide name strings (e.g., ['U-235', 'U-238']).
may be a list of nuclide name strings (e.g., ['U235', 'U238']).
The special string 'all' will include the cross sections for all
nuclides in the spatial domain. The special string 'sum' will
include the cross sections summed over all nuclides. Defaults to

View file

@ -100,7 +100,7 @@ class XSdata(object):
alias : str
Separate unique identifier for the xsdata object
zaid : int
1000*(atomic number) + mass number. As an example, the zaid of U-235
1000*(atomic number) + mass number. As an example, the zaid of U235
would be 92235.
awr : float
Atomic weight ratio of an isotope. That is, the ratio of the mass

View file

@ -13,18 +13,18 @@ class Nuclide(object):
Parameters
----------
name : str
Name of the nuclide, e.g. U-235
Name of the nuclide, e.g. U235
xs : str
Cross section identifier, e.g. 71c
Attributes
----------
name : str
Name of the nuclide, e.g. U-235
Name of the nuclide, e.g. U235
xs : str
Cross section identifier, e.g. 71c
zaid : int
1000*(atomic number) + mass number. As an example, the zaid of U-235
1000*(atomic number) + mass number. As an example, the zaid of U235
would be 92235.
scattering : 'data' or 'iso-in-lab' or None
The type of angular scattering distribution to use

View file

@ -520,7 +520,7 @@ class Tally(object):
Nuclide to add to the tally. The nuclide should be a Nuclide object
when a user is adding nuclides to a Tally for input file generation.
The nuclide is a str when a Tally is created from a StatePoint file
(e.g., 'H-1', 'U-235') unless a Summary has been linked with the
(e.g., 'H1', 'U235') unless a Summary has been linked with the
StatePoint. The nuclide may be a CrossNuclide or AggregateNuclide
for derived tallies created by tally arithmetic.
@ -1166,7 +1166,7 @@ class Tally(object):
Parameters
----------
nuclide : str
The name of the Nuclide (e.g., 'H-1', 'U-238')
The name of the Nuclide (e.g., 'H1', 'U238')
Returns
-------
@ -1342,7 +1342,7 @@ class Tally(object):
----------
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
Returns
-------
@ -1435,7 +1435,7 @@ class Tally(object):
the filter_types parameter.
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
value : str
A string for the type of value to return - 'mean' (default),
'std_dev', 'rel_err', 'sum', or 'sum_sq' are accepted
@ -2887,7 +2887,7 @@ class Tally(object):
correspond to the filter_types parameter.
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
Returns
-------
@ -3025,7 +3025,7 @@ class Tally(object):
interest.
nuclides : list of str
A list of nuclide name strings to sum across
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
remove_filter : bool
If a filter is being summed over, this bool indicates whether to
remove that filter in the returned tally. Default is False.
@ -3173,7 +3173,7 @@ class Tally(object):
interest.
nuclides : list of str
A list of nuclide name strings to average across
(e.g., ['U-235', 'U-238']; default is [])
(e.g., ['U235', 'U238']; default is [])
remove_filter : bool
If a filter is being averaged over, this bool indicates whether to
remove that filter in the returned tally. Default is False.

139
scripts/openmc-ace-to-hdf5 Executable file
View file

@ -0,0 +1,139 @@
#!/usr/bin/env python
import argparse
import os
import xml.etree.ElementTree as ET
import warnings
import openmc.data
description = """
This script can be used to create HDF5 nuclear data libraries used by
OpenMC. There are four different ways you can specify ACE libraries that are to
be converted:
1. List each ACE library as a positional argument. This is very useful in
conjunction with the usual shell utilities (ls, find, etc.).
2. Use the --xml option to specify a pre-v0.9 cross_sections.xml file.
3. Use the --xsdir option to specify a MCNP xsdir file.
4. Use the --xsdata option to specify a Serpent xsdata file.
The script does not use any extra information from cross_sections.xml/ xsdir/
xsdata files to determine whether the nuclide is metastable. Instead, the
--metastable argument can be used to specify whether the ZAID naming convention
follows the NNDC data convention (1000*Z + A + 300 + 100*m), or the MCNP data
convention (essentially the same as NNDC, except that the first metastable state
of Am242 is 95242 and the ground state is 95642).
"""
class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter,
argparse.RawDescriptionHelpFormatter):
pass
parser = argparse.ArgumentParser(
description=description,
formatter_class=CustomFormatter
)
parser.add_argument('libraries', nargs='*',
help='ACE libraries to convert to HDF5')
parser.add_argument('-d', '--destination', default='.',
help='Directory to create new library in')
parser.add_argument('-m', '--metastable', choices=['mcnp', 'nndc'], default='nndc',
help='How to interpret ZAIDs for metastable nuclides')
parser.add_argument('--xml', help='Old-style cross_sections.xml that '
'lists ACE libraries')
parser.add_argument('--xsdir', help='MCNP xsdir file that lists '
'ACE libraries')
parser.add_argument('--xsdata', help='Serpent xsdata file that lists '
'ACE libraries')
args = parser.parse_args()
if not os.path.isdir(args.destination):
os.mkdir(args.destination)
# If the --xml argument was given, get the list of ACE libraries directory from
# <ace_table> elements within the specified cross_sections.xml file
ace_libraries = []
if args.xml is not None:
tree = ET.parse(args.xml)
root = tree.getroot()
if root.find('directory') is not None:
directory = root.find('directory').text
else:
directory = os.path.dirname(args.xml)
for ace_table in root.findall('ace_table'):
ace_libraries.append(os.path.join(directory, ace_table.attrib['path']))
elif args.xsdir is not None:
# Find 'directory' section
lines = open(args.xsdir, 'r').readlines()
for index, line in enumerate(lines):
if line.strip().lower() == 'directory':
break
else:
raise IOError("Could not find 'directory' section in MCNP xsdir file")
# Create list of ACE libraries
for line in lines[index + 1:]:
words = line.split()
if len(words) < 3:
continue
path = os.path.join(os.path.dirname(args.xsdir), words[2])
if path not in ace_libraries:
ace_libraries.append(path)
elif args.xsdata is not None:
with open(args.xsdata, 'r') as xsdata:
for line in xsdata:
words = line.split()
if len(words) >= 9:
path = os.path.join(os.path.dirname(args.xsdata, words[8]))
if path not in ace_libraries:
ace_libraries.append(path)
else:
ace_libraries = args.libraries
library = openmc.data.DataLibrary()
for filename in ace_libraries:
# Check that ACE library exists
if not os.path.exists(filename):
warnings.warn("ACE library '{}' does not exist.".format(filename))
continue
lib = openmc.data.ace.Library(filename)
for table in lib.tables:
if table.name.endswith('c'):
# Continuous-energy neutron data
neutron = openmc.data.IncidentNeutron.from_ace(
table, args.metastable)
print(neutron.name)
# Determine filename
outfile = os.path.join(args.destination,
neutron.name.replace('.', '_') + '.h5')
neutron.export_to_hdf5(outfile)
# Register with library
library.register_file(outfile)
elif table.name.endswith('t'):
# Thermal scattering data
thermal = openmc.data.ThermalScattering.from_ace(table)
print(thermal.name)
# Determine filename
outfile = os.path.join(args.destination,
thermal.name.replace('.', '_') + '.h5')
thermal.export_to_hdf5(outfile)
# Register with library
library.register_file(outfile, 'thermal')
# Write cross_sections.xml
libpath = os.path.join(args.destination, 'cross_sections.xml')
library.export_to_xml(libpath)

View file

@ -1,13 +0,0 @@
#!/usr/bin/env python
from openmc.ace import ascii_to_binary
import sys
if __name__ == '__main__':
# Check for proper number of arguments
if len(sys.argv) < 3:
sys.exit('Usage: {0} ascii_file binary_file'.format(sys.argv[0]))
# Convert ASCII file
ascii_to_binary(sys.argv[1], sys.argv[2])

View file

@ -22,11 +22,14 @@ optional arguments:
from __future__ import print_function
import argparse
from difflib import get_close_matches
from itertools import chain
from random import randint
from shutil import move
import xml.etree.ElementTree as ET
import openmc.data
from openmc.data.thermal import _THERMAL_NAMES
description = "Update OpenMC's input XML files to the latest format."
epilog = """\
@ -40,6 +43,11 @@ geometry.xml: Lattices containing 'outside' attributes/tags will be replaced
with lattices containing 'outer' attributes, and the appropriate
cells/universes will be added. Any 'surfaces' attributes/elements on a cell
will be renamed 'region'.
materials.xml: Nuclide names will be changed from ACE aliases (e.g., Am-242m) to
HDF5/GND names (e.g., Am242_m1). Thermal scattering table names will be
changed from ACE aliases (e.g., HH2O) to HDF5/GND names (e.g., c_H_in_H2O).
"""
@ -245,6 +253,62 @@ def update_geometry(geometry_root):
return was_updated
def get_thermal_name(name):
"""Get proper S(a,b) table name, e.g. 'HH2O' -> 'c_H_in_H2O'"""
if name.lower() in _THERMAL_NAMES:
return _THERMAL_NAMES[name.lower()]
else:
# Make an educated guess?? This actually works well for
# JEFF-3.2 which stupidly uses names like lw00.32t,
# lw01.32t, etc. for different temperatures
matches = get_close_matches(
name.lower(), _THERMAL_NAMES.keys(), cutoff=0.5)
if len(matches) > 0:
return _THERMAL_NAMES[matches[0]] + '.' + xs
else:
# OK, we give up. Just use the ACE name.
return 'c_' + name
return name
def update_materials(root):
"""Update the given XML materials tree. Return True if changes were made."""
was_updated = False
for material in root.findall('material'):
for nuclide in material.findall('nuclide'):
if 'name' in nuclide.attrib:
nucname = nuclide.attrib['name']
nucname = nucname.replace('-', '')
nucname = nucname.replace('Nat', '0')
if nucname.endswith('m'):
nucname = nucname[:-1] + '_m1'
nuclide.set('name', nucname)
was_updated = True
elif nuclide.find('name') is not None:
name_elem = nuclide.find('name')
nucname = name_elem.text
nucname = nucname.replace('-', '')
nucname = nucname.replace('Nat', '0')
if nucname.endswith('m'):
nucname = nucname[:-1] + '_m1'
name_elem.text = nucname
was_updated = True
for sab in material.findall('sab'):
if 'name' in sab.attrib:
sabname = sab.attrib['name']
sab.set('name', get_thermal_name(sabname))
was_updated = True
elif sab.find('name') is not None:
name_elem = sab.find('name')
sabname = name_elem.text
name_elem.text = get_thermal(sabname)
was_updated = True
return was_updated
if __name__ == '__main__':
args = parse_args()
@ -256,6 +320,8 @@ if __name__ == '__main__':
if root.tag == 'geometry':
was_updated = update_geometry(root)
elif root.tag == 'materials':
was_updated = update_materials(root)
if was_updated:
# Move the original geometry file to preserve it.

View file

@ -1,148 +0,0 @@
#!/usr/bin/env python
import os
import sys
from xml.dom.minidom import getDOMImplementation
types = {1: "neutron", 2: "dosimetry", 3: "thermal"}
class Xsdata(object):
def __init__(self, filename):
self._table_dict = {}
self.tables = []
for line in open(filename, 'r'):
words = line.split()
# If this listing is just an alias listing, only assign the alias
# attribute
name = words[1]
alias = words[0]
table = self.find_table(name)
if table:
if name not in table.alias:
table.alias.append(alias)
continue
table = XsdataTable()
table.name = name
table.type = types[int(words[2])]
table.zaid = int(words[3])
table.metastable = int(words[4])
table.awr = float(words[5])
table.temperature = 8.6173423e-11 * float(words[6])
table.binary = int(words[7])
table.path = words[8]
self.tables.append(table)
self._table_dict[name] = table
# Check for common directory
self.directory = os.path.dirname(self.tables[0].path)
for table in self.tables:
if not table.path.startswith(self.directory):
self.directory = None
break
def to_xml(self):
# Create XML document
impl = getDOMImplementation()
doc = impl.createDocument(None, "cross_sections", None)
# Get root element
root = doc.documentElement
# Add a directory node
if self.directory:
directoryNode = doc.createElement("directory")
text = doc.createTextNode(self.directory)
directoryNode.appendChild(text)
root.appendChild(directoryNode)
for table in self.tables:
table.path = os.path.basename(table.path)
# Add a node for each table
for table in self.tables:
node = table.to_xml_node(doc)
root.appendChild(node)
return doc
def find_table(self, name):
if name in self._table_dict:
return self._table_dict[name]
else:
return None
class XsdataTable(object):
def __init__(self):
self.alias = []
def to_xml_node(self, doc):
node = doc.createElement("ace_table")
node.setAttribute("name", self.name)
for attribute in ["alias", "zaid", "type", "metastable",
"awr", "temperature", "binary", "path"]:
if hasattr(self, attribute):
# Join string for alias attribute
if attribute == "alias":
if not self.alias:
continue
string = " ".join(self.alias)
else:
string = "{0}".format(getattr(self, attribute))
# Skip metastable and binary if 0
if attribute == "metastable" and self.metastable == 0:
continue
if attribute == "binary" and self.binary == 0:
continue
# Create attribute node
# nodeAttr = doc.createElement(attribute)
# text = doc.createTextNode(string)
# nodeAttr.appendChild(text)
# node.appendChild(nodeAttr)
node.setAttribute(attribute, string)
return node
if __name__ == '__main__':
# Read command line arguments
if len(sys.argv) < 3:
sys.exit("Usage: convert_xsdata.py xsdataFile xmlFile")
xsdataFile = sys.argv[1]
xmlFile = sys.argv[2]
# Read xsdata and create XML document object
xsdataObject = Xsdata(xsdataFile)
doc = xsdataObject.to_xml()
# Reduce number of lines
lines = doc.toprettyxml(indent=' ')
lines = lines.replace('<alias>\n ', '<alias>')
lines = lines.replace('\n </alias>', '</alias>')
lines = lines.replace('<zaid>\n ', '<zaid>')
lines = lines.replace('\n </zaid>', '</zaid>')
lines = lines.replace('<type>\n ', '<type>')
lines = lines.replace('\n </type>', '</type>')
lines = lines.replace('<awr>\n ', '<awr>')
lines = lines.replace('\n </awr>', '</awr>')
lines = lines.replace('<temperature>\n ', '<temperature>')
lines = lines.replace('\n </temperature>', '</temperature>')
lines = lines.replace('<path>\n ', '<path>')
lines = lines.replace('\n </path>', '</path>')
lines = lines.replace('<metastable>\n ', '<metastable>')
lines = lines.replace('\n </metastable>', '</metastable>')
lines = lines.replace('<binary>\n ', '<binary>')
lines = lines.replace('\n </binary>', '</binary>')
# Write document in pretty XML to specified file
f = open(xmlFile, 'w')
f.write(lines)
f.close()

View file

@ -1,288 +0,0 @@
#!/usr/bin/env python
import os
import sys
from xml.dom.minidom import getDOMImplementation
elements = [None, "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na",
"Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V",
"Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se",
"Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh",
"Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba",
"La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho",
"Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt",
"Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac",
"Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm",
"Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg",
"Cn"]
class Xsdir(object):
def __init__(self, filename):
self.f = open(filename, 'r')
self.filename = os.path.abspath(filename)
self.directory = os.path.dirname(filename)
self.awr = {}
self.tables = []
self.filetype = set()
self.recordlength = set()
self.entries = set()
# Read first section (DATAPATH)
line = self.f.readline()
words = line.split()
if words:
if words[0].lower().startswith('datapath'):
if '=' in words[0]:
index = line.index('=')
self.datapath = line[index+1:].strip()
else:
if len(line.strip()) > 8:
self.datapath = line[8:].strip()
else:
self.f.seek(0)
# Read second section
line = self.f.readline()
words = line.split()
assert len(words) == 3
assert words[0].lower() == 'atomic'
assert words[1].lower() == 'weight'
assert words[2].lower() == 'ratios'
while True:
line = self.f.readline()
words = line.split()
# Check for end of second section
if len(words) % 2 != 0 or words[0] == 'directory':
break
for zaid, awr in zip(words[::2], words[1::2]):
self.awr[zaid] = awr
# Read third section
while words[0] != 'directory':
words = self.f.readline().split()
while True:
words = self.f.readline().split()
if not words:
break
# Handle continuation lines
while words[-1] == '+':
extraWords = self.f.readline().split()
words = words[:-1] + extraWords
assert len(words) >= 7
# Create XsdirTable object and add to line
table = XsdirTable(self.directory)
self.tables.append(table)
# All tables have at least 7 attributes
table.name = words[0]
table.awr = float(words[1])
table.filename = words[2]
table.access = words[3]
table.filetype = int(words[4])
table.location = int(words[5])
table.length = int(words[6])
self.filetype.add(table.filetype)
if len(words) > 7:
table.recordlength = int(words[7])
self.recordlength.add(table.recordlength)
if len(words) > 8:
table.entries = int(words[8])
self.entries.add(table.entries)
if len(words) > 9:
table.temperature = float(words[9])
if len(words) > 10:
table.ptable = (words[10] == 'ptable')
if len(self.filetype) == 1:
if 1 in self.filetype:
self.filetype = 'ascii'
elif 2 in self.filetype:
self.filetype = 'binary'
else:
self.filetype = None
if len(self.recordlength) == 1:
self.recordlength = list(self.recordlength)[0]
else:
self.recordlength = None
if len(self.entries) == 1:
self.entries = list(self.entries)[0]
else:
self.recordlength = None
def to_xml(self):
# Create XML document
impl = getDOMImplementation()
doc = impl.createDocument(None, "cross_sections", None)
# Get root element
root = doc.documentElement
# Add a directory node
if self.directory:
directoryNode = doc.createElement("directory")
text = doc.createTextNode(self.directory)
directoryNode.appendChild(text)
root.appendChild(directoryNode)
for table in self.tables:
table.path = os.path.basename(table.path)
# Add filetype, record_length and entries nodes
if self.filetype:
node = doc.createElement("filetype")
text = doc.createTextNode(self.filetype)
node.appendChild(text)
root.appendChild(node)
if self.recordlength:
node = doc.createElement("record_length")
text = doc.createTextNode(str(self.recordlength))
node.appendChild(text)
root.appendChild(node)
if self.entries:
node = doc.createElement("entries")
text = doc.createTextNode(str(self.entries))
node.appendChild(text)
root.appendChild(node)
# Add a node for each table
for table in self.tables:
if table.name[-1] in ['e', 'p', 'u', 'h', 'g', 'm', 'd']:
continue
node = table.to_xml_node(doc)
root.appendChild(node)
return doc
class XsdirTable(object):
def __init__(self, directory=None):
self.directory = None
self.name = None
self.awr = None
self.filename = None
self.access = None
self.filetype = None
self.location = None
self.length = None
self.recordlength = None
self.entries = None
self.temperature = None
self.ptable = False
@property
def path(self):
if self.directory:
return os.path.join(self.directory, self.filename)
else:
return self.filename
@path.setter
def path(self, value):
self.diretory = ''
self.filename = value
@property
def metastable(self):
# Only valid for neutron cross-sections
if not self.name.endswith('c'):
return
# Handle special case of Am-242 and Am-242m
if self.zaid == '95242':
return 1
elif self.zaid == '95642':
return 0
# All other cases
A = int(self.zaid) % 1000
if A > 300:
return 1
else:
return 0
@property
def alias(self):
zaid = self.zaid
if zaid:
Z = int(zaid[:-3])
A = zaid[-3:]
if A == '000':
s = 'Nat'
elif zaid == '95242':
s = '242m'
elif zaid == '95642':
s = '242'
elif int(A) > 300:
s = str(int(A) - 400) + "m"
else:
s = str(int(A))
return "{0}-{1}.{2}".format(elements[Z], s, self.xs)
else:
return None
@property
def zaid(self):
if self.name.endswith('c'):
return self.name[:self.name.find('.')]
else:
return 0
@property
def xs(self):
return self.name[self.name.find('.')+1:]
def to_xml_node(self, doc):
node = doc.createElement("ace_table")
node.setAttribute("name", self.name)
for attribute in ["alias", "zaid", "type", "metastable", "awr",
"temperature", "path", "location"]:
if hasattr(self, attribute):
string = str(getattr(self, attribute))
# Skip metastable and binary if 0
if attribute == "metastable" and self.metastable == 0:
continue
# Skip any attribute that is none
if getattr(self, attribute) is None:
continue
# Create attribute node
node.setAttribute(attribute, string)
return node
if __name__ == '__main__':
# Read command line arguments
if len(sys.argv) < 3:
sys.exit("Usage: convert_xsdir.py xsdirFile xmlFile")
xsdirFile = sys.argv[1]
xmlFile = sys.argv[2]
# Read xsdata and create XML document object
xsdirObject = Xsdir(xsdirFile)
doc = xsdirObject.to_xml()
# Reduce number of lines
lines = doc.toprettyxml(indent=' ')
# Write document in pretty XML to specified file
f = open(xmlFile, 'w')
f.write(lines)
f.close()

View file

@ -38,7 +38,7 @@ contains
integer(HSIZE_T) :: dims(1)
call read_attribute(this % Q_value, group_id, 'Q_value')
call read_attribute(this % MT, group_id, 'MT')
call read_attribute(this % MT, group_id, 'mt')
call read_attribute(this % threshold, group_id, 'threshold_idx')
call read_attribute(cm, group_id, 'center_of_mass')
this % scatter_in_cm = (cm == 1)

View file

@ -1,25 +1,12 @@
element cross_sections {
element ace_table {
(element name { xsd:string { maxLength = "15" } } |
attribute name { xsd:string { maxLength = "15" } }) &
(element alias { xsd:string { maxLength = "15" } } |
attribute alias { xsd:string { maxLength = "15" } })? &
(element zaid { xsd:int } | attribute zaid { xsd:int }) &
(element metastable { xsd:int } | attribute metastable { xsd:int })? &
(element awr { xsd:double } | attribute awr { xsd:double }) &
(element temperature { xsd:double } | attribute temperature { xsd:double }) &
(element path { xsd:string { maxLength = "255" } } |
attribute path { xsd:string { maxLength = "255" } }) &
(element location { xsd:int } | attribute location { xsd:int })? &
(element filetype { ( "ascii" | "binary" ) } |
attribute filetype { ( "ascii" | "binary" ) })?
element library {
(element materials { xsd:string } |
attribute materials { xsd:string }) &
(element type { xsd:string } |
attribute type { xsd:string }) &
(element path { xsd:string } |
attribute path { xsd:string })
}* &
element directory { xsd:string { maxLength = "255" } }? &
element filetype { ( "ascii" | "binary" ) } &
element record_length { xsd:int }? &
element entries { xsd:int }?
element directory { xsd:string { maxLength = "255" } }?
}

View file

@ -2,106 +2,32 @@
<element name="cross_sections" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<zeroOrMore>
<element name="ace_table">
<element name="library">
<interleave>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">15</param>
</data>
<element name="materials">
<data type="string"/>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">15</param>
</data>
</attribute>
</choice>
<optional>
<choice>
<element name="alias">
<data type="string">
<param name="maxLength">15</param>
</data>
</element>
<attribute name="alias">
<data type="string">
<param name="maxLength">15</param>
</data>
</attribute>
</choice>
</optional>
<choice>
<element name="zaid">
<data type="int"/>
</element>
<attribute name="zaid">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="metastable">
<data type="int"/>
</element>
<attribute name="metastable">
<data type="int"/>
</attribute>
</choice>
</optional>
<choice>
<element name="awr">
<data type="double"/>
</element>
<attribute name="awr">
<data type="double"/>
<attribute name="materials">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="temperature">
<data type="double"/>
<element name="type">
<data type="string"/>
</element>
<attribute name="temperature">
<data type="double"/>
<attribute name="type">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="path">
<data type="string">
<param name="maxLength">255</param>
</data>
<data type="string"/>
</element>
<attribute name="path">
<data type="string">
<param name="maxLength">255</param>
</data>
<data type="string"/>
</attribute>
</choice>
<optional>
<choice>
<element name="location">
<data type="int"/>
</element>
<attribute name="location">
<data type="int"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="filetype">
<choice>
<value>ascii</value>
<value>binary</value>
</choice>
</element>
<attribute name="filetype">
<choice>
<value>ascii</value>
<value>binary</value>
</choice>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
@ -112,21 +38,5 @@
</data>
</element>
</optional>
<element name="filetype">
<choice>
<value>ascii</value>
<value>binary</value>
</choice>
</element>
<optional>
<element name="record_length">
<data type="int"/>
</element>
</optional>
<optional>
<element name="entries">
<data type="int"/>
</element>
</optional>
</interleave>
</element>