Merge branch 'develop'

This commit is contained in:
Paul Romano 2015-02-10 23:21:57 -05:00
commit 23279c8a2a
102 changed files with 168255 additions and 168514 deletions

View file

@ -1,4 +1,4 @@
Copyright (c) 2011-2014 Massachusetts Institute of Technology
Copyright (c) 2011-2015 Massachusetts Institute of Technology
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -64,7 +64,7 @@
<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="27059.71c" path="293.6K/Co_058m1_293.6K.ace" temperature="2.53e-08" zaid="27059"/>
<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"/>
@ -157,7 +157,7 @@
<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="47119.71c" path="293.6K/Ag_110m1_293.6K.ace" temperature="2.53e-08" zaid="47119"/>
<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"/>
@ -166,7 +166,7 @@
<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="48119.71c" path="293.6K/Cd_115m1_293.6K.ace" temperature="2.53e-08" zaid="48119"/>
<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"/>
@ -195,9 +195,9 @@
<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="52129.71c" path="293.6K/Te_127m1_293.6K.ace" temperature="2.53e-08" zaid="52129"/>
<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="52129.71c" path="293.6K/Te_129m1_293.6K.ace" temperature="2.53e-08" zaid="52129"/>
<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"/>
@ -255,7 +255,7 @@
<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="61149.71c" path="293.6K/Pm_148m1_293.6K.ace" temperature="2.53e-08" zaid="61149"/>
<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"/>
@ -292,7 +292,7 @@
<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="67169.71c" path="293.6K/Ho_166m1_293.6K.ace" temperature="2.53e-08" zaid="67169"/>
<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"/>
@ -388,10 +388,10 @@
<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="95249.71c" path="293.6K/Am_242m1_293.6K.ace" temperature="2.53e-08" zaid="95249"/>
<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="95249.71c" path="293.6K/Am_244m1_293.6K.ace" temperature="2.53e-08" zaid="95249"/>
<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"/>
@ -421,7 +421,7 @@
<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="99259.71c" path="293.6K/Es_254m1_293.6K.ace" temperature="2.53e-08" zaid="99259"/>
<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"/>
@ -487,7 +487,7 @@
<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="27059.72c" path="300K/Co_058m1_300K.ace" temperature="2.585e-08" zaid="27059"/>
<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"/>
@ -580,7 +580,7 @@
<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="47119.72c" path="300K/Ag_110m1_300K.ace" temperature="2.585e-08" zaid="47119"/>
<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"/>
@ -589,7 +589,7 @@
<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="48119.72c" path="300K/Cd_115m1_300K.ace" temperature="2.585e-08" zaid="48119"/>
<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"/>
@ -618,9 +618,9 @@
<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="52129.72c" path="300K/Te_127m1_300K.ace" temperature="2.585e-08" zaid="52129"/>
<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="52129.72c" path="300K/Te_129m1_300K.ace" temperature="2.585e-08" zaid="52129"/>
<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"/>
@ -678,7 +678,7 @@
<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="61149.72c" path="300K/Pm_148m1_300K.ace" temperature="2.585e-08" zaid="61149"/>
<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"/>
@ -715,7 +715,7 @@
<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="67169.72c" path="300K/Ho_166m1_300K.ace" temperature="2.585e-08" zaid="67169"/>
<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"/>
@ -811,10 +811,10 @@
<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="95249.72c" path="300K/Am_242m1_300K.ace" temperature="2.585e-08" zaid="95249"/>
<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="95249.72c" path="300K/Am_244m1_300K.ace" temperature="2.585e-08" zaid="95249"/>
<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"/>
@ -844,7 +844,7 @@
<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="99259.72c" path="300K/Es_254m1_300K.ace" temperature="2.585e-08" zaid="99259"/>
<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"/>

View file

@ -7,6 +7,7 @@ import subprocess
import sys
import tarfile
import glob
import hashlib
try:
from urllib.request import urlopen
@ -20,6 +21,8 @@ from convert_binary 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']
checksums = ['9729a17eb62b75f285d8a7628ace1449',
'e17d827c92940a30f22f096d910ea186']
block_size = 16384
# ==============================================================================
@ -65,6 +68,18 @@ for f in files:
print('')
filesComplete.append(f)
# ==============================================================================
# VERIFY MD5 CHECKSUMS
print('Verifying MD5 checksums...')
for f, checksum in zip(files, checksums):
downloadsum = hashlib.md5(open(f, 'r').read()).hexdigest()
if downloadsum != checksum:
raise IOError("MD5 checksum for {} does not match. If this is your first "
"time receiving this message, please re-run the script. "
"Otherwise, please contact OpenMC developers by emailing "
"openmc-users@googlegroups.com.")
# ==============================================================================
# EXTRACT FILES FROM TGZ
@ -78,6 +93,10 @@ for f in files:
print('Extracting {0}...'.format(f))
tgz.extractall(path='nndc/' + suffix)
# Move ACE files down one level
for filename in glob.glob('nndc/293.6K/ENDF-B-VII.1-neutron-293.6K/*'):
shutil.move(filename, 'nndc/293.6K/')
#===============================================================================
# EDIT GRAPHITE ZAID (6012 to 6000)

View file

@ -1,792 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="901.13098"
height="360.56549"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="New document 1">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path4037"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-2"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-2"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-26"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-3"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-4"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-7"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-9"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-4"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-1"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-0"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-0"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-5"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend-23"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4037-9"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.66342"
inkscape:cx="447.84509"
inkscape:cy="213.81917"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1366"
inkscape:window-height="712"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="20.5655px"
originy="-299.43451px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(20.5655,-392.36218)">
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987"
width="60"
height="60"
x="160"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="170"
y="432.36218"
id="text2989"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991"
x="170"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3882">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993">1</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-3"
width="60"
height="60"
x="250"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="432.36218"
id="text2989-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-9"
x="260"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3884">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-1">2</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-33"
width="60"
height="60"
x="340"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="350"
y="432.36218"
id="text2989-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8"
x="350"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3">3</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-6"
width="60"
height="60"
x="430"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="440"
y="432.36218"
id="text2989-48"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-5"
x="440"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3888">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-17">4</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-9"
width="60"
height="60"
x="520"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="530"
y="432.36218"
id="text2989-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-93"
x="530"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3890">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-4">5</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-2"
width="60"
height="60"
x="610"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="620"
y="432.36218"
id="text2989-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-0"
x="620"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3892">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-5">6</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-5"
width="60"
height="60"
x="700"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="710"
y="432.36218"
id="text2989-30"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-2"
x="710"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3894">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-8">7</tspan></tspan></text>
<rect
style="fill:#8fbdf4;fill-opacity:1;stroke:none"
id="rect2987-22"
width="60"
height="60"
x="790"
y="392.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="800"
y="432.36218"
id="text2989-00"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-09"
x="800"
y="432.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3896">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-0">8</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="70"
y="412.36218"
id="text3898"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3900"
x="70"
y="412.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">Union</tspan><tspan
sodipodi:role="line"
x="70"
y="442.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3902">Energy Grid</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908"
width="60"
height="50"
x="160"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="180"
y="542.36218"
id="text3910"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912"
x="180"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">0</tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="70"
y="518.36218"
id="text3898-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3900-1"
x="70"
y="518.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">Nuclide</tspan><tspan
sodipodi:role="line"
x="70"
y="548.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3902-4">Pointers</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-2"
width="60"
height="50"
x="250"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="270"
y="542.36218"
id="text3910-9"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-8"
x="270"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">0</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-23"
width="60"
height="50"
x="340"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="360"
y="542.36218"
id="text3910-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-5"
x="360"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">1</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-9"
width="60"
height="50"
x="430"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="450"
y="542.36218"
id="text3910-7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-9"
x="450"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">1</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-92"
width="60"
height="50"
x="520"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="540"
y="542.36218"
id="text3910-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-81"
x="540"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">1</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-0"
width="60"
height="50"
x="610"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="630"
y="542.36218"
id="text3910-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-1"
x="630"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">2</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-5"
width="60"
height="50"
x="700"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="720"
y="542.36218"
id="text3910-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-2"
x="720"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">3</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.11800003;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3908-235"
width="60"
height="50"
x="790"
y="502.36218"
ry="3.1880078" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="810"
y="542.36218"
id="text3910-80"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3912-0"
x="810"
y="542.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">3</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 190,452.36218 0,50"
id="path4028"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 280,452.36218 0,50"
id="path4028-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 370,452.36218 0,50"
id="path4028-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 460,452.36218 0,50"
id="path4028-8"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 550,452.36218 0,50"
id="path4028-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 640,452.36218 0,50"
id="path4028-7"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 730,452.36218 0,50"
id="path4028-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.29099441px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 820,452.36218 0,50"
id="path4028-6"
inkscape:connector-curvature="0" />
<rect
style="fill:#98f48f;fill-opacity:1;stroke:none"
id="rect2987-33-9"
width="60"
height="60"
x="340"
y="582.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="350"
y="622.36218"
id="text2989-1-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8-7"
x="350"
y="622.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886-2">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3-9">1</tspan></tspan></text>
<rect
style="fill:#98f48f;fill-opacity:1;stroke:none"
id="rect2987-33-1"
width="60"
height="60"
x="610"
y="582.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="620"
y="622.36218"
id="text2989-1-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8-9"
x="620"
y="622.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886-1">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3-93">2</tspan></tspan></text>
<rect
style="fill:#98f48f;fill-opacity:1;stroke:none"
id="rect2987-33-0"
width="60"
height="60"
x="700"
y="582.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="710"
y="622.36218"
id="text2989-1-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8-4"
x="710"
y="622.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886-5">E</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3-1">3</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="70"
y="602.36218"
id="text3898-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3900-5"
x="70"
y="602.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">Nuclide</tspan><tspan
sodipodi:role="line"
x="70"
y="632.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3902-1">Energy Grid</tspan></text>
<rect
style="fill:#98f48f;fill-opacity:1;stroke:none"
id="rect2987-33-9-5"
width="60"
height="60"
x="340"
y="662.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="350"
y="702.36218"
id="text2989-1-0-9"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8-7-8"
x="350"
y="702.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886-2-3">σ</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3-9-6">1</tspan></tspan></text>
<rect
style="fill:#98f48f;fill-opacity:1;stroke:none"
id="rect2987-33-9-5-0"
width="60"
height="60"
x="610"
y="662.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="620"
y="702.36218"
id="text2989-1-0-9-9"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8-7-8-5"
x="620"
y="702.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886-2-3-2">σ</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3-9-6-2">2</tspan></tspan></text>
<rect
style="fill:#98f48f;fill-opacity:1;stroke:none"
id="rect2987-33-9-5-5"
width="60"
height="60"
x="700"
y="662.36218"
ry="2.5504062" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="710"
y="702.36218"
id="text2989-1-0-9-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2991-8-7-8-7"
x="710"
y="702.36218"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3886-2-3-9">σ</tspan><tspan
style="font-size:65.00091553%;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;baseline-shift:sub;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan2993-3-9-6-9">3</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="70"
y="682.36218"
id="text3898-2-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3900-5-6"
x="70"
y="682.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter">Nuclide</tspan><tspan
sodipodi:role="line"
x="70"
y="712.36218"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Bitstream Charter;-inkscape-font-specification:Bitstream Charter"
id="tspan3902-1-1">Cross Sections</tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="251.72591"
y="769.73578"
id="text4762"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4764"
x="251.72591"
y="769.73578"></tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,2;stroke-dashoffset:0"
id="rect4766"
width="900"
height="280"
x="-20"
y="472.36218"
ry="2.5504062" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 35 KiB

View file

@ -48,7 +48,7 @@ copyright = u'2011-2014, Massachusetts Institute of Technology'
# The short X.Y version.
version = "0.6"
# The full version, including alpha/beta/rc tags.
release = "0.6.1"
release = "0.6.2"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View file

@ -10,6 +10,8 @@ Active development of the OpenMC Monte Carlo code is currently led by:
* `Bryan Herman <https://github.com/bhermanmit>`_
* `Nick Horelik <https://github.com/nhorelik>`_
* `Adam Nelson <https://github.com/nelsonag>`_
* `Jon Walsh <https://github.com/walshjon>`_
* `Sterling Harper <https://github.com/walshjon>`_
* `Benoit Forget <http://web.mit.edu/nse/people/faculty/forget.html>`_
* `Kord Smith <http://web.mit.edu/nse/people/faculty/smith.html>`_
* `Andrew Siegel <http://www.mcs.anl.gov/about/people_detail.php?id=404>`_

View file

@ -4,6 +4,292 @@
State Point Binary File Specifications
======================================
-----------
Revision 13
-----------
**integer(4) FILETYPE_STATEPOINT**
Flags whether this file is a statepoint file or a particle restart file.
**integer(4) REVISION_STATEPOINT**
Revision of the binary state point file. Any time a change is made in the
format of the state-point file, this integer is incremented.
**integer(4) VERSION_MAJOR**
Major version number for OpenMC
**integer(4) VERSION_MINOR**
Minor version number for OpenMC
**integer(4) VERSION_RELEASE**
Release version number for OpenMC
**character(19) time_stamp**
Date and time the state point was written.
**character(255) path**
Absolute path to directory containing input files.
**integer(8) seed**
Pseudo-random number generator seed.
**integer(4) run_mode**
run mode used. The modes are described in constants.F90.
**integer(8) n_particles**
Number of particles used per generation.
**integer(4) current_batch**
The number of batches already simulated.
if (run_mode == MODE_EIGENVALUE)
**integer(4) n_inactive**
Number of inactive batches
**integer(4) gen_per_batch**
Number of generations per batch for criticality calculations
*do i = 1, current_batch \* gen_per_batch*
**real(8) k_generation(i)**
k-effective for the i-th total generation
*do i = 1, current_batch \* gen_per_batch*
**real(8) entropy(i)**
Shannon entropy for the i-th total generation
**real(8) k_col_abs**
Sum of product of collision/absorption estimates of k-effective
**real(8) k_col_tra**
Sum of product of collision/track-length estimates of k-effective
**real(8) k_abs_tra**
Sum of product of absorption/track-length estimates of k-effective
**real(8) k_combined(2)**
Mean and standard deviation of a combined estimate of k-effective
**integer(4) cmfd_on**
Flag that cmfd is on
if (cmfd_on)
**integer(4) cmfd % indices**
Indices for cmfd mesh (i,j,k,g)
**real(8) cmfd % k_cmfd(1:current_batch)**
CMFD eigenvalues
**real(8) cmfd % src(1:G,1:I,1:J,1:K)**
CMFD fission source
**real(8) cmfd % entropy(1:current_batch)**
CMFD estimate of Shannon entropy
**real(8) cmfd % balance(1:current_batch)**
RMS of the residual neutron balance equation on CMFD mesh
**real(8) cmfd % dom(1:current_batch)**
CMFD estimate of dominance ratio
**real(8) cmfd % scr_cmp(1:current_batch)**
RMS comparison of difference between OpenMC and CMFD fission source
**integer(4) n_meshes**
Number of meshes in tallies.xml file
*do i = 1, n_meshes*
**integer(4) meshes(i) % id**
Unique ID of mesh.
**integer(4) meshes(i) % type**
Type of mesh.
**integer(4) meshes(i) % n_dimension**
Number of dimensions for mesh (2 or 3).
**integer(4) meshes(i) % dimension(:)**
Number of mesh cells in each dimension.
**real(8) meshes(i) % lower_left(:)**
Coordinates of lower-left corner of mesh.
**real(8) meshes(i) % upper_right(:)**
Coordinates of upper-right corner of mesh.
**real(8) meshes(i) % width(:)**
Width of each mesh cell in each dimension.
**integer(4) n_tallies**
*do i = 1, n_tallies*
**integer(4) tallies(i) % id**
Unique ID of tally.
**integer(4) tallies(i) % n_realizations**
Number of realizations for the i-th tally.
**integer(4) size(tallies(i) % scores, 1)**
Total number of score bins for the i-th tally
**integer(4) size(tallies(i) % scores, 2)**
Total number of filter bins for the i-th tally
**integer(4) tallies(i) % n_filters**
*do j = 1, tallies(i) % n_filters*
**integer(4) tallies(i) % filter(j) % type**
Type of tally filter.
**integer(4) tallies(i) % filter(j) % n_bins**
Number of bins for filter.
**integer(4)/real(8) tallies(i) % filter(j) % bins(:)**
Value for each filter bin of this type.
**integer(4) tallies(i) % n_nuclide_bins**
Number of nuclide bins. If none are specified, this is just one.
*do j = 1, tallies(i) % n_nuclide_bins*
**integer(4) tallies(i) % nuclide_bins(j)**
Values of specified nuclide bins
**integer(4) tallies(i) % n_score_bins**
Number of scoring bins.
*do j = 1, tallies(i) % n_score_bins*
**integer(4) tallies(i) % score_bins(j)**
Values of specified scoring bins (e.g. SCORE_FLUX).
*do j = 1, tallies(i) % n_score_bins*
**integer(4) tallies(i) % scatt_order(j)**
Scattering Order specified scoring bins.
**integer(4) tallies(i) % n_score_bins**
Number of scoring bins without accounting for those added by
the scatter-pn command.
**integer(4) source_present**
Flag indicated if source bank is present in the file
**integer(4) n_realizations**
Number of realizations for global tallies.
**integer(4) N_GLOBAL_TALLIES**
Number of global tally scores
*do i = 1, N_GLOBAL_TALLIES*
**real(8) global_tallies(i) % sum**
Accumulated sum for the i-th global tally
**real(8) global_tallies(i) % sum_sq**
Accumulated sum of squares for the i-th global tally
**integer(4) tallies_on**
Flag indicated if tallies are present in the file.
if (tallies_on > 0)
*do i = 1, n_tallies*
*do k = 1, size(tallies(i) % scores, 2)*
*do j = 1, size(tallies(i) % scores, 1)*
**real(8) tallies(i) % scores(j,k) % sum**
Accumulated sum for the j-th score and k-th filter of the
i-th tally
**real(8) tallies(i) % scores(j,k) % sum_sq**
Accumulated sum of squares for the j-th score and k-th
filter of the i-th tally
if (run_mode == MODE_EIGENVALUE and source_present)
*do i = 1, n_particles*
**real(8) source_bank(i) % wgt**
Weight of the i-th source particle
**real(8) source_bank(i) % xyz(1:3)**
Coordinates of the i-th source particle.
**real(8) source_bank(i) % uvw(1:3)**
Direction of the i-th source particle
**real(8) source_bank(i) % E**
Energy of the i-th source particle.
-----------
Revision 12
-----------

View file

@ -4,7 +4,7 @@
License Agreement
=================
Copyright © 2011-2014 Massachusetts Institute of Technology
Copyright © 2011-2015 Massachusetts Institute of Technology
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -47,45 +47,28 @@ there would be for burnup calculations. Thus, there is a strong motive to
implement a method of reducing the number of energy grid searches in order to
speed up the calculation.
Unionized Energy Grid
---------------------
Logarithmic Mapping
-------------------
The most naïve method to reduce the number of energy grid searches is to
construct a new energy grid that consists of the union of the energy points of
each nuclide and use this energy grid for all nuclides. This method is
computationally very efficient as it only requires one energy grid search at
each collision as well as one interpolation between cross section values since
the interpolation factor can be used for all nuclides. However, it requires
redundant storage of cross section values at points which were added to each
nuclide grid. This additional burden on memory storage can become quite
prohibitive. To lessen that burden, the unionized energy grid can be thinned
with cross sections reconstructed on the thinned energy grid. This method is
currently used by default in the Serpent Monte Carlo code.
To speed up energy grid searches, OpenMC uses logarithmic mapping technique
[Brown]_ to limit the range of energies that must be searched for each
nuclide. The entire energy range is divided up into equal-lethargy segments, and
the bounding energies of each segment are mapped to bounding indices on each of
the nuclide energy grids. By default, OpenMC uses 8000 equal-lethargy segments
as recommended by Brown.
Unionized Energy Grid with Nuclide Pointers
-------------------------------------------
Other Methods
-------------
While having a unionized grid that is used for all nuclides allows for very fast
lookup of cross sections, the burden on memory is in many circumstances
unacceptable. The OpenMC Monte Carlo code utilizes a method that allows for a
single energy grid search to be performed at every collision while avoiding the
redundant storage of cross section values. Instead of using the unionized grid
for every nuclide, the original energy grid of each nuclide is kept and a list
of pointers (of the same length as the unionized energy grid) is constructed for
each nuclide that gives the corresponding grid index on the nuclide grid for a
given grid index on the unionized grid. One must still interpolate on cross
section values for each nuclide since the interpolation factors will generally
be different. The figure below illustrates this method. All values within the
dashed box would need to be stored on a per-nuclide basis, and the union grid
would need to be stored once. This method is also referred to as *double
indexing* and is available as an option in Serpent (see paper by Leppanen_).
A good survey of other energy grid techniques, including unionized energy grids,
can be found in a paper by Leppanen_.
.. figure:: ../_images/uniongrid.*
:width: 600px
:align: center
:figclass: align-center
----------
References
----------
Mapping of union energy grid to nuclide energy grid through pointers.
.. [Brown] Forrest B. Brown, "New Hash-based Energy Lookup Algorithm for Monte
Carlo codes," LA-UR-14-24530, Los Alamos National Laboratory (2014).
.. _MCNP: http://mcnp.lanl.gov
.. _Serpent: http://montecarlo.vtt.fi

View file

@ -421,7 +421,7 @@ satisfy the following equations
x^2 + y^2 + z^2 - 10^2 < 0 \\
x - (-3) > 0 \\
x - 2 < 0
y - 2 < 0
In order to determine if a point is inside the cell, we would substitute its
coordinates into equation :eq:`cell-contains-example`. If the inequalities are

View file

@ -682,17 +682,20 @@ nuclear temperature, which is a function of the incoming energy of the
neutron. The ACE 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 C45 in
the `Monte Carlo Sampler`_:
determined, we then calculate a candidate outgoing energy based on the algorithm
given in LA-UR-14-27694_:
.. math::
:label: evaporation-E
E' = -T \log (\xi_1 \xi_2)
E' = -T \log ((1 - g\xi_1)(1 - g\xi_2))
where :math:`\xi_1, \xi_2` are random numbers sampled on the unit
interval. The outgoing energy is only accepted according to a specified
restriction energy as in equation :eq:`maxwell-restriction`.
where :math:`g = 1 - e^{-w}`, :math:`w = (E - U)/T`, :math:`U` is the
restriction energy, and :math:`\xi_1, \xi_2` are random numbers sampled on the
unit interval. The outgoing energy is only accepted according to the restriction
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
+++++++++++++++++++++++++++++++++++++++++++
@ -1591,6 +1594,8 @@ References
.. _Monte Carlo Sampler: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-9721_3rdmcsampler.pdf
.. _LA-UR-14-27694: http://permalink.lanl.gov/object/tr?what=info:lanl-repo/lareport/LA-UR-14-27694
.. _MC21: http://www.osti.gov/bridge/servlets/purl/903083-HT5p1o/903083.pdf
.. _Sutton and Brown: http://www.osti.gov/bridge/product.biblio.jsp?osti_id=307911

View file

@ -35,9 +35,9 @@ OpenMC from source as is described in :ref:`usersguide_install`.
Installing from Source on Linux or Mac OS X
-------------------------------------------
All OpenMC source code is hosted on GitHub_. If you have git_ and the gfortran_
compiler installed, you can download and install OpenMC be entering the
following commands in a terminal:
All OpenMC source code is hosted on GitHub_. If you have git_, the gfortran_
compiler, and CMake_ installed, you can download and install OpenMC be entering
the following commands in a terminal:
.. code-block:: sh
@ -58,3 +58,4 @@ can be replaced with a local install, e.g.
.. _GitHub: https://github.com/mit-crpg/openmc
.. _git: http://git-scm.com
.. _gfortran: http://gcc.gnu.org/wiki/GFortran
.. _CMake: http://www.cmake.org

View file

@ -10,6 +10,7 @@ bugs fixed, and known issues for each successive release.
.. toctree::
:maxdepth: 1
notes_0.6.2
notes_0.6.1
notes_0.6.0
notes_0.5.4

View file

@ -0,0 +1,58 @@
.. _notes_0.6.2:
==============================
Release Notes for OpenMC 0.6.2
==============================
-------------------
System Requirements
-------------------
There are no special requirements for running the OpenMC code. As of this
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
and Microsoft Windows 7. Memory requirements will vary depending on the size of
the problem at hand (mostly on the number of nuclides in the problem).
------------
New Features
------------
- Meshline plotting capability
- Support for plotting cells/materials on middle universe levels
- Ability to model cells with no surfaces
- Compatibility with PETSc 3.5
- Compatability with OpenMPI 1.7/1.8
- Improved overall performance via logarithmic-mapped energy grid search
- Improved multi-threaded performance with atomic operations
- Support for fixed source problems with fissionable materials
---------
Bug Fixes
---------
- 26fb93_: Fix problem with -t, --track command-line flag
- 2f07c0_: Improved evaporation spectrum algorithm
- e6abb9_: Fix segfault when tallying in a void material
- 291b45_: Handle metastable nuclides in NNDC data and multiplicities in MT=5 data
.. _26fb93: https://github.com/mit-crpg/openmc/commit/26fb93
.. _2f07c0: https://github.com/mit-crpg/openmc/commit/2f07c0
.. _e6abb9: https://github.com/mit-crpg/openmc/commit/e6abb9
.. _291b45: https://github.com/mit-crpg/openmc/commit/291b45
------------
Contributors
------------
This release contains new contributions from the following people:
- `Will Boyd <wbinventor@gmail.com>`_
- `Matt Ellis <mellis13@mit.edu>`_
- `Sterling Harper <smharper@mit.edu>`_
- `Bryan Herman <bherman@mit.edu>`_
- `Nicholas Horelik <nicholas.horelik@gmail.com>`_
- `Anton Leontiev <bunder@t-25.ru>`_
- `Adam Nelson <nelsonag@umich.edu>`_
- `Paul Romano <paul.k.romano@gmail.com>`_
- `Jon Walsh <walshjon@mit.edu>`_
- `John Xia <john.danger.xia@gmail.com>`_

View file

@ -134,13 +134,15 @@ should be performed. It has the following attributes/sub-elements:
-------------------------
The ``<energy_grid>`` element determines the treatment of the energy grid during
a simulation. Setting this element to "nuclide" will cause OpenMC to use a
nuclide's energy grid when determining what points to interpolate between for
determining cross sections (i.e. non-unionized energy grid). To use a unionized
energy grid, set this element to "union". Note that the unionized energy grid
treatment is slightly different than that employed in Serpent.
a simulation. The valid options are "nuclide" and "logarithm". Setting this
element to "nuclide" will cause OpenMC to use a nuclide's energy grid when
determining what points to interpolate between for determining cross sections
(i.e. non-unionized energy grid). Setting this element to "logarithm" causes
OpenMC to use a logarithmic mapping technique described in LA-UR-14-24530_.
*Default*: union
*Default*: logarithm
.. _LA-UR-14-24530: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-14-24530.pdf
``<entropy>`` Element
---------------------
@ -182,6 +184,16 @@ performed. It has the following attributes/sub-elements:
*Default*: None
``<log_grid_bins>`` Element
---------------------------
The ``<log_grid_bins>`` element indicates the number of bins to use for the
logarithmic-mapped energy grid. Using more bins will result in energy grid
searches over a smaller range at the expense of more memory. The default is
based on the recommended value in LA-UR-14-24530_.
*Default*: 8000
.. _natural_elements:
``<natural_elements>`` Element
@ -757,7 +769,10 @@ Each ``<cell>`` element can have the following attributes or sub-elements:
is on the negative side of surface 3 and the positive side of surface 5, the
bounding surfaces would be given as "-3 5".
*Default*: None
.. note:: The surface attribute/element can be omitted to make a cell fill
its entire universe.
*Default*: No surfaces
:rotation:
If the cell is filled with a universe, this element specifies the angles in
@ -1019,6 +1034,16 @@ The ``<tally>`` element accepts the following sub-elements:
*Default*: total
:estimator:
The estimator element is used to force the use of either ``analog`` or
``tracklength`` tally estimation. ''analog'' is generally less efficient
though it can be used with every score type. ''tracklength'' is generally
the most efficient, though its usage is restricted to tallies that do not
score particle information which requires a collision to have occured, such
as a scattering tally which utilizes outgoing energy filters.
*Default*: ``tracklength`` but will revert to analog if necessary.
:scores:
A space-separated list of the desired responses to be accumulated. Accepted
options are "flux", "total", "scatter", "absorption", "fission",
@ -1092,7 +1117,7 @@ The ``<tally>`` element accepts the following sub-elements:
all of the harmonic moments of order 0 to N. N must be between 0 and 10.
:total-YN:
The total reaction rate expanded via spherical harmonics about the
The total reaction rate expanded via spherical harmonics about the
direction of motion of the neutron, :math:`\Omega`.
This score will tally all of the harmonic moments of order 0 to N. N must
be between 0 and 10.
@ -1170,7 +1195,7 @@ implemented in openMC:
``<plot>`` Element
------------------
Each plot must contain a combination of the following attributes or
Each plot is specified by a combination of the following attributes or
sub-elements:
:id:
@ -1191,6 +1216,18 @@ sub-elements:
*Default*: ``cell``
:level:
Universe depth to plot at (optional). This parameter controls how many
universe levels deep to pull cell and material ids from when setting plot
colors. If a given location does not have as many levels as specified,
colors will be taken from the lowest level at that location. For example, if
``level`` is set to zero colors will be taken from top-level (universe zero)
cells only. However, if ``level`` is set to 1 colors will be taken from
cells in universes that fill top-level fill-cells, and from top-level cells
that contain materials.
*Default*: Whatever the deepest universe is in the model
:origin:
Specifies the (x,y,z) coordinate of the center of the plot. Should be three
floats separated by spaces.
@ -1229,7 +1266,7 @@ sub-elements:
attribute or sub-element:
:pixels:
Specifies the number of pixes or voxels to be used along each of the basis
Specifies the number of pixels or voxels to be used along each of the basis
directions for "slice" and "voxel" plots, respectively. Should be two or
three integers separated by spaces.
@ -1261,7 +1298,7 @@ attributes or sub-elements. These are not used in "voxel" plots:
Specifies the RGB color of the regions where no OpenMC cell can be found.
Should be three integers separated by spaces.
*Default*: 0 0 0 (white)
*Default*: 0 0 0 (black)
:col_spec:
Any number of this optional tag may be included in each ``<plot>`` element,
@ -1301,6 +1338,35 @@ attributes or sub-elements. These are not used in "voxel" plots:
*Default*: None
:meshlines:
The ``meshlines`` sub-element allows for plotting the boundaries of
a tally mesh on top of a plot. Only one ``meshlines`` element is allowed per
``plot`` element, and it must contain as attributes or sub-elements a mesh
type and a linewidth. Optionally, a color may be specified for the overlay:
:meshtype:
The type of the mesh to be plotted. Valid options are "tally", "entropy",
"ufs", and "cmfd". If plotting "tally" meshes, the id of the mesh to plot
must be specified with the ``id`` sub-element.
:id:
A single integer id number for the mesh specified on ``tallies.xml`` that
should be plotted. This element is only required for ``meshtype="tally"``.
:linewidth:
A single integer number of pixels of linewidth to specify for the mesh
boundaries. Specifying this as 0 indicates that lines will be 1 pixel
thick, specifying 1 indicates 3 pixels thick, specifying 2 indicates
5 pixels thick, etc.
:color:
Specifies the custom color for the meshlines boundaries. Should be 3
integers separated by whitespace. This element is optional.
*Default*: 0 0 0 (black)
*Default*: None
.. _usersguide_cmfd:
------------------------------
@ -1528,3 +1594,15 @@ into MATLAB using PETSc-MATLAB utilities. This option can be
turned on with "true" and off with "false".
*Default*: false
------------------------------------
ERSN-OpenMC Graphical User Interface
------------------------------------
A third-party Java-based user-friendly graphical user interface for creating XML
input files called ERSN-OpenMC_ is developed and maintained by members of the
Radiation and Nuclear Systems Group at the Faculty of Sciences Tetouan, Morocco.
The GUI also allows one to automatically download prerequisites for installing and
running OpenMC.
.. _ERSN-OpenMC: https://github.com/EL-Bakkali-Jaafar/ERSN-OpenMC

View file

@ -66,14 +66,11 @@ Prerequisites
To compile with support for parallel runs on a distributed-memory
architecture, you will need to have a valid implementation of MPI
installed on your machine. The code has been tested and is known to work
with the latest versions of both OpenMPI_ and MPICH_. Note that if using
OpenMPI, make sure that --with-mpi-f90-size is not set to medium or large
since this may prevent MPI calls from completing successfully in
OpenMC. OpenMPI and/or MPICH can be installed on Debian derivatives
with::
with the latest versions of both OpenMPI_ and MPICH_. OpenMPI and/or MPICH
can be installed on Debian derivatives with::
sudo apt-get install mpich2 libmpich2-dev
sudo apt-get install openmpi1.6-bin libopenmpi1.6-dev
sudo apt-get install mpich libmpich-dev
sudo apt-get install openmpi-bin libopenmpi1.6 libopenmpi-dev
* HDF5_ Library for portable binary output format

View file

@ -5,6 +5,7 @@
<origin>0. 0. 0.</origin>
<width>4.0 4.0</width>
<pixels>400 400</pixels>
<!-- <meshlines mesh="1" linewidth="2" color="0 255 0"/> -->
</plot>
</plots>

View file

@ -46,7 +46,7 @@ to locate ACE format cross section libraries if the user has not specified the
<cross_sections> tag in
.I settings.xml\fP.
.SH LICENSE
Copyright \(co 2011-2014 Massachusetts Institute of Technology.
Copyright \(co 2011-2015 Massachusetts Institute of Technology.
.PP
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -195,6 +195,20 @@ if(petsc)
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_RT_LIB})
endif()
# If libssl wasn't found, search /usr/lib64
if(PETSC_SSL_LIB STREQUAL "PETSC_SSL_LIB-NOTFOUND")
find_library(PETSC_SSL_LIB libssl.so /usr/lib64)
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_SSL_LIB-NOTFOUND)
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_SSL_LIB})
endif()
# If libcrypto wasn't found, search /usr/lib64
if(PETSC_CRYPTO_LIB STREQUAL "PETSC_CRYPTO_LIB-NOTFOUND")
find_library(PETSC_CRYPTO_LIB libcrypto.so /usr/lib64)
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_CRYPTO_LIB-NOTFOUND)
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_CRYPTO_LIB})
endif()
message("-- Using PETSC: ${libpetsc}")
add_definitions(-DPETSC)
include_directories($ENV{PETSC_DIR}/include)
@ -347,7 +361,7 @@ foreach(test ${TESTS})
elseif(${test} MATCHES "test_sourcepoint_restart")
set(RESTART_FILE statepoint.07.h5 source.07.h5)
elseif(${test} MATCHES "test_particle_restart_eigval")
set(RESTART_FILE particle_12_842.h5)
set(RESTART_FILE particle_12_616.h5)
elseif(${test} MATCHES "test_particle_restart_fixed")
set(RESTART_FILE particle_7_6144.h5)
else(${test} MATCHES "test_statepoint_restart")
@ -362,7 +376,7 @@ foreach(test ${TESTS})
elseif(${test} MATCHES "test_sourcepoint_restart")
set(RESTART_FILE statepoint.07.binary source.07.binary)
elseif(${test} MATCHES "test_particle_restart_eigval")
set(RESTART_FILE particle_12_842.binary)
set(RESTART_FILE particle_12_616.binary)
elseif(${test} MATCHES "test_particle_restart_fixed")
set(RESTART_FILE particle_7_6144.binary)
else(${test} MATCHES "test_statepoint_restart")

View file

@ -15,13 +15,13 @@ module ace
implicit none
integer :: NXS(16) ! Descriptors for ACE XSS tables
integer :: JXS(32) ! Pointers into ACE XSS tables
real(8), allocatable :: XSS(:) ! Cross section data
integer :: XSS_index ! current index in XSS data
integer :: JXS(32) ! Pointers into ACE XSS tables
integer :: NXS(16) ! Descriptors for ACE XSS tables
real(8), allocatable :: XSS(:) ! Cross section data
integer :: XSS_index ! Current index in XSS data
private :: NXS
private :: JXS
private :: NXS
private :: XSS
contains
@ -94,7 +94,7 @@ contains
& scheme)
nuclides(i_nuclide) % E_min = nuclides_0K(n) % E_min
nuclides(i_nuclide) % E_max = nuclides_0K(n) % E_max
if (.not. already_read % contains(nuclides(i_nuclide) % &
if (.not. already_read % contains(nuclides(i_nuclide) % &
& name_0K)) then
i_listing = xs_listing_dict % get_key(nuclides(i_nuclide) % &
& name_0K)
@ -151,9 +151,9 @@ contains
! Check to make sure S(a,b) table matched a nuclide
if (mat % i_sab_nuclides(k) == NONE) then
message = "S(a,b) table " // trim(mat % sab_names(k)) // " did not &
&match any nuclide on material " // trim(to_str(mat % id))
call fatal_error()
call fatal_error("S(a,b) table " // trim(mat % sab_names(k)) &
&// " did not match any nuclide on material " &
&// trim(to_str(mat % id)))
end if
end do ASSIGN_SAB
@ -264,17 +264,14 @@ contains
! Check if ACE library exists and is readable
inquire(FILE=filename, EXIST=file_exists, READ=readable)
if (.not. file_exists) then
message = "ACE library '" // trim(filename) // "' does not exist!"
call fatal_error()
call fatal_error("ACE library '" // trim(filename) // "' does not exist!")
elseif (readable(1:3) == 'NO') then
message = "ACE library '" // trim(filename) // "' is not readable! &
&Change file permissions with chmod command."
call fatal_error()
call fatal_error("ACE library '" // trim(filename) // "' is not readable!&
& Change file permissions with chmod command.")
end if
! display message
message = "Loading ACE cross section table: " // listing % name
call write_message(6)
call write_message("Loading ACE cross section table: " // listing % name, 6)
if (filetype == ASCII) then
! =======================================================================
@ -293,9 +290,8 @@ contains
! Check that correct xs was found -- if cross_sections.xml is broken, the
! location of the table may be wrong
if(adjustl(name) /= adjustl(listing % name)) then
message = "XS listing entry " // trim(listing % name) // " did not &
&match ACE data, " // trim(name) // " found instead."
call fatal_error()
call fatal_error("XS listing entry " // trim(listing % name) // " did &
&not match ACE data, " // trim(name) // " found instead.")
end if
! Read more header and NXS and JXS
@ -373,14 +369,6 @@ contains
call read_unr_res(nuc)
end if
! Currently subcritical fixed source calculations are not allowed. Thus,
! if any fissionable material is found in a fixed source calculation,
! abort the run.
if (run_mode == MODE_FIXEDSOURCE .and. nuc % fissionable) then
message = "Cannot have fissionable material in a fixed source run."
call fatal_error()
end if
! for fissionable nuclides, precalculate microscopic nu-fission cross
! sections so that we don't need to call the nu_total function during
! cross section lookups (except if we're dealing w/ 0K data for resonant
@ -448,7 +436,7 @@ contains
! Skip total and absorption
XSS_index = XSS_index + 2*NE
! Continue reading elastic scattering and heating
nuc % elastic_0K = get_real(NE)
@ -484,13 +472,13 @@ contains
! Read data from XSS -- only the energy grid, elastic scattering and heating
! cross section values are actually read from here. The total and absorption
! cross sections are reconstructed from the partial reaction data.
XSS_index = 1
nuc % energy = get_real(NE)
! Skip total and absorption
XSS_index = XSS_index + 2*NE
! Continue reading elastic scattering and heating
nuc % elastic = get_real(NE)
@ -708,7 +696,8 @@ contains
integer :: LXS ! location of cross-section locators
integer :: LOCA ! location of cross-section for given MT
integer :: IE ! reaction's starting index on energy grid
integer :: NE ! number of energies for reaction
integer :: NE ! number of energies
integer :: NR ! number of interpolation regions
type(Reaction), pointer :: rxn => null()
type(ListInt) :: MTs
@ -759,18 +748,40 @@ contains
rxn % multiplicity = abs(nint(XSS(JXS5 + i - 1)))
rxn % scatter_in_cm = (nint(XSS(JXS5 + i - 1)) < 0)
! If multiplicity is energy-dependent (absolute value > 100), set it based
! on the MT value
! Read energy-dependent multiplicities
if (rxn % multiplicity > 100) then
if (any(rxn%MT == [11, 16, 24, 30, 41])) then
rxn % multiplicity = 2
elseif (any(rxn%MT == [17, 25, 42])) then
rxn % multiplicity = 3
elseif (rxn%MT == 37) then
rxn % multiplicity = 4
else
rxn % multiplicity = 1
! Set flag and allocate space for Tab1 to store yield
rxn % multiplicity_with_E = .true.
allocate(rxn % multiplicity_E)
XSS_index = JXS(11) + rxn % multiplicity - 101
NR = nint(XSS(XSS_index))
rxn % multiplicity_E % n_regions = NR
! allocate space for ENDF interpolation parameters
if (NR > 0) then
allocate(rxn % multiplicity_E % nbt(NR))
allocate(rxn % multiplicity_E % int(NR))
end if
! read ENDF interpolation parameters
XSS_index = XSS_index + 1
if (NR > 0) then
rxn % multiplicity_E % nbt = get_int(NR)
rxn % multiplicity_E % int = get_int(NR)
end if
! allocate space for yield data
XSS_index = XSS_index + 2*NR
NE = nint(XSS(XSS_index))
rxn % multiplicity_E % n_pairs = NE
allocate(rxn % multiplicity_E % x(NE))
allocate(rxn % multiplicity_E % y(NE))
! read yield data
XSS_index = XSS_index + 1
rxn % multiplicity_E % x = get_real(NE)
rxn % multiplicity_E % y = get_real(NE)
end if
! read starting energy index
@ -1315,9 +1326,8 @@ contains
! Abort if no corresponding inelastic reaction was found
if (nuc % urr_inelastic == NONE) then
message = "Could not find inelastic reaction specified on " &
// "unresolved resonance probability table."
call fatal_error()
call fatal_error("Could not find inelastic reaction specified on &
&unresolved resonance probability table.")
end if
end if
@ -1343,9 +1353,8 @@ contains
! Check for negative values
if (any(nuc % urr_data % prob < ZERO)) then
message = "Negative value(s) found on probability table for nuclide " &
// nuc % name
call warning()
if (master) call warning("Negative value(s) found on probability table &
&for nuclide " // nuc % name)
end if
end subroutine read_unr_res

View file

@ -51,8 +51,10 @@ module ace_header
integer :: MT ! ENDF MT value
real(8) :: Q_value ! Reaction Q value
integer :: multiplicity ! Number of secondary particles released
type(Tab1), pointer :: multiplicity_E => null() ! Energy-dependent neutron yield
integer :: threshold ! Energy grid index of threshold
logical :: scatter_in_cm ! scattering system in center-of-mass?
logical :: multiplicity_with_E = .false. ! Flag to indicate E-dependent multiplicity
real(8), allocatable :: sigma(:) ! Cross section values
logical :: has_angle_dist ! Angle distribution present?
logical :: has_energy_dist ! Energy distribution present?
@ -101,7 +103,7 @@ module ace_header
! Energy grid information
integer :: n_grid ! # of nuclide grid points
integer, allocatable :: grid_index(:) ! pointers to union grid
integer, allocatable :: grid_index(:) ! union grid pointers / log grid mapping
real(8), allocatable :: energy(:) ! energy values corresponding to xs
! Microscopic cross sections
@ -334,8 +336,9 @@ module ace_header
class(Reaction), intent(inout) :: this ! The Reaction object to clear
if (allocated(this % sigma)) &
deallocate(this % sigma)
if (allocated(this % sigma)) deallocate(this % sigma)
if (associated(this % multiplicity_E)) deallocate(this % multiplicity_E)
if (associated(this % edist)) then
call this % edist % clear()

View file

@ -5,6 +5,7 @@ module cmfd_data
! parameters for CMFD calculation.
!==============================================================================
use constants
implicit none
private
@ -53,7 +54,7 @@ contains
OUT_FRONT, IN_TOP, OUT_TOP, CMFD_NOACCEL, ZERO, &
ONE, TINY_BIT
use error, only: fatal_error
use global, only: cmfd, message, n_cmfd_tallies, cmfd_tallies, meshes,&
use global, only: cmfd, n_cmfd_tallies, cmfd_tallies, meshes,&
matching_bins
use mesh, only: mesh_indices_to_bin
use mesh_header, only: StructuredMesh
@ -159,10 +160,9 @@ contains
! Detect zero flux, abort if located
if ((flux - ZERO) < TINY_BIT) then
message = 'Detected zero flux without coremap overlay at: (' &
// to_str(i) // ',' // to_str(j) // ',' // to_str(k) &
// ') in group ' // to_str(h)
call fatal_error()
call fatal_error('Detected zero flux without coremap overlay &
&at: (' // to_str(i) // ',' // to_str(j) // ',' // &
&to_str(k) // ') in group ' // to_str(h))
end if
! Get total rr and convert to total xs
@ -626,7 +626,7 @@ contains
subroutine compute_dhat()
use constants, only: CMFD_NOACCEL, ZERO
use global, only: cmfd, cmfd_coremap, message, dhat_reset
use global, only: cmfd, cmfd_coremap, dhat_reset
use output, only: write_message
use string, only: to_str
@ -764,8 +764,7 @@ contains
! write that dhats are zero
if (dhat_reset) then
message = 'Dhats reset to zero.'
call write_message(1)
call write_message('Dhats reset to zero.', 1)
end if
end subroutine compute_dhat

View file

@ -44,8 +44,7 @@ contains
elseif (trim(cmfd_solver_type) == 'jfnk') then
call cmfd_jfnk_execute()
else
message = 'solver type became invalid after input processing'
call fatal_error()
call fatal_error('solver type became invalid after input processing')
end if
#else
call cmfd_solver_execute()
@ -255,8 +254,8 @@ contains
use constants, only: ZERO, ONE
use error, only: warning, fatal_error
use global, only: meshes, source_bank, work, n_user_meshes, message, &
cmfd, master
use global, only: meshes, source_bank, work, n_user_meshes, cmfd, &
master
use mesh_header, only: StructuredMesh
use mesh, only: count_bank_sites, get_mesh_indices
use search, only: binary_search
@ -314,8 +313,7 @@ contains
! Check for sites outside of the mesh
if (master .and. outside) then
message = "Source sites outside of the CMFD mesh!"
call fatal_error()
call fatal_error("Source sites outside of the CMFD mesh!")
end if
! Have master compute weight factors (watch for 0s)
@ -345,12 +343,10 @@ contains
n_groups = size(cmfd % egrid) - 1
if (source_bank(i) % E < cmfd % egrid(1)) then
e_bin = 1
message = 'Source pt below energy grid'
call warning()
if (master) call warning('Source pt below energy grid')
elseif (source_bank(i) % E > cmfd % egrid(n_groups + 1)) then
e_bin = n_groups
message = 'Source pt above energy grid'
call warning()
if (master) call warning('Source pt above energy grid')
else
e_bin = binary_search(cmfd % egrid, n_groups + 1, source_bank(i) % E)
end if
@ -360,8 +356,7 @@ contains
! Check for outside of mesh
if (.not. in_mesh) then
message = 'Source site found outside of CMFD mesh'
call fatal_error()
call fatal_error('Source site found outside of CMFD mesh')
end if
! Reweight particle
@ -410,15 +405,14 @@ contains
subroutine cmfd_tally_reset()
use global, only: n_cmfd_tallies, cmfd_tallies, message
use global, only: n_cmfd_tallies, cmfd_tallies
use output, only: write_message
use tally, only: reset_result
integer :: i ! loop counter
! Print message
message = "CMFD tallies reset"
call write_message(7)
call write_message("CMFD tallies reset", 7)
! Begin loop around CMFD tallies
do i = 1, n_cmfd_tallies

View file

@ -85,15 +85,14 @@ contains
if (.not. file_exists) then
! CMFD is optional unless it is in on from settings
if (cmfd_on) then
message = "No CMFD XML file, '" // trim(filename) // "' does not exist!"
call fatal_error()
call fatal_error("No CMFD XML file, '" // trim(filename) // "' does not&
& exist!")
end if
return
else
! Tell user
message = "Reading CMFD XML file..."
call write_message(5)
call write_message("Reading CMFD XML file...", 5)
end if
@ -105,8 +104,7 @@ contains
! Check if mesh is there
if (.not.found) then
message = "No CMFD mesh specified in CMFD XML file."
call fatal_error()
call fatal_error("No CMFD mesh specified in CMFD XML file.")
end if
! Set spatial dimensions in cmfd object
@ -137,8 +135,7 @@ contains
cmfd % indices(3)))
if (get_arraysize_integer(node_mesh, "map") /= &
product(cmfd % indices(1:3))) then
message = 'FATAL==>CMFD coremap not to correct dimensions'
call fatal_error()
call fatal_error('CMFD coremap not to correct dimensions')
end if
allocate(iarray(get_arraysize_integer(node_mesh, "map")))
call get_node_array(node_mesh, "map", iarray)
@ -214,8 +211,7 @@ contains
temp_str = to_lower(temp_str)
if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') &
#ifndef PETSC
message = 'Must use PETSc when running adjoint option.'
call fatal_error()
call fatal_error('Must use PETSc when running adjoint option.')
#endif
cmfd_run_adjoint = .true.
end if
@ -244,8 +240,8 @@ contains
call get_node_value(doc, "display", cmfd_display)
if (trim(cmfd_display) == 'dominance' .and. &
trim(cmfd_solver_type) /= 'power') then
message = 'Dominance Ratio only aviable with power iteration solver'
call warning()
if (master) call warning('Dominance Ratio only aviable with power &
&iteration solver')
cmfd_display = ''
end if
@ -261,9 +257,8 @@ contains
if (check_for_node(doc, "gauss_seidel_tolerance")) then
n_params = get_arraysize_double(doc, "gauss_seidel_tolerance")
if (n_params /= 2) then
message = 'Gauss Seidel tolerance is not 2 parameters &
&(absolute, relative).'
call fatal_error()
call fatal_error('Gauss Seidel tolerance is not 2 parameters &
&(absolute, relative).')
end if
call get_node_array(doc, "gauss_seidel_tolerance", gs_tol)
cmfd_atoli = gs_tol(1)
@ -333,8 +328,7 @@ contains
! Determine number of dimensions for mesh
n = get_arraysize_integer(node_mesh, "dimension")
if (n /= 2 .and. n /= 3) then
message = "Mesh must be two or three dimensions."
call fatal_error()
call fatal_error("Mesh must be two or three dimensions.")
end if
m % n_dimension = n
@ -347,9 +341,8 @@ contains
! Check that dimensions are all greater than zero
call get_node_array(node_mesh, "dimension", iarray3(1:n))
if (any(iarray3(1:n) <= 0)) then
message = "All entries on the <dimension> element for a tally mesh &
&must be positive."
call fatal_error()
call fatal_error("All entries on the <dimension> element for a tally mesh&
& must be positive.")
end if
! Read dimensions in each direction
@ -357,42 +350,37 @@ contains
! Read mesh lower-left corner location
if (m % n_dimension /= get_arraysize_double(node_mesh, "lower_left")) then
message = "Number of entries on <lower_left> must be the same as &
&the number of entries on <dimension>."
call fatal_error()
call fatal_error("Number of entries on <lower_left> must be the same as &
&the number of entries on <dimension>.")
end if
call get_node_array(node_mesh, "lower_left", m % lower_left)
! Make sure both upper-right or width were specified
if (check_for_node(node_mesh, "upper_right") .and. &
check_for_node(node_mesh, "width")) then
message = "Cannot specify both <upper_right> and <width> on a &
&tally mesh."
call fatal_error()
call fatal_error("Cannot specify both <upper_right> and <width> on a &
&tally mesh.")
end if
! Make sure either upper-right or width was specified
if (.not.check_for_node(node_mesh, "upper_right") .and. &
.not.check_for_node(node_mesh, "width")) then
message = "Must specify either <upper_right> and <width> on a &
&tally mesh."
call fatal_error()
call fatal_error("Must specify either <upper_right> and <width> on a &
&tally mesh.")
end if
if (check_for_node(node_mesh, "width")) then
! Check to ensure width has same dimensions
if (get_arraysize_double(node_mesh, "width") /= &
get_arraysize_double(node_mesh, "lower_left")) then
message = "Number of entries on <width> must be the same as the &
&number of entries on <lower_left>."
call fatal_error()
call fatal_error("Number of entries on <width> must be the same as the &
&number of entries on <lower_left>.")
end if
! Check for negative widths
call get_node_array(node_mesh, "width", rarray3(1:n))
if (any(rarray3(1:n) < ZERO)) then
message = "Cannot have a negative <width> on a tally mesh."
call fatal_error()
call fatal_error("Cannot have a negative <width> on a tally mesh.")
end if
! Set width and upper right coordinate
@ -403,17 +391,15 @@ contains
! Check to ensure width has same dimensions
if (get_arraysize_double(node_mesh, "upper_right") /= &
get_arraysize_double(node_mesh, "lower_left")) then
message = "Number of entries on <upper_right> must be the same as &
&the number of entries on <lower_left>."
call fatal_error()
call fatal_error("Number of entries on <upper_right> must be the same &
&as the number of entries on <lower_left>.")
end if
! Check that upper-right is above lower-left
call get_node_array(node_mesh, "upper_right", rarray3(1:n))
if (any(rarray3(1:n) < m % lower_left)) then
message = "The <upper_right> coordinates must be greater than the &
&<lower_left> coordinates on a tally mesh."
call fatal_error()
call fatal_error("The <upper_right> coordinates must be greater than &
&the <lower_left> coordinates on a tally mesh.")
end if
! Set upper right coordinate and width

View file

@ -2,6 +2,7 @@ module cmfd_solver
! This module contains routines to execute the power iteration solver
use constants, only: MAX_LINE_LEN
use cmfd_loss_operator, only: init_loss_matrix, build_loss_matrix
use cmfd_prod_operator, only: init_prod_matrix, build_prod_matrix
use matrix_header, only: Matrix
@ -11,25 +12,25 @@ module cmfd_solver
private
public :: cmfd_solver_execute
real(8) :: k_n ! new k-eigenvalue
real(8) :: k_o ! old k-eigenvalue
real(8) :: k_s ! shift of eigenvalue
real(8) :: k_ln ! new shifted eigenvalue
real(8) :: k_lo ! old shifted eigenvalue
real(8) :: norm_n ! current norm of source vector
real(8) :: norm_o ! old norm of source vector
real(8) :: kerr ! error in keff
real(8) :: serr ! error in source
real(8) :: ktol ! tolerance on keff
real(8) :: stol ! tolerance on source
logical :: adjoint_calc ! run an adjoint calculation
type(Matrix) :: loss ! cmfd loss matrix
type(Matrix) :: prod ! cmfd prod matrix
type(Vector) :: phi_n ! new flux vector
type(Vector) :: phi_o ! old flux vector
type(Vector) :: s_n ! new source vector
type(Vector) :: s_o ! old flux vector
type(Vector) :: serr_v ! error in source
real(8) :: k_n ! New k-eigenvalue
real(8) :: k_o ! Old k-eigenvalue
real(8) :: k_s ! Shift of eigenvalue
real(8) :: k_ln ! New shifted eigenvalue
real(8) :: k_lo ! Old shifted eigenvalue
real(8) :: norm_n ! Current norm of source vector
real(8) :: norm_o ! Old norm of source vector
real(8) :: kerr ! Error in keff
real(8) :: serr ! Error in source
real(8) :: ktol ! Tolerance on keff
real(8) :: stol ! Tolerance on source
logical :: adjoint_calc ! Run an adjoint calculation
type(Matrix) :: loss ! Cmfd loss matrix
type(Matrix) :: prod ! Cmfd prod matrix
type(Vector) :: phi_n ! New flux vector
type(Vector) :: phi_o ! Old flux vector
type(Vector) :: s_n ! New source vector
type(Vector) :: s_o ! Old flux vector
type(Vector) :: serr_v ! Error in source
! CMFD linear solver interface
procedure(linsolve), pointer :: cmfd_linsolver => null()
@ -100,7 +101,6 @@ contains
subroutine init_data(adjoint)
use constants, only: ONE, ZERO
use error, only: fatal_error
use global, only: cmfd, cmfd_shift, keff, cmfd_ktol, cmfd_stol, &
cmfd_write_matrices
@ -180,8 +180,6 @@ contains
use error, only: fatal_error
#ifdef PETSC
use global, only: cmfd_write_matrices
#else
use global, only: message
#endif
#ifdef PETSC
@ -195,8 +193,7 @@ contains
call prod % write_petsc_binary('adj_prodmat.bin')
end if
#else
message = 'Adjoint calculations only allowed with PETSc'
call fatal_error()
call fatal_error('Adjoint calculations only allowed with PETSc')
#endif
end subroutine compute_adjoint
@ -210,7 +207,7 @@ contains
use constants, only: ONE
use error, only: fatal_error
use global, only: cmfd_atoli, cmfd_rtoli, message
use global, only: cmfd_atoli, cmfd_rtoli
integer :: i ! iteration counter
integer :: innerits ! # of inner iterations
@ -237,8 +234,8 @@ contains
! Check if reached iteration 10000
if (i == 10000) then
message = 'Reached maximum iterations in CMFD power iteration solver.'
call fatal_error()
call fatal_error('Reached maximum iterations in CMFD power iteration &
&solver.')
end if
! Compute source vector
@ -357,7 +354,7 @@ contains
use constants, only: ONE, ZERO
use error, only: fatal_error
use global, only: cmfd, cmfd_spectral, message
use global, only: cmfd, cmfd_spectral
type(Matrix), intent(inout) :: A ! coefficient matrix
type(Vector), intent(inout) :: b ! right hand side vector
@ -401,8 +398,7 @@ contains
! Check for max iterations met
if (igs == 10000) then
message = 'Maximum Gauss-Seidel iterations encountered.'
call fatal_error()
call fatal_error('Maximum Gauss-Seidel iterations encountered.')
endif
! Copy over x vector
@ -464,7 +460,7 @@ contains
use constants, only: ONE, ZERO
use error, only: fatal_error
use global, only: cmfd, cmfd_spectral, message
use global, only: cmfd, cmfd_spectral
type(Matrix), intent(inout) :: A ! coefficient matrix
type(Vector), intent(inout) :: b ! right hand side vector
@ -520,8 +516,7 @@ contains
! Check for max iterations met
if (igs == 10000) then
message = 'Maximum Gauss-Seidel iterations encountered.'
call fatal_error()
call fatal_error('Maximum Gauss-Seidel iterations encountered.')
endif
! Copy over x vector
@ -610,7 +605,7 @@ contains
use constants, only: ONE, ZERO
use error, only: fatal_error
use global, only: cmfd, cmfd_spectral, message
use global, only: cmfd, cmfd_spectral
type(Matrix), intent(inout) :: A ! coefficient matrix
type(Vector), intent(inout) :: b ! right hand side vector
@ -653,8 +648,7 @@ contains
! Check for max iterations met
if (igs == 10000) then
message = 'Maximum Gauss-Seidel iterations encountered.'
call fatal_error()
call fatal_error('Maximum Gauss-Seidel iterations encountered.')
endif
! Copy over x vector

View file

@ -8,10 +8,10 @@ module constants
! OpenMC major, minor, and release numbers
integer, parameter :: VERSION_MAJOR = 0
integer, parameter :: VERSION_MINOR = 6
integer, parameter :: VERSION_RELEASE = 1
integer, parameter :: VERSION_RELEASE = 2
! Revision numbers for binary files
integer, parameter :: REVISION_STATEPOINT = 12
integer, parameter :: REVISION_STATEPOINT = 13
integer, parameter :: REVISION_PARTICLE_RESTART = 1
! Binary file types
@ -365,9 +365,8 @@ module constants
! Energy grid methods
integer, parameter :: &
GRID_NUCLIDE = 1, & ! non-unionized energy grid
GRID_UNION = 2, & ! union grid with pointers
GRID_LETHARGY = 3 ! lethargy mapping
GRID_NUCLIDE = 1, & ! non-unionized energy grid
GRID_LOGARITHM = 2 ! logarithmic mapping
! Running modes
integer, parameter :: &

View file

@ -2,6 +2,7 @@ module cross_section
use ace_header, only: Nuclide, SAlphaBeta, Reaction, UrrData
use constants
use energy_grid, only: grid_method, log_spacing
use error, only: fatal_error
use fission, only: nu_total
use global
@ -14,9 +15,6 @@ module cross_section
implicit none
save
integer :: union_grid_index
!$omp threadprivate(union_grid_index)
contains
!===============================================================================
@ -50,9 +48,6 @@ contains
mat => materials(p % material)
! Find energy index on unionized grid
if (grid_method == GRID_UNION) call find_energy_index(p % E)
! Determine if this material has S(a,b) tables
check_sab = (mat % n_sab > 0)
@ -142,8 +137,10 @@ contains
integer, intent(in) :: i_sab ! index into sab_tables array
real(8), intent(in) :: E ! energy
integer :: i_grid ! index on nuclide energy grid
real(8) :: f ! interp factor on nuclide energy grid
integer :: i_grid ! index on nuclide energy grid
integer :: i_low, i_high ! bounding indices from logarithmic mapping
integer :: u ! index into logarithmic mapping array
real(8) :: f ! interp factor on nuclide energy grid
type(Nuclide), pointer, save :: nuc => null()
!$omp threadprivate(nuc)
@ -152,16 +149,29 @@ contains
! Determine index on nuclide energy grid
select case (grid_method)
case (GRID_UNION)
! If we're using the unionized grid with pointers, finding the index on
! the nuclide energy grid is as simple as looking up the pointer
case (GRID_LOGARITHM)
! Determine the energy grid index using a logarithmic mapping to reduce
! the energy range over which a binary search needs to be performed
i_grid = nuc % grid_index(union_grid_index)
if (E < nuc % energy(1)) then
i_grid = 1
elseif (E > nuc % energy(nuc % n_grid)) then
i_grid = nuc % n_grid - 1
else
! Determine bounding indices based on which equal log-spaced interval
! the energy is in
u = int(log(E/1.0e-11_8)/log_spacing)
i_low = nuc % grid_index(u)
i_high = nuc % grid_index(u + 1) + 1
! Perform binary search over reduced range
i_grid = binary_search(nuc % energy(i_low:i_high), &
i_high - i_low + 1, E) + i_low - 1
end if
case (GRID_NUCLIDE)
! If we're not using the unionized grid, we have to do a binary search on
! the nuclide energy grid in order to determine which points to
! interpolate between
! Perform binary search on the nuclide energy grid in order to determine
! which points to interpolate between
if (E < nuc % energy(1)) then
i_grid = 1
@ -198,7 +208,7 @@ contains
micro_xs(i_nuclide) % total = (ONE - f) * nuc % total(i_grid) &
+ f * nuc % total(i_grid+1)
! Calculate microscopic nuclide total cross section
! Calculate microscopic nuclide elastic cross section
micro_xs(i_nuclide) % elastic = (ONE - f) * nuc % elastic(i_grid) &
+ f * nuc % elastic(i_grid+1)
@ -496,27 +506,6 @@ contains
end subroutine calculate_urr_xs
!===============================================================================
! FIND_ENERGY_INDEX determines the index on the union energy grid at a certain
! energy
!===============================================================================
subroutine find_energy_index(E)
real(8), intent(in) :: E ! energy of particle
! if particle's energy is outside of energy grid range, set to first or last
! index. Otherwise, do a binary search through the union energy grid.
if (E < e_grid(1)) then
union_grid_index = 1
elseif (E > e_grid(n_grid)) then
union_grid_index = n_grid - 1
else
union_grid_index = binary_search(e_grid, n_grid, E)
end if
end subroutine find_energy_index
!===============================================================================
! 0K_ELASTIC_XS determines the microscopic 0K elastic cross section
! for a given nuclide at the trial relative energy used in resonance scattering

View file

@ -23,11 +23,13 @@ module eigenvalue
reset_result
use tracking, only: transport
implicit none
private
public :: run_eigenvalue
real(8) :: keff_generation ! Single-generation k on each processor
real(8) :: k_sum(2) = ZERO ! used to reduce sum and sum_sq
real(8) :: keff_generation ! Single-generation k on each
! processor
real(8) :: k_sum(2) = ZERO ! Used to reduce sum and sum_sq
contains
@ -102,7 +104,7 @@ contains
! END OF RUN WRAPUP
if (master) call header("SIMULATION FINISHED", level=1)
! Clear particle
call p % clear()
@ -114,8 +116,8 @@ contains
subroutine initialize_batch()
message = "Simulating batch " // trim(to_str(current_batch)) // "..."
call write_message(8)
call write_message("Simulating batch " // trim(to_str(current_batch)) &
&// "...", 8)
! Reset total starting particle weight used for normalizing tallies
total_weight = ZERO
@ -276,7 +278,7 @@ contains
#ifdef MPI
start = 0_8
call MPI_EXSCAN(n_bank, start, 1, MPI_INTEGER8, MPI_SUM, &
call MPI_EXSCAN(n_bank, start, 1, MPI_INTEGER8, MPI_SUM, &
MPI_COMM_WORLD, mpi_err)
! While we would expect the value of start on rank 0 to be 0, the MPI
@ -286,7 +288,7 @@ contains
finish = start + n_bank
total = finish
call MPI_BCAST(total, 1, MPI_INTEGER8, n_procs - 1, &
call MPI_BCAST(total, 1, MPI_INTEGER8, n_procs - 1, &
MPI_COMM_WORLD, mpi_err)
#else
@ -301,8 +303,7 @@ contains
! runs enough particles to avoid this in the first place.
if (n_bank == 0) then
message = "No fission sites banked on processor " // to_str(rank)
call fatal_error()
call fatal_error("No fission sites banked on processor " // to_str(rank))
end if
! Make sure all processors start at the same point for random sampling. Then
@ -359,9 +360,9 @@ contains
! indices for all processors
#ifdef MPI
! First do an exclusive scan to get the starting indices for
! First do an exclusive scan to get the starting indices for
start = 0_8
call MPI_EXSCAN(index_temp, start, 1, MPI_INTEGER8, MPI_SUM, &
call MPI_EXSCAN(index_temp, start, 1, MPI_INTEGER8, MPI_SUM, &
MPI_COMM_WORLD, mpi_err)
finish = start + index_temp
@ -421,7 +422,7 @@ contains
! process
if (neighbor /= rank) then
n_request = n_request + 1
call MPI_ISEND(temp_sites(index_local), n, MPI_BANK, neighbor, &
call MPI_ISEND(temp_sites(index_local), int(n), MPI_BANK, neighbor, &
rank, MPI_COMM_WORLD, request(n_request), mpi_err)
end if
@ -465,7 +466,7 @@ contains
! asynchronous receive for the source sites
n_request = n_request + 1
call MPI_IRECV(source_bank(index_local), n, MPI_BANK, &
call MPI_IRECV(source_bank(index_local), int(n), MPI_BANK, &
neighbor, neighbor, MPI_COMM_WORLD, request(n_request), mpi_err)
else
@ -536,11 +537,11 @@ contains
m % n_dimension = 3
allocate(m % dimension(3))
m % dimension = n
end if
! allocate and determine width
allocate(m % width(3))
m % width = (m % upper_right - m % lower_left) / m % dimension
! determine width
m % width = (m % upper_right - m % lower_left) / m % dimension
end if
! allocate p
allocate(entropy_p(1, m % dimension(1), m % dimension(2), &
@ -553,8 +554,7 @@ contains
! display warning message if there were sites outside entropy box
if (sites_outside) then
message = "Fission source site(s) outside of entropy box."
call warning()
if (master) call warning("Fission source site(s) outside of entropy box.")
end if
! sum values to obtain shannon entropy
@ -772,8 +772,7 @@ contains
! Check for sites outside of the mesh
if (master .and. sites_outside) then
message = "Source sites outside of the UFS mesh!"
call fatal_error()
call fatal_error("Source sites outside of the UFS mesh!")
end if
#ifdef MPI
@ -803,8 +802,7 @@ contains
! Write message at beginning
if (current_batch == 1) then
message = "Replaying history from state point..."
call write_message(1)
call write_message("Replaying history from state point...", 1)
end if
do current_gen = 1, gen_per_batch
@ -821,8 +819,7 @@ contains
! Write message at end
if (current_batch == restart_batch) then
message = "Resuming simulation..."
call write_message(1)
call write_message("Resuming simulation...", 1)
end if
end subroutine replay_batch_history

View file

@ -3,6 +3,8 @@ module endf
use constants
use string, only: to_str
implicit none
contains
!===============================================================================

View file

@ -1,151 +1,62 @@
module energy_grid
use constants, only: MAX_LINE_LEN
use global
use list_header, only: ListReal
use output, only: write_message
implicit none
integer :: grid_method ! how to treat the energy grid
integer :: n_log_bins ! number of bins for logarithmic grid
real(8) :: log_spacing ! spacing on logarithmic grid
contains
!===============================================================================
! UNIONIZED_GRID creates a single unionized energy grid combined from each
! nuclide of each material. Right now, the grid for each nuclide is added into a
! linked list one at a time with an effective insertion sort. Could be done with
! a hash for all energy points and then a quicksort at the end (what hash
! function to use?)
! LOGARITHMIC_GRID determines a logarithmic mapping for energies to bounding
! indices on a nuclide energy grid
!===============================================================================
subroutine unionized_grid()
subroutine logarithmic_grid()
integer :: i ! index in nuclides array
type(ListReal), pointer :: list => null()
type(Nuclide), pointer :: nuc => null()
message = "Creating unionized energy grid..."
call write_message(5)
! Add grid points for each nuclide in the problem
do i = 1, n_nuclides_total
nuc => nuclides(i)
call add_grid_points(list, nuc % energy)
end do
! Set size of unionized energy grid
n_grid = list % size()
! create allocated array from linked list
allocate(e_grid(n_grid))
do i = 1, n_grid
e_grid(i) = list % get_item(i)
end do
! delete linked list and dictionary
call list % clear()
deallocate(list)
! Set pointers to unionized energy grid for each nuclide
call grid_pointers()
end subroutine unionized_grid
!===============================================================================
! ADD_GRID_POINTS adds energy points from the 'energy' array into a linked list
! of points already stored from previous arrays.
!===============================================================================
subroutine add_grid_points(list, energy)
type(ListReal), pointer :: list
real(8), intent(in) :: energy(:)
integer :: i ! index in energy array
integer :: n ! size of energy array
integer :: current ! current index
real(8) :: E ! actual energy value
i = 1
n = size(energy)
! If the original list is empty, we need to allocate the first element and
! store first energy point
if (.not. associated(list)) then
allocate(list)
do i = 1, n
call list % append(energy(i))
end do
return
end if
! Set current index to beginning of the list
current = 1
do while (i <= n)
E = energy(i)
! If we've reached the end of the grid energy list, add the remaining
! energy points to the end
if (current > list % size()) then
! Finish remaining energies
do while (i <= n)
call list % append(energy(i))
i = i + 1
end do
exit
end if
if (E < list % get_item(current)) then
! Insert new energy in this position
call list % insert(current, E)
! Advance index in linked list and in new energy grid
i = i + 1
current = current + 1
elseif (E == list % get_item(current)) then
! Found the exact same energy, no need to store duplicates so just
! skip and move to next index
i = i + 1
current = current + 1
else
current = current + 1
end if
end do
end subroutine add_grid_points
!===============================================================================
! GRID_POINTERS creates an array of pointers (ints) for each nuclide to link
! each point on the nuclide energy grid to one on the unionized energy grid
!===============================================================================
subroutine grid_pointers()
integer :: i ! loop index for nuclides
integer :: j ! loop index for nuclide energy grid
integer :: index_e ! index on union energy grid
real(8) :: union_energy ! energy on union grid
real(8) :: energy ! energy on nuclide grid
integer :: i, j, k ! Loop indices
integer :: M ! Number of equally log-spaced bins
real(8) :: E_max ! Maximum energy in MeV
real(8) :: E_min ! Minimum energy in MeV
real(8), allocatable :: umesh(:) ! Equally log-spaced energy grid
type(Nuclide), pointer :: nuc => null()
! Set minimum/maximum energies
E_max = 20.0_8
E_min = 1.0e-11_8
! Determine equal-logarithmic energy spacing
M = n_log_bins
log_spacing = log(E_max/E_min)/M
! Create equally log-spaced energy grid
allocate(umesh(0:M))
umesh(:) = [(i*log_spacing, i=0, M)]
do i = 1, n_nuclides_total
! Allocate logarithmic mapping for nuclide
nuc => nuclides(i)
allocate(nuc % grid_index(n_grid))
allocate(nuc % grid_index(0:M))
index_e = 1
energy = nuc % energy(index_e)
do j = 1, n_grid
union_energy = e_grid(j)
if (union_energy >= energy .and. index_e < nuc % n_grid) then
index_e = index_e + 1
energy = nuc % energy(index_e)
end if
nuc % grid_index(j) = index_e - 1
! Determine corresponding indices in nuclide grid to energies on
! equal-logarithmic grid
j = 1
do k = 0, M - 1
do while (log(nuc%energy(j + 1)/E_min) <= umesh(k))
j = j + 1
end do
nuc % grid_index(k) = j
end do
! Set the last point explicitly so that we don't have out-of-bounds issues
nuc % grid_index(M) = size(nuc % energy) - 1
end do
end subroutine grid_pointers
deallocate(umesh)
end subroutine logarithmic_grid
end module energy_grid

View file

@ -1,6 +1,7 @@
module error
use, intrinsic :: ISO_FORTRAN_ENV
use constants
use global
@ -17,9 +18,9 @@ contains
! stream.
!===============================================================================
subroutine warning(force)
subroutine warning(message)
logical, optional :: force ! force write from proc other than master
character(*) :: message
integer :: i_start ! starting position
integer :: i_end ! ending position
@ -27,9 +28,6 @@ contains
integer :: length ! length of message
integer :: indent ! length of indentation
! Only allow master to print to screen
if (.not. master .and. .not. present(force)) return
! Write warning at beginning
write(ERROR_UNIT, fmt='(1X,A)', advance='no') 'WARNING: '
@ -78,8 +76,9 @@ contains
! the program is aborted.
!===============================================================================
subroutine fatal_error(error_code)
subroutine fatal_error(message, error_code)
character(*) :: message
integer, optional :: error_code ! error code
integer :: code ! error code

View file

@ -3,7 +3,6 @@ module fission
use ace_header, only: Nuclide
use constants
use error, only: fatal_error
use global, only: message
use interpolation, only: interpolate_tab1
use search, only: binary_search
@ -27,8 +26,7 @@ contains
real(8) :: c ! polynomial coefficient
if (nuc % nu_t_type == NU_NONE) then
message = "No neutron emission data for table: " // nuc % name
call fatal_error()
call fatal_error("No neutron emission data for table: " // nuc % name)
elseif (nuc % nu_t_type == NU_POLYNOMIAL) then
! determine number of coefficients
NC = int(nuc % nu_t_data(1))

View file

@ -1,6 +1,6 @@
module fixed_source
use constants, only: ZERO
use constants, only: ZERO, MAX_LINE_LEN
use global
use output, only: write_message, header
use particle_header, only: Particle
@ -11,6 +11,8 @@ module fixed_source
use tally, only: synchronize_tallies, setup_active_usertallies
use tracking, only: transport
implicit none
contains
subroutine run_fixedsource()
@ -94,8 +96,8 @@ contains
subroutine initialize_batch()
message = "Simulating batch " // trim(to_str(current_batch)) // "..."
call write_message(1)
call write_message("Simulating batch " // trim(to_str(current_batch)) &
&// "...", 1)
! Reset total starting particle weight used for normalizing tallies
total_weight = ZERO

View file

@ -11,7 +11,7 @@ module geometry
use tally, only: score_surface_current
implicit none
contains
!===============================================================================
@ -59,7 +59,8 @@ contains
end if
end do SURFACE_LOOP
! If we've reached here, then the sense matched on every surface
! If we've reached here, then the sense matched on every surface or there
! are no surfaces.
in_cell = .true.
end function simple_cell_contains
@ -100,11 +101,10 @@ contains
if (simple_cell_contains(c, p)) then
! the particle should only be contained in one cell per level
if (index_cell /= coord % cell) then
message = "Overlapping cells detected: " // &
trim(to_str(cells(index_cell) % id)) // ", " // &
trim(to_str(cells(coord % cell) % id)) // &
" on universe " // trim(to_str(univ % id))
call fatal_error()
call fatal_error("Overlapping cells detected: " &
&// trim(to_str(cells(index_cell) % id)) // ", " &
&// trim(to_str(cells(coord % cell) % id)) &
&// " on universe " // trim(to_str(univ % id)))
end if
overlap_check_cnt(index_cell) = overlap_check_cnt(index_cell) + 1
@ -179,8 +179,7 @@ contains
! Show cell information on trace
if (verbosity >= 10 .or. trace) then
message = " Entering cell " // trim(to_str(c % id))
call write_message()
call write_message(" Entering cell " // trim(to_str(c % id)))
end if
if (c % type == CELL_NORMAL) then
@ -266,13 +265,13 @@ contains
lattice_edge = .true.
end if
end if
if (lattice_edge) then
! In this case the neutron is leaving the lattice, so we move it
! out, remove all lower coordinate levels and then search from
! universe 0.
p % coord => p % coord0
call deallocate_coord(p % coord % next)
@ -289,7 +288,7 @@ contains
p % last_material = p % material
p % material = c % material
! We'll still make a new coordinate for the particle, as
! We'll still make a new coordinate for the particle, as
! distance_to_boundary will still need to track through lattice
! widths even though there's nothing in them but this material
@ -384,8 +383,7 @@ contains
i_surface = abs(p % surface)
surf => surfaces(i_surface)
if (verbosity >= 10 .or. trace) then
message = " Crossing surface " // trim(to_str(surf % id))
call write_message()
call write_message(" Crossing surface " // trim(to_str(surf % id)))
end if
if (surf % bc == BC_VACUUM .and. (run_mode /= MODE_PLOTTING)) then
@ -409,16 +407,15 @@ contains
! Score to global leakage tally
if (tallies_on) then
!$omp critical
!$omp atomic
global_tallies(LEAKAGE) % value = &
global_tallies(LEAKAGE) % value + p % wgt
!$omp end critical
end if
! Display message
if (verbosity >= 10 .or. trace) then
message = " Leaked out of surface " // trim(to_str(surf % id))
call write_message()
call write_message(" Leaked out of surface " &
&// trim(to_str(surf % id)))
end if
return
@ -428,9 +425,8 @@ contains
! Do not handle reflective boundary conditions on lower universes
if (.not. associated(p % coord, p % coord0)) then
message = "Cannot reflect particle " // trim(to_str(p % id)) // &
" off surface in a lower universe."
call handle_lost_particle(p)
call handle_lost_particle(p, "Cannot reflect particle " &
&// trim(to_str(p % id)) // " off surface in a lower universe.")
return
end if
@ -562,9 +558,8 @@ contains
w = w + 2*dot_prod*R*z
case default
message = "Reflection not supported for surface " // &
trim(to_str(surf % id))
call fatal_error()
call fatal_error("Reflection not supported for surface " &
&// trim(to_str(surf % id)))
end select
! Set new particle direction
@ -583,8 +578,8 @@ contains
call deallocate_coord(p % coord0 % next)
call find_cell(p, found)
if (.not. found) then
message = "Couldn't find particle after reflecting from surface."
call handle_lost_particle(p)
call handle_lost_particle(p, "Couldn't find particle after reflecting&
& from surface.")
return
end if
end if
@ -594,8 +589,8 @@ contains
! Diagnostic message
if (verbosity >= 10 .or. trace) then
message = " Reflected from surface " // trim(to_str(surf%id))
call write_message()
call write_message(" Reflected from surface " &
&// trim(to_str(surf%id)))
end if
return
end if
@ -643,14 +638,13 @@ contains
! undefined region in the geometry.
if (.not. found) then
message = "After particle " // trim(to_str(p % id)) // " crossed surface " &
// trim(to_str(surfaces(i_surface) % id)) // " it could not be &
&located in any cell and it did not leak."
call handle_lost_particle(p)
call handle_lost_particle(p, "After particle " // trim(to_str(p % id)) &
&// " crossed surface " // trim(to_str(surfaces(i_surface) % id)) &
&// " it could not be located in any cell and it did not leak.")
return
end if
end if
end subroutine cross_surface
!===============================================================================
@ -672,11 +666,10 @@ contains
lat => lattices(p % coord % lattice)
if (verbosity >= 10 .or. trace) then
message = " Crossing lattice " // trim(to_str(lat % id)) // &
". Current position (" // trim(to_str(p % coord % lattice_x)) &
// "," // trim(to_str(p % coord % lattice_y)) // "," // &
trim(to_str(p % coord % lattice_z)) // ")"
call write_message()
call write_message(" Crossing lattice " // trim(to_str(lat % id)) &
&// ". Current position (" // trim(to_str(p % coord % lattice_x)) &
&// "," // trim(to_str(p % coord % lattice_y)) // "," &
&// trim(to_str(p % coord % lattice_z)) // ")")
end if
if (lat % type == LATTICE_RECT) then
@ -739,9 +732,8 @@ contains
! Search for particle
call find_cell(p, found)
if (.not. found) then
message = "Could not locate particle " // trim(to_str(p % id)) // &
" after crossing a lattice boundary."
call handle_lost_particle(p)
call handle_lost_particle(p, "Could not locate particle " &
&// trim(to_str(p % id)) // " after crossing a lattice boundary.")
return
end if
else
@ -762,9 +754,9 @@ contains
! Search for particle
call find_cell(p, found)
if (.not. found) then
message = "Could not locate particle " // trim(to_str(p % id)) // &
" after crossing a lattice boundary."
call handle_lost_particle(p)
call handle_lost_particle(p, "Could not locate particle " &
&// trim(to_str(p % id)) &
&// " after crossing a lattice boundary.")
return
end if
end if
@ -914,7 +906,7 @@ contains
if (quad < ZERO) then
! no intersection with cylinder
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the cylinder, thus one distance is
@ -963,7 +955,7 @@ contains
if (quad < ZERO) then
! no intersection with cylinder
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the cylinder, thus one distance is
@ -1012,7 +1004,7 @@ contains
if (quad < ZERO) then
! no intersection with cylinder
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the cylinder, thus one distance is
@ -1059,7 +1051,7 @@ contains
if (quad < ZERO) then
! no intersection with sphere
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the sphere, thus one distance is
@ -1106,7 +1098,7 @@ contains
if (quad < ZERO) then
! no intersection with cone
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the cone, thus one distance is positive/negative
@ -1125,7 +1117,7 @@ contains
d = (-k - quad)/a
b = (-k + quad)/a
! determine the smallest positive solution
! determine the smallest positive solution
if (d < ZERO) then
if (b > ZERO) then
d = b
@ -1155,7 +1147,7 @@ contains
if (quad < ZERO) then
! no intersection with cone
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the cone, thus one distance is positive/negative
@ -1174,7 +1166,7 @@ contains
d = (-k - quad)/a
b = (-k + quad)/a
! determine the smallest positive solution
! determine the smallest positive solution
if (d < ZERO) then
if (b > ZERO) then
d = b
@ -1204,7 +1196,7 @@ contains
if (quad < ZERO) then
! no intersection with cone
d = INFINITY
d = INFINITY
elseif (on_surface) then
! particle is on the cone, thus one distance is positive/negative
@ -1223,7 +1215,7 @@ contains
d = (-k - quad)/a
b = (-k + quad)/a
! determine the smallest positive solution
! determine the smallest positive solution
if (d < ZERO) then
if (b > ZERO) then
d = b
@ -1281,7 +1273,7 @@ contains
! logic here checks whether the relative difference is within floating
! point precision.
if (d < dist) then
if (d < dist) then
if (abs(d - dist)/dist >= FP_REL_PRECISION) then
dist = d
if (u > 0) then
@ -1494,8 +1486,8 @@ contains
type(Cell), pointer :: c
type(Surface), pointer :: surf
message = "Building neighboring cells lists for each surface..."
call write_message(4)
call write_message("Building neighboring cells lists for each surface...", &
&4)
allocate(count_positive(n_surfaces))
allocate(count_negative(n_surfaces))
@ -1562,25 +1554,24 @@ contains
! HANDLE_LOST_PARTICLE
!===============================================================================
subroutine handle_lost_particle(p)
subroutine handle_lost_particle(p, message)
type(Particle), intent(inout) :: p
character(*) :: message
! Print warning and write lost particle file
call warning(force = .true.)
call warning(message)
call write_particle_restart(p)
! Increment number of lost particles
p % alive = .false.
!$omp critical
!$omp atomic
n_lost_particles = n_lost_particles + 1
!$omp end critical
! Abort the simulation if the maximum number of lost particles has been
! reached
if (n_lost_particles == MAX_LOST_PARTICLES) then
message = "Maximum number of lost particles has been reached."
call fatal_error()
call fatal_error("Maximum number of lost particles has been reached.")
end if
end subroutine handle_lost_particle

View file

@ -62,7 +62,7 @@ module global
! Cross section arrays
type(Nuclide), allocatable, target :: nuclides(:) ! Nuclide cross-sections
type(SAlphaBeta), allocatable, target :: sab_tables(:) ! S(a,b) tables
type(XsListing), allocatable, target :: xs_listings(:) ! cross_sections.xml listings
type(XsListing), allocatable, target :: xs_listings(:) ! cross_sections.xml listings
! Cross section caches
type(NuclideMicroXS), allocatable :: micro_xs(:) ! Cache for each nuclide
@ -77,11 +77,6 @@ module global
type(DictCharInt) :: sab_dict
type(DictCharInt) :: xs_listing_dict
! Unionized energy grid
integer :: grid_method ! how to treat the energy grid
integer :: n_grid ! number of points on unionized grid
real(8), allocatable :: e_grid(:) ! energies on unionized grid
! Unreoslved resonance probablity tables
logical :: urr_ptables_on = .true.
@ -119,7 +114,7 @@ module global
! 2) track-length estimate of k-eff
! 3) leakage fraction
type(TallyResult), target :: global_tallies(N_GLOBAL_TALLIES)
type(TallyResult), allocatable, target :: global_tallies(:)
! Tally map structure
type(TallyMap), allocatable :: tally_maps(:)
@ -223,7 +218,6 @@ module global
type(Timer) :: time_total ! timer for total run
type(Timer) :: time_initialize ! timer for initialization
type(Timer) :: time_read_xs ! timer for reading cross sections
type(Timer) :: time_unionize ! timer for unionizing energy grid
type(Timer) :: time_bank ! timer for fission bank synchronization
type(Timer) :: time_bank_sample ! timer for fission bank sampling
type(Timer) :: time_bank_sendrecv ! timer for fission bank SEND/RECV
@ -272,9 +266,6 @@ module global
character(MAX_FILE_LEN) :: path_particle_restart ! Path to particle restart
character(MAX_FILE_LEN) :: path_output = '' ! Path to output directory
! Message used in message/warning/fatal_error
character(2*MAX_LINE_LEN) :: message
! Random number seed
integer(8) :: seed = 1_8
@ -303,7 +294,7 @@ module global
logical :: write_initial_source = .false.
! ============================================================================
! CMFD VARIABLES
! CMFD VARIABLES
! Main object
type(cmfd_type) :: cmfd
@ -313,11 +304,11 @@ module global
! CMFD communicator
integer :: cmfd_comm
! Timing objects
type(Timer) :: time_cmfd ! timer for whole cmfd calculation
type(Timer) :: time_cmfdbuild ! timer for matrix build
type(Timer) :: time_cmfdsolve ! timer for solver
type(Timer) :: time_cmfdsolve ! timer for solver
! Flag for active core map
logical :: cmfd_coremap = .false.
@ -393,23 +384,23 @@ module global
! RESONANCE SCATTERING VARIABLES
logical :: treat_res_scat = .false. ! is resonance scattering treated?
integer :: n_res_scatterers_total = 0 ! total number of resonant scatterers
integer :: n_res_scatterers_total = 0 ! total number of resonant scatterers
type(Nuclide0K), allocatable, target :: nuclides_0K(:) ! 0K nuclides info
!$omp threadprivate(micro_xs, material_xs, fission_bank, n_bank, message, &
!$omp threadprivate(micro_xs, material_xs, fission_bank, n_bank, &
!$omp& trace, thread_id, current_work, matching_bins)
contains
!===============================================================================
! FREE_MEMORY deallocates and clears all global allocatable arrays in the
! FREE_MEMORY deallocates and clears all global allocatable arrays in the
! program
!===============================================================================
subroutine free_memory()
integer :: i ! Loop Index
! Deallocate cells, surfaces, materials
if (allocated(cells)) deallocate(cells)
if (allocated(universes)) deallocate(universes)
@ -452,6 +443,7 @@ contains
if (allocated(entropy_p)) deallocate(entropy_p)
! Deallocate tally-related arrays
if (allocated(global_tallies)) deallocate(global_tallies)
if (allocated(meshes)) deallocate(meshes)
if (allocated(tallies)) then
! First call the clear routines
@ -464,9 +456,6 @@ contains
if (allocated(matching_bins)) deallocate(matching_bins)
if (allocated(tally_maps)) deallocate(tally_maps)
! Deallocate energy grid
if (allocated(e_grid)) deallocate(e_grid)
! Deallocate fission and source bank and entropy
!$omp parallel
if (allocated(fission_bank)) deallocate(fission_bank)
@ -491,7 +480,7 @@ contains
! Deallocate track_identifiers
if (allocated(track_identifiers)) deallocate(track_identifiers)
! Deallocate dictionaries
call cell_dict % clear()
call universe_dict % clear()
@ -528,7 +517,7 @@ contains
if (allocated(ufs_mesh % width)) deallocate(ufs_mesh % width)
deallocate(ufs_mesh)
end if
end subroutine free_memory
end module global

View file

@ -67,7 +67,7 @@ contains
end if
! Terminate access to the file.
call su % file_close()
call su % file_close()
end subroutine hdf5_write_summary
@ -80,7 +80,7 @@ contains
! Write version information
call su % write_data(VERSION_MAJOR, "version_major")
call su % write_data(VERSION_MINOR, "version_minor")
call su % write_data(VERSION_RELEASE, "version_release")
call su % write_data(VERSION_RELEASE, "version_release")
! Write current date and time
call su % write_data(time_stamp(), "date_and_time")
@ -88,7 +88,7 @@ contains
! Write MPI information
call su % write_data(n_procs, "n_procs")
call su % write_attribute_string("n_procs", "description", &
"Number of MPI processes")
"Number of MPI processes")
end subroutine hdf5_write_header
@ -144,12 +144,12 @@ contains
call su % write_data("universe", "fill_type", &
group="geometry/cells/cell " // trim(to_str(c % id)))
call su % write_data(universes(c % fill) % id, "material", &
group="geometry/cells/cell " // trim(to_str(c % id)))
group="geometry/cells/cell " // trim(to_str(c % id)))
case (CELL_LATTICE)
call su % write_data("lattice", "fill_type", &
group="geometry/cells/cell " // trim(to_str(c % id)))
call su % write_data(lattices(c % fill) % id, "lattice", &
group="geometry/cells/cell " // trim(to_str(c % id)))
group="geometry/cells/cell " // trim(to_str(c % id)))
end select
! Write list of bounding surfaces
@ -303,7 +303,7 @@ contains
else
n_z = 1
end if
! Write lattice universes
allocate(lattice_universes(n_x, n_y, n_z))
do j = 1, n_x
@ -371,7 +371,7 @@ contains
group="materials/material " // trim(to_str(m % id)))
call su % write_data(m % i_sab_tables, "i_sab_tables", &
length=m % n_sab, &
group="materials/material " // trim(to_str(m % id)))
group="materials/material " // trim(to_str(m % id)))
end if
end do
@ -659,8 +659,6 @@ contains
group="timing")
call su % write_data(time_read_xs % elapsed, "time_read_xs", &
group="timing")
call su % write_data(time_unionize % elapsed, "time_unionize", &
group="timing")
call su % write_data(time_transport % elapsed, "time_transport", &
group="timing")
call su % write_data(time_bank % elapsed, "time_bank", &
@ -685,8 +683,6 @@ contains
"Total time elapsed for initialization (s)", group="timing")
call su % write_attribute_string("time_read_xs", "description", &
"Time reading cross-section libraries (s)", group="timing")
call su % write_attribute_string("time_unionize", "description", &
"Time unionizing energy grid (s)", group="timing")
call su % write_attribute_string("time_transport", "description", &
"Time in transport only (s)", group="timing")
call su % write_attribute_string("time_bank", "description", &

View file

@ -4,7 +4,7 @@ module initialize
use bank_header, only: Bank
use constants
use dict_header, only: DictIntInt, ElemKeyValueII
use energy_grid, only: unionized_grid
use energy_grid, only: logarithmic_grid, grid_method
use error, only: fatal_error, warning
use geometry, only: neighbor_lists
use geometry_header, only: Cell, Universe, Lattice, BASE_UNIVERSE
@ -108,11 +108,9 @@ contains
! Create linked lists for multiple instances of the same nuclide
call same_nuclide_list()
! Construct unionized energy grid from cross-sections
if (grid_method == GRID_UNION) then
call time_unionize % start()
call unionized_grid()
call time_unionize % stop()
! Construct logarithmic energy grid for cross-sections
if (grid_method == GRID_LOGARITHM) then
call logarithmic_grid()
end if
! Allocate and setup tally stride, matching_bins, and tally maps
@ -156,10 +154,8 @@ contains
! Warn if overlap checking is on
if (master .and. check_overlaps) then
message = ""
call write_message()
message = "Cell overlap checking is ON"
call warning()
call write_message("")
call warning("Cell overlap checking is ON")
end if
! Stop initialization timer
@ -342,9 +338,8 @@ contains
! Check that number specified was valid
if (n_particles == ERROR_INT) then
message = "Must specify integer after " // trim(argv(i-1)) // &
" command-line flag."
call fatal_error()
call fatal_error("Must specify integer after " // trim(argv(i-1)) &
&// " command-line flag.")
end if
case ('-r', '-restart', '--restart')
! Read path for state point/particle restart
@ -364,8 +359,7 @@ contains
path_particle_restart = argv(i)
particle_restart_run = .true.
case default
message = "Unrecognized file after restart flag."
call fatal_error()
call fatal_error("Unrecognized file after restart flag.")
end select
! If its a restart run check for additional source file
@ -383,8 +377,8 @@ contains
call sp % read_data(filetype, 'filetype')
call sp % file_close()
if (filetype /= FILETYPE_SOURCE) then
message = "Second file after restart flag must be a source file"
call fatal_error()
call fatal_error("Second file after restart flag must be a &
&source file")
end if
! It is a source file
@ -418,13 +412,13 @@ contains
! Read and set number of OpenMP threads
n_threads = int(str_to_int(argv(i)), 4)
if (n_threads < 1) then
message = "Invalid number of threads specified on command line."
call fatal_error()
call fatal_error("Invalid number of threads specified on command &
&line.")
end if
call omp_set_num_threads(n_threads)
#else
message = "Ignoring number of threads specified on command line."
call warning()
if (master) call warning("Ignoring number of threads specified on &
&command line.")
#endif
case ('-?', '-h', '-help', '--help')
@ -438,10 +432,8 @@ contains
i = i + 1
case ('-t', '-track', '--track')
write_all_tracks = .true.
i = i + 1
case default
message = "Unknown command line option: " // argv(i)
call fatal_error()
call fatal_error("Unknown command line option: " // argv(i))
end select
last_flag = i
@ -577,9 +569,8 @@ contains
i_array = surface_dict % get_key(abs(id))
c % surfaces(j) = sign(i_array, id)
else
message = "Could not find surface " // trim(to_str(abs(id))) // &
" specified on cell " // trim(to_str(c % id))
call fatal_error()
call fatal_error("Could not find surface " // trim(to_str(abs(id)))&
&// " specified on cell " // trim(to_str(c % id)))
end if
end if
end do
@ -591,9 +582,8 @@ contains
if (universe_dict % has_key(id)) then
c % universe = universe_dict % get_key(id)
else
message = "Could not find universe " // trim(to_str(id)) // &
" specified on cell " // trim(to_str(c % id))
call fatal_error()
call fatal_error("Could not find universe " // trim(to_str(id)) &
&// " specified on cell " // trim(to_str(c % id)))
end if
! =======================================================================
@ -607,9 +597,8 @@ contains
c % type = CELL_NORMAL
c % material = material_dict % get_key(id)
else
message = "Could not find material " // trim(to_str(id)) // &
" specified on cell " // trim(to_str(c % id))
call fatal_error()
call fatal_error("Could not find material " // trim(to_str(id)) &
&// " specified on cell " // trim(to_str(c % id)))
end if
else
id = c % fill
@ -626,15 +615,14 @@ contains
else if (material_dict % has_key(mid)) then
c % material = material_dict % get_key(mid)
else
message = "Could not find material " // trim(to_str(mid)) // &
" specified on lattice " // trim(to_str(lid))
call fatal_error()
call fatal_error("Could not find material " // trim(to_str(mid)) &
&// " specified on lattice " // trim(to_str(lid)))
end if
else
message = "Specified fill " // trim(to_str(id)) // " on cell " // &
trim(to_str(c % id)) // " is neither a universe nor a lattice."
call fatal_error()
call fatal_error("Specified fill " // trim(to_str(id)) // " on cell "&
&// trim(to_str(c % id)) // " is neither a universe nor a &
&lattice.")
end if
end if
end do
@ -659,9 +647,8 @@ contains
if (universe_dict % has_key(id)) then
lat % universes(j,k,m) = universe_dict % get_key(id)
else
message = "Invalid universe number " // trim(to_str(id)) &
// " specified on lattice " // trim(to_str(lat % id))
call fatal_error()
call fatal_error("Invalid universe number " // trim(to_str(id)) &
&// " specified on lattice " // trim(to_str(lat % id)))
end if
end do
end do
@ -685,9 +672,8 @@ contains
if (cell_dict % has_key(id)) then
t % filters(j) % int_bins(k) = cell_dict % get_key(id)
else
message = "Could not find cell " // trim(to_str(id)) // &
" specified on tally " // trim(to_str(t % id))
call fatal_error()
call fatal_error("Could not find cell " // trim(to_str(id)) &
&// " specified on tally " // trim(to_str(t % id)))
end if
end do
@ -701,9 +687,8 @@ contains
if (surface_dict % has_key(id)) then
t % filters(j) % int_bins(k) = surface_dict % get_key(id)
else
message = "Could not find surface " // trim(to_str(id)) // &
" specified on tally " // trim(to_str(t % id))
call fatal_error()
call fatal_error("Could not find surface " // trim(to_str(id)) &
&// " specified on tally " // trim(to_str(t % id)))
end if
end do
@ -714,9 +699,8 @@ contains
if (universe_dict % has_key(id)) then
t % filters(j) % int_bins(k) = universe_dict % get_key(id)
else
message = "Could not find universe " // trim(to_str(id)) // &
" specified on tally " // trim(to_str(t % id))
call fatal_error()
call fatal_error("Could not find universe " // trim(to_str(id)) &
&// " specified on tally " // trim(to_str(t % id)))
end if
end do
@ -727,9 +711,8 @@ contains
if (material_dict % has_key(id)) then
t % filters(j) % int_bins(k) = material_dict % get_key(id)
else
message = "Could not find material " // trim(to_str(id)) // &
" specified on tally " // trim(to_str(t % id))
call fatal_error()
call fatal_error("Could not find material " // trim(to_str(id)) &
&// " specified on tally " // trim(to_str(t % id)))
end if
end do
@ -864,8 +847,7 @@ contains
! Check for allocation errors
if (alloc_err /= 0) then
message = "Failed to allocate source bank."
call fatal_error()
call fatal_error("Failed to allocate source bank.")
end if
#ifdef _OPENMP
@ -892,8 +874,7 @@ contains
! Check for allocation errors
if (alloc_err /= 0) then
message = "Failed to allocate fission bank."
call fatal_error()
call fatal_error("Failed to allocate fission bank.")
end if
end subroutine allocate_banks

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,6 @@ module interpolation
use constants
use endf_header, only: Tab1
use error, only: fatal_error
use global, only: message
use search, only: binary_search
use string, only: to_str
@ -118,8 +117,7 @@ contains
r = (log(x) - log(x0))/(log(x1) - log(x0))
y = exp((1-r)*log(y0) + r*log(y1))
case default
message = "Unsupported interpolation scheme: " // to_str(interp)
call fatal_error()
call fatal_error("Unsupported interpolation scheme: " // to_str(interp))
end select
end function interpolate_tab1_array
@ -204,8 +202,7 @@ contains
r = (log(x) - log(x0))/(log(x1) - log(x0))
y = exp((1-r)*log(y0) + r*log(y1))
case default
message = "Unsupported interpolation scheme: " // to_str(interp)
call fatal_error()
call fatal_error("Unsupported interpolation scheme: " // to_str(interp))
end select
end function interpolate_tab1_object

View file

@ -50,7 +50,7 @@ contains
! Write version information
write(UNIT=OUTPUT_UNIT, FMT=*) &
' Copyright: 2011-2014 Massachusetts Institute of Technology'
' Copyright: 2011-2015 Massachusetts Institute of Technology'
write(UNIT=OUTPUT_UNIT, FMT=*) &
' License: http://mit-crpg.github.io/openmc/license.html'
write(UNIT=OUTPUT_UNIT, FMT='(6X,"Version:",8X,I1,".",I1,".",I1)') &
@ -157,7 +157,7 @@ contains
if (master) then
write(UNIT=OUTPUT_UNIT, FMT='(1X,A,1X,I1,".",I1,".",I1)') &
"OpenMC version", VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE
write(UNIT=OUTPUT_UNIT, FMT=*) "Copyright (c) 2011-2013 &
write(UNIT=OUTPUT_UNIT, FMT=*) "Copyright (c) 2011-2015 &
&Massachusetts Institute of Technology"
write(UNIT=OUTPUT_UNIT, FMT=*) "MIT/X license at &
&<http://mit-crpg.github.io/openmc/license.html>"
@ -193,8 +193,9 @@ contains
! standard output stream.
!===============================================================================
subroutine write_message(level)
subroutine write_message(message, level)
character(*) :: message
integer, optional :: level ! verbosity level
integer :: i_start ! starting position
@ -215,7 +216,7 @@ contains
i_start = 0
do
if (length - i_start < line_wrap - 1) then
if (length - i_start < line_wrap + 1) then
! Remainder of message will fit on line
write(ou, fmt='(1X,A)') message(i_start+1:length)
exit
@ -1172,7 +1173,7 @@ contains
call header("OpenMC Monte Carlo Code", unit=UNIT_SUMMARY, level=1)
write(UNIT=UNIT_SUMMARY, FMT=*) &
"Copyright: 2011-2013 Massachusetts Institute of Technology"
"Copyright: 2011-2015 Massachusetts Institute of Technology"
write(UNIT=UNIT_SUMMARY, FMT='(1X,A,7X,2(I1,"."),I1)') &
"Version:", VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE
#ifdef GIT_SHA1
@ -1225,12 +1226,6 @@ contains
end do
end if
! print summary of unionized energy grid
call header("UNIONIZED ENERGY GRID", unit=UNIT_SUMMARY)
write(UNIT_SUMMARY,*) "Points on energy grid: " // trim(to_str(n_grid))
write(UNIT_SUMMARY,*) "Extra storage required: " // trim(to_str(&
n_grid*n_nuclides_total*4)) // " bytes"
! print summary of variance reduction
call header("VARIANCE REDUCTION", unit=UNIT_SUMMARY)
if (survival_biasing) then
@ -1427,6 +1422,12 @@ contains
! Plot id
write(ou,100) "Plot ID:", trim(to_str(pl % id))
! Plot filename
write(ou,100) "Plot file:", trim(pl % path_plot)
! Plot level
write(ou,100) "Universe depth:", trim(to_str(pl % level))
! Plot type
if (pl % type == PLOT_TYPE_SLICE) then
write(ou,100) "Plot Type:", "Slice"
@ -1493,7 +1494,6 @@ contains
! display time elapsed for various sections
write(ou,100) "Total time for initialization", time_initialize % elapsed
write(ou,100) " Reading cross sections", time_read_xs % elapsed
write(ou,100) " Unionizing energy grid", time_unionize % elapsed
write(ou,100) "Total time in simulation", time_inactive % elapsed + &
time_active % elapsed
write(ou,100) " Time in transport only", time_transport % elapsed
@ -1587,8 +1587,8 @@ contains
write(ou,102) "Leakage Fraction", global_tallies(LEAKAGE) % sum, &
global_tallies(LEAKAGE) % sum_sq
else
message = "Could not compute uncertainties -- only one active batch simulated!"
call warning()
if (master) call warning("Could not compute uncertainties -- only one &
&active batch simulated!")
write(ou,103) "k-effective (Collision)", global_tallies(K_COLLISION) % sum
write(ou,103) "k-effective (Track-length)", global_tallies(K_TRACKLENGTH) % sum

View file

@ -138,7 +138,7 @@ contains
subroutine file_open(self, filename, mode, serial)
character(*), intent(in) :: filename ! name of file to be opened
character(*), intent(in) :: mode ! file access mode
character(*), intent(in) :: mode ! file access mode
logical, optional, intent(in) :: serial ! processor rank to write from
class(BinaryOutput) :: self
@ -307,7 +307,7 @@ contains
subroutine read_double(self, buffer, name, group, collect)
real(8), intent(inout) :: buffer ! read data to here
real(8), intent(inout) :: buffer ! read data to here
character(*), intent(in) :: name ! name for data
character(*), intent(in), optional :: group ! HDF5 group name
logical, intent(in), optional :: collect ! collective I/O
@ -342,7 +342,7 @@ contains
# ifdef MPI
if (self % serial) then
call hdf5_read_double(self % hdf5_grp, name_, buffer)
else
else
call hdf5_read_double_parallel(self % hdf5_grp, name_, buffer, collect_)
end if
# else
@ -621,7 +621,7 @@ contains
subroutine write_double_3Darray(self, buffer, name, group, length, collect)
integer, intent(in) :: length(3) ! length of each dimension
real(8), intent(in) :: buffer(length(1),length(2),length(3))
real(8), intent(in) :: buffer(length(1),length(2),length(3))
character(*), intent(in) :: name ! name of data
character(*), intent(in), optional :: group ! HDF5 group name
logical, intent(in), optional :: collect ! collective I/O
@ -684,7 +684,7 @@ contains
subroutine read_double_3Darray(self, buffer, name, group, length, collect)
integer, intent(in) :: length(3) ! length of each dimension
real(8), intent(inout) :: buffer(length(1),length(2),length(3))
real(8), intent(inout) :: buffer(length(1),length(2),length(3))
character(*), intent(in) :: name ! name of data
character(*), intent(in), optional :: group ! HDF5 group name
logical, intent(in), optional :: collect ! collective I/O
@ -940,7 +940,7 @@ contains
subroutine read_integer(self, buffer, name, group, collect)
integer, intent(inout) :: buffer ! read data to here
integer, intent(inout) :: buffer ! read data to here
character(*), intent(in) :: name ! name for data
character(*), intent(in), optional :: group ! HDF5 group name
logical, intent(in), optional :: collect ! collective I/O
@ -1174,7 +1174,7 @@ contains
! Check if HDF5 group should be closed
if (present(group)) call hdf5_close_group(self % hdf5_grp)
#elif MPI
if (self % serial) then
if (self % serial) then
write(self % unit_fh) buffer(1:length(1),1:length(2))
else
call mpi_write_integer_2Darray(self % unit_fh, buffer, length, collect_)
@ -1255,7 +1255,7 @@ contains
subroutine write_integer_3Darray(self, buffer, name, group, length, collect)
integer, intent(in) :: length(3) ! length of each dimension
integer, intent(in) :: buffer(length(1),length(2),length(3))
integer, intent(in) :: buffer(length(1),length(2),length(3))
character(*), intent(in) :: name ! name of data
character(*), intent(in), optional :: group ! HDF5 group name
logical, intent(in), optional :: collect ! collective I/O
@ -1318,7 +1318,7 @@ contains
subroutine read_integer_3Darray(self, buffer, name, group, length, collect)
integer, intent(in) :: length(3) ! length of each dimension
integer, intent(inout) :: buffer(length(1),length(2),length(3))
integer, intent(inout) :: buffer(length(1),length(2),length(3))
character(*), intent(in) :: name ! name of data
character(*), intent(in), optional :: group ! HDF5 group name
logical, intent(in), optional :: collect ! collective I/O
@ -1828,7 +1828,7 @@ contains
end if
! Set overall size of vector to write
dims1(1) = n1*n2
dims1(1) = n1*n2
! Create up a dataspace for size
call h5screate_simple_f(1, dims1, dspace, hdf5_err)
@ -1858,8 +1858,8 @@ contains
end do
end do
#endif
#endif
end subroutine write_tally_result
!===============================================================================
@ -1927,8 +1927,8 @@ contains
end do
end do
#endif
#endif
end subroutine read_tally_result
!===============================================================================
@ -1942,8 +1942,8 @@ contains
#ifdef MPI
# ifndef HDF5
integer(MPI_OFFSET_KIND) :: offset ! offset of data
integer :: size_offset_kind ! the data offset kind
integer :: size_bank ! size of bank to write
integer :: datatype
# endif
# ifdef HDF5
integer(8) :: offset(1) ! source data offset
@ -2018,29 +2018,25 @@ contains
call h5dclose_f(dset, hdf5_err)
call h5sclose_f(dspace, hdf5_err)
# endif
# endif
#elif MPI
! Get current offset for master
! Get current offset for master
if (master) call MPI_FILE_GET_POSITION(self % unit_fh, offset, mpiio_err)
! Determine offset on master process and broadcast to all processors
call MPI_SIZEOF(offset, size_offset_kind, mpi_err)
select case (size_offset_kind)
case (4)
call MPI_BCAST(offset, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, mpi_err)
case (8)
call MPI_BCAST(offset, 1, MPI_INTEGER8, 0, MPI_COMM_WORLD, mpi_err)
end select
call MPI_TYPE_MATCH_SIZE(MPI_TYPECLASS_INTEGER, MPI_OFFSET_KIND, &
datatype, mpi_err)
call MPI_BCAST(offset, 1, datatype, 0, MPI_COMM_WORLD, mpi_err)
! Set the proper offset for source data on this processor
call MPI_TYPE_SIZE(MPI_BANK, size_bank, mpi_err)
offset = offset + size_bank*work_index(rank)
! Write all source sites
call MPI_FILE_WRITE_AT(self % unit_fh, offset, source_bank(1), work, MPI_BANK, &
MPI_STATUS_IGNORE, mpiio_err)
call MPI_FILE_WRITE_AT(self % unit_fh, offset, source_bank(1), int(work), &
MPI_BANK, MPI_STATUS_IGNORE, mpiio_err)
#else
@ -2122,7 +2118,7 @@ contains
! Close all ids
call h5dclose_f(dset, hdf5_err)
# endif
# endif
#elif MPI
@ -2131,7 +2127,7 @@ contains
call MPI_FILE_SEEK(self % unit_fh, offset, MPI_SEEK_END, &
mpiio_err)
! Get current offset (will be at EOF)
! Get current offset (will be at EOF)
call MPI_FILE_GET_POSITION(self % unit_fh, offset, mpiio_err)
! Get the size of the source bank on all procs
@ -2144,8 +2140,8 @@ contains
offset = offset + size_bank*work_index(rank)
! Write all source sites
call MPI_FILE_READ_AT(self % unit_fh, offset, source_bank(1), work, MPI_BANK, &
MPI_STATUS_IGNORE, mpiio_err)
call MPI_FILE_READ_AT(self % unit_fh, offset, source_bank(1), int(work), &
MPI_BANK, MPI_STATUS_IGNORE, mpiio_err)
#else

View file

@ -16,8 +16,7 @@ module particle_restart
private
public :: run_particle_restart
! Binary file
type(BinaryOutput) :: pr
type(BinaryOutput) :: pr ! Binary file
contains
@ -73,9 +72,8 @@ contains
type(Particle), intent(inout) :: p
! Write meessage
message = "Loading particle restart file " // trim(path_particle_restart) &
// "..."
call write_message(1)
call write_message("Loading particle restart file " &
&// trim(path_particle_restart) // "...", 1)
! Open file
call pr % file_open(path_particle_restart, 'r')

View file

@ -47,17 +47,15 @@ contains
! Display information about collision
if (verbosity >= 10 .or. trace) then
message = " " // trim(reaction_name(p % event_MT)) // " with " // &
trim(adjustl(nuclides(p % event_nuclide) % name)) // &
". Energy = " // trim(to_str(p % E * 1e6_8)) // " eV."
call write_message()
call write_message(" " // trim(reaction_name(p % event_MT)) &
&// " with " // trim(adjustl(nuclides(p % event_nuclide) % name)) &
&// ". Energy = " // trim(to_str(p % E * 1e6_8)) // " eV.")
end if
! check for very low energy
if (p % E < 1.0e-100_8) then
p % alive = .false.
message = "Killing neutron with extremely low energy"
call warning()
if (master) call warning("Killing neutron with extremely low energy")
end if
end subroutine collision
@ -92,7 +90,7 @@ contains
! change when sampling fission sites. The following block handles all
! absorption (including fission)
if (nuc % fissionable) then
if (nuc % fissionable .and. run_mode == MODE_EIGENVALUE) then
call sample_fission(i_nuclide, i_reaction)
call create_fission_sites(p, i_nuclide, i_reaction)
end if
@ -159,8 +157,7 @@ contains
! Check to make sure that a nuclide was sampled
if (i > mat % n_nuclides) then
call write_particle_restart(p)
message = "Did not sample any nuclide during collision."
call fatal_error()
call fatal_error("Did not sample any nuclide during collision.")
end if
! Find atom density
@ -234,7 +231,7 @@ contains
prob = prob + ((ONE - f)*rxn%sigma(i_grid - rxn%threshold + 1) &
+ f*(rxn%sigma(i_grid - rxn%threshold + 2)))
! Create fission bank sites if fission occus
! Create fission bank sites if fission occurs
if (prob > cutoff) exit FISSION_REACTION_LOOP
end do FISSION_REACTION_LOOP
@ -259,22 +256,19 @@ contains
p % last_wgt = p % wgt
! Score implicit absorption estimate of keff
!$omp critical
!$omp atomic
global_tallies(K_ABSORPTION) % value = &
global_tallies(K_ABSORPTION) % value + p % absorb_wgt * &
micro_xs(i_nuclide) % nu_fission / micro_xs(i_nuclide) % absorption
!$omp end critical
else
! See if disappearance reaction happens
if (micro_xs(i_nuclide) % absorption > &
prn() * micro_xs(i_nuclide) % total) then
! Score absorption estimate of keff
!$omp critical
!$omp atomic
global_tallies(K_ABSORPTION) % value = &
global_tallies(K_ABSORPTION) % value + p % wgt * &
micro_xs(i_nuclide) % nu_fission / micro_xs(i_nuclide) % absorption
!$omp end critical
p % alive = .false.
p % event = EVENT_ABSORB
@ -368,9 +362,8 @@ contains
! Check to make sure inelastic scattering reaction sampled
if (i > nuc % n_reaction) then
call write_particle_restart(p)
message = "Did not sample any reaction for nuclide " // &
trim(nuc % name)
call fatal_error()
call fatal_error("Did not sample any reaction for nuclide " &
&// trim(nuc % name))
end if
rxn => nuc % reactions(i)
@ -392,7 +385,7 @@ contains
+ f*(rxn%sigma(i_grid - rxn%threshold + 2)))
end do
! Perform collision physics for inelastics scattering
! Perform collision physics for inelastic scattering
call inelastic_scatter(nuc, rxn, p % E, p % coord0 % uvw, &
p % mu, p % wgt)
p % event_MT = rxn % MT
@ -721,8 +714,8 @@ contains
mu = sab % inelastic_data(l) % mu(k, j)
else
message = "Invalid secondary energy mode on S(a,b) table " // &
trim(sab % name)
call fatal_error("Invalid secondary energy mode on S(a,b) table " &
&// trim(sab % name))
end if ! (inelastic secondary energy treatment)
end if ! (elastic or inelastic)
@ -801,7 +794,7 @@ contains
sampling_scheme = 'cxs'
end if
! otherwise, use free gas model
! otherwise, use free gas model
else
if (E >= FREE_GAS_THRESHOLD * kT .and. awr > ONE) then
v_target = ZERO
@ -863,7 +856,7 @@ contains
m = (nuc % elastic_0K(i_E_up + 1) - xs_up) &
& / (nuc % energy_0K(i_E_up + 1) - nuc % energy_0K(i_E_up))
xs_up = xs_up + m * (E_up - nuc % energy_0K(i_E_up))
! get max 0K xs value over range of practical relative energies
xs_max = max(xs_low, &
& maxval(nuc % elastic_0K(i_E_low + 1 : i_E_up - 1)), xs_up)
@ -974,10 +967,9 @@ contains
end do
case default
message = "Not a recognized resonance scattering treatment!"
call fatal_error()
call fatal_error("Not a recognized resonance scattering treatment!")
end select
end subroutine sample_target_velocity
!===============================================================================
@ -1093,8 +1085,7 @@ contains
call get_mesh_indices(ufs_mesh, p % coord0 % xyz, ijk, in_mesh)
if (.not. in_mesh) then
call write_particle_restart(p)
message = "Source site outside UFS mesh!"
call fatal_error()
call fatal_error("Source site outside UFS mesh!")
end if
if (source_frac(1,ijk(1),ijk(2),ijk(3)) /= ZERO) then
@ -1119,10 +1110,9 @@ contains
! Check for fission bank size getting hit
if (n_bank + nu > size(fission_bank)) then
message = "Maximum number of sites in fission bank reached. This can &
&result in irreproducible results using different numbers of &
&processes/threads."
call warning()
if (master) call warning("Maximum number of sites in fission bank &
&reached. This can result in irreproducible results using different &
&numbers of processes/threads.")
end if
! Bank source neutrons
@ -1247,9 +1237,8 @@ contains
n_sample = n_sample + 1
if (n_sample == MAX_SAMPLE) then
! call write_particle_restart(p)
message = "Resampled energy distribution maximum number of " // &
"times for nuclide " // nuc % name
call fatal_error()
call fatal_error("Resampled energy distribution maximum number of " &
&// "times for nuclide " // nuc % name)
end if
end do
@ -1274,9 +1263,8 @@ contains
n_sample = n_sample + 1
if (n_sample == MAX_SAMPLE) then
! call write_particle_restart(p)
message = "Resampled energy distribution maximum number of " // &
"times for nuclide " // nuc % name
call fatal_error()
call fatal_error("Resampled energy distribution maximum number of " &
&// "times for nuclide " // nuc % name)
end if
end do
@ -1303,6 +1291,7 @@ contains
real(8) :: E_in ! incoming energy
real(8) :: E_cm ! outgoing energy in center-of-mass
real(8) :: Q ! Q-value of reaction
real(8) :: yield ! neutron yield
! copy energy of neutron
E_in = E
@ -1342,8 +1331,13 @@ contains
! change direction of particle
uvw = rotate_angle(uvw, mu)
! change weight of particle based on multiplicity
wgt = rxn % multiplicity * wgt
! change weight of particle based on yield
if (rxn % multiplicity_with_E) then
yield = interpolate_tab1(rxn % multiplicity_E, E_in)
else
yield = rxn % multiplicity
end if
wgt = yield * wgt
end subroutine inelastic_scatter
@ -1457,8 +1451,7 @@ contains
end if
else
! call write_particle_restart(p)
message = "Unknown interpolation type: " // trim(to_str(interp))
call fatal_error()
call fatal_error("Unknown interpolation type: " // trim(to_str(interp)))
end if
! Because of floating-point roundoff, it may be possible for mu to be
@ -1469,8 +1462,8 @@ contains
else
! call write_particle_restart(p)
message = "Unknown angular distribution type: " // trim(to_str(type))
call fatal_error()
call fatal_error("Unknown angular distribution type: " &
&// trim(to_str(type)))
end if
end function sample_angle
@ -1585,6 +1578,7 @@ contains
real(8) :: E_max ! parameter for n-body dist
real(8) :: x, y, v ! intermediate variables for n-body dist
real(8) :: r1, r2, r3, r4, r5, r6
logical :: histogram_interp ! use histogram interpolation on incoming energy
! ==========================================================================
! SAMPLE ENERGY DISTRIBUTION IF THERE ARE MULTIPLE
@ -1617,9 +1611,8 @@ contains
NET = int(edist % data(3 + 2*NR + NE))
if (NR > 0) then
! call write_particle_restart(p)
message = "Multiple interpolation regions not supported while &
&attempting to sample equiprobable energy bins."
call fatal_error()
call fatal_error("Multiple interpolation regions not supported while &
&attempting to sample equiprobable energy bins.")
end if
! determine index on incoming energy grid and interpolation factor
@ -1682,14 +1675,13 @@ contains
NR = int(edist % data(1))
NE = int(edist % data(2 + 2*NR))
if (NR == 1) then
message = "Assuming linear-linear interpolation when sampling &
&continuous tabular distribution"
call warning()
histogram_interp = (edist % data(3) == 1)
else if (NR > 1) then
! call write_particle_restart(p)
message = "Multiple interpolation regions not supported while &
&attempting to sample continuous tabular distribution."
call fatal_error()
call fatal_error("Multiple interpolation regions not supported while &
&attempting to sample continuous tabular distribution.")
else
histogram_interp = .false.
end if
! find energy bin and calculate interpolation factor -- if the energy is
@ -1709,11 +1701,15 @@ contains
end if
! Sample between the ith and (i+1)th bin
r2 = prn()
if (r > r2) then
l = i + 1
else
if (histogram_interp) then
l = i
else
r2 = prn()
if (r > r2) then
l = i + 1
else
l = i
end if
end if
! interpolation for energy E1 and EK
@ -1747,9 +1743,8 @@ contains
if (ND > 0) then
! discrete lines present
! call write_particle_restart(p)
message = "Discrete lines in continuous tabular distributed not &
&yet supported"
call fatal_error()
call fatal_error("Discrete lines in continuous tabular distributed not &
&yet supported")
end if
! determine outgoing energy bin
@ -1789,15 +1784,16 @@ contains
end if
else
! call write_particle_restart(p)
message = "Unknown interpolation type: " // trim(to_str(INTT))
call fatal_error()
call fatal_error("Unknown interpolation type: " // trim(to_str(INTT)))
end if
! Now interpolate between incident energy bins i and i + 1
if (l == i) then
E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1)
else
E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1)
if (.not. histogram_interp) then
if (l == i) then
E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1)
else
E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1)
end if
end if
case (5)
@ -1831,8 +1827,7 @@ contains
n_sample = n_sample + 1
if (n_sample == MAX_SAMPLE) then
! call write_particle_restart(p)
message = "Too many rejections on Maxwell fission spectrum."
call fatal_error()
call fatal_error("Too many rejections on Maxwell fission spectrum.")
end if
end do
@ -1851,24 +1846,26 @@ contains
lc = 2 + 2*NR + 2*NE
U = edist % data(lc + 1)
y = (E_in - U)/T
v = 1 - exp(-y)
! sample outgoing energy based on evaporation spectrum probability
! density function
n_sample = 0
do
r1 = prn()
r2 = prn()
E_out = -T * log(r1*r2)
if (E_out <= E_in - U) exit
x = -log((1 - v*prn())*(1 - v*prn()))
if (x <= y) exit
! check for large number of rejections
n_sample = n_sample + 1
if (n_sample == MAX_SAMPLE) then
! call write_particle_restart(p)
message = "Too many rejections on evaporation spectrum."
call fatal_error()
call fatal_error("Too many rejections on evaporation spectrum.")
end if
end do
E_out = x*T
case (11)
! =======================================================================
! ENERGY-DEPENDENT WATT SPECTRUM
@ -1906,8 +1903,7 @@ contains
n_sample = n_sample + 1
if (n_sample == MAX_SAMPLE) then
! call write_particle_restart(p)
message = "Too many rejections on Watt spectrum."
call fatal_error()
call fatal_error("Too many rejections on Watt spectrum.")
end if
end do
@ -1917,8 +1913,7 @@ contains
if (.not. present(mu_out)) then
! call write_particle_restart(p)
message = "Law 44 called without giving mu_out as argument."
call fatal_error()
call fatal_error("Law 44 called without giving mu_out as argument.")
end if
! read number of interpolation regions and incoming energies
@ -1926,9 +1921,8 @@ contains
NE = int(edist % data(2 + 2*NR))
if (NR > 0) then
! call write_particle_restart(p)
message = "Multiple interpolation regions not supported while &
&attempting to sample Kalbach-Mann distribution."
call fatal_error()
call fatal_error("Multiple interpolation regions not supported while &
&attempting to sample Kalbach-Mann distribution.")
end if
! find energy bin and calculate interpolation factor -- if the energy is
@ -1987,9 +1981,8 @@ contains
if (ND > 0) then
! discrete lines present
! call write_particle_restart(p)
message = "Discrete lines in continuous tabular distributed not &
&yet supported"
call fatal_error()
call fatal_error("Discrete lines in continuous tabular distributed not &
&yet supported")
end if
! determine outgoing energy bin
@ -2043,8 +2036,7 @@ contains
KM_A = A_k + (A_k1 - A_k)*(E_out - E_l_k)/(E_l_k1 - E_l_k)
else
! call write_particle_restart()
message = "Unknown interpolation type: " // trim(to_str(INTT))
call fatal_error()
call fatal_error("Unknown interpolation type: " // trim(to_str(INTT)))
end if
! Now interpolate between incident energy bins i and i + 1
@ -2070,8 +2062,7 @@ contains
if (.not. present(mu_out)) then
! call write_particle_restart()
message = "Law 61 called without giving mu_out as argument."
call fatal_error()
call fatal_error("Law 61 called without giving mu_out as argument.")
end if
! read number of interpolation regions and incoming energies
@ -2079,9 +2070,8 @@ contains
NE = int(edist % data(2 + 2*NR))
if (NR > 0) then
! call write_particle_restart()
message = "Multiple interpolation regions not supported while &
&attempting to sample correlated energy-angle distribution."
call fatal_error()
call fatal_error("Multiple interpolation regions not supported while &
&attempting to sample correlated energy-angle distribution.")
end if
! find energy bin and calculate interpolation factor -- if the energy is
@ -2140,9 +2130,8 @@ contains
if (ND > 0) then
! discrete lines present
! call write_particle_restart()
message = "Discrete lines in continuous tabular distributed not &
&yet supported"
call fatal_error()
call fatal_error("Discrete lines in continuous tabular distributed not &
&yet supported")
end if
! determine outgoing energy bin
@ -2183,8 +2172,7 @@ contains
end if
else
! call write_particle_restart()
message = "Unknown interpolation type: " // trim(to_str(INTT))
call fatal_error()
call fatal_error("Unknown interpolation type: " // trim(to_str(INTT)))
end if
! Now interpolate between incident energy bins i and i + 1
@ -2247,8 +2235,7 @@ contains
end if
else
! call write_particle_restart()
message = "Unknown interpolation type: " // trim(to_str(JJ))
call fatal_error()
call fatal_error("Unknown interpolation type: " // trim(to_str(JJ)))
end if
case (66)

View file

@ -5,8 +5,9 @@ module plot
use geometry, only: find_cell, check_cell_overlap
use geometry_header, only: Cell, BASE_UNIVERSE
use global
use mesh, only: get_mesh_indices
use output, only: write_message
use particle_header, only: deallocate_coord, Particle
use particle_header, only: deallocate_coord, Particle, LocalCoord
use plot_header
use ppmlib, only: Image, init_image, allocate_image, &
deallocate_image, set_pixel
@ -30,8 +31,8 @@ contains
pl => plots(i)
! Display output message
message = "Processing plot " // trim(to_str(pl % id)) // "..."
call write_message(5)
call write_message("Processing plot " // trim(to_str(pl % id)) &
&// ": " // trim(pl % path_plot) // " ...", 5)
if (pl % type == PLOT_TYPE_SLICE) then
! create 2d image
@ -57,7 +58,9 @@ contains
integer, intent(out) :: id
logical :: found_cell
type(Cell), pointer :: c => null()
integer :: level
type(Cell), pointer :: c => null()
type(LocalCoord), pointer :: coord => null()
call deallocate_coord(p % coord0 % next)
p % coord => p % coord0
@ -65,6 +68,16 @@ contains
call find_cell(p, found_cell)
if (check_overlaps) call check_cell_overlap(p)
! Loop through universes and stop on any specified level
level = 0
coord => p % coord0
do
if (level == pl % level) exit
if (.not. associated(coord % next)) exit
coord => coord % next
level = level + 1
end do
if (.not. found_cell) then
! If no cell, revert to default color
rgb = pl % not_found % rgb
@ -72,19 +85,23 @@ contains
else
if (pl % color_by == PLOT_COLOR_MATS) then
! Assign color based on material
c => cells(p % coord % cell)
c => cells(coord % cell)
if (c % material == MATERIAL_VOID) then
! By default, color void cells white
rgb = 255
id = -1
else if (c % type == CELL_FILL) then
! If we stopped on a middle universe level, treat as if not found
rgb = pl % not_found % rgb
id = -1
else
rgb = pl % colors(c % material) % rgb
id = materials(c % material) % id
end if
else if (pl % color_by == PLOT_COLOR_CELLS) then
! Assign color based on cell
rgb = pl % colors(p % coord % cell) % rgb
id = cells(p % coord % cell) % id
rgb = pl % colors(coord % cell) % rgb
id = cells(coord % cell) % id
else
rgb = 0
id = -1
@ -118,27 +135,24 @@ contains
call init_image(img)
call allocate_image(img, pl % pixels(1), pl % pixels(2))
in_pixel = pl % width(1)/dble(pl % pixels(1))
out_pixel = pl % width(2)/dble(pl % pixels(2))
if (pl % basis == PLOT_BASIS_XY) then
in_i = 1
out_i = 2
in_pixel = pl % width(1)/dble(pl % pixels(1))
out_pixel = pl % width(2)/dble(pl % pixels(2))
xyz(1) = pl % origin(1) - pl % width(1) / 2.0
xyz(2) = pl % origin(2) + pl % width(2) / 2.0
xyz(3) = pl % origin(3)
else if (pl % basis == PLOT_BASIS_XZ) then
in_i = 1
out_i = 3
in_pixel = pl % width(1)/dble(pl % pixels(1))
out_pixel = pl % width(2)/dble(pl % pixels(2))
xyz(1) = pl % origin(1) - pl % width(1) / 2.0
xyz(2) = pl % origin(2)
xyz(3) = pl % origin(3) + pl % width(2) / 2.0
else if (pl % basis == PLOT_BASIS_YZ) then
in_i = 2
out_i = 3
in_pixel = pl % width(1)/dble(pl % pixels(1))
out_pixel = pl % width(2)/dble(pl % pixels(2))
xyz(1) = pl % origin(1)
xyz(2) = pl % origin(2) - pl % width(1) / 2.0
xyz(3) = pl % origin(3) + pl % width(2) / 2.0
@ -169,6 +183,9 @@ contains
p % coord0 % xyz(out_i) = p % coord0 % xyz(out_i) - out_pixel
end do
! Draw tally mesh boundaries on the image if requested
if (associated(pl % meshlines_mesh)) call draw_mesh_lines(pl, img)
! Write out the ppm to a file
call output_ppm(pl,img)
@ -180,6 +197,111 @@ contains
end subroutine create_ppm
!===============================================================================
! DRAW_MESH_LINES draws mesh line boundaries on an image
!===============================================================================
subroutine draw_mesh_lines(pl, img)
type(ObjectPlot), pointer, intent(in) :: pl
type(Image), intent(inout) :: img
logical :: in_mesh
integer :: out_, in_ ! pixel location
integer :: r, g, b ! RGB color for meshlines pixels
integer :: outrange(2), inrange(2) ! range of pixel locations
integer :: i, j ! loop indices
integer :: plus
integer :: ijk_ll(3) ! mesh bin ijk indicies of plot lower left
integer :: ijk_ur(3) ! mesh bin ijk indicies of plot upper right
integer :: outer, inner
real(8) :: frac
real(8) :: width(3) ! real widths of the plot
real(8) :: xyz_ll_plot(3) ! lower left xyz of plot image
real(8) :: xyz_ur_plot(3) ! upper right xyz of plot image
real(8) :: xyz_ll(3) ! lower left xyz
real(8) :: xyz_ur(3) ! upper right xyz
type(StructuredMesh), pointer :: m => null()
m => pl % meshlines_mesh
r = pl % meshlines_color % rgb(1)
g = pl % meshlines_color % rgb(2)
b = pl % meshlines_color % rgb(3)
select case (pl % basis)
case(PLOT_BASIS_XY)
outer = 1
inner = 2
case(PLOT_BASIS_XZ)
outer = 1
inner = 3
case(PLOT_BASIS_YZ)
outer = 2
inner = 3
end select
xyz_ll_plot = pl % origin
xyz_ur_plot = pl % origin
xyz_ll_plot(outer) = pl % origin(1) - pl % width(1) / 2.0
xyz_ll_plot(inner) = pl % origin(2) - pl % width(2) / 2.0
xyz_ur_plot(outer) = pl % origin(1) + pl % width(1) / 2.0
xyz_ur_plot(inner) = pl % origin(2) + pl % width(2) / 2.0
width = xyz_ur_plot - xyz_ll_plot
call get_mesh_indices(m, xyz_ll_plot, ijk_ll(:m % n_dimension), in_mesh)
call get_mesh_indices(m, xyz_ur_plot, ijk_ur(:m % n_dimension), in_mesh)
! sweep through all meshbins on this plane and draw borders
do i = ijk_ll(outer), ijk_ur(outer)
do j = ijk_ll(inner), ijk_ur(inner)
! check if we're in the mesh for this ijk
if (i > 0 .and. i <= m % dimension(outer) .and. &
j > 0 .and. j <= m % dimension(inner)) then
! get xyz's of lower left and upper right of this mesh cell
xyz_ll(outer) = m % lower_left(outer) + m % width(outer) * (i - 1)
xyz_ll(inner) = m % lower_left(inner) + m % width(inner) * (j - 1)
xyz_ur(outer) = m % lower_left(outer) + m % width(outer) * i
xyz_ur(inner) = m % lower_left(inner) + m % width(inner) * j
! map the xyz ranges to pixel ranges
frac = (xyz_ll(outer) - xyz_ll_plot(outer)) / width(outer)
outrange(1) = int(frac * real(img % width, 8))
frac = (xyz_ur(outer) - xyz_ll_plot(outer)) / width(outer)
outrange(2) = int(frac * real(img % width, 8))
frac = (xyz_ur(inner) - xyz_ll_plot(inner)) / width(inner)
inrange(1) = int((1. - frac) * real(img % height, 8))
frac = (xyz_ll(inner) - xyz_ll_plot(inner)) / width(inner)
inrange(2) = int((1. - frac) * real(img % height, 8))
! draw lines
do out_ = outrange(1), outrange(2)
do plus = 0, pl % meshlines_width
call set_pixel(img, out_, inrange(1) + plus, r, g, b)
call set_pixel(img, out_, inrange(2) + plus, r, g, b)
call set_pixel(img, out_, inrange(1) - plus, r, g, b)
call set_pixel(img, out_, inrange(2) - plus, r, g, b)
end do
end do
do in_ = inrange(1), inrange(2)
do plus = 0, pl % meshlines_width
call set_pixel(img, outrange(1) + plus, in_, r, g, b)
call set_pixel(img, outrange(2) + plus, in_, r, g, b)
call set_pixel(img, outrange(1) - plus, in_, r, g, b)
call set_pixel(img, outrange(2) - plus, in_, r, g, b)
end do
end do
end if
end do
end do
end subroutine draw_mesh_lines
!===============================================================================
! OUTPUT_PPM writes out a previously generated image to a PPM file
!===============================================================================

View file

@ -1,6 +1,7 @@
module plot_header
use constants
use mesh_header, only: StructuredMesh
implicit none
@ -25,6 +26,10 @@ module plot_header
real(8) :: width(3) ! xyz widths of plot
integer :: basis ! direction of plot slice
integer :: pixels(3) ! pixel width/height of plot slice
integer :: meshlines_width ! pixel width of meshlines
integer :: level ! universe depth to plot the cells of
type(StructuredMesh), pointer :: meshlines_mesh => null() ! mesh to plot
type(ObjectColor) :: meshlines_color ! Color for meshlines
type(ObjectColor) :: not_found ! color for positions where no cell found
type(ObjectColor), allocatable :: colors(:) ! colors of cells/mats
end type ObjectPlot
@ -32,6 +37,9 @@ module plot_header
! Plot type
integer, parameter :: PLOT_TYPE_SLICE = 1
integer, parameter :: PLOT_TYPE_VOXEL = 2
! Plot level
integer, parameter :: PLOT_LEVEL_LOWEST = -1
! Plot basis plane
integer, parameter :: PLOT_BASIS_XY = 1

View file

@ -7,7 +7,7 @@ element geometry {
(element material { ( xsd:int | "void" ) } |
attribute material { ( xsd:int | "void" ) })
) &
(element surfaces { list { xsd:int+ } } | attribute surfaces { list { xsd:int+ } }) &
(element surfaces { list { xsd:int* } } | attribute surfaces { list { xsd:int* } })? &
(element rotation { list { xsd:double+ } } | attribute rotation { list { xsd:double+ } })? &
(element translation { list { xsd:double+ } } | attribute translation { list { xsd:double+ } })?
}*
@ -23,8 +23,8 @@ element geometry {
& element lattice {
(element id { xsd:int } | attribute id { xsd:int }) &
(element type { ( "rectangular" | "hexagonal" ) } |
attribute type { ( "rectangular" | "hexagonal" ) })? &
(element type { ( "rect" | "rectangle" | "rectangular" | "hexagonal" ) } |
attribute type { ( "rect" | "rectangle" | "rectangular" | "hexagonal" ) })? &
(element dimension { list { xsd:positiveInteger+ } } |
attribute dimension { list { xsd:positiveInteger+ } }) &
(element lower_left { list { xsd:double+ } } | attribute lower_left { list { xsd:double+ } }) &

View file

@ -3,29 +3,39 @@ element plots {
(element id { xsd:int } | attribute id { xsd:int })? &
(element filename { xsd:string { maxLength = "50" } } |
attribute filename { xsd:string { maxLength = "50" } })? &
(element type { "slice" } | attribute type { "slice" })? &
(element type { "slice" | "voxel" } |
attribute type { "slice" | "voxel" })? &
(element color { ( "cell" | "mat" | "material" ) } |
attribute color { ( "cell" | "mat" | "material" ) })? &
(element origin { list { xsd:double+ } } |
(element level { xsd:int } | attribute level { xsd:int })? &
(element origin { list { xsd:double+ } } |
attribute origin { list { xsd:double+ } })? &
(element width { list { xsd:double+ } } |
(element width { list { xsd:double+ } } |
attribute width { list { xsd:double+ } })? &
(element basis { ( "xy" | "yz" | "xz" ) } |
attribute basis { ( "xy" | "yz" | "xz" ) })? &
(element pixels { list { xsd:int+ } } |
(element pixels { list { xsd:int+ } } |
attribute pixels { list { xsd:int+ } })? &
(element background { list { xsd:int+ } } |
attribute background { list { xsd:int+ } })? &
element col_spec {
(element id { xsd:int } | attribute id { xsd:int }) &
(element rgb { list { xsd:int+ } } |
(element rgb { list { xsd:int+ } } |
attribute rgb { list { xsd:int+ } })
}* &
element mask {
(element components { list { xsd:int+ } } |
(element components { list { xsd:int+ } } |
attribute components { list { xsd:int+ } }) &
(element background { list { xsd:int+ } } |
(element background { list { xsd:int+ } } |
attribute background { list { xsd:int+ } })
}* &
element meshlines {
(element meshtype { ( "tally" | "entropy" | "ufs" | "cmfd" ) } |
attribute meshtype { ( "tally" | "entropy" | "ufs" | "cmfd" ) }) &
(element id { xsd:int } | attribute id { xsd:int })? &
(element linewidth { xsd:int } | attribute linewidth { xsd:int }) &
(element color { list { xsd:int+ } } |
attribute color { list { xsd:int+ } })?
}*
}*
}

View file

@ -3,19 +3,19 @@ element settings {
(
element eigenvalue {
(element batches { xsd:positiveInteger } |
(element batches { xsd:positiveInteger } |
attribute batches { xsd:positiveInteger }) &
(element inactive { xsd:nonNegativeInteger } |
(element inactive { xsd:nonNegativeInteger } |
attribute inactive { xsd:nonNegativeInteger }) &
(element particles { xsd:positiveInteger } |
(element particles { xsd:positiveInteger } |
attribute particles { xsd:positiveInteger }) &
(element generations_per_batch { xsd:positiveInteger } |
(element generations_per_batch { xsd:positiveInteger } |
attribute generations_per_batch { xsd:positiveInteger })?
} |
element fixed_source {
(element batches { xsd:positiveInteger } |
(element batches { xsd:positiveInteger } |
attribute batches { xsd:positiveInteger }) &
(element particles { xsd:positiveInteger } |
(element particles { xsd:positiveInteger } |
attribute particles { xsd:positiveInteger })
}
) &
@ -27,17 +27,19 @@ element settings {
(element weight_avg { xsd:double } | attribute weight_avg { xsd:double })?
}? &
element energy_grid { ( "nuclide" | "union" | "lethargy" ) }? &
element energy_grid { ( "nuclide" | "log" | "logarithm" | "logarithmic" ) }? &
element entropy {
(element dimension { list { xsd:int+ } } |
(element dimension { list { xsd:int+ } } |
attribute dimension { list { xsd:int+ } })? &
(element lower_left { list { xsd:double+ } } |
(element lower_left { list { xsd:double+ } } |
attribute lower_left { list { xsd:double+ } }) &
(element upper_right { list { xsd:double+ } } |
(element upper_right { list { xsd:double+ } } |
attribute upper_right { list { xsd:double+ } })
}? &
element log_grid_bins { xsd:positiveInteger }? &
element natural_elements { xsd:string { maxLength = "20" } }? &
element no_reduce { xsd:boolean }? &
@ -93,7 +95,7 @@ element settings {
(
(element batches { list { xsd:positiveInteger+ } } |
attribute batches { list { xsd:positiveInteger+ } }) |
(element interval { xsd:positiveInteger } |
(element interval { xsd:positiveInteger } |
attribute interval { xsd:positiveInteger })
)
}? &
@ -102,12 +104,12 @@ element settings {
(
(element batches { list { xsd:positiveInteger+ } } |
attribute batches { list { xsd:positiveInteger+ } }) |
(element interval { xsd:positiveInteger } |
(element interval { xsd:positiveInteger } |
attribute interval { xsd:positiveInteger })
)? &
(element separate { xsd:boolean } |
(element separate { xsd:boolean } |
attribute separate { xsd:boolean })? &
(element write { xsd:boolean } |
(element write { xsd:boolean } |
attribute write { xsd:boolean })? &
(element overwrite_latest { xsd:boolean} |
attribute overwrite_latest {xsd:boolean})?
@ -124,11 +126,11 @@ element settings {
element verbosity { xsd:positiveInteger }? &
element uniform_fs{
(element dimension { list { xsd:positiveInteger+ } } |
(element dimension { list { xsd:positiveInteger+ } } |
attribute dimension { list { xsd:positiveInteger+ } }) &
(element lower_left { list { xsd:double+ } } |
(element lower_left { list { xsd:double+ } } |
attribute lower_left { list { xsd:double+ } }) &
(element upper_right { list { xsd:double+ } } |
(element upper_right { list { xsd:double+ } } |
attribute upper_right { list { xsd:double+ } })
}? &

View file

@ -1,7 +1,9 @@
module search
use constants
use error, only: fatal_error
use global, only: message
implicit none
integer, parameter :: MAX_ITERATION = 64
@ -32,8 +34,7 @@ contains
R = n
if (val < array(L) .or. val > array(R)) then
message = "Value outside of array during binary search"
call fatal_error()
call fatal_error("Value outside of array during binary search")
end if
n_iteration = 0
@ -60,8 +61,8 @@ contains
! check for large number of iterations
n_iteration = n_iteration + 1
if (n_iteration == MAX_ITERATION) then
message = "Reached maximum number of iterations on binary search."
call fatal_error()
call fatal_error("Reached maximum number of iterations on binary &
&search.")
end if
end do
@ -85,8 +86,7 @@ contains
R = n
if (val < array(L) .or. val > array(R)) then
message = "Value outside of array during binary search"
call fatal_error()
call fatal_error("Value outside of array during binary search")
end if
n_iteration = 0
@ -113,8 +113,8 @@ contains
! check for large number of iterations
n_iteration = n_iteration + 1
if (n_iteration == MAX_ITERATION) then
message = "Reached maximum number of iterations on binary search."
call fatal_error()
call fatal_error("Reached maximum number of iterations on binary &
&search.")
end if
end do
@ -138,8 +138,7 @@ contains
R = n
if (val < array(L) .or. val > array(R)) then
message = "Value outside of array during binary search"
call fatal_error()
call fatal_error("Value outside of array during binary search")
end if
n_iteration = 0
@ -166,8 +165,8 @@ contains
! check for large number of iterations
n_iteration = n_iteration + 1
if (n_iteration == MAX_ITERATION) then
message = "Reached maximum number of iterations on binary search."
call fatal_error()
call fatal_error("Reached maximum number of iterations on binary &
&search.")
end if
end do

View file

@ -1,13 +1,13 @@
module solver_interface
use error, only: fatal_error
use global, only: message
use matrix_header, only: Matrix
use vector_header, only: Vector
#ifdef PETSC
use petscksp
use petscsnes
# include <petscversion.h>
#endif
implicit none
@ -68,6 +68,11 @@ module solver_interface
#ifdef PETSC
integer :: petsc_err ! petsc error code
! Checks for PETSc version to handle 3.5 changes
# if (PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR > 4)
# define PETSC_GREATER_34
# endif
#endif
contains
@ -86,8 +91,13 @@ contains
real(8) :: atol = 1.0e-10_8
call KSPCreate(PETSC_COMM_WORLD, self % ksp_, petsc_err)
#ifdef PETSC_GREATER_34
call KSPSetTolerances(self % ksp_, rtol, atol, &
PETSC_DEFAULT_REAL, PETSC_DEFAULT_INTEGER, petsc_err)
#else
call KSPSetTolerances(self % ksp_, rtol, atol, &
PETSC_DEFAULT_DOUBLE_PRECISION, PETSC_DEFAULT_INTEGER, petsc_err)
#endif
call KSPSetType(self % ksp_, 'gmres', petsc_err)
call KSPSetInitialGuessNonzero(self % ksp_, PETSC_TRUE, petsc_err)
call KSPGetPC(self % ksp_, self % pc_, petsc_err)
@ -106,8 +116,13 @@ contains
type(Matrix), intent(inout) :: prec_mat ! preconditioner matrix
type(Matrix), intent(inout) :: mat_in ! coefficient matrix
#ifdef PETSC_GREATER_34
call KSPSetOperators(self % ksp_, mat_in % petsc_mat, prec_mat % petsc_mat, &
petsc_err)
#else
call KSPSetOperators(self % ksp_, mat_in % petsc_mat, prec_mat % petsc_mat, &
SAME_NONZERO_PATTERN, petsc_err)
#endif
call KSPSetUp(self % ksp_, petsc_err)
end subroutine petsc_gmres_set_oper
@ -260,17 +275,25 @@ contains
! PETSC_JFNK_COMPUTE_JACOBIAN buffer routine to user specified jacobian routine
!===============================================================================
#ifdef PETSC_GREATER_34
subroutine petsc_jfnk_compute_jacobian(snes_, x, jac_mf, jac_prec, &
ctx, ierr)
#else
subroutine petsc_jfnk_compute_jacobian(snes_, x, jac_mf, jac_prec, flag, &
ctx, ierr)
#endif
type(snes), intent(inout) :: snes_ ! PETSc snes instance
type(vec), intent(inout) :: x ! PETSc solution vector
type(mat), intent(inout) :: jac_mf ! PETSc matrix free jacobian
type(mat), intent(inout) :: jac_prec ! PETSc matrix jacobian precond.
integer, intent(inout) :: flag ! unused madatory flag
type(Jfnk_ctx), intent(inout) :: ctx ! JFNK context instance
integer, intent(inout) :: ierr ! error code
#ifndef PETSC_GREATER_34
integer, intent(inout) :: flag ! unused madatory flag
#endif
type(Vector) :: xvec ! solution vector
! Again, we use the vector that comes from Petsc to build the Jacobian

View file

@ -34,15 +34,14 @@ contains
type(Bank), pointer :: src => null() ! source bank site
type(BinaryOutput) :: sp ! statepoint/source binary file
message = "Initializing source particles..."
call write_message(6)
call write_message("Initializing source particles...", 6)
if (path_source /= '') then
! Read the source from a binary file instead of sampling from some
! assumed source distribution
message = 'Reading source file from ' // trim(path_source) // '...'
call write_message(6)
call write_message('Reading source file from ' // trim(path_source) &
&// '...', 6)
! Open the binary file
call sp % file_open(path_source, 'r', serial = .false.)
@ -52,8 +51,8 @@ contains
! Check to make sure this is a source file
if (itmp /= FILETYPE_SOURCE) then
message = "Specified starting source file not a source file type."
call fatal_error()
call fatal_error("Specified starting source file not a source file &
&type.")
end if
! Read in the source bank
@ -79,8 +78,7 @@ contains
! Write out initial source
if (write_initial_source) then
message = 'Writing out initial source guess...'
call write_message(1)
call write_message('Writing out initial source guess...', 1)
#ifdef HDF5
filename = trim(path_output) // 'initial_source.h5'
#else
@ -142,9 +140,8 @@ contains
if (.not. found) then
num_resamples = num_resamples + 1
if (num_resamples == MAX_EXTSRC_RESAMPLES) then
message = "Maximum number of external source spatial resamples &
&reached!"
call fatal_error()
call fatal_error("Maximum number of external source spatial &
&resamples reached!")
end if
end if
end do
@ -172,9 +169,8 @@ contains
if (.not. found) then
num_resamples = num_resamples + 1
if (num_resamples == MAX_EXTSRC_RESAMPLES) then
message = "Maximum number of external source spatial resamples &
&reached!"
call fatal_error()
call fatal_error("Maximum number of external source spatial &
&resamples reached!")
end if
cycle
end if
@ -207,8 +203,7 @@ contains
site % uvw = external_source % params_angle
case default
message = "No angle distribution specified for external source!"
call fatal_error()
call fatal_error("No angle distribution specified for external source!")
end select
! Sample energy distribution
@ -216,6 +211,9 @@ contains
case (SRC_ENERGY_MONO)
! Monoenergtic source
site % E = external_source % params_energy(1)
if (site % E >= 20) then
call fatal_error("Source energies above 20 MeV not allowed.")
end if
case (SRC_ENERGY_MAXWELL)
a = external_source % params_energy(1)
@ -239,8 +237,7 @@ contains
end do
case default
message = "No energy distribution specified for external source!"
call fatal_error()
call fatal_error("No energy distribution specified for external source!")
end select
! Set the random number generator back to the tracking stream.

View file

@ -26,7 +26,7 @@ module state_point
implicit none
type(BinaryOutput) :: sp ! statepoint/source output file
type(BinaryOutput) :: sp ! Statepoint/source output file
contains
@ -54,8 +54,7 @@ contains
#endif
! Write message
message = "Creating state point " // trim(filename) // "..."
call write_message(1)
call write_message("Creating state point " // trim(filename) // "...", 1)
if (master) then
! Create statepoint file
@ -84,7 +83,6 @@ contains
! Write run information
call sp % write_data(run_mode, "run_mode")
call sp % write_data(n_particles, "n_particles")
call sp % write_data(n_batches, "n_batches")
! Write out current batch number
call sp % write_data(current_batch, "current_batch")
@ -307,7 +305,7 @@ contains
! Set filename
filename = trim(path_output) // 'source.' // &
& zero_padded(current_batch, count_digits(n_batches))
#ifdef HDF5
filename = trim(filename) // '.h5'
#else
@ -315,8 +313,8 @@ contains
#endif
! Write message for new file creation
message = "Creating source file " // trim(filename) // "..."
call write_message(1)
call write_message("Creating source file " // trim(filename) // "...", &
&1)
! Create separate source file
call sp % file_create(filename, serial = .false.)
@ -360,8 +358,7 @@ contains
#endif
! Write message for new file creation
message = "Creating source file " // trim(filename) // "..."
call write_message(1)
call write_message("Creating source file " // trim(filename) // "...", 1)
! Always create this file because it will be overwritten
call sp % file_create(filename, serial = .false.)
@ -531,8 +528,8 @@ contains
type(TallyObject), pointer :: t => null()
! Write message
message = "Loading state point " // trim(path_state_point) // "..."
call write_message(1)
call write_message("Loading state point " // trim(path_state_point) &
&// "...", 1)
! Open file for reading
call sp % file_open(path_state_point, 'r', serial = .false.)
@ -544,9 +541,8 @@ contains
! current version
call sp % read_data(int_array(1), "revision")
if (int_array(1) /= REVISION_STATEPOINT) then
message = "State point version does not match current version " &
// "in OpenMC."
call fatal_error()
call fatal_error("State point version does not match current version &
&in OpenMC.")
end if
! Read OpenMC version
@ -555,9 +551,8 @@ contains
call sp % read_data(int_array(3), "version_release")
if (int_array(1) /= VERSION_MAJOR .or. int_array(2) /= VERSION_MINOR &
.or. int_array(3) /= VERSION_RELEASE) then
message = "State point file was created with a different version " &
// "of OpenMC."
call warning()
if (master) call warning("State point file was created with a different &
&version of OpenMC.")
end if
! Read date and time
@ -572,14 +567,15 @@ contains
! Read and overwrite run information except number of batches
call sp % read_data(run_mode, "run_mode")
call sp % read_data(n_particles, "n_particles")
call sp % read_data(int_array(1), "n_batches")
! Take maximum of statepoint n_batches and input n_batches
n_batches = max(n_batches, int_array(1))
! Read batch number to restart at
call sp % read_data(restart_batch, "current_batch")
if (restart_batch > n_batches) then
call fatal_error("The number batches specified in settings.xml is fewer &
& than the number of batches in the given statepoint file.")
end if
! Read information specific to eigenvalue run
if (run_mode == MODE_EIGENVALUE) then
call sp % read_data(int_array(1), "n_inactive")
@ -667,8 +663,8 @@ contains
! Check size of tally results array
if (int_array(1) /= t % total_score_bins .and. &
int_array(2) /= t % total_filter_bins) then
message = "Input file tally structure is different from restart."
call fatal_error()
call fatal_error("Input file tally structure is different from &
&restart.")
end if
! Read number of filters
@ -741,8 +737,8 @@ contains
! Check to make sure source bank is present
if (path_source_point == path_state_point .and. .not. source_present) then
message = "Source bank must be contained in statepoint restart file"
call fatal_error()
call fatal_error("Source bank must be contained in statepoint restart &
&file")
end if
! Read tallies to master
@ -754,8 +750,8 @@ contains
! Read number of global tallies
call sp % read_data(int_array(1), "n_global_tallies", collect=.false.)
if (int_array(1) /= N_GLOBAL_TALLIES) then
message = "Number of global tallies does not match in state point."
call fatal_error()
call fatal_error("Number of global tallies does not match in state &
&point.")
end if
! Read global tally data
@ -791,8 +787,8 @@ contains
call sp % file_close()
! Write message
message = "Loading source file " // trim(path_source_point) // "..."
call write_message(1)
call write_message("Loading source file " // trim(path_source_point) &
&// "...", 1)
! Open source file
call sp % file_open(path_source_point, 'r', serial = .false.)

View file

@ -2,7 +2,7 @@ module string
use constants, only: MAX_WORDS, MAX_LINE_LEN, ERROR_INT, ERROR_REAL
use error, only: fatal_error, warning
use global, only: message
use global, only: master
implicit none
@ -49,9 +49,8 @@ contains
if (i_end > 0) then
n = n + 1
if (i_end - i_start + 1 > len(words(n))) then
message = "The word '" // string(i_start:i_end) // &
"' is longer than the space allocated for it."
call warning()
if (master) call warning("The word '" // string(i_start:i_end) &
&// "' is longer than the space allocated for it.")
end if
words(n) = string(i_start:i_end)
! reset indices
@ -149,7 +148,7 @@ contains
end function concatenate
!===============================================================================
! LOWER_CASE converts a string to all lower case characters
! TO_LOWER converts a string to all lower case characters
!===============================================================================
elemental function to_lower(word) result(word_lower)
@ -172,7 +171,7 @@ contains
end function to_lower
!===============================================================================
! UPPER_CASE converts a string to all upper case characters
! TO_UPPER converts a string to all upper case characters
!===============================================================================
elemental function to_upper(word) result(word_upper)
@ -210,8 +209,8 @@ function zero_padded(num, n_digits) result(str)
! Make sure n_digits is reasonable. 10 digits is the maximum needed for the
! largest integer(4).
if (n_digits > 10) then
message = 'zero_padded called with an unreasonably large n_digits (>10)'
call fatal_error()
call fatal_error('zero_padded called with an unreasonably large &
&n_digits (>10)')
end if
! Write a format string of the form '(In.m)' where n is the max width and

View file

@ -21,8 +21,7 @@ module tally
implicit none
! Tally map positioning array
integer :: position(N_FILTER_TYPES - 3) = 0
integer :: position(N_FILTER_TYPES - 3) = 0 ! Tally map positioning array
!$omp threadprivate(position)
contains
@ -282,10 +281,9 @@ contains
! get the score and tally it
score = last_wgt * calc_pn(n, mu)
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do
j = j + t % moment_order(j)
cycle SCORE_LOOP
@ -348,10 +346,9 @@ contains
! get the score and tally it
score = wgt * calc_pn(n, mu)
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do
j = j + t % moment_order(j)
cycle SCORE_LOOP
@ -543,10 +540,9 @@ contains
end select
! Add score to tally
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do SCORE_LOOP
@ -618,10 +614,9 @@ contains
i_filter = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
! Add score to tally
!$omp critical
!$omp atomic
t % results(i_score, i_filter) % value = &
t % results(i_score, i_filter) % value + score
!$omp end critical
end do
! reset outgoing energy bin and score index
@ -871,8 +866,8 @@ contains
end do REACTION_LOOP
else
message = "Invalid score type on tally " // to_str(t % id) // "."
call fatal_error()
call fatal_error("Invalid score type on tally " &
&// to_str(t % id) // ".")
end if
end select
@ -1009,17 +1004,16 @@ contains
end do
else
message = "Invalid score type on tally " // to_str(t % id) // "."
call fatal_error()
call fatal_error("Invalid score type on tally " &
&// to_str(t % id) // ".")
end if
end select
end if
! Add score to tally
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do SCORE_LOOP
@ -1209,16 +1203,15 @@ contains
end do REACTION_LOOP
else
message = "Invalid score type on tally " // to_str(t % id) // "."
call fatal_error()
call fatal_error("Invalid score type on tally " &
&// to_str(t % id) // ".")
end if
end select
! Add score to tally
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do SCORE_LOOP
@ -1361,16 +1354,15 @@ contains
end do
else
message = "Invalid score type on tally " // to_str(t % id) // "."
call fatal_error()
call fatal_error("Invalid score type on tally " &
&// to_str(t % id) // ".")
end if
end select
! Add score to tally
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do MATERIAL_SCORE_LOOP
@ -1707,9 +1699,8 @@ contains
case (SCORE_EVENTS)
score = ONE
case default
message = "Invalid score type on tally " // &
to_str(t % id) // "."
call fatal_error()
call fatal_error("Invalid score type on tally " &
&// to_str(t % id) // ".")
end select
else
@ -1783,17 +1774,15 @@ contains
case (SCORE_EVENTS)
score = ONE
case default
message = "Invalid score type on tally " // &
to_str(t % id) // "."
call fatal_error()
call fatal_error("Invalid score type on tally " &
&// to_str(t % id) // ".")
end select
end if
! Add score to tally
!$omp critical
!$omp atomic
t % results(score_index, filter_index) % value = &
t % results(score_index, filter_index) % value + score
!$omp end critical
end do SCORE_LOOP
@ -1848,8 +1837,10 @@ contains
p % coord % universe, i_tally)
case (FILTER_MATERIAL)
matching_bins(i) = get_next_bin(FILTER_MATERIAL, &
p % material, i_tally)
if (p % material /= MATERIAL_VOID) then
matching_bins(i) = get_next_bin(FILTER_MATERIAL, &
p % material, i_tally)
endif
case (FILTER_CELL)
! determine next cell bin
@ -2024,10 +2015,9 @@ contains
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
end do
else
@ -2038,10 +2028,9 @@ contains
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
end do
end if
@ -2056,10 +2045,9 @@ contains
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
end do
else
@ -2070,10 +2058,9 @@ contains
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
end do
end if
@ -2088,10 +2075,9 @@ contains
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
end do
else
@ -2102,10 +2088,9 @@ contains
matching_bins(i_filter_mesh) = &
mesh_indices_to_bin(m, ijk0 + 1, .true.)
filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
end do
end if
@ -2223,15 +2208,13 @@ contains
! Check for errors
if (filter_index <= 0 .or. filter_index > &
t % total_filter_bins) then
message = "Score index outside range."
call fatal_error()
call fatal_error("Score index outside range.")
end if
! Add to surface current tally
!$omp critical
!$omp atomic
t % results(1, filter_index) % value = &
t % results(1, filter_index) % value + p % wgt
!$omp end critical
end if
! Calculate new coordinates
@ -2563,18 +2546,16 @@ contains
! check to see if any of the active tally lists has been allocated
if (active_tallies % size() > 0) then
message = "Active tallies should not exist before CMFD tallies!"
call fatal_error()
call fatal_error("Active tallies should not exist before CMFD tallies!")
else if (active_analog_tallies % size() > 0) then
message = 'Active analog tallies should not exist before CMFD tallies!'
call fatal_error()
call fatal_error('Active analog tallies should not exist before CMFD &
&tallies!')
else if (active_tracklength_tallies % size() > 0) then
message = "Active tracklength tallies should not exist before CMFD &
&tallies!"
call fatal_error()
call fatal_error("Active tracklength tallies should not exist before &
&CMFD tallies!")
else if (active_current_tallies % size() > 0) then
message = "Active current tallies should not exist before CMFD tallies!"
call fatal_error()
call fatal_error("Active current tallies should not exist before CMFD &
&tallies!")
end if
do i = 1, n_cmfd_tallies

View file

@ -19,6 +19,9 @@ contains
subroutine configure_tallies()
! Allocate global tallies
allocate(global_tallies(N_GLOBAL_TALLIES))
call setup_tally_arrays()
call setup_tally_maps()

View file

@ -16,6 +16,8 @@ module tracking
use track_output, only: initialize_particle_track, write_particle_track, &
finalize_particle_track
implicit none
contains
!===============================================================================
@ -39,8 +41,7 @@ contains
! Display message if high verbosity or trace is on
if (verbosity >= 9 .or. trace) then
message = "Simulating Particle " // trim(to_str(p % id))
call write_message()
call write_message("Simulating Particle " // trim(to_str(p % id)))
end if
! If the cell hasn't been determined based on the particle's location,
@ -50,8 +51,7 @@ contains
! Particle couldn't be located
if (.not. found_cell) then
message = "Could not locate particle " // trim(to_str(p % id))
call fatal_error()
call fatal_error("Could not locate particle " // trim(to_str(p % id)))
end if
! set birth cell attribute
@ -62,9 +62,8 @@ contains
n_event = 0
! Add paricle's starting weight to count for normalizing tallies later
!$omp critical
!$omp atomic
total_weight = total_weight + p % wgt
!$omp end critical
! Force calculation of cross-sections by setting last energy to zero
micro_xs % last_E = ZERO
@ -112,11 +111,10 @@ contains
call score_tracklength_tally(p, distance)
! Score track-length estimate of k-eff
!$omp critical
!$omp atomic
global_tallies(K_TRACKLENGTH) % value = &
global_tallies(K_TRACKLENGTH) % value + p % wgt * distance * &
material_xs % nu_fission
!$omp end critical
if (d_collision > d_boundary) then
! ====================================================================
@ -140,11 +138,10 @@ contains
! PARTICLE HAS COLLISION
! Score collision estimate of keff
!$omp critical
!$omp atomic
global_tallies(K_COLLISION) % value = &
global_tallies(K_COLLISION) % value + p % wgt * &
material_xs % nu_fission / material_xs % total
!$omp end critical
! score surface current tallies -- this has to be done before the collision
! since the direction of the particle will change and we need to use the
@ -198,9 +195,8 @@ contains
! If particle has too many events, display warning and kill it
n_event = n_event + 1
if (n_event == MAX_EVENTS) then
message = "Particle " // trim(to_str(p%id)) // " underwent maximum &
&number of events."
call warning()
if (master) call warning("Particle " // trim(to_str(p%id)) &
&// " underwent maximum number of events.")
p % alive = .false.
end if

View file

@ -6,7 +6,7 @@ from collections import OrderedDict
import numpy as np
import scipy.stats
REVISION_STATEPOINT = 12
REVISION_STATEPOINT = 13
filter_types = {1: 'universe', 2: 'material', 3: 'cell', 4: 'cellborn',
5: 'surface', 6: 'mesh', 7: 'energyin', 8: 'energyout'}
@ -182,7 +182,6 @@ class StatePoint(object):
# Read run information
self.run_mode = self._get_int(path='run_mode')[0]
self.n_particles = self._get_long(path='n_particles')[0]
self.n_batches = self._get_int(path='n_batches')[0]
# Read current batch
self.current_batch = self._get_int(path='current_batch')[0]

View file

@ -2,7 +2,6 @@ module xml_interface
use constants, only: MAX_LINE_LEN
use error, only: fatal_error
use global, only: message
use openmc_fox
implicit none
@ -201,9 +200,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Extract value
@ -234,9 +232,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Extract value
@ -267,9 +264,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Extract value
@ -300,9 +296,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Extract value
@ -333,9 +328,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Extract value
@ -366,9 +360,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Extract value
@ -399,9 +392,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " // &
getNodeName(ptr) // ".")
end if
! Extract value
@ -432,9 +424,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Get the size
@ -461,9 +452,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " &
&// getNodeName(ptr) // ".")
end if
! Get the size
@ -490,9 +480,8 @@ contains
! Leave if it was not found
if (.not. found) then
message = "Node " // node_name // " not part of Node " // &
getNodeName(ptr) // "."
call fatal_error()
call fatal_error("Node " // node_name // " not part of Node " // &
getNodeName(ptr) // ".")
end if
! Get the size

View file

@ -42,10 +42,10 @@ parser.add_option("-s", "--script", action="store_true", dest="script",
# Default compiler paths
FC='gfortran'
MPI_DIR='/opt/mpich/3.1-gnu'
HDF5_DIR='/opt/hdf5/1.8.12-gnu'
PHDF5_DIR='/opt/phdf5/1.8.12-gnu'
PETSC_DIR='/opt/petsc/3.4.4-gnu'
MPI_DIR='/opt/mpich/3.1.3-gnu'
HDF5_DIR='/opt/hdf5/1.8.14-gnu'
PHDF5_DIR='/opt/phdf5/1.8.14-gnu'
PETSC_DIR='/opt/petsc/3.5.2-gnu'
# Script mode for extra capability
script_mode = False

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
1.161117E+01
2.754585E+01
2.434414E+00
1.211549E+00
3.447929E+01
2.424749E+02
1.517577E+01
4.747271E+01
3.151504E+00
2.051857E+00
4.536316E+01
4.258781E+02

View file

@ -1,10 +1,10 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
5.474596E+01
6.113816E+02
7.449502E+01
1.145793E+03
0.000000E+00
0.000000E+00
0.000000E+00

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
2.878078E+01
1.706092E+02
4.244509E+01
3.618897E+02
5.296331E+01
5.632082E+02
9.415257E+00
1.798132E+01
2.687671E+01
1.475192E+02
4.148025E+01
3.443331E+02
5.223662E+01
5.466362E+02
1.050254E+01
2.218108E+01

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
2.904000E+01
1.735606E+02
4.173000E+01
3.504547E+02
5.212000E+01
5.450908E+02
6.720000E+00
9.287600E+00
2.740000E+01
1.516786E+02
4.163000E+01
3.469463E+02
5.041000E+01
5.097599E+02
6.990000E+00
9.850700E+00

View file

@ -1,54 +1,54 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
2.648000E+01
1.448192E+02
2.470000E+01
1.233286E+02
0.000000E+00
0.000000E+00
9.000000E-02
1.900000E-03
7.000000E-02
2.100000E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.020187E-01
1.712909E-01
8.590851E-01
1.552999E-01
0.000000E+00
0.000000E+00
2.051950E+00
8.758994E-01
2.560000E+00
1.319200E+00
2.474615E+00
1.227479E+00
2.700000E+00
1.469800E+00
0.000000E+00
0.000000E+00
3.715000E+01
2.781331E+02
3.712000E+01
2.758636E+02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.941213E-01
3.907469E-02
3.370712E-01
2.596756E-02
0.000000E+00
0.000000E+00
9.325143E-01
1.909208E-01
9.771334E-01
1.963983E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
4.490000E+00
4.033900E+00
4.440000E+00
3.947400E+00
0.000000E+00
0.000000E+00
4.876000E+01
4.772882E+02
1.843825E-02
1.699875E-04
4.688000E+01
4.409726E+02
2.867366E-02
2.783031E-04
0.000000E+00
0.000000E+00
2.991608E-02
5.124778E-04
1.080794E-01
2.580055E-03
0.000000E+00
0.000000E+00
0.000000E+00
@ -57,11 +57,11 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
3.360000E+00
2.261200E+00
9.440731E-02
2.296476E-03
6.720000E+00
9.287600E+00
2.970043E-01
1.889985E-02
3.530000E+00
2.494900E+00
1.572766E-01
5.137814E-03
6.990000E+00
9.850700E+00
3.134136E-01
2.138680E-02

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
2.808405E+01
1.583153E+02
6.600217E+00
8.758087E+00
4.213245E+01
3.587283E+02
5.251451E+01
5.539717E+02
2.819256E+01
1.591068E+02
6.599750E+00
8.721650E+00
5.383171E+01
5.950793E+02
4.140672E+01
3.649396E+02

View file

@ -1,5 +1,5 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
@ -21,12 +21,6 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.417913E-01
2.010478E-02
2.168719E-02
4.703344E-04
1.399852E+00
1.959586E+00
0.000000E+00
0.000000E+00
0.000000E+00
@ -51,16 +45,10 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
8.751430E-01
7.658753E-01
0.000000E+00
0.000000E+00
1.438468E-01
1.138366E-02
3.162720E-01
6.420661E-02
1.710523E+00
1.682331E+00
3.923774E-01
6.087295E-02
0.000000E+00
0.000000E+00
0.000000E+00
@ -81,164 +69,180 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.708563E-01
2.919187E-02
1.388161E-01
1.926991E-02
0.000000E+00
0.000000E+00
1.324266E+00
5.981448E-01
1.008629E-01
6.731023E-03
4.725861E+00
4.962196E+00
2.042363E+00
1.092263E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.287286E-01
1.657106E-02
7.512292E-01
1.499955E-01
2.231206E+00
1.531548E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.713205E-04
1.378789E-07
3.186752E-01
5.483722E-02
0.000000E+00
0.000000E+00
4.637625E-02
2.150756E-03
1.687655E+00
6.832951E-01
2.451894E-01
2.214000E-02
1.498618E-01
1.124434E-02
0.000000E+00
0.000000E+00
5.355362E-01
1.442388E-01
7.324331E-01
2.426478E-01
2.040050E+00
1.233027E+00
8.712245E-01
2.534733E-01
3.505737E-02
1.229019E-03
0.000000E+00
0.000000E+00
7.941247E-02
6.306340E-03
6.074316E-01
3.689732E-01
0.000000E+00
0.000000E+00
1.613693E-01
1.460990E-02
5.254224E-01
1.746672E-01
1.107420E-01
1.226378E-02
1.440926E-01
2.076267E-02
2.774732E+00
1.660807E+00
1.035906E+00
2.563590E-01
4.244543E-01
1.801614E-01
2.103133E-01
2.358852E-02
5.153105E-01
1.020076E-01
3.713213E-01
8.620622E-02
1.469046E-01
2.158097E-02
2.680856E-03
7.186991E-06
0.000000E+00
0.000000E+00
3.148988E-01
9.916126E-02
1.889186E-01
3.569025E-02
1.235985E-01
1.527658E-02
6.855163E-02
4.699326E-03
6.967594E-02
4.854737E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.671843E-02
9.354455E-03
7.643045E-02
5.841613E-03
2.116080E+00
2.875369E+00
9.012169E+00
1.654103E+01
4.416145E+00
5.494563E+00
1.036873E+00
4.491814E-01
5.830242E-01
2.128962E-01
1.235039E-01
1.383081E-02
1.833045E-01
3.360053E-02
9.993440E-02
9.986884E-03
1.978123E-01
3.912972E-02
8.758664E-02
7.671419E-03
4.204632E-01
7.722514E-02
2.486465E+00
1.923132E+00
1.697091E-01
1.631523E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.705717E-02
2.909470E-04
6.688659E-02
4.473816E-03
6.488848E-01
4.210515E-01
6.885295E-02
4.740728E-03
0.000000E+00
0.000000E+00
6.175782E-01
2.022672E-01
1.204200E-02
8.137904E-05
2.136417E-01
1.678274E-02
2.932366E-01
4.285227E-02
6.387464E-01
1.526040E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.062751E+00
3.899247E-01
1.264401E+00
5.654864E-01
1.615537E+00
5.605431E-01
4.267750E-01
1.013728E-01
2.024264E+00
9.373843E-01
1.122195E-01
7.011342E-03
8.223839E-01
2.170405E-01
1.239203E+00
4.165595E-01
1.169828E+00
4.406334E-01
1.373464E+00
6.398480E-01
2.824398E+00
2.991665E+00
6.158518E-01
1.951901E-01
7.188149E-01
1.091668E-01
7.595527E-01
2.108412E-01
5.784902E-01
1.362812E-01
7.167515E-01
3.225769E-01
2.081496E-02
4.332627E-04
9.212853E-01
2.277306E-01
1.266470E+00
6.777774E-01
3.761862E-01
8.452912E-02
1.350273E-02
1.823238E-04
3.348203E-01
6.603737E-02
2.382593E-01
2.884302E-02
1.548117E+00
7.256982E-01
9.635803E-01
4.452538E-01
1.030188E+00
3.496685E-01
7.053043E-01
2.814424E-01
1.260458E-01
8.365754E-03
1.484515E+00
7.183840E-01
1.887042E+00
1.143800E+00
3.798783E+00
4.487065E+00
2.274180E+00
1.991784E+00
1.903719E-01
3.237886E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.728411E-01
1.190218E-02
9.250054E-02
4.341922E-03
6.353807E-02
4.037086E-03
1.811729E-01
1.711154E-02
3.218800E-01
7.906855E-02
9.721141E-01
3.463278E-01
8.364857E-01
2.612988E-01
6.317454E-01
1.837078E-01
2.134394E-01
1.710045E-02
3.743814E-02
1.401614E-03
1.314651E+00
7.700853E-01
7.389940E-01
2.322340E-01
6.147456E-01
1.001719E-01
3.157573E+00
2.794673E+00
6.671644E-01
1.996570E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.926273E-01
7.732884E-02
4.918094E+00
5.173895E+00
5.092742E+00
6.494641E+00
4.788739E-01
8.475443E-02
5.223391E-01
1.364354E-01
6.150765E-02
3.783190E-03
2.980054E+00
3.273962E+00
3.218912E-01
8.869874E-02
2.123532E-01
4.509386E-02
7.605107E-02
5.783765E-03
3.599367E-01
8.567079E-02
5.613154E-01
1.118151E-01
2.770958E-02
4.020649E-04
0.000000E+00
0.000000E+00
0.000000E+00
@ -247,30 +251,28 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
3.808381E-01
6.642624E-02
2.639442E+00
2.624559E+00
4.220180E+00
4.675608E+00
1.084969E+00
5.438224E-01
8.757958E-02
7.670183E-03
0.000000E+00
0.000000E+00
3.018836E-02
9.113370E-04
1.164481E+00
4.778487E-01
2.273856E+00
1.863555E+00
1.472518E-01
2.168310E-02
1.108371E+00
4.146745E-01
2.072415E+00
1.156365E+00
1.294408E+00
4.558438E-01
9.451595E-01
2.560533E-01
2.255990E+00
1.237092E+00
9.318430E-01
2.664794E-01
5.320317E-01
2.267827E-01
9.971891E-01
5.070903E-01
7.088786E-02
5.025089E-03
3.601108E-02
1.296798E-03
3.683352E+00
3.243246E+00
3.708141E+00
3.629996E+00
0.000000E+00
0.000000E+00
0.000000E+00
@ -279,34 +281,32 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.151241E-01
1.325357E-02
1.568572E+00
8.110144E-01
7.745896E-01
1.601657E-01
2.670322E-01
3.991483E-02
2.455989E-02
6.031883E-04
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.178621E-01
1.344704E-01
6.212228E-01
1.366091E-01
1.688493E+00
1.509896E+00
2.219872E+00
1.350327E+00
1.203627E-01
7.314197E-03
0.000000E+00
0.000000E+00
1.238471E-01
1.533812E-02
2.580606E+00
1.878196E+00
2.843921E+00
1.997749E+00
1.145124E+00
4.571704E-01
1.135664E+00
4.319757E-01
8.875810E-02
7.878000E-03
7.494206E-02
5.616313E-03
1.007353E+00
3.619658E-01
1.649444E+00
7.918743E-01
0.000000E+00
0.000000E+00
0.000000E+00
@ -315,10 +315,6 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
2.068591E+00
9.612768E-01
5.520399E-01
1.538124E-01
0.000000E+00
0.000000E+00
0.000000E+00
@ -327,136 +323,206 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.454799E-01
1.185625E-02
1.822512E-01
3.321550E-02
2.446779E-01
5.986726E-02
1.575078E+00
1.175211E+00
1.610606E+00
5.961695E-01
3.385564E-01
5.424872E-02
4.672659E-02
2.183374E-03
6.286351E-01
1.805028E-01
1.595058E+00
6.351621E-01
1.568755E+00
6.468874E-01
2.301331E+00
1.845232E+00
4.577930E-01
1.589685E-01
2.897077E-01
8.393057E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.772980E-01
3.143459E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.725513E-01
2.289677E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
4.783335E-02
2.288029E-03
8.744336E-01
2.611835E-01
1.754522E+00
1.459573E+00
3.549403E-01
6.365363E-02
1.843261E+00
9.517219E-01
1.009556E+00
4.611770E-01
1.540221E+00
7.611324E-01
8.030427E-01
2.255596E-01
1.004973E+00
6.046910E-01
1.664911E-01
2.771927E-02
0.000000E+00
0.000000E+00
7.198039E-02
5.181176E-03
4.289725E-01
7.179475E-02
8.804362E-03
7.056775E-05
7.794381E-01
2.459786E-01
1.987246E+00
1.009248E+00
1.375717E+00
7.259013E-01
2.499521E-01
6.247603E-02
1.402752E-01
1.967713E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.244277E-01
1.548225E-02
1.222119E-01
1.493575E-02
0.000000E+00
0.000000E+00
5.470039E-01
2.992133E-01
4.902613E-01
1.163360E-01
1.088037E+00
6.007745E-01
1.013469E+00
5.646900E-01
5.529904E-01
2.308161E-01
3.523818E-01
1.241729E-01
2.031343E-01
4.126355E-02
2.664927E+00
2.323850E+00
2.601166E+00
1.593528E+00
1.726764E+00
6.491827E-01
7.083106E-02
3.090181E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.970738E-01
5.368570E-02
5.176523E-01
2.679639E-01
0.000000E+00
0.000000E+00
2.213571E-01
2.455759E-02
1.471329E+00
7.001977E-01
6.348345E-01
1.603344E-01
0.000000E+00
0.000000E+00
6.590256E-01
2.237250E-01
2.019241E-01
1.407567E-02
2.295259E+00
1.760109E+00
2.183186E+00
1.599258E+00
2.665225E+00
1.591076E+00
1.106658E+00
4.120221E-01
7.240936E-01
1.701659E-01
1.280272E+00
3.624213E-01
9.794833E-01
4.411714E-01
1.269137E-01
1.610709E-02
1.120245E-01
1.254949E-02
0.000000E+00
0.000000E+00
8.072240E-01
2.272369E-01
3.032594E-01
5.076695E-02
7.265258E-01
1.893670E-01
2.902123E-01
3.514713E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
8.608891E-02
4.586038E-03
1.319691E+00
5.856361E-01
7.752262E-01
3.101466E-01
2.606443E-01
6.793546E-02
3.686503E-01
6.346661E-02
6.935008E-01
1.992259E-01
1.591064E+00
6.804860E-01
2.418186E-01
5.847626E-02
0.000000E+00
0.000000E+00
5.946272E-02
3.535814E-03
3.120645E-02
9.738427E-04
7.515014E-02
5.647544E-03
8.673868E-01
3.013632E-01
2.427216E-01
2.798481E-02
1.499600E-02
2.248801E-04
0.000000E+00
0.000000E+00
5.367869E-01
1.466428E-01
6.807157E-01
4.146022E-01
7.429047E-01
2.878787E-01
5.567110E-01
2.031808E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.344329E-01
1.807221E-02
1.298040E+00
5.453745E-01
1.519155E+00
9.349646E-01
3.338891E+00
2.798488E+00
3.241373E+00
2.703490E+00
3.079687E-01
5.125039E-02
1.649743E+00
9.187008E-01
8.924207E-01
2.872456E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
8.137844E-02
5.984482E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
9.056616E-01
4.198926E-01
7.349640E-02
5.401721E-03
5.146331E-01
1.555789E-01
2.464783E-01
5.430051E-02
7.263842E-02
5.276340E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.548666E-01
2.398365E-02
0.000000E+00
0.000000E+00
8.400001E-01
3.766524E-01
2.709865E+00
1.701203E+00
2.332406E-01
4.591958E-02
9.579949E-02
9.177542E-03
0.000000E+00
0.000000E+00
0.000000E+00
@ -465,16 +531,16 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.185278E+00
4.716836E-01
3.301668E+00
2.432951E+00
2.112369E+00
2.105416E+00
5.118358E-01
8.200109E-02
0.000000E+00
0.000000E+00
9.496519E-02
4.948061E-03
1.596404E-01
2.548506E-02
2.454011E-02
6.022168E-04
1.235276E-01
1.525907E-02
0.000000E+00
0.000000E+00
0.000000E+00
@ -483,10 +549,12 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.612922E-01
2.601517E-02
0.000000E+00
0.000000E+00
3.366480E-01
8.328374E-02
7.405305E-01
5.483854E-01
0.000000E+00
0.000000E+00
0.000000E+00
@ -495,18 +563,6 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
2.735155E-02
7.481075E-04
3.579132E-01
1.062564E-01
7.674637E-02
5.890006E-03
1.154978E+00
3.593281E-01
2.474283E-01
4.682642E-02
3.496190E-02
1.222335E-03
0.000000E+00
0.000000E+00
0.000000E+00
@ -517,62 +573,6 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
3.651499E-01
1.295125E-01
1.848941E-02
3.418583E-04
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.535127E-01
6.274265E-02
1.109963E+00
8.309058E-01
1.827347E-01
3.339196E-02
6.950741E-01
2.635079E-01
1.017855E-01
1.036030E-02
5.199614E-01
2.703599E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.641710E-02
3.182889E-03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.402675E-01
1.967496E-02
2.860747E-01
4.364321E-02
1.652492E-01
2.730731E-02
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
4.662954E+01
4.438569E+02
5.611503E+00
6.811745E+00
6.239246E+01
7.816240E+02
7.857315E+00
1.264975E+01
6.144371E+01
7.795909E+02
7.330533E+00
1.137816E+01
4.850651E+01
4.933509E+02
5.132453E+00
5.801019E+00

View file

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<geometry>
<cell id="11" universe="11" material="1"/>
<cell id="12" universe="12" material="2" surfaces=""/>
<lattice id="21" type="rect" dimension="2 2" lower_left="-2.0 -2.0"
width="2.0 2.0" outside="2">
<universes>
11 12
12 11
</universes>
</lattice>
<surface id="101" type="z-cylinder" coeffs="0.0 0.0 5.0" boundary="vacuum"/>
<cell id="101" universe="0" fill="21" surfaces="-101"/>
</geometry>

View file

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<materials>
<material id="1">
<density value="4.5" units="g/cc" />
<nuclide name="U-235" xs="71c" ao="1.0" />
</material>
<material id="2">
<density value="4.5" units="g/cc" />
<nuclide name="U-238" xs="71c" ao="1.0" />
</material>
</materials>

View file

@ -0,0 +1,25 @@
#!/usr/bin/env python
import sys
# import statepoint
sys.path.insert(0, '../../src/utils')
import statepoint
# read in statepoint file
if len(sys.argv) > 1:
sp = statepoint.StatePoint(sys.argv[1])
else:
sp = statepoint.StatePoint('statepoint.10.binary')
sp.read_results()
# set up output string
outstr = ''
# write out k-combined
outstr += 'k-combined:\n'
outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
# write results to file
with open('results_test.dat','w') as fh:
fh.write(outstr)

View file

@ -0,0 +1,2 @@
k-combined:
9.998895E-02 2.846817E-04

View file

@ -0,0 +1,16 @@
<?xml version="1.0"?>
<settings>
<eigenvalue>
<batches>10</batches>
<inactive>5</inactive>
<particles>1000</particles>
</eigenvalue>
<source>
<space type="box">
<parameters>-4 -4 -4 4 4 4</parameters>
</space>
</source>
</settings>

View file

@ -0,0 +1,59 @@
#!/usr/bin/env python
import os
from subprocess import Popen, STDOUT, PIPE, call
import filecmp
import glob
from optparse import OptionParser
parser = OptionParser()
parser.add_option('--mpi_exec', dest='mpi_exec', default='')
parser.add_option('--mpi_np', dest='mpi_np', default='3')
parser.add_option('--exe', dest='exe')
(opts, args) = parser.parse_args()
cwd = os.getcwd()
def test_run():
if opts.mpi_exec != '':
proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
stderr=STDOUT, stdout=PIPE)
else:
proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
print(proc.communicate()[0])
returncode = proc.returncode
assert returncode == 0, 'OpenMC did not exit successfully.'
def test_created_statepoint():
statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
'Statepoint file is not a binary or hdf5 file.'
def test_results():
statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
call(['python', 'results.py', statepoint[0]])
compare = filecmp.cmp('results_test.dat', 'results_true.dat')
if not compare:
os.rename('results_test.dat', 'results_error.dat')
assert compare, 'Results do not agree.'
def teardown():
output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
output.append(os.path.join(cwd, 'results_test.dat'))
for f in output:
if os.path.exists(f):
os.remove(f)
if __name__ == '__main__':
# test for openmc executable
if opts.exe is None:
raise Exception('Must specify OpenMC executable from command line with --exe.')
# run tests
try:
test_run()
test_created_statepoint()
test_results()
finally:
teardown()

View file

@ -1,2 +1,2 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02

View file

@ -2,7 +2,7 @@
import sys
# import particle restart
# import particle restart
sys.path.insert(0, '../../src/utils')
import particle_restart as pr
@ -10,12 +10,12 @@ import particle_restart as pr
if len(sys.argv) > 1:
p = pr.Particle(sys.argv[1])
else:
p = pr.Particle('particle_12_842.binary')
p = pr.Particle('particle_12_616.binary')
# set up output string
outstr = ''
# write out properties
# write out properties
outstr += 'current batch:\n'
outstr += "{0:12.6E}\n".format(p.current_batch)
outstr += 'current gen:\n'

View file

@ -3,14 +3,14 @@ current batch:
current gen:
1.000000E+00
particle id:
8.420000E+02
6.160000E+02
run mode:
2.000000E+00
particle weight:
1.000000E+00
particle energy:
2.413462E+00
3.545295E-01
particle xyz:
-5.050553E+01 -9.983306E+00 -4.898542E+01
3.516323E+01 -5.400148E+01 -1.588825E+01
particle uvw:
-4.903067E-01 7.971652E-01 -3.523165E-01
4.129799E-01 7.649720E-01 4.942322E-01

View file

@ -4,7 +4,7 @@
<eigenvalue>
<batches>12</batches>
<inactive>5</inactive>
<particles>1000</particles>
<particles>1200</particles>
</eigenvalue>
<source>

View file

@ -24,13 +24,13 @@ def test_run():
assert returncode == 0, 'OpenMC did not exit successfully.'
def test_created_restart():
particle = glob.glob(os.path.join(cwd, 'particle_12_842.*'))
particle = glob.glob(os.path.join(cwd, 'particle_12_616.*'))
assert len(particle) == 1, 'Either multiple or no particle restart files exist.'
assert particle[0].endswith('binary') or \
particle[0].endswith('h5'), 'Particle restart file not a binary or hdf5 file.'
def test_results():
particle = glob.glob(os.path.join(cwd, 'particle_12_842.*'))
particle = glob.glob(os.path.join(cwd, 'particle_12_616.*'))
call(['python', 'results.py', particle[0]])
compare = filecmp.cmp('results_test.dat', 'results_true.dat')
if not compare:
@ -38,10 +38,10 @@ def test_results():
assert compare, 'Results do not agree.'
def test_run_restart():
particle = glob.glob(os.path.join(cwd, 'particle_12_842.*'))
particle = glob.glob(os.path.join(cwd, 'particle_12_616.*'))
proc = Popen([opts.exe, '-r', particle[0], cwd], stderr=STDOUT, stdout=PIPE)
print(proc.communicate()[0])
returncode = proc.returncode
returncode = proc.returncode
assert returncode == 0, 'Particle restart not successful.'
def teardown():

View file

@ -1,2 +1,2 @@
k-combined:
2.247735E+00 1.661365E-02
2.281477E+00 5.206704E-03

View file

@ -4,7 +4,7 @@
<eigenvalue>
<batches>10</batches>
<inactive>5</inactive>
<particles>100</particles>
<particles>1000</particles>
</eigenvalue>
<source>

View file

@ -1,5 +1,5 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
@ -9,27 +9,27 @@ tallies:
0.000000E+00
0.000000E+00
0.000000E+00
1.070347E-03
4.096057E-07
1.070347E-03
4.096057E-07
2.752499E-01
1.572016E-02
9.618633E-01
1.913668E-01
1.492613E-05
2.165664E-10
1.492613E-05
2.165664E-10
2.145916E-02
9.738018E-05
1.424685E-02
4.218285E-05
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
3.974077E-05
3.852650E-10
5.398592E-02
6.186431E-04
1.107640E-02
4.232516E-05
1.107640E-02
4.232516E-05
3.509526E-01
2.565440E-02
1.171523E+00
2.824070E-01
5.592851E-04
1.423656E-07
5.592851E-04
1.423656E-07
3.027322E-02
1.983924E-04
1.477313E-02
4.495633E-05
8.650696E-08
7.483455E-15
8.650696E-08
7.483455E-15
1.097403E-04
3.424171E-09
6.866942E-02
9.952916E-04

View file

@ -1,20 +1,20 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
0.000000E+00
0.000000E+00
1.757191E+00
6.376509E-01
1.424302E-02
4.216201E-05
2.580900E-01
1.412525E-02
2.267589E+00
1.054691E+00
1.476133E-02
4.485759E-05
3.306896E-01
2.302248E-02
tally 2:
0.000000E+00
0.000000E+00
1.880000E+00
7.122000E-01
1.000000E-02
1.000000E-04
1.800000E-01
8.600000E-03
2.290000E+00
1.070700E+00
0.000000E+00
0.000000E+00
3.800000E-01
3.820000E-02

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,12 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
4.363000E+01
3.897351E+02
6.243000E+01
7.832159E+02
5.627000E+01
6.565251E+02
4.892000E+01
5.009100E+02
tally 2:
1.189000E+01
2.882870E+01
1.708000E+01
5.859880E+01
1.458000E+01
4.391620E+01
1.269000E+01
3.363670E+01

View file

@ -1,20 +1,20 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
7.937979E-01
1.314653E-01
1.089685E+00
2.438289E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.004148E+00
2.076648E-01
9.094323E-01
1.773089E-01
tally 2:
7.878553E-01
1.260467E-01
1.081920E+00
2.404883E-01
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.020127E+00
2.123887E-01
9.945760E-01
2.073005E-01

View file

@ -1,15 +1,15 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
2.565436E+01
1.354321E+02
8.779444E+00
1.573694E+01
4.278858E+01
3.719602E+02
3.644585E+01
2.673612E+02
1.237524E+01
3.084236E+01
6.211066E+01
7.757387E+02
3.403102E+01
2.393236E+02
1.143060E+01
2.704386E+01
5.691243E+01
6.685581E+02
2.924945E+01
1.782032E+02
9.965051E+00
2.067319E+01
4.931805E+01
5.050490E+02

View file

@ -1,448 +1,448 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
2.565436E+01
1.354321E+02
8.779444E+00
1.573694E+01
4.278858E+01
3.719602E+02
3.644585E+01
2.673612E+02
1.237524E+01
3.084236E+01
6.211066E+01
7.757387E+02
3.403102E+01
2.393236E+02
1.143060E+01
2.704386E+01
5.691243E+01
6.685581E+02
2.924945E+01
1.782032E+02
9.965051E+00
2.067319E+01
4.931805E+01
5.050490E+02
tally 2:
2.565436E+01
1.354321E+02
-3.983851E-01
2.352953E-01
3.471316E-01
4.392448E-02
-3.396217E-01
4.529087E-01
-6.349347E-02
4.786947E-02
1.407387E-01
4.410418E-02
-2.149642E-01
8.240078E-02
4.165309E-01
4.037366E-02
-7.949820E-03
2.473008E-02
-2.530199E-02
8.071976E-02
-3.405750E-02
4.161238E-02
1.309727E-01
1.035584E-01
8.414417E-02
3.865193E-02
6.569253E-02
8.289078E-03
4.190353E-01
8.555379E-02
8.809002E-02
3.101106E-02
3.088946E-01
4.054212E-02
-4.904428E-02
6.656500E-02
1.158071E-01
7.719872E-02
-3.694710E-01
1.216166E-01
3.406072E-01
7.772395E-02
-1.721510E-01
5.707050E-02
-1.714604E-01
2.363306E-02
2.483700E-01
9.122006E-02
1.176588E-01
1.568762E-01
-7.697799E-02
4.854960E-03
8.679523E-02
3.340298E-02
4.014836E-02
3.871846E-02
3.499517E-01
8.728203E-02
3.360019E-01
3.868722E-02
-1.762859E-01
2.800767E-02
-3.753955E-01
1.281216E-01
1.101324E-02
1.439060E-02
4.302757E-02
4.203102E-02
-1.721812E-01
3.953250E-02
-3.065872E-02
2.025460E-02
8.779444E+00
1.573694E+01
-1.798211E-01
2.458347E-02
2.362185E-02
2.448811E-03
-1.606066E-02
3.365717E-02
4.268850E-02
4.543068E-03
6.714398E-02
2.327392E-02
-1.311847E-01
1.732329E-02
1.532575E-01
1.873014E-02
-7.715779E-02
3.727262E-03
5.292575E-02
8.731882E-03
1.308361E-01
7.041605E-03
1.186946E-01
8.593206E-03
3.295028E-04
6.881516E-03
-2.553462E-02
3.576692E-03
1.530589E-01
8.579020E-03
1.665960E-02
2.561848E-03
9.246622E-02
4.409040E-03
-3.782097E-02
3.787554E-03
8.720419E-02
1.807298E-02
-1.299159E-01
1.352501E-02
-1.089117E-02
2.262800E-03
-6.108770E-02
2.720692E-03
-5.611780E-02
1.606003E-03
1.344965E-01
1.166904E-02
5.196095E-02
1.974433E-02
-1.579519E-02
9.844817E-04
1.102419E-01
3.853387E-03
-2.203574E-02
6.721441E-03
1.423029E-01
1.104110E-02
5.596874E-02
2.795085E-03
2.150304E-02
4.785543E-03
-1.287175E-01
8.882669E-03
-5.634660E-02
3.647770E-03
-3.043014E-02
4.059232E-03
-7.426549E-02
2.865579E-03
1.819877E-02
1.701714E-03
4.278858E+01
3.719602E+02
-2.541558E-01
2.279001E-01
6.537997E-01
1.228433E-01
-3.816795E-01
4.318592E-01
-2.004644E-01
1.576115E-01
-3.122570E-01
3.346575E-01
-2.695065E-01
4.408996E-01
5.344702E-01
3.408992E-01
-6.262460E-01
1.418729E-01
2.291823E-01
2.378662E-01
1.519301E-01
8.662223E-02
8.592168E-01
3.746637E-01
2.371453E-01
5.839801E-02
1.945694E-01
5.218229E-02
6.349297E-01
9.557943E-02
3.032170E-01
9.494002E-02
6.848280E-01
1.795280E-01
1.476399E-01
1.224404E-01
9.399711E-02
2.748021E-01
-2.405486E-01
2.894838E-01
2.042026E-01
8.650213E-02
-2.383868E-01
4.311800E-02
2.703904E-01
4.396366E-02
2.261790E-01
3.123151E-01
3.253923E-01
3.510817E-01
-1.175618E-01
6.287935E-02
1.936788E-02
2.641837E-02
-8.020431E-02
5.963167E-02
4.230121E-01
1.414050E-01
5.524141E-01
7.852851E-02
1.962574E-01
5.237559E-02
-5.111027E-01
1.525051E-01
-1.338910E-01
6.915038E-03
-1.650263E-01
7.374547E-02
-1.075494E-01
7.396636E-02
-1.059769E-02
5.082196E-02
3.644585E+01
2.673612E+02
1.059137E-01
6.438563E-01
-6.444515E-01
3.933836E-01
-3.014651E-01
1.208273E-01
4.494724E-01
3.271917E-01
-7.259828E-01
3.159179E-01
-7.698716E-01
1.351096E-01
1.073317E-01
2.549219E-01
4.983931E-01
1.968239E-01
6.710340E-02
4.032556E-02
1.230587E-01
2.707299E-02
1.802638E-02
1.438295E-01
1.733793E-01
8.074688E-02
6.054436E-01
2.073602E-01
-2.361150E-01
9.962395E-02
3.071225E-01
9.373206E-02
6.285553E-02
4.520492E-02
-9.657643E-02
8.890068E-03
-1.358777E-01
7.818634E-02
-5.482892E-02
1.514759E-01
4.356273E-01
5.751468E-02
-3.332376E-01
9.204332E-02
9.252145E-02
9.082432E-02
3.397106E-01
3.718868E-02
2.383528E-01
1.249998E-01
9.459006E-02
4.743333E-02
2.791472E-01
9.473971E-02
1.840140E-01
3.511500E-02
-2.404274E-01
3.667734E-02
-1.850160E-01
4.090735E-02
-1.803264E-01
4.789725E-02
6.902523E-01
1.271158E-01
-4.675986E-01
1.577835E-01
2.244614E-01
7.193252E-02
5.644513E-01
1.552494E-01
2.668856E-01
2.757139E-02
1.237524E+01
3.084236E+01
-1.935040E-01
7.843981E-02
8.037944E-02
1.991461E-02
-2.158547E-01
3.484402E-02
2.365773E-01
3.715241E-02
-2.103997E-01
3.907253E-02
-3.684070E-01
3.058233E-02
4.225166E-02
2.489744E-02
1.106740E-01
1.150465E-02
8.071884E-02
1.331849E-02
1.368878E-01
8.258591E-03
1.841494E-02
1.603530E-02
1.992888E-01
9.415030E-03
1.959625E-01
1.937942E-02
2.902483E-02
5.299937E-03
1.550789E-01
1.141095E-02
1.022811E-01
8.602456E-03
-1.983934E-02
3.835379E-03
6.859204E-03
1.228605E-02
-1.512138E-02
1.732841E-02
5.532584E-02
8.476059E-03
-3.765033E-02
1.288721E-02
2.227213E-02
6.771923E-03
4.959835E-02
1.747554E-03
8.575813E-02
1.488751E-02
4.531527E-02
1.453556E-02
1.113161E-01
1.181481E-02
1.177319E-02
4.914706E-03
-8.335114E-02
8.413868E-03
-3.477118E-02
3.157253E-03
2.845561E-02
7.131040E-04
2.574512E-01
1.512044E-02
-9.211350E-02
1.008500E-02
9.632849E-02
9.461775E-03
8.498261E-02
1.323683E-02
9.379849E-02
2.730612E-03
6.211066E+01
7.757387E+02
-3.982186E-01
1.935864E+00
-1.141738E+00
8.141766E-01
-8.849778E-01
5.876897E-01
1.242209E+00
8.505593E-01
-5.243340E-01
6.084831E-01
-6.932961E-01
1.173576E-01
1.838190E-01
7.235898E-01
1.822180E-01
1.678650E-01
1.776488E-01
2.065829E-01
2.018694E-01
2.835613E-02
1.981267E-01
2.113291E-01
6.333584E-01
2.911046E-01
9.107098E-01
2.370932E-01
1.388416E-01
1.771215E-01
7.776395E-01
3.472463E-01
2.844808E-01
1.262659E-01
1.075302E-01
5.878152E-02
-9.524430E-02
2.356129E-01
-7.460188E-02
3.658302E-01
9.002646E-01
2.408214E-01
-2.433226E-04
2.947432E-01
2.706141E-01
8.383492E-02
3.187244E-01
1.025882E-01
4.009682E-01
2.985792E-01
1.457769E-01
1.542573E-01
5.192335E-01
2.426336E-01
2.578456E-06
1.741389E-01
-2.945081E-01
5.837518E-02
-2.544008E-01
1.447116E-01
-1.201939E-01
4.780114E-02
9.132771E-01
1.897854E-01
-1.665576E-01
2.160214E-01
3.474656E-01
1.169747E-01
5.253146E-01
1.965759E-01
4.888665E-01
1.030308E-01
3.403102E+01
2.393236E+02
-3.055588E-01
3.594044E-02
3.171128E-01
3.805380E-01
-7.374877E-01
2.391349E-01
-1.621986E-01
5.578051E-02
4.710459E-01
1.850595E-01
-4.839599E-01
2.440735E-01
1.124798E-01
8.640649E-02
-4.976706E-01
8.943606E-02
1.323704E-01
6.713903E-02
-6.954103E-02
7.876989E-02
1.343675E-01
2.569171E-02
-5.205013E-01
7.985579E-02
2.037295E-01
1.501360E-01
-1.290735E-01
5.069422E-02
-2.045060E-01
2.197889E-01
1.307603E-01
5.938649E-02
-3.317004E-01
1.359233E-01
-4.347480E-01
7.528253E-02
7.685982E-02
4.559715E-02
-4.668783E-02
4.065614E-02
1.447872E-01
5.538956E-02
-2.027337E-01
7.095051E-02
-4.673353E-01
1.235371E-01
-3.321732E-01
6.905624E-02
-3.028859E-01
3.382353E-02
-2.320613E-01
2.845905E-02
8.038034E-02
3.466746E-02
1.766484E-01
9.996559E-02
3.385184E-02
5.510769E-02
6.952638E-02
2.741119E-02
3.630715E-01
5.336447E-02
2.876222E-01
9.938256E-02
-3.473240E-02
1.031412E-01
1.280013E-01
2.331384E-02
1.550774E-01
3.881493E-02
1.143060E+01
2.704386E+01
-1.955516E-01
9.789273E-03
4.070150E-02
3.530892E-02
-1.446334E-01
3.374966E-02
-4.072015E-02
1.407320E-02
1.056190E-01
2.144988E-02
-1.491728E-01
1.699068E-02
3.130539E-02
4.945783E-03
-1.706770E-01
6.943395E-03
6.278466E-02
4.522701E-03
-6.491915E-02
1.218265E-02
-6.226375E-02
8.920919E-03
-2.647477E-01
2.028918E-02
-9.179913E-03
1.186941E-02
-8.959288E-02
9.826050E-03
-4.800079E-02
3.500548E-02
9.919028E-02
1.278789E-02
-1.274511E-01
9.357942E-03
-9.037073E-02
4.686665E-03
-7.895199E-03
8.526809E-03
-2.071828E-02
5.844892E-03
-1.422877E-02
2.008170E-03
-7.787500E-02
9.642363E-03
-6.105504E-02
7.600775E-03
-1.249117E-01
1.314509E-02
-9.183605E-02
7.513215E-03
-9.171222E-02
4.220465E-03
8.798390E-02
5.037482E-03
4.366496E-02
8.411743E-03
1.605678E-02
6.994512E-03
-2.179875E-02
1.352098E-03
1.116755E-01
7.354423E-03
9.995739E-02
9.710025E-03
3.010324E-02
1.179938E-02
2.175816E-02
1.281441E-03
2.374886E-02
6.943432E-03
5.691243E+01
6.685581E+02
-7.130295E-01
1.971869E-01
1.138602E+00
1.071873E+00
-1.436194E+00
7.200870E-01
-2.384966E-01
1.129688E-01
8.003085E-01
5.809429E-01
-3.499868E-01
3.310435E-01
2.580763E-01
2.238385E-01
-3.576056E-01
1.437071E-01
2.560747E-01
4.492224E-02
-4.006295E-01
2.456809E-01
8.176054E-02
3.924768E-01
-8.105689E-01
2.397175E-01
3.777117E-01
4.811523E-01
-4.932440E-01
1.789106E-01
-3.705747E-02
5.517840E-01
7.049764E-01
4.243943E-01
-4.833188E-01
2.014189E-01
-5.420278E-01
1.201572E-01
7.606098E-02
1.451071E-01
2.244026E-01
7.628680E-02
2.495758E-01
1.882655E-01
-1.373888E-01
1.958724E-01
-3.799191E-01
2.258678E-01
-5.909625E-01
2.940322E-01
-6.336238E-01
1.272552E-01
-5.544697E-01
9.027652E-02
4.161023E-01
1.084744E-01
5.550548E-01
1.838427E-01
3.060033E-01
8.542356E-02
3.623817E-01
4.245612E-02
4.779023E-01
8.081477E-02
1.089872E-01
1.402042E-01
-1.107440E-01
3.140479E-01
2.333168E-01
1.035674E-01
-5.959476E-02
2.482914E-01
2.924945E+01
1.782032E+02
5.986907E-01
4.163713E-01
3.376452E-01
1.744277E-01
1.272993E-01
1.526084E-01
-2.551267E-01
7.284601E-02
4.755790E-02
6.832796E-02
-3.425133E-01
7.756266E-02
3.823240E-01
1.789133E-01
-3.767347E-01
1.676013E-01
1.655399E-01
1.153056E-01
1.432265E-01
2.956364E-02
-2.989439E-01
5.066565E-02
-3.226047E-02
5.960686E-02
-9.968550E-02
4.039270E-02
-1.235292E-02
2.805714E-01
-7.494860E-02
2.838999E-02
3.042503E-02
7.425538E-02
-1.849034E-01
8.599532E-02
-5.209242E-01
1.174277E-01
-2.314402E-01
4.065974E-02
-4.179560E-01
1.382716E-01
1.026654E-01
1.611177E-02
-2.270386E-01
5.157513E-02
7.884296E-02
2.677093E-02
7.284620E-01
1.871262E-01
1.360134E-01
9.437336E-03
-3.088199E-01
2.292832E-02
-2.543226E-01
1.264440E-01
6.256788E-02
7.604299E-02
-3.478518E-01
6.632508E-02
2.842847E-01
4.906462E-02
1.546241E-01
3.362908E-02
-2.247690E-01
1.912574E-02
-3.459210E-02
1.248892E-01
-2.204075E-01
4.281299E-02
2.145675E-01
5.593188E-02
9.965051E+00
2.067319E+01
2.381967E-01
4.786935E-02
-1.924307E-02
4.029344E-02
3.179175E-02
2.098033E-02
-1.652307E-02
9.391525E-03
-5.733037E-02
1.788394E-02
4.942155E-02
1.206623E-03
1.874859E-02
1.917059E-02
-1.179838E-01
2.185564E-02
-9.270518E-03
1.659002E-02
7.496510E-02
6.849931E-03
-1.004441E-01
4.570271E-03
-9.899603E-02
1.027435E-02
-9.963859E-02
4.686519E-03
-1.740638E-02
3.936514E-02
2.520348E-02
5.900520E-03
1.227791E-03
6.173783E-03
-3.068441E-02
6.867403E-03
-7.765653E-02
1.399383E-02
7.333551E-02
4.139444E-03
-3.508914E-02
1.421599E-02
4.334120E-02
4.918888E-03
-1.106116E-01
1.143785E-02
7.254492E-03
1.337966E-03
2.365948E-01
2.473485E-02
5.176646E-02
1.514750E-03
-8.723609E-02
2.395099E-03
-1.010207E-01
1.081070E-02
-5.113298E-02
6.053279E-03
-1.601115E-01
8.304230E-03
-5.105346E-03
5.079654E-03
-8.894549E-02
2.505026E-03
-1.023874E-01
4.311776E-03
7.972835E-02
1.178305E-02
-2.560943E-02
4.101793E-03
2.312203E-02
3.036209E-03
4.931805E+01
5.050490E+02
1.513494E+00
1.676567E+00
6.650656E-01
1.400732E+00
4.934620E-01
7.673322E-01
-2.964444E-02
2.262500E-01
-2.225956E-01
4.872938E-01
2.498269E-01
9.442256E-02
-1.454141E-01
2.683171E-01
-3.720260E-01
2.266316E-01
2.473591E-01
3.624408E-01
2.096941E-01
6.664835E-02
-4.700220E-01
9.789465E-02
-1.626165E-01
1.315362E-01
3.519966E-01
1.140516E-01
-1.185342E-01
5.708362E-01
-1.333083E-01
1.352294E-01
1.375803E-01
1.572243E-01
-6.099544E-02
2.042264E-01
-3.664336E-01
1.762506E-01
-1.717957E-01
5.864778E-02
-5.153204E-01
2.484316E-01
-2.258513E-01
8.839687E-02
-9.307566E-01
4.802462E-01
1.108577E-01
4.451362E-02
1.118965E+00
5.173979E-01
4.314600E-01
5.176751E-02
-2.864060E-01
9.159895E-02
-4.471918E-01
1.743046E-01
-7.850808E-02
1.317732E-01
-7.445394E-01
1.479808E-01
7.480873E-01
2.696289E-01
1.731449E-01
5.301367E-02
-3.663464E-01
3.430563E-02
3.553351E-01
2.051544E-01
-4.312304E-01
2.164291E-01
2.436515E-01
8.025128E-02

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
1.555164E+02
5.045335E+03
2.135627E+02
9.364189E+03
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.967117E+02
7.969405E+03
1.782510E+02
6.811324E+03

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
2.082752E+00
9.038453E-01
2.879098E+00
1.700626E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
2.640026E+00
1.436287E+00
2.401881E+00
1.235627E+00

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
1.001000E+01
2.055270E+01
2.370000E+00
1.250100E+00
3.391000E+01
2.317483E+02
1.239000E+01
3.172630E+01
3.570000E+00
2.668900E+00
4.450000E+01
4.100412E+02

View file

@ -1,33 +1,33 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
1.001000E+01
2.055270E+01
1.045458E+00
2.880795E-01
3.394443E-01
4.521695E-02
3.397524E-01
3.549593E-02
1.551656E-01
6.451528E-03
2.370000E+00
1.250100E+00
4.069121E-01
3.712261E-02
1.675181E-01
8.485856E-03
4.222049E-02
1.259403E-03
-3.192012E-02
3.638177E-03
3.391000E+01
2.317483E+02
1.683873E+01
5.703705E+01
5.997824E+00
7.439673E+00
4.483230E-01
1.440023E-01
-5.793501E-01
1.160971E-01
1.239000E+01
3.172630E+01
1.431689E+00
4.209133E-01
6.192790E-01
1.440589E-01
4.143123E-01
5.479770E-02
2.942906E-01
3.458523E-02
3.570000E+00
2.668900E+00
3.298388E-01
4.816449E-02
3.308381E-01
3.018261E-02
5.366444E-02
7.235974E-03
-7.363858E-02
7.113489E-03
4.450000E+01
4.100412E+02
2.317316E+01
1.102855E+02
8.679054E+00
1.538963E+01
7.128469E-01
1.440027E-01
-1.172445E+00
3.514659E-01

View file

@ -1,24 +1,24 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
1.001000E+01
2.055270E+01
1.045458E+00
2.880795E-01
3.394443E-01
4.521695E-02
3.397524E-01
3.549593E-02
1.551656E-01
6.451528E-03
1.239000E+01
3.172630E+01
1.431689E+00
4.209133E-01
6.192790E-01
1.440589E-01
4.143123E-01
5.479770E-02
2.942906E-01
3.458523E-02
tally 2:
1.001000E+01
2.055270E+01
1.045458E+00
2.880795E-01
3.394443E-01
4.521695E-02
3.397524E-01
3.549593E-02
1.551656E-01
6.451528E-03
1.239000E+01
3.172630E+01
1.431689E+00
4.209133E-01
6.192790E-01
1.440589E-01
4.143123E-01
5.479770E-02
2.942906E-01
3.458523E-02

View file

@ -1,38 +1,38 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
1.001000E+01
2.055270E+01
1.239000E+01
3.172630E+01
tally 2:
1.001000E+01
2.055270E+01
-1.183126E-01
8.968581E-03
1.285740E-01
2.012866E-02
-1.063642E-01
5.657462E-03
-1.012197E-01
3.482657E-03
-1.468579E-01
5.892528E-03
7.311799E-02
3.363909E-03
1.772847E-02
2.338115E-03
-1.306294E-02
3.964203E-04
1.105099E-02
4.221119E-04
-3.469267E-03
3.620983E-04
-6.776742E-02
2.523905E-03
7.275197E-02
5.799188E-03
1.235708E-01
4.329131E-03
3.335853E-02
2.420903E-03
6.869200E-02
3.326258E-03
1.239000E+01
3.172630E+01
-1.558408E-01
1.069360E-02
-4.768057E-02
2.298561E-02
7.015981E-02
1.366523E-02
-2.449791E-02
5.899048E-03
9.535825E-02
6.335188E-03
-9.915129E-03
2.116965E-03
-2.535001E-03
2.410993E-03
1.030312E-01
1.128648E-02
-4.471182E-02
6.335010E-03
4.744793E-02
2.215754E-03
6.507318E-02
2.747856E-03
-8.724368E-02
3.500811E-03
5.479971E-03
2.059588E-04
-1.345855E-01
5.547202E-03
8.586379E-02
3.537507E-03

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
9.853983E+00
1.982237E+01
2.420171E+00
1.197617E+00
3.422120E+01
2.388147E+02
1.290818E+01
3.438677E+01
3.136743E+00
2.032819E+00
4.503247E+01
4.196453E+02

View file

@ -1,33 +1,33 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
1.001000E+01
2.055270E+01
1.045458E+00
2.880795E-01
3.394443E-01
4.521695E-02
3.397524E-01
3.549593E-02
1.551656E-01
6.451528E-03
2.370000E+00
1.250100E+00
4.069121E-01
3.712261E-02
1.675181E-01
8.485856E-03
4.222049E-02
1.259403E-03
-3.192012E-02
3.638177E-03
3.391000E+01
2.317483E+02
1.683873E+01
5.703705E+01
5.997824E+00
7.439673E+00
4.483230E-01
1.440023E-01
-5.793501E-01
1.160971E-01
1.238000E+01
3.168320E+01
1.437080E+00
4.234943E-01
6.199204E-01
1.441510E-01
4.101424E-01
5.414561E-02
2.977431E-01
3.433685E-02
3.570000E+00
2.668900E+00
3.298388E-01
4.816449E-02
3.308381E-01
3.018261E-02
5.366444E-02
7.235974E-03
-7.363858E-02
7.113489E-03
4.450000E+01
4.100412E+02
2.317316E+01
1.102855E+02
8.679054E+00
1.538963E+01
7.128469E-01
1.440027E-01
-1.172445E+00
3.514659E-01

View file

@ -1,24 +1,24 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
1.001000E+01
2.055270E+01
1.045458E+00
2.880795E-01
3.394443E-01
4.521695E-02
3.397524E-01
3.549593E-02
1.551656E-01
6.451528E-03
1.238000E+01
3.168320E+01
1.437080E+00
4.234943E-01
6.199204E-01
1.441510E-01
4.101424E-01
5.414561E-02
2.977431E-01
3.433685E-02
tally 2:
1.001000E+01
2.055270E+01
1.045458E+00
2.880795E-01
3.394443E-01
4.521695E-02
3.397524E-01
3.549593E-02
1.551656E-01
6.451528E-03
1.238000E+01
3.168320E+01
1.437080E+00
4.234943E-01
6.199204E-01
1.441510E-01
4.101424E-01
5.414561E-02
2.977431E-01
3.433685E-02

View file

@ -1,56 +1,56 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
1.001000E+01
2.055270E+01
1.238000E+01
3.168320E+01
tally 2:
1.001000E+01
2.055270E+01
-1.183126E-01
8.968581E-03
1.285740E-01
2.012866E-02
-1.063642E-01
5.657462E-03
-1.012197E-01
3.482657E-03
-1.468579E-01
5.892528E-03
7.311799E-02
3.363909E-03
1.772847E-02
2.338115E-03
-1.306294E-02
3.964203E-04
1.105099E-02
4.221119E-04
-3.469267E-03
3.620983E-04
-6.776742E-02
2.523905E-03
7.275197E-02
5.799188E-03
1.235708E-01
4.329131E-03
3.335853E-02
2.420903E-03
6.869200E-02
3.326258E-03
5.493102E-03
1.435058E-03
5.729583E-02
1.002124E-03
2.338667E-02
1.568394E-03
-6.527369E-02
2.163907E-03
5.997182E-02
2.521405E-03
1.400703E-02
3.928690E-04
-3.471565E-02
4.095776E-04
-2.275813E-02
1.120381E-03
2.896166E-02
1.179565E-03
1.238000E+01
3.168320E+01
-1.570048E-01
1.067590E-02
-4.730723E-02
2.307294E-02
6.490976E-02
1.426908E-02
-2.426427E-02
5.909294E-03
9.534163E-02
6.333588E-03
-1.023123E-02
2.132217E-03
-2.609941E-03
2.406916E-03
1.035322E-01
1.128320E-02
-4.271935E-02
6.478440E-03
4.721270E-02
2.212864E-03
6.453502E-02
2.750693E-03
-8.681394E-02
3.493602E-03
3.052598E-03
1.842182E-04
-1.350899E-01
5.564227E-03
8.846033E-02
3.537258E-03
5.729362E-02
2.064207E-03
1.780469E-02
2.838072E-03
-4.570340E-02
2.812380E-03
2.213430E-02
5.564728E-04
-3.159434E-03
3.500419E-03
-1.547339E-02
1.929157E-03
6.653362E-02
1.421509E-03
1.226039E-02
1.144939E-03
5.785933E-03
4.218074E-04

View file

@ -1,11 +1,11 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tallies:
0.000000E+00
0.000000E+00
1.161117E+01
2.754585E+01
2.434414E+00
1.211549E+00
3.447929E+01
2.424749E+02
1.517577E+01
4.747271E+01
3.151504E+00
2.051857E+00
4.536316E+01
4.258781E+02

View file

@ -1,14 +1,14 @@
k-combined:
9.600453E-01 2.025740E-01
1.093844E+00 1.626801E-02
tally 1:
0.000000E+00
0.000000E+00
1.161117E+01
2.754585E+01
2.434414E+00
1.211549E+00
3.447929E+01
2.424749E+02
1.517577E+01
4.747271E+01
3.151504E+00
2.051857E+00
4.536316E+01
4.258781E+02
tally 2:
0.000000E+00
0.000000E+00
@ -60,153 +60,153 @@ tally 2:
0.000000E+00
0.000000E+00
0.000000E+00
1.161117E+01
2.754585E+01
-2.142174E-01
3.279724E-02
2.074847E-01
2.494364E-02
-7.903982E-02
5.676631E-02
3.590832E-02
7.445500E-03
1.227905E-01
9.669037E-03
-2.956073E-02
1.053089E-02
2.125913E-01
1.573643E-02
3.994388E-02
2.050911E-03
1.428931E-02
2.097252E-02
1.852982E-02
6.763156E-03
4.256344E-02
2.201630E-02
5.235939E-02
6.390478E-03
-1.917565E-02
6.057279E-03
1.376468E-01
1.381691E-02
1.645657E-01
6.909700E-03
1.278040E-01
7.358858E-03
-4.885049E-02
1.284487E-02
1.015768E-01
1.186044E-02
-2.500552E-01
2.850264E-02
1.268185E-01
8.830642E-03
-5.298980E-02
1.174521E-02
-1.167860E-01
5.317695E-03
3.551278E-02
9.746518E-03
-5.156958E-02
1.096176E-02
2.434414E+00
1.211549E+00
-6.155874E-02
1.820287E-03
-1.131385E-02
9.885845E-04
3.264871E-02
3.152029E-03
3.906111E-03
2.989255E-04
3.357694E-02
1.204498E-03
-8.509149E-03
4.932744E-04
1.643578E-02
6.559372E-04
-4.516161E-03
2.859238E-04
-6.070807E-03
5.103752E-04
3.789990E-02
8.649607E-04
3.099170E-02
6.294018E-04
-4.634547E-03
7.282887E-04
-2.803226E-02
5.565347E-04
3.075995E-02
6.733281E-04
1.994943E-02
2.449085E-04
1.365097E-02
2.449553E-04
-7.320266E-03
4.797846E-04
2.167643E-02
1.743090E-03
-4.027522E-02
1.131919E-03
-1.877523E-03
1.528174E-04
-1.875876E-03
5.415691E-04
-1.250223E-02
1.039339E-04
3.243151E-02
9.979755E-04
1.661028E-02
8.875222E-04
3.447929E+01
2.424749E+02
-1.193109E-01
4.356870E-02
4.994465E-01
1.364747E-01
4.743095E-01
3.139795E-01
1.572748E-01
7.384373E-02
-6.645997E-02
5.859821E-02
4.439125E-01
1.312325E-01
1.989592E-01
2.220419E-01
1.184923E-01
1.733884E-01
6.229896E-02
7.986227E-02
2.843483E-01
5.493256E-02
5.285802E-01
1.588852E-01
-6.319558E-03
2.538235E-02
1.305659E-01
6.500548E-03
4.407872E-01
5.126698E-02
3.461406E-01
7.630185E-02
2.738707E-01
1.899347E-02
6.267800E-02
8.687333E-02
1.458903E-01
6.032971E-02
-4.003833E-01
1.973491E-01
2.274520E-01
8.366655E-02
-7.682364E-02
1.930925E-02
-5.201000E-02
4.531851E-02
-1.736210E-01
1.161595E-01
-2.291894E-02
2.411043E-02
1.517577E+01
4.747271E+01
-2.463504E-01
2.376091E-02
7.930151E-02
3.516796E-02
-1.611736E-01
2.658129E-02
-9.124923E-02
1.181443E-02
2.766258E-01
2.310767E-02
-2.269608E-01
3.593659E-02
-5.345296E-02
1.169733E-02
-1.838169E-01
1.625334E-02
-7.883035E-02
8.514293E-03
-4.922148E-02
7.767910E-03
1.144559E-01
4.638553E-03
-2.027207E-01
2.158672E-02
5.449222E-02
1.287150E-02
5.384229E-02
6.688120E-03
-8.231311E-02
2.743044E-02
1.172791E-02
1.089457E-02
-1.545389E-01
2.655167E-02
-2.290221E-01
1.443721E-02
2.773254E-02
1.070478E-02
-2.522703E-02
1.136506E-02
-1.287564E-02
4.969443E-03
3.471629E-02
7.559603E-03
-2.261509E-01
2.383142E-02
-1.463402E-01
1.526988E-02
3.151504E+00
2.051857E+00
-4.923938E-02
1.416150E-03
-1.041702E-02
8.114498E-04
-3.212977E-02
2.419393E-03
2.557299E-02
1.124488E-03
4.083178E-02
1.351219E-03
-3.910818E-02
8.908208E-04
5.659008E-03
4.488733E-04
-1.625829E-02
2.325229E-04
2.554220E-02
7.666018E-04
-2.251672E-02
7.703442E-04
-8.302473E-03
2.748216E-04
-7.692439E-02
2.167893E-03
7.267773E-03
7.781908E-04
6.821338E-03
9.518921E-04
-2.203951E-02
2.214610E-03
2.052514E-02
3.756195E-04
-4.158574E-02
9.330261E-04
-3.000932E-02
4.584914E-04
-2.247072E-02
2.519845E-04
1.589401E-02
2.302726E-04
-7.793790E-04
1.588955E-04
-4.634908E-03
5.395803E-04
-1.193817E-02
1.674419E-04
-1.682320E-02
8.389254E-04
4.536316E+01
4.258781E+02
-6.747275E-01
3.006113E-01
5.302096E-01
4.167797E-01
-4.347270E-01
3.702158E-01
-7.344612E-02
5.940699E-02
1.081217E+00
4.070812E-01
-3.172368E-02
3.124338E-02
2.656115E-01
8.561866E-02
-1.286933E-01
8.347413E-02
1.258195E-01
3.329577E-02
-3.751107E-01
9.007513E-02
4.283879E-01
1.067035E-01
-3.467870E-01
6.788988E-02
4.218567E-02
4.465188E-02
6.876561E-02
5.655954E-02
-1.116047E-01
1.073179E-01
4.077067E-01
1.148942E-01
-3.218725E-01
4.739201E-02
-4.297438E-01
9.739104E-02
2.199014E-01
2.328443E-02
6.007636E-01
1.194137E-01
-2.194826E-01
5.017106E-02
2.266133E-01
1.131899E-01
7.161674E-04
3.345992E-02
-1.987041E-01
1.381432E-01

Some files were not shown because too many files have changed in this diff Show more