From 687e81b0dd34e1a1ff2c8699d7aca25c6fb5c6ba Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 28 Jun 2016 13:32:27 -0400 Subject: [PATCH 01/49] got mesh domain working for mgxs --- .../pythonapi/examples/mgxs-part-i.ipynb | 403 ++++++---- .../pythonapi/examples/mgxs-part-iii.ipynb | 239 +++--- .../pythonapi/examples/mgxs-part-iv.ipynb | 10 +- examples/xml/basic/materials.xml | 1 - openmc/__init__.py | 2 +- openmc/filter.py | 2 +- openmc/mgxs/library.py | 38 +- openmc/mgxs/mgxs.py | 703 +++++++++++++++--- 8 files changed, 1017 insertions(+), 381 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index ea75bec722..5c51b11d38 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -183,7 +183,7 @@ "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -208,7 +208,7 @@ "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -229,7 +229,7 @@ "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -324,9 +324,9 @@ "outputs": [], "source": [ "# OpenMC simulation parameters\n", - "batches = 50\n", + "batches = 20\n", "inactive = 10\n", - "particles = 2500\n", + "particles = 1000\n", "\n", "# Instantiate a Settings object\n", "settings_file = openmc.Settings()\n", @@ -395,10 +395,20 @@ }, "outputs": [], "source": [ + "# Instantiate a tally Mesh\n", + "mesh = openmc.Mesh(name='mesh')\n", + "mesh.type = 'regular'\n", + "mesh.dimension = [1, 1]\n", + "mesh.lower_left = [-0.63, -0.63]\n", + "mesh.upper_right = [+0.63, +0.63]\n", + "\n", "# Instantiate a few different sections\n", - "total = mgxs.TotalXS(domain=cell, groups=groups)\n", - "absorption = mgxs.AbsorptionXS(domain=cell, groups=groups)\n", - "scattering = mgxs.ScatterXS(domain=cell, groups=groups)" + "total = mgxs.TotalXS(domain=mesh, groups=groups)\n", + "absorption = mgxs.AbsorptionXS(domain=mesh, groups=groups)\n", + "scattering = mgxs.ScatterXS(domain=mesh, groups=groups)\n", + "#total = mgxs.TotalXS(domain=cell, groups=groups)\n", + "#absorption = mgxs.AbsorptionXS(domain=cell, groups=groups)\n", + "#scattering = mgxs.ScatterXS(domain=cell, groups=groups)" ] }, { @@ -419,24 +429,22 @@ "data": { "text/plain": [ "OrderedDict([('flux', Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t['flux']\n", - "\tEstimator =\ttracklength\n", - "), ('absorption', Tally\n", - "\tID =\t10001\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t['absorption']\n", - "\tEstimator =\ttracklength\n", - ")])" + " \tID =\t10000\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tmesh\t[10000]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['flux']\n", + " \tEstimator =\ttracklength), ('absorption', Tally\n", + " \tID =\t10001\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tmesh\t[10000]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['absorption']\n", + " \tEstimator =\ttracklength)])" ] }, "execution_count": 13, @@ -513,8 +521,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 19feb55e6d5e8350398627f39fb55ee8e2e63011\n", - " Date/Time: 2016-05-13 10:19:16\n", + " Git SHA1: d30d010aea2c1cba90c993a9c501be9d5d81921d\n", + " Date/Time: 2016-06-28 13:31:05\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -541,57 +549,27 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.11184 \n", - " 2/1 1.15820 \n", - " 3/1 1.18468 \n", - " 4/1 1.17492 \n", - " 5/1 1.19645 \n", - " 6/1 1.18436 \n", - " 7/1 1.14070 \n", - " 8/1 1.15150 \n", - " 9/1 1.19202 \n", - " 10/1 1.17677 \n", - " 11/1 1.20272 \n", - " 12/1 1.21366 1.20819 +/- 0.00547\n", - " 13/1 1.15906 1.19181 +/- 0.01668\n", - " 14/1 1.14687 1.18058 +/- 0.01629\n", - " 15/1 1.14570 1.17360 +/- 0.01442\n", - " 16/1 1.13480 1.16713 +/- 0.01343\n", - " 17/1 1.17680 1.16852 +/- 0.01144\n", - " 18/1 1.16866 1.16853 +/- 0.00990\n", - " 19/1 1.19253 1.17120 +/- 0.00913\n", - " 20/1 1.18124 1.17220 +/- 0.00823\n", - " 21/1 1.19206 1.17401 +/- 0.00766\n", - " 22/1 1.17681 1.17424 +/- 0.00700\n", - " 23/1 1.17634 1.17440 +/- 0.00644\n", - " 24/1 1.13659 1.17170 +/- 0.00654\n", - " 25/1 1.17144 1.17169 +/- 0.00609\n", - " 26/1 1.20649 1.17386 +/- 0.00610\n", - " 27/1 1.11238 1.17024 +/- 0.00678\n", - " 28/1 1.18911 1.17129 +/- 0.00647\n", - " 29/1 1.14681 1.17000 +/- 0.00626\n", - " 30/1 1.12152 1.16758 +/- 0.00641\n", - " 31/1 1.12729 1.16566 +/- 0.00639\n", - " 32/1 1.15399 1.16513 +/- 0.00612\n", - " 33/1 1.13547 1.16384 +/- 0.00599\n", - " 34/1 1.17723 1.16440 +/- 0.00576\n", - " 35/1 1.09296 1.16154 +/- 0.00622\n", - " 36/1 1.19621 1.16287 +/- 0.00612\n", - " 37/1 1.12560 1.16149 +/- 0.00605\n", - " 38/1 1.17872 1.16211 +/- 0.00586\n", - " 39/1 1.17721 1.16263 +/- 0.00568\n", - " 40/1 1.13724 1.16178 +/- 0.00555\n", - " 41/1 1.18526 1.16254 +/- 0.00542\n", - " 42/1 1.13779 1.16177 +/- 0.00531\n", - " 43/1 1.15066 1.16143 +/- 0.00516\n", - " 44/1 1.12174 1.16026 +/- 0.00514\n", - " 45/1 1.17479 1.16068 +/- 0.00501\n", - " 46/1 1.14146 1.16014 +/- 0.00489\n", - " 47/1 1.20464 1.16135 +/- 0.00491\n", - " 48/1 1.15119 1.16108 +/- 0.00479\n", - " 49/1 1.17938 1.16155 +/- 0.00468\n", - " 50/1 1.15798 1.16146 +/- 0.00457\n", - " Creating state point statepoint.50.h5...\n", + " 1/1 1.07993 \n", + " 2/1 1.23691 \n", + " 3/1 1.17407 \n", + " 4/1 1.08258 \n", + " 5/1 1.21012 \n", + " 6/1 1.23825 \n", + " 7/1 1.18016 \n", + " 8/1 1.20989 \n", + " 9/1 1.15475 \n", + " 10/1 1.13462 \n", + " 11/1 1.12749 \n", + " 12/1 1.09502 1.11125 +/- 0.01623\n", + " 13/1 1.24722 1.15657 +/- 0.04628\n", + " 14/1 1.14700 1.15418 +/- 0.03281\n", + " 15/1 1.13889 1.15112 +/- 0.02560\n", + " 16/1 1.19008 1.15762 +/- 0.02189\n", + " 17/1 1.11320 1.15127 +/- 0.01956\n", + " 18/1 1.12093 1.14748 +/- 0.01736\n", + " 19/1 1.13809 1.14643 +/- 0.01534\n", + " 20/1 1.09886 1.14168 +/- 0.01452\n", + " Creating state point statepoint.20.h5...\n", "\n", " ===========================================================================\n", " ======================> SIMULATION FINISHED <======================\n", @@ -600,27 +578,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2300E-01 seconds\n", - " Reading cross sections = 9.3000E-02 seconds\n", - " Total time in simulation = 1.6549E+01 seconds\n", - " Time in transport only = 1.6535E+01 seconds\n", - " Time in inactive batches = 2.3650E+00 seconds\n", - " Time in active batches = 1.4184E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 8.1200E-01 seconds\n", + " Reading cross sections = 2.4200E-01 seconds\n", + " Total time in simulation = 2.8910E+00 seconds\n", + " Time in transport only = 2.8710E+00 seconds\n", + " Time in inactive batches = 8.5700E-01 seconds\n", + " Time in active batches = 2.0340E+00 seconds\n", + " Time synchronizing fission bank = 0.0000E+00 seconds\n", + " Sampling source sites = 0.0000E+00 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.6981E+01 seconds\n", - " Calculation Rate (inactive) = 10570.8 neutrons/second\n", - " Calculation Rate (active) = 7050.20 neutrons/second\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 3.7090E+00 seconds\n", + " Calculation Rate (inactive) = 11668.6 neutrons/second\n", + " Calculation Rate (active) = 4916.42 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.15984 +/- 0.00411\n", - " k-effective (Track-length) = 1.16146 +/- 0.00457\n", - " k-effective (Absorption) = 1.16177 +/- 0.00380\n", - " Combined k-effective = 1.16105 +/- 0.00364\n", + " k-effective (Collision) = 1.14223 +/- 0.01330\n", + " k-effective (Track-length) = 1.14168 +/- 0.01452\n", + " k-effective (Absorption) = 1.16108 +/- 0.00876\n", + " Combined k-effective = 1.15408 +/- 0.00566\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -664,7 +642,7 @@ "outputs": [], "source": [ "# Load the last statepoint file\n", - "sp = openmc.StatePoint('statepoint.50.h5')" + "sp = openmc.StatePoint('statepoint.20.h5')" ] }, { @@ -729,11 +707,11 @@ "text": [ "Multi-Group XS\n", "\tReaction Type =\ttotal\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t1\n", + "\tDomain Type =\tmesh\n", + "\tDomain ID =\t10000\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.81e-01 +/- 2.69e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 5.93e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t6.79e-01 +/- 7.64e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.79e+00%\n", "\n", "\n", "\n" @@ -764,40 +742,55 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
cellmesh 10000group innuclidemeanstd. dev.
xyz
11111total0.6677870.0018020.6662610.005072
01112total1.2920130.0076421.2924510.022969
\n", "
" ], "text/plain": [ - " cell group in nuclide mean std. dev.\n", - "1 1 1 total 0.667787 0.001802\n", - "0 1 2 total 1.292013 0.007642" + " mesh 10000 group in nuclide mean std. dev.\n", + " x y z \n", + "1 1 1 1 1 total 0.666261 0.005072\n", + "0 1 1 1 2 total 1.292451 0.022969" ] }, "execution_count": 19, @@ -821,11 +814,11 @@ "cell_type": "code", "execution_count": 20, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ - "absorption.export_xs_data(filename='absorption-xs', format='excel')" + "#absorption.export_xs_data(filename='absorption-xs', format='excel')" ] }, { @@ -875,9 +868,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -885,40 +878,58 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
cellmesh 10000energy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-3.774758e-150.011292-1.554312e-150.033991
11116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...1.443290e-150.002570-2.886580e-150.007258
\n", "
" ], "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - "0 (((total / flux) - (absorption / flux)) - (sca... -3.77e-15 1.13e-02 \n", - "1 (((total / flux) - (absorption / flux)) - (sca... 1.44e-15 2.57e-03 " + " score mean std. dev. \n", + " \n", + "0 (((total / flux) - (absorption / flux)) - (sca... -1.55e-15 3.40e-02 \n", + "1 (((total / flux) - (absorption / flux)) - (sca... -2.89e-15 7.26e-03 " ] }, "execution_count": 22, @@ -954,9 +965,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -964,40 +975,58 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
cellmesh 10000energy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761150.0006490.0761440.001984
11116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0192630.0000950.0192240.000329
\n", "
" ], "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - "0 ((absorption / flux) / (total / flux)) 7.61e-02 6.49e-04 \n", - "1 ((absorption / flux) / (total / flux)) 1.93e-02 9.46e-05 " + " score mean std. dev. \n", + " \n", + "0 ((absorption / flux) / (total / flux)) 7.61e-02 1.98e-03 \n", + "1 ((absorption / flux) / (total / flux)) 1.92e-02 3.29e-04 " ] }, "execution_count": 23, @@ -1026,9 +1055,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1036,40 +1065,58 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
cellmesh 10000energy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238850.0077360.9238560.023272
11116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9807370.0037370.9807760.010576
\n", "
" ], "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - "0 ((scatter / flux) / (total / flux)) 9.24e-01 7.74e-03 \n", - "1 ((scatter / flux) / (total / flux)) 9.81e-01 3.74e-03 " + " score mean std. dev. \n", + " \n", + "0 ((scatter / flux) / (total / flux)) 9.24e-01 2.33e-02 \n", + "1 ((scatter / flux) / (total / flux)) 9.81e-01 1.06e-02 " ] }, "execution_count": 24, @@ -1105,9 +1152,9 @@ "
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1115,40 +1162,58 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
cellmesh 10000energy low [MeV]energy high [MeV]nuclidemeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...1.00.00776310.023356
11116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...1.00.00373910.010581
\n", "
" ], "text/plain": [ - " cell energy low [MeV] energy high [MeV] nuclide \\\n", - "0 1 0.00e+00 6.25e-07 total \n", - "1 1 6.25e-07 2.00e+01 total \n", + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", "\n", - " score mean std. dev. \n", - "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 7.76e-03 \n", - "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 3.74e-03 " + " score mean std. dev. \n", + " \n", + "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 2.34e-02 \n", + "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 1.06e-02 " ] }, "execution_count": 25, @@ -1163,6 +1228,24 @@ "# The scattering-to-total ratio is a derived tally which can generate Pandas DataFrames for inspection\n", "sum_ratio.get_pandas_dataframe()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -1181,7 +1264,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.6" + "version": "2.7.11" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 5f0acde3f1..e89a9cb7dc 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -32,7 +32,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -94,7 +94,7 @@ "cell_type": "code", "execution_count": 3, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -458,7 +458,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -557,14 +557,14 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Specify multi-group cross section types to compute\n", - "mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'fission', 'nu-scatter matrix', 'chi']" + "mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'fission', 'nu-scatter matrix', 'chi', 'chi-delayed']" ] }, { @@ -578,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -600,7 +600,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": { "collapsed": true }, @@ -619,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -640,7 +640,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": { "collapsed": true }, @@ -660,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -688,7 +688,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": { "collapsed": true }, @@ -700,7 +700,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -725,8 +725,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 47ef320ad517612376e181ec6a6bc42ca0db98ce\n", - " Date/Time: 2016-05-14 12:29:07\n", + " Git SHA1: d30d010aea2c1cba90c993a9c501be9d5d81921d\n", + " Date/Time: 2016-06-17 12:58:23\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -778,32 +778,32 @@ " 22/1 1.04175 1.02516 +/- 0.00588\n", " 23/1 1.01909 1.02469 +/- 0.00543\n", " 24/1 1.07119 1.02801 +/- 0.00603\n", - " 25/1 0.97445 1.02444 +/- 0.00665\n", - " 26/1 1.04737 1.02588 +/- 0.00638\n", - " 27/1 1.04656 1.02709 +/- 0.00612\n", - " 28/1 1.03464 1.02751 +/- 0.00578\n", - " 29/1 1.02528 1.02739 +/- 0.00547\n", - " 30/1 1.02799 1.02742 +/- 0.00519\n", - " 31/1 1.05846 1.02890 +/- 0.00516\n", - " 32/1 1.03811 1.02932 +/- 0.00493\n", - " 33/1 1.00894 1.02843 +/- 0.00480\n", - " 34/1 1.02049 1.02810 +/- 0.00460\n", - " 35/1 1.00690 1.02726 +/- 0.00450\n", - " 36/1 1.03129 1.02741 +/- 0.00432\n", - " 37/1 0.98864 1.02597 +/- 0.00440\n", - " 38/1 1.00017 1.02505 +/- 0.00434\n", - " 39/1 1.03635 1.02544 +/- 0.00421\n", - " 40/1 1.07090 1.02696 +/- 0.00434\n", - " 41/1 1.03141 1.02710 +/- 0.00420\n", - " 42/1 1.02624 1.02707 +/- 0.00406\n", - " 43/1 1.02668 1.02706 +/- 0.00394\n", - " 44/1 1.05940 1.02801 +/- 0.00394\n", - " 45/1 1.01149 1.02754 +/- 0.00385\n", - " 46/1 1.06958 1.02871 +/- 0.00392\n", - " 47/1 1.02674 1.02866 +/- 0.00381\n", - " 48/1 1.02542 1.02857 +/- 0.00371\n", - " 49/1 1.03516 1.02874 +/- 0.00362\n", - " 50/1 1.06818 1.02973 +/- 0.00366\n", + " 25/1 0.97414 1.02442 +/- 0.00666\n", + " 26/1 1.04709 1.02584 +/- 0.00639\n", + " 27/1 1.05872 1.02777 +/- 0.00631\n", + " 28/1 1.03930 1.02841 +/- 0.00598\n", + " 29/1 1.01488 1.02770 +/- 0.00570\n", + " 30/1 1.04513 1.02857 +/- 0.00548\n", + " 31/1 0.99538 1.02699 +/- 0.00545\n", + " 32/1 1.00106 1.02581 +/- 0.00532\n", + " 33/1 0.99389 1.02442 +/- 0.00527\n", + " 34/1 0.99938 1.02338 +/- 0.00516\n", + " 35/1 1.02161 1.02331 +/- 0.00495\n", + " 36/1 1.04084 1.02398 +/- 0.00480\n", + " 37/1 0.98801 1.02265 +/- 0.00481\n", + " 38/1 1.01348 1.02232 +/- 0.00464\n", + " 39/1 1.06693 1.02386 +/- 0.00474\n", + " 40/1 1.07729 1.02564 +/- 0.00491\n", + " 41/1 1.03191 1.02585 +/- 0.00475\n", + " 42/1 1.05209 1.02667 +/- 0.00468\n", + " 43/1 1.02997 1.02677 +/- 0.00453\n", + " 44/1 1.07288 1.02812 +/- 0.00460\n", + " 45/1 1.01268 1.02768 +/- 0.00449\n", + " 46/1 1.03759 1.02796 +/- 0.00437\n", + " 47/1 1.02620 1.02791 +/- 0.00425\n", + " 48/1 1.02509 1.02783 +/- 0.00414\n", + " 49/1 1.01043 1.02739 +/- 0.00406\n", + " 50/1 1.01457 1.02707 +/- 0.00397\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -813,27 +813,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7700E-01 seconds\n", - " Reading cross sections = 1.3400E-01 seconds\n", - " Total time in simulation = 8.0461E+01 seconds\n", - " Time in transport only = 8.0422E+01 seconds\n", - " Time in inactive batches = 6.4060E+00 seconds\n", - " Time in active batches = 7.4055E+01 seconds\n", - " Time synchronizing fission bank = 6.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", - " SEND/RECV source sites = 3.0000E-03 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for initialization = 8.4000E-01 seconds\n", + " Reading cross sections = 2.5400E-01 seconds\n", + " Total time in simulation = 7.0993E+01 seconds\n", + " Time in transport only = 7.0952E+01 seconds\n", + " Time in inactive batches = 5.0170E+00 seconds\n", + " Time in active batches = 6.5976E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 8.1067E+01 seconds\n", - " Calculation Rate (inactive) = 3902.59 neutrons/second\n", - " Calculation Rate (active) = 1350.35 neutrons/second\n", + " Total time elapsed = 7.1853E+01 seconds\n", + " Calculation Rate (inactive) = 4983.06 neutrons/second\n", + " Calculation Rate (active) = 1515.70 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02763 +/- 0.00343\n", - " k-effective (Track-length) = 1.02973 +/- 0.00366\n", - " k-effective (Absorption) = 1.02732 +/- 0.00319\n", - " Combined k-effective = 1.02826 +/- 0.00259\n", + " k-effective (Collision) = 1.02489 +/- 0.00308\n", + " k-effective (Track-length) = 1.02707 +/- 0.00397\n", + " k-effective (Absorption) = 1.02637 +/- 0.00325\n", + " Combined k-effective = 1.02581 +/- 0.00264\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -844,7 +844,7 @@ "0" ] }, - "execution_count": 26, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -870,7 +870,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -889,7 +889,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -924,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 44, "metadata": { "collapsed": false }, @@ -944,19 +944,11 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wboyd/Documents/NSE-CRPG-Codes/openmc/openmc/tallies.py:1988: RuntimeWarning: invalid value encountered in true_divide\n", - " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n" - ] - }, { "data": { "text/html": [ @@ -978,16 +970,16 @@ " 10000\n", " 1\n", " U-235\n", - " 8.055246e-03\n", - " 2.857567e-05\n", + " 8.046809e-03\n", + " 2.697198e-05\n", " \n", " \n", " 4\n", " 10000\n", " 1\n", " U-238\n", - " 7.339215e-03\n", - " 4.349466e-05\n", + " 7.366624e-03\n", + " 4.255197e-05\n", " \n", " \n", " 5\n", @@ -1002,16 +994,16 @@ " 10000\n", " 2\n", " U-235\n", - " 3.615565e-01\n", - " 2.050486e-03\n", + " 3.614917e-01\n", + " 2.135233e-03\n", " \n", " \n", " 1\n", " 10000\n", " 2\n", " U-238\n", - " 6.742638e-07\n", - " 3.795256e-09\n", + " 6.741607e-07\n", + " 3.924924e-09\n", " \n", " \n", " 2\n", @@ -1027,15 +1019,15 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-235 8.055246e-03 2.857567e-05\n", - "4 10000 1 U-238 7.339215e-03 4.349466e-05\n", + "3 10000 1 U-235 8.046809e-03 2.697198e-05\n", + "4 10000 1 U-238 7.366624e-03 4.255197e-05\n", "5 10000 1 O-16 0.000000e+00 0.000000e+00\n", - "0 10000 2 U-235 3.615565e-01 2.050486e-03\n", - "1 10000 2 U-238 6.742638e-07 3.795256e-09\n", + "0 10000 2 U-235 3.614917e-01 2.135233e-03\n", + "1 10000 2 U-238 6.741607e-07 3.924924e-09\n", "2 10000 2 O-16 0.000000e+00 0.000000e+00" ] }, - "execution_count": 30, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1054,7 +1046,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1069,13 +1061,13 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU-235\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t8.06e-03 +/- 3.55e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t3.62e-01 +/- 5.67e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t8.05e-03 +/- 3.35e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.61e-01 +/- 5.91e-01%\n", "\n", "\tNuclide =\tU-238\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.34e-03 +/- 5.93e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.63e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.37e-03 +/- 5.78e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.82e-01%\n", "\n", "\tNuclide =\tO-16\n", "\tCross Sections [cm^-1]:\n", @@ -1100,7 +1092,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1119,7 +1111,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": { "collapsed": true }, @@ -1131,7 +1123,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": { "collapsed": true }, @@ -1150,7 +1142,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -1165,7 +1157,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1191,16 +1183,16 @@ " 10000\n", " 1\n", " U-235\n", - " 0.074860\n", - " 0.000303\n", + " 0.074734\n", + " 0.000325\n", " \n", " \n", " 1\n", " 10000\n", " 1\n", " U-238\n", - " 0.005952\n", - " 0.000035\n", + " 0.005977\n", + " 0.000034\n", " \n", " \n", " 2\n", @@ -1216,12 +1208,12 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "0 10000 1 U-235 0.074860 0.000303\n", - "1 10000 1 U-238 0.005952 0.000035\n", + "0 10000 1 U-235 0.074734 0.000325\n", + "1 10000 1 U-238 0.005977 0.000034\n", "2 10000 1 O-16 0.000000 0.000000" ] }, - "execution_count": 36, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1250,11 +1242,28 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'RectLattice' object has no attribute 'dimension'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Create an OpenMOC Geometry from the OpenCG Geometry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mopenmoc_geometry\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_openmoc_geometry\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmgxs_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopencg_geometry\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/library.pyc\u001b[0m in \u001b[0;36mopencg_geometry\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_opencg_geometry\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mopenmc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopencg_compatible\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_opencg_geometry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_opencg_geometry\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_opencg_geometry\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_openmc_geometry\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_opencg_geometry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/opencg_compatible.pyc\u001b[0m in \u001b[0;36mget_opencg_geometry\u001b[0;34m(openmc_geometry)\u001b[0m\n\u001b[1;32m 997\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 998\u001b[0m \u001b[0mopenmc_root_universe\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenmc_geometry\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mroot_universe\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 999\u001b[0;31m \u001b[0mopencg_root_universe\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_opencg_universe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopenmc_root_universe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1000\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m \u001b[0mopencg_geometry\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopencg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGeometry\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/opencg_compatible.pyc\u001b[0m in \u001b[0;36mget_opencg_universe\u001b[0;34m(openmc_universe)\u001b[0m\n\u001b[1;32m 746\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 747\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mcell_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopenmc_cell\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mopenmc_cells\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 748\u001b[0;31m \u001b[0mopencg_cell\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_opencg_cell\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopenmc_cell\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 749\u001b[0m \u001b[0mopencg_universe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_cell\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopencg_cell\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 750\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/opencg_compatible.pyc\u001b[0m in \u001b[0;36mget_opencg_cell\u001b[0;34m(openmc_cell)\u001b[0m\n\u001b[1;32m 454\u001b[0m \u001b[0mopencg_cell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfill\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_opencg_universe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfill\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 456\u001b[0;31m \u001b[0mopencg_cell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfill\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_opencg_lattice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfill\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 457\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 458\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mopenmc_cell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrotation\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/opencg_compatible.pyc\u001b[0m in \u001b[0;36mget_opencg_lattice\u001b[0;34m(openmc_lattice)\u001b[0m\n\u001b[1;32m 831\u001b[0m \u001b[0;31m# Create an OpenCG Lattice to represent this OpenMC Lattice\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 832\u001b[0m \u001b[0mname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenmc_lattice\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 833\u001b[0;31m \u001b[0mdimension\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenmc_lattice\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdimension\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 834\u001b[0m \u001b[0mpitch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenmc_lattice\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpitch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 835\u001b[0m \u001b[0mlower_left\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenmc_lattice\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower_left\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'RectLattice' object has no attribute 'dimension'" + ] + } + ], "source": [ "# Create an OpenMOC Geometry from the OpenCG Geometry\n", "openmoc_geometry = get_openmoc_geometry(mgxs_lib.opencg_geometry)" @@ -1269,11 +1278,23 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'openmoc_geometry' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load the library into the OpenMOC geometry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmaterials\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mload_openmc_mgxs_lib\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmgxs_lib\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopenmoc_geometry\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'openmoc_geometry' is not defined" + ] + } + ], "source": [ "# Load the library into the OpenMOC geometry\n", "materials = load_openmc_mgxs_lib(mgxs_lib, openmoc_geometry)" @@ -1596,21 +1617,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" + "pygments_lexer": "ipython2", + "version": "2.7.11" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb index e5c80c1926..62a6a09da1 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb @@ -1439,21 +1439,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" + "pygments_lexer": "ipython2", + "version": "2.7.11" } }, "nbformat": 4, diff --git a/examples/xml/basic/materials.xml b/examples/xml/basic/materials.xml index 75ab74dbba..39fce5f278 100644 --- a/examples/xml/basic/materials.xml +++ b/examples/xml/basic/materials.xml @@ -12,7 +12,6 @@ - diff --git a/openmc/__init__.py b/openmc/__init__.py index 0bde0f5843..557e13039f 100644 --- a/openmc/__init__.py +++ b/openmc/__init__.py @@ -9,8 +9,8 @@ from openmc.plots import * from openmc.settings import * from openmc.surface import * from openmc.universe import * -from openmc.mgxs_library import * from openmc.mesh import * +from openmc.mgxs_library import * from openmc.filter import * from openmc.trigger import * from openmc.tallies import * diff --git a/openmc/filter.py b/openmc/filter.py index 72fb3b14ed..4c742352d2 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -564,7 +564,7 @@ class Filter(object): # Initialize dictionary to build Pandas Multi-index column filter_dict = {} - # Append Mesh ID as outermost index of mult-index + # Append Mesh ID as outermost index of multi-index mesh_key = 'mesh {0}'.format(self.mesh.id) # Find mesh dimensions - use 3D indices for simplicity diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 9241892646..9c97942347 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -55,9 +55,10 @@ class Library(object): If true, computes cross sections for each nuclide in each domain mgxs_types : Iterable of str The types of cross sections in the library (e.g., ['total', 'scatter']) - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization - domains : Iterable of openmc.Material, openmc.Cell or openmc.Universe + domains : Iterable of openmc.Material, openmc.Cell, openmc.Universe, or + openmc.Mesh The spatial domain(s) for which MGXS in the Library are computed correction : {'P0', None} Apply the P0 correction to scattering matrices if set to 'P0' @@ -188,6 +189,10 @@ class Library(object): return self.openmc_geometry.get_all_material_cells() elif self.domain_type == 'universe': return self.openmc_geometry.get_all_universes() + # FIXME: Change to get tuples of all domain cells + elif self.domain_type == 'mesh': + raise ValueError('Unable to get all domains for a mesh domain ' + + 'type. The domains must be set to [openmc.Mesh]') else: raise ValueError('Unable to get domains without a domain type') else: @@ -253,11 +258,21 @@ class Library(object): @by_nuclide.setter def by_nuclide(self, by_nuclide): cv.check_type('by_nuclide', by_nuclide, bool) + + if by_nuclide == True and self.domain_type == 'mesh': + raise ValueError('Unable to create MGXS library by nuclide with ' + + 'mesh domain') + self._by_nuclide = by_nuclide @domain_type.setter def domain_type(self, domain_type): cv.check_value('domain type', domain_type, openmc.mgxs.DOMAIN_TYPES) + + if by_nuclide == True and domain_type == 'mesh': + raise ValueError('Unable to create MGXS library by nuclide with ' + + 'mesh domain') + self._domain_type = domain_type @domains.setter @@ -278,6 +293,9 @@ class Library(object): elif self.domain_type == 'universe': cv.check_iterable_type('domain', domains, openmc.Universe) all_domains = self.openmc_geometry.get_all_universes() + elif self.domain_type == 'mesh': + cv.check_iterable_type('domain', domains, openmc.Mesh) + all_domains = domains else: msg = 'Unable to set domains with ' \ 'domain type "{}"'.format(self.domain_type) @@ -458,9 +476,13 @@ class Library(object): Parameters ---------- - domain : Material or Cell or Universe or Integral - The material, cell, or universe object of interest (or its ID) - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi'} + domain : Material or Cell or Universe or Mesh or Integral + The material, cell, universe, or mesh object of interest (or its ID) + mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', + 'capture', 'fission', 'nu-fission', 'kappa-fission', + 'scatter', 'nu-scatter', 'scatter matrix', + 'nu-scatter matrix', 'multiplicity matrix', + 'nu-fission matrix', chi'} The type of multi-group cross section object to return Returns @@ -482,6 +504,8 @@ class Library(object): cv.check_type('domain', domain, (openmc.Cell, Integral)) elif self.domain_type == 'universe': cv.check_type('domain', domain, (openmc.Universe, Integral)) + elif self.domain_type == 'mesh': + cv.check_type('domain', domain, (openmc.Mesh, Integral)) # Check that requested domain is included in library if isinstance(domain, Integral): @@ -761,7 +785,7 @@ class Library(object): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization xsdata_name : str Name to apply to the "xsdata" entry produced by this method @@ -809,7 +833,7 @@ class Library(object): """ cv.check_type('domain', domain, (openmc.Material, openmc.Cell, - openmc.Cell)) + openmc.Cell, openmc.Mesh)) cv.check_type('xsdata_name', xsdata_name, basestring) cv.check_type('nuclide', nuclide, basestring) cv.check_value('xs_type', xs_type, ['macro', 'micro']) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 088db649fa..fd6d0ee494 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -13,6 +13,7 @@ import numpy as np import openmc import openmc.checkvalue as cv from openmc.mgxs import EnergyGroups +from openmc import Mesh if sys.version_info[0] >= 3: @@ -34,7 +35,10 @@ MGXS_TYPES = ['total', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', - 'chi'] + 'chi', + 'chi-delayed', + 'chi-prompt', + 'velocity'] # Supported domain types @@ -42,13 +46,15 @@ MGXS_TYPES = ['total', DOMAIN_TYPES = ['cell', 'distribcell', 'universe', - 'material'] + 'material', + 'mesh'] # Supported domain classes # TODO: Implement Mesh domains _DOMAINS = (openmc.Cell, openmc.Universe, - openmc.Material) + openmc.Material, + openmc.Mesh) class MGXS(object): @@ -63,9 +69,9 @@ class MGXS(object): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -83,9 +89,9 @@ class MGXS(object): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -111,10 +117,11 @@ class MGXS(object): Derived tally for the multi-group cross section. This attribute is None unless the multi-group cross section has been computed. num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). + The number of subdomains is unity for 'material', 'cell', and 'universe' + domain types. This is equal to the number of cell instances for + 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file) and the number of mesh cells for + 'mesh' domain types. num_nuclides : int The number of nuclides for which the multi-group cross section is being tracked. This is unity if the by_nuclide attribute is False. @@ -260,6 +267,9 @@ class MGXS(object): # Create a domain Filter object domain_filter = openmc.Filter(self.domain_type, self.domain.id) + if self.domain_type == 'mesh': + domain_filter.mesh = self.domain + # Create each Tally needed to compute the multi group cross section tally_metadata = zip(self.scores, self.tally_keys, self.filters) for score, key, filters in tally_metadata: @@ -375,6 +385,8 @@ class MGXS(object): self._domain_type = 'cell' elif isinstance(domain, openmc.Universe): self._domain_type = 'universe' + elif isinstance(domain, openmc.Mesh): + self._domain_type = 'mesh' @domain_type.setter def domain_type(self, domain_type): @@ -427,11 +439,14 @@ class MGXS(object): Parameters ---------- - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi'} + mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', + 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', + 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', + 'multiplicity matrix', 'nu-fission matrix', chi'} The type of multi-group cross section object to return - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -482,6 +497,12 @@ class MGXS(object): mgxs = NuFissionMatrixXS(domain, domain_type, energy_groups) elif mgxs_type == 'chi': mgxs = Chi(domain, domain_type, energy_groups) + elif mgxs_type == 'chi-prompt': + mgxs = ChiPrompt(domain, domain_type, energy_groups) + elif mgxs_type == 'chi-delayed': + mgxs = ChiDelayed(domain, domain_type, energy_groups) + elif mgxs_type == 'velocity': + mgxs = Velocity(domain, domain_type, energy_groups) mgxs.by_nuclide = by_nuclide mgxs.name = name @@ -666,6 +687,8 @@ class MGXS(object): self.domain = statepoint.summary.get_universe_by_id(self.domain.id) elif self.domain_type == 'material': self.domain = statepoint.summary.get_material_by_id(self.domain.id) + elif self.domain_type == 'mesh': + self.domain = statepoint.meshes[self.domain.id] else: msg = 'Unable to load data from a statepoint for domain type {0} ' \ 'which is not yet supported'.format(self.domain_type) @@ -673,7 +696,23 @@ class MGXS(object): # Use tally "slicing" to ensure that tallies correspond to our domain # NOTE: This is important if tally merging was used - if self.domain_type != 'distribcell': + if self.domain_type == 'mesh': + filters = [self.domain_type] + bins = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + bins.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + bins.append((x, y, 1)) + + filter_bins = [tuple(bins)] + elif self.domain_type != 'distribcell': filters = [self.domain_type] filter_bins = [(self.domain.id,)] # Distribcell filters only accept single cell - neglect it when slicing @@ -752,10 +791,13 @@ class MGXS(object): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) - filter_bins.append((subdomain,)) + if self.domain_type == 'mesh': + filter_bins.append(subdomain) + else: + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(groups, basestring): @@ -1125,6 +1167,20 @@ class MGXS(object): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains_list = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains_list.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains_list.append((x, y, 1)) + subdomains = [tuple(subdomains_list)] else: subdomains = [self.domain.id] @@ -1261,6 +1317,21 @@ class MGXS(object): elif self.domain_type == 'avg(distribcell)': domain_filter = self.xs_tally.find_filter('avg(distribcell)') subdomains = domain_filter.bins + elif self.domain_type == 'mesh': + bins = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + bins.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + bins.append((x, y, 1)) + + subdomains = [tuple(bins)] else: subdomains = [self.domain.id] @@ -1366,8 +1437,8 @@ class MGXS(object): df = self.get_pandas_dataframe(groups=groups, xs_type=xs_type) # Capitalize column label strings - df.columns = df.columns.astype(str) - df.columns = map(str.title, df.columns) + #df.columns = df.columns.astype(str) + #df.columns = map(str.title, df.columns) # Export the data using Pandas IO API if format == 'csv': @@ -1468,7 +1539,10 @@ class MGXS(object): distribcell_paths=distribcell_paths) # Remove the score column since it is homogeneous and redundant - df = df.drop('score', axis=1) + if self.domain_type == 'mesh': + df = df.drop('score', axis=1, level=0) + else: + df = df.drop('score', axis=1) # Override energy groups bounds with indices all_groups = np.arange(self.num_groups, 0, -1, dtype=np.int) @@ -1523,7 +1597,12 @@ class MGXS(object): # Sort the dataframe by domain type id (e.g., distribcell id) and # energy groups such that data is from fast to thermal - df.sort_values(by=[self.domain_type] + columns, inplace=True) + if self.domain_type == 'mesh': + mesh_str = 'mesh {0}'.format(self.domain.id) + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), \ + (mesh_str, 'z')] + columns, inplace=True) + else: + df.sort_values(by=[self.domain_type] + columns, inplace=True) return df @@ -1542,9 +1621,9 @@ class MatrixMGXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -1562,9 +1641,9 @@ class MatrixMGXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -1591,9 +1670,10 @@ class MatrixMGXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). + domain types. This is equal to the number of cell instances for + 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file) and the number of mesh cells for + 'mesh' domain types. num_nuclides : int The number of nuclides for which the multi-group cross section is being tracked. This is unity if the by_nuclide attribute is False. @@ -1693,7 +1773,10 @@ class MatrixMGXS(MGXS): max_depth=2) for subdomain in subdomains: filters.append(self.domain_type) - filter_bins.append((subdomain,)) + if self.domain_type == 'mesh': + filter_bins.append(subdomain) + else: + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(in_groups, basestring): @@ -1852,6 +1935,19 @@ class MatrixMGXS(MGXS): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -1934,7 +2030,7 @@ class MatrixMGXS(MGXS): class TotalXS(MGXS): - r"""A total multi-group cross section. + """A total multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -1961,9 +2057,9 @@ class TotalXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -1981,9 +2077,9 @@ class TotalXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2043,7 +2139,7 @@ class TotalXS(MGXS): class TransportXS(MGXS): - r"""A transport-corrected total multi-group cross section. + """A transport-corrected total multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2079,9 +2175,9 @@ class TransportXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2099,9 +2195,9 @@ class TransportXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2186,7 +2282,7 @@ class TransportXS(MGXS): class NuTransportXS(TransportXS): - r"""A transport-corrected total multi-group cross section which + """A transport-corrected total multi-group cross section which accounts for neutron multiplicity in scattering reactions. This class can be used for both OpenMC input generation and tally data @@ -2209,9 +2305,9 @@ class NuTransportXS(TransportXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2229,9 +2325,9 @@ class NuTransportXS(TransportXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2299,7 +2395,7 @@ class NuTransportXS(TransportXS): class AbsorptionXS(MGXS): - r"""An absorption multi-group cross section. + """An absorption multi-group cross section. Absorption is defined as all reactions that do not produce secondary neutrons (disappearance) plus fission reactions. @@ -2330,9 +2426,9 @@ class AbsorptionXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2350,9 +2446,9 @@ class AbsorptionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2381,9 +2477,10 @@ class AbsorptionXS(MGXS): is None unless the multi-group cross section has been computed. num_subdomains : int The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances + domain types. This is equal to the number of cell instances for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). + tally data from a statepoint file) and the number of mesh cells for + 'mesh' domain types. num_nuclides : int The number of nuclides for which the multi-group cross section is being tracked. This is unity if the by_nuclide attribute is False. @@ -2412,7 +2509,7 @@ class AbsorptionXS(MGXS): class CaptureXS(MGXS): - r"""A capture multi-group cross section. + """A capture multi-group cross section. The neutron capture reaction rate is defined as the difference between OpenMC's 'absorption' and 'fission' reaction rate score types. This includes @@ -2446,9 +2543,9 @@ class CaptureXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2466,9 +2563,9 @@ class CaptureXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2568,9 +2665,9 @@ class FissionXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2588,9 +2685,9 @@ class FissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2650,7 +2747,7 @@ class FissionXS(MGXS): class NuFissionXS(MGXS): - r"""A fission neutron production multi-group cross section. + """A fission neutron production multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2679,9 +2776,9 @@ class NuFissionXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2699,9 +2796,9 @@ class NuFissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2761,7 +2858,7 @@ class NuFissionXS(MGXS): class KappaFissionXS(MGXS): - r"""A recoverable fission energy production rate multi-group cross section. + """A recoverable fission energy production rate multi-group cross section. The recoverable energy per fission, :math:`\kappa`, is defined as the fission product kinetic energy, prompt and delayed neutron kinetic energies, @@ -2795,9 +2892,9 @@ class KappaFissionXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2815,9 +2912,9 @@ class KappaFissionXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2877,7 +2974,7 @@ class KappaFissionXS(MGXS): class ScatterXS(MGXS): - r"""A scattering multi-group cross section. + """A scattering multi-group cross section. The scattering cross section is defined as the difference between the total and absorption cross sections. @@ -2908,9 +3005,9 @@ class ScatterXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -2928,9 +3025,9 @@ class ScatterXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -2990,7 +3087,7 @@ class ScatterXS(MGXS): class NuScatterXS(MGXS): - r"""A scattering neutron production multi-group cross section. + """A scattering neutron production multi-group cross section. The neutron production from scattering is defined as the average number of neutrons produced from all neutron-producing reactions except for fission. @@ -3023,9 +3120,9 @@ class NuScatterXS(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -3043,9 +3140,9 @@ class NuScatterXS(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -3109,7 +3206,7 @@ class NuScatterXS(MGXS): class ScatterMatrixXS(MatrixMGXS): - r"""A scattering matrix multi-group cross section for one or more Legendre + """A scattering matrix multi-group cross section for one or more Legendre moments. This class can be used for both OpenMC input generation and tally data @@ -3153,9 +3250,9 @@ class ScatterMatrixXS(MatrixMGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -3177,9 +3274,9 @@ class ScatterMatrixXS(MatrixMGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -3443,7 +3540,7 @@ class ScatterMatrixXS(MatrixMGXS): subdomains='all', nuclides='all', moment='all', xs_type='macro', order_groups='increasing', row_column='inout', value='mean', **kwargs): - r"""Returns an array of multi-group cross sections. + """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering matrix data data for one or more energy groups and subdomains. @@ -3508,7 +3605,10 @@ class ScatterMatrixXS(MatrixMGXS): cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) for subdomain in subdomains: filters.append(self.domain_type) - filter_bins.append((subdomain,)) + if self.domain_type == 'mesh': + filter_bins.append(subdomain) + else: + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(in_groups, basestring): @@ -3692,6 +3792,19 @@ class ScatterMatrixXS(MatrixMGXS): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -4075,9 +4188,9 @@ class NuFissionMatrixXS(MatrixMGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -4095,9 +4208,9 @@ class NuFissionMatrixXS(MatrixMGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -4158,7 +4271,7 @@ class NuFissionMatrixXS(MatrixMGXS): class Chi(MGXS): - r"""The fission spectrum. + """The fission spectrum. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4190,9 +4303,9 @@ class Chi(MGXS): Parameters ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} The domain type for spatial homogenization groups : openmc.mgxs.EnergyGroups The energy group structure for energy condensation @@ -4210,9 +4323,9 @@ class Chi(MGXS): Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe + domain : Material or Cell or Universe or Mesh Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe'} + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation @@ -4477,7 +4590,10 @@ class Chi(MGXS): cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) for subdomain in subdomains: filters.append(self.domain_type) - filter_bins.append((subdomain,)) + if self.domain_type == 'mesh': + filter_bins.append(subdomain) + else: + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(groups, basestring): @@ -4614,3 +4730,396 @@ class Chi(MGXS): df['std. dev.'] *= np.tile(densities, tile_factor) return df + + +class ChiDelayed(Chi): + """The delayed fission spectrum. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ChiDelayed.energy_groups` and + :attr:`ChiDelayed.domain` properties. Tallies for the flux and appropriate reaction + rates over the specified domain are generated automatically via the + :attr:`ChiDelayed.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`Chi.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + fission spectrum is calculated as: + + .. math:: + + \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) + \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \nu\sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, + E') \psi(r, E', \Omega') \\ + \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle + \nu\sigma_f \phi \rangle} + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`Chi.tally_keys` property and values are + instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, + groups=None, by_nuclide=False, name=''): + super(ChiDelayed, self).__init__(domain, domain_type, groups, by_nuclide, name) + self._rxn_type = 'chi-delayed' + + @property + def scores(self): + return ['delayed-nu-fission', 'delayed-nu-fission'] + + @property + def tally_keys(self): + return ['delayed-nu-fission-in', 'delayed-nu-fission-out'] + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = self.tallies['delayed-nu-fission-out'] + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @property + def xs_tally(self): + + if self._xs_tally is None: + nu_fission_in = self.tallies['delayed-nu-fission-in'] + + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = nu_fission_in.find_filter('energy') + nu_fission_in.remove_filter(energy_filter) + + # Compute chi + self._xs_tally = self.rxn_rate_tally / nu_fission_in + super(ChiDelayed, self)._compute_xs() + + # Add the coarse energy filter back to the nu-fission tally + nu_fission_in.filters.append(energy_filter) + + return self._xs_tally + + def get_slice(self, nuclides=[], groups=[]): + """Build a sliced Chi for the specified nuclides and energy groups. + + This method constructs a new MGXS to encapsulate a subset of the data + represented by this MGXS. The subset of data to include in the tally + slice is determined by the nuclides and energy groups specified in + the input parameters. + + Parameters + ---------- + nuclides : list of str + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is []) + groups : list of Integral + A list of energy group indices starting at 1 for the high energies + (e.g., [1, 2, 3]; default is []) + + Returns + ------- + openmc.mgxs.MGXS + A new MGXS which encapsulates the subset of data requested + for the nuclide(s) and/or energy group(s) requested in the + parameters. + + """ + + # Temporarily remove energy filter from nu-fission-in since its + # group structure will work in super MGXS.get_slice(...) method + nu_fission_in = self.tallies['delayed-nu-fission-in'] + energy_filter = nu_fission_in.find_filter('energy') + nu_fission_in.remove_filter(energy_filter) + + # Call super class method and null out derived tallies + slice_xs = super(Chi, self).get_slice(nuclides, groups) + slice_xs._rxn_rate_tally = None + slice_xs._xs_tally = None + + # Slice energy groups if needed + if len(groups) != 0: + filter_bins = [] + for group in groups: + group_bounds = self.energy_groups.get_group_bounds(group) + filter_bins.append(group_bounds) + filter_bins = [tuple(filter_bins)] + + # Slice nu-fission-out tally along energyout filter + nu_fission_out = slice_xs.tallies['delayed-nu-fission-out'] + tally_slice = nu_fission_out.get_slice(filters=['energyout'], + filter_bins=filter_bins) + slice_xs._tallies['delayed-nu-fission-out'] = tally_slice + + # Add energy filter back to nu-fission-in tallies + self.tallies['delayed-nu-fission-in'].add_filter(energy_filter) + slice_xs._tallies['delayed-nu-fission-in'].add_filter(energy_filter) + + slice_xs.sparse = self.sparse + return slice_xs + + def merge(self, other): + """Merge another Chi with this one + + If results have been loaded from a statepoint, then Chi are only + mergeable along one and only one of energy groups or nuclides. + + Parameters + ---------- + other : openmc.mgxs.MGXS + MGXS to merge with this one + + Returns + ------- + merged_mgxs : openmc.mgxs.MGXS + Merged MGXS + """ + + if not self.can_merge(other): + raise ValueError('Unable to merge ChiDelayed') + + # Create deep copy of tally to return as merged tally + merged_mgxs = copy.deepcopy(self) + merged_mgxs._derived = True + merged_mgxs._rxn_rate_tally = None + merged_mgxs._xs_tally = None + + # Merge energy groups + if self.energy_groups != other.energy_groups: + merged_groups = self.energy_groups.merge(other.energy_groups) + merged_mgxs.energy_groups = merged_groups + + # Merge nuclides + if self.nuclides != other.nuclides: + + # The nuclides must be mutually exclusive + for nuclide in self.nuclides: + if nuclide in other.nuclides: + msg = 'Unable to merge Chi Delayed with shared nuclides' + raise ValueError(msg) + + # Concatenate lists of nuclides for the merged MGXS + merged_mgxs.nuclides = self.nuclides + other.nuclides + + # Merge tallies + for tally_key in self.tallies: + merged_tally = self.tallies[tally_key].merge(other.tallies[tally_key]) + merged_mgxs.tallies[tally_key] = merged_tally + + return merged_mgxs + + def get_xs(self, groups='all', subdomains='all', nuclides='all', + xs_type='macro', order_groups='increasing', + value='mean', **kwargs): + """Returns an array of the fission spectrum. + + This method constructs a 2D NumPy array for the requested multi-group + cross section data data for one or more energy groups and subdomains. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + special string 'all' will return the cross sections for all nuclides + in the spatial domain. The special string 'sum' will return the + cross section summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + This parameter is not relevant for chi but is included here to + mirror the parent MGXS.get_xs(...) class method + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. + value : {'mean', 'std_dev', 'rel_err'} + A string for the type of value to return. Defaults to 'mean'. + + Returns + ------- + numpy.ndarray + A NumPy array of the multi-group cross section indexed in the order + each group, subdomain and nuclide is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + + """ + + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + for subdomain in subdomains: + filters.append(self.domain_type) + if self.domain_type == 'mesh': + filter_bins.append(subdomain) + else: + filter_bins.append((subdomain,)) + + # Construct list of energy group bounds tuples for all requested groups + if not isinstance(groups, basestring): + cv.check_iterable_type('groups', groups, Integral) + for group in groups: + filters.append('energyout') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) + + # If chi was computed for each nuclide in the domain + if self.by_nuclide: + + # Get the sum as the fission source weighted average chi for all + # nuclides in the domain + if nuclides == 'sum' or nuclides == ['sum']: + + # Retrieve the fission production tallies + nu_fission_in = self.tallies['delayed-nu-fission-in'] + nu_fission_out = self.tallies['delayed-nu-fission-out'] + + # Sum out all nuclides + nuclides = self.get_all_nuclides() + nu_fission_in = nu_fission_in.summation(nuclides=nuclides) + nu_fission_out = nu_fission_out.summation(nuclides=nuclides) + + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = nu_fission_in.find_filter('energy') + nu_fission_in.remove_filter(energy_filter) + + # Compute chi and store it as the xs_tally attribute so we can + # use the generic get_xs(...) method + xs_tally = nu_fission_out / nu_fission_in + + # Add the coarse energy filter back to the nu-fission tally + nu_fission_in.filters.append(energy_filter) + + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Get chi for all nuclides in the domain + elif nuclides == 'all': + nuclides = self.get_all_nuclides() + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=nuclides, value=value) + + # Get chi for user-specified nuclides in the domain + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=nuclides, value=value) + + # If chi was computed as an average of nuclides in the domain + else: + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Reverse data if user requested increasing energy groups since + # tally data is stored in order of increasing energies + if order_groups == 'increasing': + + # Reshape tally data array with separate axes for domain and energy + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + num_subdomains = int(xs.shape[0] / num_groups) + new_shape = (num_subdomains, num_groups) + xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Reverse energies to align with increasing energy groups + xs = xs[:, ::-1, :] + + # Eliminate trivial dimensions + xs = np.squeeze(xs) + xs = np.atleast_1d(xs) + + xs = np.nan_to_num(xs) + return xs From b4f056feb58ae9cbad2112696554ac4f3178d2aa Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 1 Jul 2016 11:22:44 -0400 Subject: [PATCH 02/49] added chi-prompt and inverse-velocity mgxs --- openmc/mgxs/mgxs.py | 852 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 771 insertions(+), 81 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index fd6d0ee494..acc240e045 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -38,8 +38,7 @@ MGXS_TYPES = ['total', 'chi', 'chi-delayed', 'chi-prompt', - 'velocity'] - + 'inverse-velocity'] # Supported domain types # TODO: Implement Mesh domains @@ -497,10 +496,10 @@ class MGXS(object): mgxs = NuFissionMatrixXS(domain, domain_type, energy_groups) elif mgxs_type == 'chi': mgxs = Chi(domain, domain_type, energy_groups) - elif mgxs_type == 'chi-prompt': - mgxs = ChiPrompt(domain, domain_type, energy_groups) elif mgxs_type == 'chi-delayed': mgxs = ChiDelayed(domain, domain_type, energy_groups) + elif mgxs_type == 'chi-prompt': + mgxs = ChiPrompt(domain, domain_type, energy_groups) elif mgxs_type == 'velocity': mgxs = Velocity(domain, domain_type, energy_groups) @@ -794,10 +793,7 @@ class MGXS(object): cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) - if self.domain_type == 'mesh': - filter_bins.append(subdomain) - else: - filter_bins.append((subdomain,)) + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(groups, basestring): @@ -1168,19 +1164,18 @@ class MGXS(object): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) elif self.domain_type == 'mesh': - subdomains_list = [] + subdomains = [] if (len(self.domain.dimension) == 3): nx, ny, nz = self.domain.dimension for x in range(1,nx+1): for y in range(1,ny+1): for z in range(1,nz+1): - subdomains_list.append((x, y, z)) + subdomains.append((x, y, z)) else: nx, ny = self.domain.dimension for x in range(1,nx+1): for y in range(1,ny+1): - subdomains_list.append((x, y, 1)) - subdomains = [tuple(subdomains_list)] + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -1318,20 +1313,18 @@ class MGXS(object): domain_filter = self.xs_tally.find_filter('avg(distribcell)') subdomains = domain_filter.bins elif self.domain_type == 'mesh': - bins = [] + subdomains = [] if (len(self.domain.dimension) == 3): nx, ny, nz = self.domain.dimension for x in range(1,nx+1): for y in range(1,ny+1): for z in range(1,nz+1): - bins.append((x, y, z)) + subdomains.append((x, y, z)) else: nx, ny = self.domain.dimension for x in range(1,nx+1): for y in range(1,ny+1): - bins.append((x, y, 1)) - - subdomains = [tuple(bins)] + subdomains.append((x, y, 1)) else: subdomains = [self.domain.id] @@ -1770,13 +1763,10 @@ class MatrixMGXS(MGXS): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral, - max_depth=2) + max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) - if self.domain_type == 'mesh': - filter_bins.append(subdomain) - else: - filter_bins.append((subdomain,)) + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(in_groups, basestring): @@ -3602,13 +3592,10 @@ class ScatterMatrixXS(MatrixMGXS): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) - if self.domain_type == 'mesh': - filter_bins.append(subdomain) - else: - filter_bins.append((subdomain,)) + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(in_groups, basestring): @@ -4587,13 +4574,10 @@ class Chi(MGXS): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) - if self.domain_type == 'mesh': - filter_bins.append(subdomain) - else: - filter_bins.append((subdomain,)) + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(groups, basestring): @@ -4739,15 +4723,592 @@ class ChiDelayed(Chi): post-processing to compute spatially-homogenized and energy-integrated multi-group cross sections for multi-group neutronics calculations. At a minimum, one needs to set the :attr:`ChiDelayed.energy_groups` and - :attr:`ChiDelayed.domain` properties. Tallies for the flux and appropriate reaction - rates over the specified domain are generated automatically via the + :attr:`ChiDelayed.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the :attr:`ChiDelayed.tallies` property, which can then be appended to a :class:`openmc.Tallies` instance. For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a :class:`openmc.StatePoint` instance. The derived multi-group cross section - can then be obtained from the :attr:`Chi.xs_tally` property. + can then be obtained from the :attr:`ChiDelayed.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + fission spectrum is calculated as: + + .. math:: + + \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) + \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \nu\sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, + E') \psi(r, E', \Omega') \\ + \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle + \nu\sigma_f \phi \rangle} + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + delayed_groups : list of int + Delayed groups to filter out the xs + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`ChiDelayed.tally_keys` property and + values are instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, + groups=None, by_nuclide=False, name='', delayed_groups=None): + super(ChiDelayed, self).__init__(domain, domain_type, groups, by_nuclide, name) + self._rxn_type = 'chi-delayed' + self._delayed_groups = None + + if delayed_groups is not None: + self.delayed_groups = delayed_groups + + @property + def delayed_groups(self): + return self._delayed_groups + + @property + def num_delayed_groups(self): + if self._delayed_groups != None: + return len(self.delayed_groups) + else: + return 0 + + @delayed_groups.setter + def delayed_groups(self, delayed_groups): + cv.check_iterable_type('delayed groups', delayed_groups, int) + self._delayed_groups = delayed_groups + + @property + def filters(self): + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energyout = openmc.Filter('energyout', group_edges) + energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) + if self.delayed_groups != None: + delayed_group_filter = openmc.Filter('delayedgroup', self.delayed_groups) + return [[delayed_group_filter, energyin], [delayed_group_filter, energyout]] + else: + return [[energyin], [energyout]] + + @property + def scores(self): + return ['delayed-nu-fission', 'delayed-nu-fission'] + + @property + def tally_keys(self): + return ['delayed-nu-fission-in', 'delayed-nu-fission-out'] + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = self.tallies['delayed-nu-fission-out'] + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @property + def xs_tally(self): + + if self._xs_tally is None: + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = delayed_nu_fission_in.find_filter('energy') + delayed_nu_fission_in.remove_filter(energy_filter) + + # Compute chi + self._xs_tally = self.rxn_rate_tally / delayed_nu_fission_in + super(ChiDelayed, self)._compute_xs() + + # Add the coarse energy filter back to the nu-fission tally + delayed_nu_fission_in.filters.append(energy_filter) + + return self._xs_tally + + def get_slice(self, nuclides=[], groups=[]): + """Build a sliced ChiDelayed for the specified nuclides and energy + groups. + + This method constructs a new MGXS to encapsulate a subset of the data + represented by this MGXS. The subset of data to include in the tally + slice is determined by the nuclides and energy groups specified in + the input parameters. + + Parameters + ---------- + nuclides : list of str + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is []) + groups : list of Integral + A list of energy group indices starting at 1 for the high energies + (e.g., [1, 2, 3]; default is []) + + Returns + ------- + openmc.mgxs.MGXS + A new MGXS which encapsulates the subset of data requested + for the nuclide(s) and/or energy group(s) requested in the + parameters. + + """ + + # Temporarily remove energy filter from delayed-nu-fission-in since its + # group structure will work in super MGXS.get_slice(...) method + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + energy_filter = delayed_nu_fission_in.find_filter('energy') + delayed_nu_fission_in.remove_filter(energy_filter) + + # Call super class method and null out derived tallies + slice_xs = super(ChiDelayed, self).get_slice(nuclides, groups) + slice_xs._rxn_rate_tally = None + slice_xs._xs_tally = None + + # Slice energy groups if needed + if len(groups) != 0: + filter_bins = [] + for group in groups: + group_bounds = self.energy_groups.get_group_bounds(group) + filter_bins.append(group_bounds) + filter_bins = [tuple(filter_bins)] + + # Slice nu-fission-out tally along energyout filter + delayed_nu_fission_out = slice_xs.tallies['delayed-nu-fission-out'] + tally_slice = delayed_nu_fission_out.get_slice(filters=['energyout'], + filter_bins=filter_bins) + slice_xs._tallies['delayed-nu-fission-out'] = tally_slice + + # Add energy filter back to nu-fission-in tallies + self.tallies['delayed-nu-fission-in'].add_filter(energy_filter) + slice_xs._tallies['delayed-nu-fission-in'].add_filter(energy_filter) + + slice_xs.sparse = self.sparse + return slice_xs + + def merge(self, other): + """Merge another ChiDelayed with this one + + If results have been loaded from a statepoint, then ChiDelayed are only + mergeable along one and only one of energy groups or nuclides. + + Parameters + ---------- + other : openmc.mgxs.MGXS + MGXS to merge with this one + + Returns + ------- + merged_mgxs : openmc.mgxs.MGXS + Merged MGXS + """ + + if not self.can_merge(other): + raise ValueError('Unable to merge ChiDelayed') + + # Create deep copy of tally to return as merged tally + merged_mgxs = copy.deepcopy(self) + merged_mgxs._derived = True + merged_mgxs._rxn_rate_tally = None + merged_mgxs._xs_tally = None + + # Merge energy groups + if self.energy_groups != other.energy_groups: + merged_groups = self.energy_groups.merge(other.energy_groups) + merged_mgxs.energy_groups = merged_groups + + # Merge nuclides + if self.nuclides != other.nuclides: + + # The nuclides must be mutually exclusive + for nuclide in self.nuclides: + if nuclide in other.nuclides: + msg = 'Unable to merge Chi Delayed with shared nuclides' + raise ValueError(msg) + + # Concatenate lists of nuclides for the merged MGXS + merged_mgxs.nuclides = self.nuclides + other.nuclides + + # Merge tallies + for tally_key in self.tallies: + merged_tally = self.tallies[tally_key].merge(other.tallies[tally_key]) + merged_mgxs.tallies[tally_key] = merged_tally + + return merged_mgxs + + def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): + """Prints a string representation for the multi-group cross section. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + The subdomain IDs of the cross sections to include in the report. + Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + The nuclides of the cross-sections to include in the report. This + may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + The special string 'all' will report the cross sections for all + nuclides in the spatial domain. The special string 'sum' will + report the cross sections summed over all nuclides. Defaults to + 'all'. + xs_type: {'macro', 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + + """ + + # Construct a collection of the subdomains to report + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) + else: + subdomains = [self.domain.id] + + # Construct a collection of the nuclides to report + if self.by_nuclide: + if nuclides == 'all': + nuclides = self.get_all_nuclides() + if nuclides == 'sum': + nuclides = ['sum'] + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + # Build header for string with type and domain info + string = 'Multi-Group XS\n' + string += '{0: <16}=\t{1}\n'.format('\tReaction Type', self.rxn_type) + string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) + string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) + + # If cross section data has not been computed, only print string header + if self.tallies is None: + print(string) + return + + string += '{0: <16}\n'.format('\tEnergy Groups:') + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' + + # Loop over energy groups ranges + for group in range(1, self.num_groups + 1): + bounds = self.energy_groups.get_group_bounds(group) + string += template.format('', group, bounds[0], bounds[1]) + + # Loop over all subdomains + for subdomain in subdomains: + + if self.domain_type == 'distribcell': + string += \ + '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) + + # Loop over all Nuclides + for nuclide in nuclides: + + # Build header for nuclide type + if xs_type != 'sum': + string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) + + # Build header for cross section type + if xs_type == 'macro': + string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') + else: + string += '{0: <16}\n'.format('\tCross Sections [barns]:') + + if self.delayed_groups != None: + + for delayed_group in range(1, self.num_delayed_groups+1): + + template = '{0: <12}Delayed Group {1}:\t' + string += template.format('', delayed_group) + string += '\n' + + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' + + # Loop over energy groups ranges + for group in range(1, self.num_groups+1): + bounds = self.energy_groups.get_group_bounds(group) + string += template.format('', group, bounds[0], bounds[1]) + average = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='mean', + delayed_groups=[delayed_group]) + rel_err = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='rel_err', + delayed_groups=[delayed_group]) + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] * 100. + string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) + string += '\n' + string += '\n' + string += '\n' + + else: + + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' + + # Loop over energy groups ranges + for group in range(1, self.num_groups+1): + bounds = self.energy_groups.get_group_bounds(group) + string += template.format('', group, bounds[0], bounds[1]) + average = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='mean') + rel_err = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='rel_err') + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] * 100. + string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) + string += '\n' + string += '\n' + string += '\n' + + + print(string) + + def get_xs(self, groups='all', subdomains='all', nuclides='all', + xs_type='macro', order_groups='increasing', + value='mean', delayed_groups='all', **kwargs): + """Returns an array of the fission spectrum. + + This method constructs a 2D NumPy array for the requested multi-group + cross section data data for one or more energy groups and subdomains. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + delayed_groups : Iterable of Integral or 'all' + Delayed groups of interest. Defaults to 'all'. + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + special string 'all' will return the cross sections for all nuclides + in the spatial domain. The special string 'sum' will return the + cross section summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + This parameter is not relevant for chi but is included here to + mirror the parent MGXS.get_xs(...) class method + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. + value : {'mean', 'std_dev', 'rel_err'} + A string for the type of value to return. Defaults to 'mean'. + + Returns + ------- + numpy.ndarray + A NumPy array of the multi-group cross section indexed in the order + each group, subdomain and nuclide is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + + """ + + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) + for subdomain in subdomains: + filters.append(self.domain_type) + filter_bins.append((subdomain,)) + + # Construct list of energy group bounds tuples for all requested groups + if not isinstance(groups, basestring): + cv.check_iterable_type('groups', groups, Integral) + for group in groups: + filters.append('energyout') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) + + # Construct list of delayed group tuples for all requested groups + if not isinstance(delayed_groups, basestring): + cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + for delayed_group in delayed_groups: + filters.append('delayedgroups') + filter_bins.append((delayed_group,)) + + # If chi delayed was computed for each nuclide in the domain + if self.by_nuclide: + + # Get the sum as the fission source weighted average chi for all + # nuclides in the domain + if nuclides == 'sum' or nuclides == ['sum']: + + # Retrieve the fission production tallies + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + delayed_nu_fission_out = self.tallies['delayed-nu-fission-out'] + + # Sum out all nuclides + nuclides = self.get_all_nuclides() + delayed_nu_fission_in = delayed_nu_fission_in.summation(nuclides=nuclides) + delayed_nu_fission_out = delayed_nu_fission_out.summation(nuclides=nuclides) + + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = delayed_nu_fission_in.find_filter('energy') + delayed_nu_fission_in.remove_filter(energy_filter) + + # Compute chi and store it as the xs_tally attribute so we can + # use the generic get_xs(...) method + xs_tally = delayed_nu_fission_out / delayed_nu_fission_in + + # Add the coarse energy filter back to the nu-fission tally + delayed_nu_fission_in.filters.append(energy_filter) + + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Get chi delayed for all nuclides in the domain + elif nuclides == 'all': + nuclides = self.get_all_nuclides() + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=nuclides, value=value) + + # Get chi delayed for user-specified nuclides in the domain + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=nuclides, value=value) + + # If chi delayed was computed as an average of nuclides in the domain + else: + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Reverse data if user requested increasing energy groups since + # tally data is stored in order of increasing energies + if order_groups == 'increasing': + + # Reshape tally data array with separate axes for domain and energy + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + num_subdomains = int(xs.shape[0] / num_groups) + new_shape = (num_subdomains, num_groups) + xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Reverse energies to align with increasing energy groups + xs = xs[:, ::-1, :] + + # Eliminate trivial dimensions + xs = np.squeeze(xs) + xs = np.atleast_1d(xs) + + xs = np.nan_to_num(xs) + return xs + + +class ChiPrompt(Chi): + """The prompt fission spectrum. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ChiPrompt.energy_groups` and + :attr:`ChiPrompt.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`ChiPrompt.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`ChiPrompt.xs_tally` property. For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the fission spectrum is calculated as: @@ -4805,8 +5366,8 @@ class ChiDelayed(Chi): The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys - are strings listed in the :attr:`Chi.tally_keys` property and values are - instances of :class:`openmc.Tally`. + are strings listed in the :attr:`ChiPrompt.tally_keys` property and + values are instances of :class:`openmc.Tally`. rxn_rate_tally : openmc.Tally Derived tally for the reaction rate tally used in the numerator to compute the multi-group cross section. This attribute is None @@ -4841,21 +5402,32 @@ class ChiDelayed(Chi): def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(ChiDelayed, self).__init__(domain, domain_type, groups, by_nuclide, name) - self._rxn_type = 'chi-delayed' + super(ChiPrompt, self).__init__(domain, domain_type, groups, by_nuclide, name) + self._rxn_type = 'chi-prompt' @property def scores(self): - return ['delayed-nu-fission', 'delayed-nu-fission'] + return ['delayed-nu-fission', 'delayed-nu-fission', + 'nu-fission', 'nu-fission'] + + @property + def filters(self): + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energyout = openmc.Filter('energyout', group_edges) + energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) + return [[energyin], [energyout], [energyin], [energyout]] @property def tally_keys(self): - return ['delayed-nu-fission-in', 'delayed-nu-fission-out'] + return ['delayed-nu-fission-in', 'delayed-nu-fission-out', + 'nu-fission-in', 'nu-fission-out'] @property def rxn_rate_tally(self): if self._rxn_rate_tally is None: - self._rxn_rate_tally = self.tallies['delayed-nu-fission-out'] + self._rxn_rate_tally = self.tallies['nu-fission-out'] - \ + self.tallies['delayed-nu-fission-out'] self._rxn_rate_tally.sparse = self.sparse return self._rxn_rate_tally @@ -4863,23 +5435,26 @@ class ChiDelayed(Chi): def xs_tally(self): if self._xs_tally is None: - nu_fission_in = self.tallies['delayed-nu-fission-in'] + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + nu_fission_in = self.tallies['nu-fission-in'] + prompt_nu_fission_in = nu_fission_in - delayed_nu_fission_in # Remove coarse energy filter to keep it out of tally arithmetic - energy_filter = nu_fission_in.find_filter('energy') - nu_fission_in.remove_filter(energy_filter) + energy_filter = prompt_nu_fission_in.find_filter('energy') + prompt_nu_fission_in.remove_filter(energy_filter) # Compute chi - self._xs_tally = self.rxn_rate_tally / nu_fission_in - super(ChiDelayed, self)._compute_xs() + self._xs_tally = self.rxn_rate_tally / prompt_nu_fission_in + super(ChiPrompt, self)._compute_xs() # Add the coarse energy filter back to the nu-fission tally - nu_fission_in.filters.append(energy_filter) + prompt_nu_fission_in.filters.append(energy_filter) return self._xs_tally def get_slice(self, nuclides=[], groups=[]): - """Build a sliced Chi for the specified nuclides and energy groups. + """Build a sliced ChiDelayed for the specified nuclides and energy + groups. This method constructs a new MGXS to encapsulate a subset of the data represented by this MGXS. The subset of data to include in the tally @@ -4904,14 +5479,16 @@ class ChiDelayed(Chi): """ - # Temporarily remove energy filter from nu-fission-in since its + # Temporarily remove energy filter from delayed-nu-fission-in since its # group structure will work in super MGXS.get_slice(...) method - nu_fission_in = self.tallies['delayed-nu-fission-in'] - energy_filter = nu_fission_in.find_filter('energy') - nu_fission_in.remove_filter(energy_filter) + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + nu_fission_in = self.tallies['nu-fission-in'] + prompt_nu_fission_in = nu_fission_in - delayed_nu_fission_in + energy_filter = prompt_nu_fission_in.find_filter('energy') + prompt_nu_fission_in.remove_filter(energy_filter) # Call super class method and null out derived tallies - slice_xs = super(Chi, self).get_slice(nuclides, groups) + slice_xs = super(ChiPrompt, self).get_slice(nuclides, groups) slice_xs._rxn_rate_tally = None slice_xs._xs_tally = None @@ -4924,22 +5501,22 @@ class ChiDelayed(Chi): filter_bins = [tuple(filter_bins)] # Slice nu-fission-out tally along energyout filter - nu_fission_out = slice_xs.tallies['delayed-nu-fission-out'] - tally_slice = nu_fission_out.get_slice(filters=['energyout'], - filter_bins=filter_bins) - slice_xs._tallies['delayed-nu-fission-out'] = tally_slice + prompt_nu_fission_out = slice_xs.tallies['nu-fission-out'] - \ + slice_xs.tallies['delayed-nu-fission-out'] + tally_slice = prompt_nu_fission_out.get_slice(filters=['energyout'], + filter_bins=filter_bins) + slice_xs._tallies['prompt-nu-fission-out'] = tally_slice # Add energy filter back to nu-fission-in tallies - self.tallies['delayed-nu-fission-in'].add_filter(energy_filter) - slice_xs._tallies['delayed-nu-fission-in'].add_filter(energy_filter) + slice_xs._tallies['prompt-nu-fission-in'].add_filter(energy_filter) slice_xs.sparse = self.sparse return slice_xs def merge(self, other): - """Merge another Chi with this one + """Merge another ChiPrompt with this one - If results have been loaded from a statepoint, then Chi are only + If results have been loaded from a statepoint, then ChiPrompt are only mergeable along one and only one of energy groups or nuclides. Parameters @@ -4954,7 +5531,7 @@ class ChiDelayed(Chi): """ if not self.can_merge(other): - raise ValueError('Unable to merge ChiDelayed') + raise ValueError('Unable to merge ChiPrompt') # Create deep copy of tally to return as merged tally merged_mgxs = copy.deepcopy(self) @@ -4973,7 +5550,7 @@ class ChiDelayed(Chi): # The nuclides must be mutually exclusive for nuclide in self.nuclides: if nuclide in other.nuclides: - msg = 'Unable to merge Chi Delayed with shared nuclides' + msg = 'Unable to merge Chi Prompt with shared nuclides' raise ValueError(msg) # Concatenate lists of nuclides for the merged MGXS @@ -5037,13 +5614,10 @@ class ChiDelayed(Chi): # Construct a collection of the domain filter bins if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=2) + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) for subdomain in subdomains: filters.append(self.domain_type) - if self.domain_type == 'mesh': - filter_bins.append(subdomain) - else: - filter_bins.append((subdomain,)) + filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups if not isinstance(groups, basestring): @@ -5052,7 +5626,7 @@ class ChiDelayed(Chi): filters.append('energyout') filter_bins.append((self.energy_groups.get_group_bounds(group),)) - # If chi was computed for each nuclide in the domain + # If chi delayed was computed for each nuclide in the domain if self.by_nuclide: # Get the sum as the fission source weighted average chi for all @@ -5060,43 +5634,45 @@ class ChiDelayed(Chi): if nuclides == 'sum' or nuclides == ['sum']: # Retrieve the fission production tallies - nu_fission_in = self.tallies['delayed-nu-fission-in'] - nu_fission_out = self.tallies['delayed-nu-fission-out'] + prompt_nu_fission_in = self.tallies['nu-fission-in'] - \ + self.tallies['delayed-nu-fission-in'] + prompt_nu_fission_out = self.tallies['nu-fission-out'] - \ + self.tallies['delayed-nu-fission-out'] # Sum out all nuclides nuclides = self.get_all_nuclides() - nu_fission_in = nu_fission_in.summation(nuclides=nuclides) - nu_fission_out = nu_fission_out.summation(nuclides=nuclides) + prompt_nu_fission_in = prompt_nu_fission_in.summation(nuclides=nuclides) + prompt_nu_fission_out = prompt_nu_fission_out.summation(nuclides=nuclides) # Remove coarse energy filter to keep it out of tally arithmetic - energy_filter = nu_fission_in.find_filter('energy') - nu_fission_in.remove_filter(energy_filter) + energy_filter = prompt_nu_fission_in.find_filter('energy') + prompt_nu_fission_in.remove_filter(energy_filter) # Compute chi and store it as the xs_tally attribute so we can # use the generic get_xs(...) method - xs_tally = nu_fission_out / nu_fission_in + xs_tally = prompt_nu_fission_out / prompt_nu_fission_in # Add the coarse energy filter back to the nu-fission tally - nu_fission_in.filters.append(energy_filter) + prompt_nu_fission_in.filters.append(energy_filter) xs = xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) - # Get chi for all nuclides in the domain + # Get chi delayed for all nuclides in the domain elif nuclides == 'all': nuclides = self.get_all_nuclides() xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, nuclides=nuclides, value=value) - # Get chi for user-specified nuclides in the domain + # Get chi prompt for user-specified nuclides in the domain else: cv.check_iterable_type('nuclides', nuclides, basestring) xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, nuclides=nuclides, value=value) - # If chi was computed as an average of nuclides in the domain + # If chi prompt was computed as an average of nuclides in the domain else: xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) @@ -5123,3 +5699,117 @@ class ChiDelayed(Chi): xs = np.nan_to_num(xs) return xs + + +class InverseVelocity(MGXS): + """An inverse velocity multi-group cross section. + + Absorption is defined as all reactions that do not produce secondary + neutrons (disappearance) plus fission reactions. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group absorption cross sections for multi-group neutronics + calculations. At a minimum, one needs to set the + :attr:`AbsorptionXS.energy_groups` and :attr:`AbsorptionXS.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`AbsorptionXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`AbsorptionXS.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + absorption cross section is calculated as: + + .. math:: + + \frac{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \sigma_a (r, E) \psi (r, E, \Omega)}{\int_{r \in V} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`AbsorptionXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file) and the number of mesh cells for + 'mesh' domain types. + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, + groups=None, by_nuclide=False, name=''): + super(InverseVelocity, self).__init__(domain, domain_type, + groups, by_nuclide, name) + self._rxn_type = 'inverse-velocity' From 0677e35635329f96f157160e0f760473e6d4cb91 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Mon, 4 Jul 2016 15:33:57 -0400 Subject: [PATCH 03/49] implemented MDGXS abstract class for multi-delayed-group cross sections --- openmc/checkvalue.py | 2 +- openmc/kinetics/__init__.py | 2 + openmc/kinetics/clock.py | 117 +++ openmc/kinetics/solver.py | 638 ++++++++++++++++ openmc/mgxs/__init__.py | 3 +- openmc/mgxs/groups.py | 130 ++++ openmc/mgxs/mdgxs.py | 1432 +++++++++++++++++++++++++++++++++++ openmc/mgxs/mgxs.py | 853 +++++++-------------- 8 files changed, 2580 insertions(+), 597 deletions(-) create mode 100644 openmc/kinetics/__init__.py create mode 100644 openmc/kinetics/clock.py create mode 100644 openmc/kinetics/solver.py create mode 100644 openmc/mgxs/mdgxs.py diff --git a/openmc/checkvalue.py b/openmc/checkvalue.py index cc0e1190df..6bb2be31b5 100644 --- a/openmc/checkvalue.py +++ b/openmc/checkvalue.py @@ -213,7 +213,7 @@ def check_less_than(name, value, maximum, equality=False): raise ValueError(msg) def check_greater_than(name, value, minimum, equality=False): - """Ensure that an object's value is less than a given value. + """Ensure that an object's value is greater than a given value. Parameters ---------- diff --git a/openmc/kinetics/__init__.py b/openmc/kinetics/__init__.py new file mode 100644 index 0000000000..0ccd7e882f --- /dev/null +++ b/openmc/kinetics/__init__.py @@ -0,0 +1,2 @@ +from openmc.kinetics.clock import * +from openmc.kinetics.solver import * diff --git a/openmc/kinetics/clock.py b/openmc/kinetics/clock.py new file mode 100644 index 0000000000..9df266e1d7 --- /dev/null +++ b/openmc/kinetics/clock.py @@ -0,0 +1,117 @@ + +import copy +import numpy as np + +TIME_POINTS = ['START', + 'PREVIOUS_OUT', + 'PREVIOUS_IN', + 'CURRENT', + 'FORWARD_IN', + 'FORWARD_OUT', + 'END'] + +class Clock(object): + + def __init__(self, start=0., end=3., dt_outer=1.e-1, dt_inner=1.e-2): + + # Initialize coordinates + self.dt_outer = dt_outer + self.dt_inner = dt_inner + + # Create a dictionary of clock times + self._times = {} + for t in TIME_POINTS: + self._times[t] = start + + # Reset the end time + self._times['END'] = end + + + def __deepcopy__(self, memo): + + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + + clone = type(self).__new__(type(self)) + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + def __repr__(self): + + string = 'Clock\n' + string += '{0: <24}{1}{2}\n'.format('\tdt inner', '=\t', self.dt_inner) + string += '{0: <24}{1}{2}\n'.format('\tdt outer', '=\t', self.dt_outer) + + for t in TIME_POINTS: + string += '{0: <24}{1}{2}\n'.format('\tTime ' + t, '=\t', self.times[t]) + + return string + + @property + def dt_inner(self): + return self._dt_inner + + @property + def dt_outer(self): + return self._dt_outer + + @property + def times(self): + return self._times + + @dt_inner.setter + def dt_inner(self, dt_inner): + self._dt_inner = np.float64(dt_inner) + + @dt_outer.setter + def dt_outer(self, dt_outer): + self._dt_outer = np.float64(dt_outer) + + @times.setter + def times(self, times): + self._times = np.float64(times) + + def take_outer_step(self): + """Take an outer time step and reset all the inner time step values + to the starting point for the outer time step. + + """ + + self.times['PREVIOUS_OUT'] = self.times['FORWARD_OUT'] + self.times['PREVIOUS_IN'] = self.times['FORWARD_OUT'] + self.times['FORWARD_IN'] = self.times['FORWARD_OUT'] + self.times['CURRENT'] = self.times['FORWARD_OUT'] + + if (self.times['END'] > self.times['FORWARD_OUT'] + self.dt_outer): + self.times['FORWARD_OUT'] = self.times['END'] + else: + self.times['FORWARD_OUT'] = self.times['FORWARD_OUT'] + self.dt_outer + + def take_inner_step(self): + """Take an inner time step. + + """ + self.times['PREVIOUS_IN'] = self.times['FORWARD_IN'] + self.times['CURRENT'] = self.times['FORWARD_IN'] + + if (self.times['FORWARD_OUT'] > self.times['FORWARD_IN'] + self.dt_inner): + self.times['FORWARD_IN'] = self.times['FORWARD_OUT'] + else: + self.times['FORWARD_IN'] = self.times['FORWARD_IN'] + self.dt_inner + + def reset_to_previous_outer(self): + """Reset the time values to the previous outer time. + + """ + + self.times['PREVIOUS_IN'] = self.times['PREVIOUS_IN'] + self.times['FORWARD_IN'] = self.times['PREVIOUS_IN'] + self.times['CURRENT'] = self.times['PREVIOUS_IN'] diff --git a/openmc/kinetics/solver.py b/openmc/kinetics/solver.py new file mode 100644 index 0000000000..a71907a1d3 --- /dev/null +++ b/openmc/kinetics/solver.py @@ -0,0 +1,638 @@ +from collections import OrderedDict +from xml.etree import ElementTree as ET + +import openmc +import openmc.kinetics +from openmc.clean_xml import * +from openmc.checkvalue import check_type +from openmc.kinetics.clock import TIME_POINTS +import numpy as np + + +class Solver(object): + """Solver to propagate the neutron flux and power forward in time. + + Attributes + ---------- + mesh : openmc.mesh.Mesh + Mesh which specifies the dimensions of coarse mesh. + + geometry : openmc.geometry.Geometry + Geometry which describes the problem being solved. + + settings_file : openmc.settings.SettingsFile + Settings file describing the general settings for each simulation. + + materials_file : openmc.materials.MaterialsFile + Materials file containing the materials info for each simulation. + + executor : openmc.executor.Executor + Executor object for executing OpenMC simulation. + + clock : openmc.kinetics.Clock + Clock object. + + energy_groups : openmc.mgxs.groups.EnergyGroups + EnergyGroups which specifies the energy groups structure. + + A : np.matrix + Numpy matrix used for storing the destruction terms. + + M : np.matrix + Numpy matrix used for storing the production terms. + + AM : np.matrix + Numpy matrix used for storing the combined production/destruction terms. + + flux : np.array + Numpy array used to store the flux. + + amplitude : np.array + Numpy array used to store the amplitude. + + shape : np.array + Numpy array used to store the shape. + + source : np.array + Numpy array used to store the source. + + power : np.array + Numpy array used to store the power. + + precursor_conc : np.array + Numpy array used to store the precursor concentrations. + + sigma_a : OrderedDict of openmc.MGXS.AbsorptionXS + MGXS absorption multigroup cross-sections. + + nu_sigma_f : OrderedDict of openmc.MGXS.NuFissionXS + MGXS nu-fission multigroup cross-sections. + + kappa_sigma_f : OrderedDict of openmc.MGXS.NuFissionXS + MGXS nu-fission multigroup cross-sections. + + dif_coef : OrderedDict of openmc.MGXS.DiffusionCoefficientXS + MGXS multigroup diffusion coefficients. + + beta : OrderedDict of openmc.MGXS.delayed.Beta + MGXS multigroup delayed neutron fractions. + + chi_prompt : OrderedDict of openmc.MGXS.delayed.ChiPrompt + MGXS multigroup prompt neutron spectrums. + + chi_delayed : OrderedDict of openmc.MGXS.delayed.ChiDelayed + MGXS multigroup delayed neutron spectrums. + + velocity : OrderedDict of openmc.MGXS.Velocity + MGXS multigroup velocities. + + nu_sigma_s : OrderedDict of openmc.MGXS.NuScatterMatrixXS + MGXS multigroup nu-scatter matrix. + + flux_xs : OrderedDict openmc.MGXS.Flux + MGXS multigroup flux. + + k_eff_0 : float + The initial eigenvalue. + + Methods + ------- + - initialize_xs() + take_outer_step() + take_inner_step() + solve() + - extract_xs() + 2 normalize_flux() + broadcast_to_all() + broadcast_to_one() + - compute_shape() + integrate_precursor_conc() + 3 compute_initial_precursor_conc() + 1 compute_power() + construct_A() + construct_M() + construct_AM() + interpolate_xs() + + To Do + ----- + 1) Create getters and setters for all attributes + 2) Create method to generate initialize xs + 3) Create method to compute flux + 4) Create method to compute initial precursor concentrations + 5) Create method to compute the initial power + + """ + + def __init__(self): + + # Initialize Solver class attributes + self._mesh = None + self._geometry = None + self._settings_file = None + self._materials_file = None + self._executor = openmc.Executor() + self._statepoint = None + self._summary = None + self._clock = None + self._energy_groups = None + self._A = None + self._M = None + self._AM = None + self._flux = None + self._amplitude = None + self._shape = None + self._source = None + self._power = None + self._precursor_conc = None + self._sigma_a = None + self._nu_sigma_f = None + self._kappa_sigma_f = None + self._dif_coef = None + self._beta = None + self._chi_prompt = None + self._chi_delayed = None + self._velocity = None + self._nu_sigma_s = None + self._flux_xs = None + self._decay_constants = None + self._k_eff_0 = None + + @property + def mesh(self): + return self._mesh + + @property + def geometry(self): + return self._geometry + + @property + def settings_file(self): + return self._settings_file + + @property + def materials_file(self): + return self._materials_file + + @property + def executor(self): + return self._executor + + @property + def statepoint(self): + return self._statepoint + + @property + def summary(self): + return self._summary + + @property + def clock(self): + return self._clock + + @property + def energy_groups(self): + return self._energy_groups + + @property + def A(self): + return self._A + + @property + def M(self): + return self._M + + @property + def AM(self): + return self._AM + + @property + def flux(self): + return self._flux + + @property + def amplitude(self): + return self._amplitude + + @property + def shape(self): + return self._shape + + @property + def source(self): + return self._source + + @property + def power(self): + return self._power + + @property + def precursor_conc(self): + return self._precursor_conc + + @property + def sigma_a(self): + return self._sigma_a + + @property + def nu_sigma_f(self): + return self._nu_sigma_f + + @property + def kappa_sigma_f(self): + return self._kappa_sigma_f + + @property + def dif_coef(self): + return self._dif_coef + + @property + def beta(self): + return self._beta + + @property + def chi_prompt(self): + return self._chi_prompt + + @property + def chi_delayed(self): + return self._chi_delayed + + @property + def velocity(self): + return self._velocity + + @property + def nu_sigma_s(self): + return self._nu_sigma_s + + @property + def flux_xs(self): + return self._flux_xs + + @property + def decay_constants(self): + return self._decay_constants + + @property + def k_eff_0(self): + return self._k_eff_0 + + @mesh.setter + def mesh(self, mesh): + self._mesh = mesh + + @geometry.setter + def geometry(self, geometry): + self._geometry = geometry + + @settings_file.setter + def settings_file(self, settings_file): + self._settings_file = settings_file + + @materials_file.setter + def materials_file(self, materials_file): + self._materials_file = materials_file + + @executor.setter + def executor(self, exectuor): + self._executor = executor + + @statepoint.setter + def statepoint(self, statepoint): + self._statepoint = statepoint + + @summary.setter + def summary(self, summary): + self._summary = summary + + @clock.setter + def clock(self, clock): + self._clock = clock + + @energy_groups.setter + def energy_groups(self, energy_groups): + self._energy_groups = energy_groups + + # Initialize the arrays + ng = energy_groups.num_groups + self._flux = np.zeros(ng) + self._amplitude = np.zeros(ng) + self._shape = np.zeros(ng) + self._source = np.zeros(ng) + self._power = np.zeros(ng) + + @A.setter + def A(self): + self._A = A + + @M.setter + def M(self, M): + self._M = M + + @AM.setter + def AM(self, AM): + self._AM = AM + + @flux.setter + def flux(self, flux): + self._flux = flux + + @amplitude.setter + def amplitude(self, amplitude): + self._amplitude = amplitude + + @shape.setter + def shape(self, shape): + self._shape = shape + + @source.setter + def source(self, source): + self._source = source + + @power.setter + def power(self, power): + self._power = power + + @precursor_conc.setter + def precursor_conc(self, precursor_conc): + self._precursor_conc = precursor_conc + + @sigma_a.setter + def sigma_a(self, sigma_a): + self._sigma_a = sigma_a + + @nu_sigma_f.setter + def nu_sigma_f(self, nu_sigma_f): + self._nu_sigma_f = nu_sigma_f + + @kappa_sigma_f.setter + def kappa_sigma_f(self, kappa_sigma_f): + self._kappa_sigma_f = kappa_sigma_f + + @dif_coef.setter + def dif_coef(self, dif_coef): + self._dif_coef = dif_coef + + @beta.setter + def beta(self, beta): + self._beta = beta + + @chi_prompt.setter + def chi_prompt(self, chi_prompt): + self._chi_prompt = chi_prompt + + @chi_delayed.setter + def chi_delayed(self, chi_delayed): + self._chi_delayed + + @velocity.setter + def velocity(self, velocity): + self._velocity = velocity + + @nu_sigma_s.setter + def nu_sigma_s(self, nu_sigma_s): + self._nu_sigma_s = nu_sigma_s + + @flux_xs.setter + def flux_xs(self, flux_xs): + self._flux_xs = flux_xs + + @decay_constants.setter + def decay_constants(self, decay_constants): + self._decay_constants = decay_constants + + @k_eff_0.setter + def k_eff_0(self, k_eff_0): + self._k_eff_0 = k_eff_0 + + def initialize_xs(self): + """Initialize all the tallies for the problem. + + """ + + self._sigma_a = {} + self._nu_sigma_f = {} + self._kappa_sigma_f = {} + self._dif_coef = {} + self._beta = {} + self._chi_prompt = {} + self._chi_delayed = {} + self._velocity = {} + self._nu_sigma_s = {} + self._flux_xs = {} + self._precursor_conc = {} + + self._decay_constants = openmc.Tally(name='decay constants') + self._decay_constants._derived = True + self._decay_constants.num_score_bins = 1 + self._decay_constants.add_score('None') + self._decay_constants._mean = np.array([0.012467, 0.028292, 0.042524,\ + 0.133042, 0.292467, 0.666488,\ + 1.634781, 3.554600]) + self._decay_constants._mean = np.reshape(self._decay_constants._mean, (8,1,1)) + self._decay_constants._std_dev = np.array([0 for i in range(8)]) + self._decay_constants._std_dev = np.reshape(self._decay_constants._std_dev, (8,1,1)) + self._decay_constants.estimator = 'analog' + self._decay_constants.add_filter(openmc.Filter('delayedgroup', range(1,9))) + self._decay_constants._nuclides = ['total'] + + # FIXME: replace domain with mesh + # Get the cell in the geometry + cells = self.geometry.root_universe.get_all_cells() + cell = cells.values()[0] + + global TIME_POINTS + for t in TIME_POINTS: + print 'computing tallies for time: ' + t + self._sigma_a[t] = openmc.mgxs.AbsorptionXS(name='sigma a', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._nu_sigma_f[t] = openmc.mgxs.NuFissionXS(name='nu sigma f', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._kappa_sigma_f[t] = openmc.mgxs.KappaFissionXS(name='kappa fission', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._dif_coef[t] = openmc.mgxs.DiffusionCoefficient(name='dif coef', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._beta[t] = openmc.mgxs.Beta(name='beta', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._chi_prompt[t] = openmc.mgxs.ChiPrompt(name='chi prompt', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._chi_delayed[t] = openmc.mgxs.ChiDelayed(name='chi delayed', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._velocity[t] = openmc.mgxs.Velocity(name='velocity', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._nu_sigma_s[t] = openmc.mgxs.NuScatterMatrixXS(name='nu scatter', + domain=cell, domain_type='cell', groups=self.energy_groups) + self._flux_xs[t] = openmc.mgxs.Flux(name='flux', + domain=cell, domain_type='cell', groups=self.energy_groups) + + + def generate_tallies_file(self, time): + """Initialize the tallies file. + + """ + + tallies_file = openmc.TalliesFile() + + # Add absorption tallies to the tallies file + for tally in self._sigma_a[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add nu-sigma-f tallies to the tallies file + for tally in self._nu_sigma_f[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add kappa-sigma-f tallies to the tallies file + for tally in self._kappa_sigma_f[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add dif-coef tallies to the tallies file + for tally in self._dif_coef[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add beta tallies to the tallies file + for tally in self._beta[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add chi prompt tallies to the tallies file + for tally in self._chi_prompt[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add chi delayed tallies to the tallies file + for tally in self._chi_delayed[time].tallies.values(): + tallies_file.add_tally(tally, merge=False) + + # Add velocity tallies to the tallies file + for tally in self._velocity[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add nu-sigma-s tallies to the tallies file + for tally in self._nu_sigma_s[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Add flux tallies to the tallies file + for tally in self._flux_xs[time].tallies.values(): + tallies_file.add_tally(tally, merge=True) + + # Export to "tallies.xml" + tallies_file.export_to_xml() + + def extract_xs(self, time): + + filename = 'statepoint.' + str(self.settings_file.batches) + '.h5' + self.statepoint = openmc.StatePoint(filename) + self.summary = openmc.Summary('summary.h5') + self.statepoint.link_with_summary(self.summary) + + # load xs from statepoint + self._sigma_a[time].load_from_statepoint(self.statepoint) + self._nu_sigma_f[time].load_from_statepoint(self.statepoint) + self._kappa_sigma_f[time].load_from_statepoint(self.statepoint) + self._dif_coef[time].load_from_statepoint(self.statepoint) + self._beta[time].load_from_statepoint(self.statepoint) + self._chi_prompt[time].load_from_statepoint(self.statepoint) + self._chi_delayed[time].load_from_statepoint(self.statepoint) + self._velocity[time].load_from_statepoint(self.statepoint) + self._nu_sigma_s[time].load_from_statepoint(self.statepoint) + self._flux_xs[time].load_from_statepoint(self.statepoint) + self.k_eff_0 = self.statepoint.k_combined[0] + + # compute the xs + self._sigma_a[time].compute_xs() + self._nu_sigma_f[time].compute_xs() + self._kappa_sigma_f[time].compute_xs() + self._dif_coef[time].compute_xs() + self._beta[time].compute_xs() + self._chi_prompt[time].compute_xs() + self._chi_delayed[time].compute_xs() + self._velocity[time].compute_xs() + self._nu_sigma_s[time].compute_xs() + self._flux_xs[time].compute_xs() + + # extract the flux + #for g in range(self._energy_groups.num_groups): + # self._flux[g] = self._flux_xs[time].xs_tally.mean[g][0][0] + + def print_xs(self, time): + + # print the xs + self._sigma_a[time].print_xs() + self._nu_sigma_f[time].print_xs() + self._kappa_sigma_f[time].print_xs() + self._dif_coef[time].print_xs() + self._beta[time].print_xs() + self._chi_prompt[time].print_xs() + self._chi_delayed[time].print_xs() + self._velocity[time].print_xs() + self._nu_sigma_s[time].print_xs() + self._flux_xs[time].print_xs() + + def compute_shape(self, time): + + geometry_file = openmc.GeometryFile() + geometry_file.geometry = self.geometry + + # Create the xml files + self._materials_file.export_to_xml() + geometry_file.export_to_xml() + self._settings_file.export_to_xml() + self.generate_tallies_file(time) + + # Run OpenMC + self.executor.run_simulation(mpi_procs=4) + + def compute_power(self, time): + + self.power = self._kappa_sigma_f[time].xs_tally * \ + self._flux_xs[time].xs_tally + + def compute_initial_precursor_conc(self, time): + + self.precursor_conc[time] = self.nu_sigma_f[time].xs_tally \ + * self.flux_xs[time].xs_tally + self.precursor_conc[time] = self.precursor_conc[time].\ + summation(filter_type='energy', remove_filter=True) + beta = self.beta[time].xs_tally.\ + summation(filter_type='energy', remove_filter=True) + self.precursor_conc[time] = beta \ + * self.precursor_conc[time] + + self.precursor_conc[time] = self.precursor_conc[time] / self.k_eff_0 + + print self.precursor_conc[time] + print self._decay_constants + + self.precursor_conc[time] = self.precursor_conc[time] / self._decay_constants + print self.precursor_conc[time] + + + def compute_forward_flux(self, time, time_next): + + dt_v = self.clock.dt_outer * self.velocity + + fission_rate = self.nu_sigma_f[time].xs_tally \ + * self.flux_xs[time].xs_tally + + fission_rate = fission_rate.summation(filter_type='energy', remove_filter=True) + + self.flux_xs[time_next] = [self.flux_xs[time] + (1 - self.beta) \ + / self.k_eff_0 * fission_rate + \ + + self.precursor_conc[time] = self.nu_sigma_f[time].xs_tally \ + * self.flux_xs[time].xs_tally + self.precursor_conc[time] = self.precursor_conc[time].\ + summation(filter_type='energy', remove_filter=True) + beta = self.beta[time].xs_tally.\ + summation(filter_type='energy', remove_filter=True) + self.precursor_conc[time] = beta \ + * self.precursor_conc[time] + + self.precursor_conc[time] = self.precursor_conc[time] / self.k_eff_0 + + print self.precursor_conc[time] + print self._decay_constants + + inv_decay_constants = 1.0 / self._decay_constants + inv_decay_constants.name = 'inverse decay constants' + self.precursor_conc[time] = inv_decay_constants * self.precursor_conc[time] + print self.precursor_conc[time] diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py index 4fcf8b6aed..b41deac843 100644 --- a/openmc/mgxs/__init__.py +++ b/openmc/mgxs/__init__.py @@ -1,3 +1,4 @@ -from openmc.mgxs.groups import EnergyGroups +from openmc.mgxs.groups import EnergyGroups, DelayedGroups from openmc.mgxs.library import Library from openmc.mgxs.mgxs import * +from openmc.mgxs.mdgxs import * diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 068977d888..1b17cf7a84 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -11,6 +11,10 @@ import openmc.checkvalue as cv if sys.version_info[0] >= 3: basestring = str +# Maximum number of delayed groups +# TODO: Get value from OpenMC +MAX_DELAYED_GROUPS = 8 + class EnergyGroups(object): """An energy groups structure used for multi-group cross-sections. @@ -299,3 +303,129 @@ class EnergyGroups(object): # Assign merged edges to merged groups merged_groups.group_edges = list(merged_edges) return merged_groups + + +class DelayedGroups(object): + """A delayed groups structure used for multi-delayed-group parameters. + + Parameters + ---------- + groups : Iterable of Int + The delayed groups + + Attributes + ---------- + groups : Iterable of Int + The delayed groups + num_groups : int + The number of delayed groups + + """ + + def __init__(self, groups=None): + self._groups = None + + if groups is not None: + self.groups = groups + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy object, create copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._groups = copy.deepcopy(self.groups, memo) + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + def __eq__(self, other): + if not isinstance(other, DelayedGroups): + return False + elif self.num_groups != other.num_groups: + return False + elif np.allclose(self.groups, other.groups): + return True + else: + return False + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return hash(tuple(self.groups)) + + @property + def groups(self): + return self._groups + + @property + def num_groups(self): + return len(self.groups) + + @groups.setter + def groups(self, groups): + cv.check_type('groups', groups, Iterable, Int) + cv.check_greater_than('number of delayed groups', len(groups), 0) + + # Check that the groups are within [1, MAX_DELAYED_GROUPS] + for group in groups: + cv.check_greater_than('delayed group', group, 0) + cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS + 1) + + self._groups = np.array(groups, dtype=int) + + def can_merge(self, other): + """Determine if delayed groups can be merged with another. + + Parameters + ---------- + other : openmc.mgxs.DelayedGroups + DelayedGroups to compare with + + Returns + ------- + bool + Whether the delayed groups can be merged + + """ + + if not isinstance(other, DelayedGroups): + return False + else: + return True + + def merge(self, other): + """Merge this delayed groups with another. + + Parameters + ---------- + other : openmc.mgxs.DelayedGroups + DelayedGroups to merge with + + Returns + ------- + merged_groups : openmc.mgxs.DelayedGroups + DelayedGroups resulting from the merge + + """ + + if not self.can_merge(other): + raise ValueError('Unable to merge delayed groups') + + # Create deep copy to return as merged delayed groups + merged_groups = copy.deepcopy(self) + + # Merge unique filter bins + groups = np.concatenate((self.groups, other.groups)) + groups = np.unique(groups) + groups = sorted(groups) + + # Assign groups to merged groups + merged_groups.groups = list(groups) + return merged_groups diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py new file mode 100644 index 0000000000..202950ec32 --- /dev/null +++ b/openmc/mgxs/mdgxs.py @@ -0,0 +1,1432 @@ +from __future__ import division + +from collections import Iterable, OrderedDict +from numbers import Integral +import warnings +import os +import sys +import copy +import abc + +import numpy as np + +from mgxs import MGXS, MGXS_TYPES, DOMAIN_TYPES, _DOMAINS +from openmc.mgxs import EnergyGroups, DelayedGroups +from openmc import Mesh + +# Supported cross section types +MDGXS_TYPES = ['delayed-nu-fission', + 'chi-delayed', + 'beta'] + +class MDGXS(MGXS): + """An abstract multi-delayed-group cross section for some energy and delayed + group structures within some spatial domain. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group and multi-delayed-group cross sections for downstream + neutronics calculations. + + NOTE: Users should instantiate the subclasses of this abstract class. + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'chi-delayed', 'beta', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell', and 'universe' + domain types. This is equal to the number of cell instances for + 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file) and the number of mesh cells for + 'mesh' domain types. + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MDGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MDGXS is merged from one or more other MDGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + # This is an abstract class which cannot be instantiated + __metaclass__ = abc.ABCMeta + + def __init__(self, domain=None, domain_type=None, energy_groups=None, + by_nuclide=False, name='', delayed_groups=None): + super(MDGXS, self).__init__(domain, domain_type, energy_groups, + by_nuclide, name) + self._delayed_groups = None + + if delayed_groups is not None: + self.delayed_groups = delayed_groups + + def __deepcopy__(self, memo): + super(MDGXS, self).__deepcopy__(memo) + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, copy it + if existing is None: + clone._delayed_groups = copy.deepcopy(self.delayed_groups, memo) + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + @property + def delayed_groups(self): + return self._delayed_groups + + @property + def num_delayed_groups(self): + return self.delayed_groups.num_groups + + @delayed_groups.setter + def delayed_groups(self, delayed_groups): + cv.check_type('delayed groups', delayed_groups, openmc.mgxs.DelayedGroups) + self._delayed_groups = delayed_groups + + @property + def filters(self): + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + if self.delayed_groups != None: + delayed_groups = self.delayed_groups.groups + delayed_filter = openmc.Filter('delayedgroup', delayed_groups) + return [[delayed_filter, energy_filter]] * len(self.scores) + else: + return [[energy]] * len(self.scores) + + @staticmethod + def get_mgxs(mdgxs_type, domain=None, domain_type=None, + energy_groups=None, by_nuclide=False, name='', + delayed_groups=None): + """Return a MDGXS subclass object for some energy group structure within + some spatial domain for some reaction type. + + This is a factory method which can be used to quickly create MDGXS + subclass objects for various reaction types. + + Parameters + ---------- + mdgxs_type : {'delayed-nu-fission', 'chi-prompt', 'chi-delayed', + 'beta'} + The type of multi-delayed-group cross section object to return + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain. + Defaults to False + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. Defaults to the empty string. + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + + Returns + ------- + openmc.mgxs.MDGXS + A subclass of the abstract MDGXS class for the multi-delayed-group + cross section type requested by the user + + """ + + cv.check_value('mdgxs_type', mdgxs_type, MDGXS_TYPES) + + if mdgxs_type == 'delayed-nu-fission': + mdgxs = DelayedNuFission(domain, domain_type, energy_groups) + elif mdgxs_type == 'chi-delayed': + mdgxs = ChiDelayed(domain, domain_type, energy_groups) + elif mdgxs_type == 'beta': + mdgxs = Beta(domain, domain_type, energy_groups) + + mdgxs.by_nuclide = by_nuclide + mdgxs.name = name + mdgxs.delayed_groups = delayed_groups + return mdgxs + + def get_xs(self, groups='all', subdomains='all', nuclides='all', + xs_type='macro', order_groups='increasing', + value='mean', delayed_groups='all', **kwargs): + """Returns an array of multi-delayed-group cross sections. + + This method constructs a 2D NumPy array for the requested + multi-delayed-group cross section data data for one or more energy + groups, delayed groups, and subdomains. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + special string 'all' will return the cross sections for all nuclides + in the spatial domain. The special string 'sum' will return the + cross section summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. + value : {'mean', 'std_dev', 'rel_err'} + A string for the type of value to return. Defaults to 'mean'. + delayed_groups : Iterable of Integral or 'all' + Delayed groups of interest. Defaults to 'all'. + + Returns + ------- + numpy.ndarray + A NumPy array of the multi-group cross section indexed in the order + each group, subdomain and nuclide is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the multi-delayed-group cross + section is computed from tally data. + + """ + + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) + for subdomain in subdomains: + filters.append(self.domain_type) + filter_bins.append((subdomain,)) + + # Construct list of energy group bounds tuples for all requested groups + if not isinstance(groups, basestring): + cv.check_iterable_type('groups', groups, Integral) + for group in groups: + filters.append('energy') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) + + # Construct list of delayed group tuples for all requested groups + if not isinstance(delayed_groups, basestring): + cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + for delayed_group in delayed_groups: + filters.append('delayedgroups') + filter_bins.append((delayed_group,)) + + # Construct a collection of the nuclides to retrieve from the xs tally + if self.by_nuclide: + if nuclides == 'all' or nuclides == 'sum' or nuclides == ['sum']: + query_nuclides = self.get_all_nuclides() + else: + query_nuclides = nuclides + else: + query_nuclides = ['total'] + + # If user requested the sum for all nuclides, use tally summation + if nuclides == 'sum' or nuclides == ['sum']: + xs_tally = self.xs_tally.summation(nuclides=query_nuclides) + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + else: + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=query_nuclides, value=value) + + # Divide by atom number densities for microscopic cross sections + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') + if value == 'mean' or value == 'std_dev': + xs /= densities[np.newaxis, :, np.newaxis] + + # Reverse data if user requested increasing energy groups since + # tally data is stored in order of increasing energies + if order_groups == 'increasing': + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + # Reshape tally data array with separate axes for domain and energy + num_subdomains = int(xs.shape[0] / num_groups) + new_shape = (num_subdomains, num_groups) + xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Reverse energies to align with increasing energy groups + xs = xs[:, ::-1, :] + + # Eliminate trivial dimensions + xs = np.squeeze(xs) + xs = np.atleast_1d(xs) + return xs + + def get_slice(self, nuclides=[], groups=[], delayed_groups=[]): + """Build a sliced MDGXS for the specified nuclides, energy groups, + and delayed groups. + + This method constructs a new MDGXS to encapsulate a subset of the data + represented by this MDGXS. The subset of data to include in the tally + slice is determined by the nuclides, energy groups, delayed groups + specified in the input parameters. + + Parameters + ---------- + nuclides : list of str + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is []) + groups : list of int + A list of energy group indices starting at 1 for the high energies + (e.g., [1, 2, 3]; default is []) + delayed_groups : list of int + A list of delayed group indices + (e.g., [1, 2, 3]; default is []) + + Returns + ------- + openmc.mgxs.MDGXS + A new MDGXS object which encapsulates the subset of data requested + for the nuclide(s) and/or energy group(s) and/or delayed group(s) + requested in the parameters. + + """ + + cv.check_iterable_type('nuclides', nuclides, basestring) + cv.check_iterable_type('energy_groups', groups, Integral) + cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + + # Build lists of filters and filter bins to slice + filters = [] + filter_bins = [] + + if len(groups) != 0: + energy_bins = [] + for group in groups: + group_bounds = self.energy_groups.get_group_bounds(group) + energy_bins.append(group_bounds) + filter_bins.append(tuple(energy_bins)) + filters.append('energy') + + if len(delayed_groups) != 0: + filter_bins.append(tuple(delayed_groups)) + filters.append('delayedgroup') + + # Clone this MGXS to initialize the sliced version + slice_xs = copy.deepcopy(self) + slice_xs._rxn_rate_tally = None + slice_xs._xs_tally = None + + # Slice each of the tallies across nuclides and energy groups + for tally_type, tally in slice_xs.tallies.items(): + slice_nuclides = [nuc for nuc in nuclides if nuc in tally.nuclides] + if filters != []: + tally_slice = tally.get_slice(filters=filters, + filter_bins=filter_bins, + nuclides=slice_nuclides) + else: + tally_slice = tally.get_slice(nuclides=slice_nuclides) + slice_xs.tallies[tally_type] = tally_slice + + # Assign sliced energy group structure to sliced MDGXS + if groups: + new_group_edges = [] + for group in groups: + group_edges = self.energy_groups.get_group_bounds(group) + new_group_edges.extend(group_edges) + new_group_edges = np.unique(new_group_edges) + slice_xs.energy_groups.group_edges = sorted(new_group_edges) + + # Assign sliced delayed group structure to sliced MDGXS + if delayed_groups: + slice_xs.delayed_groups.groups = delayed_groups + + # Assign sliced nuclides to sliced MGXS + if nuclides: + slice_xs.nuclides = nuclides + + slice_xs.sparse = self.sparse + return slice_xs + + def can_merge(self, other): + """Determine if another MDGXS can be merged with this one + + If results have been loaded from a statepoint, then MGXS are only + mergeable along one and only one of enegy groups or nuclides. + + Parameters + ---------- + other : openmc.mgxs.MGXS + MGXS to check for merging + + """ + + can_merge = super(MDGXS, self).can_merge(other) + + # Compare delayed groups + if not self.delayed_groups.can_merge(other.delayed_groups): + can_merge = False + + # If all conditionals pass then MDGXS are mergeable + return can_merge + + def merge(self, other): + """Merge another MDGXS with this one + + MDGXS are only mergeable if their energy groups and nuclides are either + identical or mutually exclusive. If results have been loaded from a + statepoint, then MDGXS are only mergeable along one and only one of + energy groups or nuclides. + + Parameters + ---------- + other : openmc.mgxs.MDGXS + MDGXS to merge with this one + + Returns + ------- + merged_mdgxs : openmc.mgxs.MDGXS + Merged MDGXS + + """ + + + merged_mdgxs = super(MDGXS, self).merge(other) + + # Merge delayed groups + if self.delayed_groups != other.delayed_groups: + merged_delayed_groups = self.delayed_groups.merge(other.delayed_groups) + merged_mdgxs.delayed_groups = merged_delayed_groups + + return merged_mdgxs + + def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): + """Print a string representation for the multi-group cross section. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + The subdomain IDs of the cross sections to include in the report. + Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + The nuclides of the cross-sections to include in the report. This + may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + The special string 'all' will report the cross sections for all + nuclides in the spatial domain. The special string 'sum' will report + the cross sections summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + + """ + + if self.delayed_groups != None: + super(MDGXS, self).print_xs(subdomains, nuclides, xs_type) + return + + # Construct a collection of the subdomains to report + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) + else: + subdomains = [self.domain.id] + + # Construct a collection of the nuclides to report + if self.by_nuclide: + if nuclides == 'all': + nuclides = self.get_all_nuclides() + elif nuclides == 'sum': + nuclides = ['sum'] + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + # Build header for string with type and domain info + string = 'Multi-Delayed-Group XS\n' + string += '{0: <16}=\t{1}\n'.format('\tReaction Type', self.rxn_type) + string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) + string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) + + # If cross section data has not been computed, only print string header + if self.tallies is None: + print(string) + return + + # Loop over all subdomains + for subdomain in subdomains: + + if self.domain_type == 'distribcell': + string += '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) + + # Loop over all Nuclides + for nuclide in nuclides: + + # Build header for nuclide type + if nuclide != 'sum': + string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) + + # Build header for cross section type + if xs_type == 'macro': + string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') + else: + string += '{0: <16}\n'.format('\tCross Sections [barns]:') + + for delayed_group in self.delayed_groups.groups: + + template = '{0: <12}Delayed Group {1}:\t' + string += template.format('', delayed_group) + string += '\n' + + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' + + # Loop over energy groups ranges + for group in range(1, self.num_groups+1): + bounds = self.energy_groups.get_group_bounds(group) + string += template.format('', group, bounds[0], bounds[1]) + average = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='mean', + delayed_groups=[delayed_group]) + rel_err = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='rel_err', + delayed_groups=[delayed_group]) + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] * 100. + string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) + string += '\n' + string += '\n' + string += '\n' + + print(string) + + def export_xs_data(self, filename='mgxs', directory='mgxs', + format='csv', groups='all', xs_type='macro', + delayed_groups='all'): + """Export the multi-delayed-group cross section data to a file. + + This method leverages the functionality in the Pandas library to export + the multi-group cross section data in a variety of output file formats + for storage and/or post-processing. + + Parameters + ---------- + filename : str + Filename for the exported file. Defaults to 'mgxs'. + directory : str + Directory for the exported file. Defaults to 'mgxs'. + format : {'csv', 'excel', 'pickle', 'latex'} + The format for the exported data file. Defaults to 'csv'. + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + xs_type: {'macro', 'micro'} + Store the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + delayed_groups : Iterable of Integral or 'all' + Delayed groups of interest. Defaults to 'all'. + + """ + + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + cv.check_value('format', format, ['csv', 'excel', 'pickle', 'latex']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + filename = os.path.join(directory, filename) + filename = filename.replace(' ', '-') + + # Get a Pandas DataFrame for the data + df = self.get_pandas_dataframe(groups=groups, xs_type=xs_type, + delayed_groups=delayed_groups) + + # Capitalize column label strings + #df.columns = df.columns.astype(str) + #df.columns = map(str.title, df.columns) + + # Export the data using Pandas IO API + if format == 'csv': + df.to_csv(filename + '.csv', index=False) + elif format == 'excel': + df.to_excel(filename + '.xls', index=False) + elif format == 'pickle': + df.to_pickle(filename + '.pkl') + elif format == 'latex': + if self.domain_type == 'distribcell': + msg = 'Unable to export distribcell multi-group cross section' \ + 'data to a LaTeX table' + raise NotImplementedError(msg) + + df.to_latex(filename + '.tex', bold_rows=True, + longtable=True, index=False) + + # Surround LaTeX table with code needed to run pdflatex + with open(filename + '.tex','r') as original: + data = original.read() + with open(filename + '.tex','w') as modified: + modified.write( + '\\documentclass[preview, 12pt, border=1mm]{standalone}\n') + modified.write('\\usepackage{caption}\n') + modified.write('\\usepackage{longtable}\n') + modified.write('\\usepackage{booktabs}\n') + modified.write('\\begin{document}\n\n') + modified.write(data) + modified.write('\n\\end{document}') + + def get_pandas_dataframe(self, groups='all', nuclides='all', + xs_type='macro', distribcell_paths=True, + delayed_groups='all'): + """Build a Pandas DataFrame for the MGXS data. + + This method leverages :meth:`openmc.Tally.get_pandas_dataframe`, but + renames the columns with terminology appropriate for cross section data. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + The nuclides of the cross-sections to include in the dataframe. This + may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + The special string 'all' will include the cross sections for all + nuclides in the spatial domain. The special string 'sum' will + include the cross sections summed over all nuclides. Defaults + to 'all'. + xs_type: {'macro', 'micro'} + Return macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + distribcell_paths : bool, optional + Construct columns for distribcell tally filters (default is True). + The geometric information in the Summary object is embedded into + a Multi-index column with a geometric "path" to each distribcell + instance. + delayed_groups : Iterable of Integral or 'all' + Delayed groups of interest. Defaults to 'all'. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame for the cross section data. + + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + + """ + + df = super(MDGXS, self).get_pandas_dataframe(groups, nuclides, xs_type, + distribcell_paths) + + if not isinstance(delayed_groups, basestring): + cv.check_iterable_type('delayed groups', delayed_groups, Integral) + + # Select out those delayed groups the user requested + if not isinstance(delayed_groups, basestring): + if 'delayedgroup' in df: + df = df[df['delayedgroup'].isin(delayed_groups)] + + return df + + +class ChiDelayed(MDGXS): + """The delayed fission spectrum. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ChiDelayed.energy_groups` and + :attr:`ChiDelayed.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`ChiDelayed.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`ChiDelayed.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + fission spectrum is calculated as: + + .. math:: + + \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) + \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \nu\sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, + E') \psi(r, E', \Omega') \\ + \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle + \nu\sigma_f \phi \rangle} + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`ChiDelayed.tally_keys` property and + values are instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, energy_groups=None, + by_nuclide=False, name='', delayed_groups=None): + super(ChiDelayed, self).__init__(domain, domain_type, energy_groups, + by_nuclide, name, delayed_groups) + self._rxn_type = 'chi-delayed' + + @property + def scores(self): + return ['delayed-nu-fission', 'delayed-nu-fission'] + + @property + def filters(self): + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energyout = openmc.Filter('energyout', group_edges) + energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) + if self.delayed_groups != None: + delayed_groups = self.delayed_groups.groups + delayed_filter = openmc.Filter('delayedgroup', delayed_groups) + return [[delayed_filter, energyin], [delayed_filter, energyout]] + else: + return [[energyin], [energyout]] + + @property + def tally_keys(self): + return ['delayed-nu-fission-in', 'delayed-nu-fission-out'] + + @property + def estimator(self): + return 'analog' + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = self.tallies['delayed-nu-fission-out'] + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @property + def xs_tally(self): + + if self._xs_tally is None: + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = delayed_nu_fission_in.find_filter('energy') + delayed_nu_fission_in.remove_filter(energy_filter) + + # Compute chi + self._xs_tally = self.rxn_rate_tally / delayed_nu_fission_in + super(ChiDelayed, self)._compute_xs() + + # Add the coarse energy filter back to the nu-fission tally + delayed_nu_fission_in.filters.append(energy_filter) + + return self._xs_tally + + def get_slice(self, nuclides=[], groups=[], delayed_groups=[]): + """Build a sliced ChiDelayed for the specified nuclides and energy + groups. + + This method constructs a new MGXS to encapsulate a subset of the data + represented by this MGXS. The subset of data to include in the tally + slice is determined by the nuclides and energy groups specified in + the input parameters. + + Parameters + ---------- + nuclides : list of str + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is []) + groups : list of Integral + A list of energy group indices starting at 1 for the high energies + (e.g., [1, 2, 3]; default is []) + delayed_groups : list of int + A list of delayed group indices + (e.g., [1, 2, 3]; default is []) + + Returns + ------- + openmc.mgxs.MDGXS + A new MDGXS which encapsulates the subset of data requested + for the nuclide(s) and/or energy group(s) and/or delayed group(s) + requested in the parameters. + + """ + + # Temporarily remove energy filter from delayed-nu-fission-in since its + # group structure will work in super MGXS.get_slice(...) method + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + energy_filter = delayed_nu_fission_in.find_filter('energy') + delayed_nu_fission_in.remove_filter(energy_filter) + + # Call super class method and null out derived tallies + slice_xs = super(ChiDelayed, self).get_slice(nuclides, groups, + delayed_groups) + slice_xs._rxn_rate_tally = None + slice_xs._xs_tally = None + + # Slice energy groups if needed + filters = [] + filter_bins = [] + + if len(groups) != 0: + energy_bins = [] + for group in groups: + group_bounds = self.energy_groups.get_group_bounds(group) + energy_bins.append(group_bounds) + filter_bins.append(tuple(energy_bins)) + filters.append('energyout') + + if len(delayed_groups) != 0: + filter_bins.append(tuple(delayed_groups)) + filters.append('delayedgroup') + + if filters != []: + + # Slice nu-fission-out tally along energyout filter + delayed_nu_fission_out = slice_xs.tallies['delayed-nu-fission-out'] + tally_slice = delayed_nu_fission_out.get_slice(filters=filters, + filter_bins=filter_bins) + slice_xs._tallies['delayed-nu-fission-out'] = tally_slice + + # Add energy filter back to nu-fission-in tallies + self.tallies['delayed-nu-fission-in'].add_filter(energy_filter) + slice_xs._tallies['delayed-nu-fission-in'].add_filter(energy_filter) + + slice_xs.sparse = self.sparse + return slice_xs + + def merge(self, other): + """Merge another ChiDelayed with this one + + If results have been loaded from a statepoint, then ChiDelayed are only + mergeable along one and only one of energy groups or nuclides. + + Parameters + ---------- + other : openmc.mgxs.MGXS + MGXS to merge with this one + + Returns + ------- + merged_mgxs : openmc.mgxs.MGXS + Merged MGXS + """ + + if not self.can_merge(other): + raise ValueError('Unable to merge ChiDelayed') + + # Create deep copy of tally to return as merged tally + merged_mgxs = copy.deepcopy(self) + merged_mgxs._derived = True + merged_mgxs._rxn_rate_tally = None + merged_mgxs._xs_tally = None + + # Merge energy groups + if self.energy_groups != other.energy_groups: + merged_groups = self.energy_groups.merge(other.energy_groups) + merged_mgxs.energy_groups = merged_groups + + # Merge delayed groups + if self.delayed_groups != other.delayed_groups: + merged_delayed_groups = self.delayed_groups.merge(other.delayed_groups) + merged_mdgxs.delayed_groups = merged_delayed_groups + + # Merge nuclides + if self.nuclides != other.nuclides: + + # The nuclides must be mutually exclusive + for nuclide in self.nuclides: + if nuclide in other.nuclides: + msg = 'Unable to merge Chi Delayed with shared nuclides' + raise ValueError(msg) + + # Concatenate lists of nuclides for the merged MGXS + merged_mgxs.nuclides = self.nuclides + other.nuclides + + # Merge tallies + for tally_key in self.tallies: + merged_tally = self.tallies[tally_key].merge(other.tallies[tally_key]) + merged_mgxs.tallies[tally_key] = merged_tally + + return merged_mgxs + + def get_xs(self, groups='all', subdomains='all', nuclides='all', + xs_type='macro', order_groups='increasing', + value='mean', delayed_groups='all', **kwargs): + """Returns an array of the fission spectrum. + + This method constructs a 2D NumPy array for the requested multi-group + cross section data data for one or more energy groups and subdomains. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + delayed_groups : Iterable of Integral or 'all' + Delayed groups of interest. Defaults to 'all'. + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + A list of nuclide name strings (e.g., ['U-235', 'U-238']). The + special string 'all' will return the cross sections for all nuclides + in the spatial domain. The special string 'sum' will return the + cross section summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + This parameter is not relevant for chi but is included here to + mirror the parent MGXS.get_xs(...) class method + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. + value : {'mean', 'std_dev', 'rel_err'} + A string for the type of value to return. Defaults to 'mean'. + + Returns + ------- + numpy.ndarray + A NumPy array of the multi-group cross section indexed in the order + each group, subdomain and nuclide is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + + """ + + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) + for subdomain in subdomains: + filters.append(self.domain_type) + filter_bins.append((subdomain,)) + + # Construct list of energy group bounds tuples for all requested groups + if not isinstance(groups, basestring): + cv.check_iterable_type('groups', groups, Integral) + for group in groups: + filters.append('energyout') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) + + # Construct list of delayed group tuples for all requested groups + if not isinstance(delayed_groups, basestring): + cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + for delayed_group in delayed_groups: + filters.append('delayedgroups') + filter_bins.append((delayed_group,)) + + # If chi delayed was computed for each nuclide in the domain + if self.by_nuclide: + + # Get the sum as the fission source weighted average chi for all + # nuclides in the domain + if nuclides == 'sum' or nuclides == ['sum']: + + # Retrieve the fission production tallies + delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] + delayed_nu_fission_out = self.tallies['delayed-nu-fission-out'] + + # Sum out all nuclides + nuclides = self.get_all_nuclides() + delayed_nu_fission_in = delayed_nu_fission_in.summation(nuclides=nuclides) + delayed_nu_fission_out = delayed_nu_fission_out.summation(nuclides=nuclides) + + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = delayed_nu_fission_in.find_filter('energy') + delayed_nu_fission_in.remove_filter(energy_filter) + + # Compute chi and store it as the xs_tally attribute so we can + # use the generic get_xs(...) method + xs_tally = delayed_nu_fission_out / delayed_nu_fission_in + + # Add the coarse energy filter back to the nu-fission tally + delayed_nu_fission_in.filters.append(energy_filter) + + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Get chi delayed for all nuclides in the domain + elif nuclides == 'all': + nuclides = self.get_all_nuclides() + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=nuclides, value=value) + + # Get chi delayed for user-specified nuclides in the domain + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=nuclides, value=value) + + # If chi delayed was computed as an average of nuclides in the domain + else: + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Reverse data if user requested increasing energy groups since + # tally data is stored in order of increasing energies + if order_groups == 'increasing': + + # Reshape tally data array with separate axes for domain and energy + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + num_subdomains = int(xs.shape[0] / num_groups) + new_shape = (num_subdomains, num_groups) + xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Reverse energies to align with increasing energy groups + xs = xs[:, ::-1, :] + + # Eliminate trivial dimensions + xs = np.squeeze(xs) + xs = np.atleast_1d(xs) + + xs = np.nan_to_num(xs) + return xs + + +class DelayedNuFissionXS(MDGXS): + """A fission delayed neutron production multi-group cross section. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group fission neutron production cross sections for multi-group + neutronics calculations. At a minimum, one needs to set the + :attr:`DelayedNuFissionXS.energy_groups` and :attr:`DelayedNuFissionXS.domain` + properties. Tallies for the flux and appropriate reaction rates over the + specified domain are generated automatically via the + :attr:`DelayedNuFissionXS.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`DelayedNuFissionXS.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + fission neutron production cross section is calculated as: + + .. math:: + + \frac{\int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; + \nu\sigma_f (r, E) \psi (r, E, \Omega)}{\int_{r \in V} dr \int_{4\pi} + d\Omega \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega)}. + + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`NuFissionXS.tally_keys` property and + values are instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, energy_groups=None, + by_nuclide=False, name='', delayed_groups=None): + super(DelayedNuFissionXS, self).__init__(domain, domain_type, + energy_groups, by_nuclide, + name, delayed_groups) + self._rxn_type = 'delayed-nu-fission' + + +class Beta(MDGXS): + """The delayed neutron fraction. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`ChiDelayed.energy_groups` and + :attr:`ChiDelayed.domain` properties. Tallies for the flux and appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`ChiDelayed.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`ChiDelayed.xs_tally` property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + fission spectrum is calculated as: + + .. math:: + + \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) + \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \nu\sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, + E') \psi(r, E', \Omega') \\ + \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle + \nu\sigma_f \phi \rangle} + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`ChiDelayed.tally_keys` property and + values are instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, energy_groups=None, + by_nuclide=False, name='', delayed_groups=None): + super(Beta, self).__init__(domain, domain_type, energy_groups, + by_nuclide, name, delayed_groups) + self._rxn_type = 'beta' + + @property + def scores(self): + return ['delayed-nu-fission', 'nu-fission'] + + @property + def filters(self): + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) + if self.delayed_groups != None: + delayed_groups = self.delayed_groups.groups + delayed_filter = openmc.Filter('delayedgroup', delayed_groups) + return [[delayed_filter, energy], [energy]] + else: + return [[energy], [energy]] + + @property + def tally_keys(self): + return ['delayed-nu-fission', 'nu-fission'] + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = self.tallies['delayed-nu-fission'] + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @property + def xs_tally(self): + + if self._xs_tally is None: + nu_fission = self.tallies['nu-fission'] + + # Compute chi + self._xs_tally = self.rxn_rate_tally / nu_fission + super(Beta, self)._compute_xs() + + return self._xs_tally diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index acc240e045..6ed4f9f7b9 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -36,9 +36,9 @@ MGXS_TYPES = ['total', 'multiplicity matrix', 'nu-fission matrix', 'chi', - 'chi-delayed', 'chi-prompt', - 'inverse-velocity'] + 'inverse-velocity', + 'prompt-neutron-lifetime'] # Supported domain types # TODO: Implement Mesh domains @@ -496,12 +496,12 @@ class MGXS(object): mgxs = NuFissionMatrixXS(domain, domain_type, energy_groups) elif mgxs_type == 'chi': mgxs = Chi(domain, domain_type, energy_groups) - elif mgxs_type == 'chi-delayed': - mgxs = ChiDelayed(domain, domain_type, energy_groups) elif mgxs_type == 'chi-prompt': mgxs = ChiPrompt(domain, domain_type, energy_groups) - elif mgxs_type == 'velocity': - mgxs = Velocity(domain, domain_type, energy_groups) + elif mgxs_type == 'inverse-velocity': + mgxs = InverseVelocity(domain, domain_type, energy_groups) + elif mgxs_type == 'prompt-neutron-lifetime': + mgxs = PromptNeutronLifetime(domain, domain_type, energy_groups) mgxs.by_nuclide = by_nuclide mgxs.name = name @@ -1010,16 +1010,16 @@ class MGXS(object): cv.check_iterable_type('energy_groups', groups, Integral) # Build lists of filters and filter bins to slice - if len(groups) == 0: - filters = [] - filter_bins = [] - else: - filter_bins = [] + filters = [] + filter_bins = [] + + if len(groups) != 0: + energy_bins = [] for group in groups: group_bounds = self.energy_groups.get_group_bounds(group) - filter_bins.append(group_bounds) - filter_bins = [tuple(filter_bins)] - filters = ['energy'] + energy_bins.append(group_bounds) + filter_bins.append(tuple(energy_bins)) + filters.append('energy') # Clone this MGXS to initialize the sliced version slice_xs = copy.deepcopy(self) @@ -2627,7 +2627,7 @@ class CaptureXS(MGXS): class FissionXS(MGXS): - r"""A fission multi-group cross section. + """A fission multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -2846,7 +2846,6 @@ class NuFissionXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'nu-fission' - class KappaFissionXS(MGXS): """A recoverable fission energy production rate multi-group cross section. @@ -3989,7 +3988,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): class MultiplicityMatrixXS(MatrixMGXS): - r"""The scattering multiplicity matrix. + """The scattering multiplicity matrix. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4143,7 +4142,7 @@ class MultiplicityMatrixXS(MatrixMGXS): class NuFissionMatrixXS(MatrixMGXS): - r"""A fission production matrix multi-group cross section. + """A fission production matrix multi-group cross section. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated @@ -4716,583 +4715,6 @@ class Chi(MGXS): return df -class ChiDelayed(Chi): - """The delayed fission spectrum. - - This class can be used for both OpenMC input generation and tally data - post-processing to compute spatially-homogenized and energy-integrated - multi-group cross sections for multi-group neutronics calculations. At a - minimum, one needs to set the :attr:`ChiDelayed.energy_groups` and - :attr:`ChiDelayed.domain` properties. Tallies for the flux and appropriate - reaction rates over the specified domain are generated automatically via the - :attr:`ChiDelayed.tallies` property, which can then be appended to a - :class:`openmc.Tallies` instance. - - For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the - necessary data to compute multi-group cross sections from a - :class:`openmc.StatePoint` instance. The derived multi-group cross section - can then be obtained from the :attr:`ChiDelayed.xs_tally` property. - - For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the - fission spectrum is calculated as: - - .. math:: - - \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in V} dr - \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) - \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ - \langle \nu\sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} - d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, - E') \psi(r, E', \Omega') \\ - \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle - \nu\sigma_f \phi \rangle} - - Parameters - ---------- - domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh - The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - The domain type for spatial homogenization - groups : openmc.mgxs.EnergyGroups - The energy group structure for energy condensation - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - name : str, optional - Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. - - Attributes - ---------- - name : str, optional - Name of the multi-group cross section - rxn_type : str - Reaction type (e.g., 'total', 'nu-fission', etc.) - by_nuclide : bool - If true, computes cross sections for each nuclide in domain - domain : Material or Cell or Universe or Mesh - Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} - Domain type for spatial homogenization - energy_groups : openmc.mgxs.EnergyGroups - Energy group structure for energy condensation - delayed_groups : list of int - Delayed groups to filter out the xs - tally_trigger : openmc.Trigger - An (optional) tally precision trigger given to each tally used to - compute the cross section - scores : list of str - The scores in each tally used to compute the multi-group cross section - filters : list of openmc.Filter - The filters in each tally used to compute the multi-group cross section - tally_keys : list of str - The keys into the tallies dictionary for each tally used to compute - the multi-group cross section - estimator : {'tracklength', 'analog'} - The tally estimator used to compute the multi-group cross section - tallies : collections.OrderedDict - OpenMC tallies needed to compute the multi-group cross section. The keys - are strings listed in the :attr:`ChiDelayed.tally_keys` property and - values are instances of :class:`openmc.Tally`. - rxn_rate_tally : openmc.Tally - Derived tally for the reaction rate tally used in the numerator to - compute the multi-group cross section. This attribute is None - unless the multi-group cross section has been computed. - xs_tally : openmc.Tally - Derived tally for the multi-group cross section. This attribute - is None unless the multi-group cross section has been computed. - num_subdomains : int - The number of subdomains is unity for 'material', 'cell' and 'universe' - domain types. When the This is equal to the number of cell instances - for 'distribcell' domain types (it is equal to unity prior to loading - tally data from a statepoint file). - num_nuclides : int - The number of nuclides for which the multi-group cross section is - being tracked. This is unity if the by_nuclide attribute is False. - nuclides : Iterable of str or 'sum' - The optional user-specified nuclides for which to compute cross - sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides - are not specified by the user, all nuclides in the spatial domain - are included. This attribute is 'sum' if by_nuclide is false. - sparse : bool - Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format - for compressed data storage - loaded_sp : bool - Whether or not a statepoint file has been loaded with tally data - derived : bool - Whether or not the MGXS is merged from one or more other MGXS - hdf5_key : str - The key used to index multi-group cross sections in an HDF5 data store - - """ - - def __init__(self, domain=None, domain_type=None, - groups=None, by_nuclide=False, name='', delayed_groups=None): - super(ChiDelayed, self).__init__(domain, domain_type, groups, by_nuclide, name) - self._rxn_type = 'chi-delayed' - self._delayed_groups = None - - if delayed_groups is not None: - self.delayed_groups = delayed_groups - - @property - def delayed_groups(self): - return self._delayed_groups - - @property - def num_delayed_groups(self): - if self._delayed_groups != None: - return len(self.delayed_groups) - else: - return 0 - - @delayed_groups.setter - def delayed_groups(self, delayed_groups): - cv.check_iterable_type('delayed groups', delayed_groups, int) - self._delayed_groups = delayed_groups - - @property - def filters(self): - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energyout = openmc.Filter('energyout', group_edges) - energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) - if self.delayed_groups != None: - delayed_group_filter = openmc.Filter('delayedgroup', self.delayed_groups) - return [[delayed_group_filter, energyin], [delayed_group_filter, energyout]] - else: - return [[energyin], [energyout]] - - @property - def scores(self): - return ['delayed-nu-fission', 'delayed-nu-fission'] - - @property - def tally_keys(self): - return ['delayed-nu-fission-in', 'delayed-nu-fission-out'] - - @property - def rxn_rate_tally(self): - if self._rxn_rate_tally is None: - self._rxn_rate_tally = self.tallies['delayed-nu-fission-out'] - self._rxn_rate_tally.sparse = self.sparse - return self._rxn_rate_tally - - @property - def xs_tally(self): - - if self._xs_tally is None: - delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] - - # Remove coarse energy filter to keep it out of tally arithmetic - energy_filter = delayed_nu_fission_in.find_filter('energy') - delayed_nu_fission_in.remove_filter(energy_filter) - - # Compute chi - self._xs_tally = self.rxn_rate_tally / delayed_nu_fission_in - super(ChiDelayed, self)._compute_xs() - - # Add the coarse energy filter back to the nu-fission tally - delayed_nu_fission_in.filters.append(energy_filter) - - return self._xs_tally - - def get_slice(self, nuclides=[], groups=[]): - """Build a sliced ChiDelayed for the specified nuclides and energy - groups. - - This method constructs a new MGXS to encapsulate a subset of the data - represented by this MGXS. The subset of data to include in the tally - slice is determined by the nuclides and energy groups specified in - the input parameters. - - Parameters - ---------- - nuclides : list of str - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is []) - groups : list of Integral - A list of energy group indices starting at 1 for the high energies - (e.g., [1, 2, 3]; default is []) - - Returns - ------- - openmc.mgxs.MGXS - A new MGXS which encapsulates the subset of data requested - for the nuclide(s) and/or energy group(s) requested in the - parameters. - - """ - - # Temporarily remove energy filter from delayed-nu-fission-in since its - # group structure will work in super MGXS.get_slice(...) method - delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] - energy_filter = delayed_nu_fission_in.find_filter('energy') - delayed_nu_fission_in.remove_filter(energy_filter) - - # Call super class method and null out derived tallies - slice_xs = super(ChiDelayed, self).get_slice(nuclides, groups) - slice_xs._rxn_rate_tally = None - slice_xs._xs_tally = None - - # Slice energy groups if needed - if len(groups) != 0: - filter_bins = [] - for group in groups: - group_bounds = self.energy_groups.get_group_bounds(group) - filter_bins.append(group_bounds) - filter_bins = [tuple(filter_bins)] - - # Slice nu-fission-out tally along energyout filter - delayed_nu_fission_out = slice_xs.tallies['delayed-nu-fission-out'] - tally_slice = delayed_nu_fission_out.get_slice(filters=['energyout'], - filter_bins=filter_bins) - slice_xs._tallies['delayed-nu-fission-out'] = tally_slice - - # Add energy filter back to nu-fission-in tallies - self.tallies['delayed-nu-fission-in'].add_filter(energy_filter) - slice_xs._tallies['delayed-nu-fission-in'].add_filter(energy_filter) - - slice_xs.sparse = self.sparse - return slice_xs - - def merge(self, other): - """Merge another ChiDelayed with this one - - If results have been loaded from a statepoint, then ChiDelayed are only - mergeable along one and only one of energy groups or nuclides. - - Parameters - ---------- - other : openmc.mgxs.MGXS - MGXS to merge with this one - - Returns - ------- - merged_mgxs : openmc.mgxs.MGXS - Merged MGXS - """ - - if not self.can_merge(other): - raise ValueError('Unable to merge ChiDelayed') - - # Create deep copy of tally to return as merged tally - merged_mgxs = copy.deepcopy(self) - merged_mgxs._derived = True - merged_mgxs._rxn_rate_tally = None - merged_mgxs._xs_tally = None - - # Merge energy groups - if self.energy_groups != other.energy_groups: - merged_groups = self.energy_groups.merge(other.energy_groups) - merged_mgxs.energy_groups = merged_groups - - # Merge nuclides - if self.nuclides != other.nuclides: - - # The nuclides must be mutually exclusive - for nuclide in self.nuclides: - if nuclide in other.nuclides: - msg = 'Unable to merge Chi Delayed with shared nuclides' - raise ValueError(msg) - - # Concatenate lists of nuclides for the merged MGXS - merged_mgxs.nuclides = self.nuclides + other.nuclides - - # Merge tallies - for tally_key in self.tallies: - merged_tally = self.tallies[tally_key].merge(other.tallies[tally_key]) - merged_mgxs.tallies[tally_key] = merged_tally - - return merged_mgxs - - def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): - """Prints a string representation for the multi-group cross section. - - Parameters - ---------- - subdomains : Iterable of Integral or 'all' - The subdomain IDs of the cross sections to include in the report. - Defaults to 'all'. - nuclides : Iterable of str or 'all' or 'sum' - The nuclides of the cross-sections to include in the report. This - may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). - The special string 'all' will report the cross sections for all - nuclides in the spatial domain. The special string 'sum' will - report the cross sections summed over all nuclides. Defaults to - 'all'. - xs_type: {'macro', 'micro'} - Return the macro or micro cross section in units of cm^-1 or barns. - Defaults to 'macro'. - - """ - - # Construct a collection of the subdomains to report - if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral) - elif self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) - elif self.domain_type == 'mesh': - subdomains = [] - if (len(self.domain.dimension) == 3): - nx, ny, nz = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - for z in range(1,nz+1): - subdomains.append((x, y, z)) - else: - nx, ny = self.domain.dimension - for x in range(1,nx+1): - for y in range(1,ny+1): - subdomains.append((x, y, 1)) - else: - subdomains = [self.domain.id] - - # Construct a collection of the nuclides to report - if self.by_nuclide: - if nuclides == 'all': - nuclides = self.get_all_nuclides() - if nuclides == 'sum': - nuclides = ['sum'] - else: - cv.check_iterable_type('nuclides', nuclides, basestring) - else: - nuclides = ['sum'] - - cv.check_value('xs_type', xs_type, ['macro', 'micro']) - - # Build header for string with type and domain info - string = 'Multi-Group XS\n' - string += '{0: <16}=\t{1}\n'.format('\tReaction Type', self.rxn_type) - string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) - string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) - - # If cross section data has not been computed, only print string header - if self.tallies is None: - print(string) - return - - string += '{0: <16}\n'.format('\tEnergy Groups:') - template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' - - # Loop over energy groups ranges - for group in range(1, self.num_groups + 1): - bounds = self.energy_groups.get_group_bounds(group) - string += template.format('', group, bounds[0], bounds[1]) - - # Loop over all subdomains - for subdomain in subdomains: - - if self.domain_type == 'distribcell': - string += \ - '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - - # Loop over all Nuclides - for nuclide in nuclides: - - # Build header for nuclide type - if xs_type != 'sum': - string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) - - # Build header for cross section type - if xs_type == 'macro': - string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') - else: - string += '{0: <16}\n'.format('\tCross Sections [barns]:') - - if self.delayed_groups != None: - - for delayed_group in range(1, self.num_delayed_groups+1): - - template = '{0: <12}Delayed Group {1}:\t' - string += template.format('', delayed_group) - string += '\n' - - template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' - - # Loop over energy groups ranges - for group in range(1, self.num_groups+1): - bounds = self.energy_groups.get_group_bounds(group) - string += template.format('', group, bounds[0], bounds[1]) - average = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='mean', - delayed_groups=[delayed_group]) - rel_err = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='rel_err', - delayed_groups=[delayed_group]) - average = average.flatten()[0] - rel_err = rel_err.flatten()[0] * 100. - string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) - string += '\n' - string += '\n' - string += '\n' - - else: - - template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' - - # Loop over energy groups ranges - for group in range(1, self.num_groups+1): - bounds = self.energy_groups.get_group_bounds(group) - string += template.format('', group, bounds[0], bounds[1]) - average = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='mean') - rel_err = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='rel_err') - average = average.flatten()[0] - rel_err = rel_err.flatten()[0] * 100. - string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) - string += '\n' - string += '\n' - string += '\n' - - - print(string) - - def get_xs(self, groups='all', subdomains='all', nuclides='all', - xs_type='macro', order_groups='increasing', - value='mean', delayed_groups='all', **kwargs): - """Returns an array of the fission spectrum. - - This method constructs a 2D NumPy array for the requested multi-group - cross section data data for one or more energy groups and subdomains. - - Parameters - ---------- - groups : Iterable of Integral or 'all' - Energy groups of interest. Defaults to 'all'. - delayed_groups : Iterable of Integral or 'all' - Delayed groups of interest. Defaults to 'all'. - subdomains : Iterable of Integral or 'all' - Subdomain IDs of interest. Defaults to 'all'. - nuclides : Iterable of str or 'all' or 'sum' - A list of nuclide name strings (e.g., ['U-235', 'U-238']). The - special string 'all' will return the cross sections for all nuclides - in the spatial domain. The special string 'sum' will return the - cross section summed over all nuclides. Defaults to 'all'. - xs_type: {'macro', 'micro'} - This parameter is not relevant for chi but is included here to - mirror the parent MGXS.get_xs(...) class method - order_groups: {'increasing', 'decreasing'} - Return the cross section indexed according to increasing or - decreasing energy groups (decreasing or increasing energies). - Defaults to 'increasing'. - value : {'mean', 'std_dev', 'rel_err'} - A string for the type of value to return. Defaults to 'mean'. - - Returns - ------- - numpy.ndarray - A NumPy array of the multi-group cross section indexed in the order - each group, subdomain and nuclide is listed in the parameters. - - Raises - ------ - ValueError - When this method is called before the multi-group cross section is - computed from tally data. - - """ - - cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) - cv.check_value('xs_type', xs_type, ['macro', 'micro']) - - filters = [] - filter_bins = [] - - # Construct a collection of the domain filter bins - if not isinstance(subdomains, basestring): - cv.check_iterable_type('subdomains', subdomains, Integral, max_depth=3) - for subdomain in subdomains: - filters.append(self.domain_type) - filter_bins.append((subdomain,)) - - # Construct list of energy group bounds tuples for all requested groups - if not isinstance(groups, basestring): - cv.check_iterable_type('groups', groups, Integral) - for group in groups: - filters.append('energyout') - filter_bins.append((self.energy_groups.get_group_bounds(group),)) - - # Construct list of delayed group tuples for all requested groups - if not isinstance(delayed_groups, basestring): - cv.check_iterable_type('delayed_groups', delayed_groups, Integral) - for delayed_group in delayed_groups: - filters.append('delayedgroups') - filter_bins.append((delayed_group,)) - - # If chi delayed was computed for each nuclide in the domain - if self.by_nuclide: - - # Get the sum as the fission source weighted average chi for all - # nuclides in the domain - if nuclides == 'sum' or nuclides == ['sum']: - - # Retrieve the fission production tallies - delayed_nu_fission_in = self.tallies['delayed-nu-fission-in'] - delayed_nu_fission_out = self.tallies['delayed-nu-fission-out'] - - # Sum out all nuclides - nuclides = self.get_all_nuclides() - delayed_nu_fission_in = delayed_nu_fission_in.summation(nuclides=nuclides) - delayed_nu_fission_out = delayed_nu_fission_out.summation(nuclides=nuclides) - - # Remove coarse energy filter to keep it out of tally arithmetic - energy_filter = delayed_nu_fission_in.find_filter('energy') - delayed_nu_fission_in.remove_filter(energy_filter) - - # Compute chi and store it as the xs_tally attribute so we can - # use the generic get_xs(...) method - xs_tally = delayed_nu_fission_out / delayed_nu_fission_in - - # Add the coarse energy filter back to the nu-fission tally - delayed_nu_fission_in.filters.append(energy_filter) - - xs = xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) - - # Get chi delayed for all nuclides in the domain - elif nuclides == 'all': - nuclides = self.get_all_nuclides() - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, - nuclides=nuclides, value=value) - - # Get chi delayed for user-specified nuclides in the domain - else: - cv.check_iterable_type('nuclides', nuclides, basestring) - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, - nuclides=nuclides, value=value) - - # If chi delayed was computed as an average of nuclides in the domain - else: - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) - - # Reverse data if user requested increasing energy groups since - # tally data is stored in order of increasing energies - if order_groups == 'increasing': - - # Reshape tally data array with separate axes for domain and energy - if groups == 'all': - num_groups = self.num_groups - else: - num_groups = len(groups) - num_subdomains = int(xs.shape[0] / num_groups) - new_shape = (num_subdomains, num_groups) + xs.shape[1:] - xs = np.reshape(xs, new_shape) - - # Reverse energies to align with increasing energy groups - xs = xs[:, ::-1, :] - - # Eliminate trivial dimensions - xs = np.squeeze(xs) - xs = np.atleast_1d(xs) - - xs = np.nan_to_num(xs) - return xs - - class ChiPrompt(Chi): """The prompt fission spectrum. @@ -5813,3 +5235,244 @@ class InverseVelocity(MGXS): super(InverseVelocity, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'inverse-velocity' + + +class PromptNeutronLifetime(MGXS): + """The prompt neutron lifetime. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for multi-group neutronics calculations. At a + minimum, one needs to set the :attr:`PromptNeutronLifetime.energy_groups` + and :attr:`PromptNeutronLifetime.domain` properties. Tallies for the flux + and appropriate reaction rates over the specified domain are generated + automatically via the :attr:`PromptNeutronLifetime.tallies` property, which + can then be appended to a :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`PromptNeutronLifetime.xs_tally` + property. + + For a spatial domain :math:`V` and energy group :math:`[E_g,E_{g-1}]`, the + fission spectrum is calculated as: + + .. math:: + + \langle \nu\sigma_{f,\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) + \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ + \langle \nu\sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} + d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu\sigma_f (r, + E') \psi(r, E', \Omega') \\ + \chi_g &= \frac{\langle \nu\sigma_{f,\rightarrow g} \phi \rangle}{\langle + \nu\sigma_f \phi \rangle} + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe', 'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'tracklength', 'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`ChiDelayed.tally_keys` property and + values are instances of :class:`openmc.Tally`. + rxn_rate_tally : openmc.Tally + Derived tally for the reaction rate tally used in the numerator to + compute the multi-group cross section. This attribute is None + unless the multi-group cross section has been computed. + xs_tally : openmc.Tally + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. + num_subdomains : int + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : int + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : Iterable of str or 'sum' + The optional user-specified nuclides for which to compute cross + sections (e.g., 'U-238', 'O-16'). If by_nuclide is True but nuclides + are not specified by the user, all nuclides in the spatial domain + are included. This attribute is 'sum' if by_nuclide is false. + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + + """ + + def __init__(self, domain=None, domain_type=None, + groups=None, by_nuclide=False, name=''): + super(PromptNeutronLifetime, self).__init__(domain, domain_type, groups, by_nuclide, name) + self._rxn_type = 'prompt-neutron-lifetime' + + @property + def scores(self): + return ['nu-fission', 'inverse-velocity'] + + @property + def tally_keys(self): + return ['nu-fission', 'inverse-velocity'] + + @property + def rxn_rate_tally(self): + if self._rxn_rate_tally is None: + self._rxn_rate_tally = self.tallies['inverse-velocity'] + self._rxn_rate_tally.sparse = self.sparse + return self._rxn_rate_tally + + @property + def xs_tally(self): + + if self._xs_tally is None: + nu_fission = self.tallies['nu-fission'] + + # Compute the prompt neutron lifetime + self._xs_tally = self.rxn_rate_tally / 100.0 / nu_fission + super(PromptNeutronLifetime, self)._compute_xs() + + return self._xs_tally + + def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): + """Print a string representation for the multi-group cross section. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + The subdomain IDs of the cross sections to include in the report. + Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + The nuclides of the cross-sections to include in the report. This + may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + The special string 'all' will report the cross sections for all + nuclides in the spatial domain. The special string 'sum' will report + the cross sections summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + + """ + + # Construct a collection of the subdomains to report + if not isinstance(subdomains, basestring): + cv.check_iterable_type('subdomains', subdomains, Integral) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + elif self.domain_type == 'mesh': + subdomains = [] + if (len(self.domain.dimension) == 3): + nx, ny, nz = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + for z in range(1,nz+1): + subdomains.append((x, y, z)) + else: + nx, ny = self.domain.dimension + for x in range(1,nx+1): + for y in range(1,ny+1): + subdomains.append((x, y, 1)) + else: + subdomains = [self.domain.id] + + # Construct a collection of the nuclides to report + if self.by_nuclide: + if nuclides == 'all': + nuclides = self.get_all_nuclides() + elif nuclides == 'sum': + nuclides = ['sum'] + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + + cv.check_value('xs_type', xs_type, ['macro']) + + # Build header for string with type and domain info + string = 'Multi-Group XS\n' + string += '{0: <16}=\t{1}\n'.format('\tReaction Type', self.rxn_type) + string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) + string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) + + # If cross section data has not been computed, only print string header + if self.tallies is None: + print(string) + return + + # Loop over all subdomains + for subdomain in subdomains: + + if self.domain_type == 'distribcell': + string += '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) + + # Loop over all Nuclides + for nuclide in nuclides: + + # Build header for nuclide type + if nuclide != 'sum': + string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) + + # Build header for cross section type + string += '{0: <16}\n'.format('\tCross Sections [seconds]:') + + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' + + # Loop over energy groups ranges + for group in range(1, self.num_groups+1): + bounds = self.energy_groups.get_group_bounds(group) + string += template.format('', group, bounds[0], bounds[1]) + average = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='mean') + rel_err = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='rel_err') + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] * 100. + string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) + string += '\n' + string += '\n' + string += '\n' + + print(string) From 695cda64257d11e24eb0524eb3d97f5413f3102e Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 08:42:56 -0400 Subject: [PATCH 04/49] fixed bug in tallies.py --- .../pythonapi/examples/mgxs-part-i.ipynb | 559 +++++------------- openmc/mgxs/mgxs.py | 2 + openmc/tallies.py | 5 + 3 files changed, 148 insertions(+), 418 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index 5c51b11d38..5ffdeece1d 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -398,7 +398,7 @@ "# Instantiate a tally Mesh\n", "mesh = openmc.Mesh(name='mesh')\n", "mesh.type = 'regular'\n", - "mesh.dimension = [1, 1]\n", + "mesh.dimension = [2, 2]\n", "mesh.lower_left = [-0.63, -0.63]\n", "mesh.upper_right = [+0.63, +0.63]\n", "\n", @@ -406,9 +406,9 @@ "total = mgxs.TotalXS(domain=mesh, groups=groups)\n", "absorption = mgxs.AbsorptionXS(domain=mesh, groups=groups)\n", "scattering = mgxs.ScatterXS(domain=mesh, groups=groups)\n", - "#total = mgxs.TotalXS(domain=cell, groups=groups)\n", - "#absorption = mgxs.AbsorptionXS(domain=cell, groups=groups)\n", - "#scattering = mgxs.ScatterXS(domain=cell, groups=groups)" + "chi_prompt = mgxs.ChiPrompt(domain=mesh, groups=groups)\n", + "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=mesh, groups=groups)\n", + "velocity = mgxs.Velocity(domain=mesh, groups=groups)" ] }, { @@ -428,22 +428,22 @@ { "data": { "text/plain": [ - "OrderedDict([('flux', Tally\n", + "OrderedDict([('inverse-velocity', Tally\n", " \tID =\t10000\n", " \tName =\t\n", " \tFilters =\t\n", " \t\tmesh\t[10000]\n", " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", " \tNuclides =\ttotal \n", - " \tScores =\t['flux']\n", - " \tEstimator =\ttracklength), ('absorption', Tally\n", + " \tScores =\t['inverse-velocity']\n", + " \tEstimator =\ttracklength), ('flux', Tally\n", " \tID =\t10001\n", " \tName =\t\n", " \tFilters =\t\n", " \t\tmesh\t[10000]\n", " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", " \tNuclides =\ttotal \n", - " \tScores =\t['absorption']\n", + " \tScores =\t['flux']\n", " \tEstimator =\ttracklength)])" ] }, @@ -453,7 +453,7 @@ } ], "source": [ - "absorption.tallies" + "velocity.tallies" ] }, { @@ -483,6 +483,15 @@ "# Add scattering tallies to the tallies file\n", "tallies_file += scattering.tallies.values()\n", "\n", + "# Add scattering tallies to the tallies file\n", + "tallies_file += chi_prompt.tallies.values()\n", + "\n", + "# Add scattering tallies to the tallies file\n", + "tallies_file += prompt_nu_fission.tallies.values()\n", + "\n", + "# Add scattering tallies to the tallies file\n", + "tallies_file += velocity.tallies.values()\n", + "\n", "# Export to \"tallies.xml\"\n", "tallies_file.export_to_xml()" ] @@ -521,9 +530,9 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: d30d010aea2c1cba90c993a9c501be9d5d81921d\n", - " Date/Time: 2016-06-28 13:31:05\n", - " MPI Processes: 1\n", + " Git SHA1: edf2dd76c731a711cea7bbc28f0982292c19389f\n", + " Date/Time: 2016-07-05 08:40:11\n", + " MPI Processes: 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -578,20 +587,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 8.1200E-01 seconds\n", - " Reading cross sections = 2.4200E-01 seconds\n", - " Total time in simulation = 2.8910E+00 seconds\n", - " Time in transport only = 2.8710E+00 seconds\n", - " Time in inactive batches = 8.5700E-01 seconds\n", - " Time in active batches = 2.0340E+00 seconds\n", - " Time synchronizing fission bank = 0.0000E+00 seconds\n", - " Sampling source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 1.3780E+00 seconds\n", + " Reading cross sections = 6.1400E-01 seconds\n", + " Total time in simulation = 1.9100E+00 seconds\n", + " Time in transport only = 1.7900E+00 seconds\n", + " Time in inactive batches = 3.6400E-01 seconds\n", + " Time in active batches = 1.5460E+00 seconds\n", + " Time synchronizing fission bank = 7.8000E-02 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 1.0000E-03 seconds\n", - " Total time elapsed = 3.7090E+00 seconds\n", - " Calculation Rate (inactive) = 11668.6 neutrons/second\n", - " Calculation Rate (active) = 4916.42 neutrons/second\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 8.0000E-03 seconds\n", + " Total time elapsed = 3.2980E+00 seconds\n", + " Calculation Rate (inactive) = 27472.5 neutrons/second\n", + " Calculation Rate (active) = 6468.31 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -616,7 +625,7 @@ ], "source": [ "# Run OpenMC\n", - "openmc.run()" + "openmc.run(mpi_procs=4)" ] }, { @@ -665,12 +674,82 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n", + "['mesh']\n", + "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "[0]\n", + "[10000]\n" + ] + } + ], "source": [ "# Load the tallies from the statepoint into each MGXS object\n", "total.load_from_statepoint(sp)\n", "absorption.load_from_statepoint(sp)\n", - "scattering.load_from_statepoint(sp)" + "scattering.load_from_statepoint(sp)\n", + "chi_prompt.load_from_statepoint(sp)\n", + "prompt_nu_fission.load_from_statepoint(sp)\n", + "velocity.load_from_statepoint(sp)" ] }, { @@ -702,24 +781,22 @@ }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\ttotal\n", - "\tDomain Type =\tmesh\n", - "\tDomain ID =\t10000\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t6.79e-01 +/- 7.64e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.40e+00 +/- 1.79e+00%\n", - "\n", - "\n", - "\n" + "ename": "IndexError", + "evalue": "index 3 is out of bounds for axis 0 with size 2", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvelocity\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprint_xs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mprint_xs\u001b[0;34m(self, subdomains, nuclides, xs_type)\u001b[0m\n\u001b[1;32m 5325\u001b[0m \u001b[0mstring\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mtemplate\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5326\u001b[0m average = self.get_xs([group], [subdomain], [nuclide],\n\u001b[0;32m-> 5327\u001b[0;31m xs_type=xs_type, value='mean')\n\u001b[0m\u001b[1;32m 5328\u001b[0m rel_err = self.get_xs([group], [subdomain], [nuclide],\n\u001b[1;32m 5329\u001b[0m xs_type=xs_type, value='rel_err')\n", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mget_xs\u001b[0;34m(self, groups, subdomains, nuclides, xs_type, order_groups, value, **kwargs)\u001b[0m\n\u001b[1;32m 819\u001b[0m \u001b[0mxs_tally\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxs_tally\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msummation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnuclides\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mquery_nuclides\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 820\u001b[0m xs = xs_tally.get_values(filters=filters,\n\u001b[0;32m--> 821\u001b[0;31m filter_bins=filter_bins, value=value)\n\u001b[0m\u001b[1;32m 822\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 823\u001b[0m xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins,\n", + "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/tallies.pyc\u001b[0m in \u001b[0;36mget_values\u001b[0;34m(self, scores, filters, filter_bins, nuclides, value)\u001b[0m\n\u001b[1;32m 1479\u001b[0m \u001b[0;31m# Return the desired result from Tally\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1480\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'mean'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1481\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindices\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1482\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'std_dev'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1483\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstd_dev\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindices\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: index 3 is out of bounds for axis 0 with size 2" ] } ], "source": [ - "total.print_xs()" + "velocity.print_xs()" ] }, { @@ -731,73 +808,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mesh 10000group innuclidemeanstd. dev.
xyz
11111total0.6662610.005072
01112total1.2924510.022969
\n", - "
" - ], - "text/plain": [ - " mesh 10000 group in nuclide mean std. dev.\n", - " x y z \n", - "1 1 1 1 1 total 0.666261 0.005072\n", - "0 1 1 1 2 total 1.292451 0.022969" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = scattering.get_pandas_dataframe()\n", "df.head(10)" @@ -812,13 +827,18 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "#absorption.export_xs_data(filename='absorption-xs', format='excel')" + "#total.export_xs_data(filename='total-xs', format='excel')\n", + "#absorption.export_xs_data(filename='absorption-xs', format='excel')\n", + "#scattering.export_xs_data(filename='scattering-xs', format='excel')\n", + "#chi_prompt.export_xs_data(filename='chi-prompt', format='excel')\n", + "#prompt_nu_fission.export_xs_data(filename='prompt-nu-fission', format='excel')\n", + "#velocity.export_xs_data(filename='velocity', format='excel')" ] }, { @@ -830,7 +850,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": false }, @@ -838,7 +858,10 @@ "source": [ "total.build_hdf5_store(filename='mgxs', append=True)\n", "absorption.build_hdf5_store(filename='mgxs', append=True)\n", - "scattering.build_hdf5_store(filename='mgxs', append=True)" + "scattering.build_hdf5_store(filename='mgxs', append=True)\n", + "chi_prompt.build_hdf5_store(filename='mgxs', append=True)\n", + "prompt_nu_fission.build_hdf5_store(filename='mgxs', append=True)\n", + "velocity.build_hdf5_store(filename='mgxs', append=True)" ] }, { @@ -857,86 +880,11 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-1.554312e-150.033991
11116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...-2.886580e-150.007258
\n", - "
" - ], - "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - " \n", - "0 (((total / flux) - (absorption / flux)) - (sca... -1.55e-15 3.40e-02 \n", - "1 (((total / flux) - (absorption / flux)) - (sca... -2.89e-15 7.26e-03 " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to compute the difference between the total, absorption and scattering\n", "difference = total.xs_tally - absorption.xs_tally - scattering.xs_tally\n", @@ -954,86 +902,11 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0761440.001984
11116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0192240.000329
\n", - "
" - ], - "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - " \n", - "0 ((absorption / flux) / (total / flux)) 7.61e-02 1.98e-03 \n", - "1 ((absorption / flux) / (total / flux)) 1.92e-02 3.29e-04 " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to compute the absorption-to-total MGXS ratio\n", "absorption_to_total = absorption.xs_tally / total.xs_tally\n", @@ -1044,86 +917,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9238560.023272
11116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9807760.010576
\n", - "
" - ], - "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - " \n", - "0 ((scatter / flux) / (total / flux)) 9.24e-01 2.33e-02 \n", - "1 ((scatter / flux) / (total / flux)) 9.81e-01 1.06e-02 " - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to compute the scattering-to-total MGXS ratio\n", "scattering_to_total = scattering.xs_tally / total.xs_tally\n", @@ -1141,86 +939,11 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.023356
11116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.010581
\n", - "
" - ], - "text/plain": [ - " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", - " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 total \n", - "1 1 1 1 6.25e-07 2.00e+01 total \n", - "\n", - " score mean std. dev. \n", - " \n", - "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 2.34e-02 \n", - "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 1.06e-02 " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Use tally arithmetic to ensure that the absorption- and scattering-to-total MGXS ratios sum to unity\n", "sum_ratio = absorption_to_total + scattering_to_total\n", diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f719cc5cbc..d79d322efd 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -733,6 +733,8 @@ class MGXS(object): sp_tally = statepoint.get_tally( tally.scores, tally.filters, tally.nuclides, estimator=tally.estimator, exact_filters=True) + print(filters) + print(filter_bins) sp_tally = sp_tally.get_slice( tally.scores, filters, filter_bins, tally.nuclides) sp_tally.sparse = self.sparse diff --git a/openmc/tallies.py b/openmc/tallies.py index af19549a7c..0531cf47fe 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2986,10 +2986,15 @@ class Tally(object): elif filter_type == 'distribcell': bin_indices = [0] num_bins = find_filter.num_bins + elif filter_type == 'mesh': + bin_indices = [0] + num_bins = find_filter.mesh.num_mesh_cells else: bin_indices.append(bin_index) num_bins += 1 + print(bin_indices) + print(find_filter.bins) find_filter.bins = np.unique(find_filter.bins[bin_indices]) find_filter.num_bins = num_bins From 092760d59fbac8d929ab33b5fdc48eab0c6cc8ac Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 08:43:17 -0400 Subject: [PATCH 05/49] updated mgxs-part-i --- .../pythonapi/examples/mgxs-part-i.ipynb | 857 +++++++++++++++++- 1 file changed, 819 insertions(+), 38 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index 5ffdeece1d..f3433b98c4 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -531,7 +531,7 @@ " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", " Git SHA1: edf2dd76c731a711cea7bbc28f0982292c19389f\n", - " Date/Time: 2016-07-05 08:40:11\n", + " Date/Time: 2016-07-05 08:42:21\n", " MPI Processes: 4\n", "\n", " ===========================================================================\n", @@ -587,20 +587,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.3780E+00 seconds\n", - " Reading cross sections = 6.1400E-01 seconds\n", - " Total time in simulation = 1.9100E+00 seconds\n", - " Time in transport only = 1.7900E+00 seconds\n", - " Time in inactive batches = 3.6400E-01 seconds\n", - " Time in active batches = 1.5460E+00 seconds\n", - " Time synchronizing fission bank = 7.8000E-02 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 3.2980E+00 seconds\n", - " Calculation Rate (inactive) = 27472.5 neutrons/second\n", - " Calculation Rate (active) = 6468.31 neutrons/second\n", + " Total time for initialization = 9.5600E-01 seconds\n", + " Reading cross sections = 2.7100E-01 seconds\n", + " Total time in simulation = 1.7180E+00 seconds\n", + " Time in transport only = 1.6250E+00 seconds\n", + " Time in inactive batches = 2.7700E-01 seconds\n", + " Time in active batches = 1.4410E+00 seconds\n", + " Time synchronizing fission bank = 6.1000E-02 seconds\n", + " Sampling source sites = 0.0000E+00 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 2.0000E-03 seconds\n", + " Total time for finalization = 5.0000E-03 seconds\n", + " Total time elapsed = 2.6810E+00 seconds\n", + " Calculation Rate (inactive) = 36101.1 neutrons/second\n", + " Calculation Rate (active) = 6939.63 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -781,17 +781,34 @@ }, "outputs": [ { - "ename": "IndexError", - "evalue": "index 3 is out of bounds for axis 0 with size 2", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvelocity\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprint_xs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mprint_xs\u001b[0;34m(self, subdomains, nuclides, xs_type)\u001b[0m\n\u001b[1;32m 5325\u001b[0m \u001b[0mstring\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mtemplate\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbounds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5326\u001b[0m average = self.get_xs([group], [subdomain], [nuclide],\n\u001b[0;32m-> 5327\u001b[0;31m xs_type=xs_type, value='mean')\n\u001b[0m\u001b[1;32m 5328\u001b[0m rel_err = self.get_xs([group], [subdomain], [nuclide],\n\u001b[1;32m 5329\u001b[0m xs_type=xs_type, value='rel_err')\n", - "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mget_xs\u001b[0;34m(self, groups, subdomains, nuclides, xs_type, order_groups, value, **kwargs)\u001b[0m\n\u001b[1;32m 819\u001b[0m \u001b[0mxs_tally\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxs_tally\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msummation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnuclides\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mquery_nuclides\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 820\u001b[0m xs = xs_tally.get_values(filters=filters,\n\u001b[0;32m--> 821\u001b[0;31m filter_bins=filter_bins, value=value)\n\u001b[0m\u001b[1;32m 822\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 823\u001b[0m xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins,\n", - "\u001b[0;32m/Users/sam/.local/lib/python2.7/site-packages/openmc-0.7.1-py2.7.egg/openmc/tallies.pyc\u001b[0m in \u001b[0;36mget_values\u001b[0;34m(self, scores, filters, filter_bins, nuclides, value)\u001b[0m\n\u001b[1;32m 1479\u001b[0m \u001b[0;31m# Return the desired result from Tally\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1480\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'mean'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1481\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindices\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1482\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'std_dev'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1483\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstd_dev\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindices\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mIndexError\u001b[0m: index 3 is out of bounds for axis 0 with size 2" + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tvelocity\n", + "\tDomain Type =\tmesh\n", + "\tDomain ID =\t10000\n", + "\tVelocity [cm/second]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.85e+07 +/- 1.57e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.04e+05 +/- 2.55e+00%\n", + "\n", + "\n", + "\tVelocity [cm/second]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.85e+07 +/- 9.32e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.01e+05 +/- 2.62e+00%\n", + "\n", + "\n", + "\tVelocity [cm/second]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.82e+07 +/- 1.83e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.04e+05 +/- 1.65e+00%\n", + "\n", + "\n", + "\tVelocity [cm/second]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.80e+07 +/- 1.41e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.02e+05 +/- 2.18e+00%\n", + "\n", + "\n", + "\n" ] } ], @@ -808,11 +825,139 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000group innuclidemeanstd. dev.
xyz
11111total0.6666460.007969
01112total1.2909900.030906
31211total0.6644910.004534
21212total1.2945300.031677
52111total0.6665240.006541
42112total1.2913780.020686
72211total0.6673860.005754
62212total1.2929080.027042
\n", + "
" + ], + "text/plain": [ + " mesh 10000 group in nuclide mean std. dev.\n", + " x y z \n", + "1 1 1 1 1 total 0.666646 0.007969\n", + "0 1 1 1 2 total 1.290990 0.030906\n", + "3 1 2 1 1 total 0.664491 0.004534\n", + "2 1 2 1 2 total 1.294530 0.031677\n", + "5 2 1 1 1 total 0.666524 0.006541\n", + "4 2 1 1 2 total 1.291378 0.020686\n", + "7 2 2 1 1 total 0.667386 0.005754\n", + "6 2 2 1 2 total 1.292908 0.027042" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = scattering.get_pandas_dataframe()\n", "df.head(10)" @@ -827,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -850,7 +995,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -880,11 +1025,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-6.661338e-160.045734
11116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...5.551115e-160.011425
21210.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...0.000000e+000.046921
31216.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...-1.110223e-160.006502
42110.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...4.440892e-160.030542
52116.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...3.330669e-160.009373
62210.000000e+006.250000e-07total(((total / flux) - (absorption / flux)) - (sca...-2.220446e-160.039990
72216.250000e-072.000000e+01total(((total / flux) - (absorption / flux)) - (sca...0.000000e+000.008229
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 (((total / flux) - (absorption / flux)) - (sca... -6.66e-16 4.57e-02 \n", + "1 (((total / flux) - (absorption / flux)) - (sca... 5.55e-16 1.14e-02 \n", + "2 (((total / flux) - (absorption / flux)) - (sca... 0.00e+00 4.69e-02 \n", + "3 (((total / flux) - (absorption / flux)) - (sca... -1.11e-16 6.50e-03 \n", + "4 (((total / flux) - (absorption / flux)) - (sca... 4.44e-16 3.05e-02 \n", + "5 (((total / flux) - (absorption / flux)) - (sca... 3.33e-16 9.37e-03 \n", + "6 (((total / flux) - (absorption / flux)) - (sca... -2.22e-16 4.00e-02 \n", + "7 (((total / flux) - (absorption / flux)) - (sca... 0.00e+00 8.23e-03 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to compute the difference between the total, absorption and scattering\n", "difference = total.xs_tally - absorption.xs_tally - scattering.xs_tally\n", @@ -902,11 +1206,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0759700.002673
11116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0198160.000597
21210.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0763800.002764
31216.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0183040.000376
42110.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0759890.001752
52116.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0190920.000579
62210.000000e+006.250000e-07total((absorption / flux) / (total / flux))0.0762360.002319
72216.250000e-072.000000e+01total((absorption / flux) / (total / flux))0.0196820.000472
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 ((absorption / flux) / (total / flux)) 7.60e-02 2.67e-03 \n", + "1 ((absorption / flux) / (total / flux)) 1.98e-02 5.97e-04 \n", + "2 ((absorption / flux) / (total / flux)) 7.64e-02 2.76e-03 \n", + "3 ((absorption / flux) / (total / flux)) 1.83e-02 3.76e-04 \n", + "4 ((absorption / flux) / (total / flux)) 7.60e-02 1.75e-03 \n", + "5 ((absorption / flux) / (total / flux)) 1.91e-02 5.79e-04 \n", + "6 ((absorption / flux) / (total / flux)) 7.62e-02 2.32e-03 \n", + "7 ((absorption / flux) / (total / flux)) 1.97e-02 4.72e-04 " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to compute the absorption-to-total MGXS ratio\n", "absorption_to_total = absorption.xs_tally / total.xs_tally\n", @@ -917,11 +1380,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9240300.031356
11116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9801840.016619
21210.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9236200.032056
31216.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9816960.009510
42110.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9240110.020939
52116.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9809080.013650
62210.000000e+006.250000e-07total((scatter / flux) / (total / flux))0.9237640.027368
72216.250000e-072.000000e+01total((scatter / flux) / (total / flux))0.9803180.011958
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 ((scatter / flux) / (total / flux)) 9.24e-01 3.14e-02 \n", + "1 ((scatter / flux) / (total / flux)) 9.80e-01 1.66e-02 \n", + "2 ((scatter / flux) / (total / flux)) 9.24e-01 3.21e-02 \n", + "3 ((scatter / flux) / (total / flux)) 9.82e-01 9.51e-03 \n", + "4 ((scatter / flux) / (total / flux)) 9.24e-01 2.09e-02 \n", + "5 ((scatter / flux) / (total / flux)) 9.81e-01 1.36e-02 \n", + "6 ((scatter / flux) / (total / flux)) 9.24e-01 2.74e-02 \n", + "7 ((scatter / flux) / (total / flux)) 9.80e-01 1.20e-02 " + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to compute the scattering-to-total MGXS ratio\n", "scattering_to_total = scattering.xs_tally / total.xs_tally\n", @@ -939,11 +1561,170 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 10000energy low [MeV]energy high [MeV]nuclidescoremeanstd. dev.
xyz
01110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.031469
11116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.016630
21210.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.032175
31216.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.009517
42110.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.021012
52116.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.013662
62210.000000e+006.250000e-07total(((absorption / flux) / (total / flux)) + ((sc...10.027466
72216.250000e-072.000000e+01total(((absorption / flux) / (total / flux)) + ((sc...10.011967
\n", + "
" + ], + "text/plain": [ + " mesh 10000 energy low [MeV] energy high [MeV] nuclide \\\n", + " x y z \n", + "0 1 1 1 0.00e+00 6.25e-07 total \n", + "1 1 1 1 6.25e-07 2.00e+01 total \n", + "2 1 2 1 0.00e+00 6.25e-07 total \n", + "3 1 2 1 6.25e-07 2.00e+01 total \n", + "4 2 1 1 0.00e+00 6.25e-07 total \n", + "5 2 1 1 6.25e-07 2.00e+01 total \n", + "6 2 2 1 0.00e+00 6.25e-07 total \n", + "7 2 2 1 6.25e-07 2.00e+01 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 3.15e-02 \n", + "1 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 1.66e-02 \n", + "2 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 3.22e-02 \n", + "3 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 9.52e-03 \n", + "4 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 2.10e-02 \n", + "5 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 1.37e-02 \n", + "6 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 2.75e-02 \n", + "7 (((absorption / flux) / (total / flux)) + ((sc... 1.00e+00 1.20e-02 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Use tally arithmetic to ensure that the absorption- and scattering-to-total MGXS ratios sum to unity\n", "sum_ratio = absorption_to_total + scattering_to_total\n", From d7b911645d6256a6cb3bf900d02031bf6601e121 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 5 Jul 2016 10:18:50 -0400 Subject: [PATCH 06/49] fixed issue in tally.get_slice() --- .../pythonapi/examples/mgxs-part-i.ipynb | 84 ++++++++++++++++--- openmc/tallies.py | 7 +- 2 files changed, 73 insertions(+), 18 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index f3433b98c4..0cfebedc34 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -530,8 +530,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: edf2dd76c731a711cea7bbc28f0982292c19389f\n", - " Date/Time: 2016-07-05 08:42:21\n", + " Git SHA1: 092760d59fbac8d929ab33b5fdc48eab0c6cc8ac\n", + " Date/Time: 2016-07-05 08:53:58\n", " MPI Processes: 4\n", "\n", " ===========================================================================\n", @@ -587,20 +587,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 9.5600E-01 seconds\n", - " Reading cross sections = 2.7100E-01 seconds\n", - " Total time in simulation = 1.7180E+00 seconds\n", - " Time in transport only = 1.6250E+00 seconds\n", - " Time in inactive batches = 2.7700E-01 seconds\n", - " Time in active batches = 1.4410E+00 seconds\n", + " Total time for initialization = 1.2080E+00 seconds\n", + " Reading cross sections = 2.6300E-01 seconds\n", + " Total time in simulation = 1.6120E+00 seconds\n", + " Time in transport only = 1.5200E+00 seconds\n", + " Time in inactive batches = 2.8400E-01 seconds\n", + " Time in active batches = 1.3280E+00 seconds\n", " Time synchronizing fission bank = 6.1000E-02 seconds\n", " Sampling source sites = 0.0000E+00 seconds\n", " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 5.0000E-03 seconds\n", - " Total time elapsed = 2.6810E+00 seconds\n", - " Calculation Rate (inactive) = 36101.1 neutrons/second\n", - " Calculation Rate (active) = 6939.63 neutrons/second\n", + " Total time elapsed = 2.8290E+00 seconds\n", + " Calculation Rate (inactive) = 35211.3 neutrons/second\n", + " Calculation Rate (active) = 7530.12 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -681,62 +681,122 @@ "text": [ "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n", "['mesh']\n", "[((1, 1, 1), (1, 2, 1), (2, 1, 1), (2, 2, 1))]\n", + "4\n", + "4\n", + "4\n", + "4\n", "[0]\n", "[10000]\n" ] diff --git a/openmc/tallies.py b/openmc/tallies.py index 0531cf47fe..4fc19f1e5d 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2983,18 +2983,13 @@ class Tally(object): bin_indices.extend([bin_index]) bin_indices.extend([bin_index, bin_index+1]) num_bins += 1 - elif filter_type == 'distribcell': + elif filter_type in ['distribcell', 'mesh']: bin_indices = [0] num_bins = find_filter.num_bins - elif filter_type == 'mesh': - bin_indices = [0] - num_bins = find_filter.mesh.num_mesh_cells else: bin_indices.append(bin_index) num_bins += 1 - print(bin_indices) - print(find_filter.bins) find_filter.bins = np.unique(find_filter.bins[bin_indices]) find_filter.num_bins = num_bins From a38f53d26f5585cd2d312567a3f69baf369dbe9a Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 29 Jul 2016 10:50:08 -0500 Subject: [PATCH 07/49] Add Madland fission-Q support to openmc.data --- openmc/data/__init__.py | 1 + openmc/data/endf_utils.py | 43 +++++ openmc/data/fission_energy.py | 285 ++++++++++++++++++++++++++++++++++ openmc/data/neutron.py | 22 +++ 4 files changed, 351 insertions(+) create mode 100644 openmc/data/endf_utils.py create mode 100644 openmc/data/fission_energy.py diff --git a/openmc/data/__init__.py b/openmc/data/__init__.py index ae8ea8191f..e60878d601 100644 --- a/openmc/data/__init__.py +++ b/openmc/data/__init__.py @@ -14,3 +14,4 @@ from .nbody import * from .thermal import * from .urr import * from .library import * +from .fission_energy import * diff --git a/openmc/data/endf_utils.py b/openmc/data/endf_utils.py new file mode 100644 index 0000000000..6db3c611cf --- /dev/null +++ b/openmc/data/endf_utils.py @@ -0,0 +1,43 @@ +"""This module contains a few utility functions for reading ENDF_ data. It is by +no means enough to read an entire ENDF file. For a more complete ENDF reader, +see Pyne_. + +.. _ENDF: http://www.nndc.bnl.gov/endf +.. _Pyne: http://www.pyne.io + +""" + +import re + +def read_float(float_string): + """Parse ENDF 6E11.0 formatted string into a float.""" + assert len(float_string) == 11 + pattern = '([\s\\-]\d+\\.\d+)([\\+\\-]\d+)' + mantissa, exponent = re.match(pattern, float_string).groups() + return float(mantissa + 'e' + exponent) + + +def read_CONT_line(line): + """Parse 80-column line from ENDF CONT record into floats and ints.""" + return (read_float(line[0:11]), read_float(line[11:22]), int(line[22:33]), + int(line[33:44]), int(line[44:55]), int(line[55:66]), + int(line[66:70]), int(line[70:72]), int(line[72:75]), + int(line[75:80])) + +def identify_nuclide(fname): + """Read the header of an ENDF file and extract identifying information.""" + with open(fname, 'r') as fh: + # Skip the tape id (TPID). + line = fh.readline() + + # Read the first HEAD and CONT info. + line = fh.readline() + ZA, AW, LRP, LFI, NLIB, NMOD, MAT, MF, MT, NS = read_CONT_line(line) + line = fh.readline() + ELIS, STA, LIS, LISO, junk, NFOR, MAT, MF, MT, NS = read_CONT_line(line) + + # Return dictionary of the most important identifying information. + return {'Z': int(ZA) // 1000, + 'A': int(ZA) % 1000, + 'LIS': LIS, + 'LISO': LISO} diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py new file mode 100644 index 0000000000..5716a3e858 --- /dev/null +++ b/openmc/data/fission_energy.py @@ -0,0 +1,285 @@ +from collections import Callable +import sys +#from warnings import warn + +import numpy as np +from numpy.polynomial.polynomial import Polynomial + +from .function import Tabulated1D, Sum +from .endf_utils import read_float, read_CONT_line, identify_nuclide +import openmc.checkvalue as cv + +if sys.version_info[0] >= 3: + basestring = str + + +class FissionEnergyRelease(object): + def __init__(self): + self._fragments = None + self._prompt_neutrons = None + self._delayed_neutrons = None + self._prompt_photons = None + self._delayed_photons = None + self._betas = None + self._neutrinos = None + self._form = None + + @property + def fragments(self): + return self._fragments + + @property + def prompt_neutrons(self): + return self._prompt_neutrons + + @property + def delayed_neutrons(self): + return self._delayed_neutrons + + @property + def prompt_photons(self): + return self._prompt_photons + + @property + def delayed_photons(self): + return self._delayed_photons + + @property + def betas(self): + return self._betas + + @property + def neutrinos(self): + return self._neutrinos + + @property + def recoverable(self): + return Sum([self.fragments, self.prompt_neutrons, self.delayed_neutrons, + self.prompt_photons, self.delayed_photons, self.betas]) + + @property + def total(self): + return Sum([self.fragments, self.prompt_neutrons, self.delayed_neutrons, + self.prompt_photons, self.delayed_photons, self.betas, + self.neutrinos]) + + @property + def form(self): + return self._form + + @fragments.setter + def fragments(self, energy_release): + cv.check_type('fragments', energy_release, Callable) + self._fragments = energy_release + + @prompt_neutrons.setter + def prompt_neutrons(self, energy_release): + cv.check_type('prompt_neutrons', energy_release, Callable) + self._prompt_neutrons = energy_release + + @delayed_neutrons.setter + def delayed_neutrons(self, energy_release): + cv.check_type('delayed_neutrons', energy_release, Callable) + self._delayed_neutrons = energy_release + + @prompt_photons.setter + def prompt_photons(self, energy_release): + cv.check_type('prompt_photons', energy_release, Callable) + self._prompt_photons = energy_release + + @delayed_photons.setter + def delayed_photons(self, energy_release): + cv.check_type('delayed_photons', energy_release, Callable) + self._delayed_photons = energy_release + + @betas.setter + def betas(self, energy_release): + cv.check_type('betas', energy_release, Callable) + self._betas = energy_release + + @neutrinos.setter + def neutrinos(self, energy_release): + cv.check_type('neutrinos', energy_release, Callable) + self._neutrinos = energy_release + + @form.setter + def form(self, form): + cv.check_value('format', form, ('Madland', 'Sher-Beck')) + self._form = form + + @classmethod + def from_endf(cls, filename, incident_neutron): + """Generate fission energy release data from an ENDF file. + + Parameters + ---------- + filename : str + Name of the ENDF file containing fission energy release data + + incident_neutron : openmc.data.IncidentNeutron + Corresponding incident neutron dataset + + Returns + ------- + openmc.data.FissionEnergyRelease + Fission energy release data + + """ + + # Check to make sure this ENDF file matches the expected isomer. + ident = identify_nuclide(filename) + if ident['Z'] != incident_neutron.atomic_number: + pass + if ident['A'] != incident_neutron.mass_number: + pass + if ident['LISO'] != incident_neutron.metastable: + pass + + # Extract the MF=1, MT=458 section. + lines = [] + with open(filename, 'r') as fh: + line = fh.readline() + while line != '': + if line[70:75] == ' 1458': + lines.append(line) + line = fh.readline() + + # Read the number of coefficients in this LIST record. + NPL = read_CONT_line(lines[1])[4] + + # Parse the ENDF LIST into an array. + data = [] + for i in range(NPL): + row, column = divmod(i, 6) + data.append(read_float(lines[2 + row][11*column:11*(column+1)])) + + # Declare the coefficient names and the order they are given in. The + # LIST contains a value followed immediately by an uncertainty for each + # of these components, times the polynomial order + 1. If we only find + # one value for each of these components, then we need to use the + # Sher-Beck formula for energy dependence. Otherwise, it is a + # polynomial. + labels = ('EFR', 'ENP', 'END', 'EGP', 'EGD', 'EB', 'ENU', 'ER', 'ET') + + # Associate each set of values and uncertainties with its label. + value = dict() + uncertainty = dict() + for i in range(len(labels)): + value[labels[i]] = data[2*i::18] + uncertainty[labels[i]] = data[2*i + 1::18] + + # In ENDF/B-7.1, data for 2nd-order coefficients were mistakenly not + # converted from MeV to eV. Check for this error and fix it if present. + n_coeffs = len(value['EFR']) + if n_coeffs == 3: # Only check 2nd-order data. + # Check each energy component for the error. If a 1 MeV neutron + # causes a change of more than 100 MeV, we know something is wrong. + error_present = False + for coeffs in value.values(): + second_order = coeffs[2] + if abs(second_order) * 1e12 > 1e8: + error_present = True + break + + # If we found the error, reduce all 2nd-order coeffs by 10**6. + if error_present: + for coeffs in value.values(): coeffs[2] *= 1e-6 + for coeffs in uncertainty.values(): coeffs[2] *= 1e-6 + + # Perform the sanity check again... just in case. + for coeffs in value.values(): + second_order = coeffs[2] + if abs(second_order) * 1e12 > 1e8: + raise ValueError("Encountered a ludicrously large second-" + "order polynomial coefficient.") + + # Convert eV to MeV. + for coeffs in value.values(): + for i in range(len(coeffs)): + coeffs[i] *= 10**(-6 + 6*i) + for coeffs in uncertainty.values(): + for i in range(len(coeffs)): + coeffs[i] *= 10**(-6 + 6*i) + + out = cls() + if n_coeffs > 1: + out.form = 'Madland' + out.fragments = Polynomial(value['EFR']) + out.prompt_neutrons = Polynomial(value['ENP']) + out.delayed_neutrons = Polynomial(value['END']) + out.prompt_photons = Polynomial(value['EGP']) + out.delayed_photons = Polynomial(value['EGD']) + out.betas = Polynomial(value['EB']) + out.neutrinos = Polynomial(value['ENU']) + else: + out.form = 'Sher-Beck' + raise NotImplemented + + return out + + @classmethod + def from_hdf5(cls, group): + """Generate fission energy release data from an HDF5 group. + + Parameters + ---------- + group : h5py.Group + HDF5 group to read from + + Returns + ------- + openmc.data.FissionEnergyRelease + Fission energy release data + + """ + + obj = cls() + if group.attrs['format'] == 'Madland': + obj.fragments = Polynomial(group['fragments'].value) + obj.prompt_neutrons = Polynomial(group['prompt_neutrons'].value) + obj.delayed_neutrons = Polynomial(group['delayed_neutrons'].value) + obj.prompt_photons = Polynomial(group['prompt_photons'].value) + obj.delayed_photons = Polynomial(group['delayed_photons'].value) + obj.betas = Polynomial(group['betas'].value) + obj.neutrinos = Polynomial(group['neutrinos'].value) + elif group.attrs['format'] == 'Sher-Beck': + raise NotImplemented + else: + raise ValueError('Unrecognized energy release format') + + return obj + + def to_hdf5(self, group): + """Write energy release data to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + + """ + + if self.form == 'Madland': + group.attrs['format'] = np.string_('Madland') + group.create_dataset('fragments', data=self.fragments.coef) + group.create_dataset('prompt_neutrons', + data=self.prompt_neutrons.coef) + group.create_dataset('delayed_neutrons', + data=self.delayed_neutrons.coef) + group.create_dataset('prompt_photons', + data=self.prompt_photons.coef) + group.create_dataset('delayed_photons', + data=self.delayed_photons.coef) + group.create_dataset('betas', data=self.betas.coef) + group.create_dataset('neutrinos', data=self.neutrinos.coef) + elif self.form == 'Sher-Beck': + group.attrs['format'] = np.string_('Sher-Beck') + self.fragments.to_hdf5(group, 'fragments') + self.prompt_neutrons.to_hdf5(group, 'prompt_neutrons') + self.delayed_neutrons.to_hdf5(group, 'delayed_neutrons') + self.prompt_photons.to_hdf5(group, 'prompt_photons') + self.delayed_photons.to_hdf5(group, 'delayed_photons') + self.betas.to_hdf5(group, 'betas') + self.neutrinos.to_hdf5(group, 'neutrinos') + else: + raise ValueError('Unrecognized energy release format') diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 63b2bab01b..84d9bcb2c6 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -9,6 +9,7 @@ import h5py from .data import ATOMIC_SYMBOL, SUM_RULES from .ace import Table, get_table +from .fission_energy import FissionEnergyRelease from .function import Tabulated1D, Sum from .product import Product from .reaction import Reaction, _get_photon_products @@ -81,6 +82,7 @@ class IncidentNeutron(object): self.temperature = temperature self._energy = None + self._fission_energy = None self.reactions = OrderedDict() self.summed_reactions = OrderedDict() self.urr = None @@ -126,6 +128,10 @@ class IncidentNeutron(object): def energy(self): return self._energy + @property + def fission_energy(self): + return self._fission_energy + @property def temperature(self): return self._temperature @@ -186,6 +192,12 @@ class IncidentNeutron(object): cv.check_type('energy grid', energy, Iterable, Real) self._energy = energy + @fission_energy.setter + def fission_energy(self, fission_energy): + cv.check_type('fission energy release', fission_energy, + FissionEnergyRelease) + self._fission_energy = fission_energy + @reactions.setter def reactions(self, reactions): cv.check_type('reactions', reactions, Mapping) @@ -276,6 +288,11 @@ class IncidentNeutron(object): urr_group = g.create_group('urr') self.urr.to_hdf5(urr_group) + # Write fission energy release data + if self.fission_energy is not None: + fer_group = g.create_group('fission_energy_release') + self.fission_energy.to_hdf5(fer_group) + f.close() @classmethod @@ -331,6 +348,11 @@ class IncidentNeutron(object): urr_group = group['urr'] data.urr = ProbabilityTables.from_hdf5(urr_group) + # Read fission energy release data + if 'fission_energy_release' in group: + fer_group = group['fission_energy_release'] + data.fission_energy = FissionEnergyRelease.from_hdf5(fer_group) + return data @classmethod From 9acac0725a26efc14906d692bc99f0dacabeccea Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 29 Jul 2016 13:54:30 -0500 Subject: [PATCH 08/49] Add Madland fission-Q support to F90 --- openmc/data/fission_energy.py | 27 ++++++ src/constants.F90 | 6 +- src/input_xml.F90 | 4 + src/nuclide_header.F90 | 34 ++++++- src/output.F90 | 2 + src/tally.F90 | 162 +++++++++++++++++++++++++++++----- 6 files changed, 209 insertions(+), 26 deletions(-) diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index 5716a3e858..7415a9b515 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -62,6 +62,19 @@ class FissionEnergyRelease(object): return Sum([self.fragments, self.prompt_neutrons, self.delayed_neutrons, self.prompt_photons, self.delayed_photons, self.betas, self.neutrinos]) + + @property + def prompt_q(self): + return Sum([self.fragments, self.prompt_neutrons, self.prompt_photons, + lambda E: -E]) + + @property + def recoverable_q(self): + return Sum([self.recoverable, lambda E: -E]) + + @property + def total_q(self): + return Sum([self.total, lambda E: -E]) @property def form(self): @@ -272,6 +285,20 @@ class FissionEnergyRelease(object): data=self.delayed_photons.coef) group.create_dataset('betas', data=self.betas.coef) group.create_dataset('neutrinos', data=self.neutrinos.coef) + + q_prompt = (self.fragments + self.prompt_neutrons + + self.prompt_photons + Polynomial((-1.0, 0.0))) + group.create_dataset('q_prompt', data=q_prompt.coef) + q_recoverable = (self.fragments + self.prompt_neutrons + + self.delayed_neutrons + self.prompt_photons + + self.delayed_photons + self.betas + + Polynomial((-1.0, 0.0))) + group.create_dataset('q_recoverable', data=q_recoverable.coef) + q_total = (self.fragments + self.prompt_neutrons + + self.delayed_neutrons + self.prompt_photons + + self.delayed_photons + self.betas + self.neutrinos + + Polynomial((-1.0, 0.0))) + group.create_dataset('q_total', data=q_total.coef) elif self.form == 'Sher-Beck': group.attrs['format'] = np.string_('Sher-Beck') self.fragments.to_hdf5(group, 'fragments') diff --git a/src/constants.F90 b/src/constants.F90 index d2bb6e1cf6..5447b5cc21 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -289,7 +289,7 @@ module constants EVENT_ABSORB = 2 ! Tally score type - integer, parameter :: N_SCORE_TYPES = 20 + integer, parameter :: N_SCORE_TYPES = 22 integer, parameter :: & SCORE_FLUX = -1, & ! flux SCORE_TOTAL = -2, & ! total reaction rate @@ -310,7 +310,9 @@ module constants SCORE_NU_SCATTER_YN = -17, & ! angular flux-weighted nu-scattering moment (0:N) SCORE_EVENTS = -18, & ! number of events SCORE_DELAYED_NU_FISSION = -19, & ! delayed neutron production rate - SCORE_INVERSE_VELOCITY = -20 ! flux-weighted inverse velocity + SCORE_INVERSE_VELOCITY = -20, & ! flux-weighted inverse velocity + SCORE_FISS_Q_PROMPT = -21, & ! prompt fission Q-value + SCORE_FISS_Q_RECOV = -22 ! recoverable fission Q-value ! Maximum scattering order supported integer, parameter :: MAX_ANG_ORDER = 10 diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 3c8291e9c8..f661927d76 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -3629,6 +3629,10 @@ contains t % score_bins(j) = SCORE_KAPPA_FISSION case ('inverse-velocity') t % score_bins(j) = SCORE_INVERSE_VELOCITY + case ('fission-q-prompt') + t % score_bins(j) = SCORE_FISS_Q_PROMPT + case ('fission-q-recoverable') + t % score_bins(j) = SCORE_FISS_Q_RECOV case ('current') t % score_bins(j) = SCORE_CURRENT t % type = TALLY_SURFACE_CURRENT diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 8ff83482e5..31e069b68f 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -88,6 +88,10 @@ module nuclide_header type(DictIntInt) :: reaction_index ! map MT values to index in reactions ! array; used at tally-time + ! Fission energy release + class(Function1D), allocatable :: fission_q_prompt ! prompt neutrons, gammas + class(Function1D), allocatable :: fission_q_recov ! neutrons, gammas, betas + contains procedure :: clear => nuclide_clear procedure :: print => nuclide_print @@ -192,6 +196,8 @@ module nuclide_header integer(HID_T) :: rxs_group integer(HID_T) :: rx_group integer(HID_T) :: total_nu + integer(HID_T) :: fer_group ! fission_energy_release group + integer(HID_T) :: fer_dset integer(SIZE_T) :: name_len, name_file_len integer(HSIZE_T) :: j integer(HSIZE_T) :: dims(1) @@ -251,8 +257,8 @@ module nuclide_header call this % urr_data % from_hdf5(urr_group) ! if the inelastic competition flag indicates that the inelastic cross - ! section should be determined from a normal reaction cross section, we need - ! to get the index of the reaction + ! section should be determined from a normal reaction cross section, we + ! need to get the index of the reaction if (this % urr_data % inelastic_flag > 0) then do i = 1, size(this % reactions) if (this % reactions(i) % MT == this % urr_data % inelastic_flag) then @@ -296,6 +302,30 @@ module nuclide_header call close_group(nu_group) end if + ! Read fission energy release data if present + call h5ltpath_valid_f(group_id, 'fission_energy_release', .true., exists, & + hdf5_err) + if (exists) then + fer_group = open_group(group_id, 'fission_energy_release') + call read_attribute(temp, fer_group, 'format') + if (temp == 'Madland') then + ! The data uses the Madland format, i.e. polynomials + + ! Read the prompt Q-value + allocate(Polynomial :: this % fission_q_prompt) + fer_dset = open_dataset(fer_group, 'q_prompt') + call this % fission_q_prompt % from_hdf5(fer_dset) + call close_dataset(fer_dset) + + ! Read the recoverable energy Q-value + allocate(Polynomial :: this % fission_q_recov) + fer_dset = open_dataset(fer_group, 'q_recoverable') + call this % fission_q_recov % from_hdf5(fer_dset) + call close_dataset(fer_dset) + end if + call close_group(fer_group) + end if + ! Create derived cross section data call this % create_derived() diff --git a/src/output.F90 b/src/output.F90 index 09df23f0d5..35524a9a35 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -791,6 +791,8 @@ contains score_names(abs(SCORE_NU_SCATTER_YN)) = "Scattering Prod. Rate Moment" score_names(abs(SCORE_DELAYED_NU_FISSION)) = "Delayed-Nu-Fission Rate" score_names(abs(SCORE_INVERSE_VELOCITY)) = "Flux-Weighted Inverse Velocity" + score_names(abs(SCORE_FISS_Q_PROMPT)) = "Prompt fission power" + score_names(abs(SCORE_FISS_Q_RECOV)) = "Recoverable fission power" ! Create filename for tally output filename = trim(path_output) // "tallies.out" diff --git a/src/tally.F90 b/src/tally.F90 index b40a39ce0c..1271da7da9 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -625,14 +625,14 @@ contains if (survival_biasing) then ! No fission events occur if survival biasing is on -- need to ! calculate fraction of absorptions that would have resulted in - ! fission scale by kappa-fission - associate (nuc => nuclides(p%event_nuclide)) - if (micro_xs(p%event_nuclide)%absorption > ZERO .and. & - nuc%fissionable) then - score = p%absorb_wgt * & - nuc%reactions(nuc%index_fission(1))%Q_value * & - micro_xs(p%event_nuclide)%fission / & - micro_xs(p%event_nuclide)%absorption + ! fission scaled by kappa-fission + associate (nuc => nuclides(p % event_nuclide)) + if (micro_xs(p % event_nuclide) % absorption > ZERO .and. & + nuc % fissionable) then + score = p % absorb_wgt * & + nuc % reactions(nuc % index_fission(1)) % Q_value * & + micro_xs(p % event_nuclide) % fission / & + micro_xs(p % event_nuclide) % absorption end if end associate else @@ -641,12 +641,12 @@ contains ! All fission events will contribute, so again we can use ! particle's weight entering the collision as the estimate for ! the fission energy production rate - associate (nuc => nuclides(p%event_nuclide)) - if (nuc%fissionable) then - score = p%last_wgt * & - nuc%reactions(nuc%index_fission(1))%Q_value * & - micro_xs(p%event_nuclide)%fission / & - micro_xs(p%event_nuclide)%absorption + associate (nuc => nuclides(p % event_nuclide)) + if (nuc % fissionable) then + score = p % last_wgt * & + nuc % reactions(nuc % index_fission(1)) % Q_value * & + micro_xs(p % event_nuclide) % fission / & + micro_xs(p % event_nuclide) % absorption end if end associate end if @@ -654,22 +654,23 @@ contains else if (i_nuclide > 0) then associate (nuc => nuclides(i_nuclide)) - if (nuc%fissionable) then - score = nuc%reactions(nuc%index_fission(1))%Q_value * & - micro_xs(i_nuclide)%fission * atom_density * flux + if (nuc % fissionable) then + score = nuc % reactions(nuc % index_fission(1)) % Q_value * & + micro_xs(i_nuclide) % fission * atom_density * flux end if end associate else - do l = 1, materials(p%material)%n_nuclides + do l = 1, materials(p % material) % n_nuclides ! Determine atom density and index of nuclide - atom_density_ = materials(p%material)%atom_density(l) - i_nuc = materials(p%material)%nuclide(l) + atom_density_ = materials(p % material) % atom_density(l) + i_nuc = materials(p % material) % nuclide(l) ! If nuclide is fissionable, accumulate kappa fission associate(nuc => nuclides(i_nuc)) if (nuc % fissionable) then - score = score + nuc%reactions(nuc%index_fission(1))%Q_value * & - micro_xs(i_nuc)%fission * atom_density_ * flux + score = score + & + nuc % reactions(nuc % index_fission(1)) % Q_value * & + micro_xs(i_nuc) % fission * atom_density_ * flux end if end associate end do @@ -694,6 +695,123 @@ contains end if end if + case (SCORE_FISS_Q_PROMPT) + if (t % estimator == ESTIMATOR_ANALOG) then + if (survival_biasing) then + ! No fission events occur if survival biasing is on -- need to + ! calculate fraction of absorptions that would have resulted in + ! fission scaled by Q-value + associate (nuc => nuclides(p % event_nuclide)) + if (micro_xs(p % event_nuclide) % absorption > ZERO .and. & + allocated(nuc % fission_q_prompt)) then + score = p % absorb_wgt & + * nuc % fission_q_prompt % evaluate(p % last_E) & + * micro_xs(p % event_nuclide) % fission & + / micro_xs(p % event_nuclide) % absorption + end if + end associate + else + ! Skip any non-absorption events + if (p % event == EVENT_SCATTER) cycle SCORE_LOOP + ! All fission events will contribute, so again we can use + ! particle's weight entering the collision as the estimate for + ! the fission energy production rate + associate (nuc => nuclides(p % event_nuclide)) + if (allocated(nuc % fission_q_prompt)) then + score = p % last_wgt & + * nuc % fission_q_prompt % evaluate(p % last_E) & + * micro_xs(p % event_nuclide) % fission & + / micro_xs(p % event_nuclide) % absorption + end if + end associate + end if + + else + if (t % estimator == ESTIMATOR_COLLISION) then + E = p % last_E + else + E = p % E + end if + + if (i_nuclide > 0) then + if (allocated(nuclides(i_nuclide) % fission_q_prompt)) then + score = micro_xs(i_nuclide) % fission * atom_density * flux & + * nuclides(i_nuclide) % fission_q_prompt % evaluate(E) + else + score = ZERO + end if + else + score = ZERO + do l = 1, materials(p % material) % n_nuclides + atom_density_ = materials(p % material) % atom_density(l) + i_nuc = materials(p % material) % nuclide(l) + if (allocated(nuclides(i_nuc) % fission_q_prompt)) then + score = score + micro_xs(i_nuc) % fission * atom_density_ & + * flux & + * nuclides(i_nuc) % fission_q_prompt % evaluate(E) + end if + end do + end if + end if + + case (SCORE_FISS_Q_RECOV) + if (t % estimator == ESTIMATOR_ANALOG) then + if (survival_biasing) then + ! No fission events occur if survival biasing is on -- need to + ! calculate fraction of absorptions that would have resulted in + ! fission scaled by Q-value + associate (nuc => nuclides(p % event_nuclide)) + if (micro_xs(p % event_nuclide) % absorption > ZERO .and. & + allocated(nuc % fission_q_recov)) then + score = p % absorb_wgt & + * nuc % fission_q_recov % evaluate(p % last_E) & + * micro_xs(p % event_nuclide) % fission & + / micro_xs(p % event_nuclide) % absorption + end if + end associate + else + ! Skip any non-absorption events + if (p % event == EVENT_SCATTER) cycle SCORE_LOOP + ! All fission events will contribute, so again we can use + ! particle's weight entering the collision as the estimate for + ! the fission energy production rate + associate (nuc => nuclides(p % event_nuclide)) + if (allocated(nuc % fission_q_recov)) then + score = p % last_wgt & + * nuc % fission_q_recov % evaluate(p % last_E) & + * micro_xs(p % event_nuclide) % fission & + / micro_xs(p % event_nuclide) % absorption + end if + end associate + end if + + else + if (t % estimator == ESTIMATOR_COLLISION) then + E = p % last_E + else + E = p % E + end if + + if (i_nuclide > 0) then + if (allocated(nuclides(i_nuclide) % fission_q_recov)) then + score = micro_xs(i_nuclide) % fission * atom_density * flux & + * nuclides(i_nuclide) % fission_q_recov % evaluate(E) + else + score = ZERO + end if + else + score = ZERO + do l = 1, materials(p % material) % n_nuclides + atom_density_ = materials(p % material) % atom_density(l) + i_nuc = materials(p % material) % nuclide(l) + if (allocated(nuclides(i_nuc) % fission_q_recov)) then + score = score + micro_xs(i_nuc) % fission * atom_density_ & + * flux * nuclides(i_nuc) % fission_q_recov % evaluate(E) + end if + end do + end if + end if + case default if (t % estimator == ESTIMATOR_ANALOG) then ! Any other score is assumed to be a MT number. Thus, we just need From b64dcd24c83d05e6041f01f84e65b0d0355d97fa Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 29 Jul 2016 16:09:06 -0500 Subject: [PATCH 09/49] Add Sher-Beck fission-Q support --- openmc/data/fission_energy.py | 96 ++++++++++++++++++++++++----------- src/nuclide_header.F90 | 17 +++++++ src/tally.F90 | 4 +- 3 files changed, 84 insertions(+), 33 deletions(-) diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index 7415a9b515..b7641a2370 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -1,4 +1,5 @@ from collections import Callable +from copy import deepcopy import sys #from warnings import warn @@ -64,16 +65,16 @@ class FissionEnergyRelease(object): self.neutrinos]) @property - def prompt_q(self): + def q_prompt(self): return Sum([self.fragments, self.prompt_neutrons, self.prompt_photons, lambda E: -E]) @property - def recoverable_q(self): + def q_recoverable(self): return Sum([self.recoverable, lambda E: -E]) @property - def total_q(self): + def q_total(self): return Sum([self.total, lambda E: -E]) @property @@ -226,7 +227,37 @@ class FissionEnergyRelease(object): out.neutrinos = Polynomial(value['ENU']) else: out.form = 'Sher-Beck' - raise NotImplemented + + # EFR and ENP are energy independent. Polynomial is used because it + # has a __call__ attribute that handles Iterable inputs. The + # energy-dependence of END is unspecified in ENDF-102 so assume it + # is independent. + out.fragments = Polynomial((value['EFR'][0])) + out.prompt_photons = Polynomial((value['EGP'][0])) + out.delayed_neutrons = Polynomial((value['END'][0])) + + # EDP, EB, and ENU are linear. + out.delayed_photons = Polynomial((value['EGD'][0], -0.075)) + out.betas = Polynomial((value['EB'][0], -0.075)) + out.neutrinos = Polynomial((value['ENU'][0], -0.105)) + + # Prompt neutrons require nu-data. It is not clear from ENDF-102 + # whether prompt or total nu values should be used, but the delayed + # neutron fraction is so small that the difference is negligible. + nu_prompt = [p for p in incident_neutron[18].products + if p.particle == 'neutron' + and p.emission_mode == 'prompt'] + if len(nu_prompt) == 0: + raise ValueError('Nu data is needed to compute fission energy ' + 'release with the Sher-Beck format.') + if len(nu_prompt) > 1: + raise ValueError('Ambiguous prompt nu value.') + if not isinstance(nu_prompt[0].yield_, Tabulated1D): + raise TypeError('Sher-Beck fission energy release currently ' + 'only supports Tabulated1D nu data.') + ENP = deepcopy(nu_prompt[0].yield_) + ENP.y = value['ENP'] + 1.307 * ENP.x - 8.07 * (ENP.y - ENP.y[0]) + out.prompt_neutrons = ENP return out @@ -247,16 +278,19 @@ class FissionEnergyRelease(object): """ obj = cls() + + obj.fragments = Polynomial(group['fragments'].value) + obj.delayed_neutrons = Polynomial(group['delayed_neutrons'].value) + obj.prompt_photons = Polynomial(group['prompt_photons'].value) + obj.delayed_photons = Polynomial(group['delayed_photons'].value) + obj.betas = Polynomial(group['betas'].value) + obj.neutrinos = Polynomial(group['neutrinos'].value) + if group.attrs['format'] == 'Madland': - obj.fragments = Polynomial(group['fragments'].value) obj.prompt_neutrons = Polynomial(group['prompt_neutrons'].value) - obj.delayed_neutrons = Polynomial(group['delayed_neutrons'].value) - obj.prompt_photons = Polynomial(group['prompt_photons'].value) - obj.delayed_photons = Polynomial(group['delayed_photons'].value) - obj.betas = Polynomial(group['betas'].value) - obj.neutrinos = Polynomial(group['neutrinos'].value) elif group.attrs['format'] == 'Sher-Beck': - raise NotImplemented + obj.prompt_neutrons = Tabulated1D.from_hdf5( + group['prompt_neutrons']) else: raise ValueError('Unrecognized energy release format') @@ -272,19 +306,20 @@ class FissionEnergyRelease(object): """ + group.create_dataset('fragments', data=self.fragments.coef) + group.create_dataset('delayed_neutrons', + data=self.delayed_neutrons.coef) + group.create_dataset('prompt_photons', + data=self.prompt_photons.coef) + group.create_dataset('delayed_photons', + data=self.delayed_photons.coef) + group.create_dataset('betas', data=self.betas.coef) + group.create_dataset('neutrinos', data=self.neutrinos.coef) + if self.form == 'Madland': group.attrs['format'] = np.string_('Madland') - group.create_dataset('fragments', data=self.fragments.coef) group.create_dataset('prompt_neutrons', data=self.prompt_neutrons.coef) - group.create_dataset('delayed_neutrons', - data=self.delayed_neutrons.coef) - group.create_dataset('prompt_photons', - data=self.prompt_photons.coef) - group.create_dataset('delayed_photons', - data=self.delayed_photons.coef) - group.create_dataset('betas', data=self.betas.coef) - group.create_dataset('neutrinos', data=self.neutrinos.coef) q_prompt = (self.fragments + self.prompt_neutrons + self.prompt_photons + Polynomial((-1.0, 0.0))) @@ -294,19 +329,18 @@ class FissionEnergyRelease(object): self.delayed_photons + self.betas + Polynomial((-1.0, 0.0))) group.create_dataset('q_recoverable', data=q_recoverable.coef) - q_total = (self.fragments + self.prompt_neutrons + - self.delayed_neutrons + self.prompt_photons + - self.delayed_photons + self.betas + self.neutrinos + - Polynomial((-1.0, 0.0))) - group.create_dataset('q_total', data=q_total.coef) elif self.form == 'Sher-Beck': group.attrs['format'] = np.string_('Sher-Beck') - self.fragments.to_hdf5(group, 'fragments') self.prompt_neutrons.to_hdf5(group, 'prompt_neutrons') - self.delayed_neutrons.to_hdf5(group, 'delayed_neutrons') - self.prompt_photons.to_hdf5(group, 'prompt_photons') - self.delayed_photons.to_hdf5(group, 'delayed_photons') - self.betas.to_hdf5(group, 'betas') - self.neutrinos.to_hdf5(group, 'neutrinos') + + q_prompt = deepcopy(self.prompt_neutrons) + q_prompt.y += self.fragments(q_prompt.x) + q_prompt.y += self.prompt_photons(q_prompt.x) + q_prompt.to_hdf5(group, 'q_prompt') + q_recoverable = q_prompt + q_recoverable.y += self.delayed_neutrons(q_recoverable.x) + q_recoverable.y += self.delayed_photons(q_recoverable.x) + q_recoverable.y += self.betas(q_recoverable.x) + q_recoverable.to_hdf5(group, 'q_recoverable') else: raise ValueError('Unrecognized energy release format') diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 31e069b68f..2a2a376bd5 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -322,6 +322,23 @@ module nuclide_header fer_dset = open_dataset(fer_group, 'q_recoverable') call this % fission_q_recov % from_hdf5(fer_dset) call close_dataset(fer_dset) + else if (temp == 'Sher-Beck') then + ! The data uses the Sher-Beck format. Python has handily converted this + ! format to Tabulated1Ds. + + ! Read the prompt Q-value + allocate(Tabulated1D :: this % fission_q_prompt) + fer_dset = open_dataset(fer_group, 'q_prompt') + call this % fission_q_prompt % from_hdf5(fer_dset) + call close_dataset(fer_dset) + + ! Read the recoverable energy Q-value + allocate(Tabulated1D :: this % fission_q_recov) + fer_dset = open_dataset(fer_group, 'q_recoverable') + call this % fission_q_recov % from_hdf5(fer_dset) + call close_dataset(fer_dset) + else + call fatal_error('Unrecognized fission energy release format.') end if call close_group(fer_group) end if diff --git a/src/tally.F90 b/src/tally.F90 index 1271da7da9..8d14b1c2a6 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -703,7 +703,7 @@ contains ! fission scaled by Q-value associate (nuc => nuclides(p % event_nuclide)) if (micro_xs(p % event_nuclide) % absorption > ZERO .and. & - allocated(nuc % fission_q_prompt)) then + allocated(nuc % fission_q_prompt)) then score = p % absorb_wgt & * nuc % fission_q_prompt % evaluate(p % last_E) & * micro_xs(p % event_nuclide) % fission & @@ -762,7 +762,7 @@ contains ! fission scaled by Q-value associate (nuc => nuclides(p % event_nuclide)) if (micro_xs(p % event_nuclide) % absorption > ZERO .and. & - allocated(nuc % fission_q_recov)) then + allocated(nuc % fission_q_recov)) then score = p % absorb_wgt & * nuc % fission_q_recov % evaluate(p % last_E) & * micro_xs(p % event_nuclide) % fission & From a5e9b870fd63064edb545a509174aea12eebf08d Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sun, 31 Jul 2016 21:43:34 -0400 Subject: [PATCH 10/49] added mdgxs-part-i.ipynb notebook for mdgxs --- .../pythonapi/examples/images/mdgxs.png | Bin 0 -> 23788 bytes .../pythonapi/examples/mdgxs-part-i.ipynb | 1394 +++++++++++++++++ openmc/mgxs/mdgxs.py | 107 +- openmc/tallies.py | 10 +- 4 files changed, 1503 insertions(+), 8 deletions(-) create mode 100644 docs/source/pythonapi/examples/images/mdgxs.png create mode 100644 docs/source/pythonapi/examples/mdgxs-part-i.ipynb diff --git a/docs/source/pythonapi/examples/images/mdgxs.png b/docs/source/pythonapi/examples/images/mdgxs.png new file mode 100644 index 0000000000000000000000000000000000000000..b93d0f0423065531db8547394919d68976f370a0 GIT binary patch literal 23788 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 literal 0 HcmV?d00001 diff --git a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb new file mode 100644 index 0000000000..2eeeffa3ca --- /dev/null +++ b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb @@ -0,0 +1,1394 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This IPython Notebook introduces the use of the `openmc.mgxs` module to calculate multi-energy-group and multi-delayed-group cross sections for an infinite homogeneous medium. In particular, this Notebook introduces the the following features:\n", + "\n", + "* Creation of multi-delayed-group cross sections for an **infinite homogeneous medium**\n", + "* Calculation of delayed neutron precursor concentrations\n", + "\n", + "**Note:** This Notebook illustrates the use of [Pandas](http://pandas.pydata.org/) `DataFrames` to containerize multi-group cross section data. We recommend using [Pandas](http://pandas.pydata.org/) >v0.15.0 or later since OpenMC's Python API leverages the multi-indexing feature included in the most recent releases of [Pandas](http://pandas.pydata.org/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction to Multi-Delayed-Group Cross Sections (MDGXS)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Many Monte Carlo particle transport codes, including OpenMC, use continuous-energy nuclear cross section data. However, most deterministic neutron transport codes use *multi-group cross sections* defined over discretized energy bins or *energy groups*. Furthermore, kinetics calculations typically separate out parameters that involve delayed neutrons by delayed groups. An example is the energy spectrum for prompt and delayed neutrons for U-235 and Pu-239 computed for a light water reactor spectrum." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcFPX/B/DXLqfcLHiwnB6geCuQiihoRaYg5YkFeKB5\nRIqa3zSPHfLKrPx6/LQsU9QArxJKU7+poJWGt+UtyiGogYh4Icd+fn8QIwu7HMsCO8v72WMfMvOZ\nmf3M7Dbv/Rzz+YgYYwyEEEKIwIgbOwOEEEKIOiiAEUIIESQKYIQQQgSJAhghhBBBogBGCCFEkCiA\nEUIIESQKYIQQQgSJAhghhBBBogBGCCFEkCiAEUIIESQKYIQQQgSJAhghhBBBogBGCCFEkCiAEVKP\n/vnnH/Tv3x+WlpaYM2dOvb7X1KlTsXTpUrX3X758Od577z0N5oiQ+kUBTGBcXFxgYmICCwsLmJub\nw8LCAtOnT2/sbFXr8uXLeOONNyCRSCCRSODl5YUDBw7U63sOGDAA3333Xb2+R3U2btyIFi1a4NGj\nR1i5cmWdjxcdHQ19fX2ln/+GDRswf/58tY89b948bNy4sc55rCg6OhpisRhffPGFwnpHR0ccO3as\nzsePiopCWFhYnY9DhEe/sTNAakckEmHfvn0YMGBAvb5PSUkJ9PT0NHa8wMBAvP/++9i3bx8A4NSp\nU2jsqeg0fY7KpKWloWPHjmrtqyp/3t7eGrnxNySJRIIVK1Zg8uTJMDMza/D3Z4xBJBI1+PuS+kUl\nMAFSdeOPjo5Gv379MGfOHEgkErRt21ahlJOfn4+JEydCKpXC0dERCxcu5I8VHR0NHx8fzJo1CzY2\nNoiKioJcLsfs2bPRvHlztG3bFv/3f/8HsVgMuVyO3bt3w9PTU+H9v/jiCwwbNqxSvh48eIDU1FRM\nnDgR+vr60NfXR58+feDt7Q0ASEpKgqOjI5YvX47mzZujTZs2iImJ4fcvLCzEhx9+CGdnZ9jZ2WHa\ntGl48eIFnx4fH48ePXrA0tISrq6uOHToEBYsWIDjx48jIiJCoZQiFouxfv16uLm5wc3NDWlpafw5\nlSlfcit/XaytrdGuXTucOHEC0dHRcHJyQqtWrbB161aln8f48eMRHR2NFStWwMLCAkeOHEFhYSEi\nIyNhb28PBwcHzJw5E0VFRQrX4bPPPoOdnR0mTJig4hug3Pjx47Fo0SL+mgcGBsLa2ho2Njbw9fXl\nt1uxYgUcHBxgYWEBd3d3HD16FEBpSSY0NJTfLiEhAZ07d4ZEIsHAgQNx9epVPq1169b44osv0K1b\nN1hbW2PMmDEoLCxUmTd3d3f06dMHX375pdJ0xhg+/fRTtGvXDs2bN0dwcDDy8vIUrkt5rVu3xpEj\nR3Dw4EEsW7YMO3bsgLm5OXr06AGg9DNcsGABfHx8YGpqitu3b+Pu3bsICgqCjY0N3Nzc8O233/LH\ni4qKwujRozF27FhYWFigS5cuOHv2bLXXjDQyRgTFxcWFHT58WGnali1bmKGhIdu0aROTy+Vsw4YN\nTCqV8ulBQUFs6tSp7Pnz5yw7O5v16tWLbdy4kd9XX1+f/d///R8rKSlhBQUFbMOGDaxTp04sKyuL\n5eXlsddee42JxWJWUlLCXrx4wWxsbNjVq1f54/fo0YP9+OOPSvPm5ubGAgIC2N69e9n9+/cV0hIT\nE5m+vj778MMPWWFhIUtKSmKmpqbs+vXrjDHGZsyYwYKCglheXh578uQJGzp0KPv4448ZY4z9+eef\nzNLSkr8mWVlZ7Nq1a4wxxvz8/NimTZsU3kskEjF/f3+Wl5fHCgoKWGpqKn9OZcrvt2XLFmZgYMCi\no6OZXC5nCxYsYE5OTiwiIoIVFhayQ4cOMXNzc/b06VOl5z1u3Di2cOFCfnnhwoWsT58+LCcnh+Xk\n5DBvb2+2aNEiheswb948VlhYyAoKCpR+xv369av2vebNm8emTp3KSkpKWHFxMfvtt98YY4xdu3aN\nOTo6snv37jHGGEtLS2O3bt1ijDHGcRwLDQ3ltzM1NWWHDx9mxcXF7LPPPmPt2rVjRUVFjLHS72Gv\nXr3YvXv32MOHD5m7uzv7+uuvlearLM8XLlxgVlZW7OHDh4wxxhwcHFhSUhJjjLFVq1axPn36sKys\nLFZYWMimTJnCxowZw18XR0dHhWOW//+gfL7L+Pn5MWdnZ3blyhVWUlLCioqKmK+vL/+5nT9/njVv\n3pwdOXKEP0azZs3YgQMHmFwuZ/PmzWO9e/eu9pqRxkUlMAF66623IJFIYG1tDYlEgk2bNvFpzs7O\nmDBhAkQiEcaOHYu7d+/in3/+wT///IMDBw5g1apVMDY2hq2tLSIjIxEbG8vva29vj2nTpkEsFsPI\nyAi7du3CjBkzYGdnB0tLS8ydO5ff1tDQEKNHj8b27dsBAJcuXUJaWhqGDBmiNM9Hjx5F69at8eGH\nH0IqlcLPzw83b97k00UiERYvXgwDAwP0798fQ4YMwc6dOwEA3377LVatWgVLS0uYmppi7ty5fL6/\n++47hIeHY+DAgQAAOzs7uLm5VXn9Pv74Y1haWsLIyKhG17t169YICwuDSCTC6NGjcefOHchkMhgY\nGOD111+HoaGhwrlUJSYmBjKZDDY2NrCxsYFMJsO2bdv4dD09PURFRcHAwEBl/k6cOKHw+ScnJ1fa\nxsDAAHfv3sXt27ehp6eHvn378scvLCzE33//jeLiYjg5OaF169aV9t+5cycCAgIwcOBA6Onp4cMP\nP8Tz58/xxx9/8NvMmDEDLVu2hJWVFQIDA3H+/Pkqz71r167w9/fHihUrKqVt3LgRS5cuhZ2dHQwM\nDLBo0SLs3r1boWRcW+PGjUOHDh0gFotx7949/P7771ixYgUMDAzQrVs3TJw4UeHa+/j44I033oBI\nJEJoaCguXrwIoObXjDQ8CmACFB8fj9zcXDx8+BC5ubkIDw/n01q1asX/3axZMwDAkydPkJaWhqKi\nItjZ2fE3vylTpiAnJ4ffvmI1TVZWlsK6iulhYWF8Vd/27dsxatQoGBgYKM2zVCrFmjVrcOPGDaSl\npcHExARjx47l062trWFsbMwvOzs7IysrC9nZ2Xj27Bk8PDz4DiBvvvkmHjx4AADIyMhA27Zta3bh\n/uXg4FCr7Vu2bMn/XXZNbW1tFdY9efKkRsfKysqCk5MTv1x2nmWaN2+u8hqW6dOnj8Ln/8orr1Ta\nZs6cOWjbti38/f3Rrl07Pmi0bdsW//3vf8FxHFq2bIl33nkH9+7dU5pPZ2dnflkkEsHR0RGZmZn8\nuvLXxcTEpEbX4JNPPsGGDRtw//59hfVpaWl4++23+c+4Y8eOMDAwqLRdbZT/vmZlZUEikcDExIRf\n5+zsrHA+5f/fMTExQUFBAeRyudJrdvfuXbXzRTSHApgAMTU6Pzg6OsLY2BgPHjzgb355eXn8r0wA\nlRq57ezscOfOHX45PT1dIb1Xr14wNDTE8ePHERMTo9B+UhV7e3u8//77+Pvvv/l1Dx8+xPPnzxXe\nSyqVwtbWFiYmJrh06RJyc3ORm5uLvLw8PHr0iD+vlJQUpe+jqtG+/HpTU1MAwLNnz/h1ym7ommJv\nb4+0tDR+OS0tDVKpVGne6sLMzAyff/45UlJS8NNPP+HLL7/k222Cg4Nx/PhxPh8fffRRpf2lUqlC\nPoHSHwu1Df4VtW/fHsOGDcOyZcsUztXJyQm//PIL/xk/fPgQT58+hZ2dHUxNTRU+n5KSEmRnZ/PL\nNfmcpVIpcnNz8fTpU35deno67O3ta5TvitesfG0EaTwUwJqIVq1awd/fHzNnzsTjx4/BGMOtW7eq\n7M02atQorF69GllZWcjLy8Nnn31WaZvQ0FBERETAwMCA75RRUV5eHjiOQ0pKChhjyMnJwXfffYc+\nffrw2zDGIJPJUFRUhOPHj2Pfvn0YNWoURCIRJk2ahMjISP6mlZmZiUOHDgEAwsPDsXnzZhw9ehSM\nMWRlZeHatWsASksIt27dqvK62Nrawt7eHtu3b4dcLsd3332nMiCWz6u6goODsWTJEuTk5CAnJweL\nFy+uceCvjX379vHnYWZmBn19fejp6eH69es4evQoCgsLYWhoiGbNmint6Thq1Cjs27cPR48eRXFx\nMT7//HMYGxsrfGbqWrRoETZv3sx30gCAyZMn4+OPP+Z/JGVnZyMhIQEA4ObmhoKCAvzyyy8oLi7G\nkiVLFDqMtGzZEqmpqVV+Lg4ODvD29sa8efPw4sULXLx4EZs2bUJISIjKfcqOV9NrRhoeBTABCgwM\nhIWFBf8aPny4ym3L/wrdunUrCgsL0bFjR0gkEowcObLK0sakSZPg7++Prl27wsPDA0OGDIG+vj7E\n4pdfm9DQUPz9999VPodjaGiI1NRUvP7667C0tETXrl1hbGyMzZs389vY2dnB2toaUqkUoaGh+Prr\nr+Hq6gqgtAdYu3bt0Lt3b1hZWcHf3x/Xr18HAHh5eWHz5s2IjIyEpaUl/Pz8+JvgjBkzsGvXLtjY\n2CAyMrLS9SjzzTff4LPPPoOtrS2uXLnCtxfV5JqqOqaqtAULFsDT0xNdu3ZFt27d4OnpWadnt1S5\nceMGXnvtNZibm6Nv3754//330b9/f7x48QJz585F8+bNIZVKkZ2djWXLllXa383NDdu3b0dERASa\nN2+Offv24aeffoK+vr7S86oNFxcXhIaGKpSGZsyYgaCgIPj7+8PS0hLe3t58256FhQXWr1+P8PBw\nODg4wNzcXKEkOHLkSDDGYGNjw/eMVZa/2NhY3L59G1KpFMOHD8fixYv5tlNlyo5R02tGGkFj9R75\n5ZdfWPv27Zmrqyv79NNPK6UfO3aM9ezZk+nr67M9e/ZUSs/Pz2f29vbsgw8+aIjsElb6mbm4uCis\ne/78ObOwsGA3b95U+7jKepkRQkh1GqUEJpfLERERgYMHD+LSpUuIjY1VeMYEKG1gjY6Oxrvvvqv0\nGAsXLoSfn18D5LbpKqu2KSkpQWZmJqKioio957V+/Xp4eXnVuiMFIYTUVaOMxJGcnAxXV1e+l1Nw\ncDDi4+PRoUMHfpuynlrKqgLOnDmDf/75B4MGDcLp06cbJtNNEPu3XSo4OBjNmjVDQEAAoqKi+PSy\nrsR79+5trCwSQpqwRglgmZmZCl1cHRwclD7LogxjDB9++CG2b9+OX3/9tb6ySFDaPbyqz+X27dsa\neR9fX99KPRwJIaQ6jVKFyJT0Fqppo/D69esxZMgQvvursmMRQgjRfY1SAnNwcFD4xX3nzh2FZ2Gq\ncuLECfz2229Yv349Hj9+jKKiIpibm1fqFUQDdxJCiHoEUzBojJ4jxcXFrG3btiw1NZW9ePGCdevW\njV2+fFnptuPGjWO7d+9WmrZlyxaVvRDr89RkMlm97lfVdrVNq7iutsuapI3Xrabr6bpVv14T3z9N\nqs/rVt029Xnd6vOaMVa/905Na5QqRD09Paxbtw7+/v7o1KkTgoOD4e7uDplMhp9//hkAcPr0aTg6\nOmL37t2YMmUKunTp0hhZVUrd3o813a+q7WqbVnFddcv1SRuvW03X03Wrfr0637/6VJ/XrbpthHzd\nhETEmFDKirUjEomEUwzWIhzHgeO4xs6G4NB1Uw9dt9qr72smpHsnjcRBFNAvPfXQdVMPXbfao2v2\nEpXACCE8LpFDVFJUpfUyXxk4P67hM0QanJDunU2uBObi4gKRSEQveql8ubi4NPbXtF588ccXMF9u\nDlGUCKIoEbhErrGzREidNEo3+saUlpYmmF8XpHGIRLr5CAaXxOFJYc3mLSNECJpcACOkqapJ8OL8\nOKoqJIJBAYyQJojJqBaCCB8FMEKaCJmvrE77l28zo1Ia0QZNrheiqvWk9sRiMW7evIk2bdpUuV1S\nUhJCQkKQkZHRQDkrNX78eDg6OuKTTz6p1X70HVFOFPWybZBKcLpLSN//JtcLUZuJxWLcunVLYV1U\nVJTKKecLCwsxceJEuLi4wNLSEh4eHjhw4ACffuXKFXh5eUEikcDGxgb+/v64cuWKwrENDQ1hYWEB\nc3NzWFhYIDU1tcb5rU1nB13tGEEIaTwUwLSIqpu8qvXFxcVwcnLC8ePH8ejRI3zyyScYNWoUP1Cy\nvb099uzZg9zcXOTk5CAwMBDBwcEKxwgODkZ+fj4eP36M/Pz8WnUhF8qvNEKIbqIApkVqGxBMTEyw\naNEifm61IUOGoHXr1jhz5gwAwMLCgp8YtKSkBGKxGCkpKWrnb+XKlZBKpXBwcMDmzZsVAmthYSE+\n/PBDODs7w87ODtOmTcOLFy+UHmfFihVo164dLCws0LlzZ35CzMLCQtjY2ODSpUv8ttnZ2TAxMcGD\nBw8AAD///DN69OgBa2tr+Pj44K+//uK3PXfuHDw8PGBpaYng4GAUFBSofa6EEO1HAawCjgNEosov\nVUOPKdu+sYZ2u3//Pm7cuIFOnToprLe2toaJiQlmzJiB+fPnK6T99NNPsLW1RZcuXfDVV1+pPPaB\nAwfw5Zdf4vDhw7hx40alyUT/85//4ObNm7h48SJu3ryJzMxMlW1P7dq1w++//478/HzIZDKEhITg\n/v37MDQ0xJgxY7B9+3Z+29jYWLz++uuwsbHB2bNnER4ejm+++Qa5ubmYPHkyhg4diqKiIhQVFeHt\nt9/G2LFjkZubi5EjR2LPnj21vYSEEAGhAKYjiouLERISgnHjxsHNzU0h7eHDh3j06BHWrVuHbt26\n8etHjx6NK1euIDs7Gxs3bsQnn3yCHTt2KD3+rl27MH78eLi7u6NZs2bgOE6hxPjtt99i1apVsLS0\nhKmpKebOnYvY2Filxxo+fDhatmwJABg5ciRcXV35mZ/DwsLw/fff89tu27YNYWFh/HtMmTIFnp6e\nEIlECA0NhZGREU6ePImTJ0+iuLgY06dPh56eHoYPHw4vLy81rqTu4hI5/qUOma+MfxGiDagbvRbR\n09NDUVGRwrqioiIYGBgAAAYPHozjx49DJBLh66+/xpgxYwCUVj2GhITAyMgIa9euVXrsZs2aYfLk\nyWjevDmuXr0KW1tbdOjQgU/v06cPZsyYgd27d2P06NGV9s/KyoKnpye/7OzszP+dnZ2NZ8+ewcPD\ng18nl8tVVolu3boVq1at4juMPH36FDk5OQCAV155BWZmZkhKSkKrVq2QkpKCwMBAAKWjqGzdupU/\nR8YYioqKkJWVBQD8LN3K8kigMMahOt3gqes80TYUwCrguNpVAdZ2+6o4OTkhNTUV7du359fdvn2b\nX96/f7/S/cLDw5GTk4P9+/dDT09P5fFLSkrw7NkzZGZmwtbWtlJ6Vd1n7ezsFLrBp6Wl8W1gtra2\nMDExwaVLl2BnZ1flOaanp+O9997D0aNH0adPHwBAjx49FN537Nix2LZtG1q1aoURI0bA0NAQAODo\n6Ij58+dj3rx5lY577NgxZGZmVnqvdu3aVZkfQohwURWiFhk9ejSWLFmCzMxMMMbw66+/4ueff8aI\nESNU7jNlyhRcvXoVCQkJ/I2+zK+//orz589DLpcjPz8fs2bNgkQigbu7OwAgISEBeXl5AIDk5GSs\nWbMGb731ltL3GTVqFLZs2YIrV67g2bNnCu1bIpEIkyZNQmRkJLKzswEAmZmZOHToUKXjPH36FGKx\nGLa2tpDL5di8eTP+/vtvhW1CQkLw448/4vvvv+erDwFg0qRJ+Oqrr/jqxqdPn2L//v14+vQp+vTp\nA319faxduxYlJSX44Ycf+O0IIbqJApgWWbRoEby9veHj4wOJRIK5c+ciJiYGHTt2VLp9eno6Nm7c\niPPnz6Nly5b8s1xlbU95eXkYM2YMrKys4Orqilu3buHAgQN8oIuLi+N7A44bNw7z5s1DSEiI0vca\nNGgQIiMjMXDgQLi5ueHVV19VSC/rWdi7d29YWVnB398f169fr3Qcd3d3zJ49G71790arVq1w6dIl\n+Pj4KGxjb2+Pnj17QiQSKaR5eHjgm2++QUREBCQSCdzc3BAdHQ0AMDAwwA8//IDNmzdDIpFg165d\nGD58eA2vPCFEiGgkDqKVwsPDYW9vX+tRNDRBV78jNJIGqQkhff+pDYxondTUVPz44484d+5cY2dF\np9BYiETXUAmMaJVFixbhv//9Lz7++GPMnTu3UfJA3xHlqATXNAjp+08BjJAK6DuiHAWwpkFI33/q\nxEEIIUSQKIARQggRpEYJYAcOHECHDh3g5uaGFStWVEo/fvw4PDw8+K7RZS5cuABvb2906dIF3bt3\nx86dOxsy24QQQrRIg/dClMvliIiIwOHDhyGVSuHl5YWgoCCFYY2cnZ0RHR2Nzz//XGFfU1NTbNu2\nDW3btsXdu3fh4eGBQYMGwcLCoqFPgxDB8V/GITEJ8O4DJCoZPobjgC++KP139uzK+9MYiETbNHgA\nS05OhqurKz9OXXBwMOLj4xUCWNkUIBXnwSo/LJCdnR1atGiB7OxsCmCE1MD/iqIAbyAJAMBVSk9N\nBZ48UR3AqOs80TYNXoWYmZnJz18FAA4ODpXGsKuJ5ORkFBUVoW3btprMHtGAAQMG4LvvvqvRtspm\noa5v0dHR6NevX4O+pxD8O6gJnjxp3HwQUlMNHsBUdW2vjbt37yIsLAxbtmzRUK60g4uLC0xMTGBh\nYQE7OztMmDABz549U+tYc+bMgZubGywtLdGxY0ds27aNT3vw4AF8fHxga2sLiUSCvn374o8//uDT\nCwsLMXPmTNjb28PGxgYREREoKSmp8/kpU9vPXujvSwjRnAavQnRwcOCnvAeAO3fuQCqV1nj/x48f\nIyAgAMuWLat2vieuXD2/n58f/Pz8apvdBiUSibBv3z4MGDAAd+/ehb+/P5YsWYJly5bV+lhmZmbY\nt28fP9fWoEGD4Orqit69e8PMzAybN2+Gq6srACA+Ph6BgYHIzs6GWCzG8uXLcfbsWVy+fBnFxcUI\nCAjAkiVLIJNpvg1EKM+bEKKrEhMTkZiY2NjZUA9rYMXFxaxt27YsNTWVvXjxgnXr1o1dvnxZ6bbj\nxo1ju3fv5pcLCwvZwIED2erVq6t9H1Wn1ginXGMuLi7s8OHD/PKcOXNYYGCg0jSO41hISEiNjz10\n6FD25ZdfVlovl8tZQkICE4vFLDs7mzHGmKenp8J1j4mJYU5OTiqPfejQIdahQwdmZWXFIiIimK+v\nL9u0aROfvmnTJubu7s4kEgkbNGgQS0tL49NEIhFLSUlhjDG2b98+1qNHD2ZhYcGcnJwYx3H8dkOG\nDGHr1q1TeN+uXbuy+Ph4xhhjV65cYa+//jqTSCSsQ4cObOfOnfx2Dx48YIGBgczCwoL16tWLLVy4\nkPXr10/l+Wjzd6QuwIF/KU3HyxdpuoT0/W/wKkQ9PT2sW7cO/v7+6NSpE4KDg+Hu7g6ZTIaff/4Z\nAHD69Gk4Ojpi9+7dmDJlCrp06QIA2LlzJ3777Tds2bIFPXr0QM+ePXHx4kWN5o9L5CCKElV6qZrF\nVtn26s54W15GRgb279+Pnj17qtymptVgz58/x6lTp9CpUyeF9d26dYOxsTHeeustTJo0iZ8jjDGm\nUDKSy+W4c+cOHj9+XOnYDx48wIgRI7Bs2TLk5OSgbdu2+P333/n0vXv34tNPP8XevXuRnZ2Nfv36\n8RNxVmRmZoZt27bh0aNH2LdvH7766iskJCQAeDlHWJkLFy4gKysLQ4YMwbNnz+Dv74+QkBDk5OQg\nNjYW06ZNw5UrVwAA06ZNg4mJCe7fv49NmzbVuH1O1/gyGf9SRiZ7+VKmrjM6E6JxjR1B64uqU6vu\nlGVHZQq/VMtesqOyGm+vatvquLi4MHNzc2Ztbc1cXFxYREQEKygo4NMqlsBCQ0NrdNywsDA2ePBg\npWkvXrxgcXFxbOvWrfy6BQsWMB8fH5adnc3u3r3LevXqxcRiMbt3716l/bdu3cr69OmjsM7BwYEv\ngb355pvsu+++49NKSkqYiYkJS09PZ4wplsAqioyMZLNmzeLzaWNjw27evMkYY+zDDz9k77//PmOM\nsR07drD+/fsr7Dt58mT2ySefsJKSEmZgYMCuX7/Op3388cdNsgRWV9WV4IhuENL3n0bi0DLx8fHI\nzc3F7du3sXbtWhgZGVW7z9SpU/m5wD799FOFtDlz5uDy5cvYsWOH0n0NDQ0xevRoLF++HH/99RcA\nYP78+ejRowe6d+8OHx8fvP322zAwMECLFi0q7Z+VlaXQqxSAwnJaWhpmzJgBiUQCiUQCGxsbiEQi\npT1P//zzTwwcOBAtWrSAlZUVvv76a+Tk5PD5HDVqFLZv3w7GGGJjY/nJLtPS0nDy5En+PaytrRET\nE4P79+8jOzsbxcXFcHBw4N+n7BEOQoiw0XQqFXB+XK2ed6nt9tVhKjo1mJqaKvRIvHfvHv/3hg0b\nsGHDhkr7yGQyHDx4EMeOHYOZmVmV71tUVIRbt26hS5cuMDY2xpo1a7BmzRoAwMaNG+Hh4aG0ytLO\nzk6hUw5QWv1ZxtHREQsWLFBZbVjeu+++i+nTp+PgwYMwMDDAzJkz8eDBAz49LCwMoaGh6Nu3L0xN\nTfHKK6/w7+Hn54eDBw9WOqZcLoeBgQEyMjLg5uYGAJXyS3RPWf8tVf8S3UAlMIHo3r074uLiUFxc\njNOnT2P37t1Vbr98+XLExsbif//7H6ysrBTS/vzzT/z+++8oKipCQUEBVqxYgX/++Qe9evUCUFqq\nunv3LgDg5MmTWLJkicqJJYcMGYLLly9j7969KCkpwerVqxWC65QpU7Bs2TJcvnwZAPDo0SOVeX/y\n5Amsra1hYGCA5ORkxMTEKKT37t0bYrEYs2fPRmhoKL8+ICAA169fx/bt21FcXIyioiKcPn0a165d\ng1gsxrBhw8BxHJ4/f47Lly/zszgT3ZYIxfa6istE+DQSwB4+fKjxzhRNUVWdMhYvXoybN29CIpEg\nKioK7777bpXHmj9/PjIyMuDq6lqpevHFixd4//33YWtrCwcHBxw4cAD79+9Hq1atAAApKSnw9vaG\nmZkZxo8fj88++wyvvvqq0vexsbHBrl278NFHH8HW1hYpKSnw8fHh09966y3MnTsXwcHBsLKyQteu\nXXHgwAHUEfeNAAAgAElEQVSl57x+/XosXLgQlpaWWLJkCUaPHl3p/cLCwvD3338jJCSEX2dmZoZD\nhw4hLi4OUqkUUqkUc+fOxYsXLwAAa9euxePHj/ln6yZMmFDltSO6KzGxtBRGJTHdoPZ8YH5+fkhI\nSEBxcTE8PDzQokUL9O3bF19++aWm86gWmg9MN23btg3ffPMNjh07Vm/voavfEb9yd21VYyEq+5tf\np2JGZi6RQ1RSFADAzNAMnC+H2d5KxqJqAOXPseyxz7K8cokcEhMBv3+H0aIgppyQvv9qB7AePXrg\n3Llz+Pbbb5GRkYGoqCh07dpVa0piFMB0z7Nnz/Dqq68iIiKi2hJoXejqd6S6CSnLVwDU5vTLBzCg\nNIg9nlf5kYuGUG2QVhGEyUtC+v6r3YmjuLgYd+/exc6dO7F06VJN5omQSg4dOoRhw4bB39+/Rh1C\nSON5Uth4gykqC1pEd6kdwBYtWoQ33ngDPj4+8PLywq1bt/ihiQjRNH9/fzyhUWa1UllP3PIlPK1V\nvhOHX2NlgmiK2gFs5MiRGDlyJL/cpk0b7NmzRyOZIoQIjzbMF1ZdFSLRLWoHsOzsbHzzzTdITU1F\ncXExv76pDtNDSFMniDYlhTxyKjYiQqF2AAsKCkK/fv3w2muvQU9PT5N5IoTUA1VjIJaph8kG6lVZ\naauspFVxmeg+tQPYs2fPsGLFCk3mhRBSj6q7sTeJ+/6/bWCJ4Er/K9fFHhBIKZLw1A5gAQEB2L9/\nPwYPHqzJ/BBCiEp+TSLKkppS+zkwc3NzPH36FIaGhjAwMCg9mEiE/Px8jWZQXfQcGFEXfUe0l6Y6\naVQscSkbYqqplsaE9P1Xeyipx48fQy6Xo6CgAI8fP8bjx4+1JngJlVgsxq1btxTWRUVFKYz7V15h\nYSEmTpwIFxcXWFpawsPDQ2GYpitXrsDLy4sfBd7f35+fI6vs2IaGhrCwsOCHm0pNTa2Xc6tvyq4d\naVgNMV9YIsfxL3VxHIDEctWHFZaJcNRpNPqEhAR+SB8/Pz8EBARoJFNNlaqxEFWtLy4uhpOTE44f\nPw5HR0fs27cPo0aNwt9//w0nJyfY29tjz549cHJyAmMM69atQ3BwMC5cuMAfIzg4GFu3btX4ucjl\ncojFDTdWdE0n92wqKo6OUUbmK6u3G3X59xNsMKDnxARF7TvM3LlzsXr1anTs2BEdO3bE6tWrMXfu\nXE3mrcmpbbHdxMQEixYt4uffGjJkCFq3bo0zZ84AACwsLODk5AQAKCkpgVgsRkpKilp5S0pKgqOj\nI5YvX47mzZujTZs2CqPFjx8/HtOmTcOQIUNgbm6OxMRE5OfnIywsDC1atEDr1q0VRmyJjo6Gj48P\nZs2aBWtra7Rr1w4nTpxAdHQ0nJyc0KpVK4XAOn78eEydOhX+/v6wsLDAgAED+GlbfH19wRhD165d\nYWFhgV27dql1jk1B2WC2ypQNcqvNzUx+HMe/CFG7BLZ//36cP3+e/5U9duxY9OjRo9KEikJT3TxC\ntf23Id2/fx83btxAp06dFNZbW1vj6dOnkMvlWLx4sULaTz/9BFtbW9jZ2eH999/HlClTVB7/3r17\nyM3NRVZWFk6cOIHBgwfDy8uLH4ElNjYWv/zyC3r37o0XL15g0qRJePz4MVJTU5GdnQ1/f39IpVKM\nHz8eAJCcnIz33nsPubm5WLRoEYKDgzF06FCkpKQgMTERw4cPx4gRI2BiYgIAiImJwf79+/HKK69g\nzpw5eOedd3D8+HEkJSVBLBbjr7/+QuvWrTV5SXVOUhKQlKj8+xlVrsCmy/Gh4rkpLNNzYoJSpyrE\nvLw8SCQSAKXzPJHGU1xcjJCQEIwbN46fuLHMw4cP8fz5c750U2b06NGYPHkyWrZsiZMnT2L48OGw\ntrZWOo0JUFpNt3jxYhgYGKB///4YMmQIdu7cifnz5wMofTawd+/eAAADAwPs3LkTFy5cgImJCZyd\nnTF79mxs27aND2CtW7fmZ1UePXo0li1bBplMBgMDA7z++uswNDTEzZs30bVrVwClJcy+ffsCAJYu\nXQpLS0tkZmbC3t4eQO1LsLpM2USrulDLSs94kfLUDmDz5s1Djx49MGDAADDGcOzYMSxfvlyTeWty\n9PT0UFRUpLCuqKiI7+U5ePBgHD9+HCKRCF9//TU/qC1jDCEhITAyMsLatWuVHrtZs2aYPHkymjdv\njqtXr8LW1hYdOnTg0/v06YMZM2Zg9+7dKgOYtbU1jI2N+WVnZ2dkZWXxy2VVmQCQk5ODoqIihYDp\n7OyMzMxMfrlly5YK+QMAW1tbhXXlxz8sf3xTU1NIJBJkZWXxAYyQOqM2MEFRK4AxxuDj44OTJ0/i\n1KlTYIxhxYoV/ISIQlZl9YIay7Xh5OSE1NRUtG/fnl93+/Ztfnn//v1K9wsPD0dOTg72799f5ago\nJSUlePbsGTIzMxUCRZnqus+WleTKgk16ejq6dOmisH8ZW1tbGBgYIC0tjQ+UaWlpdQo2ZW1eQOns\nzbm5uRS8ymnsqUIaYixEGuuQlKdWJw6RSITBgwfDzs4OQ4cORVBQkE4Er8Y2evRoLFmyBJmZmWCM\n4ddff8XPP/+MESNGqNxnypQpuHr1KhISEmBoaKiQ9uuvv+L8+fOQy+XIz8/HrFmzIJFI4O7uDqC0\nF2leXh6A0vaoNWvW4K233lL5XowxyGQyFBUV4fjx43yvR2XEYjFGjRqF+fPn48mTJ0hLS8OqVatU\nPhJQdvyq7N+/H3/88QcKCwuxcOFC9O7dG1KpFADQqlWrJt+NPiopin81hrJqS8H2QARK28DKXkTr\nqV2F2LNnT5w6dQpeXl6azE+TtmjRIshkMvj4+CAvLw9t27ZFTEwMOnbsqHT79PR0bNy4EcbGxnx1\nXPnqxby8PHzwwQfIzMxEs2bN4OXlhQMHDvCBLi4uDhMmTEBhYSEcHBwwb948hISEqMyfnZ0drK2t\nIZVKYWpqiq+//prvwKGsG/uaNWvwwQcfoE2bNmjWrBnee+89vv1LmYrHqLj8zjvvgOM4nDhxAh4e\nHvj+++/5NI7jEBYWhoKCAmzcuLHKoN9UVTfWoRDGQqRSFylP7ZE4OnTogJs3b8LZ2RmmpqZgjEEk\nEtV4RuYDBw4gMjIScrkc4eHh+OijjxTSjx8/jsjISFy8eBE7duzAsGHD+LTo6GgsXboUIpEI8+fP\n5zsCKJwYjcShUUlJSQgNDUV6enqjvP/48ePh6OiITz75pN7fS6jfkepmXCbVKx8fm2qsFNL3X+0S\n2MGDB9V+U7lcjoiICBw+fBhSqRReXl4ICgpS6FTg7OyM6OhofP755wr7Pnz4EJ988gnOnj0Lxhg8\nPDwQFBQES0tLtfNDCBEGagMj5an9IPOCBQvg7Oys8FqwYEGN9k1OToarqyucnZ1hYGCA4OBgxMfH\nK2zj5OSEzp07V6pGOnjwIPz9/WFpaQkrKyv4+/srDJ9EdBONtEEaBLWBCYraJbBLly4pLJeUlPAj\nQFQnMzNToUu0g4MDkpOT1drX3t5eoWs2qR++vr6NVn0I0ESpNdHYMyI3RC9IKnWR8modwJYvX45l\ny5bh+fPnsLCw4OtKDQ0N8d5779XoGKrapup7X0J0WWP3/qOxEElDq3UAmzdvHv9S98FlBwcHhV/z\nd+7c4btD12TfxMREhX0HDBigdFuu3K81Pz8/+Pn5qZNdQnRCdR0UhNCBgdrANC8xMVHhniokavdC\nLBuFvqL+/ftXu29JSQnat2+Pw4cPw87ODq+88gpiY2P555PKGz9+PAICAjB8+HAApZ04PD09cfbs\nWcjlcnh6euLMmTOwsrJS2I96IRJ16ep3pHxFhbLTqy692uNrsBekqrFFE8uNT1gfAayxHwbXBkL6\n/qvdBrZy5Ur+74KCAiQnJ8PDwwNHjhypdl89PT2sW7cO/v7+fDd6d3d3yGQyeHl5ISAgAKdPn8bb\nb7+NvLw8/Pzzz+A4Dn/99Resra2xcOFCeHp6QiQSQSaTVQpehBDdRKUuUp7aAeynn35SWM7IyEBk\nZGSN9x80aBCuXbumsC6q3HDYnp6eCkMHlTdu3DiMGzeu5pklhJCaoDYwQanTaPTlOTg4KMz2Swhp\nWPVd/cVxwBdflP47e3bl9NcNZEhMAooKAVG5t5fJat6mxnEvqwnLSltcIgf4/TtUFVXxkXLUfg7s\ngw8+wPTp0zF9+nRERESgX79+6Nmzpybz1uS4uLjAxMQEFhYWsLOzw4QJE/Ds2TO1jjVnzhy4ubnB\n0tISHTt2xLZt2/i0Bw8ewMfHB7a2tpBIJOjbty/++OMPPr2wsBAzZ86Evb09bGxsEBERgZKSkjqf\nX2MYMGBAk+mCX9exEM3MSv8dO1Z5emoq8OSJ6mB0YjmHokOcYilGaOg5MEFRuwTm6en58iD6+hgz\nZgw/VxNRj0gkwr59+zBgwADcvXsX/v7+WLJkCZYtW1brY5mZmWHfvn1wdXVFcnIyBg0aBFdXV/Tu\n3RtmZmbYvHkzP45hfHw8AgMDkZ2dDbFYjOXLl+Ps2bO4fPkyiouLERAQgCVLlkCmgcHySkpKqhwx\nn2iGSFS55FPdx1c2G7OLi/L06OjSf8vNcKNg9uzSIFe2nTo4DuASq0inwELKY3Xw7NkzdvXq1boc\not6oOrU6nnK9cnFxYYcPH+aX58yZwwIDA5WmcRzHQkJCanzsoUOHsi+//LLSerlczhISEphYLGbZ\n2dmMMcY8PT3Z7t27+W1iYmKYk5OTymOLRCK2Zs0a1qZNG9a8eXM2Z84cPm3Lli2sb9++bObMmUwi\nkbCFCxcyuVzOFi9ezJydnVnLli3Z2LFj2aNHjxhjjKWmpjKRSMQ2b97MHB0dmUQiYV999RU7deoU\n69q1K7O2tmYRERGVjv/BBx8wS0tL5u7uzl+n+fPnMz09PdasWTNmbm7OPvjggxpdK23+jlQFHF6+\nwJhMpuHj4+VLV8lkL19NlZC+/2pXIf7000/o3r07Bg0aBAA4f/48hg4dqpGg2pi4xAr17HVcVldG\nRgb2799fZbVsTR/gfv78OU6dOoVOnToprO/WrRuMjY3x1ltvYdKkSfwcYYwxhW60crkcd+7cwePH\nj1W+x969e3H27FmcPXsW8fHxCtV2f/75J9q1a4fs7GzMnz8fmzdvxtatW5GUlIRbt27h8ePHiIiI\nUDhecnIybt68iR07diAyMhLLli3DkSNH8Pfff2Pnzp04fvx4peM/ePAAHMdh2LBhyMvLw5IlS9Cv\nXz+sW7cO+fn5WLNmTY2uF6kfZSW8qtrD/DiOfxFSHbUDGMdxSE5O5ruwd+/eHampqZrKV5P11ltv\nQSKRoH///hgwYADmzZtX52NOmTIFPXr0gL+/v8L6Cxcu4PHjx4iJiVGo/n3zzTexevVq5OTk4N69\ne/wsz1W1x82dOxeWlpZwcHBAZGQkYmNj+TR7e3tMmzYNYrEYRkZGiImJwaxZs+Ds7AwTExMsX74c\ncXFxkMvlAEoD86JFi2BoaIjXXnsNpqamGDNmDGxsbCCVStGvXz+cO3eOP37Lli0xffp06OnpYdSo\nUWjfvj327dtX5+smZIxp38PIUVEvX1qrQhtYff1AJZqhdhuYvr4+jQBfD+Lj41WOLKLK1KlTsX37\ndohEInz88ceYO3cunzZnzhxcvnwZR48eVbqvoaEhRo8ejY4dO6J79+7o0qUL5s+fj0ePHqF79+4w\nNjbGpEmTcP78ebRo0UJlHhwcHPi/nZ2dkZWVxS+XH7sSALKysuDs7KywfXFxMe7fv8+vK/9ezZo1\n4+c7K1t+Uq4hpuKszBXfv6nwZfU7FmK1bWga6CFIz3mR2lA7gHXu3BkxMTEoKSnBjRs3sGbNGnh7\ne2syb42i4v94dV2uLabiCXhTU1OFEtC9e/f4vzds2IANGzZU2kcmk+HgwYM4duwYzMq6mKlQVFSE\nW7duoUuXLjA2NsaaNWv4KreNGzfCw8OjyirLjIwMfiSV9PR0haHBKu4nlUqRlpbGL6elpcHAwAAt\nW7ZU+exfVSoO5pyeno6goCCl763L6vvmX93haSxE0tDUrkJcu3YtLl26BCMjI4wZMwYWFhb473//\nq8m8kXK6d++OuLg4FBcX4/Tp09i9e3eV2y9fvhyxsbH43//+V2mkkj///BO///47ioqKUFBQgBUr\nVuCff/5Br169AJSWkO7evQsAOHnyJJYsWVLtRJIrV65EXl4eMjIysHr1agQHB6vcdsyYMVi1ahVS\nU1Px5MkTzJ8/H8HBwRCLS7+OqoK4Kv/88w/Wrl2L4uJi7Nq1C1evXsXgwYMBlFYv3rp1q1bHIzXD\ncaW9HctemqBtbWCcH6cQjCsuk8aldgnMxMQES5cuxdKlSzWZnyatqtLC4sWLMWbMGEgkEvj6+uLd\nd99Fbm6uyu3nz58PIyMjuLq68rNll1UvvnjxAtOnT8ft27dhYGCALl26YP/+/WjVqhUAICUlBWFh\nYcjOzoajoyM+++wzvPrqq1XmPSgoCB4eHsjPz8f48eMxYcIEldtOmDABd+/eRf/+/fHixQsMGjRI\noYNFxetQ3XKvXr1w48YN2NraolWrVtizZw+sra0BADNmzMDYsWOxYcMGhIaG0o8sUqXq4iY9SK1d\n1B7M9/r16/j888+RmpqK4uJifn1NxkJsCDSYb8MRi8W4efMm2rRp0+DvHR0djU2bNqkcXFod9B2p\nGY6r0CGDq3owXyGMdg+oHki49Bk17uV2OhrAhPT9V7sENnLkSEyZMgUTJ06kB1MJaYIqdokXVdO7\nUJuDVo1RG5lWqVMvxKlTp2oyL0SgmlJHCW3W2HNlaWJG6MY+ByIsalchchyHFi1a4O2334aRkRG/\nXiKRaCxzdUFViERdQv2OaHI+rsai7QGMqhC1i9olsOh/BzwrPy+YSCSiHl+EELVpY9Ai2kvtAHb7\n9m1N5oMQQrQftYFpFY3NB0YIIVWpSS9Eba9CJNqlyQUwZ2dn6nRAqlR+mCuiOeW73As2Nim0e3Eq\nNiINpckFMBpwmAjVF398AS6Jw5PC0nEgZb4yhY4E9T0WYnVoLETS0GodwM6ePVtlOs3KTEj9KB+8\nlGnsm79OjIVYHWoD0yq1DmCzZ88GABQUFOD06dPo1q0bGGO4ePEiPD09ceLECY1nkhCCKoOX0JR/\nCLr8v9QGRmqj1oP5Hj16FEePHoWdnR3Onj2L06dP48yZMzh37lylaS0IIfWEY4gawPED6dK9voFU\nmC+MNC6128CuXbuGLl268MudO3fGlStXarz/gQMHEBkZCblcjvDwcHz00UcK6YWFhQgLC8OZM2dg\na2uLHTt2wMnJCcXFxZg4cSLOnj2LkpIShIaGKsx/RYiukvnKkJgIJCU1dk7UUzafWGKi6m2o1EVq\nQ+0A1rVrV0ycOBEhISEQiUTYvn07unbtWqN95XI5IiIicPjwYUilUnh5eSEoKAgdOnTgt9m0aRMk\nEglu3LiBHTt24D//+Q/i4uKwa9cuFBYW4uLFi3j+/Dk6duyId955B05OTuqeCiGCwPlx4BKBpMTG\nzknd+PkJZ2DfSqgNTKuoHcA2b96MDRs2YPXq1QCA/v3713hsxOTkZLi6uvLdlYODgxEfH68QwOLj\n4xH1b7/bESNG4IMPPgBQOtrH06dPUVJSgmfPnsHIyAgWFhbqngYhglJxAF1toomxEJvCUE1Ec9QO\nYMbGxpgyZQoGDx6M9u3b12rfzMxMhWnmHRwckJycrHIbPT09WFpaIjc3FyNGjEB8fDzs7Ozw/Plz\nrFq1qtKEjYSQhlddwNHWwFsr9ByYVlE7gCUkJGDOnDkoLCzE7du3cf78eSxatAgJCQnV7qtqkN2q\ntimblDE5ORn6+vq4d+8eHjx4gH79+uG1116Di4uLuqdCCNESVOoitaF2AIuKikJycjL8/PwAlE55\nX9OHhB0cHJCens4v37lzB1KpVGEbR0dHZGRkQCqVoqSkBPn5+bC2tkZMTAwGDRoEsViM5s2bo2/f\nvjh9+rTSAMaV+8nn5+fH55UQ0vAE2+5Vng62gSUmJiKxqp41WqxO84FZWlqqta+Xlxdu3ryJtLQ0\n2NnZIS4uDrGxsQrbBAYGIjo6Gr169cKuXbswcOBAAICTkxOOHDmCd999F0+fPsXJkycxc+ZMpe/D\nCfb/EkIqE/ozUmX3yFQXDkh8Wdoqa/cq7aTC8dtTaaxhVPxxHxVVzcykWkTtANa5c2fExMSgpKQE\nN27cwJo1a+Dt7V2jffX09LBu3Tr4+/vz3ejd3d0hk8ng5eWFgIAAhIeHIzQ0FK6urrCxsUFcXBwA\n4P3338f48ePRuXNnAEB4eDj/NyG6LElhymOusbKhNr77v5CHIqU2MK2idgBbu3Ytli5dCiMjI7zz\nzjt44403sHDhwhrvP2jQIFy7dk1hXfnIb2RkhJ07d1baz9TUVOl6Qkjj0kTpiUpdpDbUnpF5165d\nGDlyZLXrGouQZhUlpCa0fcbl6vInGsC9TD/KVUoXAp1ox6uGkO6dtR5Kqszy5ctrtI4QQgipD7Wu\nQvzll1+wf/9+ZGZmYvr06fz6/Px86Os3udlZCCE1Vb4Hn1BRG5hWqXXEkUql8PT0REJCAjw8PPj1\n5ubmWLVqlUYzRwh5qbHn+6ormbCzT7RQrQNYt27d0K1bN9y/fx9jx45VSFu9ejVmzJihscwRQl4S\nYtf58hIVSiyciq20nA4+ByZkareBlXVrL2/Lli11yQshRMBkvjL+RUhDqHUvxNjYWMTExOC3335D\nv379+PWPHz+Gnp4efv31V41nUh1C6klDCBGGpvCgtZDunbWuQvT29oadnR1ycnL42ZmB0jawmk6n\nQgghhNSV2s+BaTsh/YogpCkQ+lBYAD0Hpm1qXQLz8fHBb7/9BnNzc4UR5MtGi8/Pz9doBgkhpYQS\nALhEDlFJlcfTs0wdCyu4NHyGiM6qdQD77bffAJS2eRFCGo7Qx0J8lOaCR2VtSFsaMSN1Qc+BaZU6\nPXn88OFDZGRkoLi4mF/Xs2fPOmeKEEIIqY7abWALFy7Eli1b0KZNG4jFpb3xRSIRjhw5otEMqktI\n9biE1IS2j4VYHV0aCzERHPz8lE8JI3RCuneqXQLbuXMnUlJSYGhoqMn8EEIIITVSp/nA8vLy0KJF\nC03mhxCiq3RgLMSyEhiXqCK9CTwnpk3UDmDz5s1Djx490LlzZxgZGfHrExISNJIxQogioY2FyN/s\n//3X2TcRAODilwihd4CoGJwqViWShqF2G1inTp0wefJkdOnShW8DAwBfX1+NZa4uhFSPS4guqPiM\nVMUAJhrnV/pH6yRBtuEB9ByYtlG7BGZiYqIwnQohhBDSkNQugc2aNQtGRkYYOnSoQhWitnSjF9Kv\nCEKaAqH3oqwJXWgDE9K9U+0S2Llz5wAAJ0+e5NdpUzd6Qgghuo3GQiSEaER17UO6UAKjNjDtovZ8\nYPfv30d4eDjefPNNAMDly5exadMmjWWMEF3zxReAuTkgEim+VN0IOa7CtgM4dI/kFMZE1EaJ4BSr\n0hJLl52ZL//SBeU7qihbJvVP7SrEcePGYfz48Vi6dCkAwM3NDaNHj0Z4eLjGMkeILuE44MmTOhzA\nLwoXXh6trtnRuOqekUqLKpfA1W9e6kt1JbDS4P1vukDbwIRE7RJYTk4ORo0axXeh19fXh56eXo33\nP3DgADp06AA3NzesWLGiUnphYSGCg4Ph6uqKPn36ID09nU+7ePEivL290blzZ3Tr1g2FhYXqngYh\nDWb2bGDs2MbOhXaoquRJSE2p3Qbm5+eHPXv24PXXX8fZs2dx8uRJfPTRR0hKSqp2X7lcDjc3Nxw+\nfBhSqRReXl6Ii4tDhw4d+G02bNiAv/76C+vXr8eOHTvw448/Ii4uDiUlJejZsye+//57dO7cGQ8f\nPoSVlZXC1C6AsOpxCakJbW9Dqm66F3NzxRKoTFY5iAm9jUno+QeEde9UuwT25ZdfYujQoUhJSUHf\nvn0RFhaGtWvX1mjf5ORkuLq6wtnZGQYGBggODkZ8fLzCNvHx8Rj778/VESNG8L0bDx06hG7duqFz\n584AAGtr60rBixCifTgOMDOrepuoqJcvQqqjdhtYz549kZSUhGvXroExhvbt28PAwKBG+2ZmZsLR\n0ZFfdnBwQHJysspt9PT0YGlpidzcXFy/fh0AMGjQIOTk5GD06NGYM2eOuqdBCNGQ6ibZnD279KXT\naL6wBlWn+cD09fXRqVOnWu+nrHhasRRVcZuyGZ+Li4vx+++/4/Tp0zA2Nsarr74KT09PDBgwoNb5\nIERIZL7CGguxIl14yJdolzoFMHU5ODgodMq4c+cOpFKpwjaOjo7IyMiAVCpFSUkJ8vPzYW1tDQcH\nB/j6+sLa2hoAMHjwYJw9e1ZpAOPK/SL08/ODn59fvZwPIQ1B22/61bWBRSW9rBfU9nNRW/nBfP0a\nKxO1k5iYiMTExMbOhloaJYB5eXnh5s2bSEtLg52dHeLi4hAbG6uwTWBgIKKjo9GrVy/s2rULAwcO\nBAC88cYbWLlyJQoKCqCvr4+kpCTMmjVL6ftwQm1FJTpJFxr4ie6p+OM+SkANkHUKYJmZmUhLS0Nx\ncTG/rn///tXup6enh3Xr1sHf3x9yuRzh4eFwd3eHTCaDl5cXAgICEB4ejtDQULi6usLGxgZxcXEA\nACsrK8yaNQuenp4Qi8UYMmQI/zA1Idqs/H1BFwNYdW1gNSETdi0ptYE1MLW70X/00UfYsWMHOnbs\nyD//JRKJtGY+MCF1BSVNQ/lm3qb41dT2xwA0QRfa+YR071S7BLZ3715cu3ZNYSR6QohmcImcQptR\nGZmvTGtvjNW1gTUJAmwDEzK1A1ibNm1QVFREAYwQUiNC70VJtE+dJrTs3r07Xn31VYUgtmbNGo1k\njBAiLNWVurS15KhR1AbWoNQOYEOHDsXQoUM1mRdCdFptOihwflzTuOETUgd1mg+ssLCQHxmjNiNx\nNDvTihMAABx2SURBVAQhNUQSogs00QYm9EcNhJ5/QFj3TrVLYImJiRg7dixcXFzAGENGRgaio6Nr\n1I2eEFKZLvRgqytdf9SAaJbaJTAPDw/ExMSgffv2AIDr169jzJgxOHPmjEYzqC4h/YogBBBWN3N+\n7i8V/6pL6I8a6MKPECHdO9UugRUVFfHBCyid0LKoqEgjmSKE6B5duLkT7aJ2APP09ORHywCA77//\nHh4eHhrLGCFEu1RXuqpuNmIaC5FomtoBbMOGDfi///s/rFmzBowx9O/fH9OmTdNk3gjRKbrQwF9G\n2USUZcGLkIZSp16I2kxI9bikaaiufUdQbWD/ljTKSlIVl5WpyfkJPcjrQjWpkO6djTIaPSFC9MUf\nX4BL4vCk8AkA1cM6qRoGCn4yxSqmCmikCmEGLdJ4KIARUkPlg1ddmJmpOL6W/2Iv/5wXTa2nArWB\nNSgKYITUUHXBq+z+nggAIuXbmJnpRimjYrCtSfClEibRNLXbwK5fv46VK1dWmg/syJEjGstcXQip\nHpcIQ3VtOEJ/honUHbWBNSy1S2AjR47ElClTMGnSJH4+MEJ0GZUgCNEudRqJQ1tG3VBGSL8iiG7Q\n9RJYQ8z3JfheiJzyv4VESPdOtUtggYGBWL9+Pd5++22F6VQkEolGMkaIrqmuekkXqp/qisZCJLWh\ndgmsdevWlQ8mEuHWrVt1zpQmCOlXBNENdX3OS0jPgdUXoZdideFHiJDunWqXwG7fvq3JfBAieLWZ\n76sp0oWbO9EudRrMd8OGDTh27BgAwM/PD5MnT9aqOcEIaUi6XuVV1zYwGguRaJraAWzq1KkoKiri\nxz/ctm0bpk6dim+//VZjmSNEm1AJghDtonYAO3XqFC5cuMAvDxw4EN26ddNIpgjRRk2iBFGF+up5\nWJ7gq2EVvhecio2IpqgdwPT09JCSkoK2bdsCAG7dulWr58EOHDiAyMhIyOVyhIeH46OPPlJILyws\nRFhYGM6cOQNbW1vs2LEDTk5OfHp6ejo6deqEqKgozJo1S93TIKTBVPccGT1npvvVsESz1A5gK1eu\nxIABA9CmTRswxpCWlobNmzfXaF+5XI6IiAgcPnwYUqkUXl5eCAoKQocOHfhtNm3aBIlEghs3bmDH\njh34z3/+g7i4OD591qxZGDx4sLrZJ6TBVVdq0/ZSXUM8ByZ4/1YzJ4Ir/a8Wo/WT2lM7gL366qu4\nceMGrl27BsYYOnTooPA8WFWSk5Ph6uoKZ2dnAEBwcDDi4+MVAlh8fDyi/n0oZMSIEYiIiFBIa9u2\nLUxNTdXNPiEapwsPsdYnKmESTat1ADty5AgGDhyIH374QWF9SkoKAGDYsGHVHiMzMxOOjo78soOD\nA5KTk1Vuo6enBysrK+Tm5sLY2BifffYZ/ve//2HlypW1zT4h9UbXH8Kta6mrKZQ+yi6Rqsk9qSOQ\nZtU6gCUlJWHgwIH46aefKqWJRKIaBTBlD8mJRKIqt2GMQSQSQSaTYebMmTAxMVF5LELqQ1MrQfA3\nYxX/EtVUjdZfPoCRuqt1ACur1lu0aFGl0Thq+nCzg4MD0tPT+eU7d+5AKpUqbOPo6IiMjAxIpVKU\nlJQgPz8f1tbW+PPPP7Fnzx785z//wcOHD6Gnp4dmzZrx3fnL4xTmL/KDH01iROqgql/MunBTr64K\nNPHfXnVcYv2VHoReDVtd/rWx1JWYmIjExMTGzoZa1G4DGz58OM6ePauwbsSIETUa4NfLyws3b95E\nWloa7OzsEBcXh9jYWIVtAgMDER0djV69emHXrl0YOHAgAPAPTgOlwdTc3Fxp8AIUAxghdVXTm6vK\nCStpLMRq6Xo1rDaq+OM+KkrJbOJaqtYB7OrVq7h06RIePXqk0A6Wn5+PgoKCGh1DT08P69atg7+/\nP9+N3t3dHTKZDF5eXggICEB4eDhCQ0Ph6uoKGxsbhR6IhDSGmtxcq5qwsrrnyBr7ObOK+a64TD0P\nq1fdJaIfKZpV68F84+PjsXfvXiQkJGDo0KH8enNzcwQHB8Pb21vjmVSHkAakJMJQ14Fmm/pgvjW5\neQt9MF+g6rZDIQQwId07a10CCwoKQlBQEE6cOIE+ffrUR54IIY2A4162c5WVtso/v1TXm29jlzC1\nAo2VqFFidXf86quvkJeXxy8/fPgQEyZM0EimCNFKftzLFyGk0andiePixYuwsrLil62trXHu3DmN\nZIoQreRXvnGba6xc1JvSKq4q0jUYuLlETunxfGUcTuAL+IIDMFtj79eQqmxLpLESNUrtACaXy/Hw\n4UNYW1sDAHJzc1FcXKyxjBGia4QwFqKq55c0wczQDE8Kn1S5jUv3VCRdeIIThhyEGsBIw1E7gM2e\nPRve3t4YMWIEAGDXrl2YP3++xjJGiK7R9rEQ63usQ86XA5fEVRnEoi9EA0C1gU6wqA1Mo9QOYGFh\nYfDw8MDRo0fBGMMPP/yAjh07ajJvhBAdMtt7NmZ7U6mKaI7aAQwAOnXqhObNm/PPf6WnpytMeUII\nEQ56zqsBUBuYRqkdwBISEjB79mxkZWWhRYsWSEtLg7u7Oy5duqTJ/BGiNbShjYoQ8pLaAWzhwoU4\nefIkXnvtNZw7dw5Hjx7F9u3bNZk3QrRKY7dR1TdtmO/Ll+n4jwRqA9MotQOYgYEBbGxsIJfLIZfL\nMWDAAERGRmoyb4RolboONEtjIVYvKYp7ucCp2oqQUrUeSqrMa6+9hr1792LevHnIyclBixYtcOrU\nKfzxxx+azqNahDQcChEGGkqq/unCUFJVEcKPFCHdO9UeiSM+Ph4mJiZYtWoVBg0ahLZt2yqdI4wQ\nop04rnKpkvpxECFRqwqxpKQEAQEBOHr0KMRiMcaOHavpfBFCNEwb5vtq8qgNTKPUCmB6enoQi8V4\n9OgRLC0tNZ0nQrQTdYFuGH4c4BcFUYVpqWS+MgqsRIHanTjMzMzQpUsXvP766zA1NeXXr1mzRiMZ\nI0Tr1HEsxLKhlMZ2U15jMbbbWERfiIaZoYoZMetIoQSWyAF+ilPd+/k1fslLJgMSASQ1ai7qEf0I\n0ii1A9iwYcMwbNgwTeaFEJ1WNpSSi5WL0nQXKxeYGZqB8+UaNF/apGxA4SSdjWDk/9u795gozvUP\n4N8toqdCVPBWcCmr7VrAIgoi6S/GXW/QCEpRJEsNSotptWrUWMU2sTukNWprm/QS2mi09dKyKNhS\n2oaoyFD1oCReGq8VUsGyNs1JORxrFRdhfn8sO+6Vve/M7D6fZFJn9p2dl7e78+x7HV9yexSiVFbb\nkNJIGiINUh8laD7Py/QEefMamPm+WDCM5ZOwgcdPvd4owVWpvJ2KEQhSune6XQN76aWXcOHCBQDA\n4sWLUV1d7fNMEUL8y5+rzvvbvXvSDWDEt9wOYOaR+bfffvNpZggh/hMUax2qGaSkAMZHETICZ8YD\n1AfmU24HMJnZTEPzfxMS7GgtxMCznpsmKyvDL49fDXR2iMi4HcB++eUXDBs2DBzH4cGDBxg2bBgA\nY81MJpPh7t27Ps8kIWIgpWY2e8Sw1mHIo3lgPuV2AOvt7fVHPggRPSl0wBMSSjxeC1HspDSShkhD\nsK/TJwVSHwlKayH6lsdrIXqrrq4OCQkJmDhxInbu3GnzusFggEajgVKpxAsvvIDbt28DAE6cOIFp\n06YhJSUF6enpaGhoCHTWCSGEiIBXT2T2VF9fH9asWYP6+nrExsYiPT0dubm5SEhI4NPs3bsX0dHR\naGlpQWVlJTZv3gydTofRo0fjhx9+wFNPPYWrV68iKysLHR0dQvwZhIiOqWnT3n+DoQ9M8s8Loz4w\nnxIkgDU3N0OpVCI+Ph4AoNFoUFNTYxHAampqUNY/gzE/Px9r1qwBAKSkpPBpJk2ahIcPH6Knpwfh\n4eEB/AtISJLIEGgWjMWCvKb9YGDveWEMy6Cs8fFsZ9NqJhv/jyaKBTtBApher0dcXBy/L5fL0dzc\n7DBNWFgYRowYgc7OTkRHR/NpqqqqMHXqVApeJDC8XAtRaFKtdbnrnuEemEaRBjCrH0HWK6CIdUUU\nsRKkD8xeB6H1nDLrNKZh+iZXr17FW2+9hd27d/snk4RIEMM8XibK3n6ouGe4J3QWSAAIUgOTy+X8\noAwA6OjoQGxsrEWauLg4/P7774iNjUVvby/u3r2LqKgoPv2iRYtw8OBBKBQKh9dhLNZ+U0Mdit9k\nEjIc9XEF+695Rs3Y1GBES4R9YCzLgmVZobPhEUGG0ff29uK5555DfX09YmJiMH36dFRUVCAxMZFP\nU15ejitXrqC8vBw6nQ7fffcddDodurq6oFarodVqkZeX5/AaUhoKSqRB7EO4g2GQhjNSn8oghbmE\nUrp3CjYPrK6uDuvWrUNfXx9KSkqwZcsWaLVapKenIycnBw8fPkRRUREuXryIkSNHQqfTQaFQYNu2\nbdixYweUSiXfrHjs2DGMGjXK8g+T0P8EIg1iD2ChQAoBwBtimCcmpXsnTWQmxIq9R3gAgErL2DyG\nhAjP+v+X2B+3MtBUBwpg7hGkD4wQKVKDAaMWOheOhUIToisk/bgVEfaRiZlgK3EQQoi/3KNBiCGB\nmhAJkSCaP2Sf1Guh1IToHqqBESJRLGs5kMF6PxQ1ysr4jQQ/6gMjPmFazsffy/hYLxtkolVpffqL\nNVDXcYd57YKmNDonK5MJ+v/LI9QH5haqgRGXMSzDb46YlvGRAoYxzisy34qLpVGLYdQM1GbLWVnv\nh6rIwZFCZ4EEENXAiMvMayQD/aqV8jI++/cbh2FvVAudE1vWfTrWgVYKgdffGBUDppFx+BkUQx/T\ngCSyYLRY0CAO4jJnE3nFMtHX0TwurdZ2Iqx1OrHPISLeEctn1BExBFgp3TupBkZCFsNIq9Yi9RF2\ngSD5lTqoD8wtFMCIz2hVwj5s0PTrlTXueXw+IGzzkqOVGohz5jVqKrfgRwGM+IzQfQp8H50M4Dj3\n8+JqH18g2HsopVotfL6In1EfmFsogBGXiaWGBdCNnBBCAYy4QeigIaYakj84mudlXOQ1wJkJUkL/\nCHOK+sDcQgGMEBGyDtDBGLCFQOUYXCiAESIAU23LNJrQep94RuuggmU+ZULUUyWoD8wtFMCIzwje\nR8Wa3b08aCkSffMSccqV+C+Vx63Qgs3OUQALctZr+vlzrULz65j+7WgtOkdrDYb/W4ueY4/TW08+\nHtAAS1y5wt83BjXVrkRDtI9bsegDYxylIv0ogIUY01qFngQwZzWsyMGRXi8j1WNw/Fow1ZCsmwqp\n6dC/TJPWZTJnKYmUUAALQY6CzIcfGr/k5r9OzWtAFjUmlrFdrukFBoMzGRhkzt9fpQXg5s1ESk0n\n1MclTiotY7bHOEglHIvJ6yxjNZmdAdQMNSWaoQAWROzVkBg1Y9OG7vB8xsumlaaNeCtzI5gBOtJN\n768GA9biZtL/JVUZN3v3eWfLBDnqwCfExPI5YYxQ2SA+QgEsiDibJ+XsF5u/+wWcvb+zyol5jc/0\nb/MaYiAqN46WeWIY6uMiAUDzxCxQACM88xqMs3uxtwvhenJuZOTAQdDbUZCunm9vmSfricbUx0W8\nYf1xoXUx7aMARnhi/3KYgqajIObtSh3enk9BivgdzROzIFgAq6urw/r169HX14eSkhKUlpZavG4w\nGLBs2TKcP38eo0aNQmVlJZ5++mkAwPbt27Fv3z4MGjQIH3/8MTIzM4X4EwLO3iALwM2h5l7wdhSg\nsz4qZzWgv9MYbKx1/LqvORqIQcs8BQfrEYmB+h4R3xEkgPX19WHNmjWor69HbGws0tPTkZubi4SE\nBD7N3r17ER0djZaWFlRWVmLz5s3Q6XS4du0aDh8+jOvXr6OjowNz585FS0sLZCEwPtbrQRYuYFkW\navM7tPn1vQwaTvu4nNSAfLEW4oCjA2+pXHoPe8s8sSzrUX5C3UCfN3/QqrRgWaCxMWCX9C2WQVsb\nizYFCwa2A7RCbWTiE0JctLm5GUqlEvHx8QgPD4dGo0FNTY1FmpqaGixfvhwAkJ+fj5MnTwIAvv/+\ne2g0GgwaNAgKhQJKpRLNzc0B/xuEsHEj0F8kdmlVWn6zh2EZfnPEmxsxwwDFxcZftuZbwH/V3lJZ\nLozLMH4fYEEBzDOBLjdGzUANxutJ70Jqa2MBACxr+d2y3g8FggQwvV6PuLg4fl8ul0Ov1ztMExYW\nhuHDh6Ozs9Pm3HHjxtmc62+efulcPc9ROmOAYMFxsNhMH1o11BbD5q3fq6yxDGVflVnUZHx5A/nw\nQ2D/fsevm1/LOqiorWpA5q+zLDvg6/z5TSkOr93V1ub8+PhGfmNZFizD8DU1e/uBItTnbaDX7B13\n5ZgYyo1hYPMdMv8euZJHZ2n8VW4MY2zCdlRpNQ4oGvhHajARpAmR4zibY9ZNgI7SuHIuf3wWAwDQ\nqowTAhXri9He1Wa8SQGPb4jtauMvMrWL6VkA7azr6U3vH88A49XevT/LAnntFum1xcbA9dJ6Bv9K\nUOPPSuN5UDPALRbaYtb45bylAi61AePbISuTYfit5fgf22a8Vn/6iP+wYMEY58uY8tOfv/j/Lodi\nhMLh5NwxBQzutwF9J82uD8DU2VzMMFCo1W4PdnD1pje8C1iv0uKr/7ZZHG/rakP7JRayMhk/eVpW\nVgatSouXFAow/fkxr7laN2052/cnT6/l6nkDpXP0mr3jrhwTU7k5Ws4svkGF9kbW5rhKyzyeR9YA\nYFb/cU6LxjLG+upQaVmreWfG81Rq6/QsALWT9wcsxs2XMYhXsSgDgzLTnBJWCyhYXPpKgf+1K1Bm\nukZ/MIvXqtEuawQa+j/ns8r6/94GtDeqpbl0FSeApqYmLisri9/fvn07t2PHDos0L774Inf27FmO\n4zju0aNH3OjRo+2mzcrK4tOZA0AbbbTRRpsHm1QIUgNLT09Ha2sr2tvbERMTA51Oh4qKCos0CxYs\nwP79+5GRkYEjR45g9uzZAICFCxdi6dKl2LBhA/R6PVpbWzF9+nSba3B2amqEEEKChyABLCwsDJ99\n9hkyMzP5YfSJiYnQarVIT09HTk4OSkpKUFRUBKVSiZEjR0Kn0wEAkpKSUFBQgKSkJISHh6O8vDwk\nRiASQgixJOOoqkIIIUSCBBmFSAghhHgrpALYjRs3sGrVKhQUFOCLL74QOjuSUVNTg9deew2FhYU4\nfvy40NmRjFu3bmHFihUoKCgQOiuScf/+fRQXF+P111/HN998I3R2JCNUP2sh2YTIcRyWL1+OAwcO\nCJ0VSenq6sKmTZuwZ88eobMiKQUFBTh8+LDQ2ZCEQ4cOISoqCtnZ2dBoNHzfN3FNqH3WJFkDKykp\nwdixYzF58mSL43V1dUhISMDEiROxc+dOu+fW1tYiJycH8+fPD0RWRcWbcgOA9957D6tXr/Z3NkXH\n23ILZe6WXUdHh8UCBqGKPnMuEnIMv6dOnTrFXbx4kUtOTuaP9fb2cs888wzX1tbGGQwGLiUlhbt+\n/TrHcRx34MABbsOGDdydO3f49NnZ2QHPt9A8LTe9Xs+VlpZy9fX1QmVdUN5+3vLz8wXJtxi4W3aH\nDh3ifvzxR47jOK6wsFCQPIuBu+VmEmqfNUnWwGbMmIGoqCiLYwOtr1hUVISPPvoIN2/exLp167By\n5UpkZ2cLkXVBeVpu1dXVqK+vR1VVFXbv3i1E1gXlabkNGTIEq1atwqVLl0L217K7ZZeXl4eqqiqs\nXr0aCxYsECLLouBuuXV2dobkZy1ongdmb31F60V+VSoVVCpVoLMmaq6U29q1a7F27dpAZ03UXCm3\n6OhofP7554HOmugNVHZDhw7Fvn37hMqaqA1UbqH6WZNkDcwezo01EsljVG6eoXLzHJWdZ6jcbAVN\nAJPL5bh9+za/39HRgdjYWAFzJA1Ubp6hcvMclZ1nqNxsSTaAcRxn8YvEfH1Fg8EAnU6HhQsXCphD\ncaJy8wyVm+eo7DxD5eYCAQaOeK2wsJCLiYnhBg8ezMXFxXH79u3jOI7jfvrpJ27ixIncs88+y23f\nvl3gXIoPlZtnqNw8R2XnGSo314TkRGZCCCHSJ9kmREIIIaGNAhghhBBJogBGCCFEkiiAEUIIkSQK\nYIQQQiSJAhghhBBJogBGCCFEkiiAkZATFhaG1NRUTJ06FampqXj//feFzhJvyZIlaGtrAwAoFAqb\nxaenTJli84woaxMmTEBLS4vFsQ0bNmDXrl24cuUKXnnlFZ/mmRChBM1q9IS4KiIiAhcuXPDpe/b2\n9nr9AMZr166hr68PCoUCgHGh1r///ht6vR7jxo3DjRs3XFq8tbCwEDqdDlu3bgVgXJKoqqoKTU1N\nkMvl0Ov16OjogFwu9yq/hAiNamAk5DhafGb8+PFgGAZpaWlISUnBzZs3AQD3799HSUkJMjIykJaW\nhtraWgDA/v37kZubizlz5mDu3LngOA5vvPEGkpKSkJmZiezsbBw9ehQnT57EokWL+OucOHECixcv\ntrn+119/jdzcXItjBQUF0Ol0AICKigq8/PLL/Gt9fX3YvHkzMjIyMGXKFOzZswcAoNFoUFFRwaf7\n+eefMX78eD5g5eTk8O9JiJRRACMh58GDBxZNiEeOHOFfGzNmDM6fP4+VK1di165dAIBt27Zhzpw5\nOHfuHE6ePIk333wTDx48AABcvHgRR48eRUNDA44ePYrbt2/j2rVrOHjwIJqamgAAs2fPxo0bN/DX\nX38BAL788ku8+uqrNvk6c+YM0tLS+H2ZTIb8/Hx8++23AIDa2lqLhzzu3bsXI0aMwLlz59Dc3Izd\nu3ejvb0dycnJCAsLw+XLlwEAOp0OhYWF/HnTpk3DqVOnfFKWhAiJmhBJyBk6dKjDJsS8vDwAQFpa\nGh84jh07htraWnzwwQcAAIPBwD/WYt68eRg+fDgA4PTp01iyZAkAYOzYsZg1axb/vkVFRTh06BCK\ni4tx9uxZHDx40Obaf/zxB0aPHm1xLDo6GlFRUaisrERSUhKefPJJ/rVjx47h8uXLfAC+e/cuWlpa\nEB8fD41GA51Oh6SkJNTU1ODdd9/lzxszZgzu3LnjRokRIk4UwAgxM2TIEADGgR6PHj0CYGxyrK6u\nhlKptEh79uxZRERE8PsDrYtdXFyMBQsWYMiQIViyZAmeeMK28WPo0KHo7u62OV5QUIDVq1fjwIED\nFsc5jsOnn36KefPm2ZxTWFiIzMxMzJw5EykpKRg1ahT/Wnd3t0UgJESqqAmRhBx3H8CQlZWFTz75\nhN+/dOmS3XQzZsxAdXU1OI7Dn3/+CZZl+ddiYmIQGxuLbdu2obi42O75iYmJaG1ttclnXl4eSktL\nkZmZaZOv8vJyPtC2tLTwTZsTJkzAyJEjsWXLFovmQwC4efMmnn/+edf+eEJEjAIYCTnd3d0WfWBv\nv/02AMePZ9+6dSt6enowefJkJCcn45133rGbbvHixZDL5Zg0aRKWLVuGtLQ0vnkRAJYuXYq4uDgk\nJCTYPX/+/PloaGjg9035iYyMxKZNmzBokGWDyYoVK5CUlITU1FQkJydj5cqVfDADjLWwX3/9lW8W\nNWloaEB2draj4iFEMuh5YIT40D///IOIiAh0dnYiIyMDZ86cwZgxYwAAa9euRWpqqsN5WN3d3Zg9\nezbOnDnj0nB5TxgMBqjVapw+fdpuMyYhUkIBjBAfmjVrFrq6utDT04PS0lIUFRUBMI78i4yMxPHj\nxxEeHu7w/OPHjyMxMdFvc7RaW1tx584dzJw50y/vT0ggUQAjhBAiSdSGQAghRJIogBFCCJGk/wdd\nfmI+3IqsCwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": { + "image/png": { + "width": 350 + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import Image\n", + "Image(filename='images/mdgxs.png', width=350)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A variety of tools employing different methodologies have been developed over the years to compute multi-group cross sections for certain applications, including NJOY (LANL), MC$^2$-3 (ANL), and Serpent (VTT). The `openmc.mgxs` Python module is designed to leverage OpenMC's tally system to calculate multi-group cross sections with arbitrary energy discretizations and different delayed group models (e.g. 6, 7, or 8 delayed group models) for fine-mesh heterogeneous deterministic neutron transport applications.\n", + "\n", + "Before proceeding to illustrate how one may use the `openmc.mgxs` module, it is worthwhile to define the general equations used to calculate multi-energy-group and multi-delayed-group cross sections. This is only intended as a brief overview of the methodology used by `openmc.mgxs` - we refer the interested reader to the large body of literature on the subject for a more comprehensive understanding of this complex topic." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introductory Notation\n", + "The continuous real-valued microscopic cross section may be denoted $\\sigma_{n,x}(\\mathbf{r}, E)$ for position vector $\\mathbf{r}$, energy $E$, nuclide $n$ and interaction type $x$. Similarly, the scalar neutron flux may be denoted by $\\Phi(\\mathbf{r},E)$ for position $\\mathbf{r}$ and energy $E$. **Note**: Although nuclear cross sections are dependent on the temperature $T$ of the interacting medium, the temperature variable is neglected here for brevity." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Spatial and Energy Discretization\n", + "The energy domain for critical systems such as thermal reactors spans more than 10 orders of magnitude of neutron energies from 10$^{-5}$ - 10$^7$ eV. The multi-group approximation discretization divides this energy range into one or more energy groups. In particular, for $G$ total groups, we denote an energy group index $g$ such that $g \\in \\{1, 2, ..., G\\}$. The energy group indices are defined such that the smaller group the higher the energy, and vice versa. The integration over neutron energies across a discrete energy group is commonly referred to as **energy condensation**.\n", + "\n", + "The delayed neutrons created from fissions are created from > 30 delayed neutron precursors. Modeling each of the delayed neutron precursors is possible, but this approach has not recieved much attention due to large uncertainties in certain precursors. Therefore, the delayed neutrons are often combined into \"delayed groups\" that have a set time constant, $\\lambda_d$. Some cross section libraries use the same group time constants for all nuclides (e.g. JEFF 3.2) while other libraries use different time constants for all nuclides (e.g. ENDF/B-VII.1). Multi-delayed-group cross sections can either be created with the entire delayed group set, a subset of delayed groups, or integrated over all delayed groups.\n", + "\n", + "Multi-group cross sections are computed for discretized spatial zones in the geometry of interest. The spatial zones may be defined on a structured and regular fuel assembly or pin cell mesh, an arbitrary unstructured mesh or the constructive solid geometry used by OpenMC. For a geometry with $K$ distinct spatial zones, we designate each spatial zone an index $k$ such that $k \\in \\{1, 2, ..., K\\}$. The volume of each spatial zone is denoted by $V_{k}$. The integration over discrete spatial zones is commonly referred to as **spatial homogenization**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### General Scalar-Flux Weighted MDGXS\n", + "The multi-group cross sections computed by `openmc.mgxs` are defined as a *scalar flux-weighted average* of the microscopic cross sections across each discrete energy group. This formulation is employed in order to preserve the reaction rates within each energy group and spatial zone. In particular, spatial homogenization and energy condensation are used to compute the general multi-group cross section. For instance, the delayed-nu-fission multi-energy-group and multi-delayed-group cross section, $\\nu_d \\sigma_{f,x,k,g}$, can be computed as follows:\n", + "\n", + "$$\\nu_d \\sigma_{n,x,k,g} = \\frac{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r} \\nu_d \\sigma_{f,x}(\\mathbf{r},E')\\Phi(\\mathbf{r},E')}{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\Phi(\\mathbf{r},E')}$$\n", + "\n", + "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for only the delayed-nu-fission and delayed neutron fraction reaction type at the oment. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell, universe, or mesh) define the bounds of integration for both numerator and denominator." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Multi-Group Prompt and Delayed Fission Spectrum\n", + "The energy spectrum of neutrons emitted from fission is denoted by $\\chi_{n}(\\mathbf{r},E' \\rightarrow E'')$ for incoming and outgoing energies $E'$ and $E''$, respectively. Unlike the multi-group cross sections $\\sigma_{n,x,k,g}$ considered up to this point, the fission spectrum is a probability distribution and must sum to unity. The outgoing energy is typically much less dependent on the incoming energy for fission than for scattering interactions. As a result, it is common practice to integrate over the incoming neutron energy when computing the multi-group fission spectrum. The fission spectrum may be simplified as $\\chi_{n}(\\mathbf{r},E)$ with outgoing energy $E$.\n", + "\n", + "Computing the cumulative energy spectrum of emitted neutrons, $\\chi_{n}(\\mathbf{r},E)$, has been presented in the `mgxs-part-i.ipynb` notebook. Here, we will present the energy spectrum of prompt and delayed emission neutrons, $\\chi_{n,p}(\\mathbf{r},E)$ and $\\chi_{n,d}(\\mathbf{r},E)$, respectively. Unlike the multi-group cross sections defined up to this point, the multi-group fission spectrum is weighted by the fission production rate rather than the scalar flux. This formulation is intended to preserve the total fission production rate in the multi-group deterministic calculation. In order to mathematically define the multi-group fission spectrum, we denote the microscopic fission cross section as $\\sigma_{n,f}(\\mathbf{r},E)$ and the average number of neutrons emitted from fission interactions with nuclide $n$ as $\\nu_{n,p}(\\mathbf{r},E)$ and $\\nu_{n,d}(\\mathbf{r},E)$ for prompt and delayed neutrons, respectively. The multi-group fission spectrum $\\chi_{n,k,g,d}$ is then the probability of fission neutrons emitted into energy group $g$. \n", + "\n", + "Similar to before, spatial homogenization and energy condensation are used to find the multi-energy-group and multi-delayed-group fission spectrum $\\chi_{n,k,g,d}$ as follows:\n", + "\n", + "$$\\chi_{n,k,g',d} = \\frac{\\int_{E_{g'}}^{E_{g'-1}}\\mathrm{d}E''\\int_{0}^{\\infty}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\chi_{n,d}(\\mathbf{r},E'\\rightarrow E'')\\nu_{n,d}(\\mathbf{r},E')\\sigma_{n,f}(\\mathbf{r},E')\\Phi(\\mathbf{r},E')}{\\int_{0}^{\\infty}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\nu_{n,d}(\\mathbf{r},E')\\sigma_{n,f}(\\mathbf{r},E')\\Phi(\\mathbf{r},E')}$$\n", + "\n", + "The fission production-weighted multi-energy-group and multi-delayed-group fission spectrum for delayed neutrons is computed using OpenMC tallies with energy in, energy out, and delayed group filters. Alternatively, the delayed group filter can be omitted to compute the fission spectrum integrated over all delayed groups.\n", + "\n", + "This concludes our brief overview on the methodology to compute multi-energy-group and multi-delayed-group cross sections. The following sections detail more concretely how users may employ the `openmc.mgxs` module to power simulation workflows requiring multi-group cross sections for downstream deterministic calculations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Input Files" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import openmc\n", + "import openmc.mgxs as mgxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we need to define materials that will be used in the problem. Before defining a material, we must create nuclides that are used in the material." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate some Nuclides\n", + "h1 = openmc.Nuclide('H1')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "pu239 = openmc.Nuclide('Pu239')\n", + "zr90 = openmc.Nuclide('Zr90')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the nuclides we defined, we will now create a material for the homogeneous medium." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a Material and register the Nuclides\n", + "inf_medium = openmc.Material(name='moderator')\n", + "inf_medium.set_density('g/cc', 5.)\n", + "inf_medium.add_nuclide(h1, 0.03)\n", + "inf_medium.add_nuclide(o16, 0.015)\n", + "inf_medium.add_nuclide(u235 , 0.0001)\n", + "inf_medium.add_nuclide(u238 , 0.007)\n", + "inf_medium.add_nuclide(pu239, 0.00003)\n", + "inf_medium.add_nuclide(zr90, 0.002)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With our material, we can now create a `Materials` object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a Materials collection and export to XML\n", + "materials_file = openmc.Materials([inf_medium])\n", + "materials_file.default_xs = '71c'\n", + "materials_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's move on to the geometry. This problem will be a simple square cell with reflective boundary conditions to simulate an infinite homogeneous medium. The first step is to create the outer bounding surfaces of the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate boundary Planes\n", + "min_x = openmc.XPlane(boundary_type='reflective', x0=-0.63)\n", + "max_x = openmc.XPlane(boundary_type='reflective', x0=0.63)\n", + "min_y = openmc.YPlane(boundary_type='reflective', y0=-0.63)\n", + "max_y = openmc.YPlane(boundary_type='reflective', y0=0.63)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create a cell that is defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a Cell\n", + "cell = openmc.Cell(cell_id=1, name='cell')\n", + "\n", + "# Register bounding Surfaces with the Cell\n", + "cell.region = +min_x & -max_x & +min_y & -max_y\n", + "\n", + "# Fill the Cell with the Material\n", + "cell.fill = inf_medium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "OpenMC requires that there is a \"root\" universe. Let us create a root universe and add our square cell to it." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate Universe\n", + "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", + "root_universe.add_cell(cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now must create a geometry that is assigned a root universe and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "openmc_geometry = openmc.Geometry()\n", + "openmc_geometry.root_universe = root_universe\n", + "\n", + "# Export to \"geometry.xml\"\n", + "openmc_geometry.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we must define simulation parameters. In this case, we will use 10 inactive batches and 40 active batches each with 2500 particles." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# OpenMC simulation parameters\n", + "batches = 50\n", + "inactive = 10\n", + "particles = 5000\n", + "\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", + "settings_file.batches = batches\n", + "settings_file.inactive = inactive\n", + "settings_file.particles = particles\n", + "settings_file.output = {'tallies': True}\n", + "\n", + "# Create an initial uniform spatial source distribution over fissionable zones\n", + "bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n", + "uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n", + "settings_file.source = openmc.source.Source(space=uniform_dist)\n", + "\n", + "# Export to \"settings.xml\"\n", + "settings_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are ready to generate multi-group cross sections! First, let's define a 2-energy-group structure using the built-in `EnergyGroups` class. We will also create a 6-delayed-group structure using the built-in `DelayedGroups` class." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a 100-group EnergyGroups object\n", + "energy_groups = mgxs.EnergyGroups()\n", + "energy_groups.group_edges = np.logspace(-9,1.3,101)\n", + "\n", + "# Instantiate a 1-group EnergyGroups object\n", + "one_group = mgxs.EnergyGroups()\n", + "one_group.group_edges = np.array([0., 20.])\n", + "\n", + "delayed_groups = mgxs.DelayedGroups()\n", + "delayed_groups.groups = range(1,7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now use the `EnergyGroups` and `DelayedGroups` objects, along with our previously created materials and geometry, to instantiate some `MGXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of the generic and abstract `MGXS` class:\n", + "\n", + "* `TotalXS`\n", + "* `TransportXS`\n", + "* `NuTransportXS`\n", + "* `AbsorptionXS`\n", + "* `CaptureXS`\n", + "* `FissionXS`\n", + "* `NuFissionXS`\n", + "* `KappaFissionXS`\n", + "* `ScatterXS`\n", + "* `NuScatterXS`\n", + "* `ScatterMatrixXS`\n", + "* `NuScatterMatrixXS`\n", + "* `Chi`\n", + "* `ChiPrompt`\n", + "* `InverseVelocity`\n", + "* `PromptNuFissionXS`\n", + "\n", + "A separate abstract `MDGXS` class is used for cross-sections and parameters that involve delayed neutrons. The subclasses of `MDGXS` include:\n", + "\n", + "* `DelayedNuFissionXS`\n", + "* `ChiDelayed`\n", + "* `Beta`\n", + "\n", + "These classes provide us with an interface to generate the tally inputs as well as perform post-processing of OpenMC's tally data to compute the respective multi-group cross sections. In this case, let's create the multi-group chi-prompt and prompt-nu-fission cross sections with our 2-energy-group structure and multi-group chi-delayed, delayed-nu-fission, and beta cross sections with our 2-energy-group and 6-delayed-group structures. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a few different sections\n", + "chi_prompt = mgxs.ChiPrompt(domain=cell, groups=energy_groups, by_nuclide=True)\n", + "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=cell, groups=one_group, by_nuclide=True)\n", + "chi_delayed = mgxs.ChiDelayed(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", + "delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=one_group, delayed_groups=delayed_groups, by_nuclide=True)\n", + "beta = mgxs.Beta(domain=cell, energy_groups=one_group, delayed_groups=delayed_groups, by_nuclide=True)\n", + "\n", + "chi_prompt.nuclides = ['U235', 'Pu239']\n", + "prompt_nu_fission.nuclides = ['U235', 'Pu239']\n", + "chi_delayed.nuclides = ['U235', 'Pu239']\n", + "delayed_nu_fission.nuclides = ['U235', 'Pu239']\n", + "beta.nuclides = ['U235', 'Pu239']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each multi-group cross section object stores its tallies in a Python dictionary called `tallies`. We can inspect the tallies in the dictionary for our `Beta` object as follows. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([('nu-fission', Tally\n", + " \tID =\t10000\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0. 20.]\n", + " \tNuclides =\tU235 Pu239 \n", + " \tScores =\t['nu-fission']\n", + " \tEstimator =\ttracklength), ('delayed-nu-fission', Tally\n", + " \tID =\t10001\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tdelayedgroup\t[1 2 3 4 5 6]\n", + " \t\tenergy\t[ 0. 20.]\n", + " \tNuclides =\tU235 Pu239 \n", + " \tScores =\t['delayed-nu-fission']\n", + " \tEstimator =\ttracklength)])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "beta.tallies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `Beta` object includes tracklength tallies for the 'nu-fission' and 'delayed-nu-fission' scores in the 2-energy-group and 6-delayed-group structure in cell 1. Now that each `MGXS` and `MDGXS` object contains the tallies that it needs, we must add these tallies to a `Tallies` object to generate the \"tallies.xml\" input file for OpenMC." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate an empty Tallies object\n", + "tallies_file = openmc.Tallies()\n", + "\n", + "# Add chi-prompt tallies to the tallies file\n", + "tallies_file += chi_prompt.tallies.values()\n", + "\n", + "# Add prompt-nu-fission tallies to the tallies file\n", + "tallies_file += prompt_nu_fission.tallies.values()\n", + "\n", + "# Add chi-delayed tallies to the tallies file\n", + "tallies_file += chi_delayed.tallies.values()\n", + "\n", + "# Add delayed-nu-fission tallies to the tallies file\n", + "tallies_file += delayed_nu_fission.tallies.values()\n", + "\n", + "# Add beta tallies to the tallies file\n", + "tallies_file += beta.tallies.values()\n", + "\n", + "# Export to \"tallies.xml\"\n", + "tallies_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we a have a complete set of inputs, so we can go ahead and run our simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " .d88888b. 888b d888 .d8888b.\n", + " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", + " 888 888 88888b.d88888 888 888\n", + " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", + " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", + " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", + " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", + " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", + "__________________888______________________________________________________\n", + " 888\n", + " 888\n", + "\n", + " Copyright: 2011-2016 Massachusetts Institute of Technology\n", + " License: http://openmc.readthedocs.io/en/latest/license.html\n", + " Version: 0.8.0\n", + " Git SHA1: bc8a346a978644f5b2b21cccb6c5ae7f8397ebee\n", + " Date/Time: 2016-07-31 19:49:00\n", + " MPI Processes: 4\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", + " Reading materials XML file...\n", + " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", + " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", + " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", + " Reading Pu239.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Pu239_71c.h5\n", + " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for H1.71c\n", + " Reading tallies XML file...\n", + " Building neighboring cells lists for each surface...\n", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 1.21670 \n", + " 2/1 1.24155 \n", + " 3/1 1.21924 \n", + " 4/1 1.22486 \n", + " 5/1 1.21719 \n", + " 6/1 1.24330 \n", + " 7/1 1.22322 \n", + " 8/1 1.24133 \n", + " 9/1 1.21840 \n", + " 10/1 1.25141 \n", + " 11/1 1.21217 \n", + " 12/1 1.25625 1.23421 +/- 0.02204\n", + " 13/1 1.22056 1.22966 +/- 0.01351\n", + " 14/1 1.21757 1.22664 +/- 0.01002\n", + " 15/1 1.24571 1.23045 +/- 0.00865\n", + " 16/1 1.26489 1.23619 +/- 0.00910\n", + " 17/1 1.22323 1.23434 +/- 0.00791\n", + " 18/1 1.26108 1.23768 +/- 0.00762\n", + " 19/1 1.23145 1.23699 +/- 0.00676\n", + " 20/1 1.23548 1.23684 +/- 0.00605\n", + " 21/1 1.20446 1.23390 +/- 0.00621\n", + " 22/1 1.20533 1.23152 +/- 0.00615\n", + " 23/1 1.22520 1.23103 +/- 0.00568\n", + " 24/1 1.18367 1.22765 +/- 0.00625\n", + " 25/1 1.23614 1.22821 +/- 0.00585\n", + " 26/1 1.23746 1.22879 +/- 0.00550\n", + " 27/1 1.23626 1.22923 +/- 0.00518\n", + " 28/1 1.21334 1.22835 +/- 0.00497\n", + " 29/1 1.25169 1.22958 +/- 0.00486\n", + " 30/1 1.25579 1.23089 +/- 0.00479\n", + " 31/1 1.23828 1.23124 +/- 0.00457\n", + " 32/1 1.26911 1.23296 +/- 0.00468\n", + " 33/1 1.20090 1.23157 +/- 0.00469\n", + " 34/1 1.28606 1.23384 +/- 0.00503\n", + " 35/1 1.23129 1.23374 +/- 0.00483\n", + " 36/1 1.22535 1.23341 +/- 0.00465\n", + " 37/1 1.20367 1.23231 +/- 0.00461\n", + " 38/1 1.22886 1.23219 +/- 0.00444\n", + " 39/1 1.24056 1.23248 +/- 0.00429\n", + " 40/1 1.25038 1.23307 +/- 0.00419\n", + " 41/1 1.21504 1.23249 +/- 0.00410\n", + " 42/1 1.20762 1.23171 +/- 0.00404\n", + " 43/1 1.20597 1.23093 +/- 0.00399\n", + " 44/1 1.24424 1.23133 +/- 0.00389\n", + " 45/1 1.24767 1.23179 +/- 0.00381\n", + " 46/1 1.22998 1.23174 +/- 0.00370\n", + " 47/1 1.26352 1.23260 +/- 0.00370\n", + " 48/1 1.23155 1.23257 +/- 0.00360\n", + " 49/1 1.22059 1.23227 +/- 0.00352\n", + " 50/1 1.24724 1.23264 +/- 0.00345\n", + " Creating state point statepoint.50.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 7.4000E-01 seconds\n", + " Reading cross sections = 3.9400E-01 seconds\n", + " Total time in simulation = 2.5930E+01 seconds\n", + " Time in transport only = 2.5267E+01 seconds\n", + " Time in inactive batches = 1.5300E+00 seconds\n", + " Time in active batches = 2.4400E+01 seconds\n", + " Time synchronizing fission bank = 6.4500E-01 seconds\n", + " Sampling source sites = 6.0000E-03 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 1.1000E-02 seconds\n", + " Total time elapsed = 2.6689E+01 seconds\n", + " Calculation Rate (inactive) = 32679.7 neutrons/second\n", + " Calculation Rate (active) = 8196.72 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.23260 +/- 0.00309\n", + " k-effective (Track-length) = 1.23264 +/- 0.00345\n", + " k-effective (Absorption) = 1.23111 +/- 0.00186\n", + " Combined k-effective = 1.23135 +/- 0.00185\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Run OpenMC\n", + "openmc.run(mpi_procs=4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created statepoint and summary output files. We begin our analysis by instantiating a `StatePoint` object. " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the last statepoint file\n", + "sp = openmc.StatePoint('statepoint.50.h5')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the statepoint file, our simulation also created a summary file which encapsulates information about the materials and geometry. By default, a `Summary` object is automatically linked when a `StatePoint` is loaded. This is necessary for the `openmc.mgxs` module to properly process the tally data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The statepoint is now ready to be analyzed by our multi-group cross sections. We simply have to load the tallies from the `StatePoint` into each object as follows and our `MGXS` objects will compute the cross sections for us under-the-hood." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the tallies from the statepoint into each MGXS object\n", + "chi_prompt.load_from_statepoint(sp)\n", + "prompt_nu_fission.load_from_statepoint(sp)\n", + "chi_delayed.load_from_statepoint(sp)\n", + "delayed_nu_fission.load_from_statepoint(sp)\n", + "beta.load_from_statepoint(sp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voila! Our multi-group cross sections are now ready to rock 'n roll!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Extracting and Storing MGXS Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's first inspect our delayed-nu-fission section by printing it to the screen." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Delayed-Group XS\n", + "\tReaction Type =\tdelayed-nu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t1\n", + "\tNuclide =\tU235\n", + "\tCross Sections [cm^-1]:\n", + " Delayed Group 1:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t5.16e-06 +/- 3.38e-01%\n", + "\n", + " Delayed Group 2:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t2.67e-05 +/- 3.38e-01%\n", + "\n", + " Delayed Group 3:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t2.54e-05 +/- 3.38e-01%\n", + "\n", + " Delayed Group 4:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t5.71e-05 +/- 3.38e-01%\n", + "\n", + " Delayed Group 5:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t2.34e-05 +/- 3.38e-01%\n", + "\n", + " Delayed Group 6:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t9.80e-06 +/- 3.38e-01%\n", + "\n", + "\n", + "\tNuclide =\tPu239\n", + "\tCross Sections [cm^-1]:\n", + " Delayed Group 1:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t1.17e-06 +/- 3.00e-01%\n", + "\n", + " Delayed Group 2:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t7.60e-06 +/- 3.00e-01%\n", + "\n", + " Delayed Group 3:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t5.75e-06 +/- 3.00e-01%\n", + "\n", + " Delayed Group 4:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t1.05e-05 +/- 3.00e-01%\n", + "\n", + " Delayed Group 5:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t5.47e-06 +/- 3.00e-01%\n", + "\n", + " Delayed Group 6:\t\n", + " Group 1 [0.0 - 20.0 MeV]:\t1.66e-06 +/- 3.00e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "delayed_nu_fission.print_xs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since the `openmc.mgxs` module uses [tally arithmetic](https://mit-crpg.github.io/openmc/pythonapi/examples/tally-arithmetic.html) under-the-hood, the cross section is stored as a \"derived\" `Tally` object. This means that it can be queried and manipulated using all of the same methods supported for the `Tally` class in the OpenMC Python API. For example, we can construct a [Pandas](http://pandas.pydata.org/) `DataFrame` of the multi-group cross section data." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
celldelayedgroupgroup innuclidemeanstd. dev.
0111U2350.0002281.038855e-06
1111Pu2390.0000813.258333e-07
2121U2350.0011755.362249e-06
3121Pu2390.0005312.121977e-06
4131U2350.0011225.119269e-06
5131Pu2390.0004021.605842e-06
6141U2350.0025161.147782e-05
7141Pu2390.0007332.931785e-06
8151U2350.0010314.705745e-06
9151Pu2390.0003821.527096e-06
10161U2350.0004321.971220e-06
11161Pu2390.0001164.621961e-07
\n", + "
" + ], + "text/plain": [ + " cell delayedgroup group in nuclide mean std. dev.\n", + "0 1 1 1 U235 0.000228 1.038855e-06\n", + "1 1 1 1 Pu239 0.000081 3.258333e-07\n", + "2 1 2 1 U235 0.001175 5.362249e-06\n", + "3 1 2 1 Pu239 0.000531 2.121977e-06\n", + "4 1 3 1 U235 0.001122 5.119269e-06\n", + "5 1 3 1 Pu239 0.000402 1.605842e-06\n", + "6 1 4 1 U235 0.002516 1.147782e-05\n", + "7 1 4 1 Pu239 0.000733 2.931785e-06\n", + "8 1 5 1 U235 0.001031 4.705745e-06\n", + "9 1 5 1 Pu239 0.000382 1.527096e-06\n", + "10 1 6 1 U235 0.000432 1.971220e-06\n", + "11 1 6 1 Pu239 0.000116 4.621961e-07" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = beta.get_pandas_dataframe()\n", + "df.head(12)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each multi-group cross section object can be easily exported to a variety of file formats, including CSV, Excel, and LaTeX for storage or data processing." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "beta.export_xs_data(filename='beta', format='excel')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code snippet shows how to export the chi `MGXS` to the same HDF5 binary data store." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "chi_prompt.build_hdf5_store(filename='mgxs', append=True)\n", + "chi_delayed.build_hdf5_store(filename='mgxs', append=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Tally Arithmetic to Compute the Delayed Neutron Precursor Concentrations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we illustrate how one can leverage OpenMC's [tally arithmetic](https://mit-crpg.github.io/openmc/pythonapi/examples/tally-arithmetic.html) data processing feature with `MGXS` objects. The `openmc.mgxs` module uses tally arithmetic to compute multi-group cross sections with automated uncertainty propagation. Each `MGXS` object includes an `xs_tally` attribute which is a \"derived\" `Tally` based on the tallies needed to compute the cross section type of interest. These derived tallies can be used in subsequent tally arithmetic operations. For example, we can use tally artithmetic to compute the delayed neutron precursor concentrations using the `Beta` and `DelayedNuFissionXS` objects. The delayed neutron precursor concentrations are modeled using the following equations:\n", + "\n", + "$$\\frac{\\partial}{\\partial t} C_{k,d} (t) = \\int_{0}^{\\infty}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r} \\beta_{k,d} (t) \\nu_d \\sigma_{f,x}(\\mathbf{r},E',t)\\Phi(\\mathbf{r},E',t) - \\lambda_{d} C_{k,d} (t) $$\n", + "\n", + "$$C_{k,d} (t=0) = \\frac{1}{\\lambda_{d}} \\int_{0}^{\\infty}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r} \\beta_{k,d} (t=0) \\nu_d \\sigma_{f,x}(\\mathbf{r},E',t=0)\\Phi(\\mathbf{r},E',t=0) $$" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
celldelayedgroupnuclidescoremeanstd. dev.
011(U235 / total)(((delayed-nu-fission / nu-fission) * (delayed...9.430766e-085.356653e-10
111(Pu239 / total)(((delayed-nu-fission / nu-fission) * (delayed...7.631830e-093.816602e-11
212(U235 / total)(((delayed-nu-fission / nu-fission) * (delayed...1.107191e-066.288818e-09
312(Pu239 / total)(((delayed-nu-fission / nu-fission) * (delayed...1.426298e-077.132776e-10
413(U235 / total)(((delayed-nu-fission / nu-fission) * (delayed...6.713761e-073.813401e-09
513(Pu239 / total)(((delayed-nu-fission / nu-fission) * (delayed...5.434458e-082.717718e-10
614(U235 / total)(((delayed-nu-fission / nu-fission) * (delayed...4.907155e-072.787253e-09
714(Pu239 / total)(((delayed-nu-fission / nu-fission) * (delayed...2.633756e-081.317115e-10
815(U235 / total)(((delayed-nu-fission / nu-fission) * (delayed...1.475656e-088.381692e-11
915(Pu239 / total)(((delayed-nu-fission / nu-fission) * (delayed...1.278385e-096.393074e-12
1016(U235 / total)(((delayed-nu-fission / nu-fission) * (delayed...1.190878e-096.764161e-12
1116(Pu239 / total)(((delayed-nu-fission / nu-fission) * (delayed...5.385798e-112.693384e-13
\n", + "
" + ], + "text/plain": [ + " cell delayedgroup nuclide \\\n", + "0 1 1 (U235 / total) \n", + "1 1 1 (Pu239 / total) \n", + "2 1 2 (U235 / total) \n", + "3 1 2 (Pu239 / total) \n", + "4 1 3 (U235 / total) \n", + "5 1 3 (Pu239 / total) \n", + "6 1 4 (U235 / total) \n", + "7 1 4 (Pu239 / total) \n", + "8 1 5 (U235 / total) \n", + "9 1 5 (Pu239 / total) \n", + "10 1 6 (U235 / total) \n", + "11 1 6 (Pu239 / total) \n", + "\n", + " score mean std. dev. \n", + "0 (((delayed-nu-fission / nu-fission) * (delayed... 9.43e-08 5.36e-10 \n", + "1 (((delayed-nu-fission / nu-fission) * (delayed... 7.63e-09 3.82e-11 \n", + "2 (((delayed-nu-fission / nu-fission) * (delayed... 1.11e-06 6.29e-09 \n", + "3 (((delayed-nu-fission / nu-fission) * (delayed... 1.43e-07 7.13e-10 \n", + "4 (((delayed-nu-fission / nu-fission) * (delayed... 6.71e-07 3.81e-09 \n", + "5 (((delayed-nu-fission / nu-fission) * (delayed... 5.43e-08 2.72e-10 \n", + "6 (((delayed-nu-fission / nu-fission) * (delayed... 4.91e-07 2.79e-09 \n", + "7 (((delayed-nu-fission / nu-fission) * (delayed... 2.63e-08 1.32e-10 \n", + "8 (((delayed-nu-fission / nu-fission) * (delayed... 1.48e-08 8.38e-11 \n", + "9 (((delayed-nu-fission / nu-fission) * (delayed... 1.28e-09 6.39e-12 \n", + "10 (((delayed-nu-fission / nu-fission) * (delayed... 1.19e-09 6.76e-12 \n", + "11 (((delayed-nu-fission / nu-fission) * (delayed... 5.39e-11 2.69e-13 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Set the time constants for the delayed precursors (in seconds^-1)\n", + "precursor_halflife = np.array([55.6, 24.5, 16.3, 2.37, 0.424, 0.195])\n", + "precursor_lambda = -np.log(0.5) / precursor_halflife\n", + "\n", + "# Create a tally object with only the delayed group filter for the time constants\n", + "beta_filters = [f for f in beta.xs_tally.filters if f.type != 'delayedgroup']\n", + "lambda_tally = beta.xs_tally.summation(nuclides=beta.xs_tally.nuclides)\n", + "for f in beta_filters:\n", + " lambda_tally = lambda_tally.summation(filter_type=f.type, remove_filter=True) * 0. + 1.\n", + "\n", + "# Set the mean of the lambda tally and reshape to account for nuclides and scores\n", + "lambda_tally._mean = precursor_lambda\n", + "lambda_tally._mean.shape = lambda_tally.std_dev.shape\n", + "\n", + "# Set a total nuclide and lambda score\n", + "lambda_tally.nuclides = [openmc.Nuclide(name='total')]\n", + "lambda_tally.scores = ['lambda']\n", + "\n", + "# Use tally arithmetic to compute the precursor concentrations\n", + "precursor_conc = beta.xs_tally.summation(filter_type='energy', remove_filter=True) * \\\n", + " delayed_nu_fission.xs_tally.summation(filter_type='energy', remove_filter=True) / lambda_tally\n", + " \n", + "# The difference is a derived tally which can generate Pandas DataFrames for inspection\n", + "precursor_conc.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can plot the delayed neutron fractions for each nuclide." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Beta (U-235) : 0.006504 +/- 0.000015\n", + "Beta (Pu-239): 0.002245 +/- 0.000004\n" + ] + }, + { + "data": { + "text/plain": [ + "(0, 7)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n771XLz/wwAO55JJLWLBgAfPmzVt9R8qOtPXkVe/EUikFl7+jrW3T5r6SGshKOGdGxNK0+HLggxGx\nK1mp5sftjtisizQ3w9KlVTfr1pYuza7D1rjjjjtYuHAhr7zyCj/72c/o379/m9ufcsopq29XfOGF\nF6617tvf/jZTp07lpptuqrhvv379GDNmDBdccAEvvvgiAP/1X//Fbrvtxq677so+++zD4YcfzoYb\nbsgWW2xRmwusoN5VYbOBYSWvtwHmlm0zC9gWmCupLzAwIt6UNDstX2dfSRuQJZVrI+KOlg0i4l8l\n2/8auKu1wJpLPv1NTU00NTXlviizeih6UmnRna6jM1VXNYuhQulk0003XavEMG/evNXPr7jiCq64\n4op19hk3bhz33Xcfjz76KA0NDW2ec/ny5bz88svsvPPO9O/fn0svvZRLL70UgF/96lfsvvvuuare\nJk2axKRJk6put448dwPr6APoC/w3MBzoBzwH7Fi2zanA5en5WLJ2FYCdgGfTfiPTcVpuTHYNWSN9\n+fm2Knl+FnBDK3FVv4Wa2XqW3aE9exRRV8Xfnf+eR4wYEQ8++OA6y48++ug4+uijY/ny5TF58uQY\nMmRIHHvssa0e5wc/+EGMGjUq5s2bt866J598Mh577LF47733YtmyZXHhhRfGgAED4vXXX4+IiDlz\n5sTcuXMjIuKJJ56IbbfdNh544IE2427tPSXnHSTXx22ADwD+DswAzknLxgOfS883Am5O658ERpTs\ne25KKNOA0WnZ3sDKlKSeBaYAB8SahPNCWvf/gC1bianNN9WsKzixdPS83fcNGzlyZMXE8vLLL8de\ne+0VjY2N8bnPfS7OPPPMNhOLpOjfv380Njauvl3xBRdcEBERjzzySOyyyy4xYMCAGDx4cDQ1NcVj\njz22et9HH300RowYEZtuumnssMMOceONN1aNu7OJxbcmNusmSmsmivjx7Kr4fWvi2vOtic3MrFup\n2ngv6ePAMcAnga2BZcBfgd8D10XEorpGaGZmhdJmVZikP5D1xLoD+AvwT6A/sD2wL3AwWSP6nfUP\ntXZcFWbdkavCOnpeV4XVWmerwqolliERsaBKAFW36W6cWKw7cmLp6HmdWGqtrm0sLQlD0qZp3i8k\nbS/pEEkblm5jZmYG+RvvHwX6SxoK3A8cC/y2XkGZmVlx5R15r4h4R9IJZIMZL5L0bD0DMzPLY/jw\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "energy_filter = [f for f in beta.xs_tally.filters if f.type == 'energy']\n", + "beta_integrated = beta.xs_tally.summation(filter_type='energy', remove_filter=True)\n", + "beta_u235 = beta_integrated.get_values(nuclides=['U235'])\n", + "beta_pu239 = beta_integrated.get_values(nuclides=['Pu239'])\n", + "\n", + "# Reshape the betas\n", + "beta_u235.shape = (beta_u235.shape[0])\n", + "beta_pu239.shape = (beta_pu239.shape[0])\n", + "\n", + "df = beta_integrated.summation(filter_type='delayedgroup', remove_filter=True).get_pandas_dataframe()\n", + "print('Beta (U-235) : {:.6f} +/- {:.6f}'.format(df[df['nuclide'] == 'U235']['mean'][0], df[df['nuclide'] == 'U235']['std. dev.'][0]))\n", + "print('Beta (Pu-239): {:.6f} +/- {:.6f}'.format(df[df['nuclide'] == 'Pu239']['mean'][1], df[df['nuclide'] == 'Pu239']['std. dev.'][1]))\n", + "\n", + "beta_u235 = np.append(beta_u235[0], beta_u235)\n", + "beta_pu239 = np.append(beta_pu239[0], beta_pu239)\n", + "\n", + "# Create a step plot for the MGXS\n", + "plt.plot(np.arange(0.5, 7.5, 1), beta_u235, drawstyle='steps', color='b', linewidth=3)\n", + "plt.plot(np.arange(0.5, 7.5, 1), beta_pu239, drawstyle='steps', color='g', linewidth=3)\n", + "\n", + "plt.title('Delayed Neutron Fraction (beta)')\n", + "plt.xlabel('Delayed Group')\n", + "plt.ylabel('Beta(fraction total neutrons)')\n", + "plt.legend(['U-235', 'Pu-239'])\n", + "plt.xlim([0,7])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also plot the fission spectrum for the prompt and delayed neutrons." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.001, 20)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n9erFmWeeyRtvvAFAkyZNgmWqSk5ODjt37mTHjh2AnT5zwoQJFBQU0KZNGyZMmBDTNPTCCy9w3HHH\n0bp1a8aPH1+ts3/wwQc5/vjjadOmDQMHDmTdunUR21m6dCmnnHIKBQUFFBcXh/xIBw8ezF/+8peQ\n+ieddBJPP23/dNasWUP//v1p06YNxx13HE888USw3o4dOzj//PMpKCigd+/eCaU3bciULi8NboaG\nR1IVg6oeAK4Dngc+Bhao6iciUioigwFE5Mcish64CLhPRAKJfYcCfYCxIvK+iLwnIifWpXyW30JK\npdoWzS4bqX5dRJ9cv359sKOMhldzyPfff8/KlSurpfw86aSTaNq0KRdccAFXXHFFMEdDIMxugIMH\nD7JhwwZ2795dre3t27dz0UUXcdttt7Ft2zaOPvpoXnvttWD5U089xe9//3ueeuoptm7dyplnnsmI\nESMiypmXl8fcuXPZtWsXS5Ys4b777gt2/IEcDQFWrVrFpk2bGDRoEHv37qV///6MHDmSbdu2MX/+\nfK699lo++eQTAK699lqaN2/Oli1bmD17tmf/h8FgqCLpsZJU9TlVPUZVu6rq751jJar6rPP5HVXt\nqKotVfVQZ3oqqvqYqjZR1VNU9WTn73+SLW99csEFF1BYWMhZZ51Fv379IialqSlXX301J598Mv37\n9w85vmrVKnbv3s28efM444wzgscHDhzI3XffzbZt2/jqq6+CWeH27t1bre2lS5dywgkn8LOf/YxG\njRpx/fXX065du2D5Aw88wJQpU+jWrRs5OTnceOONfPDBByFJfwKcddZZQeX1ox/9iOHDh7N8+XIA\nhgwZwmeffRZ823/00UcZNmwYjRo14tlnn6Vz586MHj0aEaFHjx5ceOGFLFy4kIMHD/Lkk09yyy23\n0LRpU0444QTGjBmT4BM1GBoeJoheClm8eDE7duzgyy+/5M9//jNNmjSJe84111wTzMXw+9//PqRs\n8uTJrF69Omou58aNGzNs2DBmzJjBhx/aA7OpU6dy8skn06NHD/r06cPPfvYzcnNzOeyww6qdH57y\nEwjZLy8vZ+LEicF0nG3atEFEqmVbA3jrrbc4++yzOeyww2jVqhX3339/MOVn48aNGTp0KI8++iiq\nyvz584O5oMvLy3nzzTdDUn7OmzePLVu2sHXrViorKznyyCOD12mwwfn8JVVbBALO6Ax0z0Uk/F6y\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "chi_d_u235 = chi_delayed.xs_tally.get_values(nuclides=['U235'])\n", + "chi_d_pu239 = chi_delayed.xs_tally.get_values(nuclides=['Pu239'])\n", + "chi_p_u235 = chi_prompt.xs_tally.get_values(nuclides=['U235'])\n", + "chi_p_pu239 = chi_prompt.xs_tally.get_values(nuclides=['Pu239'])\n", + "\n", + "# Reshape the betas\n", + "chi_d_u235.shape = (chi_d_u235.shape[0])\n", + "chi_d_pu239.shape = (chi_d_pu239.shape[0])\n", + "chi_p_u235.shape = (chi_p_u235.shape[0])\n", + "chi_p_pu239.shape = (chi_p_pu239.shape[0])\n", + "\n", + "chi_d_u235 = np.append(chi_d_u235[0] , chi_d_u235)\n", + "chi_d_pu239 = np.append(chi_d_pu239[0], chi_d_pu239)\n", + "chi_p_u235 = np.append(chi_p_u235[0] , chi_p_u235)\n", + "chi_p_pu239 = np.append(chi_p_pu239[0], chi_p_pu239)\n", + "\n", + "# Create a step plot for the MGXS\n", + "plt.semilogx(energy_groups.group_edges, chi_d_u235 , drawstyle='steps', color='b', linestyle='--', linewidth=3)\n", + "plt.semilogx(energy_groups.group_edges, chi_d_pu239, drawstyle='steps', color='g', linestyle='--', linewidth=3)\n", + "plt.semilogx(energy_groups.group_edges, chi_p_u235 , drawstyle='steps', color='b', linestyle=':', linewidth=3)\n", + "plt.semilogx(energy_groups.group_edges, chi_p_pu239, drawstyle='steps', color='g', linestyle=':', linewidth=3)\n", + "\n", + "plt.title('Energy Spectrum for Fission Neutrons')\n", + "plt.xlabel('Energy (MeV)')\n", + "plt.ylabel('Fraction on emitted neutrons')\n", + "plt.legend(['U-235 delayed', 'Pu-239 delayed', 'U-235 prompt', 'Pu-239 prompt'],loc=2)\n", + "plt.xlim(0.001,20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index d36b29f7fc..4d65aaacc5 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -709,12 +709,113 @@ class MDGXS(MGXS): """ - df = super(MDGXS, self).get_pandas_dataframe(groups, nuclides, xs_type, - distribcell_paths) - + if not isinstance(groups, basestring): + cv.check_iterable_type('groups', groups, Integral) + if nuclides != 'all' and nuclides != 'sum': + cv.check_iterable_type('nuclides', nuclides, basestring) if not isinstance(delayed_groups, basestring): cv.check_iterable_type('delayed groups', delayed_groups, Integral) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + num_delayed_groups = 1 + if self.delayed_groups != None: + num_delayed_groups = self.delayed_groups.num_groups + + # Get a Pandas DataFrame from the derived xs tally + if self.by_nuclide and nuclides == 'sum': + + # Use tally summation to sum across all nuclides + query_nuclides = self.get_all_nuclides() + xs_tally = self.xs_tally.summation(nuclides=query_nuclides) + df = xs_tally.get_pandas_dataframe( + distribcell_paths=distribcell_paths) + + # Remove nuclide column since it is homogeneous and redundant + if self.domain_type == 'mesh': + df.drop('nuclide', axis=1, level=0, inplace=True) + else: + df.drop('nuclide', axis=1, inplace=True) + + # If the user requested a specific set of nuclides + elif self.by_nuclide and nuclides != 'all': + xs_tally = self.xs_tally.get_slice(nuclides=nuclides) + df = xs_tally.get_pandas_dataframe( + distribcell_paths=distribcell_paths) + + # If the user requested all nuclides, keep nuclide column in dataframe + else: + df = self.xs_tally.get_pandas_dataframe( + distribcell_paths=distribcell_paths) + + # Remove the score column since it is homogeneous and redundant + if self.domain_type == 'mesh': + df = df.drop('score', axis=1, level=0) + else: + df = df.drop('score', axis=1) + + # Override energy groups bounds with indices + all_groups = np.arange(self.num_groups, 0, -1, dtype=np.int) + all_groups = np.repeat(all_groups, self.num_nuclides) + if 'energy low [MeV]' in df and 'energyout low [MeV]' in df: + df.rename(columns={'energy low [MeV]': 'group in'}, + inplace=True) + in_groups = np.tile(all_groups, self.num_subdomains * num_delayed_groups) + in_groups = np.repeat(in_groups, df.shape[0] / in_groups.size) + df['group in'] = in_groups + del df['energy high [MeV]'] + + df.rename(columns={'energyout low [MeV]': 'group out'}, + inplace=True) + out_groups = np.repeat(all_groups, self.xs_tally.num_scores) + out_groups = np.tile(out_groups, df.shape[0] / out_groups.size * num_delayed_groups) + df['group out'] = out_groups + del df['energyout high [MeV]'] + columns = ['group in', 'group out'] + + elif 'energyout low [MeV]' in df: + df.rename(columns={'energyout low [MeV]': 'group out'}, + inplace=True) + in_groups = np.tile(all_groups, self.num_subdomains * num_delayed_groups) + df['group out'] = in_groups + del df['energyout high [MeV]'] + columns = ['group out'] + + elif 'energy low [MeV]' in df: + df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) + in_groups = np.tile(all_groups, self.num_subdomains * num_delayed_groups) + df['group in'] = in_groups + del df['energy high [MeV]'] + columns = ['group in'] + + # Select out those groups the user requested + if not isinstance(groups, basestring): + if 'group in' in df: + df = df[df['group in'].isin(groups)] + if 'group out' in df: + df = df[df['group out'].isin(groups)] + + # If user requested micro cross sections, divide out the atom densities + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') + densities = np.repeat(densities, len(self.rxn_rate_tally.scores)) + tile_factor = df.shape[0] / len(densities) + df['mean'] /= np.tile(densities, tile_factor) + df['std. dev.'] /= np.tile(densities, tile_factor) + + # Sort the dataframe by domain type id (e.g., distribcell id) and + # energy groups such that data is from fast to thermal + if self.domain_type == 'mesh': + mesh_str = 'mesh {0}'.format(self.domain.id) + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), \ + (mesh_str, 'z')] + columns, inplace=True) + else: + df.sort_values(by=[self.domain_type] + columns, inplace=True) + return df + # Select out those delayed groups the user requested if not isinstance(delayed_groups, basestring): if 'delayedgroup' in df: diff --git a/openmc/tallies.py b/openmc/tallies.py index c68b0faacb..2073bbd282 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2197,8 +2197,8 @@ class Tally(object): """ - cv.check_type('filter1', filter1, (Filter, CrossFilter, AggregateFilter)) - cv.check_type('filter2', filter2, (Filter, CrossFilter, AggregateFilter)) + cv.check_type('filter1', filter1, _FILTER_CLASSES) + cv.check_type('filter2', filter2, _FILTER_CLASSES) # Check that the filters exist in the tally and are not the same if filter1 == filter2: @@ -2280,8 +2280,8 @@ class Tally(object): 'since it does not contain any results.'.format(self.id) raise ValueError(msg) - cv.check_type('nuclide1', nuclide1, Nuclide) - cv.check_type('nuclide2', nuclide2, Nuclide) + cv.check_type('nuclide1', nuclide1, _NUCLIDE_CLASSES) + cv.check_type('nuclide2', nuclide2, _NUCLIDE_CLASSES) # Check that the nuclides exist in the tally and are not the same if nuclide1 == nuclide2: @@ -3318,7 +3318,7 @@ class Tally(object): """ - cv.check_type('new_filter', new_filter, Filter) + cv.check_type('new_filter', new_filter, _FILTER_CLASSES) if new_filter in self.filters: msg = 'Unable to diagonalize Tally ID="{0}" which already ' \ From 725ef2d9238293c0863297ba9e987ed666f932c6 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 1 Aug 2016 22:34:04 -0500 Subject: [PATCH 11/49] Add function to create compact MT=458 data library --- openmc/data/endf_utils.py | 2 + openmc/data/fission_energy.py | 255 ++++++++++++++++++++++++++-------- 2 files changed, 196 insertions(+), 61 deletions(-) diff --git a/openmc/data/endf_utils.py b/openmc/data/endf_utils.py index 6db3c611cf..bfd9ae5c85 100644 --- a/openmc/data/endf_utils.py +++ b/openmc/data/endf_utils.py @@ -24,6 +24,7 @@ def read_CONT_line(line): int(line[66:70]), int(line[70:72]), int(line[72:75]), int(line[75:80])) + def identify_nuclide(fname): """Read the header of an ENDF file and extract identifying information.""" with open(fname, 'r') as fh: @@ -39,5 +40,6 @@ def identify_nuclide(fname): # Return dictionary of the most important identifying information. return {'Z': int(ZA) // 1000, 'A': int(ZA) % 1000, + 'LFI': bool(LFI), 'LIS': LIS, 'LISO': LISO} diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index b7641a2370..ccea3d96a7 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -3,6 +3,7 @@ from copy import deepcopy import sys #from warnings import warn +import h5py import numpy as np from numpy.polynomial.polynomial import Polynomial @@ -14,6 +15,189 @@ if sys.version_info[0] >= 3: basestring = str +def _extract_458_data(filename): + """Read an ENDF file and extract the MF=1, MT=458 values. + + Parameters + ---------- + filename : str + Path to and ENDF file + + Returns + ------- + value : dict of str to list of float + Dictionary that gives lists of coefficients for each energy component. + The keys are the 2-3 letter strings used in ENDF-102, e.g. 'EFR' and + 'ET'. The list will have a length of 1 for Sher-Beck data, more for + polynomial data. + uncertainty : dict of str to list of float + A dictionary with the same format as above. This is probably a + one-standard deviation value, but that is not specified explicitly in + ENDF-102. Also, some evaluations will give zero uncertainty. Use with + caution. + + """ + ident = identify_nuclide(filename) + + if not ident['LFI']: + # This nuclide isn't fissionable. + return None + + # Extract the MF=1, MT=458 section. + lines = [] + with open(filename, 'r') as fh: + line = fh.readline() + while line != '': + if line[70:75] == ' 1458': + lines.append(line) + line = fh.readline() + + if len(lines) == 0: + # No 458 data here. + return None + + # Read the number of coefficients in this LIST record. + NPL = read_CONT_line(lines[1])[4] + + # Parse the ENDF LIST into an array. + data = [] + for i in range(NPL): + row, column = divmod(i, 6) + data.append(read_float(lines[2 + row][11*column:11*(column+1)])) + + # Declare the coefficient names and the order they are given in. The LIST + # contains a value followed immediately by an uncertainty for each of these + # components, times the polynomial order + 1. + labels = ('EFR', 'ENP', 'END', 'EGP', 'EGD', 'EB', 'ENU', 'ER', 'ET') + + # Associate each set of values and uncertainties with its label. + value = dict() + uncertainty = dict() + for i in range(len(labels)): + value[labels[i]] = data[2*i::18] + uncertainty[labels[i]] = data[2*i + 1::18] + + # In ENDF/B-7.1, data for 2nd-order coefficients were mistakenly not + # converted from MeV to eV. Check for this error and fix it if present. + n_coeffs = len(value['EFR']) + if n_coeffs == 3: # Only check 2nd-order data. + # Check each energy component for the error. If a 1 MeV neutron + # causes a change of more than 100 MeV, we know something is wrong. + error_present = False + for coeffs in value.values(): + second_order = coeffs[2] + if abs(second_order) * 1e12 > 1e8: + error_present = True + break + + # If we found the error, reduce all 2nd-order coeffs by 10**6. + if error_present: + for coeffs in value.values(): coeffs[2] *= 1e-6 + for coeffs in uncertainty.values(): coeffs[2] *= 1e-6 + + # Perform the sanity check again... just in case. + for coeffs in value.values(): + second_order = coeffs[2] + if abs(second_order) * 1e12 > 1e8: + raise ValueError("Encountered a ludicrously large second-" + "order polynomial coefficient.") + + # Convert eV to MeV. + for coeffs in value.values(): + for i in range(len(coeffs)): + coeffs[i] *= 10**(-6 + 6*i) + for coeffs in uncertainty.values(): + for i in range(len(coeffs)): + coeffs[i] *= 10**(-6 + 6*i) + + return value, uncertainty + + +def write_compact_458_library(endf_files, output_name=None, comment=None, + verbose=False): + """Read ENDF files, strip the MF=1 MT=458 data and write to small HDF5. + + Parameters + ---------- + endf_files : Collection of str + Strings giving the paths to the ENDF files that will be parsed for data. + output_name : str + Name of the output HDF5 file. Default is 'fission_Q_data.h5'. + comment : str + Comment to write in the output HDF5 file. Defaults to no comment. + verbose : bool + If True, print the name of each isomer as it is read. Defaults to + False. + + """ + # Open the output file. + if output_name is None: output_name = 'fission_Q_data.h5' + out = h5py.File(output_name, 'w', libver='latest') + + # Write comments, if given. This commented out comment is the one used for + # the library distributed with OpenMC. + #comment = ('This data is extracted from ENDF/B-VII.1 library. Thanks ' + # 'evaluators, for all your hard work :) Citation: ' + # 'M. B. Chadwick, M. Herman, P. Oblozinsky, ' + # 'M. E. Dunn, Y. Danon, A. C. Kahler, D. L. Smith, ' + # 'B. Pritychenko, G. Arbanas, R. Arcilla, R. Brewer, ' + # 'D. A. Brown, R. Capote, A. D. Carlson, Y. S. Cho, H. Derrien, ' + # 'K. Guber, G. M. Hale, S. Hoblit, S. Holloway, T. D. Johnson, ' + # 'T. Kawano, B. C. Kiedrowski, H. Kim, S. Kunieda, ' + # 'N. M. Larson, L. Leal, J. P. Lestone, R. C. Little, ' + # 'E. A. McCutchan, R. E. MacFarlane, M. MacInnes, ' + # 'C. M. Mattoon, R. D. McKnight, S. F. Mughabghab, ' + # 'G. P. A. Nobre, G. Palmiotti, A. Palumbo, M. T. Pigni, ' + # 'V. G. Pronyaev, R. O. Sayer, A. A. Sonzogni, N. C. Summers, ' + # 'P. Talou, I. J. Thompson, A. Trkov, R. L. Vogt, ' + # 'S. C. van der Marck, A. Wallner, M. C. White, D. Wiarda, ' + # 'and P. G. Young. ENDF/B-VII.1 nuclear data for science and ' + # 'technology: Cross sections, covariances, fission product ' + # 'yields and decay data", Nuclear Data Sheets, ' + # '112(12):2887-2996 (2011).') + if comment is not None: + out.attrs['comment'] = np.string_(comment) + + # Declare the order of the components. Use fixed-length numpy strings + # because they work well with h5py. + labels = np.array(('EFR', 'ENP', 'END', 'EGP', 'EGD', 'EB', 'ENU', 'ER', + 'ET'), dtype='S3') + out.attrs['component order'] = labels + + # Iterate over the given files. + if verbose: print('Reading ENDF files:') + for fname in endf_files: + if verbose: print(fname) + + ident = identify_nuclide(fname) + + # Skip non-fissionable nuclides. + if not ident['LFI']: continue + + # Get the important bits. + data = _extract_458_data(fname) + if data is None: continue + value, uncertainty = data + + # Make a group for this isomer. + name = str(ident['Z']) + str(ident['A']) + if ident['LISO'] != 0: + name += '_m' + str(ident['LISO']) + nuclide_group = out.create_group(name) + + # Write all the coefficients into one array. The first dimension gives + # the component (e.g. fragments or prompt neutrons); the second switches + # between value and uncertainty; the third gives the polynomial order. + n_coeffs = len(value['EFR']) + data_out = np.zeros((len(labels), 2, n_coeffs)) + for i, label in enumerate(labels): + data_out[i, 0, :] = value[label.decode()] + data_out[i, 1, :] = uncertainty[label.decode()] + nuclide_group.create_dataset('data', data=data_out) + + out.close() + + class FissionEnergyRelease(object): def __init__(self): self._fragments = None @@ -148,72 +332,21 @@ class FissionEnergyRelease(object): pass if ident['LISO'] != incident_neutron.metastable: pass + if not ident['LIF']: + pass - # Extract the MF=1, MT=458 section. - lines = [] - with open(filename, 'r') as fh: - line = fh.readline() - while line != '': - if line[70:75] == ' 1458': - lines.append(line) - line = fh.readline() + # Read the 458 data from the ENDF file. + value, uncertainty = _extract_458_data(filename) - # Read the number of coefficients in this LIST record. - NPL = read_CONT_line(lines[1])[4] - - # Parse the ENDF LIST into an array. - data = [] - for i in range(NPL): - row, column = divmod(i, 6) - data.append(read_float(lines[2 + row][11*column:11*(column+1)])) - - # Declare the coefficient names and the order they are given in. The - # LIST contains a value followed immediately by an uncertainty for each - # of these components, times the polynomial order + 1. If we only find - # one value for each of these components, then we need to use the - # Sher-Beck formula for energy dependence. Otherwise, it is a - # polynomial. + # Declare the coefficient names. If we only find one value for each of + # these components, then we need to use the Sher-Beck formula for energy + # dependence. Otherwise, it is a polynomial. labels = ('EFR', 'ENP', 'END', 'EGP', 'EGD', 'EB', 'ENU', 'ER', 'ET') - # Associate each set of values and uncertainties with its label. - value = dict() - uncertainty = dict() - for i in range(len(labels)): - value[labels[i]] = data[2*i::18] - uncertainty[labels[i]] = data[2*i + 1::18] - - # In ENDF/B-7.1, data for 2nd-order coefficients were mistakenly not - # converted from MeV to eV. Check for this error and fix it if present. + # How many coefficients are given for each coefficient? If we only find + # one value for each, then we need to use the Sher-Beck formula for + # energy dependence. Otherwise, it is a polynomial. n_coeffs = len(value['EFR']) - if n_coeffs == 3: # Only check 2nd-order data. - # Check each energy component for the error. If a 1 MeV neutron - # causes a change of more than 100 MeV, we know something is wrong. - error_present = False - for coeffs in value.values(): - second_order = coeffs[2] - if abs(second_order) * 1e12 > 1e8: - error_present = True - break - - # If we found the error, reduce all 2nd-order coeffs by 10**6. - if error_present: - for coeffs in value.values(): coeffs[2] *= 1e-6 - for coeffs in uncertainty.values(): coeffs[2] *= 1e-6 - - # Perform the sanity check again... just in case. - for coeffs in value.values(): - second_order = coeffs[2] - if abs(second_order) * 1e12 > 1e8: - raise ValueError("Encountered a ludicrously large second-" - "order polynomial coefficient.") - - # Convert eV to MeV. - for coeffs in value.values(): - for i in range(len(coeffs)): - coeffs[i] *= 10**(-6 + 6*i) - for coeffs in uncertainty.values(): - for i in range(len(coeffs)): - coeffs[i] *= 10**(-6 + 6*i) out = cls() if n_coeffs > 1: From 5074c9831f440a14c81cd84607a132abd24be3d0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 2 Aug 2016 03:05:16 -0400 Subject: [PATCH 12/49] reworked surface current tally indexing and fixed issue in Python API current tallies --- openmc/filter.py | 12 ++++++ openmc/statepoint.py | 2 +- src/cmfd_data.F90 | 91 ++++++++++++++++++++++++++++-------------- src/cmfd_input.F90 | 6 +-- src/constants.F90 | 12 +++--- src/input_xml.F90 | 20 +++------- src/mesh.F90 | 15 ++----- src/output.F90 | 60 +++++----------------------- src/tally.F90 | 90 +++++++++++++++++++++--------------------- src/trigger.F90 | 94 +++----------------------------------------- 10 files changed, 151 insertions(+), 251 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index d6ee70f148..9e05cff63c 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -772,6 +772,18 @@ class Filter(object): df.loc[:, self.type + ' low'] = lo_bins df.loc[:, self.type + ' high'] = hi_bins + elif self.type == 'surface': + filter_bins = np.repeat(self.bins, self.stride) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_bins = [x if x != 1 else 'x-min' for x in filter_bins] + filter_bins = [x if x != 2 else 'x-max' for x in filter_bins] + filter_bins = [x if x != 3 else 'y-min' for x in filter_bins] + filter_bins = [x if x != 4 else 'y-max' for x in filter_bins] + filter_bins = [x if x != 5 else 'z-min' for x in filter_bins] + filter_bins = [x if x != 6 else 'z-max' for x in filter_bins] + df = pd.concat([df, pd.DataFrame({self.type : filter_bins})]) + # universe, material, surface, cell, and cellborn filters else: filter_bins = np.repeat(self.bins, self.stride) diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 6337746650..10d91d1940 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -681,7 +681,7 @@ class StatePoint(object): if tally_filter.type == 'surface': surface_ids = [] for bin in tally_filter.bins: - surface_ids.append(summary.surfaces[bin].id) + surface_ids.append(bin) tally_filter.bins = surface_ids if tally_filter.type in ['cell', 'distribcell']: diff --git a/src/cmfd_data.F90 b/src/cmfd_data.F90 index 347351e318..c07569ae5d 100644 --- a/src/cmfd_data.F90 +++ b/src/cmfd_data.F90 @@ -50,9 +50,9 @@ contains subroutine compute_xs() use constants, only: FILTER_MESH, FILTER_ENERGYIN, FILTER_ENERGYOUT, & - FILTER_SURFACE, IN_RIGHT, OUT_RIGHT, IN_FRONT, & - OUT_FRONT, IN_TOP, OUT_TOP, CMFD_NOACCEL, ZERO, & - ONE, TINY_BIT + FILTER_SURFACE, OUT_LEFT, OUT_RIGHT, OUT_BACK, & + OUT_FRONT, OUT_BOTTOM, OUT_TOP, CMFD_NOACCEL, & + ZERO, ONE, TINY_BIT use error, only: fatal_error use global, only: cmfd, n_cmfd_tallies, cmfd_tallies, meshes,& matching_bins @@ -227,60 +227,91 @@ contains ! Left surface matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i-1, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_RIGHT + (/ i, j, k /)) + matching_bins(i_filter_surf) = OUT_LEFT score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! outgoing cmfd % current(1,h,i,j,k) = t % results(1,score_index) % sum - matching_bins(i_filter_surf) = OUT_RIGHT - score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming - cmfd % current(2,h,i,j,k) = t % results(1,score_index) % sum + + if (i > 1) then + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & + (/ i-1, j, k /)) + matching_bins(i_filter_surf) = OUT_RIGHT + score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming + cmfd % current(2,h,i,j,k) = t % results(1,score_index) % sum + end if ! Right surface + if (i < nx) then + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & + (/ i+1, j, k /) ) + matching_bins(i_filter_surf) = OUT_LEFT + score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming + cmfd % current(3,h,i,j,k) = t % results(1,score_index) % sum + end if + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_RIGHT - score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming - cmfd % current(3,h,i,j,k) = t % results(1,score_index) % sum + (/ i, j, k /) ) matching_bins(i_filter_surf) = OUT_RIGHT score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! outgoing cmfd % current(4,h,i,j,k) = t % results(1,score_index) % sum ! Back surface + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i, j-1, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_FRONT + (/ i, j, k /)) + matching_bins(i_filter_surf) = OUT_BACK score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! outgoing cmfd % current(5,h,i,j,k) = t % results(1,score_index) % sum - matching_bins(i_filter_surf) = OUT_FRONT - score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming - cmfd % current(6,h,i,j,k) = t % results(1,score_index) % sum + + if (j > 1) then + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & + (/ i, j-1, k /)) + matching_bins(i_filter_surf) = OUT_FRONT + score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming + cmfd % current(6,h,i,j,k) = t % results(1,score_index) % sum + end if ! Front surface + if (j < ny) then + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & + (/ i, j+1, k /)) + matching_bins(i_filter_surf) = OUT_BACK + score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming + cmfd % current(7,h,i,j,k) = t % results(1,score_index) % sum + end if + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_FRONT - score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming - cmfd % current(7,h,i,j,k) = t % results(1,score_index) % sum + (/ i, j, k /)) matching_bins(i_filter_surf) = OUT_FRONT score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! outgoing cmfd % current(8,h,i,j,k) = t % results(1,score_index) % sum ! Bottom surface matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i, j, k-1 /) + 1, .true.) - matching_bins(i_filter_surf) = IN_TOP + (/ i, j, k /)) + matching_bins(i_filter_surf) = OUT_BOTTOM score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! outgoing cmfd % current(9,h,i,j,k) = t % results(1,score_index) % sum - matching_bins(i_filter_surf) = OUT_TOP - score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming - cmfd % current(10,h,i,j,k) = t % results(1,score_index) % sum + + if (k > 1) then + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & + (/ i, j, k-1 /)) + matching_bins(i_filter_surf) = OUT_TOP + score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming + cmfd % current(10,h,i,j,k) = t % results(1,score_index) % sum + end if ! Top surface + if (k < nz) then + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & + (/ i, j, k+1 /)) + matching_bins(i_filter_surf) = OUT_BOTTOM + score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming + cmfd % current(11,h,i,j,k) = t % results(1,score_index) % sum + end if + matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_TOP - score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! incoming - cmfd % current(11,h,i,j,k) = t % results(1,score_index) % sum + (/ i, j, k /)) matching_bins(i_filter_surf) = OUT_TOP score_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 ! outgoing cmfd % current(12,h,i,j,k) = t % results(1,score_index) % sum diff --git a/src/cmfd_input.F90 b/src/cmfd_input.F90 index f69c09fe1c..e63a1fceab 100644 --- a/src/cmfd_input.F90 +++ b/src/cmfd_input.F90 @@ -526,11 +526,11 @@ contains filters(n_filters) % n_bins = 2 * m % n_dimension allocate(filters(n_filters) % int_bins(2 * m % n_dimension)) if (m % n_dimension == 2) then - filters(n_filters) % int_bins = (/ IN_RIGHT, OUT_RIGHT, IN_FRONT, & + filters(n_filters) % int_bins = (/ OUT_LEFT, OUT_RIGHT, OUT_BACK, & OUT_FRONT /) elseif (m % n_dimension == 3) then - filters(n_filters) % int_bins = (/ IN_RIGHT, OUT_RIGHT, IN_FRONT, & - OUT_FRONT, IN_TOP, OUT_TOP /) + filters(n_filters) % int_bins = (/ OUT_LEFT, OUT_RIGHT, OUT_BACK, & + OUT_FRONT, OUT_BOTTOM, OUT_TOP /) end if t % find_filter(FILTER_SURFACE) = n_filters diff --git a/src/constants.F90 b/src/constants.F90 index a22c9ac050..ebb8322e9e 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -356,12 +356,12 @@ module constants ! Tally surface current directions integer, parameter :: & - IN_RIGHT = 1, & - OUT_RIGHT = 2, & - IN_FRONT = 3, & - OUT_FRONT = 4, & - IN_TOP = 5, & - OUT_TOP = 6 + OUT_LEFT = 1, & ! x min + OUT_RIGHT = 2, & ! x max + OUT_BACK = 3, & ! y min + OUT_FRONT = 4, & ! y max + OUT_BOTTOM = 5, & ! z min + OUT_TOP = 6 ! z max ! Tally trigger types and threshold integer, parameter :: & diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 3e5a687124..b94c41a65f 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -3029,9 +3029,7 @@ contains // " specified on tally " // trim(to_str(t % id))) end if - ! Determine number of bins -- this is assuming that the tally is - ! a volume tally and not a surface current tally. If it is a - ! surface current tally, the number of bins will get reset later + ! Determine number of bins t % filters(j) % n_bins = product(m % dimension) ! Allocate and store index of mesh @@ -3646,10 +3644,6 @@ contains &same tally as surface currents") end if - ! Since the number of bins for the mesh filter was already set - ! assuming it was a volume tally, we need to adjust the number - ! of bins - ! Get index of mesh filter k = t % find_filter(FILTER_MESH) @@ -3663,10 +3657,6 @@ contains i_mesh = t % filters(k) % int_bins(1) m => meshes(i_mesh) - ! We need to increase the dimension by one since we also need - ! currents coming into and out of the boundary mesh cells. - t % filters(k) % n_bins = product(m % dimension + 1) - ! Copy filters to temporary array allocate(filters(t % n_filters + 1)) filters(1:t % n_filters) = t % filters @@ -3682,11 +3672,11 @@ contains allocate(t % filters(t % n_filters) % int_bins(& 2 * m % n_dimension)) if (m % n_dimension == 2) then - t % filters(t % n_filters) % int_bins = (/ IN_RIGHT, & - OUT_RIGHT, IN_FRONT, OUT_FRONT /) + t % filters(t % n_filters) % int_bins = (/ OUT_LEFT, & + OUT_RIGHT, OUT_BACK, OUT_FRONT /) elseif (m % n_dimension == 3) then - t % filters(t % n_filters) % int_bins = (/ IN_RIGHT, & - OUT_RIGHT, IN_FRONT, OUT_FRONT, IN_TOP, OUT_TOP /) + t % filters(t % n_filters) % int_bins = (/ OUT_LEFT, & + OUT_RIGHT, OUT_BACK, OUT_FRONT, OUT_BOTTOM, OUT_TOP /) end if t % find_filter(FILTER_SURFACE) = t % n_filters diff --git a/src/mesh.F90 b/src/mesh.F90 index 4ec84345ba..0543eaa9f3 100644 --- a/src/mesh.F90 +++ b/src/mesh.F90 @@ -93,29 +93,20 @@ contains ! use in a TallyObject results array !=============================================================================== - pure function mesh_indices_to_bin(m, ijk, surface_current) result(bin) + pure function mesh_indices_to_bin(m, ijk) result(bin) type(RegularMesh), intent(in) :: m integer, intent(in) :: ijk(:) - logical, intent(in), optional :: surface_current integer :: bin integer :: n_y ! number of mesh cells in y direction integer :: n_z ! number of mesh cells in z direction - if (present(surface_current)) then - n_y = m % dimension(2) + 1 - else - n_y = m % dimension(2) - end if + n_y = m % dimension(2) if (m % n_dimension == 2) then bin = (ijk(1) - 1)*n_y + ijk(2) elseif (m % n_dimension == 3) then - if (present(surface_current)) then - n_z = m % dimension(3) + 1 - else - n_z = m % dimension(3) - end if + n_z = m % dimension(3) bin = (ijk(1) - 1)*n_y*n_z + (ijk(2) - 1)*n_z + ijk(3) end if diff --git a/src/output.F90 b/src/output.F90 index 22733a3051..efe75ad8ba 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -1047,31 +1047,17 @@ contains ! Left Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i-1, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_RIGHT + mesh_indices_to_bin(m, (/ i, j, k /)) + matching_bins(i_filter_surf) = OUT_LEFT filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & "Outgoing Current to Left", & to_str(t % results(1,filter_index) % sum), & trim(to_str(t % results(1,filter_index) % sum_sq)) - matching_bins(i_filter_surf) = OUT_RIGHT - filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & - "Incoming Current from Left", & - to_str(t % results(1,filter_index) % sum), & - trim(to_str(t % results(1,filter_index) % sum_sq)) - ! Right Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_RIGHT - filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & - "Incoming Current from Right", & - to_str(t % results(1,filter_index) % sum), & - trim(to_str(t % results(1,filter_index) % sum_sq)) - + mesh_indices_to_bin(m, (/ i, j, k /)) matching_bins(i_filter_surf) = OUT_RIGHT filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & @@ -1081,31 +1067,17 @@ contains ! Back Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j-1, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_FRONT + mesh_indices_to_bin(m, (/ i, j, k /)) + matching_bins(i_filter_surf) = OUT_BACK filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & "Outgoing Current to Back", & to_str(t % results(1,filter_index) % sum), & trim(to_str(t % results(1,filter_index) % sum_sq)) - matching_bins(i_filter_surf) = OUT_FRONT - filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & - "Incoming Current from Back", & - to_str(t % results(1,filter_index) % sum), & - trim(to_str(t % results(1,filter_index) % sum_sq)) - ! Front Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_FRONT - filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & - "Incoming Current from Front", & - to_str(t % results(1,filter_index) % sum), & - trim(to_str(t % results(1,filter_index) % sum_sq)) - + mesh_indices_to_bin(m, (/ i, j, k /)) matching_bins(i_filter_surf) = OUT_FRONT filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & @@ -1115,31 +1087,17 @@ contains ! Bottom Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k-1 /) + 1, .true.) - matching_bins(i_filter_surf) = IN_TOP + mesh_indices_to_bin(m, (/ i, j, k /)) + matching_bins(i_filter_surf) = OUT_BOTTOM filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & "Outgoing Current to Bottom", & to_str(t % results(1,filter_index) % sum), & trim(to_str(t % results(1,filter_index) % sum_sq)) - matching_bins(i_filter_surf) = OUT_TOP - filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & - "Incoming Current from Bottom", & - to_str(t % results(1,filter_index) % sum), & - trim(to_str(t % results(1,filter_index) % sum_sq)) - ! Top Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_TOP - filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 - write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & - "Incoming Current from Top", & - to_str(t % results(1,filter_index) % sum), & - trim(to_str(t % results(1,filter_index) % sum_sq)) - + mesh_indices_to_bin(m, (/ i, j, k /)) matching_bins(i_filter_surf) = OUT_TOP filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & diff --git a/src/tally.F90 b/src/tally.F90 index 94143184ae..5f92682162 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -2819,10 +2819,10 @@ contains if (uvw(3) > 0) then do j = ijk0(3), ijk1(3) - 1 ijk0(3) = j - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then matching_bins(i_filter_surf) = OUT_TOP matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 !$omp atomic t % results(1, filter_index) % value = & @@ -2830,12 +2830,12 @@ contains end if end do else - do j = ijk0(3) - 1, ijk1(3), -1 + do j = ijk0(3), ijk1(3) + 1, -1 ijk0(3) = j - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then - matching_bins(i_filter_surf) = IN_TOP + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then + matching_bins(i_filter_surf) = OUT_BOTTOM matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 !$omp atomic t % results(1, filter_index) % value = & @@ -2849,10 +2849,10 @@ contains if (uvw(2) > 0) then do j = ijk0(2), ijk1(2) - 1 ijk0(2) = j - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then matching_bins(i_filter_surf) = OUT_FRONT matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 !$omp atomic t % results(1, filter_index) % value = & @@ -2860,12 +2860,12 @@ contains end if end do else - do j = ijk0(2) - 1, ijk1(2), -1 + do j = ijk0(2), ijk1(2) + 1, -1 ijk0(2) = j - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then - matching_bins(i_filter_surf) = IN_FRONT + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then + matching_bins(i_filter_surf) = OUT_BACK matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 !$omp atomic t % results(1, filter_index) % value = & @@ -2879,10 +2879,10 @@ contains if (uvw(1) > 0) then do j = ijk0(1), ijk1(1) - 1 ijk0(1) = j - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then matching_bins(i_filter_surf) = OUT_RIGHT matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 !$omp atomic t % results(1, filter_index) % value = & @@ -2890,12 +2890,12 @@ contains end if end do else - do j = ijk0(1) - 1, ijk1(1), -1 + do j = ijk0(1), ijk1(1) + 1, -1 ijk0(1) = j - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then - matching_bins(i_filter_surf) = IN_RIGHT + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then + matching_bins(i_filter_surf) = OUT_LEFT matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) filter_index = sum((matching_bins(1:t%n_filters) - 1) * t % stride) + 1 !$omp atomic t % results(1, filter_index) % value = & @@ -2946,67 +2946,67 @@ contains if (uvw(1) > 0) then ! Crossing into right mesh cell -- this is treated as outgoing ! current from (i,j,k) - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then matching_bins(i_filter_surf) = OUT_RIGHT matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) end if ijk0(1) = ijk0(1) + 1 xyz_cross(1) = xyz_cross(1) + m % width(1) else - ! Crossing into left mesh cell -- this is treated as incoming - ! current in (i-1,j,k) + ! Crossing into left mesh cell -- this is treated as outgoing + ! current in (i,j,k) + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then + matching_bins(i_filter_surf) = OUT_LEFT + matching_bins(i_filter_mesh) = & + mesh_indices_to_bin(m, ijk0) + end if ijk0(1) = ijk0(1) - 1 xyz_cross(1) = xyz_cross(1) - m % width(1) - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then - matching_bins(i_filter_surf) = IN_RIGHT - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) - end if end if elseif (distance == d(2)) then if (uvw(2) > 0) then ! Crossing into front mesh cell -- this is treated as outgoing ! current in (i,j,k) - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then matching_bins(i_filter_surf) = OUT_FRONT matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) end if ijk0(2) = ijk0(2) + 1 xyz_cross(2) = xyz_cross(2) + m % width(2) else - ! Crossing into back mesh cell -- this is treated as incoming - ! current in (i,j-1,k) + ! Crossing into back mesh cell -- this is treated as outgoing + ! current in (i,j,k) + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then + matching_bins(i_filter_surf) = OUT_BACK + matching_bins(i_filter_mesh) = & + mesh_indices_to_bin(m, ijk0) + end if ijk0(2) = ijk0(2) - 1 xyz_cross(2) = xyz_cross(2) - m % width(2) - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then - matching_bins(i_filter_surf) = IN_FRONT - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) - end if end if else if (distance == d(3)) then if (uvw(3) > 0) then ! Crossing into top mesh cell -- this is treated as outgoing ! current in (i,j,k) - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then matching_bins(i_filter_surf) = OUT_TOP matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) + mesh_indices_to_bin(m, ijk0) end if ijk0(3) = ijk0(3) + 1 xyz_cross(3) = xyz_cross(3) + m % width(3) else - ! Crossing into bottom mesh cell -- this is treated as incoming - ! current in (i,j,k-1) + ! Crossing into bottom mesh cell -- this is treated as outgoing + ! current in (i,j,k) + if (all(ijk0 >= 1) .and. all(ijk0 <= m % dimension)) then + matching_bins(i_filter_surf) = OUT_BOTTOM + matching_bins(i_filter_mesh) = & + mesh_indices_to_bin(m, ijk0) + end if ijk0(3) = ijk0(3) - 1 xyz_cross(3) = xyz_cross(3) - m % width(3) - if (all(ijk0 >= 0) .and. all(ijk0 <= m % dimension)) then - matching_bins(i_filter_surf) = IN_TOP - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, ijk0 + 1, .true.) - end if end if end if diff --git a/src/trigger.F90 b/src/trigger.F90 index ed362154b4..7d488acb79 100644 --- a/src/trigger.F90 +++ b/src/trigger.F90 @@ -324,10 +324,11 @@ contains matching_bins(i_filter_ein) = l end if - ! Left Surface matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i-1, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_RIGHT + mesh_indices_to_bin(m, (/ i, j, k /) + 1) + + ! Left Surface + matching_bins(i_filter_surf) = OUT_LEFT filter_index = & sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) @@ -339,33 +340,7 @@ contains end if trigger % variance = std_dev**2 - matching_bins(i_filter_surf) = OUT_RIGHT - filter_index = & - sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 - call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) - if (trigger % std_dev < std_dev) then - trigger % std_dev = std_dev - end if - if (trigger % rel_err < rel_err) then - trigger % rel_err = rel_err - end if - trigger % variance = trigger % std_dev**2 - ! Right Surface - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_RIGHT - filter_index = & - sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 - call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) - if (trigger % std_dev < std_dev) then - trigger % std_dev = std_dev - end if - if (trigger % rel_err < rel_err) then - trigger % rel_err = rel_err - end if - trigger % variance = trigger % std_dev**2 - matching_bins(i_filter_surf) = OUT_RIGHT filter_index = & sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 @@ -379,22 +354,7 @@ contains trigger % variance = trigger % std_dev**2 ! Back Surface - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j-1, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_FRONT - filter_index = & - sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 - call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) - if (trigger % std_dev < std_dev) then - trigger % std_dev = std_dev - end if - if (trigger % rel_err < rel_err) then - trigger % rel_err = rel_err - end if - trigger % variance = trigger % std_dev**2 - - - matching_bins(i_filter_surf) = OUT_FRONT + matching_bins(i_filter_surf) = OUT_BACK filter_index = & sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) @@ -407,20 +367,6 @@ contains trigger % variance = trigger % std_dev**2 ! Front Surface - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_FRONT - filter_index = & - sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 - call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) - if (trigger % std_dev < std_dev) then - trigger % std_dev = std_dev - end if - if (trigger % rel_err < rel_err) then - trigger % rel_err = rel_err - end if - trigger % variance = trigger % std_dev**2 - matching_bins(i_filter_surf) = OUT_FRONT filter_index = & sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 @@ -434,21 +380,7 @@ contains trigger % variance = trigger % std_dev**2 ! Bottom Surface - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k-1 /) + 1, .true.) - matching_bins(i_filter_surf) = IN_TOP - filter_index = & - sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 - call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) - if (trigger % std_dev < std_dev) then - trigger % std_dev = std_dev - end if - if (trigger % rel_err < rel_err) then - trigger % rel_err = rel_err - end if - trigger % variance = trigger % std_dev**2 - - matching_bins(i_filter_surf) = OUT_TOP + matching_bins(i_filter_surf) = OUT_BOTTOM filter_index = & sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) @@ -461,20 +393,6 @@ contains trigger % variance = trigger % std_dev**2 ! Top Surface - matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1, .true.) - matching_bins(i_filter_surf) = IN_TOP - filter_index = & - sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 - call get_trigger_uncertainty(std_dev, rel_err, 1, filter_index, t) - if (trigger % std_dev < std_dev) then - trigger % std_dev = std_dev - end if - if (trigger % rel_err < rel_err) then - trigger % rel_err = rel_err - end if - trigger % variance = trigger % std_dev**2 - matching_bins(i_filter_surf) = OUT_TOP filter_index = & sum((matching_bins(1:t % n_filters) - 1) * t % stride) + 1 From 1f1dab1733113d32b21d45ee7f00d52e952ce48d Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 2 Aug 2016 08:15:45 -0400 Subject: [PATCH 13/49] removed kinetics module --- openmc/kinetics/__init__.py | 2 - openmc/kinetics/clock.py | 117 ------- openmc/kinetics/solver.py | 638 ------------------------------------ 3 files changed, 757 deletions(-) delete mode 100644 openmc/kinetics/__init__.py delete mode 100644 openmc/kinetics/clock.py delete mode 100644 openmc/kinetics/solver.py diff --git a/openmc/kinetics/__init__.py b/openmc/kinetics/__init__.py deleted file mode 100644 index 0ccd7e882f..0000000000 --- a/openmc/kinetics/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from openmc.kinetics.clock import * -from openmc.kinetics.solver import * diff --git a/openmc/kinetics/clock.py b/openmc/kinetics/clock.py deleted file mode 100644 index 9df266e1d7..0000000000 --- a/openmc/kinetics/clock.py +++ /dev/null @@ -1,117 +0,0 @@ - -import copy -import numpy as np - -TIME_POINTS = ['START', - 'PREVIOUS_OUT', - 'PREVIOUS_IN', - 'CURRENT', - 'FORWARD_IN', - 'FORWARD_OUT', - 'END'] - -class Clock(object): - - def __init__(self, start=0., end=3., dt_outer=1.e-1, dt_inner=1.e-2): - - # Initialize coordinates - self.dt_outer = dt_outer - self.dt_inner = dt_inner - - # Create a dictionary of clock times - self._times = {} - for t in TIME_POINTS: - self._times[t] = start - - # Reset the end time - self._times['END'] = end - - - def __deepcopy__(self, memo): - - existing = memo.get(id(self)) - - # If this is the first time we have tried to copy this object, create a copy - if existing is None: - - clone = type(self).__new__(type(self)) - - memo[id(self)] = clone - - return clone - - # If this object has been copied before, return the first copy made - else: - return existing - - def __repr__(self): - - string = 'Clock\n' - string += '{0: <24}{1}{2}\n'.format('\tdt inner', '=\t', self.dt_inner) - string += '{0: <24}{1}{2}\n'.format('\tdt outer', '=\t', self.dt_outer) - - for t in TIME_POINTS: - string += '{0: <24}{1}{2}\n'.format('\tTime ' + t, '=\t', self.times[t]) - - return string - - @property - def dt_inner(self): - return self._dt_inner - - @property - def dt_outer(self): - return self._dt_outer - - @property - def times(self): - return self._times - - @dt_inner.setter - def dt_inner(self, dt_inner): - self._dt_inner = np.float64(dt_inner) - - @dt_outer.setter - def dt_outer(self, dt_outer): - self._dt_outer = np.float64(dt_outer) - - @times.setter - def times(self, times): - self._times = np.float64(times) - - def take_outer_step(self): - """Take an outer time step and reset all the inner time step values - to the starting point for the outer time step. - - """ - - self.times['PREVIOUS_OUT'] = self.times['FORWARD_OUT'] - self.times['PREVIOUS_IN'] = self.times['FORWARD_OUT'] - self.times['FORWARD_IN'] = self.times['FORWARD_OUT'] - self.times['CURRENT'] = self.times['FORWARD_OUT'] - - if (self.times['END'] > self.times['FORWARD_OUT'] + self.dt_outer): - self.times['FORWARD_OUT'] = self.times['END'] - else: - self.times['FORWARD_OUT'] = self.times['FORWARD_OUT'] + self.dt_outer - - def take_inner_step(self): - """Take an inner time step. - - """ - self.times['PREVIOUS_IN'] = self.times['FORWARD_IN'] - self.times['CURRENT'] = self.times['FORWARD_IN'] - - if (self.times['FORWARD_OUT'] > self.times['FORWARD_IN'] + self.dt_inner): - self.times['FORWARD_IN'] = self.times['FORWARD_OUT'] - else: - self.times['FORWARD_IN'] = self.times['FORWARD_IN'] + self.dt_inner - - def reset_to_previous_outer(self): - """Reset the time values to the previous outer time. - - """ - - self.times['PREVIOUS_IN'] = self.times['PREVIOUS_IN'] - self.times['FORWARD_IN'] = self.times['PREVIOUS_IN'] - self.times['CURRENT'] = self.times['PREVIOUS_IN'] diff --git a/openmc/kinetics/solver.py b/openmc/kinetics/solver.py deleted file mode 100644 index a71907a1d3..0000000000 --- a/openmc/kinetics/solver.py +++ /dev/null @@ -1,638 +0,0 @@ -from collections import OrderedDict -from xml.etree import ElementTree as ET - -import openmc -import openmc.kinetics -from openmc.clean_xml import * -from openmc.checkvalue import check_type -from openmc.kinetics.clock import TIME_POINTS -import numpy as np - - -class Solver(object): - """Solver to propagate the neutron flux and power forward in time. - - Attributes - ---------- - mesh : openmc.mesh.Mesh - Mesh which specifies the dimensions of coarse mesh. - - geometry : openmc.geometry.Geometry - Geometry which describes the problem being solved. - - settings_file : openmc.settings.SettingsFile - Settings file describing the general settings for each simulation. - - materials_file : openmc.materials.MaterialsFile - Materials file containing the materials info for each simulation. - - executor : openmc.executor.Executor - Executor object for executing OpenMC simulation. - - clock : openmc.kinetics.Clock - Clock object. - - energy_groups : openmc.mgxs.groups.EnergyGroups - EnergyGroups which specifies the energy groups structure. - - A : np.matrix - Numpy matrix used for storing the destruction terms. - - M : np.matrix - Numpy matrix used for storing the production terms. - - AM : np.matrix - Numpy matrix used for storing the combined production/destruction terms. - - flux : np.array - Numpy array used to store the flux. - - amplitude : np.array - Numpy array used to store the amplitude. - - shape : np.array - Numpy array used to store the shape. - - source : np.array - Numpy array used to store the source. - - power : np.array - Numpy array used to store the power. - - precursor_conc : np.array - Numpy array used to store the precursor concentrations. - - sigma_a : OrderedDict of openmc.MGXS.AbsorptionXS - MGXS absorption multigroup cross-sections. - - nu_sigma_f : OrderedDict of openmc.MGXS.NuFissionXS - MGXS nu-fission multigroup cross-sections. - - kappa_sigma_f : OrderedDict of openmc.MGXS.NuFissionXS - MGXS nu-fission multigroup cross-sections. - - dif_coef : OrderedDict of openmc.MGXS.DiffusionCoefficientXS - MGXS multigroup diffusion coefficients. - - beta : OrderedDict of openmc.MGXS.delayed.Beta - MGXS multigroup delayed neutron fractions. - - chi_prompt : OrderedDict of openmc.MGXS.delayed.ChiPrompt - MGXS multigroup prompt neutron spectrums. - - chi_delayed : OrderedDict of openmc.MGXS.delayed.ChiDelayed - MGXS multigroup delayed neutron spectrums. - - velocity : OrderedDict of openmc.MGXS.Velocity - MGXS multigroup velocities. - - nu_sigma_s : OrderedDict of openmc.MGXS.NuScatterMatrixXS - MGXS multigroup nu-scatter matrix. - - flux_xs : OrderedDict openmc.MGXS.Flux - MGXS multigroup flux. - - k_eff_0 : float - The initial eigenvalue. - - Methods - ------- - - initialize_xs() - take_outer_step() - take_inner_step() - solve() - - extract_xs() - 2 normalize_flux() - broadcast_to_all() - broadcast_to_one() - - compute_shape() - integrate_precursor_conc() - 3 compute_initial_precursor_conc() - 1 compute_power() - construct_A() - construct_M() - construct_AM() - interpolate_xs() - - To Do - ----- - 1) Create getters and setters for all attributes - 2) Create method to generate initialize xs - 3) Create method to compute flux - 4) Create method to compute initial precursor concentrations - 5) Create method to compute the initial power - - """ - - def __init__(self): - - # Initialize Solver class attributes - self._mesh = None - self._geometry = None - self._settings_file = None - self._materials_file = None - self._executor = openmc.Executor() - self._statepoint = None - self._summary = None - self._clock = None - self._energy_groups = None - self._A = None - self._M = None - self._AM = None - self._flux = None - self._amplitude = None - self._shape = None - self._source = None - self._power = None - self._precursor_conc = None - self._sigma_a = None - self._nu_sigma_f = None - self._kappa_sigma_f = None - self._dif_coef = None - self._beta = None - self._chi_prompt = None - self._chi_delayed = None - self._velocity = None - self._nu_sigma_s = None - self._flux_xs = None - self._decay_constants = None - self._k_eff_0 = None - - @property - def mesh(self): - return self._mesh - - @property - def geometry(self): - return self._geometry - - @property - def settings_file(self): - return self._settings_file - - @property - def materials_file(self): - return self._materials_file - - @property - def executor(self): - return self._executor - - @property - def statepoint(self): - return self._statepoint - - @property - def summary(self): - return self._summary - - @property - def clock(self): - return self._clock - - @property - def energy_groups(self): - return self._energy_groups - - @property - def A(self): - return self._A - - @property - def M(self): - return self._M - - @property - def AM(self): - return self._AM - - @property - def flux(self): - return self._flux - - @property - def amplitude(self): - return self._amplitude - - @property - def shape(self): - return self._shape - - @property - def source(self): - return self._source - - @property - def power(self): - return self._power - - @property - def precursor_conc(self): - return self._precursor_conc - - @property - def sigma_a(self): - return self._sigma_a - - @property - def nu_sigma_f(self): - return self._nu_sigma_f - - @property - def kappa_sigma_f(self): - return self._kappa_sigma_f - - @property - def dif_coef(self): - return self._dif_coef - - @property - def beta(self): - return self._beta - - @property - def chi_prompt(self): - return self._chi_prompt - - @property - def chi_delayed(self): - return self._chi_delayed - - @property - def velocity(self): - return self._velocity - - @property - def nu_sigma_s(self): - return self._nu_sigma_s - - @property - def flux_xs(self): - return self._flux_xs - - @property - def decay_constants(self): - return self._decay_constants - - @property - def k_eff_0(self): - return self._k_eff_0 - - @mesh.setter - def mesh(self, mesh): - self._mesh = mesh - - @geometry.setter - def geometry(self, geometry): - self._geometry = geometry - - @settings_file.setter - def settings_file(self, settings_file): - self._settings_file = settings_file - - @materials_file.setter - def materials_file(self, materials_file): - self._materials_file = materials_file - - @executor.setter - def executor(self, exectuor): - self._executor = executor - - @statepoint.setter - def statepoint(self, statepoint): - self._statepoint = statepoint - - @summary.setter - def summary(self, summary): - self._summary = summary - - @clock.setter - def clock(self, clock): - self._clock = clock - - @energy_groups.setter - def energy_groups(self, energy_groups): - self._energy_groups = energy_groups - - # Initialize the arrays - ng = energy_groups.num_groups - self._flux = np.zeros(ng) - self._amplitude = np.zeros(ng) - self._shape = np.zeros(ng) - self._source = np.zeros(ng) - self._power = np.zeros(ng) - - @A.setter - def A(self): - self._A = A - - @M.setter - def M(self, M): - self._M = M - - @AM.setter - def AM(self, AM): - self._AM = AM - - @flux.setter - def flux(self, flux): - self._flux = flux - - @amplitude.setter - def amplitude(self, amplitude): - self._amplitude = amplitude - - @shape.setter - def shape(self, shape): - self._shape = shape - - @source.setter - def source(self, source): - self._source = source - - @power.setter - def power(self, power): - self._power = power - - @precursor_conc.setter - def precursor_conc(self, precursor_conc): - self._precursor_conc = precursor_conc - - @sigma_a.setter - def sigma_a(self, sigma_a): - self._sigma_a = sigma_a - - @nu_sigma_f.setter - def nu_sigma_f(self, nu_sigma_f): - self._nu_sigma_f = nu_sigma_f - - @kappa_sigma_f.setter - def kappa_sigma_f(self, kappa_sigma_f): - self._kappa_sigma_f = kappa_sigma_f - - @dif_coef.setter - def dif_coef(self, dif_coef): - self._dif_coef = dif_coef - - @beta.setter - def beta(self, beta): - self._beta = beta - - @chi_prompt.setter - def chi_prompt(self, chi_prompt): - self._chi_prompt = chi_prompt - - @chi_delayed.setter - def chi_delayed(self, chi_delayed): - self._chi_delayed - - @velocity.setter - def velocity(self, velocity): - self._velocity = velocity - - @nu_sigma_s.setter - def nu_sigma_s(self, nu_sigma_s): - self._nu_sigma_s = nu_sigma_s - - @flux_xs.setter - def flux_xs(self, flux_xs): - self._flux_xs = flux_xs - - @decay_constants.setter - def decay_constants(self, decay_constants): - self._decay_constants = decay_constants - - @k_eff_0.setter - def k_eff_0(self, k_eff_0): - self._k_eff_0 = k_eff_0 - - def initialize_xs(self): - """Initialize all the tallies for the problem. - - """ - - self._sigma_a = {} - self._nu_sigma_f = {} - self._kappa_sigma_f = {} - self._dif_coef = {} - self._beta = {} - self._chi_prompt = {} - self._chi_delayed = {} - self._velocity = {} - self._nu_sigma_s = {} - self._flux_xs = {} - self._precursor_conc = {} - - self._decay_constants = openmc.Tally(name='decay constants') - self._decay_constants._derived = True - self._decay_constants.num_score_bins = 1 - self._decay_constants.add_score('None') - self._decay_constants._mean = np.array([0.012467, 0.028292, 0.042524,\ - 0.133042, 0.292467, 0.666488,\ - 1.634781, 3.554600]) - self._decay_constants._mean = np.reshape(self._decay_constants._mean, (8,1,1)) - self._decay_constants._std_dev = np.array([0 for i in range(8)]) - self._decay_constants._std_dev = np.reshape(self._decay_constants._std_dev, (8,1,1)) - self._decay_constants.estimator = 'analog' - self._decay_constants.add_filter(openmc.Filter('delayedgroup', range(1,9))) - self._decay_constants._nuclides = ['total'] - - # FIXME: replace domain with mesh - # Get the cell in the geometry - cells = self.geometry.root_universe.get_all_cells() - cell = cells.values()[0] - - global TIME_POINTS - for t in TIME_POINTS: - print 'computing tallies for time: ' + t - self._sigma_a[t] = openmc.mgxs.AbsorptionXS(name='sigma a', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._nu_sigma_f[t] = openmc.mgxs.NuFissionXS(name='nu sigma f', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._kappa_sigma_f[t] = openmc.mgxs.KappaFissionXS(name='kappa fission', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._dif_coef[t] = openmc.mgxs.DiffusionCoefficient(name='dif coef', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._beta[t] = openmc.mgxs.Beta(name='beta', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._chi_prompt[t] = openmc.mgxs.ChiPrompt(name='chi prompt', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._chi_delayed[t] = openmc.mgxs.ChiDelayed(name='chi delayed', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._velocity[t] = openmc.mgxs.Velocity(name='velocity', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._nu_sigma_s[t] = openmc.mgxs.NuScatterMatrixXS(name='nu scatter', - domain=cell, domain_type='cell', groups=self.energy_groups) - self._flux_xs[t] = openmc.mgxs.Flux(name='flux', - domain=cell, domain_type='cell', groups=self.energy_groups) - - - def generate_tallies_file(self, time): - """Initialize the tallies file. - - """ - - tallies_file = openmc.TalliesFile() - - # Add absorption tallies to the tallies file - for tally in self._sigma_a[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add nu-sigma-f tallies to the tallies file - for tally in self._nu_sigma_f[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add kappa-sigma-f tallies to the tallies file - for tally in self._kappa_sigma_f[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add dif-coef tallies to the tallies file - for tally in self._dif_coef[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add beta tallies to the tallies file - for tally in self._beta[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add chi prompt tallies to the tallies file - for tally in self._chi_prompt[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add chi delayed tallies to the tallies file - for tally in self._chi_delayed[time].tallies.values(): - tallies_file.add_tally(tally, merge=False) - - # Add velocity tallies to the tallies file - for tally in self._velocity[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add nu-sigma-s tallies to the tallies file - for tally in self._nu_sigma_s[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Add flux tallies to the tallies file - for tally in self._flux_xs[time].tallies.values(): - tallies_file.add_tally(tally, merge=True) - - # Export to "tallies.xml" - tallies_file.export_to_xml() - - def extract_xs(self, time): - - filename = 'statepoint.' + str(self.settings_file.batches) + '.h5' - self.statepoint = openmc.StatePoint(filename) - self.summary = openmc.Summary('summary.h5') - self.statepoint.link_with_summary(self.summary) - - # load xs from statepoint - self._sigma_a[time].load_from_statepoint(self.statepoint) - self._nu_sigma_f[time].load_from_statepoint(self.statepoint) - self._kappa_sigma_f[time].load_from_statepoint(self.statepoint) - self._dif_coef[time].load_from_statepoint(self.statepoint) - self._beta[time].load_from_statepoint(self.statepoint) - self._chi_prompt[time].load_from_statepoint(self.statepoint) - self._chi_delayed[time].load_from_statepoint(self.statepoint) - self._velocity[time].load_from_statepoint(self.statepoint) - self._nu_sigma_s[time].load_from_statepoint(self.statepoint) - self._flux_xs[time].load_from_statepoint(self.statepoint) - self.k_eff_0 = self.statepoint.k_combined[0] - - # compute the xs - self._sigma_a[time].compute_xs() - self._nu_sigma_f[time].compute_xs() - self._kappa_sigma_f[time].compute_xs() - self._dif_coef[time].compute_xs() - self._beta[time].compute_xs() - self._chi_prompt[time].compute_xs() - self._chi_delayed[time].compute_xs() - self._velocity[time].compute_xs() - self._nu_sigma_s[time].compute_xs() - self._flux_xs[time].compute_xs() - - # extract the flux - #for g in range(self._energy_groups.num_groups): - # self._flux[g] = self._flux_xs[time].xs_tally.mean[g][0][0] - - def print_xs(self, time): - - # print the xs - self._sigma_a[time].print_xs() - self._nu_sigma_f[time].print_xs() - self._kappa_sigma_f[time].print_xs() - self._dif_coef[time].print_xs() - self._beta[time].print_xs() - self._chi_prompt[time].print_xs() - self._chi_delayed[time].print_xs() - self._velocity[time].print_xs() - self._nu_sigma_s[time].print_xs() - self._flux_xs[time].print_xs() - - def compute_shape(self, time): - - geometry_file = openmc.GeometryFile() - geometry_file.geometry = self.geometry - - # Create the xml files - self._materials_file.export_to_xml() - geometry_file.export_to_xml() - self._settings_file.export_to_xml() - self.generate_tallies_file(time) - - # Run OpenMC - self.executor.run_simulation(mpi_procs=4) - - def compute_power(self, time): - - self.power = self._kappa_sigma_f[time].xs_tally * \ - self._flux_xs[time].xs_tally - - def compute_initial_precursor_conc(self, time): - - self.precursor_conc[time] = self.nu_sigma_f[time].xs_tally \ - * self.flux_xs[time].xs_tally - self.precursor_conc[time] = self.precursor_conc[time].\ - summation(filter_type='energy', remove_filter=True) - beta = self.beta[time].xs_tally.\ - summation(filter_type='energy', remove_filter=True) - self.precursor_conc[time] = beta \ - * self.precursor_conc[time] - - self.precursor_conc[time] = self.precursor_conc[time] / self.k_eff_0 - - print self.precursor_conc[time] - print self._decay_constants - - self.precursor_conc[time] = self.precursor_conc[time] / self._decay_constants - print self.precursor_conc[time] - - - def compute_forward_flux(self, time, time_next): - - dt_v = self.clock.dt_outer * self.velocity - - fission_rate = self.nu_sigma_f[time].xs_tally \ - * self.flux_xs[time].xs_tally - - fission_rate = fission_rate.summation(filter_type='energy', remove_filter=True) - - self.flux_xs[time_next] = [self.flux_xs[time] + (1 - self.beta) \ - / self.k_eff_0 * fission_rate + \ - - self.precursor_conc[time] = self.nu_sigma_f[time].xs_tally \ - * self.flux_xs[time].xs_tally - self.precursor_conc[time] = self.precursor_conc[time].\ - summation(filter_type='energy', remove_filter=True) - beta = self.beta[time].xs_tally.\ - summation(filter_type='energy', remove_filter=True) - self.precursor_conc[time] = beta \ - * self.precursor_conc[time] - - self.precursor_conc[time] = self.precursor_conc[time] / self.k_eff_0 - - print self.precursor_conc[time] - print self._decay_constants - - inv_decay_constants = 1.0 / self._decay_constants - inv_decay_constants.name = 'inverse decay constants' - self.precursor_conc[time] = inv_decay_constants * self.precursor_conc[time] - print self.precursor_conc[time] From 84cfd2d6a940920473283de15690160d6de59b58 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Tue, 2 Aug 2016 14:10:32 -0500 Subject: [PATCH 14/49] Add MT=458 data library and supporting methods --- data/fission_Q_data_endfb71.h5 | Bin 0 -> 67543 bytes data/get_nndc_data.py | 3 +- openmc/data/fission_energy.py | 195 ++++++++++++++++++++++----------- openmc/data/neutron.py | 3 + scripts/openmc-ace-to-hdf5 | 17 +++ 5 files changed, 155 insertions(+), 63 deletions(-) create mode 100644 data/fission_Q_data_endfb71.h5 diff --git a/data/fission_Q_data_endfb71.h5 b/data/fission_Q_data_endfb71.h5 new file mode 100644 index 0000000000000000000000000000000000000000..89e51b70783034b40ce4e207fdb3e34b5d5d33cc GIT binary patch literal 67543 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 1: + out.form = 'Madland' + out.fragments = Polynomial(energy_release['EFR']) + out.prompt_neutrons = Polynomial(energy_release['ENP']) + out.delayed_neutrons = Polynomial(energy_release['END']) + out.prompt_photons = Polynomial(energy_release['EGP']) + out.delayed_photons = Polynomial(energy_release['EGD']) + out.betas = Polynomial(energy_release['EB']) + out.neutrinos = Polynomial(energy_release['ENU']) + else: + out.form = 'Sher-Beck' + + # EFR and ENP are energy independent. Polynomial is used because it + # has a __call__ attribute that handles Iterable inputs. The + # energy-dependence of END is unspecified in ENDF-102 so assume it + # is independent. + out.fragments = Polynomial((energy_release['EFR'][0])) + out.prompt_photons = Polynomial((energy_release['EGP'][0])) + out.delayed_neutrons = Polynomial((energy_release['END'][0])) + + # EDP, EB, and ENU are linear. + out.delayed_photons = Polynomial((energy_release['EGD'][0], -0.075)) + out.betas = Polynomial((energy_release['EB'][0], -0.075)) + out.neutrinos = Polynomial((energy_release['ENU'][0], -0.105)) + + # Prompt neutrons require nu-data. It is not clear from ENDF-102 + # whether prompt or total nu value should be used, but the delayed + # neutron fraction is so small that the difference is negligible. + # MT=18 (n, fission) might not be available so try MT=19 (n, f) as + # well. + if 18 in incident_neutron.reactions: + nu_prompt = [p for p in incident_neutron[18].products + if p.particle == 'neutron' + and p.emission_mode == 'prompt'] + elif 19 in incident_neutron.reactions: + nu_prompt = [p for p in incident_neutron[19].products + if p.particle == 'neutron' + and p.emission_mode == 'prompt'] + else: + raise ValueError('IncidentNeutron data has no fission ' + 'reaction.') + if len(nu_prompt) == 0: + raise ValueError('Nu data is needed to compute fission energy ' + 'release with the Sher-Beck format.') + if len(nu_prompt) > 1: + raise ValueError('Ambiguous prompt value.') + if not isinstance(nu_prompt[0].yield_, Tabulated1D): + raise TypeError('Sher-Beck fission energy release currently ' + 'only supports Tabulated1D nu data.') + ENP = deepcopy(nu_prompt[0].yield_) + ENP.y = (energy_release['ENP'] + 1.307 * ENP.x + - 8.07 * (ENP.y - ENP.y[0])) + out.prompt_neutrons = ENP + + return out + @classmethod def from_endf(cls, filename, incident_neutron): """Generate fission energy release data from an ENDF file. @@ -327,72 +410,22 @@ class FissionEnergyRelease(object): # Check to make sure this ENDF file matches the expected isomer. ident = identify_nuclide(filename) if ident['Z'] != incident_neutron.atomic_number: - pass + raise ValueError('The atomic number of the ENDF evaluation does ' + 'not match the given IncidentNeutron.') if ident['A'] != incident_neutron.mass_number: - pass + raise ValueError('The atomic mass of the ENDF evaluation does ' + 'not match the given IncidentNeutron.') if ident['LISO'] != incident_neutron.metastable: - pass - if not ident['LIF']: - pass + raise ValueError('The metastable state of the ENDF evaluation does ' + 'not match the given IncidentNeutron.') + if not ident['LFI']: + raise ValueError('The ENDF evaluation is not fissionable.') # Read the 458 data from the ENDF file. value, uncertainty = _extract_458_data(filename) - # Declare the coefficient names. If we only find one value for each of - # these components, then we need to use the Sher-Beck formula for energy - # dependence. Otherwise, it is a polynomial. - labels = ('EFR', 'ENP', 'END', 'EGP', 'EGD', 'EB', 'ENU', 'ER', 'ET') - - # How many coefficients are given for each coefficient? If we only find - # one value for each, then we need to use the Sher-Beck formula for - # energy dependence. Otherwise, it is a polynomial. - n_coeffs = len(value['EFR']) - - out = cls() - if n_coeffs > 1: - out.form = 'Madland' - out.fragments = Polynomial(value['EFR']) - out.prompt_neutrons = Polynomial(value['ENP']) - out.delayed_neutrons = Polynomial(value['END']) - out.prompt_photons = Polynomial(value['EGP']) - out.delayed_photons = Polynomial(value['EGD']) - out.betas = Polynomial(value['EB']) - out.neutrinos = Polynomial(value['ENU']) - else: - out.form = 'Sher-Beck' - - # EFR and ENP are energy independent. Polynomial is used because it - # has a __call__ attribute that handles Iterable inputs. The - # energy-dependence of END is unspecified in ENDF-102 so assume it - # is independent. - out.fragments = Polynomial((value['EFR'][0])) - out.prompt_photons = Polynomial((value['EGP'][0])) - out.delayed_neutrons = Polynomial((value['END'][0])) - - # EDP, EB, and ENU are linear. - out.delayed_photons = Polynomial((value['EGD'][0], -0.075)) - out.betas = Polynomial((value['EB'][0], -0.075)) - out.neutrinos = Polynomial((value['ENU'][0], -0.105)) - - # Prompt neutrons require nu-data. It is not clear from ENDF-102 - # whether prompt or total nu values should be used, but the delayed - # neutron fraction is so small that the difference is negligible. - nu_prompt = [p for p in incident_neutron[18].products - if p.particle == 'neutron' - and p.emission_mode == 'prompt'] - if len(nu_prompt) == 0: - raise ValueError('Nu data is needed to compute fission energy ' - 'release with the Sher-Beck format.') - if len(nu_prompt) > 1: - raise ValueError('Ambiguous prompt nu value.') - if not isinstance(nu_prompt[0].yield_, Tabulated1D): - raise TypeError('Sher-Beck fission energy release currently ' - 'only supports Tabulated1D nu data.') - ENP = deepcopy(nu_prompt[0].yield_) - ENP.y = value['ENP'] + 1.307 * ENP.x - 8.07 * (ENP.y - ENP.y[0]) - out.prompt_neutrons = ENP - - return out + # Build the object. + return cls._from_dictionary(value, incident_neutron) @classmethod def from_hdf5(cls, group): @@ -419,9 +452,9 @@ class FissionEnergyRelease(object): obj.betas = Polynomial(group['betas'].value) obj.neutrinos = Polynomial(group['neutrinos'].value) - if group.attrs['format'] == 'Madland': + if group.attrs['format'].decode() == 'Madland': obj.prompt_neutrons = Polynomial(group['prompt_neutrons'].value) - elif group.attrs['format'] == 'Sher-Beck': + elif group.attrs['format'].decode() == 'Sher-Beck': obj.prompt_neutrons = Tabulated1D.from_hdf5( group['prompt_neutrons']) else: @@ -429,6 +462,44 @@ class FissionEnergyRelease(object): return obj + @classmethod + def from_compact_hdf5(cls, fname, incident_neutron): + """Generate fission energy release data from a small HDF5 library. + + Parameters + ---------- + fname : str + Path to an HDF5 file containing fission energy release data. This + file should have been generated form the + openmc.data.write_compact_458_library function. + + incident_neutron : openmc.data.IncidentNeutron + Corresponding incident neutron dataset + + Returns + ------- + openmc.data.FissionEnergyRelease or None + Fission energy release data for the given nuclide if it is present + in the data file + + """ + + fin = h5py.File(fname, 'r') + + components = [s.decode() for s in fin.attrs['component order']] + + nuclide_name = str(incident_neutron.atomic_number) + nuclide_name += str(incident_neutron.mass_number) + if incident_neutron.metastable != 0: + nuclide_name += '_m' + str(incident_neutron.metastable) + + if nuclide_name not in fin: return None + + data = {c : fin[nuclide_name + '/data'][i, 0, :] + for i, c in enumerate(components)} + + return cls._from_dictionary(data, incident_neutron) + def to_hdf5(self, group): """Write energy release data to an HDF5 group diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 84d9bcb2c6..d2c9290b69 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -52,6 +52,9 @@ class IncidentNeutron(object): Atomic weight ratio of the target nuclide. energy : numpy.ndarray The energy values (MeV) at which reaction cross-sections are tabulated. + fission_energy : None or openmc.data.FissionEnergyRelease + The energy released by fission, tabulated by component (e.g. prompt + neutrons or beta particles) and dependent on incident neutron energy mass_number : int Number of nucleons in the nucleus metastable : int diff --git a/scripts/openmc-ace-to-hdf5 b/scripts/openmc-ace-to-hdf5 index 743cf4a509..90031f0faa 100755 --- a/scripts/openmc-ace-to-hdf5 +++ b/scripts/openmc-ace-to-hdf5 @@ -25,6 +25,13 @@ follows the NNDC data convention (1000*Z + A + 300 + 100*m), or the MCNP data convention (essentially the same as NNDC, except that the first metastable state of Am242 is 95242 and the ground state is 95642). +The optional --fission_energy_release argument will accept an HDF5 file +containing a library of fission energy release (ENDF MF=1 MT=458) data. A +library built from ENDF/B-VII.1 data is released with OpenMC and can be found at +openmc/data/fission_Q_data_endb71.h5. This data is necessary for +'fission-q-prompt' and 'fission-q-recoverable' tallies, but is not needed +otherwise. + """ class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, @@ -47,6 +54,8 @@ parser.add_argument('--xsdir', help='MCNP xsdir file that lists ' 'ACE libraries') parser.add_argument('--xsdata', help='Serpent xsdata file that lists ' 'ACE libraries') +parser.add_argument('--fission_energy_release', help='HDF5 file containing ' + 'fission energy release data') args = parser.parse_args() if not os.path.isdir(args.destination): @@ -111,6 +120,14 @@ for filename in ace_libraries: # Continuous-energy neutron data neutron = openmc.data.IncidentNeutron.from_ace( table, args.metastable) + + # Fission energy release data, if available + if args.fission_energy_release is not None: + fer = openmc.data.FissionEnergyRelease.from_compact_hdf5( + args.fission_energy_release, neutron) + if fer is not None: + neutron.fission_energy = fer + print(neutron.name) # Determine filename From 7be7c6f29bd0f8d158fa3338dcad04e5783c13c3 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 2 Aug 2016 18:53:44 -0400 Subject: [PATCH 15/49] fixed mgxs library.py to accept MDGXS --- .../pythonapi/examples/mdgxs-part-i.ipynb | 256 +++++++++++------- openmc/mgxs/library.py | 45 ++- openmc/mgxs/mdgxs.py | 54 ++-- openmc/tallies.py | 3 + 4 files changed, 231 insertions(+), 127 deletions(-) diff --git a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb index 2eeeffa3ca..b15ace9519 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb @@ -354,7 +354,7 @@ "\n", "# Instantiate a 1-group EnergyGroups object\n", "one_group = mgxs.EnergyGroups()\n", - "one_group.group_edges = np.array([0., 20.])\n", + "one_group.group_edges = np.array([energy_groups.group_edges[0], energy_groups.group_edges[-1]])\n", "\n", "delayed_groups = mgxs.DelayedGroups()\n", "delayed_groups.groups = range(1,7)" @@ -404,8 +404,8 @@ "chi_prompt = mgxs.ChiPrompt(domain=cell, groups=energy_groups, by_nuclide=True)\n", "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=cell, groups=one_group, by_nuclide=True)\n", "chi_delayed = mgxs.ChiDelayed(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", - "delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=one_group, delayed_groups=delayed_groups, by_nuclide=True)\n", - "beta = mgxs.Beta(domain=cell, energy_groups=one_group, delayed_groups=delayed_groups, by_nuclide=True)\n", + "delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", + "beta = mgxs.Beta(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", "\n", "chi_prompt.nuclides = ['U235', 'Pu239']\n", "prompt_nu_fission.nuclides = ['U235', 'Pu239']\n", @@ -436,7 +436,32 @@ " \tName =\t\n", " \tFilters =\t\n", " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0. 20.]\n", + " \t\tenergy\t[ 1.00000000e-09 1.26765187e-09 1.60694125e-09 2.03704208e-09\n", + " 2.58226019e-09 3.27340695e-09 4.14954043e-09 5.26017266e-09\n", + " 6.66806769e-09 8.45278845e-09 1.07151931e-08 1.35831345e-08\n", + " 1.72186857e-08 2.18272991e-08 2.76694165e-08 3.50751874e-08\n", + " 4.44631267e-08 5.63637656e-08 7.14496326e-08 9.05732601e-08\n", + " 1.14815362e-07 1.45545908e-07 1.84501542e-07 2.33883724e-07\n", + " 2.96483139e-07 3.75837404e-07 4.76430987e-07 6.03948629e-07\n", + " 7.65596607e-07 9.70509967e-07 1.23026877e-06 1.55955250e-06\n", + " 1.97696964e-06 2.50610925e-06 3.17687407e-06 4.02717034e-06\n", + " 5.10505000e-06 6.47142616e-06 8.20351544e-06 1.03992017e-05\n", + " 1.31825674e-05 1.67109061e-05 2.11836114e-05 2.68534445e-05\n", + " 3.40408190e-05 4.31519077e-05 5.47015963e-05 6.93425806e-05\n", + " 8.79022517e-05 1.11429453e-04 1.41253754e-04 1.79060585e-04\n", + " 2.26986485e-04 2.87739841e-04 3.64753947e-04 4.62381021e-04\n", + " 5.86138165e-04 7.43019138e-04 9.41889597e-04 1.19398810e-03\n", + " 1.51356125e-03 1.91866874e-03 2.43220401e-03 3.08318795e-03\n", + " 3.90840896e-03 4.95450191e-03 6.28058359e-03 7.96159350e-03\n", + " 1.00925289e-02 1.27938130e-02 1.62181010e-02 2.05589060e-02\n", + " 2.60615355e-02 3.30369541e-02 4.18793565e-02 5.30884444e-02\n", + " 6.72976656e-02 8.53100114e-02 1.08143395e-01 1.37088177e-01\n", + " 1.73780083e-01 2.20292646e-01 2.79254384e-01 3.53997341e-01\n", + " 4.48745390e-01 5.68852931e-01 7.21107479e-01 9.14113241e-01\n", + " 1.15877736e+00 1.46892628e+00 1.86208714e+00 2.36047823e+00\n", + " 2.99226464e+00 3.79314985e+00 4.80839348e+00 6.09536897e+00\n", + " 7.72680585e+00 9.79489985e+00 1.24165231e+01 1.57398286e+01\n", + " 1.99526231e+01]\n", " \tNuclides =\tU235 Pu239 \n", " \tScores =\t['nu-fission']\n", " \tEstimator =\ttracklength), ('delayed-nu-fission', Tally\n", @@ -445,7 +470,32 @@ " \tFilters =\t\n", " \t\tcell\t[1]\n", " \t\tdelayedgroup\t[1 2 3 4 5 6]\n", - " \t\tenergy\t[ 0. 20.]\n", + " \t\tenergy\t[ 1.00000000e-09 1.26765187e-09 1.60694125e-09 2.03704208e-09\n", + " 2.58226019e-09 3.27340695e-09 4.14954043e-09 5.26017266e-09\n", + " 6.66806769e-09 8.45278845e-09 1.07151931e-08 1.35831345e-08\n", + " 1.72186857e-08 2.18272991e-08 2.76694165e-08 3.50751874e-08\n", + " 4.44631267e-08 5.63637656e-08 7.14496326e-08 9.05732601e-08\n", + " 1.14815362e-07 1.45545908e-07 1.84501542e-07 2.33883724e-07\n", + " 2.96483139e-07 3.75837404e-07 4.76430987e-07 6.03948629e-07\n", + " 7.65596607e-07 9.70509967e-07 1.23026877e-06 1.55955250e-06\n", + " 1.97696964e-06 2.50610925e-06 3.17687407e-06 4.02717034e-06\n", + " 5.10505000e-06 6.47142616e-06 8.20351544e-06 1.03992017e-05\n", + " 1.31825674e-05 1.67109061e-05 2.11836114e-05 2.68534445e-05\n", + " 3.40408190e-05 4.31519077e-05 5.47015963e-05 6.93425806e-05\n", + " 8.79022517e-05 1.11429453e-04 1.41253754e-04 1.79060585e-04\n", + " 2.26986485e-04 2.87739841e-04 3.64753947e-04 4.62381021e-04\n", + " 5.86138165e-04 7.43019138e-04 9.41889597e-04 1.19398810e-03\n", + " 1.51356125e-03 1.91866874e-03 2.43220401e-03 3.08318795e-03\n", + " 3.90840896e-03 4.95450191e-03 6.28058359e-03 7.96159350e-03\n", + " 1.00925289e-02 1.27938130e-02 1.62181010e-02 2.05589060e-02\n", + " 2.60615355e-02 3.30369541e-02 4.18793565e-02 5.30884444e-02\n", + " 6.72976656e-02 8.53100114e-02 1.08143395e-01 1.37088177e-01\n", + " 1.73780083e-01 2.20292646e-01 2.79254384e-01 3.53997341e-01\n", + " 4.48745390e-01 5.68852931e-01 7.21107479e-01 9.14113241e-01\n", + " 1.15877736e+00 1.46892628e+00 1.86208714e+00 2.36047823e+00\n", + " 2.99226464e+00 3.79314985e+00 4.80839348e+00 6.09536897e+00\n", + " 7.72680585e+00 9.79489985e+00 1.24165231e+01 1.57398286e+01\n", + " 1.99526231e+01]\n", " \tNuclides =\tU235 Pu239 \n", " \tScores =\t['delayed-nu-fission']\n", " \tEstimator =\ttracklength)])" @@ -531,8 +581,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: bc8a346a978644f5b2b21cccb6c5ae7f8397ebee\n", - " Date/Time: 2016-07-31 19:49:00\n", + " Git SHA1: e8819e6a77f2e998dcce937e80fbdd8dd430b667\n", + " Date/Time: 2016-08-02 18:51:52\n", " MPI Processes: 4\n", "\n", " ===========================================================================\n", @@ -619,20 +669,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 7.4000E-01 seconds\n", - " Reading cross sections = 3.9400E-01 seconds\n", - " Total time in simulation = 2.5930E+01 seconds\n", - " Time in transport only = 2.5267E+01 seconds\n", - " Time in inactive batches = 1.5300E+00 seconds\n", - " Time in active batches = 2.4400E+01 seconds\n", - " Time synchronizing fission bank = 6.4500E-01 seconds\n", - " Sampling source sites = 6.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 1.1000E-02 seconds\n", - " Total time elapsed = 2.6689E+01 seconds\n", - " Calculation Rate (inactive) = 32679.7 neutrons/second\n", - " Calculation Rate (active) = 8196.72 neutrons/second\n", + " Total time for initialization = 9.9200E-01 seconds\n", + " Reading cross sections = 3.8400E-01 seconds\n", + " Total time in simulation = 2.8675E+01 seconds\n", + " Time in transport only = 2.8041E+01 seconds\n", + " Time in inactive batches = 1.3230E+00 seconds\n", + " Time in active batches = 2.7352E+01 seconds\n", + " Time synchronizing fission bank = 5.6200E-01 seconds\n", + " Sampling source sites = 3.0000E-03 seconds\n", + " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-02 seconds\n", + " Total time for finalization = 9.7000E-02 seconds\n", + " Total time elapsed = 2.9773E+01 seconds\n", + " Calculation Rate (inactive) = 37792.9 neutrons/second\n", + " Calculation Rate (active) = 7312.08 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -755,43 +805,43 @@ "\tNuclide =\tU235\n", "\tCross Sections [cm^-1]:\n", " Delayed Group 1:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t5.16e-06 +/- 3.38e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t5.14e-06 +/- 1.76e-01%\n", "\n", " Delayed Group 2:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t2.67e-05 +/- 3.38e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t2.65e-05 +/- 1.76e-01%\n", "\n", " Delayed Group 3:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t2.54e-05 +/- 3.38e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t2.53e-05 +/- 1.76e-01%\n", "\n", " Delayed Group 4:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t5.71e-05 +/- 3.38e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t5.68e-05 +/- 1.76e-01%\n", "\n", " Delayed Group 5:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t2.34e-05 +/- 3.38e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t2.33e-05 +/- 1.76e-01%\n", "\n", " Delayed Group 6:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t9.80e-06 +/- 3.38e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t9.76e-06 +/- 1.76e-01%\n", "\n", "\n", "\tNuclide =\tPu239\n", "\tCross Sections [cm^-1]:\n", " Delayed Group 1:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t1.17e-06 +/- 3.00e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t1.16e-06 +/- 1.90e-01%\n", "\n", " Delayed Group 2:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t7.60e-06 +/- 3.00e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t7.58e-06 +/- 1.90e-01%\n", "\n", " Delayed Group 3:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t5.75e-06 +/- 3.00e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t5.74e-06 +/- 1.90e-01%\n", "\n", " Delayed Group 4:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t1.05e-05 +/- 3.00e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t1.05e-05 +/- 1.90e-01%\n", "\n", " Delayed Group 5:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t5.47e-06 +/- 3.00e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t5.46e-06 +/- 1.90e-01%\n", "\n", " Delayed Group 6:\t\n", - " Group 1 [0.0 - 20.0 MeV]:\t1.66e-06 +/- 3.00e-01%\n", + " Group 1 [1e-09 - 19.9526231497MeV]:\t1.65e-06 +/- 1.90e-01%\n", "\n", "\n", "\n" @@ -799,7 +849,7 @@ } ], "source": [ - "delayed_nu_fission.print_xs()" + "delayed_nu_fission.get_condensed_xs(one_group).print_xs()" ] }, { @@ -840,7 +890,7 @@ " 1\n", " U235\n", " 0.000228\n", - " 1.038855e-06\n", + " 4.753468e-07\n", " \n", " \n", " 1\n", @@ -849,7 +899,7 @@ " 1\n", " Pu239\n", " 0.000081\n", - " 3.258333e-07\n", + " 1.885620e-07\n", " \n", " \n", " 2\n", @@ -858,7 +908,7 @@ " 1\n", " U235\n", " 0.001175\n", - " 5.362249e-06\n", + " 2.453594e-06\n", " \n", " \n", " 3\n", @@ -867,7 +917,7 @@ " 1\n", " Pu239\n", " 0.000531\n", - " 2.121977e-06\n", + " 1.228003e-06\n", " \n", " \n", " 4\n", @@ -876,7 +926,7 @@ " 1\n", " U235\n", " 0.001122\n", - " 5.119269e-06\n", + " 2.342414e-06\n", " \n", " \n", " 5\n", @@ -885,7 +935,7 @@ " 1\n", " Pu239\n", " 0.000402\n", - " 1.605842e-06\n", + " 9.293122e-07\n", " \n", " \n", " 6\n", @@ -894,7 +944,7 @@ " 1\n", " U235\n", " 0.002516\n", - " 1.147782e-05\n", + " 5.251885e-06\n", " \n", " \n", " 7\n", @@ -903,7 +953,7 @@ " 1\n", " Pu239\n", " 0.000733\n", - " 2.931785e-06\n", + " 1.696645e-06\n", " \n", " \n", " 8\n", @@ -912,7 +962,7 @@ " 1\n", " U235\n", " 0.001031\n", - " 4.705745e-06\n", + " 2.153199e-06\n", " \n", " \n", " 9\n", @@ -921,7 +971,7 @@ " 1\n", " Pu239\n", " 0.000382\n", - " 1.527096e-06\n", + " 8.837413e-07\n", " \n", " \n", " 10\n", @@ -930,7 +980,7 @@ " 1\n", " U235\n", " 0.000432\n", - " 1.971220e-06\n", + " 9.019675e-07\n", " \n", " \n", " 11\n", @@ -939,7 +989,7 @@ " 1\n", " Pu239\n", " 0.000116\n", - " 4.621961e-07\n", + " 2.674761e-07\n", " \n", " \n", "\n", @@ -947,18 +997,18 @@ ], "text/plain": [ " cell delayedgroup group in nuclide mean std. dev.\n", - "0 1 1 1 U235 0.000228 1.038855e-06\n", - "1 1 1 1 Pu239 0.000081 3.258333e-07\n", - "2 1 2 1 U235 0.001175 5.362249e-06\n", - "3 1 2 1 Pu239 0.000531 2.121977e-06\n", - "4 1 3 1 U235 0.001122 5.119269e-06\n", - "5 1 3 1 Pu239 0.000402 1.605842e-06\n", - "6 1 4 1 U235 0.002516 1.147782e-05\n", - "7 1 4 1 Pu239 0.000733 2.931785e-06\n", - "8 1 5 1 U235 0.001031 4.705745e-06\n", - "9 1 5 1 Pu239 0.000382 1.527096e-06\n", - "10 1 6 1 U235 0.000432 1.971220e-06\n", - "11 1 6 1 Pu239 0.000116 4.621961e-07" + "0 1 1 1 U235 0.000228 4.753468e-07\n", + "1 1 1 1 Pu239 0.000081 1.885620e-07\n", + "2 1 2 1 U235 0.001175 2.453594e-06\n", + "3 1 2 1 Pu239 0.000531 1.228003e-06\n", + "4 1 3 1 U235 0.001122 2.342414e-06\n", + "5 1 3 1 Pu239 0.000402 9.293122e-07\n", + "6 1 4 1 U235 0.002516 5.251885e-06\n", + "7 1 4 1 Pu239 0.000733 1.696645e-06\n", + "8 1 5 1 U235 0.001031 2.153199e-06\n", + "9 1 5 1 Pu239 0.000382 8.837413e-07\n", + "10 1 6 1 U235 0.000432 9.019675e-07\n", + "11 1 6 1 Pu239 0.000116 2.674761e-07" ] }, "execution_count": 19, @@ -967,7 +1017,7 @@ } ], "source": [ - "df = beta.get_pandas_dataframe()\n", + "df = beta.get_condensed_xs(one_group).get_pandas_dataframe()\n", "df.head(12)" ] }, @@ -1056,8 +1106,8 @@ " 1\n", " (U235 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 9.430766e-08\n", - " 5.356653e-10\n", + " 9.391610e-08\n", + " 2.566220e-10\n", " \n", " \n", " 1\n", @@ -1065,8 +1115,8 @@ " 1\n", " (Pu239 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 7.631830e-09\n", - " 3.816602e-11\n", + " 7.611347e-09\n", + " 2.278727e-11\n", " \n", " \n", " 2\n", @@ -1074,8 +1124,8 @@ " 2\n", " (U235 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 1.107191e-06\n", - " 6.288818e-09\n", + " 1.102594e-06\n", + " 3.012794e-09\n", " \n", " \n", " 3\n", @@ -1083,8 +1133,8 @@ " 2\n", " (Pu239 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 1.426298e-07\n", - " 7.132776e-10\n", + " 1.422470e-07\n", + " 4.258670e-10\n", " \n", " \n", " 4\n", @@ -1092,8 +1142,8 @@ " 3\n", " (U235 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 6.713761e-07\n", - " 3.813401e-09\n", + " 6.685886e-07\n", + " 1.826892e-09\n", " \n", " \n", " 5\n", @@ -1101,8 +1151,8 @@ " 3\n", " (Pu239 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 5.434458e-08\n", - " 2.717718e-10\n", + " 5.419872e-08\n", + " 1.622631e-10\n", " \n", " \n", " 6\n", @@ -1110,8 +1160,8 @@ " 4\n", " (U235 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 4.907155e-07\n", - " 2.787253e-09\n", + " 4.886781e-07\n", + " 1.335293e-09\n", " \n", " \n", " 7\n", @@ -1119,8 +1169,8 @@ " 4\n", " (Pu239 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 2.633756e-08\n", - " 1.317115e-10\n", + " 2.626687e-08\n", + " 7.863920e-11\n", " \n", " \n", " 8\n", @@ -1128,8 +1178,8 @@ " 5\n", " (U235 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 1.475656e-08\n", - " 8.381692e-11\n", + " 1.469529e-08\n", + " 4.015430e-11\n", " \n", " \n", " 9\n", @@ -1137,8 +1187,8 @@ " 5\n", " (Pu239 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 1.278385e-09\n", - " 6.393074e-12\n", + " 1.274953e-09\n", + " 3.817026e-12\n", " \n", " \n", " 10\n", @@ -1146,8 +1196,8 @@ " 6\n", " (U235 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 1.190878e-09\n", - " 6.764161e-12\n", + " 1.185934e-09\n", + " 3.240517e-12\n", " \n", " \n", " 11\n", @@ -1155,8 +1205,8 @@ " 6\n", " (Pu239 / total)\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 5.385798e-11\n", - " 2.693384e-13\n", + " 5.371343e-11\n", + " 1.608102e-13\n", " \n", " \n", "\n", @@ -1178,18 +1228,18 @@ "11 1 6 (Pu239 / total) \n", "\n", " score mean std. dev. \n", - "0 (((delayed-nu-fission / nu-fission) * (delayed... 9.43e-08 5.36e-10 \n", - "1 (((delayed-nu-fission / nu-fission) * (delayed... 7.63e-09 3.82e-11 \n", - "2 (((delayed-nu-fission / nu-fission) * (delayed... 1.11e-06 6.29e-09 \n", - "3 (((delayed-nu-fission / nu-fission) * (delayed... 1.43e-07 7.13e-10 \n", - "4 (((delayed-nu-fission / nu-fission) * (delayed... 6.71e-07 3.81e-09 \n", - "5 (((delayed-nu-fission / nu-fission) * (delayed... 5.43e-08 2.72e-10 \n", - "6 (((delayed-nu-fission / nu-fission) * (delayed... 4.91e-07 2.79e-09 \n", - "7 (((delayed-nu-fission / nu-fission) * (delayed... 2.63e-08 1.32e-10 \n", - "8 (((delayed-nu-fission / nu-fission) * (delayed... 1.48e-08 8.38e-11 \n", - "9 (((delayed-nu-fission / nu-fission) * (delayed... 1.28e-09 6.39e-12 \n", - "10 (((delayed-nu-fission / nu-fission) * (delayed... 1.19e-09 6.76e-12 \n", - "11 (((delayed-nu-fission / nu-fission) * (delayed... 5.39e-11 2.69e-13 " + "0 (((delayed-nu-fission / nu-fission) * (delayed... 9.39e-08 2.57e-10 \n", + "1 (((delayed-nu-fission / nu-fission) * (delayed... 7.61e-09 2.28e-11 \n", + "2 (((delayed-nu-fission / nu-fission) * (delayed... 1.10e-06 3.01e-09 \n", + "3 (((delayed-nu-fission / nu-fission) * (delayed... 1.42e-07 4.26e-10 \n", + "4 (((delayed-nu-fission / nu-fission) * (delayed... 6.69e-07 1.83e-09 \n", + "5 (((delayed-nu-fission / nu-fission) * (delayed... 5.42e-08 1.62e-10 \n", + "6 (((delayed-nu-fission / nu-fission) * (delayed... 4.89e-07 1.34e-09 \n", + "7 (((delayed-nu-fission / nu-fission) * (delayed... 2.63e-08 7.86e-11 \n", + "8 (((delayed-nu-fission / nu-fission) * (delayed... 1.47e-08 4.02e-11 \n", + "9 (((delayed-nu-fission / nu-fission) * (delayed... 1.27e-09 3.82e-12 \n", + "10 (((delayed-nu-fission / nu-fission) * (delayed... 1.19e-09 3.24e-12 \n", + "11 (((delayed-nu-fission / nu-fission) * (delayed... 5.37e-11 1.61e-13 " ] }, "execution_count": 22, @@ -1204,7 +1254,7 @@ "\n", "# Create a tally object with only the delayed group filter for the time constants\n", "beta_filters = [f for f in beta.xs_tally.filters if f.type != 'delayedgroup']\n", - "lambda_tally = beta.xs_tally.summation(nuclides=beta.xs_tally.nuclides)\n", + "lambda_tally = beta.get_condensed_xs(one_group).xs_tally.summation(nuclides=beta.xs_tally.nuclides)\n", "for f in beta_filters:\n", " lambda_tally = lambda_tally.summation(filter_type=f.type, remove_filter=True) * 0. + 1.\n", "\n", @@ -1217,8 +1267,8 @@ "lambda_tally.scores = ['lambda']\n", "\n", "# Use tally arithmetic to compute the precursor concentrations\n", - "precursor_conc = beta.xs_tally.summation(filter_type='energy', remove_filter=True) * \\\n", - " delayed_nu_fission.xs_tally.summation(filter_type='energy', remove_filter=True) / lambda_tally\n", + "precursor_conc = beta.get_condensed_xs(one_group).xs_tally.summation(filter_type='energy', remove_filter=True) * \\\n", + " delayed_nu_fission.get_condensed_xs(one_group).xs_tally.summation(filter_type='energy', remove_filter=True) / lambda_tally\n", " \n", "# The difference is a derived tally which can generate Pandas DataFrames for inspection\n", "precursor_conc.get_pandas_dataframe()" @@ -1242,8 +1292,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Beta (U-235) : 0.006504 +/- 0.000015\n", - "Beta (Pu-239): 0.002245 +/- 0.000004\n" + "Beta (U-235) : 0.006504 +/- 0.000007\n", + "Beta (Pu-239): 0.002245 +/- 0.000002\n" ] }, { @@ -1260,7 +1310,7 @@ "data": { "image/png": "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\n771XLz/wwAO55JJLWLBgAfPmzVt9R8qOtPXkVe/EUikFl7+jrW3T5r6SGshKOGdGxNK0+HLggxGx\nK1mp5sftjtisizQ3w9KlVTfr1pYuza7D1rjjjjtYuHAhr7zyCj/72c/o379/m9ufcsopq29XfOGF\nF6617tvf/jZTp07lpptuqrhvv379GDNmDBdccAEvvvgiAP/1X//Fbrvtxq677so+++zD4YcfzoYb\nbsgWW2xRmwusoN5VYbOBYSWvtwHmlm0zC9gWmCupLzAwIt6UNDstX2dfSRuQJZVrI+KOlg0i4l8l\n2/8auKu1wJpLPv1NTU00NTXlviizeih6UmnRna6jM1VXNYuhQulk0003XavEMG/evNXPr7jiCq64\n4op19hk3bhz33Xcfjz76KA0NDW2ec/ny5bz88svsvPPO9O/fn0svvZRLL70UgF/96lfsvvvuuare\nJk2axKRJk6put448dwPr6APoC/w3MBzoBzwH7Fi2zanA5en5WLJ2FYCdgGfTfiPTcVpuTHYNWSN9\n+fm2Knl+FnBDK3FVv4Wa2XqW3aE9exRRV8Xfnf+eR4wYEQ8++OA6y48++ug4+uijY/ny5TF58uQY\nMmRIHHvssa0e5wc/+EGMGjUq5s2bt866J598Mh577LF47733YtmyZXHhhRfGgAED4vXXX4+IiDlz\n5sTcuXMjIuKJJ56IbbfdNh544IE2427tPSXnHSTXx22ADwD+DswAzknLxgOfS883Am5O658ERpTs\ne25KKNOA0WnZ3sDKlKSeBaYAB8SahPNCWvf/gC1bianNN9WsKzixdPS83fcNGzlyZMXE8vLLL8de\ne+0VjY2N8bnPfS7OPPPMNhOLpOjfv380Njauvl3xBRdcEBERjzzySOyyyy4xYMCAGDx4cDQ1NcVj\njz22et9HH300RowYEZtuumnssMMOceONN1aNu7OJxbcmNusmSmsmivjx7Kr4fWvi2vOtic3MrFup\n2ngv6ePAMcAnga2BZcBfgd8D10XEorpGaGZmhdJmVZikP5D1xLoD+AvwT6A/sD2wL3AwWSP6nfUP\ntXZcFWbdkavCOnpeV4XVWmerwqolliERsaBKAFW36W6cWKw7cmLp6HmdWGqtrm0sLQlD0qZp3i8k\nbS/pEEkblm5jZmYG+RvvHwX6SxoK3A8cC/y2XkGZmVlx5R15r4h4R9IJZIMZL5L0bD0DMzPLY/jw\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1269,7 +1319,7 @@ ], "source": [ "energy_filter = [f for f in beta.xs_tally.filters if f.type == 'energy']\n", - "beta_integrated = beta.xs_tally.summation(filter_type='energy', remove_filter=True)\n", + "beta_integrated = beta.get_condensed_xs(one_group).xs_tally.summation(filter_type='energy', remove_filter=True)\n", "beta_u235 = beta_integrated.get_values(nuclides=['U235'])\n", "beta_pu239 = beta_integrated.get_values(nuclides=['Pu239'])\n", "\n", @@ -1323,7 +1373,7 @@ "data": { "image/png": "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\n9erFmWeeyRtvvAFAkyZNgmWqSk5ODjt37mTHjh2AnT5zwoQJFBQU0KZNGyZMmBDTNPTCCy9w3HHH\n0bp1a8aPH1+ts3/wwQc5/vjjadOmDQMHDmTdunUR21m6dCmnnHIKBQUFFBcXh/xIBw8ezF/+8peQ\n+ieddBJPP23/dNasWUP//v1p06YNxx13HE888USw3o4dOzj//PMpKCigd+/eCaU3bciULi8NboaG\nR1IVg6oeAK4Dngc+Bhao6iciUioigwFE5Mcish64CLhPRAKJfYcCfYCxIvK+iLwnIifWpXyW30JK\npdoWzS4bqX5dRJ9cv359sKOMhldzyPfff8/KlSurpfw86aSTaNq0KRdccAFXXHFFMEdDIMxugIMH\nD7JhwwZ2795dre3t27dz0UUXcdttt7Ft2zaOPvpoXnvttWD5U089xe9//3ueeuoptm7dyplnnsmI\nESMiypmXl8fcuXPZtWsXS5Ys4b777gt2/IEcDQFWrVrFpk2bGDRoEHv37qV///6MHDmSbdu2MX/+\nfK699lo++eQTAK699lqaN2/Oli1bmD17tmf/h8FgqCLpsZJU9TlVPUZVu6rq751jJar6rPP5HVXt\nqKotVfVQZ3oqqvqYqjZR1VNU9WTn73+SLW99csEFF1BYWMhZZ51Fv379IialqSlXX301J598Mv37\n9w85vmrVKnbv3s28efM444wzgscHDhzI3XffzbZt2/jqq6+CWeH27t1bre2lS5dywgkn8LOf/YxG\njRpx/fXX065du2D5Aw88wJQpU+jWrRs5OTnceOONfPDBByFJfwKcddZZQeX1ox/9iOHDh7N8+XIA\nhgwZwmeffRZ823/00UcZNmwYjRo14tlnn6Vz586MHj0aEaFHjx5ceOGFLFy4kIMHD/Lkk09yyy23\n0LRpU0444QTGjBmT4BM1GBoeJoheClm8eDE7duzgyy+/5M9//jNNmjSJe84111wTzMXw+9//PqRs\n8uTJrF69Omou58aNGzNs2DBmzJjBhx/aA7OpU6dy8skn06NHD/r06cPPfvYzcnNzOeyww6qdH57y\nEwjZLy8vZ+LEicF0nG3atEFEqmVbA3jrrbc4++yzOeyww2jVqhX3339/MOVn48aNGTp0KI8++iiq\nyvz584O5oMvLy3nzzTdDUn7OmzePLVu2sHXrViorKznyyCOD12mwwfn8JVVbBALO6Ax0z0Uk/F6y\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 3099ff0b51..a40857df97 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -18,17 +18,18 @@ if sys.version_info[0] >= 3: class Library(object): - """A multi-group cross section library for some energy group structure. + """A multi-energy-group and multi-delayed-group cross section library for + some energy group structure. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated multi-group cross sections for deterministic neutronics calculations. - This class helps automate the generation of MGXS objects for some energy - group structure and domain type. The Library serves as a collection for - MGXS objects with routines to automate the initialization of tallies for - input files, the loading of tally data from statepoint files, data storage, - energy group condensation and more. + This class helps automate the generation of MGXS and MDGXS objects for some + energy group structure and domain type. The Library serves as a collection + for MGXS and MDGXS objects with routines to automate the initialization of + tallies for input files, the loading of tally data from statepoint files, + data storage, energy group condensation and more. Parameters ---------- @@ -64,6 +65,8 @@ class Library(object): The highest legendre moment in the scattering matrices (default is 0) energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation + delayed_groups : openmc.mgxs.DelayedGroups + Delayed groups to filter out the xs tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to compute the cross section @@ -95,6 +98,7 @@ class Library(object): self._domain_type = None self._domains = 'all' self._energy_groups = None + self._delayed_groups = None self._correction = 'P0' self._legendre_order = 0 self._tally_trigger = None @@ -126,6 +130,7 @@ class Library(object): clone._correction = self.correction clone._legendre_order = self.legendre_order clone._energy_groups = copy.deepcopy(self.energy_groups, memo) + clone._delayed_groups = copy.deepcopy(self.delayed_groups, memo) clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo) clone._all_mgxs = copy.deepcopy(self.all_mgxs) clone._sp_filename = self._sp_filename @@ -194,6 +199,10 @@ class Library(object): def energy_groups(self): return self._energy_groups + @property + def delayed_groups(self): + return self._delayed_groups + @property def correction(self): return self._correction @@ -210,6 +219,13 @@ class Library(object): def num_groups(self): return self.energy_groups.num_groups + @property + def num_delayed_groups(self): + if self.delayed_groups == None: + return 0 + else: + return self.delayed_groups.num_groups + @property def all_mgxs(self): return self._all_mgxs @@ -261,7 +277,7 @@ class Library(object): def domain_type(self, domain_type): cv.check_value('domain type', domain_type, openmc.mgxs.DOMAIN_TYPES) - if by_nuclide == True and domain_type == 'mesh': + if self.by_nuclide == True and domain_type == 'mesh': raise ValueError('Unable to create MGXS library by nuclide with ' + 'mesh domain') @@ -308,6 +324,12 @@ class Library(object): cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) self._energy_groups = energy_groups + @delayed_groups.setter + def delayed_groups(self, delayed_groups): + cv.check_type('delayed groups', delayed_groups, + openmc.mgxs.DelayedGroups) + self._delayed_groups = delayed_groups + @correction.setter def correction(self, correction): cv.check_value('correction', correction, ('P0', None)) @@ -373,12 +395,19 @@ class Library(object): for domain in self.domains: self.all_mgxs[domain.id] = OrderedDict() for mgxs_type in self.mgxs_types: - mgxs = openmc.mgxs.MGXS.get_mgxs(mgxs_type, name=self.name) + if mgxs_type in openmc.mgxs.MDGXS_TYPES: + mgxs = openmc.mgxs.MDGXS.get_mgxs(mgxs_type, name=self.name) + else: + mgxs = openmc.mgxs.MGXS.get_mgxs(mgxs_type, name=self.name) + mgxs.domain = domain mgxs.domain_type = self.domain_type mgxs.energy_groups = self.energy_groups mgxs.by_nuclide = self.by_nuclide + if mgxs_type in openmc.mgxs.MDGXS_TYPES: + mgxs.delayed_groups = self.delayed_groups + # If a tally trigger was specified, add it to the MGXS if self.tally_trigger: mgxs.tally_trigger = self.tally_trigger diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index 4d65aaacc5..e985b01515 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -115,7 +115,7 @@ class MDGXS(MGXS): __metaclass__ = abc.ABCMeta def __init__(self, domain=None, domain_type=None, energy_groups=None, - by_nuclide=False, name='', delayed_groups=None): + delayed_groups=None, by_nuclide=False, name=''): super(MDGXS, self).__init__(domain, domain_type, energy_groups, by_nuclide, name) self._delayed_groups = None @@ -124,12 +124,30 @@ class MDGXS(MGXS): self.delayed_groups = delayed_groups def __deepcopy__(self, memo): - super(MDGXS, self).__deepcopy__(memo) existing = memo.get(id(self)) # If this is the first time we have tried to copy this object, copy it if existing is None: + clone = type(self).__new__(type(self)) + clone._name = self.name + clone._rxn_type = self.rxn_type + clone._by_nuclide = self.by_nuclide + clone._nuclides = copy.deepcopy(self._nuclides) + clone._domain = self.domain + clone._domain_type = self.domain_type + clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._delayed_groups = copy.deepcopy(self.delayed_groups, memo) + clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo) + clone._rxn_rate_tally = copy.deepcopy(self._rxn_rate_tally, memo) + clone._xs_tally = copy.deepcopy(self._xs_tally, memo) + clone._sparse = self.sparse + clone._derived = self.derived + + clone._tallies = OrderedDict() + for tally_type, tally in self.tallies.items(): + clone.tallies[tally_type] = copy.deepcopy(tally, memo) + + memo[id(self)] = clone return clone @@ -143,7 +161,10 @@ class MDGXS(MGXS): @property def num_delayed_groups(self): - return self.delayed_groups.num_groups + if self.delayed_groups == None: + return 0 + else: + return self.delayed_groups.num_groups @delayed_groups.setter def delayed_groups(self, delayed_groups): @@ -167,8 +188,8 @@ class MDGXS(MGXS): @staticmethod def get_mgxs(mdgxs_type, domain=None, domain_type=None, - energy_groups=None, by_nuclide=False, name='', - delayed_groups=None): + energy_groups=None, delayed_groups=None, + by_nuclide=False, name=''): """Return a MDGXS subclass object for some energy group structure within some spatial domain for some reaction type. @@ -206,15 +227,16 @@ class MDGXS(MGXS): cv.check_value('mdgxs_type', mdgxs_type, MDGXS_TYPES) if mdgxs_type == 'delayed-nu-fission': - mdgxs = DelayedNuFissionXS(domain, domain_type, energy_groups) + mdgxs = DelayedNuFissionXS(domain, domain_type, energy_groups, + delayed_groups) elif mdgxs_type == 'chi-delayed': - mdgxs = ChiDelayed(domain, domain_type, energy_groups) + mdgxs = ChiDelayed(domain, domain_type, energy_groups, + delayed_groups) elif mdgxs_type == 'beta': - mdgxs = Beta(domain, domain_type, energy_groups) + mdgxs = Beta(domain, domain_type, energy_groups, delayed_groups) mdgxs.by_nuclide = by_nuclide mdgxs.name = name - mdgxs.delayed_groups = delayed_groups return mdgxs def get_xs(self, groups='all', subdomains='all', nuclides='all', @@ -936,9 +958,9 @@ class ChiDelayed(MDGXS): """ def __init__(self, domain=None, domain_type=None, energy_groups=None, - by_nuclide=False, name='', delayed_groups=None): + delayed_groups=None, by_nuclide=False, name=''): super(ChiDelayed, self).__init__(domain, domain_type, energy_groups, - by_nuclide, name, delayed_groups) + delayed_groups, by_nuclide, name) self._rxn_type = 'chi-delayed' @property @@ -1390,10 +1412,10 @@ class DelayedNuFissionXS(MDGXS): """ def __init__(self, domain=None, domain_type=None, energy_groups=None, - by_nuclide=False, name='', delayed_groups=None): + delayed_groups=None, by_nuclide=False, name=''): super(DelayedNuFissionXS, self).__init__(domain, domain_type, - energy_groups, by_nuclide, - name, delayed_groups) + energy_groups, delayed_groups, + by_nuclide, name) self._rxn_type = 'delayed-nu-fission' @@ -1509,9 +1531,9 @@ class Beta(MDGXS): """ def __init__(self, domain=None, domain_type=None, energy_groups=None, - by_nuclide=False, name='', delayed_groups=None): + delayed_groups=None, by_nuclide=False, name=''): super(Beta, self).__init__(domain, domain_type, energy_groups, - by_nuclide, name, delayed_groups) + delayed_groups, by_nuclide, name) self._rxn_type = 'beta' @property diff --git a/openmc/tallies.py b/openmc/tallies.py index 2073bbd282..58cf34ed7b 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -795,6 +795,9 @@ class Tally(object): else: no_scores_match = False + if score == 'current' and score not in self.scores: + return False + # Nuclides cannot be specified on 'flux' scores if 'flux' in self.scores or 'flux' in other.scores: if self.nuclides != other.nuclides: From 92e77eb57403399672bf8003ab764efdd96991a5 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 2 Aug 2016 20:35:21 -0400 Subject: [PATCH 16/49] added mdgxs tests --- openmc/mgxs/library.py | 6 +- .../inputs_true.dat | 1 + .../results_true.dat | 63 ++++++++++ .../test_mdgxs_library_condense.py | 82 ++++++++++++ .../inputs_true.dat | 1 + .../results_true.dat | 21 ++++ .../test_mdgxs_library_distribcell.py | 80 ++++++++++++ tests/test_mdgxs_library_hdf5/inputs_true.dat | 1 + .../test_mdgxs_library_hdf5/results_true.dat | 117 ++++++++++++++++++ .../test_mdgxs_library_hdf5.py | 93 ++++++++++++++ tests/test_mdgxs_library_mesh/inputs_true.dat | 1 + .../test_mdgxs_library_mesh/results_true.dat | 78 ++++++++++++ .../test_mdgxs_library_mesh.py | 84 +++++++++++++ .../inputs_true.dat | 1 + .../results_true.dat | 117 ++++++++++++++++++ .../test_mdgxs_library_no_nuclides.py | 80 ++++++++++++ .../inputs_true.dat | 1 + .../results_true.dat | 1 + .../test_mdgxs_library_nuclides.py | 80 ++++++++++++ 19 files changed, 906 insertions(+), 2 deletions(-) create mode 100644 tests/test_mdgxs_library_condense/inputs_true.dat create mode 100644 tests/test_mdgxs_library_condense/results_true.dat create mode 100644 tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py create mode 100644 tests/test_mdgxs_library_distribcell/inputs_true.dat create mode 100644 tests/test_mdgxs_library_distribcell/results_true.dat create mode 100644 tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py create mode 100644 tests/test_mdgxs_library_hdf5/inputs_true.dat create mode 100644 tests/test_mdgxs_library_hdf5/results_true.dat create mode 100644 tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py create mode 100644 tests/test_mdgxs_library_mesh/inputs_true.dat create mode 100644 tests/test_mdgxs_library_mesh/results_true.dat create mode 100644 tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py create mode 100644 tests/test_mdgxs_library_no_nuclides/inputs_true.dat create mode 100644 tests/test_mdgxs_library_no_nuclides/results_true.dat create mode 100644 tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py create mode 100644 tests/test_mdgxs_library_nuclides/inputs_true.dat create mode 100644 tests/test_mdgxs_library_nuclides/results_true.dat create mode 100644 tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index a40857df97..56399ee2f0 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -255,12 +255,14 @@ class Library(object): @mgxs_types.setter def mgxs_types(self, mgxs_types): + all_mgxs_types = np.append(openmc.mgxs.MGXS_TYPES, + openmc.mgxs.MDGXS_TYPES) if mgxs_types == 'all': - self._mgxs_types = openmc.mgxs.MGXS_TYPES + self._mgxs_types = all_mgxs_types else: cv.check_iterable_type('mgxs_types', mgxs_types, basestring) for mgxs_type in mgxs_types: - cv.check_value('mgxs_type', mgxs_type, openmc.mgxs.MGXS_TYPES) + cv.check_value('mgxs_type', mgxs_type, all_mgxs_types) self._mgxs_types = mgxs_types @by_nuclide.setter diff --git a/tests/test_mdgxs_library_condense/inputs_true.dat b/tests/test_mdgxs_library_condense/inputs_true.dat new file mode 100644 index 0000000000..49fe693ee4 --- /dev/null +++ b/tests/test_mdgxs_library_condense/inputs_true.dat @@ -0,0 +1 @@ +9e8d8b468bdd81d996956d0d43eef5779b7b7d5ca3f6a1e628f10318748086183e45cf221edf7a274ff2dc6aff34f4411e21952740cdb7652477dfa0a1ffb5f2 \ No newline at end of file diff --git a/tests/test_mdgxs_library_condense/results_true.dat b/tests/test_mdgxs_library_condense/results_true.dat new file mode 100644 index 0000000000..20cc048d14 --- /dev/null +++ b/tests/test_mdgxs_library_condense/results_true.dat @@ -0,0 +1,63 @@ + material delayedgroup group in nuclide mean std. dev. +0 10000 1 1 total 0.000021 0.000001 +1 10000 2 1 total 0.000110 0.000008 +2 10000 3 1 total 0.000107 0.000007 +3 10000 4 1 total 0.000249 0.000017 +4 10000 5 1 total 0.000112 0.000007 +5 10000 6 1 total 0.000046 0.000003 + material delayedgroup group out nuclide mean std. dev. +0 10000 1 1 total 0 0.000000 +1 10000 2 1 total 1 0.869128 +2 10000 3 1 total 1 1.414214 +3 10000 4 1 total 1 0.360359 +4 10000 5 1 total 0 0.000000 +5 10000 6 1 total 0 0.000000 + material delayedgroup group in nuclide mean std. dev. +0 10000 1 1 total 0.000227 0.000020 +1 10000 2 1 total 0.001214 0.000108 +2 10000 3 1 total 0.001184 0.000104 +3 10000 4 1 total 0.002752 0.000240 +4 10000 5 1 total 0.001231 0.000105 +5 10000 6 1 total 0.000512 0.000044 + material delayedgroup group in nuclide mean std. dev. +0 10001 1 1 total 0 0 +1 10001 2 1 total 0 0 +2 10001 3 1 total 0 0 +3 10001 4 1 total 0 0 +4 10001 5 1 total 0 0 +5 10001 6 1 total 0 0 + material delayedgroup group out nuclide mean std. dev. +0 10001 1 1 total 0 0 +1 10001 2 1 total 0 0 +2 10001 3 1 total 0 0 +3 10001 4 1 total 0 0 +4 10001 5 1 total 0 0 +5 10001 6 1 total 0 0 + material delayedgroup group in nuclide mean std. dev. +0 10001 1 1 total 0 0 +1 10001 2 1 total 0 0 +2 10001 3 1 total 0 0 +3 10001 4 1 total 0 0 +4 10001 5 1 total 0 0 +5 10001 6 1 total 0 0 + material delayedgroup group in nuclide mean std. dev. +0 10002 1 1 total 0 0 +1 10002 2 1 total 0 0 +2 10002 3 1 total 0 0 +3 10002 4 1 total 0 0 +4 10002 5 1 total 0 0 +5 10002 6 1 total 0 0 + material delayedgroup group out nuclide mean std. dev. +0 10002 1 1 total 0 0 +1 10002 2 1 total 0 0 +2 10002 3 1 total 0 0 +3 10002 4 1 total 0 0 +4 10002 5 1 total 0 0 +5 10002 6 1 total 0 0 + material delayedgroup group in nuclide mean std. dev. +0 10002 1 1 total 0 0 +1 10002 2 1 total 0 0 +2 10002 3 1 total 0 0 +3 10002 4 1 total 0 0 +4 10002 5 1 total 0 0 +5 10002 6 1 total 0 0 diff --git a/tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py b/tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py new file mode 100644 index 0000000000..75e40be909 --- /dev/null +++ b/tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +from input_set import PinCellInputSet +import openmc +import openmc.mgxs + + +class MDGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Set the input set to use the pincell model + self._input_set = PinCellInputSet() + + # Generate inputs using parent class routine + super(MDGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, + 20.]) + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) + self.mgxs_lib.by_nuclide = False + + # Test all MGXS types + self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.Tallies() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=False): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a condensed 1-group MGXS Library + one_group = openmc.mgxs.EnergyGroups([0., 20.]) + condense_lib = self.mgxs_lib.get_condensed_library(one_group) + + # Build a string from Pandas Dataframe for each 1-group MGXS + outstr = '' + for domain in condense_lib.domains: + for mgxs_type in condense_lib.mgxs_types: + mgxs = condense_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + '\n' + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MDGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MDGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mdgxs_library_distribcell/inputs_true.dat b/tests/test_mdgxs_library_distribcell/inputs_true.dat new file mode 100644 index 0000000000..9b07e293ee --- /dev/null +++ b/tests/test_mdgxs_library_distribcell/inputs_true.dat @@ -0,0 +1 @@ +2d7ef183881fb47ba66ac4ff60a4e510f7b85361aca6dbbe6df2dc89b8492ad3bacbde747803532670bf207ec586dab910448fc1e49f2e57a3bf93256d24442c \ No newline at end of file diff --git a/tests/test_mdgxs_library_distribcell/results_true.dat b/tests/test_mdgxs_library_distribcell/results_true.dat new file mode 100644 index 0000000000..22aeef3967 --- /dev/null +++ b/tests/test_mdgxs_library_distribcell/results_true.dat @@ -0,0 +1,21 @@ + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0 0 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0 0 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0 0 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0 0 +4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0 0 +5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0 0 + avg(distribcell) delayedgroup group out nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0 0 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0 0 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0 0 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0 0 +4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0 0 +5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0 0 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0 0 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0 0 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0 0 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0 0 +4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0 0 +5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0 0 diff --git a/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py b/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py new file mode 100644 index 0000000000..48b3758715 --- /dev/null +++ b/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MDGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Generate inputs using parent class routine + super(MDGXSTestHarness, self)._build_inputs() + + # Initialize a one-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) + + # Initialize a six-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + + # Initialize MGXS Library for a few cross section types + # for one material-filled cell in the geometry + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) + self.mgxs_lib.by_nuclide = False + + # Test all MDGXS types + self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups + self.mgxs_lib.domain_type = 'distribcell' + material_cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() + self.mgxs_lib.domains = [material_cells[-1]] + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.Tallies() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=False): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Average the MGXS across distribcell subdomains + avg_lib = self.mgxs_lib.get_subdomain_avg_library() + + # Build a string from Pandas Dataframe for each 1-group MGXS + outstr = '' + for domain in avg_lib.domains: + for mgxs_type in avg_lib.mgxs_types: + mgxs = avg_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + '\n' + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + def _cleanup(self): + super(MDGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MDGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mdgxs_library_hdf5/inputs_true.dat b/tests/test_mdgxs_library_hdf5/inputs_true.dat new file mode 100644 index 0000000000..49fe693ee4 --- /dev/null +++ b/tests/test_mdgxs_library_hdf5/inputs_true.dat @@ -0,0 +1 @@ +9e8d8b468bdd81d996956d0d43eef5779b7b7d5ca3f6a1e628f10318748086183e45cf221edf7a274ff2dc6aff34f4411e21952740cdb7652477dfa0a1ffb5f2 \ No newline at end of file diff --git a/tests/test_mdgxs_library_hdf5/results_true.dat b/tests/test_mdgxs_library_hdf5/results_true.dat new file mode 100644 index 0000000000..d1b6358716 --- /dev/null +++ b/tests/test_mdgxs_library_hdf5/results_true.dat @@ -0,0 +1,117 @@ +domain=10000 type=delayed-nu-fission +[[ 2.29808234e-05 1.06974158e-04] + [ 1.43606337e-04 5.52167907e-04] + [ 1.51382216e-04 5.27147681e-04] + [ 7.42603178e-05 2.22018043e-04] + [ 4.14908454e-05 9.10244403e-05] + [ 1.70016000e-05 3.81298119e-05]] +[[ 1.66363133e-06 9.49156242e-06] + [ 1.05907806e-05 4.89925426e-05] + [ 1.12671238e-05 4.67725567e-05] + [ 5.22610273e-06 1.87563195e-05] + [ 2.99830766e-06 7.68984041e-06] + [ 1.22654684e-06 3.22124663e-06]] +domain=10000 type=chi-delayed +[[ 0. 0.] + [ 1. 0.] + [ 1. 0.] + [ 1. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0. ] + [ 0.86912776 0. ] + [ 1.41421356 0. ] + [ 0.36035904 0. ] + [ 0. 0. ] + [ 0. 0. ]] +domain=10000 type=beta +[[ 4.89188107e-05 2.27713711e-04] + [ 3.05691886e-04 1.17538858e-03] + [ 3.22244241e-04 1.12212853e-03] + [ 3.82159891e-03 1.14255357e-02] + [ 2.13520995e-03 4.68431744e-03] + [ 8.74939644e-04 1.96224379e-03]] +[[ 4.67388620e-06 2.46946810e-05] + [ 2.95223877e-05 1.27466393e-04] + [ 3.12885004e-05 1.21690543e-04] + [ 3.21434855e-04 1.09939816e-03] + [ 1.82980497e-04 4.50738567e-04] + [ 7.48899920e-05 1.88812772e-04]] +domain=10001 type=delayed-nu-fission +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10001 type=chi-delayed +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10001 type=beta +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10002 type=delayed-nu-fission +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10002 type=chi-delayed +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10002 type=beta +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] diff --git a/tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py b/tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py new file mode 100644 index 0000000000..79e0edf7c2 --- /dev/null +++ b/tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +import h5py +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +from input_set import PinCellInputSet +import openmc +import openmc.mgxs + + +class MDGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Set the input set to use the pincell model + self._input_set = PinCellInputSet() + + # Generate inputs using parent class routine + super(MDGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, + 20.]) + + # Initialize a six-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) + self.mgxs_lib.by_nuclide = False + + # Test all MDGXS types + self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.Tallies() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=False): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Export the MGXS Library to an HDF5 file + self.mgxs_lib.build_hdf5_store(directory='.') + + # Open the MGXS HDF5 file + f = h5py.File('mgxs.h5', 'r') + + # Build a string from the datasets in the HDF5 file + outstr = '' + for domain in self.mgxs_lib.domains: + for mgxs_type in self.mgxs_lib.mgxs_types: + outstr += 'domain={0} type={1}\n'.format(domain.id, mgxs_type) + key = 'material/{0}/{1}/average'.format(domain.id, mgxs_type) + outstr += str(f[key][...]) + '\n' + key = 'material/{0}/{1}/std. dev.'.format(domain.id, mgxs_type) + outstr += str(f[key][...]) + '\n' + + # Close the MGXS HDF5 file + f.close() + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + def _cleanup(self): + super(MDGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + f = os.path.join(os.getcwd(), 'mgxs.h5') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MDGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mdgxs_library_mesh/inputs_true.dat b/tests/test_mdgxs_library_mesh/inputs_true.dat new file mode 100644 index 0000000000..02a9147f88 --- /dev/null +++ b/tests/test_mdgxs_library_mesh/inputs_true.dat @@ -0,0 +1 @@ +f76b5d0cc2dbadd48d51918d8c82e4457e9ce3eafb191cd51394e420ba3ae80eccdff03098b276f7d3eb87f6a4616f1dd0e39e1892244a29d0f486ff2bf4ddbb \ No newline at end of file diff --git a/tests/test_mdgxs_library_mesh/results_true.dat b/tests/test_mdgxs_library_mesh/results_true.dat new file mode 100644 index 0000000000..82f8014f90 --- /dev/null +++ b/tests/test_mdgxs_library_mesh/results_true.dat @@ -0,0 +1,78 @@ + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.000004 4.432287e-07 +1 1 1 1 2 1 total 0.000026 2.652890e-06 +2 1 1 1 3 1 total 0.000024 2.402024e-06 +3 1 1 1 4 1 total 0.000054 5.463683e-06 +4 1 1 1 5 1 total 0.000026 2.662762e-06 +5 1 1 1 6 1 total 0.000010 1.037947e-06 +6 1 2 1 1 1 total 0.000005 1.099501e-06 +7 1 2 1 2 1 total 0.000029 6.440339e-06 +8 1 2 1 3 1 total 0.000027 5.929275e-06 +9 1 2 1 4 1 total 0.000061 1.359998e-05 +10 1 2 1 5 1 total 0.000029 6.491514e-06 +11 1 2 1 6 1 total 0.000011 2.575232e-06 +12 2 1 1 1 1 total 0.000004 6.988358e-07 +13 2 1 1 2 1 total 0.000023 4.116310e-06 +14 2 1 1 3 1 total 0.000021 3.817611e-06 +15 2 1 1 4 1 total 0.000049 8.889347e-06 +16 2 1 1 5 1 total 0.000024 4.380665e-06 +17 2 1 1 6 1 total 0.000009 1.746558e-06 +18 2 2 1 1 1 total 0.000004 1.661116e-06 +19 2 2 1 2 1 total 0.000025 9.704053e-06 +20 2 2 1 3 1 total 0.000023 9.007295e-06 +21 2 2 1 4 1 total 0.000054 2.084505e-05 +22 2 2 1 5 1 total 0.000026 9.981347e-06 +23 2 2 1 6 1 total 0.000010 3.988280e-06 + mesh 1 delayedgroup group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0 0.000000 +1 1 1 1 2 1 total 0 0.000000 +2 1 1 1 3 1 total 0 0.000000 +3 1 1 1 4 1 total 1 1.414214 +4 1 1 1 5 1 total 0 0.000000 +5 1 1 1 6 1 total 0 0.000000 +6 1 2 1 1 1 total 0 0.000000 +7 1 2 1 2 1 total 0 0.000000 +8 1 2 1 3 1 total 0 0.000000 +9 1 2 1 4 1 total 0 0.000000 +10 1 2 1 5 1 total 0 0.000000 +11 1 2 1 6 1 total 0 0.000000 +12 2 1 1 1 1 total 0 0.000000 +13 2 1 1 2 1 total 0 0.000000 +14 2 1 1 3 1 total 0 0.000000 +15 2 1 1 4 1 total 0 0.000000 +16 2 1 1 5 1 total 0 0.000000 +17 2 1 1 6 1 total 0 0.000000 +18 2 2 1 1 1 total 0 0.000000 +19 2 2 1 2 1 total 0 0.000000 +20 2 2 1 3 1 total 0 0.000000 +21 2 2 1 4 1 total 0 0.000000 +22 2 2 1 5 1 total 0 0.000000 +23 2 2 1 6 1 total 0 0.000000 + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.000166 0.000023 +1 1 1 1 2 1 total 0.000990 0.000136 +2 1 1 1 3 1 total 0.000907 0.000123 +3 1 1 1 4 1 total 0.002088 0.000282 +4 1 1 1 5 1 total 0.001014 0.000137 +5 1 1 1 6 1 total 0.000400 0.000054 +6 1 2 1 1 1 total 0.000171 0.000039 +7 1 2 1 2 1 total 0.001003 0.000226 +8 1 2 1 3 1 total 0.000919 0.000208 +9 1 2 1 4 1 total 0.002101 0.000478 +10 1 2 1 5 1 total 0.000997 0.000228 +11 1 2 1 6 1 total 0.000395 0.000090 +12 2 1 1 1 1 total 0.000168 0.000030 +13 2 1 1 2 1 total 0.001003 0.000178 +14 2 1 1 3 1 total 0.000927 0.000165 +15 2 1 1 4 1 total 0.002150 0.000385 +16 2 1 1 5 1 total 0.001057 0.000190 +17 2 1 1 6 1 total 0.000418 0.000076 +18 2 2 1 1 1 total 0.000171 0.000082 +19 2 2 1 2 1 total 0.001010 0.000481 +20 2 2 1 3 1 total 0.000932 0.000445 +21 2 2 1 4 1 total 0.002151 0.001030 +22 2 2 1 5 1 total 0.001030 0.000493 +23 2 2 1 6 1 total 0.000410 0.000197 diff --git a/tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py b/tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py new file mode 100644 index 0000000000..88ee7213da --- /dev/null +++ b/tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MDGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Generate inputs using parent class routine + super(MDGXSTestHarness, self)._build_inputs() + + # Initialize a one-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) + + # Initialize a six-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + + # Initialize MGXS Library for a few cross section types + # for one material-filled cell in the geometry + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) + self.mgxs_lib.by_nuclide = False + + # Test all MDGXS types + self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups + self.mgxs_lib.domain_type = 'mesh' + + # Instantiate a tally mesh + mesh = openmc.Mesh(mesh_id=1) + mesh.type = 'regular' + mesh.dimension = [2, 2] + mesh.lower_left = [-100., -100.] + mesh.width = [100., 100.] + + self.mgxs_lib.domains = [mesh] + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.Tallies() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=False): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a string from Pandas Dataframe for each 1-group MGXS + outstr = '' + for domain in self.mgxs_lib.domains: + for mgxs_type in self.mgxs_lib.mgxs_types: + mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + '\n' + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + def _cleanup(self): + super(MDGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MDGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mdgxs_library_no_nuclides/inputs_true.dat b/tests/test_mdgxs_library_no_nuclides/inputs_true.dat new file mode 100644 index 0000000000..49fe693ee4 --- /dev/null +++ b/tests/test_mdgxs_library_no_nuclides/inputs_true.dat @@ -0,0 +1 @@ +9e8d8b468bdd81d996956d0d43eef5779b7b7d5ca3f6a1e628f10318748086183e45cf221edf7a274ff2dc6aff34f4411e21952740cdb7652477dfa0a1ffb5f2 \ No newline at end of file diff --git a/tests/test_mdgxs_library_no_nuclides/results_true.dat b/tests/test_mdgxs_library_no_nuclides/results_true.dat new file mode 100644 index 0000000000..e3afdcdb6d --- /dev/null +++ b/tests/test_mdgxs_library_no_nuclides/results_true.dat @@ -0,0 +1,117 @@ + material delayedgroup group in nuclide mean std. dev. +1 10000 1 1 total 0.000023 0.000002 +3 10000 2 1 total 0.000144 0.000011 +5 10000 3 1 total 0.000151 0.000011 +7 10000 4 1 total 0.000074 0.000005 +9 10000 5 1 total 0.000041 0.000003 +11 10000 6 1 total 0.000017 0.000001 +0 10000 1 2 total 0.000107 0.000009 +2 10000 2 2 total 0.000552 0.000049 +4 10000 3 2 total 0.000527 0.000047 +6 10000 4 2 total 0.000222 0.000019 +8 10000 5 2 total 0.000091 0.000008 +10 10000 6 2 total 0.000038 0.000003 + material delayedgroup group out nuclide mean std. dev. +1 10000 1 1 total 0 0.000000 +3 10000 2 1 total 1 0.869128 +5 10000 3 1 total 1 1.414214 +7 10000 4 1 total 1 0.360359 +9 10000 5 1 total 0 0.000000 +11 10000 6 1 total 0 0.000000 +0 10000 1 2 total 0 0.000000 +2 10000 2 2 total 0 0.000000 +4 10000 3 2 total 0 0.000000 +6 10000 4 2 total 0 0.000000 +8 10000 5 2 total 0 0.000000 +10 10000 6 2 total 0 0.000000 + material delayedgroup group in nuclide mean std. dev. +1 10000 1 1 total 0.000049 0.000005 +3 10000 2 1 total 0.000306 0.000030 +5 10000 3 1 total 0.000322 0.000031 +7 10000 4 1 total 0.003822 0.000321 +9 10000 5 1 total 0.002135 0.000183 +11 10000 6 1 total 0.000875 0.000075 +0 10000 1 2 total 0.000228 0.000025 +2 10000 2 2 total 0.001175 0.000127 +4 10000 3 2 total 0.001122 0.000122 +6 10000 4 2 total 0.011426 0.001099 +8 10000 5 2 total 0.004684 0.000451 +10 10000 6 2 total 0.001962 0.000189 + material delayedgroup group in nuclide mean std. dev. +1 10001 1 1 total 0 0 +3 10001 2 1 total 0 0 +5 10001 3 1 total 0 0 +7 10001 4 1 total 0 0 +9 10001 5 1 total 0 0 +11 10001 6 1 total 0 0 +0 10001 1 2 total 0 0 +2 10001 2 2 total 0 0 +4 10001 3 2 total 0 0 +6 10001 4 2 total 0 0 +8 10001 5 2 total 0 0 +10 10001 6 2 total 0 0 + material delayedgroup group out nuclide mean std. dev. +1 10001 1 1 total 0 0 +3 10001 2 1 total 0 0 +5 10001 3 1 total 0 0 +7 10001 4 1 total 0 0 +9 10001 5 1 total 0 0 +11 10001 6 1 total 0 0 +0 10001 1 2 total 0 0 +2 10001 2 2 total 0 0 +4 10001 3 2 total 0 0 +6 10001 4 2 total 0 0 +8 10001 5 2 total 0 0 +10 10001 6 2 total 0 0 + material delayedgroup group in nuclide mean std. dev. +1 10001 1 1 total 0 0 +3 10001 2 1 total 0 0 +5 10001 3 1 total 0 0 +7 10001 4 1 total 0 0 +9 10001 5 1 total 0 0 +11 10001 6 1 total 0 0 +0 10001 1 2 total 0 0 +2 10001 2 2 total 0 0 +4 10001 3 2 total 0 0 +6 10001 4 2 total 0 0 +8 10001 5 2 total 0 0 +10 10001 6 2 total 0 0 + material delayedgroup group in nuclide mean std. dev. +1 10002 1 1 total 0 0 +3 10002 2 1 total 0 0 +5 10002 3 1 total 0 0 +7 10002 4 1 total 0 0 +9 10002 5 1 total 0 0 +11 10002 6 1 total 0 0 +0 10002 1 2 total 0 0 +2 10002 2 2 total 0 0 +4 10002 3 2 total 0 0 +6 10002 4 2 total 0 0 +8 10002 5 2 total 0 0 +10 10002 6 2 total 0 0 + material delayedgroup group out nuclide mean std. dev. +1 10002 1 1 total 0 0 +3 10002 2 1 total 0 0 +5 10002 3 1 total 0 0 +7 10002 4 1 total 0 0 +9 10002 5 1 total 0 0 +11 10002 6 1 total 0 0 +0 10002 1 2 total 0 0 +2 10002 2 2 total 0 0 +4 10002 3 2 total 0 0 +6 10002 4 2 total 0 0 +8 10002 5 2 total 0 0 +10 10002 6 2 total 0 0 + material delayedgroup group in nuclide mean std. dev. +1 10002 1 1 total 0 0 +3 10002 2 1 total 0 0 +5 10002 3 1 total 0 0 +7 10002 4 1 total 0 0 +9 10002 5 1 total 0 0 +11 10002 6 1 total 0 0 +0 10002 1 2 total 0 0 +2 10002 2 2 total 0 0 +4 10002 3 2 total 0 0 +6 10002 4 2 total 0 0 +8 10002 5 2 total 0 0 +10 10002 6 2 total 0 0 diff --git a/tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py b/tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py new file mode 100644 index 0000000000..6ee8e9adbe --- /dev/null +++ b/tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +from input_set import PinCellInputSet +import openmc +import openmc.mgxs + + +class MDGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Set the input set to use the pincell model + self._input_set = PinCellInputSet() + + # Generate inputs using parent class routine + super(MDGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, + 20.]) + + # Initialize a six-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) + self.mgxs_lib.by_nuclide = False + + # Test all MDGXS types + self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.Tallies() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=False): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a string from Pandas Dataframe for each MGXS + outstr = '' + for domain in self.mgxs_lib.domains: + for mgxs_type in self.mgxs_lib.mgxs_types: + mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + '\n' + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MDGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MDGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mdgxs_library_nuclides/inputs_true.dat b/tests/test_mdgxs_library_nuclides/inputs_true.dat new file mode 100644 index 0000000000..af136e1ec0 --- /dev/null +++ b/tests/test_mdgxs_library_nuclides/inputs_true.dat @@ -0,0 +1 @@ +1cf1a4e8f46f3a5e4bb2824b8b3e4f4af5b43f12e0025ef98f7f54e3212305d8ec4334b3dffeab0e0df94de2eedae2d4aa4d0f15649129264a1cc3e3f9d08b58 \ No newline at end of file diff --git a/tests/test_mdgxs_library_nuclides/results_true.dat b/tests/test_mdgxs_library_nuclides/results_true.dat new file mode 100644 index 0000000000..d8cb494c74 --- /dev/null +++ b/tests/test_mdgxs_library_nuclides/results_true.dat @@ -0,0 +1 @@ +7a6b9ba8f6289f1dac2d474f88003561a0179b45db58eedd671583eced3952f9ed708c1e35248351e469d511a6d99d33e02a9ba5135a0123f7f9c474c4e55a68 \ No newline at end of file diff --git a/tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py b/tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py new file mode 100644 index 0000000000..4e67c23c7f --- /dev/null +++ b/tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +from input_set import PinCellInputSet +import openmc +import openmc.mgxs + + +class MDGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Set the input set to use the pincell model + self._input_set = PinCellInputSet() + + # Generate inputs using parent class routine + super(MDGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, + 20.]) + + # Initialize a six-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) + self.mgxs_lib.by_nuclide = True + + # Test all MDGXS types + self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.Tallies() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=True): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a string from Pandas Dataframe for each MGXS + outstr = '' + for domain in self.mgxs_lib.domains: + for mgxs_type in self.mgxs_lib.mgxs_types: + mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + '\n' + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MDGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MDGXSTestHarness('statepoint.10.*', True) + harness.main() From c23c1cabfbb8c726ee0b4bd01bb7e74e679edcd0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Wed, 3 Aug 2016 00:13:51 -0400 Subject: [PATCH 17/49] added second mdgxs ipython notebook --- .../pythonapi/examples/mdgxs-part-i.ipynb | 24 +- .../pythonapi/examples/mdgxs-part-ii.ipynb | 1395 +++++++++++++++++ docs/source/pythonapi/index.rst | 23 + 3 files changed, 1430 insertions(+), 12 deletions(-) create mode 100644 docs/source/pythonapi/examples/mdgxs-part-ii.ipynb diff --git a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb index b15ace9519..03bf15897e 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb @@ -23,7 +23,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Many Monte Carlo particle transport codes, including OpenMC, use continuous-energy nuclear cross section data. However, most deterministic neutron transport codes use *multi-group cross sections* defined over discretized energy bins or *energy groups*. Furthermore, kinetics calculations typically separate out parameters that involve delayed neutrons by delayed groups. An example is the energy spectrum for prompt and delayed neutrons for U-235 and Pu-239 computed for a light water reactor spectrum." + "Many Monte Carlo particle transport codes, including OpenMC, use continuous-energy nuclear cross section data. However, most deterministic neutron transport codes use *multi-group cross sections* defined over discretized energy bins or *energy groups*. Furthermore, kinetics calculations typically separate out parameters that involve delayed neutrons into prompt and delayed components and further subdivide delayed components by delayed groups. An example is the energy spectrum for prompt and delayed neutrons for U-235 and Pu-239 computed for a light water reactor spectrum." ] }, { @@ -78,7 +78,7 @@ "### Spatial and Energy Discretization\n", "The energy domain for critical systems such as thermal reactors spans more than 10 orders of magnitude of neutron energies from 10$^{-5}$ - 10$^7$ eV. The multi-group approximation discretization divides this energy range into one or more energy groups. In particular, for $G$ total groups, we denote an energy group index $g$ such that $g \\in \\{1, 2, ..., G\\}$. The energy group indices are defined such that the smaller group the higher the energy, and vice versa. The integration over neutron energies across a discrete energy group is commonly referred to as **energy condensation**.\n", "\n", - "The delayed neutrons created from fissions are created from > 30 delayed neutron precursors. Modeling each of the delayed neutron precursors is possible, but this approach has not recieved much attention due to large uncertainties in certain precursors. Therefore, the delayed neutrons are often combined into \"delayed groups\" that have a set time constant, $\\lambda_d$. Some cross section libraries use the same group time constants for all nuclides (e.g. JEFF 3.2) while other libraries use different time constants for all nuclides (e.g. ENDF/B-VII.1). Multi-delayed-group cross sections can either be created with the entire delayed group set, a subset of delayed groups, or integrated over all delayed groups.\n", + "The delayed neutrons created from fissions are created from > 30 delayed neutron precursors. Modeling each of the delayed neutron precursors is possible, but this approach has not recieved much attention due to large uncertainties in certain precursors. Therefore, the delayed neutrons are often combined into \"delayed groups\" that have a set time constant, $\\lambda_d$. Some cross section libraries use the same group time constants for all nuclides (e.g. JEFF 3.1) while other libraries use different time constants for all nuclides (e.g. ENDF/B-VII.1). Multi-delayed-group cross sections can either be created with the entire delayed group set, a subset of delayed groups, or integrated over all delayed groups.\n", "\n", "Multi-group cross sections are computed for discretized spatial zones in the geometry of interest. The spatial zones may be defined on a structured and regular fuel assembly or pin cell mesh, an arbitrary unstructured mesh or the constructive solid geometry used by OpenMC. For a geometry with $K$ distinct spatial zones, we designate each spatial zone an index $k$ such that $k \\in \\{1, 2, ..., K\\}$. The volume of each spatial zone is denoted by $V_{k}$. The integration over discrete spatial zones is commonly referred to as **spatial homogenization**." ] @@ -92,7 +92,7 @@ "\n", "$$\\nu_d \\sigma_{n,x,k,g} = \\frac{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r} \\nu_d \\sigma_{f,x}(\\mathbf{r},E')\\Phi(\\mathbf{r},E')}{\\int_{E_{g}}^{E_{g-1}}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r}\\Phi(\\mathbf{r},E')}$$\n", "\n", - "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for only the delayed-nu-fission and delayed neutron fraction reaction type at the oment. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell, universe, or mesh) define the bounds of integration for both numerator and denominator." + "This scalar flux-weighted average microscopic cross section is computed by `openmc.mgxs` for only the delayed-nu-fission and delayed neutron fraction reaction type at the moment. These double integrals are stochastically computed with OpenMC's tally system - in particular, [filters](https://mit-crpg.github.io/openmc/pythonapi/filter.html) on the energy range and spatial zone (material, cell, universe, or mesh) define the bounds of integration for both numerator and denominator." ] }, { @@ -102,7 +102,7 @@ "### Multi-Group Prompt and Delayed Fission Spectrum\n", "The energy spectrum of neutrons emitted from fission is denoted by $\\chi_{n}(\\mathbf{r},E' \\rightarrow E'')$ for incoming and outgoing energies $E'$ and $E''$, respectively. Unlike the multi-group cross sections $\\sigma_{n,x,k,g}$ considered up to this point, the fission spectrum is a probability distribution and must sum to unity. The outgoing energy is typically much less dependent on the incoming energy for fission than for scattering interactions. As a result, it is common practice to integrate over the incoming neutron energy when computing the multi-group fission spectrum. The fission spectrum may be simplified as $\\chi_{n}(\\mathbf{r},E)$ with outgoing energy $E$.\n", "\n", - "Computing the cumulative energy spectrum of emitted neutrons, $\\chi_{n}(\\mathbf{r},E)$, has been presented in the `mgxs-part-i.ipynb` notebook. Here, we will present the energy spectrum of prompt and delayed emission neutrons, $\\chi_{n,p}(\\mathbf{r},E)$ and $\\chi_{n,d}(\\mathbf{r},E)$, respectively. Unlike the multi-group cross sections defined up to this point, the multi-group fission spectrum is weighted by the fission production rate rather than the scalar flux. This formulation is intended to preserve the total fission production rate in the multi-group deterministic calculation. In order to mathematically define the multi-group fission spectrum, we denote the microscopic fission cross section as $\\sigma_{n,f}(\\mathbf{r},E)$ and the average number of neutrons emitted from fission interactions with nuclide $n$ as $\\nu_{n,p}(\\mathbf{r},E)$ and $\\nu_{n,d}(\\mathbf{r},E)$ for prompt and delayed neutrons, respectively. The multi-group fission spectrum $\\chi_{n,k,g,d}$ is then the probability of fission neutrons emitted into energy group $g$. \n", + "Computing the cumulative energy spectrum of emitted neutrons, $\\chi_{n}(\\mathbf{r},E)$, has been presented in the `mgxs-part-i.ipynb` notebook. Here, we will present the energy spectrum of prompt and delayed emission neutrons, $\\chi_{n,p}(\\mathbf{r},E)$ and $\\chi_{n,d}(\\mathbf{r},E)$, respectively. Unlike the multi-group cross sections defined up to this point, the multi-group fission spectrum is weighted by the fission production rate rather than the scalar flux. This formulation is intended to preserve the total fission production rate in the multi-group deterministic calculation. In order to mathematically define the multi-group fission spectrum, we denote the microscopic fission cross section as $\\sigma_{n,f}(\\mathbf{r},E)$ and the average number of neutrons emitted from fission interactions with nuclide $n$ as $\\nu_{n,p}(\\mathbf{r},E)$ and $\\nu_{n,d}(\\mathbf{r},E)$ for prompt and delayed neutrons, respectively. The multi-group fission spectrum $\\chi_{n,k,g,d}$ is then the probability of fission neutrons emitted into energy group $g$ and delayed group $d$. There are not prompt groups, so inserting $p$ in place of $d$ just denotes all prompt neutrons. \n", "\n", "Similar to before, spatial homogenization and energy condensation are used to find the multi-energy-group and multi-delayed-group fission spectrum $\\chi_{n,k,g,d}$ as follows:\n", "\n", @@ -337,7 +337,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are ready to generate multi-group cross sections! First, let's define a 2-energy-group structure using the built-in `EnergyGroups` class. We will also create a 6-delayed-group structure using the built-in `DelayedGroups` class." + "Now we are ready to generate multi-group cross sections! First, let's define a 100-energy-group structure and 1-energy-group structure using the built-in `EnergyGroups` class. We will also create a 6-delayed-group structure using the built-in `DelayedGroups` class." ] }, { @@ -389,7 +389,7 @@ "* `ChiDelayed`\n", "* `Beta`\n", "\n", - "These classes provide us with an interface to generate the tally inputs as well as perform post-processing of OpenMC's tally data to compute the respective multi-group cross sections. In this case, let's create the multi-group chi-prompt and prompt-nu-fission cross sections with our 2-energy-group structure and multi-group chi-delayed, delayed-nu-fission, and beta cross sections with our 2-energy-group and 6-delayed-group structures. " + "These classes provide us with an interface to generate the tally inputs as well as perform post-processing of OpenMC's tally data to compute the respective multi-group cross sections. In this case, let's create the multi-group chi-prompt, chi-delayed, and prompt-nu-fission cross sections with our 100-energy-group structure and multi-group delayed-nu-fission and beta cross sections with our 100-energy-group and 6-delayed-group structures. " ] }, { @@ -402,7 +402,7 @@ "source": [ "# Instantiate a few different sections\n", "chi_prompt = mgxs.ChiPrompt(domain=cell, groups=energy_groups, by_nuclide=True)\n", - "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=cell, groups=one_group, by_nuclide=True)\n", + "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=cell, groups=energy_groups, by_nuclide=True)\n", "chi_delayed = mgxs.ChiDelayed(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", "delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", "beta = mgxs.Beta(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", @@ -514,7 +514,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `Beta` object includes tracklength tallies for the 'nu-fission' and 'delayed-nu-fission' scores in the 2-energy-group and 6-delayed-group structure in cell 1. Now that each `MGXS` and `MDGXS` object contains the tallies that it needs, we must add these tallies to a `Tallies` object to generate the \"tallies.xml\" input file for OpenMC." + "The `Beta` object includes tracklength tallies for the 'nu-fission' and 'delayed-nu-fission' scores in the 100-energy-group and 6-delayed-group structure in cell 1. Now that each `MGXS` and `MDGXS` object contains the tallies that it needs, we must add these tallies to a `Tallies` object to generate the \"tallies.xml\" input file for OpenMC." ] }, { @@ -784,7 +784,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's first inspect our delayed-nu-fission section by printing it to the screen." + "Let's first inspect our delayed-nu-fission section by printing it to the screen after condensing the cross section down to one group." ] }, { @@ -1043,7 +1043,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The following code snippet shows how to export the chi `MGXS` to the same HDF5 binary data store." + "The following code snippet shows how to export the chi-prompt and chi-delayed `MGXS` to the same HDF5 binary data store." ] }, { @@ -1248,7 +1248,7 @@ } ], "source": [ - "# Set the time constants for the delayed precursors (in seconds^-1)\n", + "# Set the time constants for the delayed precursors (in seconds^-1) using some ficticious time constant data.\n", "precursor_halflife = np.array([55.6, 24.5, 16.3, 2.37, 0.424, 0.195])\n", "precursor_lambda = -np.log(0.5) / precursor_halflife\n", "\n", @@ -1349,7 +1349,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can also plot the fission spectrum for the prompt and delayed neutrons." + "We can also plot the energy spectrum for fission emission of prompt and delayed neutrons." ] }, { diff --git a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb new file mode 100644 index 0000000000..bb740b7bc3 --- /dev/null +++ b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb @@ -0,0 +1,1395 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This IPython Notebook illustrates the use of the **`openmc.mgxs.Library`** class. The `Library` class is designed to automate the calculation of multi-group cross sections for use cases with one or more domains, cross section types, and/or nuclides. In particular, this Notebook illustrates the following features:\n", + "\n", + "* Calculation of multi-energy-group and multi-delayed-group cross sections for a **fuel assembly**\n", + "* Automated creation, manipulation and storage of `MGXS` with **`openmc.mgxs.Library`**\n", + "* Steady-state pin-by-pin **delayed neutron fractions (beta)** for each delayed group.\n", + "* Generation of surface currents on the interfaces and surfaces of a Mesh." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Input Files" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "because the backend has already been chosen;\n", + "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", + "or matplotlib.backends is imported for the first time.\n", + "\n", + " warnings.warn(_use_error_msg)\n" + ] + } + ], + "source": [ + "import math\n", + "import pickle\n", + "\n", + "from IPython.display import Image\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "import openmc\n", + "import openmc.mgxs\n", + "import openmoc\n", + "import openmoc.process\n", + "from openmoc.opencg_compatible import get_openmoc_geometry\n", + "from openmoc.materialize import load_openmc_mgxs_lib\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we need to define materials that will be used in the problem. Before defining a material, we must create nuclides that are used in the material." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate some Nuclides\n", + "h1 = openmc.Nuclide('H1')\n", + "b10 = openmc.Nuclide('B10')\n", + "o16 = openmc.Nuclide('O16')\n", + "u235 = openmc.Nuclide('U235')\n", + "u238 = openmc.Nuclide('U238')\n", + "zr90 = openmc.Nuclide('Zr90')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the nuclides we defined, we will now create three materials for the fuel, water, and cladding of the fuel pins." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 1.6 enriched fuel\n", + "fuel = openmc.Material(name='1.6% Fuel')\n", + "fuel.set_density('g/cm3', 10.31341)\n", + "fuel.add_nuclide(u235, 3.7503e-4)\n", + "fuel.add_nuclide(u238, 2.2625e-2)\n", + "fuel.add_nuclide(o16, 4.6007e-2)\n", + "\n", + "# borated water\n", + "water = openmc.Material(name='Borated Water')\n", + "water.set_density('g/cm3', 0.740582)\n", + "water.add_nuclide(h1, 4.9457e-2)\n", + "water.add_nuclide(o16, 2.4732e-2)\n", + "water.add_nuclide(b10, 8.0042e-6)\n", + "\n", + "# zircaloy\n", + "zircaloy = openmc.Material(name='Zircaloy')\n", + "zircaloy.set_density('g/cm3', 6.55)\n", + "zircaloy.add_nuclide(zr90, 7.2758e-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With our three materials, we can now create a `Materials` object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a Materials object\n", + "materials_file = openmc.Materials((fuel, water, zircaloy))\n", + "materials_file.default_xs = '71c'\n", + "\n", + "# Export to \"materials.xml\"\n", + "materials_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's move on to the geometry. This problem will be a square array of fuel pins and control rod guide tubes for which we can use OpenMC's lattice/universe feature. The basic universe will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces for fuel and clad, as well as the outer bounding surfaces of the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create cylinders for the fuel and clad\n", + "fuel_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218)\n", + "clad_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720)\n", + "\n", + "# Create boundary planes to surround the geometry\n", + "min_x = openmc.XPlane(x0=-10.71, boundary_type='reflective')\n", + "max_x = openmc.XPlane(x0=+10.71, boundary_type='reflective')\n", + "min_y = openmc.YPlane(y0=-10.71, boundary_type='reflective')\n", + "max_y = openmc.YPlane(y0=+10.71, boundary_type='reflective')\n", + "min_z = openmc.ZPlane(z0=-10., boundary_type='reflective')\n", + "max_z = openmc.ZPlane(z0=+10., boundary_type='reflective')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now construct a fuel pin cell from cells that are defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create a Universe to encapsulate a fuel pin\n", + "fuel_pin_universe = openmc.Universe(name='1.6% Fuel Pin')\n", + "\n", + "# Create fuel Cell\n", + "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", + "fuel_cell.fill = fuel\n", + "fuel_cell.region = -fuel_outer_radius\n", + "fuel_pin_universe.add_cell(fuel_cell)\n", + "\n", + "# Create a clad Cell\n", + "clad_cell = openmc.Cell(name='1.6% Clad')\n", + "clad_cell.fill = zircaloy\n", + "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", + "fuel_pin_universe.add_cell(clad_cell)\n", + "\n", + "# Create a moderator Cell\n", + "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", + "moderator_cell.fill = water\n", + "moderator_cell.region = +clad_outer_radius\n", + "fuel_pin_universe.add_cell(moderator_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Likewise, we can construct a control rod guide tube with the same surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create a Universe to encapsulate a control rod guide tube\n", + "guide_tube_universe = openmc.Universe(name='Guide Tube')\n", + "\n", + "# Create guide tube Cell\n", + "guide_tube_cell = openmc.Cell(name='Guide Tube Water')\n", + "guide_tube_cell.fill = water\n", + "guide_tube_cell.region = -fuel_outer_radius\n", + "guide_tube_universe.add_cell(guide_tube_cell)\n", + "\n", + "# Create a clad Cell\n", + "clad_cell = openmc.Cell(name='Guide Clad')\n", + "clad_cell.fill = zircaloy\n", + "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", + "guide_tube_universe.add_cell(clad_cell)\n", + "\n", + "# Create a moderator Cell\n", + "moderator_cell = openmc.Cell(name='Guide Tube Moderator')\n", + "moderator_cell.fill = water\n", + "moderator_cell.region = +clad_outer_radius\n", + "guide_tube_universe.add_cell(moderator_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the pin cell universe, we can construct a 17x17 rectangular lattice with a 1.26 cm pitch." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create fuel assembly Lattice\n", + "assembly = openmc.RectLattice(name='1.6% Fuel Assembly')\n", + "assembly.pitch = (1.26, 1.26)\n", + "assembly.lower_left = [-1.26 * 17. / 2.0] * 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we create a NumPy array of fuel pin and guide tube universes for the lattice." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create array indices for guide tube locations in lattice\n", + "template_x = np.array([5, 8, 11, 3, 13, 2, 5, 8, 11, 14, 2, 5, 8,\n", + " 11, 14, 2, 5, 8, 11, 14, 3, 13, 5, 8, 11])\n", + "template_y = np.array([2, 2, 2, 3, 3, 5, 5, 5, 5, 5, 8, 8, 8, 8,\n", + " 8, 11, 11, 11, 11, 11, 13, 13, 14, 14, 14])\n", + "\n", + "# Initialize an empty 17x17 array of the lattice universes\n", + "universes = np.empty((17, 17), dtype=openmc.Universe)\n", + "\n", + "# Fill the array with the fuel pin and guide tube universes\n", + "universes[:,:] = fuel_pin_universe\n", + "universes[template_x, template_y] = guide_tube_universe\n", + "\n", + "# Store the array of universes in the lattice\n", + "assembly.universes = universes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "OpenMC requires that there is a \"root\" universe. Let us create a root cell that is filled by the pin cell universe and then assign it to the root universe." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create root Cell\n", + "root_cell = openmc.Cell(name='root cell')\n", + "root_cell.fill = assembly\n", + "\n", + "# Add boundary planes\n", + "root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n", + "\n", + "# Create root Universe\n", + "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", + "root_universe.add_cell(root_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now must create a geometry that is assigned a root universe and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "geometry = openmc.Geometry()\n", + "geometry.root_universe = root_universe" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Export to \"geometry.xml\"\n", + "geometry.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the geometry and materials finished, we now just need to define simulation parameters. In this case, we will use 10 inactive batches and 40 active batches each with 2500 particles." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# OpenMC simulation parameters\n", + "batches = 50\n", + "inactive = 10\n", + "particles = 2500\n", + "\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", + "settings_file.batches = batches\n", + "settings_file.inactive = inactive\n", + "settings_file.particles = particles\n", + "settings_file.output = {'tallies': False}\n", + "\n", + "# Create an initial uniform spatial source distribution over fissionable zones\n", + "bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n", + "uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n", + "settings_file.source = openmc.source.Source(space=uniform_dist)\n", + "\n", + "# Export to \"settings.xml\"\n", + "settings_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us also create a `Plots` file that we can use to verify that our fuel assembly geometry was created successfully." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a Plot\n", + "plot = openmc.Plot(plot_id=1)\n", + "plot.filename = 'materials-xy'\n", + "plot.origin = [0, 0, 0]\n", + "plot.pixels = [250, 250]\n", + "plot.width = [-10.71*2, -10.71*2]\n", + "plot.color = 'mat'\n", + "\n", + "# Instantiate a Plots object, add Plot, and export to \"plots.xml\"\n", + "plot_file = openmc.Plots([plot])\n", + "plot_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the plots.xml file, we can now generate and view the plot. OpenMC outputs plots in .ppm format, which can be converted into a compressed format like .png with the convert utility." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Run openmc in plotting mode\n", + "openmc.plot_geometry(output=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Convert OpenMC's funky ppm to png\n", + "!convert materials-xy.ppm materials-xy.png\n", + "\n", + "# Display the materials plot inline\n", + "Image(filename='materials-xy.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we can see from the plot, we have a nice array of fuel and guide tube pin cells with fuel, cladding, and water!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create an MGXS Library" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are ready to generate multi-group cross sections! First, let's define 20-energy-group, 1-energy-group, and 6-delayed-group structures using the built-in `EnergyGroups` and `DelayedGroups` classes." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a 20-group EnergyGroups object\n", + "energy_groups = openmc.mgxs.EnergyGroups()\n", + "energy_groups.group_edges = np.logspace(-9,1.3,21)\n", + "\n", + "# Instantiate a 1-group EnergyGroups object\n", + "one_group = openmc.mgxs.EnergyGroups()\n", + "one_group.group_edges = np.array([energy_groups.group_edges[0], energy_groups.group_edges[-1]])\n", + "\n", + "# Instantiate a 6-group DelayedGroups object\n", + "delayed_groups = openmc.mgxs.DelayedGroups()\n", + "delayed_groups.groups = range(1,7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we will instantiate an `openmc.mgxs.Library` for the energy and delayed groups with our the fuel assembly geometry." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a tally mesh \n", + "mesh = openmc.Mesh(mesh_id=1)\n", + "mesh.type = 'regular'\n", + "mesh.dimension = [17, 17, 1]\n", + "mesh.lower_left = [-10.71, -10.71, -10000.]\n", + "mesh.width = [1.26, 1.26, 20000.]\n", + "\n", + "# Initialize an 20-energy-group and 6-delayed-group MGXS Library\n", + "mgxs_lib = openmc.mgxs.Library(geometry)\n", + "mgxs_lib.energy_groups = energy_groups\n", + "mgxs_lib.delayed_groups = delayed_groups\n", + "\n", + "# Specify multi-group cross section types to compute\n", + "mgxs_lib.mgxs_types = ['total', 'transport', 'nu-scatter matrix', 'kappa-fission', 'inverse-velocity', 'chi-prompt',\n", + " 'prompt-nu-fission', 'chi-delayed', 'delayed-nu-fission', 'beta']\n", + "\n", + "# Specify a \"mesh\" domain type for the cross section tally filters\n", + "mgxs_lib.domain_type = 'mesh'\n", + "\n", + "# Specify the mesh domain over which to compute multi-group cross sections\n", + "mgxs_lib.domains = [mesh]\n", + "\n", + "# Construct all tallies needed for the multi-group cross section library\n", + "mgxs_lib.build_library()\n", + "\n", + "# Create a \"tallies.xml\" file for the MGXS Library\n", + "tallies_file = openmc.Tallies()\n", + "mgxs_lib.add_to_tallies_file(tallies_file, merge=True)\n", + "\n", + "# Instantiate a current tally\n", + "mesh_filter = openmc.Filter()\n", + "mesh_filter.mesh = mesh\n", + "current_tally = openmc.Tally(name='current tally')\n", + "current_tally.scores = ['current']\n", + "current_tally.filters = [mesh_filter]\n", + "\n", + "# Add current tally to the tallies file\n", + "tallies_file.append(current_tally)\n", + "\n", + "# Export to \"tallies.xml\"\n", + "tallies_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can run OpenMC to generate the cross sections." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " .d88888b. 888b d888 .d8888b.\n", + " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", + " 888 888 88888b.d88888 888 888\n", + " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", + " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", + " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", + " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", + " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", + "__________________888______________________________________________________\n", + " 888\n", + " 888\n", + "\n", + " Copyright: 2011-2016 Massachusetts Institute of Technology\n", + " License: http://openmc.readthedocs.io/en/latest/license.html\n", + " Version: 0.8.0\n", + " Git SHA1: e8819e6a77f2e998dcce937e80fbdd8dd430b667\n", + " Date/Time: 2016-08-03 00:11:15\n", + " MPI Processes: 4\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading geometry XML file...\n", + " Reading cross sections XML file...\n", + " Reading materials XML file...\n", + " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading tallies XML file...\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " Building neighboring cells lists for each surface...\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " WARNING: A delayedgroup filter was used on a total nuclide tally. Cross section\n", + " libraries are not guaranteed to have the same delayed group structure\n", + " across all isotopes. In particular, ENDF/B-VII.1 does not have a\n", + " consistent delayed group structure across all isotopes while the JEFF\n", + " 3.1.1 library has the same delayed group structure across all\n", + " isotopes. Use with caution!\n", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 1.03852 \n", + " 2/1 0.99743 \n", + " 3/1 1.02987 \n", + " 4/1 1.04472 \n", + " 5/1 1.02183 \n", + " 6/1 1.05263 \n", + " 7/1 0.99048 \n", + " 8/1 1.02753 \n", + " 9/1 1.03159 \n", + " 10/1 1.04005 \n", + " 11/1 1.05278 \n", + " 12/1 1.02555 1.03917 +/- 0.01362\n", + " 13/1 0.99400 1.02411 +/- 0.01699\n", + " 14/1 1.03508 1.02685 +/- 0.01232\n", + " 15/1 1.00055 1.02159 +/- 0.01090\n", + " 16/1 1.01334 1.02022 +/- 0.00900\n", + " 17/1 0.99822 1.01707 +/- 0.00823\n", + " 18/1 1.01767 1.01715 +/- 0.00713\n", + " 19/1 1.05052 1.02086 +/- 0.00730\n", + " 20/1 1.03133 1.02190 +/- 0.00661\n", + " 21/1 1.04112 1.02365 +/- 0.00623\n", + " 22/1 1.04175 1.02516 +/- 0.00588\n", + " 23/1 1.01909 1.02469 +/- 0.00543\n", + " 24/1 1.07119 1.02801 +/- 0.00603\n", + " 25/1 0.97414 1.02442 +/- 0.00666\n", + " 26/1 1.04709 1.02584 +/- 0.00639\n", + " 27/1 1.05872 1.02777 +/- 0.00631\n", + " 28/1 1.03930 1.02841 +/- 0.00598\n", + " 29/1 1.01488 1.02770 +/- 0.00570\n", + " 30/1 1.04513 1.02857 +/- 0.00548\n", + " 31/1 0.99538 1.02699 +/- 0.00545\n", + " 32/1 1.00106 1.02581 +/- 0.00532\n", + " 33/1 0.99389 1.02442 +/- 0.00527\n", + " 34/1 0.99938 1.02338 +/- 0.00516\n", + " 35/1 1.02161 1.02331 +/- 0.00495\n", + " 36/1 1.04084 1.02398 +/- 0.00480\n", + " 37/1 0.98801 1.02265 +/- 0.00481\n", + " 38/1 1.01348 1.02232 +/- 0.00464\n", + " 39/1 1.06693 1.02386 +/- 0.00474\n", + " 40/1 1.07729 1.02564 +/- 0.00491\n", + " 41/1 1.03191 1.02585 +/- 0.00475\n", + " 42/1 1.05209 1.02667 +/- 0.00468\n", + " 43/1 1.02997 1.02677 +/- 0.00453\n", + " 44/1 1.07288 1.02812 +/- 0.00460\n", + " 45/1 1.01268 1.02768 +/- 0.00449\n", + " 46/1 1.03759 1.02796 +/- 0.00437\n", + " 47/1 1.02620 1.02791 +/- 0.00425\n", + " 48/1 1.02509 1.02783 +/- 0.00414\n", + " 49/1 1.01043 1.02739 +/- 0.00406\n", + " 50/1 1.01457 1.02707 +/- 0.00397\n", + " Creating state point statepoint.50.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 6.4100E-01 seconds\n", + " Reading cross sections = 3.6400E-01 seconds\n", + " Total time in simulation = 2.6284E+01 seconds\n", + " Time in transport only = 2.5289E+01 seconds\n", + " Time in inactive batches = 1.3870E+00 seconds\n", + " Time in active batches = 2.4897E+01 seconds\n", + " Time synchronizing fission bank = 3.9900E-01 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 5.6100E-01 seconds\n", + " Total time for finalization = 1.1000E-02 seconds\n", + " Total time elapsed = 2.6944E+01 seconds\n", + " Calculation Rate (inactive) = 18024.5 neutrons/second\n", + " Calculation Rate (active) = 4016.55 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.02489 +/- 0.00308\n", + " k-effective (Track-length) = 1.02707 +/- 0.00397\n", + " k-effective (Absorption) = 1.02637 +/- 0.00325\n", + " Combined k-effective = 1.02581 +/- 0.00264\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Run OpenMC\n", + "openmc.run(mpi_procs=4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created statepoint and summary output files. We begin our analysis by instantiating a `StatePoint` object. " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the last statepoint file\n", + "sp = openmc.StatePoint('statepoint.50.h5')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The statepoint is now ready to be analyzed by the `Library`. We simply have to load the tallies from the statepoint into the `Library` and our `MGXS` objects will compute the cross sections for us under-the-hood." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Initialize MGXS Library with OpenMC statepoint data\n", + "mgxs_lib.load_from_statepoint(sp)\n", + "\n", + "# Extrack the current tally separately\n", + "current_tally = sp.get_tally(name='current tally')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using Tally Arithmetic to Compute the Delayed Neutron Precursor Concentrations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we illustrate how one can leverage OpenMC's [tally arithmetic](https://mit-crpg.github.io/openmc/pythonapi/examples/tally-arithmetic.html) data processing feature with `MGXS` objects. The `openmc.mgxs` module uses tally arithmetic to compute multi-group cross sections with automated uncertainty propagation. Each `MGXS` object includes an `xs_tally` attribute which is a \"derived\" `Tally` based on the tallies needed to compute the cross section type of interest. These derived tallies can be used in subsequent tally arithmetic operations. For example, we can use tally artithmetic to compute the delayed neutron precursor concentrations using the `Beta` and `DelayedNuFissionXS` objects. The delayed neutron precursor concentrations are modeled using the following equations:\n", + "\n", + "$$\\frac{\\partial}{\\partial t} C_{k,d} (t) = \\int_{0}^{\\infty}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r} \\beta_{k,d} (t) \\nu_d \\sigma_{f,x}(\\mathbf{r},E',t)\\Phi(\\mathbf{r},E',t) - \\lambda_{d} C_{k,d} (t) $$\n", + "\n", + "$$C_{k,d} (t=0) = \\frac{1}{\\lambda_{d}} \\int_{0}^{\\infty}\\mathrm{d}E'\\int_{\\mathbf{r} \\in V_{k}}\\mathrm{d}\\mathbf{r} \\beta_{k,d} (t=0) \\nu_d \\sigma_{f,x}(\\mathbf{r},E',t=0)\\Phi(\\mathbf{r},E',t=0) $$" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1944: RuntimeWarning: invalid value encountered in true_divide\n", + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1945: RuntimeWarning: invalid value encountered in true_divide\n", + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1946: RuntimeWarning: divide by zero encountered in true_divide\n", + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1946: RuntimeWarning: invalid value encountered in true_divide\n", + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1938: RuntimeWarning: invalid value encountered in true_divide\n", + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1939: RuntimeWarning: invalid value encountered in true_divide\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 1delayedgroupnuclidescoremeanstd. dev.
xyz
01111total(((delayed-nu-fission / nu-fission) * (delayed...0.0033810.000837
11112total(((delayed-nu-fission / nu-fission) * (delayed...0.0009600.000074
21113total(((delayed-nu-fission / nu-fission) * (delayed...0.0069460.000771
31114total(((delayed-nu-fission / nu-fission) * (delayed...0.0747210.005119
41115total(((delayed-nu-fission / nu-fission) * (delayed...0.0341060.002235
51116total(((delayed-nu-fission / nu-fission) * (delayed...0.0025000.000358
61211total(((delayed-nu-fission / nu-fission) * (delayed...0.0066420.001718
71212total(((delayed-nu-fission / nu-fission) * (delayed...0.0011570.000075
81213total(((delayed-nu-fission / nu-fission) * (delayed...0.0067080.000578
91214total(((delayed-nu-fission / nu-fission) * (delayed...0.0765150.005032
\n", + "
" + ], + "text/plain": [ + " mesh 1 delayedgroup nuclide \\\n", + " x y z \n", + "0 1 1 1 1 total \n", + "1 1 1 1 2 total \n", + "2 1 1 1 3 total \n", + "3 1 1 1 4 total \n", + "4 1 1 1 5 total \n", + "5 1 1 1 6 total \n", + "6 1 2 1 1 total \n", + "7 1 2 1 2 total \n", + "8 1 2 1 3 total \n", + "9 1 2 1 4 total \n", + "\n", + " score mean std. dev. \n", + " \n", + "0 (((delayed-nu-fission / nu-fission) * (delayed... 0.003381 0.000837 \n", + "1 (((delayed-nu-fission / nu-fission) * (delayed... 0.000960 0.000074 \n", + "2 (((delayed-nu-fission / nu-fission) * (delayed... 0.006946 0.000771 \n", + "3 (((delayed-nu-fission / nu-fission) * (delayed... 0.074721 0.005119 \n", + "4 (((delayed-nu-fission / nu-fission) * (delayed... 0.034106 0.002235 \n", + "5 (((delayed-nu-fission / nu-fission) * (delayed... 0.002500 0.000358 \n", + "6 (((delayed-nu-fission / nu-fission) * (delayed... 0.006642 0.001718 \n", + "7 (((delayed-nu-fission / nu-fission) * (delayed... 0.001157 0.000075 \n", + "8 (((delayed-nu-fission / nu-fission) * (delayed... 0.006708 0.000578 \n", + "9 (((delayed-nu-fission / nu-fission) * (delayed... 0.076515 0.005032 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Set the time constants for the delayed precursors (in seconds^-1)\n", + "precursor_halflife = np.array([55.6, 24.5, 16.3, 2.37, 0.424, 0.195])\n", + "precursor_lambda = -np.log(0.5) / precursor_halflife\n", + "\n", + "beta = mgxs_lib.get_mgxs(mesh, 'beta')\n", + "\n", + "# Create a tally object with only the delayed group filter for the time constants\n", + "beta_filters = [f for f in beta.xs_tally.filters if f.type != 'delayedgroup']\n", + "lambda_tally = beta.xs_tally.summation(nuclides=beta.xs_tally.nuclides)\n", + "for f in beta_filters:\n", + " lambda_tally = lambda_tally.summation(filter_type=f.type, remove_filter=True) * 0. + 1.\n", + "\n", + "# Set the mean of the lambda tally and reshape to account for nuclides and scores\n", + "lambda_tally._mean = precursor_lambda\n", + "lambda_tally._mean.shape = lambda_tally.std_dev.shape\n", + "\n", + "# Set a total nuclide and lambda score\n", + "lambda_tally.nuclides = [openmc.Nuclide(name='total')]\n", + "lambda_tally.scores = ['lambda']\n", + "\n", + "delayed_nu_fission = mgxs_lib.get_mgxs(mesh, 'delayed-nu-fission')\n", + "\n", + "# Use tally arithmetic to compute the precursor concentrations\n", + "precursor_conc = beta.xs_tally.summation(filter_type='energy', remove_filter=True) * \\\n", + " delayed_nu_fission.xs_tally.summation(filter_type='energy', remove_filter=True) / lambda_tally\n", + " \n", + "# The difference is a derived tally which can generate Pandas DataFrames for inspection\n", + "precursor_conc.get_pandas_dataframe().head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another useful feature of the Python API is the ability to extract the surface currents for the interfaces and surfaces of a mesh. We can inspect the currents for the mesh by getting the pandas dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mesh 1surfacenuclidescoremeanstd. dev.
xyz
0111x-mintotalcurrent0.000000.000000
1111x-maxtotalcurrent0.029860.000678
2111y-mintotalcurrent0.000000.000000
3111y-maxtotalcurrent0.030910.000636
4111z-mintotalcurrent0.000000.000000
5111z-maxtotalcurrent0.000000.000000
6121x-mintotalcurrent0.000000.000000
7121x-maxtotalcurrent0.031340.000669
8121y-mintotalcurrent0.030550.000605
9121y-maxtotalcurrent0.031130.000634
\n", + "
" + ], + "text/plain": [ + " mesh 1 surface nuclide score mean std. dev.\n", + " x y z \n", + "0 1 1 1 x-min total current 0.00000 0.000000\n", + "1 1 1 1 x-max total current 0.02986 0.000678\n", + "2 1 1 1 y-min total current 0.00000 0.000000\n", + "3 1 1 1 y-max total current 0.03091 0.000636\n", + "4 1 1 1 z-min total current 0.00000 0.000000\n", + "5 1 1 1 z-max total current 0.00000 0.000000\n", + "6 1 2 1 x-min total current 0.00000 0.000000\n", + "7 1 2 1 x-max total current 0.03134 0.000669\n", + "8 1 2 1 y-min total current 0.03055 0.000605\n", + "9 1 2 1 y-max total current 0.03113 0.000634" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "current_tally.get_pandas_dataframe().head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cross Section Visualizations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to inspecting the data in the tallies by getting the pandas dataframe, we can also plot the tally data on the domain mesh. Below is the delayed neutron fraction tallied in each mesh cell for each delayed group." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3OAw5mZmZmZmZm1uU8\n4GBmZmZmZmZmXc4DDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3O\nAw5mZmZmZmZm1uU84GBmZmZmZmZmXc4DDusJSZMlnZlx2ycl7d/dfapqcz9JT/Vkm2ZmPck5bGZW\nPmexWXPxgEMdkuZLelXSy5Kel3S9pJ0y1jpIaouyO9CI9N91ZdZfYmbWGOdwt1gnc7jqZ+FlSTeV\n3Sez3sJZ3C3WySwGkHSKpCck/UvSo5KGlt0na24ecKgvgEMiYnNgB+AfwIUZa8U6HCTNTlJrCW32\nAS4A7u7pts16Medwkyohh1f9LKSP0T3cvllv5ixuUj2dxZI+C3wGOCgiNgU+DPxfT/bB1j0ecOiY\nACLidWAqsOuqFVJfSedKWiDpGUk/krShpI2BG4EdJf0zHQ3uL+ldkv4iaamkpyVdmP4RW6xj0h6S\n7pP0kqQpwEZV6z8s6YG0vTskvb3Ofur2S9JFks6t2n6apC+mz3eQNFXSPyT9XdIXKrbbSNLPJb0g\n6RHgXZ28n1GS5qb9+KGkGZKOTdeNS9/D+ZKeB8Yr8Y101P3ZtK3N0u3XGk2vnDInabyk30iakv77\n/FXS7p185F8GbgbmdrKdmXUt57BzeNUuOllvZt3HWdzLs1iSgG8CX4qIxwAi4smIeLGj92PmAYcM\n0sD8BHBXxeJzgKHA7ul/dwS+GRGvAgcBiyNis/SbmGeBNuC/gH7A3sD+wIkF+7MBcA1wWbq/3wAf\nq1i/JzAJOD5d/xNgWlpXraN+XQaMrdjv1un6K9PQuR54gGS0+wDgFEkfSjefALwxfRwIjOvg/Wyd\nvofTgK2Bx9K+VHo38DdgW+DbJKOrnwL2A94EbAb8sGL7zkbTDwV+DWwF/Aq4VnVGiSUNTts7Ex/w\nmpXCObxqv70yh1NXSFoi6aYMgxNm1g2cxav22xuzeED6eLukhenAyoRO9m0GEeFHjQfwJPAy8AKw\nHFgE7Fax/l/AGyte7w08kT7fD1jYyf5PAa4u2Lf3AYuqlt0JnJk+vxiYWLV+LvC+ive2f5Z+AY8C\nB6TPTwJuSJ+/G5hfVXs6MCl9/nfgQxXrjq/3mQCfBO6sWrYQODZ9Pq5GW7cC/1nx+i3AMpJBtLU+\n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\neuPVxnRsyZiOLXtfXzzliVq7DchEZX2NMUvHOIJsgsgeRwPXR0Q38Likm4E3A0tqfjgzsyGkH+Zw\nMDOzJjmL81MaejdwJ5Ci68FaP07W176qu9y5StTd+sY3ljrXL+I9hWu+1H5yqXM92r1P8XPFfxWu\nmfqtEwvXAHzg5FmFa8ZFuZVVfhUdxWs+/P5S5/rsles1HDZ0/kFnFK55501zCtcAfDr+t3DNR9uu\nISKK/Q+ZSIpbYkyuff9R89c7T/rL/31kk0b+mWy82VEV3b2QdALwhog4QdJE4PCI6Jk08jLgLWRD\nKW4ARkdESPoh8ERETKpxzYcCp0XEARXbTgX2iIjjJW2ermNCRNyb/9vYsJTJYYB2rWq803rnKpff\n83b+h8I1v4x3lzrXf7SfX7hmzROvKH6erc5uvFMN519SPEfGHzez1LneyW8L18yOw0qd6zefKP7n\n5umXTm68U5WvvH9K4RqAg352beGa4+KSwjWv4U0c2HZWqSwuksNQO4utdUrdE5fI4excxbO4TA5D\nuSz+j/avFa5Z88SrCtcAfHar4vdzF15yaqlzlcniMjkM5bJ4sHIYymVxmRyGclncynvijY17OJhZ\nbkNtvFqOMWYTWHc4BcB3gGmSehoYpr6cGxvM7OXFQyrMzFrPWZyfGxzMLLcm1xzu9/FqjcaYRcR6\nM5tHxPP1zmFmNtQ1m8NmZtY8Z3F+bnAws9w8Xs3MrLWcw2Zmrecszs8NDmaWW7Prv5uZWXOcw2Zm\nrecszs/flJnl5vFqZmat5Rw2M2s9Z3F+bnAws9wcrmZmreUcNjNrPWdxfm5wMLPcPF7NzKy1nMNm\nZq3nLM7PDQ5mlpvHq5mZtZZz2Mys9ZzF+fmbMrPc3H3MzKy1nMNmZq3nLM7PDQ5mltsqrzlsZtZS\nzmEzs9ZzFufnBgczy83dx8zMWss5bGbWes7i/PxNmVlu7j5mZtZazmEzs9ZzFufnBgczy83hambW\nWs5hM7PWcxbnNygNDjfv8qZC+4+PGaXOc7WOKlzTdt0fSp1Ls6NwTXeXSp1r2zX3FK5ZOfPvC9d0\nn1S4BID2X36ocM0XDvxyqXN9QV8rXNM2rtz3fsH3Ti9c0/3L4uc5jVuLFwG/VkeJqmtKnauHw3XD\nddsu+xSu+UBcXbhmto4sXAPQNv++wjW6pHgOQ7ks3p6HCtc8celOhWsAuo8rXtP+mwmlzvXl/b9Y\n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\n+8b/K1zTdUrx/wY/ru8XrgH4Il8uXLOHlhERxS+S7P/ltuXVoxVq695hi5rnSctiXsDaZTG/Urn2\nu6RNyVaQeBNp7feIWJJqzyBbxWI1a5fFfDvwG+AesiEWAZyZllRD0jTgloi4uOo6jgbOBLqBn0bE\nGcW+jQ1LmRwG0CXFs6fr7aX+82KbrurOLo1t2fZsqXM9pNcXrml/sPj3d96unylcA/BZ/W/hmrZa\nzW05aFLx/Onq+mSpc02Pmqss9ukT515euKbrtHL/DR5b4ns/my8WrtmUA3m1ZpXK4iI5DPWz2Fqj\n1D1xiRyGcllcJoehXBYPVg5DuSwuk8NQLovL5DCUy+LBymEol8VlchjgLM4qXLOrHm/pPfHGxEMq\nzCy37q7mIqO/136PiJuh/jTBEXFsne0zgBm5L9zMbIhoNofNzKx5zuL8/E2ZWX7uGmZm1lrOYTOz\n1nMW5+YGBzPLz+FqZtZazmEzs9ZzFufmBgczy2/NRj0Ezcys9ZzDZmat5yzOzQ0OZpbfmlZfgJnZ\nRs45bGbWes7i3Lwsppnl92LOh5mZDYy8OewsNjMbOE3msKRDJS2SdL+k02q8P1zSTEmLJd0iaVTF\ne2ek7QslHdLomJKmSXpQ0l2S5knaJ23fQ9LvJb0oaVLF/ptKui3tf4+k3gney3APBzPLb3WrL8DM\nbCPnHDYza70mslhSG3AhcBDwGDBX0jURsahit+OBpyJitKQJwLnAREl7ka3oticwErhR0mhADY55\nSkRcXXUpTwL/DhxeuTEiVkk6ICJekNQO3Czp5xFxe5nP6x4OZpZfV86HmZkNjLw57Cw2Mxs4zeXw\nOGBxRDwcEauBmcD4qn3GA5em57OAA9Pzw4CZEbEmIpYAi9PxGh1zvb/3R8QTEXEnNQaIRMQL6emm\nZJ0Uou6nacANDmaW35qcDzMzGxh5c9hZbGY2cJrL4R2BpRWvl6VtNfeJiC7gGUlb16h9NG1rdMyz\nJc2XdJ6kTRp9PEltku4ClgM3RMTcRjX1uMHBzPLzTa6ZWWv1Q4PDAI0dnipphaQ/VB3r3LTvfElX\nStoybd8vjQ/ueRyeto+UdJOkBWns8EllvyozswHTXA7XWuKiugdBvX2Kbgc4PSL2BPYDtgHWy/31\nCiO6I+JNZMM23pKGcpTiORzMLD83JpiZtVaTOTwQY4cjIoBpwLeBH1adcg7ZzW63pK8AZ6THPcC+\nafsOwN2SZqdPOCki5kvaArhT0pyq6zMza616WXx3J/yhs1H1MmBUxeuRZHlcaSmwE/BYmkdhRESs\nlLQsba+uVb1jRsSK9M/VkqYBpzS6wB4R8aykTuBQYEHeukru4WBm+bmHg5lZazXfw2Egxg4TEb8D\nVlafLCJujIju9PJWsptgIuLFiu2vBLrT9uURMT89fw5YyPpdjc3MWqte7u7dAUedtfZR21xgN0k7\nSxoOTARmV+1zLXBMen4kcFN6PpusAXi4pF2B3YDb+zpmatRFksgmiLy3xjX19pCQtK2kEen5K4F3\nA6Ubfd3Dwczyc2OCmVlrNZ/Dtcb5jqu3T0R0SaocO3xLxX49Y4fzOo6sgQMASeOAS8h+lftYRQNE\nz/u7AGOA2wqcw8xs4DWRxSlXTyTrAdYGTI2IhZKmAHMj4jpgKjBd0mKy1SQmptoFkq4g622wGjgh\n9TKrecx0ysskbUvWqDAf+DSApO2BO4BXAd2STgb2Al4DXJp6xLUBl0fEz8p+XmXXN3AkxYNdry5U\n89qfLy91rgvfe1zhmhMf+V6pc/Fkw7k21qOHyn3X//ShywvXrNbwwjVd3e2FawDm/Kj6h5HGXnv0\nH0udaw/uK1zzV72q1LlWxaaFa8pc3zZ6snANwLY8Ubjmi/oGEVFrjFdDkoKZOf8bnqjS57H+Jyke\n6dqmcN2oXz1euOaSA44qXAPwL4//oHBN99OblzpXmSx+33uuLFwzTOXWzOrqLv5bwHVXH1nqXHsf\nUXwOqFHr/F01vxe0WeGaMjEymsWFawBepb8WrtmpxHexM3vxYZ1UKiMb5vAfO2FB59rXV05Z7zyS\nPgwcEhGfSq//GdgvIk6u2OfetM9j6XVPT4YvA7+PiBlp+w+An/YstSZpZ+DaiNinxrV/HhgbER+q\n8d4eZEMx3hkRL6VtWwCdwJcj4pq+vpcNRZksLpPDUC6Ly+QwlMviwcphKJfFZXIYymXx64+YV+pc\nu7KkcM1g5TDArjxYuGYrPV3qXGWy+BR91/fEg8Q9HMwsPy+zZmbWWn3l8Os7skePK6fU2msgxg73\nSdIxwPtYOzRjHRFxn6TngTcA8yQNIxvKMf3l0thgZi8zvifOzXM4mFl+nsPBzKy1mp/DYSDGDvcQ\nVTOlSzoUOBU4LCJWVWzfJTVm9PSM2B16f7K9BFgQERf08U2YmbWO74lzcw8HM8vPwWlm1lpN5vAA\njR1G0gygA9hG0iPA5IjoWbliOHBDNl8Zt0bECcA7gNMlvUQ2YeS/RcRTkt4OfBS4J60BH8CZEXF9\nc5/czKwf+Z44Nzc4mFl+Dlczs9bqhxxOf3nfo2rb5Irnq8iWv6xVew5wTo3tR9fZf3Sd7f8H/F+N\n7TcD5SaVMjMbLL4nzs0NDmaWn8PVzKy1nMNmZq3nLM7NcziYWX5NjleTdKikRZLul3RajfeHS5op\nabGkWySNqnjvjLR9oaRD0raRkm6StEDSPZJOqth/pqR56fGQpHlp+86SXqh476J++GbMzAZH83M4\nmJlZs5zDubmHg5nl10RwprV8LwQOIpvVfK6kayJiUcVuxwNPRcRoSROAc8kmKNuLrHvvnmSzot8o\naXS6okkRMT8toXanpDkRsSgiJlac++tA5VpLf4qIseU/jZlZi/gG1sys9ZzFubnBwczye7Gp6nHA\n4oh4GLIeCMB4oLLBYTzQM454FtlkYwCHATMjYg2wpGdN+Ii4DVgOEBHPSVoI7Fh1TMgaKw6oeL1R\nr4dsZhuw5nLYzMz6g7M4Nw+pMLP8mus+tiPZ2u49lqVtNfeJiC7gGUlb16h9tLpW0i7AGOC2qu3v\nBJZHxAMVm3eRdKekX0l6R90rNjMbajykwsys9ZzDubmHg5nlVy84l3TCw52Nqmv1Koic+/RZm4ZT\nzAJOjojnqvY7CvhRxevHgFERsVLSWOAnkvaqUWdmNvT4BtbMrPWcxbm5wcHM8qsXriM7skeP30yp\ntdcyYFTF65Fkf/mvtBTYCXhMUjswIjUMLEvb16uVNIyssWF6RFxTebB0jCOA3vkaImI1sDI9nyfp\nAWB3YF6dT2dmNnT4JtfMrPWcxbl5SIWZ5bc656O2ucBuaZWI4cBEYHbVPtcCx6TnRwI3peezySaP\nHC5pV2A34Pb03iXAgoi4oMY5DwYWRkRvw4akbdMElkh6bTrWgw0/u5nZUJA3h+tnsZmZNcs5nNug\n9HDY+em/FNp/8fuqh3Xn82s6Ctd077xJqXO1nVe8Jk4p1xT2Nv2+cM3t8ZbCNVc9dHThGoBpR09s\nvFOVWXy41Ll++qnidXpVda/9fLrOKz6vYNsR+xc/0Z7FSwDO+J8vlStsRlf50ojoknQiMIessXNq\nRCyUNAWYGxHXAVOB6WlSyCfJGiWIiAWSrgAWkMX3CRERkt4OfBS4R9JdZMMszoyI69NpJ7DucAqA\n/YH/krQ6faJ/jYineZkb+cSThWsWH1g8i29nXOEagDWv3rxwTdv/lToVmx6/snDNu3Vj4Zo74s2F\nawCuWPmRwjXTjjiq1Lkup/i5fv6pI0qdS9sVz+Ku/y6Rw0e/p3ANAK8vfn1fnXxS452qdDf7W08T\nOWytVzSLy+QwlMviMjkM5bJ4sHIYymVxmRyGcllcJoehXBYPVg4DtJX5a0WJHIZyWdw0Z3FuHlJh\nZvk12X0sNQTsUbVtcsXzVVD7T96IOAc4p2rbzUB7H+c7tsa2q4CrCl24mdlQ4W68Zmat5yzOzQ0O\nZpafw9XMrLWcw2Zmrecszs1zOJhZfi/mfJiZ2cDIm8POYjOzgdNkDks6VNIiSfdLOq3G+8MlzZS0\nWNItkkZVvHdG2r5Q0iGNjilpmqQHJd0laZ6kfdL2PST9XtKLkiYVub4i3MPBzPJza66ZWWs5h83M\nWq+JLE6Tl18IHES26tpcSddExKKK3Y4HnoqI0ZImAOeSTaC+F9nw4z3JVm27UdJosiXk+zrmKRFx\nddWlPAn8O3B4ievLzT0czCy/NTkfZmY2MPLmsLPYzGzgNJfD44DFEfFwWq59JjC+ap/xwKXp+Szg\nwPT8MGBmRKyJiCXA4nS8Rsdc7+/9EfFERNxZ40rzXF9ubnAws/y8BJCZWWt5WUwzs9ZrLod3BJZW\nvF6WttXcJyK6gGckbV2j9tG0rdExz5Y0X9J5khot05jn+nLzkAozy89LAJmZtZZz2Mys9epl8eOd\n8ERno+paa41Wrwlab59622t1JOg55ukRsSI1NHwfOA04u8nry809HMwsP3fjNTNrrX4YUjFAk5VN\nlbRC0h+qjnVu2ne+pCslbZm2v1vSHZLuljRX0gE1rmN29fHMzIaEerm7VQeMPmvto7ZlwKiK1yPJ\n5kqotBTYCUBSOzAiIlam2p1q1NY9ZkSsSP9cDUwjGzLRlzzXl5sbHMwsPzc4mJm1VpMNDhWTgb0H\n2Bs4StLrq3brnawMOJ9ssjKqJit7L3CRpJ5fwqalY1abA+wdEWPIxhqfkbY/DnwgIt4IfAKYXnWd\nHwSe7eurMDNrmebuiecCu0naWdJwYCIwu2qfa4Fj0vMjgZvS89lkk0cOl7QrsBtwe1/HlLRD+qfI\nJoi8t8Y1VfZqyHN9uXlIhZnl5zHBZmat1XwO904GBiCpZzKwytnHxwOT0/NZwLfT897JyoAlknom\nK7stIn4naefqk0XEjRUvbwU+lLbfXbHPHyVtKmmTiFgtaXPgc8CngCua/sRmZv2tiSyOiC5JJ5I1\nyLYBUyNioaQpwNyIuA6YCkxPOfsk2V/6iYgFkq4AFqSrOCEiAqh5zHTKyyRtS9aoMB/4NICk7YE7\ngFcB3ZJOBvaKiOf6OFZhbnAws/xWtfoCzMw2cs3ncK3JwKq7164zWZmkysnKbqnYr2eysryOI5vt\nfB2SPgzclbr7AnwZ+DrwtwLHNjMbPE1mcURcD+xRtW1yxfNVZD3KatWeA5yT55hp+0F1jrOCdYdn\nNDxWGW5wMLP8PFzCzKy1+srhZzrh2c5GRxiIycoakvR5YHVEzKjavjfZjfPB6fUbgd0iYpKkXeqc\n08ystXxPnNugNDicstV/F9r/cP2k1HnGML9wzafi2413qmHeBd8pXDNGixrvVEPbld8qXDP+iB8V\nrul+bbk/09vuXO/HioZ0XbmJTrsvLl7Tdme5zzXi+b8UrtntquWFa0bxSOEagD0p3bOpPA+p2GB9\nabvTC9ccpmsL1+zB/YVrACbFeg31DS3+3IWlzvU6PVq4pu3K7xau+cARPy5cA7Bq6y0L17T9sXjm\nA2hW8Swuk8MAbQ8Ur9mua1nhmn1mFP/3C+WyeBceLlyzPdsUrllHXzm8WUf26LFsSq29ikxW9ljl\nZGWS6k1W1idJxwDvY+068j3bRwJXAR9L68kD/CMwVtKDwCbAqyXdFBHr1G6oPr/dFwrt/0FdXeo8\nZbK4TA5DuSwerByGcllcJoehXBaXyWEoeU9cKofLZereM/5cuKbsPXGZLG6a74lz86SRZpZfV86H\nmZkNjLw5XD+LB2Kysh6iqkeCpEOBU4HDUhfhnu0jgOvIlmu7tWd7RHw3IkZGxGuBdwD3vVwaG8zs\nZcT3xLm5wcHM8vMqFWZmrdXkKhUR0QX0TAb2R7JJIBdKmiLpA2m3qcC2abKyzwKnp9oFZJM4LgB+\nxtrJypA0A/g9sLukRyQdm471bWAL4AZJ8yRdlLafCLwO+KKku9J72zb79ZiZDQrfE+fmORzMLD8H\np5lZa/VDDg/QZGVH19l/dJ3t/w30OeY2raSxT1/7mJm1hO+Jc3ODg5nl5/FqZmat5Rw2M2s9Z3Fu\nbnAws/w8Fs3MrLWcw2Zmrecszs1zOJhZfk2OV5N0qKRFku6XdFqN94dLmilpsaRbJI2qeO+MtH2h\npEPStpGSbpK0QNI9kk6q2H9mGhM8T9JDkuZVnWuUpL9KmtTEN2JmNrianMPBzMz6gXM4N/dwMLP8\n/la+VFIbcCFwENkyanMlXRMRlevFHg88FRGjJU0AziWbEX0vsvHEe5Itw3ajpNFkUT4pIuZL2gK4\nU9KciFgUERMrzv114OmqS/oG2aRnZmYbjiZy2MzM+omzODf3cDCz/JpbAmgcsDgiHo6I1cBMYHzV\nPuOBS9PzWaxds/0wspnU16S12hcD4yJieUTMB4iI54CFwI41zv0RoHdxbEnjgQfIZmg3M9twNL8s\nppmZNcs5nJsbHMwsv+a6j+0ILK14vYz1Gwd690lLtz0jaesatY9W10raBRgD3Fa1/Z3A8oh4IL3e\njGxN+ClUrRdvZjbkeUiFmVnrOYdz85AKM8uvueCs9Zf7yLlPn7VpOMUs4OTU06HSUVT0biBraPhm\nRLwgqd45zcyGJt/Ampm1nrM4Nzc4mFl+9ZYA6u6E6GxUvQwYVfF6JNlcDpWWAjsBj0lqB0ZExEpJ\ny9L29WolDSNrbJgeEddUHiwd4whgbMXmtwAfknQusBXQJelvEXFRow9gZtZyXorNzKz1nMW5ucHB\nzPKrOxatIz16TKm101xgN0k7A38GJpL1Pqh0LXAM2bCII4Gb0vbZwGWSvkk2lGI34Pb03iXAgoi4\noMY5DwYWRkRvw0ZE7N/zXNJk4K9ubDCzDYbHBJuZtZ6zODfP4WBm+UXOR63SbE6GE4E5ZJM1zoyI\nhZKmSPpA2m0qsK2kxcBngdNT7QLgCmAB2coSJ0RESHo78FHgQEl3pSUwD6047QTWHU5hZrZhy5vD\ndbLYzMz6QZM53N9Lxfd1TEnTJD1Yca+8T8V730rHmi9pTNrWUbHvXZL+Jumwsl/VoPRw2J37Cu2/\n//y5pc4z+40HF6753kWfLXWut33ml4VrrokRpc41+4j9CtfsrsWFa3boflvhGoCuv+xauGb1Z8sN\nm2+/u/iAqcvGHlHqXIeNmF245pRnv1G45n/vnlS4BmDGmHKfq5Ui4npgj6ptkyueryJbUaJW7TnA\nOVXbbgba+zjfsQ2up2ZXjJejPbi/cM2bbyq+iMfMA8r9eXTeRV8oXHP4Z8q1JV0Smxeu+dUR/1C4\nZoSqV2LNZ8fusY13qtL9l9GlzhX/VjyLy+QwwKx9PtB4pyofHHV94ZoTl36tcA3AhTf8R+Gaqw95\nb+GaNroL19jLx14sKLR/mRyGcllcJoehXBaXyeEbjxhTuAZgaz1ZuKZMDkO5LC6Tw1Auiwcrh6Fc\nFl/4q+I5DHD1gcWzuJUGaKl4NTjmKRFxddV1vBd4XTrHW4DvAm+NiE7gTWmfrchWh5tT9vO6h4OZ\nmZmZmZnZ4Oj3peJzHLPW3/vHAz8EiIjbgBGStq/a58PAzyPixeIfs/6J1yFpqqQVkv5QsW2ypGWp\nm0V1F2Yze9lanfNh/c1ZbGaZvDnsLO5vzmEzW6upHB6IpeIbHfPsNGziPEmb1LmO9ZadJ5tzranh\nyXl6OEwD3lNj+zciYmx6lOtrY2YbGC863ELOYjMjfw47iweAc9jMkqZyeCCWiu/rmKdHxJ7AfsA2\nQM/8Do2Wnd8BeAPwixr75dZwDoeI+F2aVb6a16432+j4F7NWcRabWcY53CrOYTNbq14W/xb4XaPi\ngVgqXvWOGREr0j9XS5oGnFJxHTWXnU8+AlydeliU1swcDp9J3TJ+IKncbIhmtoHxr2pDkLPYbKPi\nHg5DkHPYbKNTL3f/EfjPikdNvUvFSxpONmyherb6nqXiYf2l4iemVSx2Ze1S8XWPmXoqIEnA4cC9\nFcf6eHrvrcDTPY0TyVH0w2pvZRscLiKb0XIMsBwoPjW/mW2APG54iHEWm210mp/DYYCWY1tvfoO0\n/dy073xJV0raMm3fWtJNkv4q6VtVNZtI+p6k+yQtkPTBwl/T4HEOm22UyufwQCwVX++Y6ViXSbob\nuJtsSMXZ6Vg/Ax6S9Cfge8AJPdeYenONjIhfN/MtQcllMSPi8YqX3ydrganrurPm9z7fvWMHdu/Y\nocxpzayghZ2Ps7Dz8cY75ubGhKGkSBZfddbapdj27NiOPTu2G8ArM7NK93Y+yR87nwJgC55r8mjN\n5fBALMcWEUE2v8G3STOeV5hDNn64W9JXgDPS40XgC2Tjg99QVfN5YEVE7JGueeumPvQAKnpP7Cw2\na43KHO4fzWVxfy8VX++YaftBfVzHiXW2P8y6wy1Ky9vgICrGp0naISKWp5dHsLZbRk0fOKvcurlm\n1pzqm5mrpyzsY+883EW3xUpn8RFn7TXAl2Zm9byhYxve0LENANuzL9Om/LaJozWdw71LpwFI6lk6\nrbLBYTzQc+M7i6whASqWYwOWpF/exgG31ZvfICJurHh5K/ChtP0F4Pdp/fhqx1Fx0xwR/fm3hGY1\ndU/sLDZrjcocBvjxlD81eUTfE+fVsMFB0gygA9hG0iNkfwAdIGkM0A0sI0g+jgAACs1JREFUAf51\nAK/RzIaMv7X6AjZazmIzyzSdw7WWThtXb5+I6JJUuRzbLRX71VpCrS/Hka0NX1fFHAhnS+oA/gSc\nWNWToCWcw2a2lu+J88qzSsXRNTZPG4BrMbMhz0MqWsVZbGaZvnJ4LnBHowMMxHJsDUn6PLA6ImY0\n2HUY2XCN30bEKZI+B5xHmtislZzDZraW74nzKjWHg5ltrNx9zMystfrK4TelR4/v1tppIJZj65Ok\nY4D3AQc22jcinpT0fET8JG36MVnPCDOzIcT3xHk1syymmW10vEqFmVlrNb1KxUAsx9ZjnfkNIFsR\nAzgVOCxNglZLdc+JayUdkJ6/m2w2djOzIcT3xHkpm1h4AE8gRVfBuYVXPlvuXFufXLwmW5ypuO43\n1+pV2Lf/994Jpc71iZV9Dnes6bGti0/o/IM4vnANAO1fK1zyv10PlTrV0md2LVwzrLvUqbhoq+I/\nqISK/3fxYLy2cA3AY/r7wjVX6FgiovhFkv2/DL/Lufc7Sp/H+l+ZHAZ4eGXxml0mFa+Bclkc/1Du\nXD89/IDGO1U55NlfFa55bES52ecvj+J/Vvyt/cJS5yqTxUueL57DAK94oXjNrO3eX7jmURWZUmCt\n+2P3wjUvaXjhmr0ZxSQdXioji+Uw1Mvi1AhwAdkPT1Mj4iuSpgBzI+I6SZsC08m6SzwJTIyIJan2\nDLJVLFYDJ0fEnLS9d34DYAUwOSKmpYklh6fjANwaESekmoeAV6X3nwYOiYhFaRnO6cAI4HHg2IhY\nVuCDD0llsrhMDkO5LC57T1wmiwcrh6FcFs+oOXqmsZfaLyhcU/aeuEwWl8nhmdsdVrwIWKHiqxKW\nyWEol8VTdZLviQeJh1SYWQFuqTUza63mc3iAlmOr+Te0iKi1CkXPezX/xhQRjwDvqldnZtZ6vifO\nyw0OZlaAx6uZmbWWc9jMrPWcxXm5wcHMCnBrrplZazmHzcxaz1mclxsczKwArzlsZtZazmEzs9Zz\nFuflBgczK8CtuWZmreUcNjNrPWdxXl4W08wKWJPzUZukQyUtknS/pNNqvD9c0kxJiyXdkmYq73nv\njLR9oaRD0raRkm6StEDSPZJOqth/pqR56fGQpHlp+36S7qp4HN4f34yZ2eDIm8MeX2xmNnCcw3m5\nh4OZFVC+NVdSG3AhcBDwGDBX0jURsahit+OBpyJitKQJwLlka77vRTZj+p7ASOBGSaPJknxSRMyX\ntAVwp6Q5EbEoIiZWnPvrZEuuAdwD7BsR3ZJ2AO6WNDsiSi6gamY2mPyrmplZ6zmL83IPBzMroKnW\n3HHA4oh4OCJWAzOB8VX7jAcuTc9nAQem54cBMyNiTVoLfjEwLiKWR8R8gIh4DlgI7Fjj3B8BfpT2\ne7GiceGVgBsazGwD4h4OZmat5xzOyz0czKyAplpzdwSWVrxeRtYIUXOfiOiS9IykrdP2Wyr2e5Sq\nhgVJuwBjgNuqtr8TWB4RD1RsGwdcAowCPubeDWa24fCvamZmrecszqulPRw6/e+p16LOFa2+hCHj\npc5bW30JQ8bSzgdbfQlV6rXeLgRmVzxqUo1tkXOfPmvTcIpZwMmpp0Olo0i9G3oLI26PiDcA+wFn\nShpe76Jf7pzDa93TubLVlzBkOIfX9Wjnn1p9CRXcw+HlyFm8lrN4LWfxWkMrh8E5nF9LGxx+7XDt\ndV/nX1p9CUOGw3WtZZ0PtfoSqqyu89gFOLjiUdMysh4FPUaSzeVQaSmwE4CkdmBERKxMtTvVqpU0\njKyxYXpEXFN5sHSMI4DLa11QRNwHPA+8od5Fv9w5h9e6p/PpxjttJJzD63qs84HGOw2aejlc62Eb\nCmfxWs7itZzFaw2tHAbncH6ew8HMCmiqNXcusJuknVOPgoms3x3iWuCY9PxI4Kb0fDbZ5JHDJe0K\n7Abcnt67BFgQERfUOOfBwMKI6G3YkLRLaohA0s7A7sCShh/dzGxIcA8HM7PWcw7nNThzOLxxbO3t\nDz0Gu/79epvbqztE51VrqrhGtih5ri1r9fDu2zbsWve9V7Ks/vvtdb6/PmzCiMI1ryn1BQJji1/f\nPtTvwf4A7byuzvsq8V3U7Iyfw3bsXLimenxAHi+xQ933tmQLRtZ5f1O2KXG2Zv2tdGWak+FEYA5Z\nY+fUiFgoaQowNyKuA6YC0yUtBp4ka5QgIhZIugJYQNZcfEJEhKS3Ax8F7pF0F9m/gjMj4vp02glU\nDacA3gGcLuklsgkj/y0inir9wTYUBXMYYPizJc5TMkZKZfHflTvVCEbX3L4pz9R9T23PFD7PcLYq\nXAOw/TqdefJZVSKHoX4W95nDbeXOVeaO4+94XeGa1by6+ImAv/VRdx+bs1ON91ezSeHzvLrEn8/r\nKp/DNgQUzOJSOQyDe09cIovrZS3Uz+IyOQzlsngHRpY61+rBvCcuk8UlcnirEjkMECXuU8vkMJTL\n4uY5i/NSRJm/IhU4gTSwJzCzQiKiVBOMpCWQuxXm4YjYpcx5rP85h82GnjJZXDCHwVk8pDiLzYYW\n3xMPjgFvcDAzMzMzMzOzjY/ncDAzMzMzMzOzfucGBzMzMzMzMzPrdy1pcJB0qKRFku6XdForrmGo\nkLRE0t2S7pJ0e+OKlxdJUyWtkPSHim1bSZoj6T5Jv5DU7AxbG4Q638VkScskzUuPQ1t5jfby4ixe\na2POYufwWs5hG2zO4bU25hwGZ3ElZ/HLy6A3OEj/v737960pDgMw/rwiBmziR0IYSEgsJXQQAwuJ\nhUgkTEQiBv4AJqupk1gQ6UAkBmFCjDaLQWKw+BVRHfwBwmu4p+452ko0957v7T3PJ2lybjv0zem9\nT5s35/bECuAGcBTYDZyJiF1tzzFCfgGHMnNPZk6WHqaAu/SeC3VXgBeZuZPebRGvtj5VGQudC4Cp\nzNxbfTxd4OvSf7PF83S5xXa4zw6rNXZ4ni53GGxxnS0eIyWucJgE3mXmh8z8ATwAjheYY1QEHX5r\nS2a+BL7/9enjwHR1PA2caHWoQhY5F7DkG3tK/2SLmzrbYjvcZ4fVMjvc1NkOgy2us8XjpcSLejPw\nqfb4M0u/c/s4SOBZRLyKiAulhxkRGzJzBiAzvwLrC89T2qWIeB0Rt7tyKZ1aYYubbHGTHW6ywxoG\nO9xkh+ezxU22eBkqsXBYaDPV5XtzHsjMfcAxei+ig6UH0ki5CWzPzAngKzBVeB6ND1vcZIu1GDus\nYbHDTXZY/2KLl6kSC4fPwNba4y3AlwJzjIRqW0lmzgKP6F1e13UzEbERICI2Ad8Kz1NMZs5m5twf\nH7eA/SXn0VixxTW2eB47XLHDGiI7XGOHF2SLK7Z4+SqxcHgF7IiIbRGxCjgNPCkwR3ERsToi1lbH\na4AjwJuyUxURNLf8T4Bz1fFZ4HHbAxXUOBfVL5c5J+nm80PDYYsrthiww3V2WG2xwxU7/Ict7rPF\nY2Jl298wM39GxGXgOb2Fx53MfNv2HCNiI/AoIpLez+JeZj4vPFOrIuI+cAhYFxEfgWvAdeBhRJwH\nPgKnyk3YnkXOxeGImKD3n5vfAxeLDaixYosbOt1iO9xnh9UmO9zQ6Q6DLa6zxeMl+lemSJIkSZIk\nDUZnbz0jSZIkSZKGx4WDJEmSJEkaOBcOkiRJkiRp4Fw4SJIkSZKkgXPhIEmSJEmSBs6FgyRJkiRJ\nGjgXDpIkSZIkaeBcOEiSJEmSpIH7Db/BFUInlBauAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Extract the energy-condensed delayed neutron fraction tally\n", + "beta_by_group = beta.get_condensed_xs(one_group).xs_tally.summation(filter_type='energy', remove_filter=True)\n", + "beta_by_group.mean.shape = (17, 17, 6)\n", + "beta_by_group.mean[beta_by_group.mean == 0] = np.nan\n", + "\n", + "# Plot the betas\n", + "plt.figure(figsize=(18,9))\n", + "fig = plt.subplot(231)\n", + "plt.imshow(beta_by_group.mean[:,:,0], interpolation='none', cmap='jet')\n", + "plt.colorbar()\n", + "plt.title('Beta - delayed group 1')\n", + "\n", + "fig = plt.subplot(232)\n", + "plt.imshow(beta_by_group.mean[:,:,1], interpolation='none', cmap='jet')\n", + "plt.colorbar()\n", + "plt.title('Beta - delayed group 2')\n", + "\n", + "fig = plt.subplot(233)\n", + "plt.imshow(beta_by_group.mean[:,:,2], interpolation='none', cmap='jet')\n", + "plt.colorbar()\n", + "plt.title('Beta - delayed group 3')\n", + "\n", + "fig = plt.subplot(234)\n", + "plt.imshow(beta_by_group.mean[:,:,3], interpolation='none', cmap='jet')\n", + "plt.colorbar()\n", + "plt.title('Beta - delayed group 4')\n", + "\n", + "fig = plt.subplot(235)\n", + "plt.imshow(beta_by_group.mean[:,:,4], interpolation='none', cmap='jet')\n", + "plt.colorbar()\n", + "plt.title('Beta - delayed group 5')\n", + "\n", + "fig = plt.subplot(236)\n", + "plt.imshow(beta_by_group.mean[:,:,5], interpolation='none', cmap='jet')\n", + "plt.colorbar()\n", + "plt.title('Beta - delayed group 6')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index df50eee0ba..3be64bd1cf 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -257,6 +257,16 @@ Energy Groups openmc.mgxs.EnergyGroups +Delayed Groups +------------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.mgxs.DelayedGroups + Multi-group Cross Sections -------------------------- @@ -284,6 +294,19 @@ Multi-group Cross Sections openmc.mgxs.TotalXS openmc.mgxs.TransportXS +Multi-delayed-group Cross Sections +---------------------------------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclassinherit.rst + + openmc.mgxs.MDGXS + openmc.mgxs.ChiDelayed + openmc.mgxs.DelayedNuFissionXS + openmc.mgxs.Beta + Multi-group Cross Section Libraries ----------------------------------- From 2fff5cd3d049152d30578befee9d259e70330376 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Tue, 2 Aug 2016 18:18:06 -0500 Subject: [PATCH 18/49] Improve fission energy release documentation --- docs/source/io_formats/fission_energy.rst | 53 +++++++++++++++ docs/source/io_formats/index.rst | 1 + docs/source/io_formats/nuclear_data.rst | 21 ++++++ docs/source/pythonapi/index.rst | 18 ++--- openmc/data/fission_energy.py | 81 ++++++++++++++++++++++- 5 files changed, 164 insertions(+), 10 deletions(-) create mode 100644 docs/source/io_formats/fission_energy.rst diff --git a/docs/source/io_formats/fission_energy.rst b/docs/source/io_formats/fission_energy.rst new file mode 100644 index 0000000000..d73a95f605 --- /dev/null +++ b/docs/source/io_formats/fission_energy.rst @@ -0,0 +1,53 @@ +.. _usersguide_fission_energy: + +================================== +Fission Energy Release File Format +================================== + +This file is a compact HDF5 representation of the ENDF MT=1, MF=458 data (see +ENDF-102_ for details). It gives the information needed to compute the energy +carried away from fission reactions by each reaction product (e.g. fragment +nuclei, neutrons) which depends on the incident neutron energy. OpenMC is +distributed with one of these files under +openmc/data/fission_Q_data_endfb71.h5. More files of this format can be +created from ENDF files with the +``openmc.data.write_compact_458_library`` function. They can be read with the +``openmc.data.FissionEnergyRelease.from_compact_hdf5`` class method. + +:Attributes: - **comment** (*char[]*) -- An optional text comment + - **component order** (*char[][]*) -- An array of strings + specifying the order each reaction product occurs in the data + arrays. The components use the 2-3 letter abbreviations + specified in ENDF-102 e.g. EFR for fission fragments and ENP for + prompt neutrons. + +**//** + Nuclides are named by concatenating their Z and their A numbers. For + example, U235 is named 92235. Metastable nuclides are appended with an + '_m' and their metastable number. For example, the first excited isomer + of Am-242 is named 95242_m1. + +:Datasets: - **data** (*double[][][]*) -- The energy release coefficients. The + first axis indexes the component type. The second axis specifies + values or uncertainties. The third axis indexes the polynomial + order. If the data uses the Sher-Beck format, then the last axis + will have a length of one and ENDF-102 should be consulted for + energy dependence. Otherwise, the data uses the Madland format + which is a polynomial of incident energy. + + For example, if 'EFR' is given first in the **component order** + attribute and the data uses the Madland format, then the energy + released in the form of fission fragments at an incident energy + :math:`E` is given by + + .. math:: + \text{data}[0, 0, 0] + \text{data}[0, 0, 1] \cdot E + + \text{data}[0, 0, 2] \cdot E^2 + \ldots + + And its uncertainty is + + .. math:: + \text{data}[0, 1, 0] + \text{data}[0, 1, 1] \cdot E + + \text{data}[0, 1, 2] \cdot E^2 + \ldots + +.. _ENDF-102: http://www.nndc.bnl.gov/endfdocs/ENDF-102-2012.pdf diff --git a/docs/source/io_formats/index.rst b/docs/source/io_formats/index.rst index acab7e8930..39b38fcf21 100644 --- a/docs/source/io_formats/index.rst +++ b/docs/source/io_formats/index.rst @@ -15,6 +15,7 @@ Data Files nuclear_data mgxs_library data_wmp + fission_energy ------------ Output Files diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst index ba6a54eb1e..7544ca1f5e 100644 --- a/docs/source/io_formats/nuclear_data.rst +++ b/docs/source/io_formats/nuclear_data.rst @@ -55,6 +55,27 @@ Incident Neutron Data from fission. It is formatted as a reaction product, described in :ref:`product`. +**//fission_energy_release/** + +:Attributes: - **format** (*char[]*) -- The energy-dependence format. Either + 'Madland' or 'Sher-Beck' + +:Datasets: - **fragments** (*double[]*) -- Polynomial coefficients for energy + released in the form of fragments + - **prompt_neutrons** (*double[]* or :ref:`tabulated <1d_tabulated>`) + -- Energy released in the form of prompt neutrons. Polynomial if + the format is Madland or a table if Sher-Beck. + - **delayed_neutrons** (*double[]*) -- Polynomial coefficients for + energy released in the form of delayed neutrons + - **prompt_photons** (*double[]*) -- Polynomial coefficients for + energy released in the form of prompt photons + - **delayed_photons** (*double[]*) -- Polynomial coefficients for + energy released in the form of delayed photons + - **betas** (*double[]*) -- Polynomial coefficients for + energy released in the form of betas + - **neutrinos** (*double[]*) -- Polynomial coefficients for + energy released in the form of neutrinos + ------------------------------- Thermal Neutron Scattering Data ------------------------------- diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 36f161b3c3..5d45c799d7 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -335,6 +335,7 @@ Core Classes openmc.data.Tabulated1D openmc.data.ThermalScattering openmc.data.CoherentElastic + openmc.data.FissionEnergyRelease Angle-Energy Distributions -------------------------- @@ -368,21 +369,22 @@ Classes +++++++ .. autosummary:: - :toctree: generated - :nosignatures: - :template: myclass.rst + :toctree: generated + :nosignatures: + :template: myclass.rst - openmc.data.ace.Library - openmc.data.ace.Table + openmc.data.ace.Library + openmc.data.ace.Table Functions +++++++++ .. autosummary:: - :toctree: generated - :nosignatures: + :toctree: generated + :nosignatures: - openmc.data.ace.ascii_to_binary + openmc.data.ace.ascii_to_binary + openmc.data.write_compact_458_library .. _Jupyter: https://jupyter.org/ .. _NumPy: http://www.numpy.org/ diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index c22fef9a9b..d7fe5fa720 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -1,7 +1,6 @@ from collections import Callable from copy import deepcopy import sys -#from warnings import warn import h5py import numpy as np @@ -199,6 +198,82 @@ def write_compact_458_library(endf_files, output_name=None, comment=None, class FissionEnergyRelease(object): + """Energy relased by fission reactions. + + Energy is carried away from fission reactions by many different particles. + The attributes of this class specify how much energy is released in the form + of fission fragments, neutrons, photons, etc. Each component is also (in + general) a function of the incident neutron energy. + + Following a fission reaction, most of the energy release is carried by the + daughter nuclei fragments. These fragments accelerate apart from the + Coulomb force on the time scale of ~10^-20 s [1]. Those fragments emit + prompt neutrons between ~10^-18 and ~10^-13 s after scission (although some + prompt neutrons may come directly from the scission point) [1]. Prompt + photons follow with a time scale of ~10^-14 to ~10^-7 s [1]. The fission + products then emit delayed neutrons with half lives between 0.1 and 100 s. + The remaining fission energy comes from beta decays of the fission products + which release beta particles, photons, and neutrinos (that escape the + reactor and do not produce usable heat). + + Use the class methods to instantiate this class from an HDF5 or ENDF + dataset. The :meth:`FissionEnergyRelease.from_hdf5` method builds this + class from the usual OpenMC HDF5 data files. + :meth:`FissionEnergyRelease.from_endf` uses ENDF-formatted data. + :meth:`FissionEnergyRelease.from_compact_hdf5` uses a different HDF5 format + that is meant to be compact and store the exact same data as the ENDF + format. Files with this format can be generated with the + :func:`openmc.data.write_compact_458_library` function. + + References + ---------- + [1] D. G. Madland, "Total prompt energy release in the neutron-induced + fission of ^235U, ^238U, and ^239Pu", Nuclear Physics A 772:113--137 (2006). + + + Attributes + ---------- + fragments : Callable + Function that accepts incident neutron energy value(s) and returns the + kinetic energy of the fission daughter nuclides (after prompt neutron + emission). + prompt_neutrons : Callable + Function of energy that returns the kinetic energy of prompt fission + neutrons. + delayed_neutrons : Callable + Function of energy that returns the kinetic energy of delayed neutrons + emitted from fission products. + prompt_photons : Callable + Function of energy that returns the kinetic energy of prompt fission + photons. + delayed_photons : Callable + Function of energy that returns the kinetic energy of delayed photons. + betas : Callable + Function of energy that returns the kinetic energy of delayed beta + particles. + neutrinos : Callable + Function of energy that returns the kinetic energy of neutrinos. + recoverable : Callable + Function of energy that returns the kinetic energy of all products that + can be absorbed in the reactor (all of the energy except for the + neutrinos). + total : Callable + Function of energy that returns the kinetic energy of all products. + q_prompt : Callable + Function of energy that returns the prompt fission Q-value (fragments + + prompt neutrons + prompt photons - incident neutron energy). + q_recoverable : Callable + Function of energy that returns the recoverable fission Q-value + (total release - neutrinos - incident neutron energy). This value is + sometimes referred to as the pseudo-Q-value. + q_total : Callable + Function of energy that returns the total fission Q-value (total release + - incident neutron energy). + form : str + Format used to compute the energy-dependence of the data. Either + 'Sher-Beck' or 'Madland'. + + """ def __init__(self): self._fragments = None self._prompt_neutrons = None @@ -453,8 +528,10 @@ class FissionEnergyRelease(object): obj.neutrinos = Polynomial(group['neutrinos'].value) if group.attrs['format'].decode() == 'Madland': + obj.form = 'Madland' obj.prompt_neutrons = Polynomial(group['prompt_neutrons'].value) elif group.attrs['format'].decode() == 'Sher-Beck': + obj.form = 'Sher-Beck' obj.prompt_neutrons = Tabulated1D.from_hdf5( group['prompt_neutrons']) else: @@ -471,7 +548,7 @@ class FissionEnergyRelease(object): fname : str Path to an HDF5 file containing fission energy release data. This file should have been generated form the - openmc.data.write_compact_458_library function. + :func:`openmc.data.write_compact_458_library` function. incident_neutron : openmc.data.IncidentNeutron Corresponding incident neutron dataset From ef89d40479015f673851020b2749993f771bbe33 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Wed, 3 Aug 2016 11:35:42 -0500 Subject: [PATCH 19/49] Add fission energy release test, score docs --- docs/source/usersguide/input.rst | 21 +++++++++++++++++++++ tests/test_tallies/inputs_true.dat | 2 +- tests/test_tallies/results_true.dat | 2 +- tests/test_tallies/test_tallies.py | 5 +++-- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index e530097ded..9ed30afeb8 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1809,6 +1809,27 @@ The ```` element accepts the following sub-elements: | |:math:`\gamma`-rays are assumed to deposit their | | |energy locally. Units are MeV per source particle. | +----------------------+---------------------------------------------------+ + |fission-q-prompt |The prompt fission energy production rate. This | + | |energy comes in the form of fission fragment | + | |nuclei, prompt neutrons, and prompt | + | |:math:`\gamma`-rays. This value depends on the | + | |incident energy and it requires that the nuclear | + | |data library contains the optional fission energy | + | |release data. Energy is assumed to be deposited | + | |locally. Units are MeV per source particle. | + +----------------------+---------------------------------------------------+ + |fission-q-recoverable |The recoverable fission energy production rate. | + | |This energy comes in the form of fission fragment | + | |nuclei, prompt and delayed neutrons, prompt and | + | |delayed :math:`\gamma`-rays, and delayed | + | |:math:`\beta`-rays. This tally differs from the | + | |kappa-fission tally in that it is dependent on | + | |incident neutron energy and it requires that the | + | |nuclear data library contains the optional fission | + | |energy release data. Energy is assumed to be | + | |deposited locally. Units are MeV per source | + | |paticle. | + +----------------------+---------------------------------------------------+ .. note:: The ``analog`` estimator is actually identical to the ``collision`` diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index 9d67bc0d03..f5390eea12 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -930af242a043f2676a000dbc5a2db6b148edcb31ed8c87dbaa35a8efb37a3be8cff30cdf4dc03f9c5c7eb4021f7e4c3327e64681cdd8fd8722c95c69db850227 \ No newline at end of file +1bef757d276362fdcd9405096b4cdcbd894f9215ed406493486a45193729be446c9a12242c887f89b6e209ec5beaaacb04dee2fd61e72b4f5c6a8712b776ed6e \ No newline at end of file diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index 7aa65e1c19..7d4763f98d 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -a51db2a4efc681805f85968e04411dc33beee0532c202f5179b9a82880ab60a75e53fa9141c81045ea1d2842372f2d8da900326f09382ea61dd80a3c9b43bba1 \ No newline at end of file +f8ad60a94994e6b126b64b8a3e10ac3647314fff37558f9e32f174e6baf944aa2e617ad15f3aa6d6b3fc4e4ead944afb3ca2ea606b40e50bf96e7ad86c86a12b \ No newline at end of file diff --git a/tests/test_tallies/test_tallies.py b/tests/test_tallies/test_tallies.py index ba0098513c..387be8af51 100644 --- a/tests/test_tallies/test_tallies.py +++ b/tests/test_tallies/test_tallies.py @@ -123,8 +123,9 @@ class TalliesTestHarness(PyAPITestHarness): t.filters = [cell_filter] t.scores = ['absorption', 'delayed-nu-fission', 'events', 'fission', 'inverse-velocity', 'kappa-fission', '(n,2n)', '(n,n1)', - '(n,gamma)', 'nu-fission', 'scatter', 'elastic', 'total', - 'prompt-nu-fission'] + '(n,gamma)', 'nu-fission', 'scatter', 'elastic', + 'total', 'prompt-nu-fission', 'fission-q-prompt', + 'fission-q-recoverable'] score_tallies[0].estimator = 'tracklength' score_tallies[1].estimator = 'analog' score_tallies[2].estimator = 'collision' From 4ff005b439481439f74b1c5d8e2ae9dda50d07d2 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Wed, 3 Aug 2016 15:53:18 -0500 Subject: [PATCH 20/49] Fix incident neutron energy subtraction --- openmc/data/fission_energy.py | 4 ++-- src/endf.F90 | 4 ++++ tests/test_tallies/results_true.dat | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index d7fe5fa720..334231a9f6 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -603,12 +603,12 @@ class FissionEnergyRelease(object): data=self.prompt_neutrons.coef) q_prompt = (self.fragments + self.prompt_neutrons + - self.prompt_photons + Polynomial((-1.0, 0.0))) + self.prompt_photons + Polynomial((0.0, -1.0))) group.create_dataset('q_prompt', data=q_prompt.coef) q_recoverable = (self.fragments + self.prompt_neutrons + self.delayed_neutrons + self.prompt_photons + self.delayed_photons + self.betas + - Polynomial((-1.0, 0.0))) + Polynomial((0.0, -1.0))) group.create_dataset('q_recoverable', data=q_recoverable.coef) elif self.form == 'Sher-Beck': group.attrs['format'] = np.string_('Sher-Beck') diff --git a/src/endf.F90 b/src/endf.F90 index a836a54397..833082e1c7 100644 --- a/src/endf.F90 +++ b/src/endf.F90 @@ -60,6 +60,10 @@ contains string = "events" case (SCORE_INVERSE_VELOCITY) string = "inverse-velocity" + case (SCORE_FISS_Q_PROMPT) + string = "fission-q-prompt" + case (SCORE_FISS_Q_RECOV) + string = "fission-q-recoverable" ! Normal ENDF-based reactions case (TOTAL_XS) diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index 7d4763f98d..818d99a92b 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -f8ad60a94994e6b126b64b8a3e10ac3647314fff37558f9e32f174e6baf944aa2e617ad15f3aa6d6b3fc4e4ead944afb3ca2ea606b40e50bf96e7ad86c86a12b \ No newline at end of file +a6e5480c66e6510687bf281983b3f387da45005bb08d8cd0aa629e53c5a42a1b2fa8d76345ad2df497d85f2b273fbc5edc36105a71a73c1107479ca0af8329f6 \ No newline at end of file From d19ea4f68fd4a424271103c0dabf12461870eadd Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 4 Aug 2016 15:03:55 -0400 Subject: [PATCH 21/49] changed mdgxs distribcell test to produce non-zero results --- .../inputs_true.dat | 2 +- .../results_true.dat | 42 +++++++++---------- .../test_mdgxs_library_distribcell.py | 8 +++- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/tests/test_mdgxs_library_distribcell/inputs_true.dat b/tests/test_mdgxs_library_distribcell/inputs_true.dat index 9b07e293ee..31a7a7f904 100644 --- a/tests/test_mdgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mdgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -2d7ef183881fb47ba66ac4ff60a4e510f7b85361aca6dbbe6df2dc89b8492ad3bacbde747803532670bf207ec586dab910448fc1e49f2e57a3bf93256d24442c \ No newline at end of file +d3cf661e7fd29b0bbd6e6a464bb3b0b48a798dbd5c701246fd3c904f87c0d07ad995fc07f5b0a6c665449b7f5c92f68968e3947690794a0b743ea38a7f43f95f \ No newline at end of file diff --git a/tests/test_mdgxs_library_distribcell/results_true.dat b/tests/test_mdgxs_library_distribcell/results_true.dat index 22aeef3967..67f65fc301 100644 --- a/tests/test_mdgxs_library_distribcell/results_true.dat +++ b/tests/test_mdgxs_library_distribcell/results_true.dat @@ -1,21 +1,21 @@ - avg(distribcell) delayedgroup group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0 0 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0 0 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0 0 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0 0 -4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0 0 -5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0 0 - avg(distribcell) delayedgroup group out nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0 0 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0 0 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0 0 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0 0 -4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0 0 -5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0 0 - avg(distribcell) delayedgroup group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0 0 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0 0 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0 0 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0 0 -4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0 0 -5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0 0 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0,) 1 1 total 0.000021 0.000002 +1 (0,) 2 1 total 0.000110 0.000008 +2 (0,) 3 1 total 0.000107 0.000008 +3 (0,) 4 1 total 0.000249 0.000018 +4 (0,) 5 1 total 0.000112 0.000008 +5 (0,) 6 1 total 0.000046 0.000003 + avg(distribcell) delayedgroup group out nuclide mean std. dev. +0 (0,) 1 1 total 0 0.000000 +1 (0,) 2 1 total 1 0.869128 +2 (0,) 3 1 total 1 1.414214 +3 (0,) 4 1 total 1 0.360359 +4 (0,) 5 1 total 0 0.000000 +5 (0,) 6 1 total 0 0.000000 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0,) 1 1 total 0.000227 0.000022 +1 (0,) 2 1 total 0.001214 0.000115 +2 (0,) 3 1 total 0.001184 0.000111 +3 (0,) 4 1 total 0.002752 0.000257 +4 (0,) 5 1 total 0.001231 0.000113 +5 (0,) 6 1 total 0.000512 0.000047 diff --git a/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py b/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py index 48b3758715..df4fc184d3 100644 --- a/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py +++ b/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py @@ -6,12 +6,16 @@ import glob import hashlib sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness +from input_set import PinCellInputSet import openmc import openmc.mgxs class MDGXSTestHarness(PyAPITestHarness): def _build_inputs(self): + # Set the input set to use the pincell model + self._input_set = PinCellInputSet() + # Generate inputs using parent class routine super(MDGXSTestHarness, self)._build_inputs() @@ -31,8 +35,8 @@ class MDGXSTestHarness(PyAPITestHarness): self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.delayed_groups = delayed_groups self.mgxs_lib.domain_type = 'distribcell' - material_cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() - self.mgxs_lib.domains = [material_cells[-1]] + cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() + self.mgxs_lib.domains = [c for c in cells if c.name == 'cell 1'] self.mgxs_lib.build_library() # Initialize a tallies file From ab96c3d874d62604d1efc4957aff88f9d3c88ed0 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 4 Aug 2016 16:37:53 -0400 Subject: [PATCH 22/49] fixed printing of x-min surface current to tallies.out --- src/output.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/output.F90 b/src/output.F90 index 3b0e2c7835..579735007e 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -1035,7 +1035,7 @@ contains ! Left Surface matching_bins(i_filter_mesh) = & mesh_indices_to_bin(m, (/ i, j, k /)) - matching_bins(i_filter_surf) = OUT_RIGHT + matching_bins(i_filter_surf) = OUT_LEFT filter_index = sum((matching_bins(1:size(t % filters)) - 1) & * t % stride) + 1 write(UNIT=unit_tally, FMT='(5X,A,T35,A,"+/- ",A)') & From 469c7ff38ef09f3017825120091e4b7e895fecd9 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 5 Aug 2016 08:37:57 -0400 Subject: [PATCH 23/49] added mdgxs tallies to mgxs tests and addressed other PR comments --- openmc/mgxs/groups.py | 12 +- openmc/mgxs/library.py | 7 +- src/cmfd_data.F90 | 2 +- .../inputs_true.dat | 2 +- .../results_true.dat | 63 ++++++++++ .../test_mgxs_library_condense.py | 8 +- .../inputs_true.dat | 2 +- .../results_true.dat | 105 +++++++++------- .../test_mgxs_library_distribcell.py | 16 ++- tests/test_mgxs_library_hdf5/inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/results_true.dat | 117 ++++++++++++++++++ .../test_mgxs_library_hdf5.py | 8 +- tests/test_mgxs_library_mesh/inputs_true.dat | 2 +- tests/test_mgxs_library_mesh/results_true.dat | 78 ++++++++++++ .../test_mgxs_library_mesh.py | 7 +- .../inputs_true.dat | 2 +- .../results_true.dat | 117 ++++++++++++++++++ .../test_mgxs_library_no_nuclides.py | 8 +- tests/test_score_current/results_true.dat | 2 +- 19 files changed, 493 insertions(+), 67 deletions(-) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 881597c7b2..c0eaa27c17 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -376,9 +376,10 @@ class DelayedGroups(object): # Check that the groups are within [1, MAX_DELAYED_GROUPS] for group in groups: cv.check_greater_than('delayed group', group, 0) - cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS + 1) + cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS, + equality=True) - self._groups = np.array(groups, dtype=int) + self._groups = np.asarray(groups, dtype=int) def can_merge(self, other): """Determine if delayed groups can be merged with another. @@ -395,10 +396,7 @@ class DelayedGroups(object): """ - if not isinstance(other, DelayedGroups): - return False - else: - return True + return isinstance(other, DelayedGroups) def merge(self, other): """Merge this delayed groups with another. @@ -424,7 +422,7 @@ class DelayedGroups(object): # Merge unique filter bins groups = np.concatenate((self.groups, other.groups)) groups = np.unique(groups) - groups = sorted(groups) + groups.sort() # Assign groups to merged groups merged_groups.groups = list(groups) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 56399ee2f0..5a4e2c94d4 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -255,8 +255,7 @@ class Library(object): @mgxs_types.setter def mgxs_types(self, mgxs_types): - all_mgxs_types = np.append(openmc.mgxs.MGXS_TYPES, - openmc.mgxs.MDGXS_TYPES) + all_mgxs_types = openmc.mgxs.MGXS_TYPES + openmc.mgxs.MDGXS_TYPES if mgxs_types == 'all': self._mgxs_types = all_mgxs_types else: @@ -270,7 +269,7 @@ class Library(object): cv.check_type('by_nuclide', by_nuclide, bool) if by_nuclide == True and self.domain_type == 'mesh': - raise ValueError('Unable to create MGXS library by nuclide with ' + + raise ValueError('Unable to create MGXS library by nuclide with ' 'mesh domain') self._by_nuclide = by_nuclide @@ -280,7 +279,7 @@ class Library(object): cv.check_value('domain type', domain_type, openmc.mgxs.DOMAIN_TYPES) if self.by_nuclide == True and domain_type == 'mesh': - raise ValueError('Unable to create MGXS library by nuclide with ' + + raise ValueError('Unable to create MGXS library by nuclide with ' 'mesh domain') self._domain_type = domain_type diff --git a/src/cmfd_data.F90 b/src/cmfd_data.F90 index bda12f27b4..d74c1b17e0 100644 --- a/src/cmfd_data.F90 +++ b/src/cmfd_data.F90 @@ -254,7 +254,7 @@ contains ! Right surface if (i < nx) then matching_bins(i_filter_mesh) = mesh_indices_to_bin(m, & - (/ i+1, j, k /) ) + (/ i+1, j, k /) ) matching_bins(i_filter_surf) = OUT_LEFT score_index = sum((matching_bins(1:size(t % filters)) - 1) & * t % stride) + 1 ! incoming diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index 0c648376e8..e58015868a 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e \ No newline at end of file +08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/results_true.dat b/tests/test_mgxs_library_condense/results_true.dat index ae768cbe67..d1a964a860 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -40,6 +40,27 @@ 0 10000 1 total 4.996730e-07 3.650635e-08 material group in nuclide mean std. dev. 0 10000 1 total 0.090004 0.006367 + material delayedgroup group in nuclide mean std. dev. +0 10000 1 1 total 0.000021 0.000001 +1 10000 2 1 total 0.000110 0.000008 +2 10000 3 1 total 0.000107 0.000007 +3 10000 4 1 total 0.000249 0.000017 +4 10000 5 1 total 0.000112 0.000007 +5 10000 6 1 total 0.000046 0.000003 + material delayedgroup group out nuclide mean std. dev. +0 10000 1 1 total 0.0 0.000000 +1 10000 2 1 total 1.0 0.869128 +2 10000 3 1 total 1.0 1.414214 +3 10000 4 1 total 1.0 0.360359 +4 10000 5 1 total 0.0 0.000000 +5 10000 6 1 total 0.0 0.000000 + material delayedgroup group in nuclide mean std. dev. +0 10000 1 1 total 0.000227 0.000020 +1 10000 2 1 total 0.001214 0.000108 +2 10000 3 1 total 0.001184 0.000104 +3 10000 4 1 total 0.002752 0.000240 +4 10000 5 1 total 0.001231 0.000105 +5 10000 6 1 total 0.000512 0.000044 material group in nuclide mean std. dev. 0 10001 1 total 0.311594 0.013793 material group in nuclide mean std. dev. @@ -82,6 +103,27 @@ 0 10001 1 total 5.454760e-07 4.949800e-08 material group in nuclide mean std. dev. 0 10001 1 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +0 10001 1 1 total 0.0 0.0 +1 10001 2 1 total 0.0 0.0 +2 10001 3 1 total 0.0 0.0 +3 10001 4 1 total 0.0 0.0 +4 10001 5 1 total 0.0 0.0 +5 10001 6 1 total 0.0 0.0 + material delayedgroup group out nuclide mean std. dev. +0 10001 1 1 total 0.0 0.0 +1 10001 2 1 total 0.0 0.0 +2 10001 3 1 total 0.0 0.0 +3 10001 4 1 total 0.0 0.0 +4 10001 5 1 total 0.0 0.0 +5 10001 6 1 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +0 10001 1 1 total 0.0 0.0 +1 10001 2 1 total 0.0 0.0 +2 10001 3 1 total 0.0 0.0 +3 10001 4 1 total 0.0 0.0 +4 10001 5 1 total 0.0 0.0 +5 10001 6 1 total 0.0 0.0 material group in nuclide mean std. dev. 0 10002 1 total 0.904999 0.043964 material group in nuclide mean std. dev. @@ -124,3 +166,24 @@ 0 10002 1 total 5.773006e-07 5.322132e-08 material group in nuclide mean std. dev. 0 10002 1 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +0 10002 1 1 total 0.0 0.0 +1 10002 2 1 total 0.0 0.0 +2 10002 3 1 total 0.0 0.0 +3 10002 4 1 total 0.0 0.0 +4 10002 5 1 total 0.0 0.0 +5 10002 6 1 total 0.0 0.0 + material delayedgroup group out nuclide mean std. dev. +0 10002 1 1 total 0.0 0.0 +1 10002 2 1 total 0.0 0.0 +2 10002 3 1 total 0.0 0.0 +3 10002 4 1 total 0.0 0.0 +4 10002 5 1 total 0.0 0.0 +5 10002 6 1 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +0 10002 1 1 total 0.0 0.0 +1 10002 2 1 total 0.0 0.0 +2 10002 3 1 total 0.0 0.0 +3 10002 4 1 total 0.0 0.0 +4 10002 5 1 total 0.0 0.0 +5 10002 6 1 total 0.0 0.0 diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index 5571b59f2e..b849391690 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -23,12 +23,18 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + # Initialize a six-delayed-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False + # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'material' self.mgxs_lib.build_library() diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 055ce35a57..64cd6b748d 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -2d948f3b12293294eaeca231a3df9d51195379e8bb38dd3e68d3bc512a7d08ed52a1109054ca381684ec127268710f6d6e9210ac8154c9b379608e996627624a \ No newline at end of file +5e4bd179eeb955f61e01dc2a486e3fefd2cef7859390f12a817cd5412359766d7bfe0bf3f8553e8d28af0844ee04a4ebaad6510ec6157ee836d631a2a2b3baec \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index c21ca09e99..fb301be61f 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,42 +1,63 @@ - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.145934 0.553822 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.718919 0.520644 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.718919 0.520644 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.019762 0.010629 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.019762 0.010629 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.126172 0.54344 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.142547 0.570131 - avg(distribcell) group in group out nuclide moment mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P0 1.142547 0.570131 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.447381 0.216322 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.141202 0.066504 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.039228 0.024621 - avg(distribcell) group in group out nuclide moment mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P0 1.142547 0.570131 -1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.447381 0.216322 -2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.141202 0.066504 -3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.039228 0.024621 - avg(distribcell) group in group out nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 1.0 0.529717 - avg(distribcell) group in group out nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.0 0.0 - avg(distribcell) group out nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 - avg(distribcell) group out nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.000001 6.946255e-07 - avg(distribcell) group in nuclide mean std. dev. -0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.0 0.0 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.453624 0.02261 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.400852 0.024589 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.400852 0.024589 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.064903 0.004684 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.028048 0.004982 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.036855 0.002749 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.090649 0.006763 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 7.137955 0.532092 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.388721 0.018415 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.389304 0.023619 + avg(distribcell) group in group out nuclide moment mean std. dev. +0 (0,) 1 1 total P0 0.389304 0.023619 +1 (0,) 1 1 total P1 0.046224 0.005672 +2 (0,) 1 1 total P2 0.017984 0.002178 +3 (0,) 1 1 total P3 0.006628 0.001620 + avg(distribcell) group in group out nuclide moment mean std. dev. +0 (0,) 1 1 total P0 0.389304 0.023619 +1 (0,) 1 1 total P1 0.046224 0.005672 +2 (0,) 1 1 total P2 0.017984 0.002178 +3 (0,) 1 1 total P3 0.006628 0.001620 + avg(distribcell) group in group out nuclide mean std. dev. +0 (0,) 1 1 total 1.0 0.066327 + avg(distribcell) group in group out nuclide mean std. dev. +0 (0,) 1 1 total 0.085835 0.004328 + avg(distribcell) group out nuclide mean std. dev. +0 (0,) 1 total 1.0 0.046071 + avg(distribcell) group out nuclide mean std. dev. +0 (0,) 1 total 1.0 0.051471 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 4.996730e-07 3.741595e-08 + avg(distribcell) group in nuclide mean std. dev. +0 (0,) 1 total 0.090004 0.006717 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0,) 1 1 total 0.000021 0.000002 +1 (0,) 2 1 total 0.000110 0.000008 +2 (0,) 3 1 total 0.000107 0.000008 +3 (0,) 4 1 total 0.000249 0.000018 +4 (0,) 5 1 total 0.000112 0.000008 +5 (0,) 6 1 total 0.000046 0.000003 + avg(distribcell) delayedgroup group out nuclide mean std. dev. +0 (0,) 1 1 total 0.0 0.000000 +1 (0,) 2 1 total 1.0 0.869128 +2 (0,) 3 1 total 1.0 1.414214 +3 (0,) 4 1 total 1.0 0.360359 +4 (0,) 5 1 total 0.0 0.000000 +5 (0,) 6 1 total 0.0 0.000000 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0,) 1 1 total 0.000227 0.000022 +1 (0,) 2 1 total 0.001214 0.000115 +2 (0,) 3 1 total 0.001184 0.000111 +3 (0,) 4 1 total 0.002752 0.000257 +4 (0,) 5 1 total 0.001231 0.000113 +5 (0,) 6 1 total 0.000512 0.000047 diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py index 30593e54b5..d03f003134 100644 --- a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -6,29 +6,39 @@ import glob import hashlib sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness +from input_set import PinCellInputSet import openmc import openmc.mgxs class MGXSTestHarness(PyAPITestHarness): def _build_inputs(self): + # Set the input set to use the pincell model + self._input_set = PinCellInputSet() + # Generate inputs using parent class routine super(MGXSTestHarness, self)._build_inputs() # Initialize a one-group structure energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) + # Initialize a six-delayed-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False + # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'distribcell' - material_cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() - self.mgxs_lib.domains = [material_cells[-1]] + cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() + self.mgxs_lib.domains = [c for c in cells if c.name == 'cell 1'] self.mgxs_lib.build_library() # Initialize a tallies file diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index 0c648376e8..e58015868a 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e \ No newline at end of file +08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index b2bd28f279..3108573b35 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -72,6 +72,45 @@ domain=10000 type=inverse-velocity domain=10000 type=prompt-nu-fission [ 0.01923922 0.46671903] [ 0.00130951 0.04141087] +domain=10000 type=delayed-nu-fission +[[ 2.29808234e-05 1.06974158e-04] + [ 1.43606337e-04 5.52167907e-04] + [ 1.51382216e-04 5.27147681e-04] + [ 7.42603178e-05 2.22018043e-04] + [ 4.14908454e-05 9.10244403e-05] + [ 1.70016000e-05 3.81298119e-05]] +[[ 1.66363133e-06 9.49156242e-06] + [ 1.05907806e-05 4.89925426e-05] + [ 1.12671238e-05 4.67725567e-05] + [ 5.22610273e-06 1.87563195e-05] + [ 2.99830766e-06 7.68984041e-06] + [ 1.22654684e-06 3.22124663e-06]] +domain=10000 type=chi-delayed +[[ 0. 0.] + [ 1. 0.] + [ 1. 0.] + [ 1. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0. ] + [ 0.86912776 0. ] + [ 1.41421356 0. ] + [ 0.36035904 0. ] + [ 0. 0. ] + [ 0. 0. ]] +domain=10000 type=beta +[[ 4.89188107e-05 2.27713711e-04] + [ 3.05691886e-04 1.17538858e-03] + [ 3.22244241e-04 1.12212853e-03] + [ 3.82159891e-03 1.14255357e-02] + [ 2.13520995e-03 4.68431744e-03] + [ 8.74939644e-04 1.96224379e-03]] +[[ 4.67388620e-06 2.46946810e-05] + [ 2.95223877e-05 1.27466393e-04] + [ 3.12885004e-05 1.21690543e-04] + [ 3.21434855e-04 1.09939816e-03] + [ 1.82980497e-04 4.50738567e-04] + [ 7.48899920e-05 1.88812772e-04]] domain=10001 type=total [ 0.31373767 0.3008214 ] [ 0.0155819 0.02805245] @@ -146,6 +185,45 @@ domain=10001 type=inverse-velocity domain=10001 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] +domain=10001 type=delayed-nu-fission +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10001 type=chi-delayed +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10001 type=beta +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] domain=10002 type=total [ 0.66457226 2.05238401] [ 0.03121475 0.22434291] @@ -220,3 +298,42 @@ domain=10002 type=inverse-velocity domain=10002 type=prompt-nu-fission [ 0. 0.] [ 0. 0.] +domain=10002 type=delayed-nu-fission +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10002 type=chi-delayed +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +domain=10002 type=beta +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.] + [ 0. 0.]] diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index 000a1f8cb9..a9d4210479 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -24,12 +24,18 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + # Initialize a six-delayed-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False + # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'material' self.mgxs_lib.build_library() diff --git a/tests/test_mgxs_library_mesh/inputs_true.dat b/tests/test_mgxs_library_mesh/inputs_true.dat index e036b49a26..f62e0aa05e 100644 --- a/tests/test_mgxs_library_mesh/inputs_true.dat +++ b/tests/test_mgxs_library_mesh/inputs_true.dat @@ -1 +1 @@ -a4cd030bea212e45fdb159e75a7fb3d1947e9bf3d0384ac5d37a72298d67dcfdd1b9eb5c6af8ac6e5983bd5b47de9c17a2ea472b467b7222a4909ee070bf1ca3 \ No newline at end of file +5f167bdd4d6ae5873d48483e85aceaec8a934239ed5a50ef6f6500ce204f5851ae330621a5007f3b3d6bdab49f2cd627d011c1f6e6983fec958a6984eb9cb7ca \ No newline at end of file diff --git a/tests/test_mgxs_library_mesh/results_true.dat b/tests/test_mgxs_library_mesh/results_true.dat index 03019cfd3d..2d641cc952 100644 --- a/tests/test_mgxs_library_mesh/results_true.dat +++ b/tests/test_mgxs_library_mesh/results_true.dat @@ -130,3 +130,81 @@ 1 1 2 1 1 total 0.028922 0.006394 2 2 1 1 1 total 0.022467 0.004039 3 2 2 1 1 total 0.024923 0.009632 + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.000004 4.432732e-07 +1 1 1 1 2 1 total 0.000026 2.653319e-06 +2 1 1 1 3 1 total 0.000024 2.402270e-06 +3 1 1 1 4 1 total 0.000054 5.464055e-06 +4 1 1 1 5 1 total 0.000026 2.663025e-06 +5 1 1 1 6 1 total 0.000010 1.038005e-06 +6 1 2 1 1 1 total 0.000005 1.098837e-06 +7 1 2 1 2 1 total 0.000029 6.436855e-06 +8 1 2 1 3 1 total 0.000027 5.926286e-06 +9 1 2 1 4 1 total 0.000061 1.359391e-05 +10 1 2 1 5 1 total 0.000029 6.489015e-06 +11 1 2 1 6 1 total 0.000011 2.574270e-06 +12 2 1 1 1 1 total 0.000004 6.987770e-07 +13 2 1 1 2 1 total 0.000023 4.115234e-06 +14 2 1 1 3 1 total 0.000021 3.816392e-06 +15 2 1 1 4 1 total 0.000049 8.885822e-06 +16 2 1 1 5 1 total 0.000024 4.378290e-06 +17 2 1 1 6 1 total 0.000009 1.745695e-06 +18 2 2 1 1 1 total 0.000004 1.660497e-06 +19 2 2 1 2 1 total 0.000025 9.701974e-06 +20 2 2 1 3 1 total 0.000023 9.005217e-06 +21 2 2 1 4 1 total 0.000054 2.084107e-05 +22 2 2 1 5 1 total 0.000026 9.981045e-06 +23 2 2 1 6 1 total 0.000010 3.987979e-06 + mesh 1 delayedgroup group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.0 0.000000 +1 1 1 1 2 1 total 0.0 0.000000 +2 1 1 1 3 1 total 0.0 0.000000 +3 1 1 1 4 1 total 1.0 1.414214 +4 1 1 1 5 1 total 0.0 0.000000 +5 1 1 1 6 1 total 0.0 0.000000 +6 1 2 1 1 1 total 0.0 0.000000 +7 1 2 1 2 1 total 0.0 0.000000 +8 1 2 1 3 1 total 0.0 0.000000 +9 1 2 1 4 1 total 0.0 0.000000 +10 1 2 1 5 1 total 0.0 0.000000 +11 1 2 1 6 1 total 0.0 0.000000 +12 2 1 1 1 1 total 0.0 0.000000 +13 2 1 1 2 1 total 0.0 0.000000 +14 2 1 1 3 1 total 0.0 0.000000 +15 2 1 1 4 1 total 0.0 0.000000 +16 2 1 1 5 1 total 0.0 0.000000 +17 2 1 1 6 1 total 0.0 0.000000 +18 2 2 1 1 1 total 0.0 0.000000 +19 2 2 1 2 1 total 0.0 0.000000 +20 2 2 1 3 1 total 0.0 0.000000 +21 2 2 1 4 1 total 0.0 0.000000 +22 2 2 1 5 1 total 0.0 0.000000 +23 2 2 1 6 1 total 0.0 0.000000 + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.000166 0.000023 +1 1 1 1 2 1 total 0.000989 0.000136 +2 1 1 1 3 1 total 0.000907 0.000123 +3 1 1 1 4 1 total 0.002087 0.000282 +4 1 1 1 5 1 total 0.001014 0.000137 +5 1 1 1 6 1 total 0.000400 0.000054 +6 1 2 1 1 1 total 0.000171 0.000039 +7 1 2 1 2 1 total 0.001003 0.000226 +8 1 2 1 3 1 total 0.000918 0.000208 +9 1 2 1 4 1 total 0.002100 0.000477 +10 1 2 1 5 1 total 0.000996 0.000228 +11 1 2 1 6 1 total 0.000394 0.000090 +12 2 1 1 1 1 total 0.000167 0.000030 +13 2 1 1 2 1 total 0.001002 0.000178 +14 2 1 1 3 1 total 0.000926 0.000165 +15 2 1 1 4 1 total 0.002149 0.000384 +16 2 1 1 5 1 total 0.001056 0.000189 +17 2 1 1 6 1 total 0.000417 0.000076 +18 2 2 1 1 1 total 0.000171 0.000082 +19 2 2 1 2 1 total 0.001007 0.000480 +20 2 2 1 3 1 total 0.000929 0.000445 +21 2 2 1 4 1 total 0.002143 0.001028 +22 2 2 1 5 1 total 0.001026 0.000492 +23 2 2 1 6 1 total 0.000408 0.000196 diff --git a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py index df7a0a5ae8..2db57254b4 100644 --- a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py +++ b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py @@ -18,14 +18,19 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize a one-group structure energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) + # Initialize a six-delayed-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'mesh' diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index 0c648376e8..e58015868a 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -e2cdca7ea5b3532050af5b12fac26d7ef212d2696bb1b73cdd00929b2243c40d100ad02438c7b090555b49815d0de6c48cf1b4ebf437a48bc80c2d2b4bad292e \ No newline at end of file +08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 141143c8c3..edd99b44c5 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -84,6 +84,45 @@ material group in nuclide mean std. dev. 1 10000 1 total 0.019239 0.001310 0 10000 2 total 0.466719 0.041411 + material delayedgroup group in nuclide mean std. dev. +1 10000 1 1 total 0.000023 0.000002 +3 10000 2 1 total 0.000144 0.000011 +5 10000 3 1 total 0.000151 0.000011 +7 10000 4 1 total 0.000074 0.000005 +9 10000 5 1 total 0.000041 0.000003 +11 10000 6 1 total 0.000017 0.000001 +0 10000 1 2 total 0.000107 0.000009 +2 10000 2 2 total 0.000552 0.000049 +4 10000 3 2 total 0.000527 0.000047 +6 10000 4 2 total 0.000222 0.000019 +8 10000 5 2 total 0.000091 0.000008 +10 10000 6 2 total 0.000038 0.000003 + material delayedgroup group out nuclide mean std. dev. +1 10000 1 1 total 0.0 0.000000 +3 10000 2 1 total 1.0 0.869128 +5 10000 3 1 total 1.0 1.414214 +7 10000 4 1 total 1.0 0.360359 +9 10000 5 1 total 0.0 0.000000 +11 10000 6 1 total 0.0 0.000000 +0 10000 1 2 total 0.0 0.000000 +2 10000 2 2 total 0.0 0.000000 +4 10000 3 2 total 0.0 0.000000 +6 10000 4 2 total 0.0 0.000000 +8 10000 5 2 total 0.0 0.000000 +10 10000 6 2 total 0.0 0.000000 + material delayedgroup group in nuclide mean std. dev. +1 10000 1 1 total 0.000049 0.000005 +3 10000 2 1 total 0.000306 0.000030 +5 10000 3 1 total 0.000322 0.000031 +7 10000 4 1 total 0.003822 0.000321 +9 10000 5 1 total 0.002135 0.000183 +11 10000 6 1 total 0.000875 0.000075 +0 10000 1 2 total 0.000228 0.000025 +2 10000 2 2 total 0.001175 0.000127 +4 10000 3 2 total 0.001122 0.000122 +6 10000 4 2 total 0.011426 0.001099 +8 10000 5 2 total 0.004684 0.000451 +10 10000 6 2 total 0.001962 0.000189 material group in nuclide mean std. dev. 1 10001 1 total 0.313738 0.015582 0 10001 2 total 0.300821 0.028052 @@ -170,6 +209,45 @@ material group in nuclide mean std. dev. 1 10001 1 total 0.0 0.0 0 10001 2 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +1 10001 1 1 total 0.0 0.0 +3 10001 2 1 total 0.0 0.0 +5 10001 3 1 total 0.0 0.0 +7 10001 4 1 total 0.0 0.0 +9 10001 5 1 total 0.0 0.0 +11 10001 6 1 total 0.0 0.0 +0 10001 1 2 total 0.0 0.0 +2 10001 2 2 total 0.0 0.0 +4 10001 3 2 total 0.0 0.0 +6 10001 4 2 total 0.0 0.0 +8 10001 5 2 total 0.0 0.0 +10 10001 6 2 total 0.0 0.0 + material delayedgroup group out nuclide mean std. dev. +1 10001 1 1 total 0.0 0.0 +3 10001 2 1 total 0.0 0.0 +5 10001 3 1 total 0.0 0.0 +7 10001 4 1 total 0.0 0.0 +9 10001 5 1 total 0.0 0.0 +11 10001 6 1 total 0.0 0.0 +0 10001 1 2 total 0.0 0.0 +2 10001 2 2 total 0.0 0.0 +4 10001 3 2 total 0.0 0.0 +6 10001 4 2 total 0.0 0.0 +8 10001 5 2 total 0.0 0.0 +10 10001 6 2 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +1 10001 1 1 total 0.0 0.0 +3 10001 2 1 total 0.0 0.0 +5 10001 3 1 total 0.0 0.0 +7 10001 4 1 total 0.0 0.0 +9 10001 5 1 total 0.0 0.0 +11 10001 6 1 total 0.0 0.0 +0 10001 1 2 total 0.0 0.0 +2 10001 2 2 total 0.0 0.0 +4 10001 3 2 total 0.0 0.0 +6 10001 4 2 total 0.0 0.0 +8 10001 5 2 total 0.0 0.0 +10 10001 6 2 total 0.0 0.0 material group in nuclide mean std. dev. 1 10002 1 total 0.664572 0.031215 0 10002 2 total 2.052384 0.224343 @@ -256,3 +334,42 @@ material group in nuclide mean std. dev. 1 10002 1 total 0.0 0.0 0 10002 2 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +1 10002 1 1 total 0.0 0.0 +3 10002 2 1 total 0.0 0.0 +5 10002 3 1 total 0.0 0.0 +7 10002 4 1 total 0.0 0.0 +9 10002 5 1 total 0.0 0.0 +11 10002 6 1 total 0.0 0.0 +0 10002 1 2 total 0.0 0.0 +2 10002 2 2 total 0.0 0.0 +4 10002 3 2 total 0.0 0.0 +6 10002 4 2 total 0.0 0.0 +8 10002 5 2 total 0.0 0.0 +10 10002 6 2 total 0.0 0.0 + material delayedgroup group out nuclide mean std. dev. +1 10002 1 1 total 0.0 0.0 +3 10002 2 1 total 0.0 0.0 +5 10002 3 1 total 0.0 0.0 +7 10002 4 1 total 0.0 0.0 +9 10002 5 1 total 0.0 0.0 +11 10002 6 1 total 0.0 0.0 +0 10002 1 2 total 0.0 0.0 +2 10002 2 2 total 0.0 0.0 +4 10002 3 2 total 0.0 0.0 +6 10002 4 2 total 0.0 0.0 +8 10002 5 2 total 0.0 0.0 +10 10002 6 2 total 0.0 0.0 + material delayedgroup group in nuclide mean std. dev. +1 10002 1 1 total 0.0 0.0 +3 10002 2 1 total 0.0 0.0 +5 10002 3 1 total 0.0 0.0 +7 10002 4 1 total 0.0 0.0 +9 10002 5 1 total 0.0 0.0 +11 10002 6 1 total 0.0 0.0 +0 10002 1 2 total 0.0 0.0 +2 10002 2 2 total 0.0 0.0 +4 10002 3 2 total 0.0 0.0 +6 10002 4 2 total 0.0 0.0 +8 10002 5 2 total 0.0 0.0 +10 10002 6 2 total 0.0 0.0 diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py index 2c0a2e278c..d2e61a2da4 100644 --- a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -23,12 +23,18 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + # Initialize a six-delayed-group structure + delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False + # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.delayed_groups = delayed_groups self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'material' self.mgxs_lib.build_library() diff --git a/tests/test_score_current/results_true.dat b/tests/test_score_current/results_true.dat index 5d26226ae2..6b3beb4be8 100644 --- a/tests/test_score_current/results_true.dat +++ b/tests/test_score_current/results_true.dat @@ -1 +1 @@ -bafab1921a12146abb2bb29603b52b9cc28a5a950a7a6bb1e3f012c05891c310fad643760d4f148b04d0fef3d1f3e141d146e3a278d81cc6fc8187c37717c5e7 \ No newline at end of file +2800fad5519917ffc985094d3263a3e0aac1abf6acb0c25416264135b36141812cc8d7dafc01585b104b8d6ad03cd44b6ce277fdb7df5a3f859fe26e61244e2a \ No newline at end of file From 3c1dd4075dfde4e8bfc15a5a9d5c9e6207d99e67 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 5 Aug 2016 08:39:55 -0400 Subject: [PATCH 24/49] removed mdgxs tests --- .../inputs_true.dat | 1 - .../results_true.dat | 63 ---------- .../test_mdgxs_library_condense.py | 82 ------------ .../inputs_true.dat | 1 - .../results_true.dat | 21 ---- .../test_mdgxs_library_distribcell.py | 84 ------------- tests/test_mdgxs_library_hdf5/inputs_true.dat | 1 - .../test_mdgxs_library_hdf5/results_true.dat | 117 ------------------ .../test_mdgxs_library_hdf5.py | 93 -------------- tests/test_mdgxs_library_mesh/inputs_true.dat | 1 - .../test_mdgxs_library_mesh/results_true.dat | 78 ------------ .../test_mdgxs_library_mesh.py | 84 ------------- .../inputs_true.dat | 1 - .../results_true.dat | 117 ------------------ .../test_mdgxs_library_no_nuclides.py | 80 ------------ .../inputs_true.dat | 1 - .../results_true.dat | 1 - .../test_mdgxs_library_nuclides.py | 80 ------------ 18 files changed, 906 deletions(-) delete mode 100644 tests/test_mdgxs_library_condense/inputs_true.dat delete mode 100644 tests/test_mdgxs_library_condense/results_true.dat delete mode 100644 tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py delete mode 100644 tests/test_mdgxs_library_distribcell/inputs_true.dat delete mode 100644 tests/test_mdgxs_library_distribcell/results_true.dat delete mode 100644 tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py delete mode 100644 tests/test_mdgxs_library_hdf5/inputs_true.dat delete mode 100644 tests/test_mdgxs_library_hdf5/results_true.dat delete mode 100644 tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py delete mode 100644 tests/test_mdgxs_library_mesh/inputs_true.dat delete mode 100644 tests/test_mdgxs_library_mesh/results_true.dat delete mode 100644 tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py delete mode 100644 tests/test_mdgxs_library_no_nuclides/inputs_true.dat delete mode 100644 tests/test_mdgxs_library_no_nuclides/results_true.dat delete mode 100644 tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py delete mode 100644 tests/test_mdgxs_library_nuclides/inputs_true.dat delete mode 100644 tests/test_mdgxs_library_nuclides/results_true.dat delete mode 100644 tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py diff --git a/tests/test_mdgxs_library_condense/inputs_true.dat b/tests/test_mdgxs_library_condense/inputs_true.dat deleted file mode 100644 index 49fe693ee4..0000000000 --- a/tests/test_mdgxs_library_condense/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -9e8d8b468bdd81d996956d0d43eef5779b7b7d5ca3f6a1e628f10318748086183e45cf221edf7a274ff2dc6aff34f4411e21952740cdb7652477dfa0a1ffb5f2 \ No newline at end of file diff --git a/tests/test_mdgxs_library_condense/results_true.dat b/tests/test_mdgxs_library_condense/results_true.dat deleted file mode 100644 index 20cc048d14..0000000000 --- a/tests/test_mdgxs_library_condense/results_true.dat +++ /dev/null @@ -1,63 +0,0 @@ - material delayedgroup group in nuclide mean std. dev. -0 10000 1 1 total 0.000021 0.000001 -1 10000 2 1 total 0.000110 0.000008 -2 10000 3 1 total 0.000107 0.000007 -3 10000 4 1 total 0.000249 0.000017 -4 10000 5 1 total 0.000112 0.000007 -5 10000 6 1 total 0.000046 0.000003 - material delayedgroup group out nuclide mean std. dev. -0 10000 1 1 total 0 0.000000 -1 10000 2 1 total 1 0.869128 -2 10000 3 1 total 1 1.414214 -3 10000 4 1 total 1 0.360359 -4 10000 5 1 total 0 0.000000 -5 10000 6 1 total 0 0.000000 - material delayedgroup group in nuclide mean std. dev. -0 10000 1 1 total 0.000227 0.000020 -1 10000 2 1 total 0.001214 0.000108 -2 10000 3 1 total 0.001184 0.000104 -3 10000 4 1 total 0.002752 0.000240 -4 10000 5 1 total 0.001231 0.000105 -5 10000 6 1 total 0.000512 0.000044 - material delayedgroup group in nuclide mean std. dev. -0 10001 1 1 total 0 0 -1 10001 2 1 total 0 0 -2 10001 3 1 total 0 0 -3 10001 4 1 total 0 0 -4 10001 5 1 total 0 0 -5 10001 6 1 total 0 0 - material delayedgroup group out nuclide mean std. dev. -0 10001 1 1 total 0 0 -1 10001 2 1 total 0 0 -2 10001 3 1 total 0 0 -3 10001 4 1 total 0 0 -4 10001 5 1 total 0 0 -5 10001 6 1 total 0 0 - material delayedgroup group in nuclide mean std. dev. -0 10001 1 1 total 0 0 -1 10001 2 1 total 0 0 -2 10001 3 1 total 0 0 -3 10001 4 1 total 0 0 -4 10001 5 1 total 0 0 -5 10001 6 1 total 0 0 - material delayedgroup group in nuclide mean std. dev. -0 10002 1 1 total 0 0 -1 10002 2 1 total 0 0 -2 10002 3 1 total 0 0 -3 10002 4 1 total 0 0 -4 10002 5 1 total 0 0 -5 10002 6 1 total 0 0 - material delayedgroup group out nuclide mean std. dev. -0 10002 1 1 total 0 0 -1 10002 2 1 total 0 0 -2 10002 3 1 total 0 0 -3 10002 4 1 total 0 0 -4 10002 5 1 total 0 0 -5 10002 6 1 total 0 0 - material delayedgroup group in nuclide mean std. dev. -0 10002 1 1 total 0 0 -1 10002 2 1 total 0 0 -2 10002 3 1 total 0 0 -3 10002 4 1 total 0 0 -4 10002 5 1 total 0 0 -5 10002 6 1 total 0 0 diff --git a/tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py b/tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py deleted file mode 100644 index 75e40be909..0000000000 --- a/tests/test_mdgxs_library_condense/test_mdgxs_library_condense.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import glob -import hashlib -sys.path.insert(0, os.pardir) -from testing_harness import PyAPITestHarness -from input_set import PinCellInputSet -import openmc -import openmc.mgxs - - -class MDGXSTestHarness(PyAPITestHarness): - def _build_inputs(self): - # Set the input set to use the pincell model - self._input_set = PinCellInputSet() - - # Generate inputs using parent class routine - super(MDGXSTestHarness, self)._build_inputs() - - # Initialize a two-group structure - energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, - 20.]) - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) - - # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) - self.mgxs_lib.by_nuclide = False - - # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES - self.mgxs_lib.energy_groups = energy_groups - self.mgxs_lib.delayed_groups = delayed_groups - self.mgxs_lib.domain_type = 'material' - self.mgxs_lib.build_library() - - # Initialize a tallies file - self._input_set.tallies = openmc.Tallies() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) - self._input_set.tallies.export_to_xml() - - def _get_results(self, hash_output=False): - """Digest info in the statepoint and return as a string.""" - - # Read the statepoint file. - statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = openmc.StatePoint(statepoint) - - # Load the MGXS library from the statepoint - self.mgxs_lib.load_from_statepoint(sp) - - # Build a condensed 1-group MGXS Library - one_group = openmc.mgxs.EnergyGroups([0., 20.]) - condense_lib = self.mgxs_lib.get_condensed_library(one_group) - - # Build a string from Pandas Dataframe for each 1-group MGXS - outstr = '' - for domain in condense_lib.domains: - for mgxs_type in condense_lib.mgxs_types: - mgxs = condense_lib.get_mgxs(domain, mgxs_type) - df = mgxs.get_pandas_dataframe() - outstr += df.to_string() + '\n' - - # Hash the results if necessary - if hash_output: - sha512 = hashlib.sha512() - sha512.update(outstr.encode('utf-8')) - outstr = sha512.hexdigest() - - return outstr - - - def _cleanup(self): - super(MDGXSTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = MDGXSTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_mdgxs_library_distribcell/inputs_true.dat b/tests/test_mdgxs_library_distribcell/inputs_true.dat deleted file mode 100644 index 31a7a7f904..0000000000 --- a/tests/test_mdgxs_library_distribcell/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -d3cf661e7fd29b0bbd6e6a464bb3b0b48a798dbd5c701246fd3c904f87c0d07ad995fc07f5b0a6c665449b7f5c92f68968e3947690794a0b743ea38a7f43f95f \ No newline at end of file diff --git a/tests/test_mdgxs_library_distribcell/results_true.dat b/tests/test_mdgxs_library_distribcell/results_true.dat deleted file mode 100644 index 67f65fc301..0000000000 --- a/tests/test_mdgxs_library_distribcell/results_true.dat +++ /dev/null @@ -1,21 +0,0 @@ - avg(distribcell) delayedgroup group in nuclide mean std. dev. -0 (0,) 1 1 total 0.000021 0.000002 -1 (0,) 2 1 total 0.000110 0.000008 -2 (0,) 3 1 total 0.000107 0.000008 -3 (0,) 4 1 total 0.000249 0.000018 -4 (0,) 5 1 total 0.000112 0.000008 -5 (0,) 6 1 total 0.000046 0.000003 - avg(distribcell) delayedgroup group out nuclide mean std. dev. -0 (0,) 1 1 total 0 0.000000 -1 (0,) 2 1 total 1 0.869128 -2 (0,) 3 1 total 1 1.414214 -3 (0,) 4 1 total 1 0.360359 -4 (0,) 5 1 total 0 0.000000 -5 (0,) 6 1 total 0 0.000000 - avg(distribcell) delayedgroup group in nuclide mean std. dev. -0 (0,) 1 1 total 0.000227 0.000022 -1 (0,) 2 1 total 0.001214 0.000115 -2 (0,) 3 1 total 0.001184 0.000111 -3 (0,) 4 1 total 0.002752 0.000257 -4 (0,) 5 1 total 0.001231 0.000113 -5 (0,) 6 1 total 0.000512 0.000047 diff --git a/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py b/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py deleted file mode 100644 index df4fc184d3..0000000000 --- a/tests/test_mdgxs_library_distribcell/test_mdgxs_library_distribcell.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import glob -import hashlib -sys.path.insert(0, os.pardir) -from testing_harness import PyAPITestHarness -from input_set import PinCellInputSet -import openmc -import openmc.mgxs - - -class MDGXSTestHarness(PyAPITestHarness): - def _build_inputs(self): - # Set the input set to use the pincell model - self._input_set = PinCellInputSet() - - # Generate inputs using parent class routine - super(MDGXSTestHarness, self)._build_inputs() - - # Initialize a one-group structure - energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) - - # Initialize a six-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) - - # Initialize MGXS Library for a few cross section types - # for one material-filled cell in the geometry - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) - self.mgxs_lib.by_nuclide = False - - # Test all MDGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES - self.mgxs_lib.energy_groups = energy_groups - self.mgxs_lib.delayed_groups = delayed_groups - self.mgxs_lib.domain_type = 'distribcell' - cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() - self.mgxs_lib.domains = [c for c in cells if c.name == 'cell 1'] - self.mgxs_lib.build_library() - - # Initialize a tallies file - self._input_set.tallies = openmc.Tallies() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) - self._input_set.tallies.export_to_xml() - - def _get_results(self, hash_output=False): - """Digest info in the statepoint and return as a string.""" - - # Read the statepoint file. - statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = openmc.StatePoint(statepoint) - - # Load the MGXS library from the statepoint - self.mgxs_lib.load_from_statepoint(sp) - - # Average the MGXS across distribcell subdomains - avg_lib = self.mgxs_lib.get_subdomain_avg_library() - - # Build a string from Pandas Dataframe for each 1-group MGXS - outstr = '' - for domain in avg_lib.domains: - for mgxs_type in avg_lib.mgxs_types: - mgxs = avg_lib.get_mgxs(domain, mgxs_type) - df = mgxs.get_pandas_dataframe() - outstr += df.to_string() + '\n' - - # Hash the results if necessary - if hash_output: - sha512 = hashlib.sha512() - sha512.update(outstr.encode('utf-8')) - outstr = sha512.hexdigest() - - return outstr - - def _cleanup(self): - super(MDGXSTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = MDGXSTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_mdgxs_library_hdf5/inputs_true.dat b/tests/test_mdgxs_library_hdf5/inputs_true.dat deleted file mode 100644 index 49fe693ee4..0000000000 --- a/tests/test_mdgxs_library_hdf5/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -9e8d8b468bdd81d996956d0d43eef5779b7b7d5ca3f6a1e628f10318748086183e45cf221edf7a274ff2dc6aff34f4411e21952740cdb7652477dfa0a1ffb5f2 \ No newline at end of file diff --git a/tests/test_mdgxs_library_hdf5/results_true.dat b/tests/test_mdgxs_library_hdf5/results_true.dat deleted file mode 100644 index d1b6358716..0000000000 --- a/tests/test_mdgxs_library_hdf5/results_true.dat +++ /dev/null @@ -1,117 +0,0 @@ -domain=10000 type=delayed-nu-fission -[[ 2.29808234e-05 1.06974158e-04] - [ 1.43606337e-04 5.52167907e-04] - [ 1.51382216e-04 5.27147681e-04] - [ 7.42603178e-05 2.22018043e-04] - [ 4.14908454e-05 9.10244403e-05] - [ 1.70016000e-05 3.81298119e-05]] -[[ 1.66363133e-06 9.49156242e-06] - [ 1.05907806e-05 4.89925426e-05] - [ 1.12671238e-05 4.67725567e-05] - [ 5.22610273e-06 1.87563195e-05] - [ 2.99830766e-06 7.68984041e-06] - [ 1.22654684e-06 3.22124663e-06]] -domain=10000 type=chi-delayed -[[ 0. 0.] - [ 1. 0.] - [ 1. 0.] - [ 1. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0. ] - [ 0.86912776 0. ] - [ 1.41421356 0. ] - [ 0.36035904 0. ] - [ 0. 0. ] - [ 0. 0. ]] -domain=10000 type=beta -[[ 4.89188107e-05 2.27713711e-04] - [ 3.05691886e-04 1.17538858e-03] - [ 3.22244241e-04 1.12212853e-03] - [ 3.82159891e-03 1.14255357e-02] - [ 2.13520995e-03 4.68431744e-03] - [ 8.74939644e-04 1.96224379e-03]] -[[ 4.67388620e-06 2.46946810e-05] - [ 2.95223877e-05 1.27466393e-04] - [ 3.12885004e-05 1.21690543e-04] - [ 3.21434855e-04 1.09939816e-03] - [ 1.82980497e-04 4.50738567e-04] - [ 7.48899920e-05 1.88812772e-04]] -domain=10001 type=delayed-nu-fission -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -domain=10001 type=chi-delayed -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -domain=10001 type=beta -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -domain=10002 type=delayed-nu-fission -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -domain=10002 type=chi-delayed -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -domain=10002 type=beta -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] -[[ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.] - [ 0. 0.]] diff --git a/tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py b/tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py deleted file mode 100644 index 79e0edf7c2..0000000000 --- a/tests/test_mdgxs_library_hdf5/test_mdgxs_library_hdf5.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import glob -import hashlib -import h5py -sys.path.insert(0, os.pardir) -from testing_harness import PyAPITestHarness -from input_set import PinCellInputSet -import openmc -import openmc.mgxs - - -class MDGXSTestHarness(PyAPITestHarness): - def _build_inputs(self): - # Set the input set to use the pincell model - self._input_set = PinCellInputSet() - - # Generate inputs using parent class routine - super(MDGXSTestHarness, self)._build_inputs() - - # Initialize a two-group structure - energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, - 20.]) - - # Initialize a six-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) - - # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) - self.mgxs_lib.by_nuclide = False - - # Test all MDGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES - self.mgxs_lib.energy_groups = energy_groups - self.mgxs_lib.delayed_groups = delayed_groups - self.mgxs_lib.domain_type = 'material' - self.mgxs_lib.build_library() - - # Initialize a tallies file - self._input_set.tallies = openmc.Tallies() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) - self._input_set.tallies.export_to_xml() - - def _get_results(self, hash_output=False): - """Digest info in the statepoint and return as a string.""" - - # Read the statepoint file. - statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = openmc.StatePoint(statepoint) - - # Load the MGXS library from the statepoint - self.mgxs_lib.load_from_statepoint(sp) - - # Export the MGXS Library to an HDF5 file - self.mgxs_lib.build_hdf5_store(directory='.') - - # Open the MGXS HDF5 file - f = h5py.File('mgxs.h5', 'r') - - # Build a string from the datasets in the HDF5 file - outstr = '' - for domain in self.mgxs_lib.domains: - for mgxs_type in self.mgxs_lib.mgxs_types: - outstr += 'domain={0} type={1}\n'.format(domain.id, mgxs_type) - key = 'material/{0}/{1}/average'.format(domain.id, mgxs_type) - outstr += str(f[key][...]) + '\n' - key = 'material/{0}/{1}/std. dev.'.format(domain.id, mgxs_type) - outstr += str(f[key][...]) + '\n' - - # Close the MGXS HDF5 file - f.close() - - # Hash the results if necessary - if hash_output: - sha512 = hashlib.sha512() - sha512.update(outstr.encode('utf-8')) - outstr = sha512.hexdigest() - - return outstr - - def _cleanup(self): - super(MDGXSTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - f = os.path.join(os.getcwd(), 'mgxs.h5') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = MDGXSTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_mdgxs_library_mesh/inputs_true.dat b/tests/test_mdgxs_library_mesh/inputs_true.dat deleted file mode 100644 index 02a9147f88..0000000000 --- a/tests/test_mdgxs_library_mesh/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -f76b5d0cc2dbadd48d51918d8c82e4457e9ce3eafb191cd51394e420ba3ae80eccdff03098b276f7d3eb87f6a4616f1dd0e39e1892244a29d0f486ff2bf4ddbb \ No newline at end of file diff --git a/tests/test_mdgxs_library_mesh/results_true.dat b/tests/test_mdgxs_library_mesh/results_true.dat deleted file mode 100644 index 82f8014f90..0000000000 --- a/tests/test_mdgxs_library_mesh/results_true.dat +++ /dev/null @@ -1,78 +0,0 @@ - mesh 1 delayedgroup group in nuclide mean std. dev. - x y z -0 1 1 1 1 1 total 0.000004 4.432287e-07 -1 1 1 1 2 1 total 0.000026 2.652890e-06 -2 1 1 1 3 1 total 0.000024 2.402024e-06 -3 1 1 1 4 1 total 0.000054 5.463683e-06 -4 1 1 1 5 1 total 0.000026 2.662762e-06 -5 1 1 1 6 1 total 0.000010 1.037947e-06 -6 1 2 1 1 1 total 0.000005 1.099501e-06 -7 1 2 1 2 1 total 0.000029 6.440339e-06 -8 1 2 1 3 1 total 0.000027 5.929275e-06 -9 1 2 1 4 1 total 0.000061 1.359998e-05 -10 1 2 1 5 1 total 0.000029 6.491514e-06 -11 1 2 1 6 1 total 0.000011 2.575232e-06 -12 2 1 1 1 1 total 0.000004 6.988358e-07 -13 2 1 1 2 1 total 0.000023 4.116310e-06 -14 2 1 1 3 1 total 0.000021 3.817611e-06 -15 2 1 1 4 1 total 0.000049 8.889347e-06 -16 2 1 1 5 1 total 0.000024 4.380665e-06 -17 2 1 1 6 1 total 0.000009 1.746558e-06 -18 2 2 1 1 1 total 0.000004 1.661116e-06 -19 2 2 1 2 1 total 0.000025 9.704053e-06 -20 2 2 1 3 1 total 0.000023 9.007295e-06 -21 2 2 1 4 1 total 0.000054 2.084505e-05 -22 2 2 1 5 1 total 0.000026 9.981347e-06 -23 2 2 1 6 1 total 0.000010 3.988280e-06 - mesh 1 delayedgroup group out nuclide mean std. dev. - x y z -0 1 1 1 1 1 total 0 0.000000 -1 1 1 1 2 1 total 0 0.000000 -2 1 1 1 3 1 total 0 0.000000 -3 1 1 1 4 1 total 1 1.414214 -4 1 1 1 5 1 total 0 0.000000 -5 1 1 1 6 1 total 0 0.000000 -6 1 2 1 1 1 total 0 0.000000 -7 1 2 1 2 1 total 0 0.000000 -8 1 2 1 3 1 total 0 0.000000 -9 1 2 1 4 1 total 0 0.000000 -10 1 2 1 5 1 total 0 0.000000 -11 1 2 1 6 1 total 0 0.000000 -12 2 1 1 1 1 total 0 0.000000 -13 2 1 1 2 1 total 0 0.000000 -14 2 1 1 3 1 total 0 0.000000 -15 2 1 1 4 1 total 0 0.000000 -16 2 1 1 5 1 total 0 0.000000 -17 2 1 1 6 1 total 0 0.000000 -18 2 2 1 1 1 total 0 0.000000 -19 2 2 1 2 1 total 0 0.000000 -20 2 2 1 3 1 total 0 0.000000 -21 2 2 1 4 1 total 0 0.000000 -22 2 2 1 5 1 total 0 0.000000 -23 2 2 1 6 1 total 0 0.000000 - mesh 1 delayedgroup group in nuclide mean std. dev. - x y z -0 1 1 1 1 1 total 0.000166 0.000023 -1 1 1 1 2 1 total 0.000990 0.000136 -2 1 1 1 3 1 total 0.000907 0.000123 -3 1 1 1 4 1 total 0.002088 0.000282 -4 1 1 1 5 1 total 0.001014 0.000137 -5 1 1 1 6 1 total 0.000400 0.000054 -6 1 2 1 1 1 total 0.000171 0.000039 -7 1 2 1 2 1 total 0.001003 0.000226 -8 1 2 1 3 1 total 0.000919 0.000208 -9 1 2 1 4 1 total 0.002101 0.000478 -10 1 2 1 5 1 total 0.000997 0.000228 -11 1 2 1 6 1 total 0.000395 0.000090 -12 2 1 1 1 1 total 0.000168 0.000030 -13 2 1 1 2 1 total 0.001003 0.000178 -14 2 1 1 3 1 total 0.000927 0.000165 -15 2 1 1 4 1 total 0.002150 0.000385 -16 2 1 1 5 1 total 0.001057 0.000190 -17 2 1 1 6 1 total 0.000418 0.000076 -18 2 2 1 1 1 total 0.000171 0.000082 -19 2 2 1 2 1 total 0.001010 0.000481 -20 2 2 1 3 1 total 0.000932 0.000445 -21 2 2 1 4 1 total 0.002151 0.001030 -22 2 2 1 5 1 total 0.001030 0.000493 -23 2 2 1 6 1 total 0.000410 0.000197 diff --git a/tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py b/tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py deleted file mode 100644 index 88ee7213da..0000000000 --- a/tests/test_mdgxs_library_mesh/test_mdgxs_library_mesh.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import glob -import hashlib -sys.path.insert(0, os.pardir) -from testing_harness import PyAPITestHarness -import openmc -import openmc.mgxs - - -class MDGXSTestHarness(PyAPITestHarness): - def _build_inputs(self): - # Generate inputs using parent class routine - super(MDGXSTestHarness, self)._build_inputs() - - # Initialize a one-group structure - energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) - - # Initialize a six-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) - - # Initialize MGXS Library for a few cross section types - # for one material-filled cell in the geometry - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) - self.mgxs_lib.by_nuclide = False - - # Test all MDGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES - self.mgxs_lib.energy_groups = energy_groups - self.mgxs_lib.delayed_groups = delayed_groups - self.mgxs_lib.domain_type = 'mesh' - - # Instantiate a tally mesh - mesh = openmc.Mesh(mesh_id=1) - mesh.type = 'regular' - mesh.dimension = [2, 2] - mesh.lower_left = [-100., -100.] - mesh.width = [100., 100.] - - self.mgxs_lib.domains = [mesh] - self.mgxs_lib.build_library() - - # Initialize a tallies file - self._input_set.tallies = openmc.Tallies() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) - self._input_set.tallies.export_to_xml() - - def _get_results(self, hash_output=False): - """Digest info in the statepoint and return as a string.""" - - # Read the statepoint file. - statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = openmc.StatePoint(statepoint) - - # Load the MGXS library from the statepoint - self.mgxs_lib.load_from_statepoint(sp) - - # Build a string from Pandas Dataframe for each 1-group MGXS - outstr = '' - for domain in self.mgxs_lib.domains: - for mgxs_type in self.mgxs_lib.mgxs_types: - mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) - df = mgxs.get_pandas_dataframe() - outstr += df.to_string() + '\n' - - # Hash the results if necessary - if hash_output: - sha512 = hashlib.sha512() - sha512.update(outstr.encode('utf-8')) - outstr = sha512.hexdigest() - - return outstr - - def _cleanup(self): - super(MDGXSTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = MDGXSTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_mdgxs_library_no_nuclides/inputs_true.dat b/tests/test_mdgxs_library_no_nuclides/inputs_true.dat deleted file mode 100644 index 49fe693ee4..0000000000 --- a/tests/test_mdgxs_library_no_nuclides/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -9e8d8b468bdd81d996956d0d43eef5779b7b7d5ca3f6a1e628f10318748086183e45cf221edf7a274ff2dc6aff34f4411e21952740cdb7652477dfa0a1ffb5f2 \ No newline at end of file diff --git a/tests/test_mdgxs_library_no_nuclides/results_true.dat b/tests/test_mdgxs_library_no_nuclides/results_true.dat deleted file mode 100644 index e3afdcdb6d..0000000000 --- a/tests/test_mdgxs_library_no_nuclides/results_true.dat +++ /dev/null @@ -1,117 +0,0 @@ - material delayedgroup group in nuclide mean std. dev. -1 10000 1 1 total 0.000023 0.000002 -3 10000 2 1 total 0.000144 0.000011 -5 10000 3 1 total 0.000151 0.000011 -7 10000 4 1 total 0.000074 0.000005 -9 10000 5 1 total 0.000041 0.000003 -11 10000 6 1 total 0.000017 0.000001 -0 10000 1 2 total 0.000107 0.000009 -2 10000 2 2 total 0.000552 0.000049 -4 10000 3 2 total 0.000527 0.000047 -6 10000 4 2 total 0.000222 0.000019 -8 10000 5 2 total 0.000091 0.000008 -10 10000 6 2 total 0.000038 0.000003 - material delayedgroup group out nuclide mean std. dev. -1 10000 1 1 total 0 0.000000 -3 10000 2 1 total 1 0.869128 -5 10000 3 1 total 1 1.414214 -7 10000 4 1 total 1 0.360359 -9 10000 5 1 total 0 0.000000 -11 10000 6 1 total 0 0.000000 -0 10000 1 2 total 0 0.000000 -2 10000 2 2 total 0 0.000000 -4 10000 3 2 total 0 0.000000 -6 10000 4 2 total 0 0.000000 -8 10000 5 2 total 0 0.000000 -10 10000 6 2 total 0 0.000000 - material delayedgroup group in nuclide mean std. dev. -1 10000 1 1 total 0.000049 0.000005 -3 10000 2 1 total 0.000306 0.000030 -5 10000 3 1 total 0.000322 0.000031 -7 10000 4 1 total 0.003822 0.000321 -9 10000 5 1 total 0.002135 0.000183 -11 10000 6 1 total 0.000875 0.000075 -0 10000 1 2 total 0.000228 0.000025 -2 10000 2 2 total 0.001175 0.000127 -4 10000 3 2 total 0.001122 0.000122 -6 10000 4 2 total 0.011426 0.001099 -8 10000 5 2 total 0.004684 0.000451 -10 10000 6 2 total 0.001962 0.000189 - material delayedgroup group in nuclide mean std. dev. -1 10001 1 1 total 0 0 -3 10001 2 1 total 0 0 -5 10001 3 1 total 0 0 -7 10001 4 1 total 0 0 -9 10001 5 1 total 0 0 -11 10001 6 1 total 0 0 -0 10001 1 2 total 0 0 -2 10001 2 2 total 0 0 -4 10001 3 2 total 0 0 -6 10001 4 2 total 0 0 -8 10001 5 2 total 0 0 -10 10001 6 2 total 0 0 - material delayedgroup group out nuclide mean std. dev. -1 10001 1 1 total 0 0 -3 10001 2 1 total 0 0 -5 10001 3 1 total 0 0 -7 10001 4 1 total 0 0 -9 10001 5 1 total 0 0 -11 10001 6 1 total 0 0 -0 10001 1 2 total 0 0 -2 10001 2 2 total 0 0 -4 10001 3 2 total 0 0 -6 10001 4 2 total 0 0 -8 10001 5 2 total 0 0 -10 10001 6 2 total 0 0 - material delayedgroup group in nuclide mean std. dev. -1 10001 1 1 total 0 0 -3 10001 2 1 total 0 0 -5 10001 3 1 total 0 0 -7 10001 4 1 total 0 0 -9 10001 5 1 total 0 0 -11 10001 6 1 total 0 0 -0 10001 1 2 total 0 0 -2 10001 2 2 total 0 0 -4 10001 3 2 total 0 0 -6 10001 4 2 total 0 0 -8 10001 5 2 total 0 0 -10 10001 6 2 total 0 0 - material delayedgroup group in nuclide mean std. dev. -1 10002 1 1 total 0 0 -3 10002 2 1 total 0 0 -5 10002 3 1 total 0 0 -7 10002 4 1 total 0 0 -9 10002 5 1 total 0 0 -11 10002 6 1 total 0 0 -0 10002 1 2 total 0 0 -2 10002 2 2 total 0 0 -4 10002 3 2 total 0 0 -6 10002 4 2 total 0 0 -8 10002 5 2 total 0 0 -10 10002 6 2 total 0 0 - material delayedgroup group out nuclide mean std. dev. -1 10002 1 1 total 0 0 -3 10002 2 1 total 0 0 -5 10002 3 1 total 0 0 -7 10002 4 1 total 0 0 -9 10002 5 1 total 0 0 -11 10002 6 1 total 0 0 -0 10002 1 2 total 0 0 -2 10002 2 2 total 0 0 -4 10002 3 2 total 0 0 -6 10002 4 2 total 0 0 -8 10002 5 2 total 0 0 -10 10002 6 2 total 0 0 - material delayedgroup group in nuclide mean std. dev. -1 10002 1 1 total 0 0 -3 10002 2 1 total 0 0 -5 10002 3 1 total 0 0 -7 10002 4 1 total 0 0 -9 10002 5 1 total 0 0 -11 10002 6 1 total 0 0 -0 10002 1 2 total 0 0 -2 10002 2 2 total 0 0 -4 10002 3 2 total 0 0 -6 10002 4 2 total 0 0 -8 10002 5 2 total 0 0 -10 10002 6 2 total 0 0 diff --git a/tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py b/tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py deleted file mode 100644 index 6ee8e9adbe..0000000000 --- a/tests/test_mdgxs_library_no_nuclides/test_mdgxs_library_no_nuclides.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import glob -import hashlib -sys.path.insert(0, os.pardir) -from testing_harness import PyAPITestHarness -from input_set import PinCellInputSet -import openmc -import openmc.mgxs - - -class MDGXSTestHarness(PyAPITestHarness): - def _build_inputs(self): - # Set the input set to use the pincell model - self._input_set = PinCellInputSet() - - # Generate inputs using parent class routine - super(MDGXSTestHarness, self)._build_inputs() - - # Initialize a two-group structure - energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, - 20.]) - - # Initialize a six-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) - - # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) - self.mgxs_lib.by_nuclide = False - - # Test all MDGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES - self.mgxs_lib.energy_groups = energy_groups - self.mgxs_lib.delayed_groups = delayed_groups - self.mgxs_lib.domain_type = 'material' - self.mgxs_lib.build_library() - - # Initialize a tallies file - self._input_set.tallies = openmc.Tallies() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) - self._input_set.tallies.export_to_xml() - - def _get_results(self, hash_output=False): - """Digest info in the statepoint and return as a string.""" - - # Read the statepoint file. - statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = openmc.StatePoint(statepoint) - - # Load the MGXS library from the statepoint - self.mgxs_lib.load_from_statepoint(sp) - - # Build a string from Pandas Dataframe for each MGXS - outstr = '' - for domain in self.mgxs_lib.domains: - for mgxs_type in self.mgxs_lib.mgxs_types: - mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) - df = mgxs.get_pandas_dataframe() - outstr += df.to_string() + '\n' - - # Hash the results if necessary - if hash_output: - sha512 = hashlib.sha512() - sha512.update(outstr.encode('utf-8')) - outstr = sha512.hexdigest() - - return outstr - - - def _cleanup(self): - super(MDGXSTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = MDGXSTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_mdgxs_library_nuclides/inputs_true.dat b/tests/test_mdgxs_library_nuclides/inputs_true.dat deleted file mode 100644 index af136e1ec0..0000000000 --- a/tests/test_mdgxs_library_nuclides/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -1cf1a4e8f46f3a5e4bb2824b8b3e4f4af5b43f12e0025ef98f7f54e3212305d8ec4334b3dffeab0e0df94de2eedae2d4aa4d0f15649129264a1cc3e3f9d08b58 \ No newline at end of file diff --git a/tests/test_mdgxs_library_nuclides/results_true.dat b/tests/test_mdgxs_library_nuclides/results_true.dat deleted file mode 100644 index d8cb494c74..0000000000 --- a/tests/test_mdgxs_library_nuclides/results_true.dat +++ /dev/null @@ -1 +0,0 @@ -7a6b9ba8f6289f1dac2d474f88003561a0179b45db58eedd671583eced3952f9ed708c1e35248351e469d511a6d99d33e02a9ba5135a0123f7f9c474c4e55a68 \ No newline at end of file diff --git a/tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py b/tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py deleted file mode 100644 index 4e67c23c7f..0000000000 --- a/tests/test_mdgxs_library_nuclides/test_mdgxs_library_nuclides.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import glob -import hashlib -sys.path.insert(0, os.pardir) -from testing_harness import PyAPITestHarness -from input_set import PinCellInputSet -import openmc -import openmc.mgxs - - -class MDGXSTestHarness(PyAPITestHarness): - def _build_inputs(self): - # Set the input set to use the pincell model - self._input_set = PinCellInputSet() - - # Generate inputs using parent class routine - super(MDGXSTestHarness, self)._build_inputs() - - # Initialize a two-group structure - energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, - 20.]) - - # Initialize a six-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) - - # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) - self.mgxs_lib.by_nuclide = True - - # Test all MDGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MDGXS_TYPES - self.mgxs_lib.energy_groups = energy_groups - self.mgxs_lib.delayed_groups = delayed_groups - self.mgxs_lib.domain_type = 'material' - self.mgxs_lib.build_library() - - # Initialize a tallies file - self._input_set.tallies = openmc.Tallies() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) - self._input_set.tallies.export_to_xml() - - def _get_results(self, hash_output=True): - """Digest info in the statepoint and return as a string.""" - - # Read the statepoint file. - statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = openmc.StatePoint(statepoint) - - # Load the MGXS library from the statepoint - self.mgxs_lib.load_from_statepoint(sp) - - # Build a string from Pandas Dataframe for each MGXS - outstr = '' - for domain in self.mgxs_lib.domains: - for mgxs_type in self.mgxs_lib.mgxs_types: - mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) - df = mgxs.get_pandas_dataframe() - outstr += df.to_string() + '\n' - - # Hash the results if necessary - if hash_output: - sha512 = hashlib.sha512() - sha512.update(outstr.encode('utf-8')) - outstr = sha512.hexdigest() - - return outstr - - - def _cleanup(self): - super(MDGXSTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = MDGXSTestHarness('statepoint.10.*', True) - harness.main() From 65eca3d841ec9a467dbc33da736ace5eba85e5fc Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 5 Aug 2016 08:58:19 -0400 Subject: [PATCH 25/49] updated results for cmfd tests --- tests/test_cmfd_feed/results_true.dat | 852 ++++++++++++------------ tests/test_cmfd_nofeed/results_true.dat | 852 ++++++++++++------------ 2 files changed, 852 insertions(+), 852 deletions(-) diff --git a/tests/test_cmfd_feed/results_true.dat b/tests/test_cmfd_feed/results_true.dat index 4579fa5459..04103129dd 100644 --- a/tests/test_cmfd_feed/results_true.dat +++ b/tests/test_cmfd_feed/results_true.dat @@ -124,92 +124,8 @@ tally 3: 1.020705E+00 5.413570E-02 tally 4: -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 3.049469E+00 4.677325E-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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.514939E+00 -1.528899E+00 2.770358E+00 3.879191E-01 0.000000E+00 @@ -220,44 +136,8 @@ tally 4: 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 -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 -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 -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 -7.294002E+00 -2.675589E+00 +5.514939E+00 +1.528899E+00 5.032131E+00 1.275040E+00 0.000000E+00 @@ -268,44 +148,8 @@ tally 4: 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 -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 -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 -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 -8.668860E+00 -3.776102E+00 +7.294002E+00 +2.675589E+00 7.036008E+00 2.490719E+00 0.000000E+00 @@ -316,44 +160,8 @@ tally 4: 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 -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 -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 -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 -9.345868E+00 -4.380719E+00 +8.668860E+00 +3.776102E+00 8.352414E+00 3.501945E+00 0.000000E+00 @@ -364,44 +172,8 @@ tally 4: 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 -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 -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 -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 -9.223771E+00 -4.270119E+00 +9.345868E+00 +4.380719E+00 9.093766E+00 4.158282E+00 0.000000E+00 @@ -412,44 +184,8 @@ tally 4: 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 -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 -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 -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 -8.530966E+00 -3.651778E+00 +9.223771E+00 +4.270119E+00 9.219150E+00 4.264346E+00 0.000000E+00 @@ -460,44 +196,8 @@ tally 4: 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 -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 -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 -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 -7.204424E+00 -2.604203E+00 +8.530966E+00 +3.651778E+00 8.690373E+00 3.785262E+00 0.000000E+00 @@ -508,44 +208,8 @@ tally 4: 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 -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 -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 -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.326721E+00 -1.426975E+00 +7.204424E+00 +2.604203E+00 7.513640E+00 2.833028E+00 0.000000E+00 @@ -556,44 +220,8 @@ tally 4: 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 -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 -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 -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 -2.847310E+00 -4.090440E-01 +5.326721E+00 +1.426975E+00 5.661144E+00 1.607138E+00 0.000000E+00 @@ -604,44 +232,8 @@ tally 4: 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 -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 -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 -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 -0.000000E+00 +2.847310E+00 +4.090440E-01 3.025812E+00 4.597241E-01 0.000000E+00 @@ -652,6 +244,414 @@ tally 4: 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 cmfd indices 1.000000E+01 1.000000E+00 diff --git a/tests/test_cmfd_nofeed/results_true.dat b/tests/test_cmfd_nofeed/results_true.dat index d8a17d676b..54825f5db7 100644 --- a/tests/test_cmfd_nofeed/results_true.dat +++ b/tests/test_cmfd_nofeed/results_true.dat @@ -124,92 +124,8 @@ tally 3: 9.213728E-01 4.422001E-02 tally 4: -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 3.090000E+00 4.810640E-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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.555000E+00 -1.551579E+00 2.833000E+00 4.078910E-01 0.000000E+00 @@ -220,44 +136,8 @@ tally 4: 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 -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 -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 -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 -7.271000E+00 -2.659755E+00 +5.555000E+00 +1.551579E+00 5.095000E+00 1.310819E+00 0.000000E+00 @@ -268,44 +148,8 @@ tally 4: 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 -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 -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 -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 -8.577000E+00 -3.703215E+00 +7.271000E+00 +2.659755E+00 7.026000E+00 2.486552E+00 0.000000E+00 @@ -316,44 +160,8 @@ tally 4: 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 -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 -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 -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 -9.393000E+00 -4.422429E+00 +8.577000E+00 +3.703215E+00 8.572000E+00 3.680852E+00 0.000000E+00 @@ -364,44 +172,8 @@ tally 4: 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 -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 -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 -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 -9.265000E+00 -4.305625E+00 +9.393000E+00 +4.422429E+00 9.261000E+00 4.304411E+00 0.000000E+00 @@ -412,44 +184,8 @@ tally 4: 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 -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 -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 -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 -8.535000E+00 -3.659395E+00 +9.265000E+00 +4.305625E+00 9.303000E+00 4.350791E+00 0.000000E+00 @@ -460,44 +196,8 @@ tally 4: 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 -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 -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 -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 -7.104000E+00 -2.544182E+00 +8.535000E+00 +3.659395E+00 8.693000E+00 3.799545E+00 0.000000E+00 @@ -508,44 +208,8 @@ tally 4: 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 -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 -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 -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.168000E+00 -1.344390E+00 +7.104000E+00 +2.544182E+00 7.334000E+00 2.700052E+00 0.000000E+00 @@ -556,44 +220,8 @@ tally 4: 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 -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 -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 -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 -2.724000E+00 -3.745680E-01 +5.168000E+00 +1.344390E+00 5.416000E+00 1.471086E+00 0.000000E+00 @@ -604,44 +232,8 @@ tally 4: 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 -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 -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 -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 -0.000000E+00 +2.724000E+00 +3.745680E-01 2.960000E+00 4.397840E-01 0.000000E+00 @@ -652,6 +244,414 @@ tally 4: 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 cmfd indices 1.000000E+01 1.000000E+00 From ad9fe27d26940a7120ed920d37d9cb176bde6402 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Fri, 5 Aug 2016 10:03:26 -0400 Subject: [PATCH 26/49] fixed mesh indexing error in trigger.F90 --- src/trigger.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/trigger.F90 b/src/trigger.F90 index 570493a5de..4af03a2dea 100644 --- a/src/trigger.F90 +++ b/src/trigger.F90 @@ -329,7 +329,7 @@ contains end if matching_bins(i_filter_mesh) = & - mesh_indices_to_bin(m, (/ i, j, k /) + 1) + mesh_indices_to_bin(m, (/ i, j, k /)) ! Left Surface matching_bins(i_filter_surf) = OUT_LEFT From 14b8ef6a1f6bd248a22e6c4cf806d27fcd812fca Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 5 Aug 2016 13:48:12 -0500 Subject: [PATCH 27/49] Make PyAPI Polynomial class, remove Constant1D --- openmc/data/function.py | 91 ++++++++++++++++++++++++++++++++++++++++- openmc/data/product.py | 28 +++---------- openmc/data/reaction.py | 6 +-- src/endf_header.F90 | 30 -------------- src/nuclide_header.F90 | 8 ++-- src/product_header.F90 | 8 ++-- src/tally.F90 | 44 +++++--------------- 7 files changed, 115 insertions(+), 100 deletions(-) diff --git a/openmc/data/function.py b/openmc/data/function.py index bea6f5e9a6..e827e12833 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -1,3 +1,4 @@ +from abc import ABCMeta, abstractmethod from collections import Iterable, Callable from numbers import Real, Integral @@ -9,7 +10,53 @@ INTERPOLATION_SCHEME = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', 4: 'log-linear', 5: 'log-log'} -class Tabulated1D(object): +class Function1D(object): + """A function of one independent variable with HDF5 support.""" + + __meta__class = ABCMeta + + def __init__(self): pass + + @abstractmethod + def __call__(self): pass + + @abstractmethod + def to_hdf5(self, group, name='xy'): + """Write function to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + name : str + Name of the dataset to create + + """ + pass + + @classmethod + def from_hdf5(cls, dataset): + """Generate function from an HDF5 dataset + + Parameters + ---------- + dataset : h5py.Dataset + Dataset to read from + + Returns + ------- + openmc.data.Function1D + Function read from dataset + + """ + for subclass in cls.__subclasses__(): + if dataset.attrs['type'].decode() == subclass.__name__: + return subclass.from_hdf5(dataset) + raise ValueError("Unrecognized Function1D class: '" + + dataset.attrs['type'].decode() + "'") + + +class Tabulated1D(Function1D): """A one-dimensional tabulated function. This class mirrors the TAB1 type from the ENDF-6 format. A tabulated @@ -239,7 +286,7 @@ class Tabulated1D(object): """ dataset = group.create_dataset(name, data=np.vstack( [self.x, self.y])) - dataset.attrs['type'] = np.string_('tab1') + dataset.attrs['type'] = np.string_(type(self).__name__) dataset.attrs['breakpoints'] = self.breakpoints dataset.attrs['interpolation'] = self.interpolation @@ -258,6 +305,10 @@ class Tabulated1D(object): Function read from dataset """ + if dataset.attrs['type'].decode() != cls.__name__: + raise ValueError("Expected an HDF5 attribute 'type' equal to '" + + cls.__name__ + "'") + x = dataset.value[0, :] y = dataset.value[1, :] breakpoints = dataset.attrs['breakpoints'] @@ -304,6 +355,42 @@ class Tabulated1D(object): return Tabulated1D(x, y, breakpoints, interpolation) +class Polynomial(np.polynomial.Polynomial, Function1D): + def to_hdf5(self, group, name='xy'): + """Write polynomial function to an HDF5 group + + Parameters + ---------- + group : h5py.Group + HDF5 group to write to + name : str + Name of the dataset to create + + """ + dataset = group.create_dataset(name, data=self.coef) + dataset.attrs['type'] = np.string_(type(self).__name__) + + @classmethod + def from_hdf5(cls, dataset): + """Generate function from an HDF5 dataset + + Parameters + ---------- + dataset : h5py.Dataset + Dataset to read from + + Returns + ------- + openmc.data.Function1D + Function read from dataset + + """ + if dataset.attrs['type'].decode() != cls.__name__: + raise ValueError("Expected an HDF5 attribute 'type' equal to '" + + cls.__name__ + "'") + return cls(dataset.value) + + class Sum(object): """Sum of multiple functions. diff --git a/openmc/data/product.py b/openmc/data/product.py index dd276daac3..116905f7a3 100644 --- a/openmc/data/product.py +++ b/openmc/data/product.py @@ -3,10 +3,9 @@ from numbers import Real import sys import numpy as np -from numpy.polynomial.polynomial import Polynomial import openmc.checkvalue as cv -from .function import Tabulated1D +from .function import Tabulated1D, Polynomial, Function1D from .angle_energy import AngleEnergy if sys.version_info[0] >= 3: @@ -36,7 +35,7 @@ class Product(object): yield represents particles from prompt and delayed sources. particle : str What particle the reaction product is. - yield_ : float or openmc.data.Tabulated1D or numpy.polynomial.Polynomial + yield_ : float or openmc.data.Tabulated1D or openmc.data.Polynomial Yield of secondary particle in the reaction. """ @@ -47,7 +46,7 @@ class Product(object): self.emission_mode = 'prompt' self.distribution = [] self.applicability = [] - self.yield_ = 1 + self.yield_ = Polynomial((1,)) # 0-order polynomial i.e. a constant def __repr__(self): if isinstance(self.yield_, Real): @@ -120,7 +119,7 @@ class Product(object): @yield_.setter def yield_(self, yield_): cv.check_type('product yield', yield_, - (Real, Tabulated1D, Polynomial)) + (Tabulated1D, Polynomial)) self._yield = yield_ def to_hdf5(self, group): @@ -138,16 +137,7 @@ class Product(object): group.attrs['decay_rate'] = self.decay_rate # Write yield - if isinstance(self.yield_, Tabulated1D): - self.yield_.to_hdf5(group, 'yield') - dset = group['yield'] - dset.attrs['type'] = np.string_('tabulated') - elif isinstance(self.yield_, Polynomial): - dset = group.create_dataset('yield', data=self.yield_.coef) - dset.attrs['type'] = np.string_('polynomial') - else: - dset = group.create_dataset('yield', data=float(self.yield_)) - dset.attrs['type'] = np.string_('constant') + self.yield_.to_hdf5(group, 'yield') # Write applicability/distribution group.attrs['n_distribution'] = len(self.distribution) @@ -180,13 +170,7 @@ class Product(object): p.decay_rate = group.attrs['decay_rate'] # Read yield - yield_type = group['yield'].attrs['type'].decode() - if yield_type == 'constant': - p.yield_ = group['yield'].value - elif yield_type == 'polynomial': - p.yield_ = Polynomial(group['yield'].value) - elif yield_type == 'tabulated': - p.yield_ = Tabulated1D.from_hdf5(group['yield']) + p.yield_ = Function1D.from_hdf5(group['yield']) # Read applicability/distribution n_distribution = group.attrs['n_distribution'] diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index ad707d276e..d35599579d 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -5,13 +5,12 @@ from numbers import Real from warnings import warn import numpy as np -from numpy.polynomial import Polynomial import openmc.checkvalue as cv from openmc.stats import Uniform from .angle_distribution import AngleDistribution from .angle_energy import AngleEnergy -from .function import Tabulated1D +from .function import Tabulated1D, Polynomial from .data import REACTION_NAME from .product import Product from .uncorrelated import UncorrelatedAngleEnergy @@ -465,7 +464,8 @@ class Reaction(object): idx = ace.jxs[11] + abs(ty) - 101 yield_ = Tabulated1D.from_ace(ace, idx) else: - yield_ = abs(ty) + # 0-order polynomial i.e. a constant + yield_ = Polynomial((abs(ty),)) neutron = Product('neutron') neutron.yield_ = yield_ diff --git a/src/endf_header.F90 b/src/endf_header.F90 index c4b4ef3ad8..8d8aefaa3c 100644 --- a/src/endf_header.F90 +++ b/src/endf_header.F90 @@ -30,17 +30,6 @@ module endf_header end subroutine function1d_from_hdf5_ end interface -!=============================================================================== -! CONSTANT1D represents a constant one-dimensional function -!=============================================================================== - - type, extends(Function1D) :: Constant1D - real(8) :: y - contains - procedure :: from_hdf5 => constant1d_from_hdf5 - procedure :: evaluate => constant1d_evaluate - end type Constant1D - !=============================================================================== ! POLYNOMIAL represents a one-dimensional function expressed as a polynomial !=============================================================================== @@ -72,25 +61,6 @@ module endf_header contains -!=============================================================================== -! Constant1D implementation -!=============================================================================== - - subroutine constant1d_from_hdf5(this, dset_id) - class(Constant1D), intent(inout) :: this - integer(HID_T), intent(in) :: dset_id - - call read_dataset(this % y, dset_id) - end subroutine constant1d_from_hdf5 - - pure function constant1d_evaluate(this, x) result(y) - class(Constant1D), intent(in) :: this - real(8), intent(in) :: x - real(8) :: y - - y = this % y - end function constant1d_evaluate - !=============================================================================== ! Polynomial implementation !=============================================================================== diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 8ff83482e5..514958a07e 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -10,7 +10,7 @@ module nuclide_header use constants use dict_header, only: DictIntInt use endf, only: reaction_name, is_fission, is_disappearance - use endf_header, only: Function1D, Constant1D, Polynomial, Tabulated1D + use endf_header, only: Function1D, Polynomial, Tabulated1D use error, only: fatal_error, warning use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, read_dataset, close_dataset, get_shape @@ -283,11 +283,9 @@ module nuclide_header total_nu = open_dataset(nu_group, 'yield') call read_attribute(temp, total_nu, 'type') select case (temp) - case ('constant') - allocate(Constant1D :: this % total_nu) - case ('tabulated') + case ('Tabulated1D') allocate(Tabulated1D :: this % total_nu) - case ('polynomial') + case ('Polynomial') allocate(Polynomial :: this % total_nu) end select call this % total_nu % from_hdf5(total_nu) diff --git a/src/product_header.F90 b/src/product_header.F90 index f20adf0d40..a69929473d 100644 --- a/src/product_header.F90 +++ b/src/product_header.F90 @@ -5,7 +5,7 @@ module product_header use angleenergy_header, only: AngleEnergyContainer use constants, only: ZERO, MAX_WORD_LEN, EMISSION_PROMPT, EMISSION_DELAYED, & EMISSION_TOTAL, NEUTRON, PHOTON - use endf_header, only: Tabulated1D, Function1D, Constant1D, Polynomial + use endf_header, only: Tabulated1D, Function1D, Polynomial use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, close_dataset, read_dataset use random_lcg, only: prn @@ -109,11 +109,9 @@ contains yield = open_dataset(group_id, 'yield') call read_attribute(temp, yield, 'type') select case (temp) - case ('constant') - allocate(Constant1D :: this % yield) - case ('tabulated') + case ('Tabulated1D') allocate(Tabulated1D :: this % yield) - case ('polynomial') + case ('Polynomial') allocate(Polynomial :: this % yield) end select call this % yield % from_hdf5(yield) diff --git a/src/tally.F90 b/src/tally.F90 index ec46a61940..0a910a9696 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -1,7 +1,6 @@ module tally use constants - use endf_header, only: Constant1D use error, only: fatal_error use geometry_header use global @@ -247,24 +246,17 @@ contains ! reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then - ! Don't waste time on very common reactions we know have multiplicities - ! of one. + ! Don't waste time on very common reactions we know have + ! multiplicities of one. score = p % last_wgt * flux else - m = nuclides(p%event_nuclide)%reaction_index% & + m = nuclides(p % event_nuclide) % reaction_index % & get_key(p % event_MT) ! Get yield and apply to score - associate (rxn => nuclides(p%event_nuclide)%reactions(m)) - select type (yield => rxn % products(1) % yield) - type is (Constant1D) - ! Grab the yield from the reaction - score = p % last_wgt * yield % y * flux - class default - ! the yield was already incorporated in to p % wgt per the - ! scattering routine - score = p % wgt * flux - end select + associate (rxn => nuclides(p % event_nuclide) % reactions(m)) + score = p % last_wgt * flux & + * rxn % products(1) % yield % evaluate(p % last_E) end associate end if @@ -289,16 +281,9 @@ contains get_key(p % event_MT) ! Get yield and apply to score - associate (rxn => nuclides(p%event_nuclide)%reactions(m)) - select type (yield => rxn % products(1) % yield) - type is (Constant1D) - ! Grab the yield from the reaction - score = p % last_wgt * yield % y * flux - class default - ! the yield was already incorporated in to p % wgt per the - ! scattering routine - score = p % wgt * flux - end select + associate (rxn => nuclides(p % event_nuclide) % reactions(m)) + score = p % last_wgt * flux & + * rxn % products(1) % yield % evaluate(p % last_E) end associate end if @@ -324,15 +309,8 @@ contains ! Get yield and apply to score associate (rxn => nuclides(p%event_nuclide)%reactions(m)) - select type (yield => rxn % products(1) % yield) - type is (Constant1D) - ! Grab the yield from the reaction - score = p % last_wgt * yield % y * flux - class default - ! the yield was already incorporated in to p % wgt per the - ! scattering routine - score = p % wgt * flux - end select + score = p % last_wgt * flux & + * rxn % products(1) % yield % evaluate(p % last_E) end associate end if From cdca6f3e1a7004dd295268ff29b22a3ec901d653 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sat, 6 Aug 2016 16:44:22 -0400 Subject: [PATCH 28/49] removed DelayedGroups and addressed PR comments --- .../pythonapi/examples/mdgxs-part-i.ipynb | 47 ++-- .../pythonapi/examples/mdgxs-part-ii.ipynb | 37 ++-- openmc/mgxs/__init__.py | 2 +- openmc/mgxs/groups.py | 130 +---------- openmc/mgxs/library.py | 16 +- openmc/mgxs/mdgxs.py | 205 ++++-------------- openmc/mgxs/mgxs.py | 9 +- tests/input_set.py | 153 +++++++++++++ .../test_mgxs_library_condense.py | 2 +- .../inputs_true.dat | 2 +- .../results_true.dat | 126 +++++------ .../test_mgxs_library_distribcell.py | 8 +- .../test_mgxs_library_hdf5.py | 2 +- .../test_mgxs_library_mesh.py | 2 +- .../results_true.dat | 192 ++++++++-------- .../test_mgxs_library_no_nuclides.py | 2 +- .../results_true.dat | 2 +- 17 files changed, 431 insertions(+), 506 deletions(-) diff --git a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb index a7a9598415..94be516fca 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb @@ -356,8 +356,7 @@ "one_group = mgxs.EnergyGroups()\n", "one_group.group_edges = np.array([energy_groups.group_edges[0], energy_groups.group_edges[-1]])\n", "\n", - "delayed_groups = mgxs.DelayedGroups()\n", - "delayed_groups.groups = range(1,7)" + "delayed_groups = range(1,7)" ] }, { @@ -581,8 +580,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: c23c1cabfbb8c726ee0b4bd01bb7e74e679edcd0\n", - " Date/Time: 2016-08-03 16:02:28\n", + " Git SHA1: ad9fe27d26940a7120ed920d37d9cb176bde6402\n", + " Date/Time: 2016-08-06 15:47:51\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -669,20 +668,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3800E-01 seconds\n", - " Reading cross sections = 2.5200E-01 seconds\n", - " Total time in simulation = 8.4618E+01 seconds\n", - " Time in transport only = 8.4594E+01 seconds\n", - " Time in inactive batches = 5.0040E+00 seconds\n", - " Time in active batches = 7.9614E+01 seconds\n", - " Time synchronizing fission bank = 6.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", - " SEND/RECV source sites = 2.0000E-03 seconds\n", - " Time accumulating tallies = 4.0000E-03 seconds\n", - " Total time for finalization = 7.5000E-02 seconds\n", - " Total time elapsed = 8.5157E+01 seconds\n", - " Calculation Rate (inactive) = 9992.01 neutrons/second\n", - " Calculation Rate (active) = 2512.12 neutrons/second\n", + " Total time for initialization = 4.7100E-01 seconds\n", + " Reading cross sections = 2.6500E-01 seconds\n", + " Total time in simulation = 8.5400E+01 seconds\n", + " Time in transport only = 8.5378E+01 seconds\n", + " Time in inactive batches = 4.8000E+00 seconds\n", + " Time in active batches = 8.0600E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-02 seconds\n", + " Sampling source sites = 8.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 7.2000E-02 seconds\n", + " Total time elapsed = 8.5969E+01 seconds\n", + " Calculation Rate (inactive) = 10416.7 neutrons/second\n", + " Calculation Rate (active) = 2481.39 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -866,6 +865,14 @@ "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/shape_base.py:873: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n" + ] + }, { "data": { "text/html": [ @@ -1310,7 +1317,7 @@ "data": { "image/png": "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\n771XLz/wwAO55JJLWLBgAfPmzVt9R8qOtPXkVe/EUikFl7+jrW3T5r6SGshKOGdGxNK0+HLggxGx\nK1mp5sftjtisizQ3w9KlVTfr1pYuza7D1rjjjjtYuHAhr7zyCj/72c/o379/m9ufcsopq29XfOGF\nF6617tvf/jZTp07lpptuqrhvv379GDNmDBdccAEvvvgiAP/1X//Fbrvtxq677so+++zD4YcfzoYb\nbsgWW2xRmwusoN5VYbOBYSWvtwHmlm0zC9gWmCupLzAwIt6UNDstX2dfSRuQJZVrI+KOlg0i4l8l\n2/8auKu1wJpLPv1NTU00NTXlviizeih6UmnRna6jM1VXNYuhQulk0003XavEMG/evNXPr7jiCq64\n4op19hk3bhz33Xcfjz76KA0NDW2ec/ny5bz88svsvPPO9O/fn0svvZRLL70UgF/96lfsvvvuuare\nJk2axKRJk6put448dwPr6APoC/w3MBzoBzwH7Fi2zanA5en5WLJ2FYCdgGfTfiPTcVpuTHYNWSN9\n+fm2Knl+FnBDK3FVv4Wa2XqW3aE9exRRV8Xfnf+eR4wYEQ8++OA6y48++ug4+uijY/ny5TF58uQY\nMmRIHHvssa0e5wc/+EGMGjUq5s2bt866J598Mh577LF47733YtmyZXHhhRfGgAED4vXXX4+IiDlz\n5sTcuXMjIuKJJ56IbbfdNh544IE2427tPSXnHSTXx22ADwD+DswAzknLxgOfS883Am5O658ERpTs\ne25KKNOA0WnZ3sDKlKSeBaYAB8SahPNCWvf/gC1bianNN9WsKzixdPS83fcNGzlyZMXE8vLLL8de\ne+0VjY2N8bnPfS7OPPPMNhOLpOjfv380Njauvl3xBRdcEBERjzzySOyyyy4xYMCAGDx4cDQ1NcVj\njz22et9HH300RowYEZtuumnssMMOceONN1aNu7OJxbcmNusmSmsmivjx7Kr4fWvi2vOtic3MrFup\n2ngv6ePAMcAnga2BZcBfgd8D10XEorpGaGZmhdJmVZikP5D1xLoD+AvwT6A/sD2wL3AwWSP6nfUP\ntXZcFWbdkavCOnpeV4XVWmerwqolliERsaBKAFW36W6cWKw7cmLp6HmdWGqtrm0sLQlD0qZp3i8k\nbS/pEEkblm5jZmYG+RvvHwX6SxoK3A8cC/y2XkGZmVlx5R15r4h4R9IJZIMZL5L0bD0DMzPLY/jw\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1373,7 +1380,7 @@ "data": { "image/png": "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\n9erFmWeeyRtvvAFAkyZNgmWqSk5ODjt37mTHjh2AnT5zwoQJFBQU0KZNGyZMmBDTNPTCCy9w3HHH\n0bp1a8aPH1+ts3/wwQc5/vjjadOmDQMHDmTdunUR21m6dCmnnHIKBQUFFBcXh/xIBw8ezF/+8peQ\n+ieddBJPP23/dNasWUP//v1p06YNxx13HE888USw3o4dOzj//PMpKCigd+/eCaU3bciULi8NboaG\nR1IVg6oeAK4Dngc+Bhao6iciUioigwFE5Mcish64CLhPRAKJfYcCfYCxIvK+iLwnIifWpXyW30JK\npdoWzS4bqX5dRJ9cv359sKOMhldzyPfff8/KlSurpfw86aSTaNq0KRdccAFXXHFFMEdDIMxugIMH\nD7JhwwZ2795dre3t27dz0UUXcdttt7Ft2zaOPvpoXnvttWD5U089xe9//3ueeuoptm7dyplnnsmI\nESMiypmXl8fcuXPZtWsXS5Ys4b777gt2/IEcDQFWrVrFpk2bGDRoEHv37qV///6MHDmSbdu2MX/+\nfK699lo++eQTAK699lqaN2/Oli1bmD17tmf/h8FgqCLpsZJU9TlVPUZVu6rq751jJar6rPP5HVXt\nqKotVfVQZ3oqqvqYqjZR1VNU9WTn73+SLW99csEFF1BYWMhZZ51Fv379IialqSlXX301J598Mv37\n9w85vmrVKnbv3s28efM444wzgscHDhzI3XffzbZt2/jqq6+CWeH27t1bre2lS5dywgkn8LOf/YxG\njRpx/fXX065du2D5Aw88wJQpU+jWrRs5OTnceOONfPDBByFJfwKcddZZQeX1ox/9iOHDh7N8+XIA\nhgwZwmeffRZ823/00UcZNmwYjRo14tlnn6Vz586MHj0aEaFHjx5ceOGFLFy4kIMHD/Lkk09yyy23\n0LRpU0444QTGjBmT4BM1GBoeJoheClm8eDE7duzgyy+/5M9//jNNmjSJe84111wTzMXw+9//PqRs\n8uTJrF69Omou58aNGzNs2DBmzJjBhx/aA7OpU6dy8skn06NHD/r06cPPfvYzcnNzOeyww6qdH57y\nEwjZLy8vZ+LEicF0nG3atEFEqmVbA3jrrbc4++yzOeyww2jVqhX3339/MOVn48aNGTp0KI8++iiq\nyvz584O5oMvLy3nzzTdDUn7OmzePLVu2sHXrViorKznyyCOD12mwwfn8JVVbBALO6Ax0z0Uk/F6y\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb index 7df67ce4d5..c6bf077f82 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb @@ -456,7 +456,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -512,8 +512,7 @@ "one_group.group_edges = np.array([energy_groups.group_edges[0], energy_groups.group_edges[-1]])\n", "\n", "# Instantiate a 6-group DelayedGroups object\n", - "delayed_groups = openmc.mgxs.DelayedGroups()\n", - "delayed_groups.groups = range(1,7)" + "delayed_groups = range(1,7)" ] }, { @@ -608,8 +607,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: c23c1cabfbb8c726ee0b4bd01bb7e74e679edcd0\n", - " Date/Time: 2016-08-03 15:59:52\n", + " Git SHA1: ad9fe27d26940a7120ed920d37d9cb176bde6402\n", + " Date/Time: 2016-08-06 15:52:56\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -714,20 +713,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.1300E-01 seconds\n", - " Reading cross sections = 2.3300E-01 seconds\n", - " Total time in simulation = 7.3036E+01 seconds\n", - " Time in transport only = 7.2812E+01 seconds\n", - " Time in inactive batches = 4.9340E+00 seconds\n", - " Time in active batches = 6.8102E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", + " Total time for initialization = 4.2200E-01 seconds\n", + " Reading cross sections = 2.3800E-01 seconds\n", + " Total time in simulation = 7.5197E+01 seconds\n", + " Time in transport only = 7.4942E+01 seconds\n", + " Time in inactive batches = 4.8400E+00 seconds\n", + " Time in active batches = 7.0357E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", " Sampling source sites = 4.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 2.0400E-01 seconds\n", - " Total time for finalization = 7.0000E-03 seconds\n", - " Total time elapsed = 7.3477E+01 seconds\n", - " Calculation Rate (inactive) = 5066.88 neutrons/second\n", - " Calculation Rate (active) = 1468.39 neutrons/second\n", + " Time accumulating tallies = 2.1900E-01 seconds\n", + " Total time for finalization = 8.0000E-03 seconds\n", + " Total time elapsed = 7.5653E+01 seconds\n", + " Calculation Rate (inactive) = 5165.29 neutrons/second\n", + " Calculation Rate (active) = 1421.32 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1250,7 +1249,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1261,7 +1260,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABBwAAAIhCAYAAADtr6lMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYXEXZ/vHvPROCKDsBEcIihl1ZFfUFYWQHIXEBWQSj\nLC7ICy4/EURN4iuiuKEgKhgQEQjKGpBNxKDsgQABQkhEkhCWiCQEEQnJzPP745wJTad7+tTpmemB\nuT/X1Ve669Rzqroz88yZmqo6igjMzMzMzMzMzHpTW6s7YGZmZmZmZmZvPB5wMDMzMzMzM7Ne5wEH\nMzMzMzMzM+t1HnAwMzMzMzMzs17nAQczMzMzMzMz63UecDAzMzMzMzOzXucBhzcISedJ+nbBuo9L\n2rWv+1TV5i6SnujPNs3M+pPzsJlZ6zkXmw0sHnCoQ9IsSS9JekHSc5KulrRuwVgnktqi1R0oQ9K3\nJU2VtFjSt1rdH7PBwnm4T7zu8rCkNSVdJOlJSQsk/U3SDq3ul9lg4VzcJ153uRhA0s2S/inpeUn3\nSRrZ6j7ZwOcBh/oC+FBErAy8DfgncEbBWPE6TSSvB5La+7nJmcBXgWv6uV2zwc55eIDq5zy8InA3\nsC2wOvBb4I+S3tyPfTAbzJyLB6gWXBMfB6wdEasCnwV+J+mt/dwHe53xgEPPBBARrwCXAlssPSAN\nlfRDSbMlPS3pF5KWzy+ArgXWkfTvfDR4bUnvkXR7/teZJyWdIWlI6Y5J20q6V9JCSROAN1Ud3y8f\neVwg6VZJ76pznrr9knSmpB9W1Z8o6bj8+dskXZqPdD4m6X8r6r1J0m8kzZf0EPCeBu9nT0nT8378\nXNIkSUfkx0bn7+HHkp4DxijzjXzU/Zm8rZXy+suMpldOmZM0RtIfJE3I/3/ukbRVvb5FxAURcQPw\nYk/vwcz6hPPwIM/DEfF4RJweEf+MzDnAUGDTnt6PmfUq5+JBnosBIuKhiOiqKBoCrNfT+zHzgEMB\necI8CLijovg0YASwVf7vOsC3IuIlYB/gqYhYKSJWjohngE7gi2R/nXk/sCtwTMn+LAdcAZyfn+8P\nwMcqjm8HjAeOzo//CpiYx1XrqV/nAwdXnHeN/PhFkgRcDdxHNtq9G3C8pD3y6mOBt+ePvYDRPbyf\nNfL38DVgDeDRvC+V3gv8HVgTOAX4NPBJYBdgI2Al4OcV9RuNpo8ELgFWAy4GbpU0T9LUBnENSerI\nf7BNyf/9rwpOOZN0qKQHJN3f4Ifi7/IfRlMl/VoVI9wV7T8k6S952XBl0+CmSXqw+wdkb5C0kqS5\nkn7WW+c0q+Y8vPS8b+Q8fKUK/LVO0jbAcnlfzKwfORcvPe+gzcXKltT8F7gT+EtE3NPg/DbYRYQf\nNR7A48ALwHxgMTAX2LLi+IvA2ytevx/4R/58F2BOg/MfD1xWsm8fAOZWld0GfDt/fhYwrur4dOAD\nFe9t1yL9Ah4GdsuffwG4Jn/+XmBWVeyJwPj8+WPAHhXHjq73mQCHA7dVlc0Bjsifj67R1k3A5ype\nbwIsIhtEW+bzr3zPwBjg9opjAv6VtzO1h8/9ArIfoCn/V6vl535Tra+xGmXvA1bJn+8N3FnnvHtX\nPL8I+Gz+fJX8/2zd/PWw/N+1gW3y5yuS/QDbrJe+V04Hfgf8rDfO54cf3Q/n4aWvB0sefgrYscHn\nvjIwFTih1V+ffvgxWB7OxUtfOxe/Wq+dbPDk+FZ/ffox8B+e4dCzURGxOtnUzf8F/ippLUlrAm8G\n7s2nR80HriMbiaxJ0sb5iODTkp4nG5EcVqfuL/Tq1LMTa1RZB3iyqmx2xfMNgK90903SAmB4Hpfa\nr98Ch+XPD8tfA6wPrFvVxknAWhV9nFunf7XeT/WGQnOrXlcfX6fqnLPJ/uJVdB3Z0vNFRAD/IPs/\nXUrSRpKukzRZ0i1kI8apDgCui4iXaxxbZsQ5Iu6MiIX5yzuBmpsyRcT1FS/vJvv/BTiU7Ifjk3m9\nf+X/PhMR9+fPXwQe6T539fuUtEnRNydpe7L/8xuLxpglch4ePHl4LjU+n26S3gRMJLs4Pq1gG2bW\nO5yLnYupqNcZ2XLjvSXtV7AdG6Q84NCz7vVqERFXkE212onsL9YvkY3urp4/Vo2IVfK4WlOXfkH2\nS947Itto5eTu81eLiM/Hq1PPvlejytMs+4vo+hXPnwBOqejbahGxYkRcUqJfvwNGKVvPtRlwVUUb\n/6hqY5WI2D8//hSvXdO1Qa33WvF+qtd/Da96Xf2ZPlV1zg3IRt3nAf+hYvAgnxa2ZlX8ehXHlbc3\nr6rO2cCxEfEesk0j39vDe6jnYLLpabXU/P+vcBTZD+26lK0tPLyi3ibA6pL+kg8gHF4jZkNgG+Cu\nvKj6ff6iQb+6zyPgh3lMo/diVpbz8ODKw0/V6pykocCVwBMR8bke3oeZ9Q3nYufiWoYA7yhY1wYp\nDzgUJGkUsCowLR/9Owc4PR/ZRdK6kvbMq88D1pC0csUpVgJeiIiXJG0GfL6J7twBLJH0v5LaJX0U\nqLxF2DnA55TfNkzSWyTtK+ktNc7VY7/yv5TfQ7ac4LKIWJQfuht4QdIJyjbDaZe0paR358f/AJwk\naVVJw4Fje3g/fwTeKWlkfp5jaTwqezHwJUkbSlqRbBR6QmQb2cwA3iRpn/wX8m+QjchX2l7Sh/PE\n+yXgZbK1d0D2mQH/A/xB0n1kv5SvACwn6UBl+yBMrXg8KOk1gwOS1gbeCdxQUXamsv0V7gPepmyf\nhymSTqqK/SDZmryvNfgczgJuiYjb89dDgO3I1kzuDXxT0oiK865IttnT8RHxYo33+Svyz17SRxq8\nz2OAP3bPpsCDDtbHnIcHRR6+s7qRPP4ysl9qRjfok5n1MefiQZuLN5W0d/4eh0g6jGxJyy0N+meD\nXa11Fn4sXd/0H7I1awvJ1oweXHF8KNk39GPA82Truo6tOP5rslHf+WTr5z9ANmr6Atk35ljgr030\nbztgSt63i/PHtyuO70mWAOeTTTW7BHhLfuwfvLp2q2G/gE+QjWTvXFW+Ntn+AU8DzwG3V5x3BbIN\ndhYADwFfoYc1fHl/H83rn0m2/u4T+bHRNfoksqQ5h+yH2fnkex/kxz9JNjr7DPDlqvc8Bvh9/pm9\nANwLbE02Ijw1r7MS8GT+/DygK/8Muh+fLPB/dBzwyx6O/6NO+VZkt+J8R4Pzfwu4vKrsa1TsM5F/\nHX4sfz4EuJ6K9XaV77PE1+DvgFn5Z/ss2ffBd1v9vevHG+eB83BlW4MiD9fp1875e38R+Hf+eIEG\na4z98MOP3nk4F7+mrcGcizcjG4hYmH+WdwEjW/316cfAfyii1kwns1dJ+gBwQURs2E/tiWz92KER\n0eujppLGkP0y/8mq8g2BqyPiXfnrW4HTI+LS/PVWEVH4LhaS7gBOrPceJD0eEW+vKlsf+DNweEQs\nM7pcUe8oshkQu8arI+zkI/JnkM1uWJ7sh8FBETFN0m+Bf0XEl6vO1dT7zGNGA9tHRK/d/cLMXjVY\n8rCZ2UDmXGyWzksqrEfKbht0PNmUtL5sZ09Jq0hanmzNHNSYztWH7V9ENhq9iaQ5kj5NNop9pLJb\nVD5EdtugoufbABje4IdDrdG+b5LdjumsfOnF3RXn/GO+TAOydYZrAXfmSzK+ARAR08mWcEwl+/zO\nzgcbdszfz6569Zade+fnOqzs+zSzvjdY8rCZ2UDmXGxWzpBWd8AGrvyv5feQ7W3w0z5u7v1kU9GW\nA6aR7Ya8qOeQ3hMRh9Y5tE/J881m2U1/qutsVKPsaLLbJdWq/6GK57XuH9197IdkmzlWlt1Gdguj\nWvVnUfJ9VpzjfLIpfGbWiwZTHjYzG6ici83K85IKMzMzMzMzs36SzzQ+nWzFwfiI+H7V8aFkt17d\nnmwPlIMiYk5+7CTgCGAJ2d5sN+bl44H9gHkRsVXFuU4D9gcWke218umIeKHBuWr2L1+CPgFYjWzv\nlMMjYklP79VLKszMzMwGkXyn+emSZkha5m5IkoZKmiBppqQ78v2Fuo+dlJc/UnEnAiSNlzRP0tSq\nc52W171f0mXddyuQtLukeyQ9oOw2zh+s0Y+J1eczM3u9k9RGtiHoXsCWwCH5LJpKRwLzI2Jjsl/8\nT8tjtwA+DmxONkP5rHyvD8g2ut+rRpM3kt26dhuyjelP6ulcDfr3feBHEbEp2SaxRzZ6v32+pEKS\np1CYDSARUer2latKsbB49dn9taGSNeY8bDbwlMnFiXkYauTiigvJ3ch2rp8s6ap8D6BuSy90JR1E\ndqF7cNXF6XDgJkkbRzZd9jyyTYt/W9WHG8k2UO6S9D2yC92TyO5utF9EPCNpS7L9h4ZX9PMjZLvm\nv2E4F5sNLC28Jt4BmJkvwUbSBGAUUJmHR5HdRQSyW9qfkT8fSXbb0yXALEkz8/PdFRG35vvIvUZE\n3FTx8k7gYw3OpR76tytwSB5/PtndXH7V0wfQL3s4TOp6T83y88Y+yafHrrtM+c4PTC7Vzru2vrtx\npSpzXxneuFINfxq6R3LMux9+uO6xsWfB2GNqH2tb7aXktiauu19yzO85KDkG4Kj4dXLMzmfX/z8e\nezWM3b/2sV9+Jn0T3UM7L06OAVh17xLL5f68ODmka9LydY+NPQ/Gfrr2sT/usmtyW/vr5uSYbguB\n7xSs+43sFqM2gIyMi2qWTx97KZuNPaDmsYWsmtzO6XF8cgzAtp98NDlmzG9PLNXWuN9/r/aBP4yF\nA8fWPHTEQT9PbmdR1P/e7smFE49Kjjl45Hml2rpy4aia5Yu/932WO3GZP3wD8FLnsFJtqaNE0Enp\nIfGXEu0A3zq7/tfTLWP/xi5jP7BM+f+dXedrqSfD90L73ZAeR1oehrq5eEBc6EbEAxV1Hpa0vKTl\nImKxpLcAXwI+Q3bLvjeMA+M3NcsfHnsFW479yDLl/2StUu2MjyOSY0ac9lSptsackJ6Lx13ew/fO\nJWPhoLHLFJ/8sZOXKSvi6VgnOebcKV8o1dYnt/tlcszF8+ttIwad3z+V9q/VToSLSvyM1sca11lG\n+q88AMSf0mNO/MuYusduHTuJncZ21Dz2/fPHJbelOtfXRfTCNfG6wBMVr+eS5dKadSKiU9JCSavn\n5XdU1HsyLyvqCLLboHa3UetcqtU/SWsACyKiq6K84TdYU0sqGk3JM7M3luUKPqx/ORebDR5F83AP\nubjWhW71xeprLnSBygvdytgyF7rXVRdKOgC4LyK6R+3/j2zz4/8mnLulnIfNBpd6eXcOMKniUUet\nmRXVM6Dq1SkSW7tR6WRgcUR0DziktqEaxxq2XXqGQ8EpeWb2BuLb2gw8zsVmg0tPefjvZLuBNdDq\nC92Lqsq3BE4l/zuqpK2BERHx5XxzslJTnvuT87DZ4FMvF2+aP7rdVLvaXGD9itfDyXJHpSfI7nj3\nlKR2YJWIWCBpLq+9E16t2GVIGg3sS7YkorIftc6lWv2LiH9JWlVSWz7LoVDbzcxwWDolLx+R7p6S\nV9g2HSs10fwbS0ftVSeDUscmre7BwNGxTat78Fqe4TAgNZWLh3Vs0Wcde93ZoqPVPRgw2nbasdVd\nGFA26Fi/caV+0lPu3Zxse/LuRx0pF7pUXuhS/+K0RxUXuodWlQ8HLifb5XxWXvx+YDtJ/wD+Bmwi\nNbEesH80fU28Zkf1fnGD2JYdre7BgKEdd2p1FwaM9Ts2bHUXXqPJa+LJwAhJG+R3ozgYmFhV52pg\ndP78QKA7D04k21NnqKS3AyOAyn0FlpmFkN9x4gRgZNUtVuudq1b/rspjbs77Q96/q2igmQGHIlPy\nerRtx8pNNP/G4gGHV3Vs2rjOYNGxbat78ForFHxYv2oqF3vAoYIvcpdq38kXuZU27Bg429IUzcM9\n5OIBcaEraRXgGrINJe/sLo+IX0bE8IjYCNgJeDQi0jct6l9NXxOv1bF5r3bode2dHa3uwYDRttOy\ne8cMVgNtwKGZPJwvVTuWbFPdh8n2xnlE0jhJ3ePF44Fh+V45XwROzGOnke1tMw24Fjgm37gXSRcB\nt5MN1M6Rlu5UcQawIvAnSVMkndXTuer0r3vG1onAlyXNAFbP+9mjZmZIF55Wd97YJ5c+36ZjJQ80\nmPWTByct4MFJC3rtfF5SMSAVysXTx1669Pmwji080GDWjyY9CpNm5C9W/ntT52o2D+ebj3VfSHbf\nX/0RSeOAyRFxDdkF5AX5he5zZIMSRMQ0Sd0Xp4tZ9kK3A1hD0hxgTER037liKNmFLsCdEXEM2cXs\nO4BvSvoWWd7aMyL+1eRbbIXC18QPj71i6fM1OzbzQINZP5k0PXv0ll7Ixdfz2tUXRMSYiueLyO4K\nVCv2VLKlaNXlNXcgzW+tWa8f9c61TP/y8seB99Y7Xy3NfFZFpuQB1LwThZn1vXd1rMa7OlZb+vri\ncbOaOp+XSwxIhXJxvTtRmFnf69i0Yvbe8BGMu7jATgt19EYeHggXuhFxCnBKg37OBrbqqc4AUfia\nuNadKMys73Vslj26jWu4EKBnviYurpkBh6VT8oCnyUa/D+k5xMxezzzDYUByLjYbRJyHByTnYbNB\nxrm4uNKfVb0peb3WMzMbcDyaO/A4F5sNLs7DA4/zsNng41xcXFODM/XWdpjZG5OT68DkXGw2eDgP\nD0zOw2aDi3NxcZ4NYmaFOWGYmbWW87CZWes5Fxfnz8rMCvNorplZazkPm5m1nnNxccrvZtR3DUih\nWS8nxXQueFOptn63zceSYy7t+miptrYZclhyzLc/1lmqLU5OD9F2Y5Njftf1QHpDwJv5b3LML+Nz\npdq67gfp/1/PfnXFUm19it8kx3w/vpYcs9XxM5NjgGwP7FQnthERtW7f1ZCkuLVg3Z2gdDvW+yTF\n47FmctyvOSo5Zm3mJccAbF5iufNDemeptj4Rv0uOuZiaG/D3aGzX2OQYgH3arkuOmaLtyrUV6W29\nUvIy69+slByzGs8nx6zHE8kxAGvxz+SYw95xeXpDO++Fzr+hVI5MycPgXDzQSIoFS4YmxXy/Pf26\nAmB9ZifHbB1TS7X1Bw5MjvnR499Ijrlio72TYwB+w6eSY94WT5dq694SufjDUe52CY+xUam4VG9n\nVqm4lfh3csx2TCnV1o6r3Z0cM3Rh+fzoa+I0nuFgZoU5YZiZtZbzsJlZ6zkXF+fPyswKa2b6mKRN\ngEuAAARsBHwzIn7WG30zMxsMPI3XzKz1nIuL84CDmRXWTMKIiBnAtgCS2oC5wBW90S8zs8HCF25m\nZq3nXFycPyszK6wXR3N3Bx6LiHKLrc3MBin/Vc3MrPWci4vzgIOZFdaLCeMg4OLeO52Z2eDgCzcz\ns9ZzLi7On5WZFVZvNPfO/FGEpOWAkcCJvdIpM7NBxH9VMzNrPefi4jzgYGaF1UuuH8gf3X7a82n2\nAe6NiGd7p1dmZoOHL3LNzFrPubg4DziYWWErFM0YS3o8egheTmFmVkrhPAyNcrGZmZXUS9fEg4IH\nHMyssCFNJldJK5BtGPmZXuqSmdmgUjgPgy90zcz6SLPXxIOJBxzMrLDl2puLj4j/Amv2SmfMzAah\nZvOwmZk1z7m4uLZWd8DMXj+GDCn2MDOzvlE0DzsXm5n1nWbzsKS9JU2XNEPS12ocHyppgqSZku6Q\ntH7FsZPy8kck7VlRPl7SPElTq851gKSHJHVK2q6ifDlJ50qaKuk+Sbvk5Svmr6fk/z4r6cf5sdGS\n/pkfmyLpiIafVaMKZmbdlnPGMDNrKedhM7PWayYXS2oDzgR2A54CJku6KiKmV1Q7EpgfERtLOgg4\nDThY0hbAx4HNgeHATZI2jogAzgPOAH5b1eSDwEeAX1WVHw1ERGwlaU3gOuDdEfEisG1Ff+8BLquI\nmxARxxV9v/3yYytuStzH88Fy7bz7J/ckx2w15LLGlWp418VKjhn78VJNwT3pE1Hiben9U3QmxwB8\nUuckxxy+zPdBQV/tSg45Tr8p1dRP+FJyzI/5cnpDP38yPQYY0flccszfm70RpaePvW5t8FD6TUHm\nvnN4cswWMS05BmD3425LjtGRUaqt47au/nnb2Ct8ITlmwQ/WSY4BuOBrRyXHtN1Vqin+uf1ayTHP\ntqd/XQC0tf86OUZj0pPWkmPLJSpdmh4z5bHNkmNWZj04P72tpZyHX9dW+fMrSfVn7rlxqXbeFVMb\nV6qy4+gppdrScem5+Mfbn5Qc82iUuMYC/njyAckxnaekX0cDtM1enBwzf/01SrX1DzZPjmlrvzc5\nRj/5XHIMQOcBJZLVD0s1xeML3poe1DavXGPdmsvFOwAzI2I2gKQJwCigcsBhFDAmf34p2UACZLeW\nnxARS4BZkmbm57srIm6VtEF1YxHxaN5O9Rf2FsCf8zrPSnpe0rsjYukv1ZI2BtaMiMoLtaRvEC+p\nMLPihhR8mJlZ3yiah52Lzcz6TnN5eF3giYrXc/OymnUiohNYKGn1GrFP1ogt6gFglKR2SW8HtgfW\nq6pzMHBJVdlHJd0v6feSGv4Vwj+OzKw4Zwwzs9ZyHjYza706uXjSy9mjgVozBKqnCtWrUyS2qHPJ\nlmZMBmYDt7HsfTUOBg6reD0RuCgiFkv6LNmcvd16asQ/tsysOGcMM7PWch42M2u9Orm4Y8Xs0W3c\nCzWrzQXWr3g9nGwvh0pPkM02eEpSO7BKRCyQNJfXzkKoFVtIPnNi6VolSbcBMytebwW0R8R9FTEL\nKk5xDvD9Ru14SYWZFbd8wYeZmfWNonnYudjMrO80l4cnAyMkbSBpKNksgolVda4GRufPDwRuzp9P\nJNs8cmi+DGIEcHdFnOh5j4WlxyStIOnN+fM9gMVVG1ceAlz8mmBp7YqXo4CGm3d5nNzMinPGMDNr\nLedhM7PWayIXR0SnpGOBG8kmAIyPiEckjQMmR8Q1wHjggnxTyOfIBiWIiGmSfk/2i/5i4Jj8DhVI\nugjoANaQNAcYExHnSfow2aaTw4BrJN0fEfsAawE3SOok2wvi8KquHgjsW1V2nKSRedvzgU81er/+\nsWVmxXl3dDOz1uqFPCxpb+B0Xr3Q/X7V8aFkt1XbHvgXcFBEzMmPnQQcQbbO9/iIuDEvHw/sB8yL\niK0qznUasD+wCHgM+HREvCBpd+B7wHLAK8AJEfEXSSsAfwDekbdxdUR8vfl3bWbWi5rMxRFxPbBp\nVdmYiueLyG5/WSv2VODUGuWH1ql/JXBljfLZQN3bLUXEiBplXweScrKXVJhZcd4Z3cystZq8S0XF\n/d/3ArYEDpFUfcG59P7vZAMTp+Wxlfd/3wc4q+I2a+fl56x2I7BlRGxDtja4+36IzwL7RcTWZH8h\nu6Ai5gcRsTnZfeB3klTrvGZmreNr4sI84GBmxTm5mpm1VvO3xVx6//eIWAx03/+90iiyncchu//7\nrvnzpfd/j4hZZAMIOwBExK3AgqrzEBE3RURX/vJOsg3OiIgHIuKZ/PnDwPKSlouI/0bELXn5EmBK\nd4yZ2YDha+LCPOBgZsW1F3yYmVnfKJqH6+fiVt7//QjguupCSQcA9+UDIJXlq5Itx/hzQhtmZn3P\n18SFedzFzIpzxjAza60e8vCk57NHAy25/7ukk8l2QL+oqnxLsrXIe1SVtwMXAafnsynMzAYOXxMX\n5o/KzIpzxjAza60e8nDHsOzRbdzsmtX6/f7vkkaT7XS+a1X5cOBy4PAagwpnA49GxBmNzm9m1u98\nTVyYPyozK873dTcza63m8/DS+78DT5Pdau2Qqjrd93+/i2Xv/36hpJ+QLaVoeP/3/I4YJwA757uu\nd5evAlwDnBgRd1bFfAdYOSKObOJ9mpn1HV8TF+Y9HMysOG+QY2bWWk1uGpnvydB9//eHyTaBfETS\nOEn75dXGA8Py+79/ETgxj50GdN///VqWvf/77cAmkuZI+nR+rjOAFYE/SZoi6ay8/FiyW19+U9J9\n+bFhktYlu+XaFhXlRzT3oZmZ9TJfExem/OdE3zUgRddXEoN2L9fWxH1rLS3s2cjOzlJtTWpPH6s5\novPhUm1dzf7JMaPiquSYxw/bIjkG4O0XTkuO+ceMLUu1teoGTyfH/Hz5L5Rq6xAuT475AyOTYw5q\n2yk5BmCPqHvb3Lr+pA8TEenfKGTfy/HRgnUvp3Q71vskxRVdeybHHbLwosaVqixafUZyDEBn5/uS\nY9ravluqLWnb9Jindk6O6bppxeQYAM1N/7kcK5Rqivcd95fkmLs2+mC5xl5Mf1+d/0xPI+3nlruu\n2eWI65NjfqXPJse8mV1YTxeWypEpeRiciwcaSXFe18eTYj7z3Nml2lqy1p2NK1Xp7Ez/OQHQ1jYu\nOUY6Njlm+fnlvpRfnr5GcoxeLpdH4j/pMR/d98JSbV0x8hPpQSV+vnROKfe5t09Mb+urI79dqq3/\nVfrKq/U039fE/cTjLmZWnHfbNTNrLedhM7PWcy4uzAMOZlacM4aZWWs5D5uZtZ5zcWH+qMysOGcM\nM7PWch42M2s95+LC/FGZWXFNTh/LdyX/NfBOoAs4IiLuar5jZmaDhKfxmpm1nnNxYR5wMLPims8Y\nPwWujYgDJQ0B3tz0Gc3MBhNfuZmZtZ5zcWH+qMysuDeVD5W0EvCBiPgUQEQsAV7olX6ZmQ0WTeRh\nMzPrJc7FhXnAwcyKa2762EbAvySdB2wN3AMcHxH/7YWemZkNDp7Ga2bWes7FhbW1ugNm9joypOCj\nfvR2wM8jYjvgJeDEvu2wmdkbTNE87D8pmZn1HefhwjzgYGbF1Ummk56CsXe++qhjLvBERNyTv76U\nbADCzMyK8oCDmVnrNZmHJe0tabqkGZK+VuP4UEkTJM2UdIek9SuOnZSXPyJpz4ry8ZLmSZpada4D\nJD0kqVPSdhXly0k6V9JUSfdJ2qXi2F/y/t0naYqkYY361dNHZWZWTJ3pYx1vzx7dxt22bJ2ImCfp\nCUmbRMQMYDdgWl9008zsDcvTeM3MWq+JXCypDTiT7Fr4KWCypKsiYnpFtSOB+RGxsaSDgNOAgyVt\nAXwc2BwYDtwkaeOICOA84Azgt1VNPgh8BPhVVfnRQETEVpLWBK4D3l1x/JCIuK8qpma/enq/nuFg\nZsU1/1fuCp9UAAAgAElEQVS144ALJd1Pto/Dd/uwt2Zmbzye4WBm1nrN5eEdgJkRMTsiFgMTgFFV\ndUYB5+fPLwV2zZ+PBCZExJKImAXMzM9HRNwKLKhuLCIejYiZgKoObQH8Oa/zLPC8pMoBh1pjBdX9\n2q3uu8z5x5GZFddkxoiIB4D39EpfzMwGI1+5mZm1XnO5eF3giYrXc8kHDWrViYhOSQslrZ6X31FR\n78m8rIwHgFGSLgHWB7YH1iPb2B3gXEmdwOUR8Z06/Xpe0uoRMb9eI/3yY0v/Sgz4Xrl2Rg6P9KAv\nlZsP0zG9cZ1qn9DvSrV1GR9LjjmNE5JjPvKD65NjAB5g4+SY7Y4u8QECp9zy9eSYt/CfUm3Faelf\nGzudsHKJlk4uEQMzWKVUXFN8ofu69dG/Xpccc9QHzkiOOSeGJ8cAtLeXyN8cW6qteGv692mclt7O\ne350S3oQMPm2XRpXqvbxMp8frHHcc8kxcUWppth2q9uTY9rb/yc55oOd1ybHAOxLetw7n3soOWbP\n5YYAFybHLeU8/Lr26WsvTqp/4D4XlGrnD7Fickx76SniY5Ij4r3prbxcPRm8oJ1PSL++/etde5dr\n7Lj0XPyOfR8r1VT84uXkmB3XuTU5pr294R+wa9qjc2JyzJ66sVRbO5H+vrI/7jehuVxcPdMAoPqL\np16dIrFFnUu2NGMyMBu4DViSHzs0Ip6W9BbgckmHRcTvarSvRu37x5aZFbd8qztgZjbIOQ+bmbVe\nnVw86e8wqfEY0lyyGQXdhpPt5VDpCbLZBk9JagdWiYgFkubm5T3FFhIRncCXu19Luo1siQYR8XT+\n738kXUQ2A+N3ed8r+7VyRCyzjKOSBxzMrDhnDDOz1nIeNjNrvTq5uGOz7NFtXO1JG5OBEZI2AJ4m\n23TxkKo6VwOjgbuAA4Gb8/KJZPuh/YRsecMI4O6KOFF7FkTl8eyJtAKgiHhJ0h7A4oiYng8krBoR\nz0laDtgP+FNF+7X6VZd/bJlZcd4d3cystZyHzcxar4lcnO99cCxwI9nGjOMj4hFJ44DJEXENMB64\nQNJM4DnyO0FExDRJvye709ti4Jj8DhXkMxE6gDUkzQHGRMR5kj5MdveKYcA1ku6PiH2AtYAb8n0a\nngQOz7u4fF4+JH+nNwHn5Mdq9qsnHnAws+KcMczMWst52Mys9ZrfSP16YNOqsjEVzxeR3f6yVuyp\nwKk1yg+tU/9K4Moa5bOBzWqUv8Rrb49Zeaxuv+rxjy0zK84Zw8ystZyHzcxaz7m4MH9UZlacp/Ka\nmbWW87CZWes5FxfmAQczK84Zw8ystZyHzcxaz7m4MH9UZlacM4aZWWs5D5uZtZ5zcWH+qMysOGcM\nM7PWch42M2s95+LC/FGZWXHLt7oDZmaDnPOwmVnrORcX5gEHMyvOGcPMrLWch83MWs+5uLC2VnfA\nzF5H2gs+zMysbxTNwz3kYkl7S5ouaYakr9U4PlTSBEkzJd0haf2KYyfl5Y9I2rOifLykeZKmVp3r\ntLzu/ZIuk7RyXr67pHskPSBpsqQPVsRsJ2lq3r/Ty3xMZmZ9ytfEhXnAwcyKG1LwYWZmfaNoHq6T\niyW1AWcCewFbAodI2qyq2pHA/IjYGDgdOC2P3QL4OLA5sA9wliTlMefl56x2I7BlRGwDzAROysuf\nBfaLiK2BTwEXVMT8AjgqIjYBNpFU67xmZq3ja+LC+uVjiIVp9c/5qxpXquHozs70oK+WG3P5zIif\nJsecHf9bqq1v6uTkmB/z5eSYj67zx+QYgK3/mj589+rfRNJ8nvOSY154c7n/Y+2Y/nX4thMWJMfc\n1bVVcgzALDZMjjmoVEsVnDhft/bf+ZLkmMs7P5oc09U1PDkGYH1mJsdsH/eUausKHZIc08ENyTEv\n8pbkGICuHSM5pm2DUk0xm/TArq3LtdXW/vfkGN27Y3LMTXwoOQag/bv7Jsd0vqfEn6/W2Ku5v/Y0\nn4d3AGZGxGwASROAUcD0ijqjgDH580uBM/LnI4EJEbEEmCVpZn6+uyLiVknLfEFFxE0VL+8EPpaX\nP1BR52FJy0taDlgDWCki7s4P/xb4MJT4JhyAdt73xqT6lz52WKl2urrSv8reypxSbe0b6deP5+nz\nyTH7c2lyDMBilkuO6Xpveh4GaFsjPWYGG5dqq2vdNyXHtLXPSo7RLeV+L7ueUckx7T8fWaqtzs3T\nc3HTf3X3NXFh/qjMrDhPDTMza63m8/C6wBMVr+eSDRrUrBMRnZIWSlo9L7+jot6TeVlRRwATqgsl\nHQDcFxGLJa2b96myfyltmJn1PV8TF9bUgIOkWcBCoAtYHBHVP7DM7I3EQ5QDknOx2SDSQx6edC9M\nmtLwDLX+XFn959x6dYrE1m5UOpksP11UVb4lcCqwR0L/BhznYbNBxtfEhTX7UXUBHRGRPo/czF5/\nnFwHKudis8Gihzzc8d7s0W3c+JrV5gLrV7weDjxVVecJYD3gKUntwCoRsUDS3Ly8p9hlSBoN7Avs\nWlU+HLgcODwiZlX0L7mNAcB52Gww8TVxYc0uX1EvnMPMXi+WL/iw/uZcbDZYFM3D9XPxZGCEpA0k\nDQUOBiZW1bkaGJ0/PxC4OX8+ETg4v4vF24ERwN0VcaJqhoKkvYETgJERsaiifBXgGuDEiLizuzwi\nngFekLRDviHlJ4GrevhEBgrnYbPBxNfEhTWbGAO4Ib+d0dG90SEzG8C8I+9A5VxsNlg0eZeKiOgE\njiW7e8TDZJtAPiJpnKT98mrjgWH5ppBfBE7MY6cBvwemAdcCx0REAEi6CLid7K4ScyR9Oj/XGcCK\nwJ8kTZF0Vl5+LPAO4JuS7suPDcuPHZP3YQbZBpfXl/24+pHzsNlg4mviwpr9GP4nIp6RtCbZD5JH\nIuLW6kpjH3n1eccw6FizyVbNrJCHJ/2LaZOe670TOnEOVA1z8fSxr+7uPaxjC4Z1bNHffTQbtCY9\nAJOm5i9WSL9bx2v0Qh7Of4HftKpsTMXzRWS3v6wVeyrZngvV5YfWqV9zC/6IOAU4pc6xe4F31en+\nQFXomnjW2N8tfb5qx1as2lHuTlVmlmbS/Vku7jW+Ji6sqY8qn/ZGRDwr6QqyXY6XHXDYvJlWzKys\nLTuGsWXHsKWvLx2XfuvB12hyR15vqtU3iuTizcYe0IqumRnQsXX2AGCNEXz7nMfKn8w7ow9IRa+J\nNxxb7jaXZtacjm2yR7dv/7bJEzoXF1Z6SYWkN0taMX/+FmBP4KHe6piZDUDNTx/r3lRrWw829A7n\nYrNBpsklFdb7nIfNBqEm87CkvSVNlzRD0tdqHB8qaYKkmZLukLR+xbGT8vJHJO1ZUT5e0jxJU6vO\ndYCkhyR1Stquonw5SedKmpovbdslL19B0jX5+R+UdGpFzGhJ/8yXwU2RdESRj6qstwJXSIr8PBdG\nxI1NnM/MBrrmL2C9qVbvcy42G0w8kDAQOQ+bDTZN5GJJbcCZwG5kd+GZLOmqiJheUe1IYH5EbCzp\nIOA0sk17tyBb8rY52V18bpK0cb6fznlk++ZUz994EPgI8Kuq8qOBiIit8uVg1wHvzo/9ICJukTQE\nuFnSXhFxQ35sQkQcV/T9lv6oIuJxYJuGFc3sjaP5C93uTbUCODsizmn6jIOcc7HZIOMBhwHHedhs\nEGouF+9AtiHubABJE4BRQOWAwyige2+dS8kGEgBGkv3CvwSYlW/uuwNwV0TcKmmD6sYi4tG8HVUd\n2gL4c17nWUnPS3p3RNwD3JKXL5E0hWxwo1v1eXrkH1tmVljUWa826VaYdFuhUxTaVMvMzGqrl4fN\nzKz/NJmL1wWeqHg9l2zQoGadiOiUtFDS6nn5HRX1nszLyngAGCXpEmB9YHtgPeCe7gqSVgX2B06v\niPuopA+Q3UnoyxExt6dGPOBgZoW98qba5f+ze/bo9u3TatcruqmWmZnVVi8Pm5lZ/6mXi2/5K/z1\nbw3Da80QiIJ1isQWdS7Z0ozJwGzgNmDJ0g5I7cBFwOkRMSsvnghcFBGLJX0WOJ9saUhd/TLgkDTn\nAjh603Kf2b28Mznmkz+4p3GlGl7M9gZK8lhXucGnUzZ9MjlmgxnTG1eqcn7XwckxAJ+6Nv3/q/NT\nJZfxz0j9aoKVf1KuqV0/e01yzOcYlRzzHcYnxwA8dNJ7SkQ1t33Ckvai8V3LlEh6M9AWES9WbKo1\nrqkOWWEjSN8Vf+IN6Tnhjn23a1ypho31f8kxd/HeUm21/zw9Zy13yPuSY+asvn7jSjW0P/B8csz6\nt80o1dZDh6bnkfb1yv2M3qFzw+SY89goOebzHJ8cA3D3SekrvNoOWjbXNbLX1tBMLi6eh6FWLrbW\nGkHabVH/etdepdr52zvSv7d30zGl2ppK+q09289PzyPbjl47OQbgb//ZJTmm/fkXS7X11j8/kxxz\n1WcOKdVW+9vSP8OtO9N/V7qCcp/78Xw5OWbGMT8t1Vbbj8vkur65Jt7xg9mj2ynfrdm3uWQzCroN\nJ9vLodITZLMNnsp/8V8lIhZImpuX9xRbSER0wqv/UZJuAypvaXc28GhEnFERs6Di+DnA9xu14xkO\nZlZY55CiKeOVWoXeVMvMrEnF8zDUycVmZtakJq+JJwMj8v0WngYOBqpHnq4GRgN3AQcCN+flE4EL\nJf2EbCnFCODuijjR89/7lx6TtAKgiHhJ0h5kt6yfnh/7DrByRBz5mmBp7e4Zy2T7TEzroS3AAw5m\nlqCzvfyCNW+qZWbWvGbysJmZ9Y4mr4k7JR0L3Eg21WJ8RDwiaRwwOSKuAcYDF+SbQj5HNihBREyT\n9HuyX/QXA8fkd6hA0kVAB7CGpDnAmIg4T9KHyTadHAZcI+n+iNgHWItsM/dOsr0gDs/Psy7wdeAR\nSfeRLdk4MyLOBY6TNDJvez7wqUbv1wMOZlZYJ77QNTNrJedhM7PWazYXR8T1wKZVZWMqni8iu/1l\nrdhTgVNrlB9ap/6VwJU1ymcDm9Uof5I6a04i4utkgxGFecDBzApb4gtdM7OWch42M2s95+LiPOBg\nZoV1OmWYmbWU87CZWes5FxfnT8rMCvNUXjOz1nIeNjNrPefi4jzgYGaFvcLQVnfBzGxQcx42M2s9\n5+LiPOBgZoV5vZqZWWs5D5uZtZ5zcXEecDCzwrxezcystZyHzcxaz7m4OH9SZlaY16uZmbWW87CZ\nWes5FxfnAQczK8zJ1cystZyHzcxaz7m4OA84mFlhXq9mZtZazsNmZq3nXFycBxzMrDCvVzMzay3n\nYTOz1nMuLk4R0bcNSDGja3hSzBzWK9XW/+mbyTGLWL5UWyL9c9snri3V1rfaD02OWbtr1eSYa9g/\nOQbgzfFScsz/LLq9VFvzx6ybHPOn7+1Uqq2xjE2Oue2vuyfHnLvLIckxAPuW+Hpap20hEaEy7UmK\nW2P7QnV30r2l27HeJyk6H0z/72h/piu9rcfSYwAu/+w+yTFXR7mcdW57et7/dedfkmPGc2RyDMAd\nJ+yaHPPBH/yxVFvrxNPJMf+NFUq1dfk7P5EcM+rhi5Njrtq+XE7dYsq9yTFjYlxyzNpsxy5t3y6V\nI1PyMDgXDzSSonNG2n9H+8JyOVUl4m7e7f2l2ro29k2O+UF7ep67s+sLyTEAP4ivJsdc9t3DSrW1\nx8kTk2PeFQ+WauvBeFdyzJ92H5kcc+Sfz0yOARi/47HJMdvf/rdSbX05fpwc84m2q3xN3E88NGNm\nhXm9mplZazkPm5m1nnNxcR5wMLPCFjG01V0wMxvUnIfNzFrPubg4DziYWWFer2Zm1lrOw2Zmredc\nXFxbqztgZq8fnbQXepiZWd8omod7ysWS9pY0XdIMSV+rcXyopAmSZkq6Q9L6FcdOyssfkbRnRfl4\nSfMkTa0612l53fslXSZp5bx8dUk3S/q3pJ9VxRwiaWoec62k1Zv4yMzMep2viYvzgIOZFebkambW\nWs0OOEhqA84E9gK2BA6RtFlVtSOB+RGxMXA6cFoeuwXwcWBzYB/gLEndm6Gdl5+z2o3AlhGxDTAT\nOCkvfxn4BvCVqv61523uksc8CKTvPmdm1od8TVycBxzMrLAltBd6mJlZ3yiah3vIxTsAMyNidkQs\nBiYAo6rqjALOz59fCnTfUmAkMCEilkTELLIBhB0AIuJWYEF1YxFxU0R03zLhTmB4Xv5SRNwOLKoK\n6R7AWCkfzFgZeKrnT8XMrH81e03czzPNDpD0kKROSdtVlC8n6dx8Rtl9knapOLZdXj5D0ukV5atJ\nulHSo5JukLRKo8/KAw5mVlgnQwo9zMysbxTNwz3k4nWBJypez83LataJiE5gYb6soTr2yRqxPTkC\nuK6nChGxBDiGbGbDXLLZFOMT2jAz63PN5OEWzDR7EPgIcEtV+dFARMRWwJ7AjyqO/QI4KiI2ATaR\n1H3eE4GbImJT4GZenbVWl38zMLPCPDXMzKy1esrD0yY9y7RJ/2p0ilr3g4+CdYrE1m5UOhlYHBEX\nNag3BPg8sHVEzJJ0BvB14JQi7ZiZ9Ycmr4mXzjQDkNQ902x6RZ1RwJj8+aXAGfnzpTPNgFmSumea\n3RURt0raoLqxiHg0b6c6h28B/Dmv86yk5yW9m2ywd6WIuDuv91vgw8ANeb+6Z0KcD0wiG4SoywMO\nZlZYbww45KO69wBzI2Jk0yc0MxtEesrDm3aszaYday99fdm4R2tVmwusX/F6OMsuWXgCWA94Kt9T\nYZWIWCBpbl7eU+wyJI0G9uXVpRk92YbsL26z8te/B5aZbmxm1kpNXhPXmmm2Q706EdEpqXKm2R0V\n9VJnmlV6ABgl6RKynwvbk+X4yPtU2b/uNt4aEfPyfj0jac1GjXjAwcwKW8TyvXGa44FpZOtyzcws\nQS/k4cnAiPyvYE8DBwOHVNW5GhgN3AUcSDZtFmAicKGkn5BdfI4A7q6IE1WzICTtDZwA7BwR1fs1\nVMZ1exLYQtIaEfEcsAfwSNI7NDPrY03m4pbMNKvhXLKlGZOB2cBtwJJebsMDDmZWXLMzHCQNJ/sr\n1ynAl3ujT2Zmg0mzeTj/S9mxZHePaAPGR8QjksYBkyPiGrI9Ey7Ip+o+RzYoQURMk/R7skHjxcAx\nEREAki4COoA1JM0BxkTEeWTTgIcCf8pn894ZEcfkMY8DKwFDJY0C9oyI6Xlf/ibpFbKL4E819abN\nzHpZvVz86KRneHTSvEbh/T7TrJZ8j56l1+OSbiPbDPj5Htp4RtJbI2KepLWBfzZqxwMOZlZYLyyp\n+AnwVaDhjrZmZras3ljaFhHXA5tWlY2peL6IbFOyWrGnAqfWKD+0Tv2Ne+jH2+uUnw2cXS/OzKzV\n6uXiER3rMqLj1RUO14ybWqtav840q7L0mKQVAEXES5L2INtnZ3p+7AVJO+R9/STws4r2PwV8P+/f\nVT20BfTTgMPV7JdU/4vX/qpUO7vuu3dyTPu3y80OWfK+9I9Oe3aWauv/LUy/mcjym/b0dVabppfr\nX9ye3r81399wMKy273U1rlNlj2fL3Yxl93l7pAftnN6/o5/8b3o7QGfXW0rFNaNecp0x6WlmTnq6\nx1hJHwLmRcT9kjroORlaL7tpyx2TYz6+xW+SYybsNjo5BqDt8OuTY9RZLn93daZ/6a38n+q7Bjb2\nn1uHJccAdJ2WHtP2x31LtXX5vulxH1aPNxmoq23f9M994o8OTo7pujc5BIB9mZMc82ftlhyzBcvs\n55XEm/e+vv11xHuS6o/qeY/Nuq5Q9e8ujbX99M5SbemB9FxcJg+v9vINyTEAL1z51uSYrq+Xaor2\nG/ZPjjlpz2XG7wr5oU5OjmnbOf1zP/enX0iOAei6LT3mKGr+ct7QLeooEdXw9+QeNZOL+3ummaQP\nk802GwZcI+n+iNgHWAu4QVIn2XK2wyu6eQzwG+BNwLX5QDVkAw2/l3QEMIdsMKRHnuFgZoXVu5/w\nRh3D2ahj+NLX1427r1a1HYGRkvYFViC7x/pvI+KTfdBVM7M3pJ7u625mZv2j2VzczzPNrgSurFE+\nG6i+HWf3sXuBd9Uonw/sXiumHg84mFlhPdzXvaGI+DrZrc2QtAvwFQ82mJmlaSYPm5lZ73AuLs6f\nlJkV5qm8Zmat5TxsZtZ6zsXFecDBzArrreQaEbcAt/TKyczMBhFf5JqZtZ5zcXEecDCzwnrh/u9m\nZtYE52Ezs9ZzLi7OAw5mVphHc83MWst52Mys9ZyLi/OAg5kV5uRqZtZazsNmZq3nXFycBxzMrDAn\nVzOz1nIeNjNrPefi4jzgYGaF+f7vZmat5TxsZtZ6zsXFecDBzArzPYfNzFrLedjMrPWci4vzJ2Vm\nhXn6mJlZazkPm5m1nnNxcR5wMLPCnFzNzFrLedjMrPWci4vrlwGHD3JzUv0h1y8p1c779klrB2D5\n47cp1dbjq7w1OWYSnyjV1t4rrpYcs+7EBckxsWW5bxx9OD3m7wduVaqt+XPfnByz+omlmmLD8Y8k\nxxzGmOSYc9b5e3IMwH1sViJqeqm2uvmew69f6+ip5JjRnJ8c037c6OQYADZUckhsnR4D0L5jpLd1\nwbDkmGF7zU2OAWj/6fDkmKOPP6NUWx8deV1yjB4u1RT8IP1zX/ihockxb3ruX8kxAJcM+1VyzCuk\n929ttkuOqeQ8/Pq2qtKuz/6Pb5Vqp/1Hh6QHva1cTo2Pp8e1f6wrvZ0zVk2OARh2UHoubj8lPQ8D\nHHry+OSYXX98R6m2dGGJoK+k5+ElHeV+XVybfyTH/IZLS7X1b1ZKjjm7VEuvci4uzjMczKwwj+aa\nmbWW87CZWes5FxfnAQczK8zJ1cystZyHzcxaz7m4OA84mFlhTq5mZq3lPGxm1nrOxcV5wMHMCvM9\nh83MWst52Mys9ZyLi/OAg5kV5nsOm5m1lvOwmVnrORcX19bqDpjZ60cn7YUeZmbWN4rmYediM7O+\n02welrS3pOmSZkj6Wo3jQyVNkDRT0h2S1q84dlJe/oikPSvKx0uaJ2lq1bkOkPSQpE5J21WUD5H0\nG0lTJT0s6cS8fBNJ90makv+7UNJx+bExkubmx6ZI2rvRZ+WhGTMrzBewZmat5TxsZtZ6zeRiSW3A\nmcBuwFPAZElXRUTl/euPBOZHxMaSDgJOAw6WtAXwcWBzYDhwk6SNIyKA84AzgN9WNfkg8BGg+v7P\nBwJDI2IrSSsA0yRdFBEzgG0r+joXuLwi7scR8eOi79cDDmZWmNermZm1lvOwmVnrNZmLdwBmRsRs\nAEkTgFFA5YDDKGBM/vxSsoEEgJHAhIhYAsySNDM/310RcaukDaobi4hH83ZUfQh4i6R24M3AIuCF\nqjq7A49FxNyKsurz9MgDDmZW2Css3+oumJkNas7DZmat12QuXhd4ouL1XLJBg5p1IqIzX9awel5+\nR0W9J/OyMi4lG9h4GlgB+FJEPF9V5yDg4qqyL0g6HLgH+EpELOypEe/hYGaFed2wmVlr9cYeDv28\ndvi0vO79ki6TtHJevrqkmyX9W9LPqmKWk/QrSY9KmibpI018ZGZmva5e3v3XpIf5+9iLlz7qqDVD\nIArWKRJb1A7AEmBtYCPg/0nacGkHpOXIZlT8oSLmLOAdEbEN8AzQcGmFZziYWWGeymtm1lrN5uEW\nrB2+ETgxIrokfQ84KX+8DHwDeGf+qHQyMC8iNs37vHpTb9rMrJfVy8UrdWzLSh3bLn09e9yFtarN\nBdaveD2cLB9XegJYD3gqX/KwSkQskDQ3L+8ptqhDgesjogt4VtJtwLuBWfnxfYB7I+LZ7oDK58A5\nwNWNGvEMBzMrrJMhhR61SFpe0l35brcPShpTs6KZmdVVNA/3cMu2pWuHI2Ix0L12uNIo4Pz8+aXA\nrvnzpWuHI2IW0L12mIi4FVhQ3VhE3JRfzALcSXZxTES8FBG3k60ZrnYEcGrFOebX/0TMzPpfk3l4\nMjBC0gaShgIHAxOr6lwNjM6fHwjcnD+fSDYAPFTS24ERwN0VcaLnPRYqj80hz++S3gK8j9fuI3EI\nVcspJK1d8fKjwEM9tAV4wMHMEjQzjTciFgEfjIhtgW2AfSRVr1czM7Me9MKSilprh6vX/75m7TBQ\nuXa4MjZ17fARwHU9VZC0Sv70O5LulXSJpDUT2jAz63NNXhN3AseSzQB7mGwg9xFJ4yTtl1cbDwzL\nN4X8InBiHjsN+D0wDbgWOCafZYaki4DbgU0kzZH06bz8w5KeIBtQuEZSdx7+ObCSpIeAu4DxEfFQ\nHrMC2YaRlXenADgtv43m/cAuwJcafVb9sqRik5VnJNVf+OzQUu3Ma1srOeYLq5xVqq01OtMH24+6\nreaUmoY0JH1Zzon/k/7H420evj85BuDiODg5ZsnN5b70ntaqyTH60sul2pp1z+bJMe0HdSbHfOGx\nHyTHABzVVubrqbkxxmb3Z4iIl/Kny5Pln7JrzizRX+KDyTHfeuXbyTFn//Sw5BiAo99R4uu5ehJ2\nQXFCesweGzWcMbiMP209Mr0hYNv7b0uOOWfl40q1xYtJG00DEB8q1xRfTf92v+yjH0uOeeWxVRpX\nquH5NdJ/vnz67gnJMXutApD+vdWtF/bJacnaYUknA4sj4qIGVYeQzYL4W0R8RdKXgB8BnyzSzkB3\nSeI10zldR5dq5xdfHt24UpXP7VW9GqagL6Z/b8dp6c0csc749CDg3FFfSI7Z8cqbSrV14Q5HpQfd\nk56HAeITJYJOSf+/+uWh5b71VtB/k2P+zUql2jqe00tEXVOqrW69cE18PbBpVdmYiueLyJaw1Yo9\nlYpZYBXlh9apfyVwZY3y//TQxn+BZQZ7IyL5C8J7OJhZYc0m13zt8L3AO4CfR8Tk3uiXmdlg0VMe\n/vekKbw4aUqjU/T72mFJo4F9eXVpRl0R8Zyk/+QXyJBtVnZEozgzs/7kTdKLa/jnzlq7DktaTdKN\n+e7BN1RMfzOzN7AltBd61BMRXfmSiuHAe/MNyKwA52Izg57z8Aod72HNsZ9d+qijX9cOS9obOAEY\nmf+3ZBQAACAASURBVP/FrpbqP/FeLal7WtbuZFOHW8552My6NXtNPJgUmV99HrBXVdmJwE357sE3\nk+02bGZvcK+wfM3H85Om8tTYc5c+GomIF4BJwN593ec3EOdiM6ubh2s9aunvtcNkd65YEfiTpCmS\nlq5llfQ42XKJ0XnMZvmhE4Gx+RrhTwBfaf6T6xXOw2YGFM/FVmBJRUTcKmmDquJRZJtEQLaL8STy\nH0Zm9sZVb/rY8h3vY/mO9y19PX/cL5epI2kY2frdhRUb0Xyvb3r6xuNcbGbQO9N4+3nt8MY99OPt\ndcrn8GpuGzCch82sm5dUFFd2D4e1ImIeQEQ8492DzQaHJqeGvQ04P9/HoQ24JCKu7ZWODV7OxWaD\njKfoDjjOw2aDkHNxcd400swK6+F+wg1FxIPAdr3XGzOzwaeZPGxmZr3Dubi4sp/UPElvjYh5ktYG\n/tlT5VMqtgj6QDvs7P8fs34yKX/0Dk8fG3AK5+Jrx766c/3GHW9j44639Uf/zAzg3kkwZRIAf39T\nc6dyHh5wkq6J/zb2lqXP1+/YgA06Nuzj7pkZwKJJd/LKpLt67XzOxcUV/dW/etfhicCngO+T7WJ8\nVU/BJ3u/DLMW6cgf3crf+x2cXAeA0rl437GeXGLWMtt3ZA9gxCrw2M/L52Ln4ZZr6pr4A2MH3NYU\nZoNC9X5j/xl3RlPncy4uruGAQ77rcAewhqQ5wBiyjd7+IOkIYA7ZLZPM7A2us8vJtVWci80MnIdb\nyXnYzLo5FxdX5C4VNXcdJtth3swGkSVLnFxbxbnYzMB5uJWch82sm3Nxcd5NwcwKe+Vlr48yM2sl\n52Ezs9ZzLi7OAw5mVlinR3PNzFrKedjMrPWci4tTRPRtA1J0vTctZv7t5bZwXl0vJcecqaNLtXVu\n1xHJMVP0/lJtzSX9ls4Hc0lyzK3smhwD8AyrJces/fkXSrXFLzqTQ9ZcMrdUU8+ut0F60NPp/fsb\n70lvB9h/0TXJMS+s8DYiQo1rLktStD3zYqG6XWuvWLod632Sgs270uO+lf7zofOgcv/tbQ+kx+nF\ncj+/OndMj2m7PT3mM+//aXoQ8EsdnxzT9qVSTfH/2bv3eCvqev/jr/feiOZdvKFyq6C8lKEZZVqS\nFqKWmKWhnqI086SWJ/uVWp0As2OZeizNLoZkppFhKpopmmFpXkjFG6CUAiJKHkUtTYTN5/fHzIbF\nYq29Z2btvWfBfj8fj/VwrZn5zPe7Ftv3nv1d35nRDybmrmlrG1+ordMi/4USz73yv3PXtB1T7Gfw\nCP0yd83n4qe5a7ZmBHu1nF8oI/PkMDiLm42kYFi+LNb5BXPukPz/7C0LVhRqS63569oG5D/Wb7m/\n821qOWOPCblrvq38NQAt+SML/c+3C7XV1vb13DXfjfy/X7528QW5awDaTsr/MzhWlxVq66uck7tm\nL83xMXEP8QwHM8tsZZsjw8ysTM5hM7PyOYuz8ydlZtl5+piZWbmcw2Zm5XMWZ+YBBzPLzuFqZlYu\n57CZWfmcxZl5wMHMslvRq09BMzMrn3PYzKx8zuLMWsrugJmtQ1ZkfJiZWffImsPOYjOz7tNgDksa\nLWmupMclnVZjfV9JUyTNk3SXpEEV685Il8+RNKpi+SRJSyQ9VLWvj0t6RFKbpD0rlveR9HNJD0l6\nVNLpFevmS3pQ0gOS7q1YvpWk6ZIek3SzpC06+6g84GBm2b2W8WFmZt0jaw47i83Muk8DOSypBbgI\nOBDYDThK0s5Vmx0HvBARw4ALILkVh6RdgSOBXYCDgIsltU+3mJzus9rDwEeB26uWHwH0jYjdgb2A\nEyoGNlYCIyNij4gYUVFzOnBrRLwVuA04o/a7XM0DDmaW3fKMDzMz6x5Zc9hZbGbWfRrL4RHAvIhY\nEBHLgSnAmKptxgDt9wmdCuyfPj8UmBIRKyJiPjAv3R8RcQewtLqxiHgsIuYB1eeBBLCJpFZgY2AZ\n8HK6TtQeK6js12XAYXXfZcoDDmaWXVvGh5mZdY+sOewsNjPrPo3l8E7AUxWvF6XLam4TEW3AS5L6\n1ah9ukZtVlOBV4FngPnAuRHxYrougJslzZR0fEXNdhGxJO3Xs8C2nTXii0aaWXY+J9jMrFzOYTOz\n8tXL4gdmwKwZnVXXuuJkZNwmS21WI0jeSX9ga+DPkm5NZ068NyKelbQtcIukOekMitw84GBm2flA\n18ysXM5hM7Py1cvit49MHu1+PrHWVouAQRWvBwCLq7Z5ChgILE5PedgiIpZKWpQu76g2q6OBmyJi\nJfCcpDtJruUwP529QEQ8J+kaksGJO4AlkraPiCWS+gP/6KwRn1JhZtn5yuhmZuXyXSrMzMrXWA7P\nBIZKGiypLzAWmFa1zfXAuPT5ESQXaCTdbmx6F4s3AkOBeyvqRO1ZEJXr2y0kvTaEpE2A9wBzJW0s\nadOK5aOARyra/3T6fBxwXQdtAZ7hYGZ5+ADWzKxczmEzs/I1kMUR0SbpZGA6yQSASRExR9JEYGZE\n3ABMAi6XNA94nmRQgoiYLekqYDbJZSlPjIgAkHQlMBLYWtJCYHxETJZ0GHAhsA1wg6RZEXEQ8ENg\nsqT2wYRJEfFIOpBxjaQgGS+4IiKmp9t8F7hK0rEkAxZHdPZ+PeBgZtn5QNfMrFzOYTOz8jWYxRFx\nE/DWqmXjK54vI7n9Za3as4Gzayw/us721wLX1lj+Sq02IuJJYHidfb0AfLDWunp6ZMDhB3cd3/lG\nFfbWXYXaeXc80vlGVb5b8JSX41t+mrvmyyv/WKit8775fO6aY8+alLvmssj/ngBGqm/ump/9qOb/\nD506bm5r7pon31TszKGjnrk0d80RcUjumg/GQ7lrAN654V9z1xT7Cazw70Z3YGWZ+8jg3DU7X7Ig\nd81X4qzcNQC8+N+5S+LZjmYM1tc6fmXumk9N/Enumlmq+bu6U3utLHBNpoH7Fmprk5dPzF1zCL8t\n1NaLLfn7uM0xT3W+UZVDuSd3DcCbWZS75mp9LHfNrgwGzs9dt4pzeJ02b26+i8kP+83Thdr5bpyS\nv+jF7xdqK57P/+dE6+/yX+PuiBMuz10DcI/2yl3z/pW3FGqLgR/KXbJ921GFmiqSxS+2VN95sXM7\nnzQrdw3AWPIf327b+eUAarqq9t/lnah5bYXsnMWZeYaDmWXXwG3WJA0AfkFyJdw24JKI+EHXdMzM\nrJfw7S7NzMrnLM7MF400s+wau0DOCuDUiNgV2Bs4SdLO3dxjM7P1SxdcNFLSaElzJT0u6bQa6/tK\nmiJpnqS7JA2qWHdGunyOpFEVyydJWiLpoap9nZNuO0vS1ZI2T5f3k3SbpH9Kqjn4LGla9f7MzJqC\nL96bmQcczCy7BsI1Ip6NiFnp838Bc4B8c0vNzHq7BgccJLUAFwEHArsBR9UY/D0OeCEihgEXAOek\ntbuSnO+7C3AQcLGk9nObJqf7rDYd2C0ihgPzgDPS5a8B3wC+XKefHwVerv0uzMxK5gGHzDzgYGbZ\ndVG4ShpCcjGaYidbm5n1Vo3PcBgBzIuIBRGxHJgCVJ/YPQa4LH0+lfS2acChwJSIWBER80kGEEYA\nRMQdwNLqxiLi1vQe7wB3k9wznoh4NSL+Aiyrrklvw/YloOBFYczMupkHHDLzNRzMLLt6wfn4DJg3\nI9Mu0vv6TgVOSWc6mJlZVo0fwO4EVF6NcxHpoEGtbdLbt70kqV+6vPLK3k+Tb6basSQDHJ35FnAu\nviybmTUrDyZk5gEHM8uuXri+aWTyaHdj7Sv/SupDMthweURc15VdMzPrFRo/yK11e5fqWwbU2yZL\nbe1Gpa8DyyPiyk62ewcwNCJOTWfDFbsdjZlZd/KAQ2YecDCz7BoP10uB2RFR7N5bZma9XUc5/LcZ\n8PcZne1hETCo4vUAWOse4U8BA4HFklqBLSJiqaRF6fKOatciaRxwMKtPzejI3sCekp4ANgC2k3Rb\nRGSpNTPrGR5wyMwDDmaW3fLipZL2AY4BHpb0AMm3Yl+LiJu6pnNmZr1ARzk8eGTyaDe95myzmcBQ\nSYOBZ4CxwFFV21wPjCO5zs4RwG3p8mnAFZL+l+RUiqHAvRV1ompGgqTRwFeB90fEWtdrqKgDICJ+\nDPw4rR0MXO/BBjNrOg0cE/c2HnAws+zqHSpmEBF3Aq1d1hczs96ogRyGVddkOJnk7hEtwKSImCNp\nIjAzIm4AJgGXS5oHPE8yKEFEzJZ0FTCb5HD7xIgIAElXAiOBrSUtBMZHxGTgQqAvcEt6Q4u7I+LE\ntOZJYDOgr6QxwKiImNvYOzQz6wENZnFv4gEHM8vO08fMzMrVBTmczix7a9Wy8RXPl5Hc/rJW7dnA\n2TWWH11n+2Ed9OONnfRzAbB7R9uYmZXCx8SZecDBzLJzuJqZlcs5bGZWPmdxZh5wMLPsfL6amVm5\nnMNmZuVzFmfWIwMO8zUk1/bHxC8LtfPE02/OXXP4Tr8r1FbLx/LXDPvtg4XamvutnXPX9C1wYtFz\n2i53DcA+cWfums9+64pCbanAR7jJ2SsLtfWrYePyF/39M7lLZg59W/52gD/edkihuoa09XyT1jX6\nx7O5a57+XL/cNedzau4agJX7Zbqz3hpaNix2t7yYnL9uM/0zd83yKPYr9oFf7ZO7ZvKpYwu1dSsf\nzF1zxRc/W6gtvZL/37htUv5/q5b3D+p8o1p2yF9y0FW/zV2zHdvmb6iSc3idttO/n8m1/RNH9i/U\nzm/Jf6C68h2FmqJlVP7/T+Os/O28RY/lLwLujXfnrrnjrg8Vamvy5/Jn8TUcVqitaQXa0gYFcviH\nxX7Xthy8R/6iDk+yqu9zF5dw8zNncWae4WBm2Xn6mJlZuZzDZmblcxZn5gEHM8vO4WpmVi7nsJlZ\n+ZzFmbWU3QEzW4csz/gwM7PukTWHncVmZt2nwRyWNFrSXEmPSzqtxvq+kqZImifpLkmDKtadkS6f\nI2lUxfJJkpZIeqhqXx+X9IikNkl7VizvI+nnkh6S9Kik09PlAyTdJmm2pIclfbGiZrykRZLuTx+j\nO/uoPMPBzLLzPYfNzMrlHDYzK18DWSypBbgIOABYDMyUdF1EzK3Y7DjghYgYJukTwDnAWEm7kty2\neBdgAHCrpGEREcBk4ELgF1VNPgx8FPhJ1fIjgL4RsbukNwCzJV0JvA6cGhGzJG0K3CdpekX/zo+I\n87O+X89wMLPsVmR8mJlZ98iaw85iM7Pu01gOjwDmRcSCiFgOTAHGVG0zBrgsfT4V2D99figwJSJW\nRMR8YF66PyLiDmBpdWMR8VhEzAOqrwAawCaSWoGNSYZRXo6IZyNiVlr7L2AOsFNFXa4riXrAwcyy\n8zReM7Ny+ZQKM7PyNZbDOwFPVbxexJp/0K+xTUS0AS9J6lej9ukatVlNBV4FngHmA+dGxIuVG0ga\nAgwH7qlYfJKkWZJ+JmmLzhrxKRVmlp1vAWRmVi7nsJlZ+epl8XMz4P9mdFZda4ZA9T1L622TpTar\nESTzMPoDWwN/lnRrOnOC9HSKqcAp6UwHgIuBMyMiJJ0FnE9y+kddHnAws+w8RdfMrFzOYTOz8tXL\n4q1GJo92cyfW2moRMKji9QCSazlUegoYCCxOT3nYIiKWSlqULu+oNqujgZsiYiXwnKQ7gb2A+ZL6\nkAw2XB4R17UXRMRzFfWXANd31ohPqTCz7HzesJlZuXwNBzOz8jWWwzOBoZIGS+oLjAWmVW1zPTAu\nfX4EcFv6fBrJxSP7SnojMBS4t6JOdHyNhcp1C0mvDSFpE+A9QPuFIS8FZkfE99colvpXvDwceKSD\ntgDPcDCzPHxOsJlZuZzDZmblayCLI6JN0snAdJIJAJMiYo6kicDMiLgBmARcLmke8DzJoAQRMVvS\nVcDstBcnpneoIL3DxEhga0kLgfERMVnSYSR3r9gGuEHSrIg4CPghMFlS+6DBpIh4RNI+wDHAw5Ie\nIDll42sRcRNwjqThwEqS6z6c0Nn79YCDmWXnc4fNzMrlHDYzK1+DWZz+8f7WqmXjK54vI7n9Za3a\ns4Gzayw/us721wLX1lj+Sq02IuJOoLXOvj5Va3lHPOBgZtm9VnYHzMx6OeewmVn5nMWZecDBzLLz\nVF4zs3I5h83MyucszqxHBhx+sOSLubb/8/b7Fmrnhp0OyV2z1WtXFmpLG/bvfKMqj8U7CrXFpD1y\nl8SKjq4VUptOKDY3aPlLT+cv+kf+/gHE1Px9fDv3FWrrTPL/PM0Y+p3cNdvo+dw1AKfsn7+t73e+\nScc8lXed9bGWqblrjtOk3DVHclXuGoB9Y+/cNRe9dkWhtk7UpblrWq7+Su6aow7P3w7AfUfvk7um\n5U9TCrWlP+e/k9bKHxRqipYf5L9OdetjK3PXbHDNP3PXAAzd+m+5a0YxPXfNYHbNXbMG5/A67XMb\n/yTX9seoWM69jz/nrjkyLi/U1k03/yx3zSjdnrum5dffzl0D8LEjf5m7ZuV7CzVFyz35s1g3Fbuj\n4cqf5q9p+V3+4+8Nlvyr841q2PbGF3LXDCV/DgO8s+CxfkOcxZl5hoOZZeernpuZlcs5bGZWPmdx\nZh5wMLPsHK5mZuVyDpuZlc9ZnJkHHMwsuwbPV5M0CfgwsCQidu+KLpmZ9So+b9jMrHzO4szyn1Bp\nZr1XW8ZHfZOBA7u1j2Zm67OsOezzi83Muo9zODPPcDCz7BqcPhYRd0ga3DWdMTPrhTyN18ysfM7i\nzDzgYGbZ/bvsDpiZ9XLOYTOz8jmLM/OAg5ll56lhZmblcg6bmZXPWZyZr+FgZtmtqPN4bQa8MmH1\nw8zMuke9HK71qEPSaElzJT0u6bQa6/tKmiJpnqS7JA2qWHdGunyOpFEVyydJWiLpoap9nZNuO0vS\n1ZI2T5f3k3SbpH9K+kHF9m+QdENa87Ck/ynyMZmZdasGc7g38YCDmWVXN0xHQuuE1Y+OKX2YmVle\nDQ44SGoBLiK5gO9uwFGSdq7a7DjghYgYBlwAnJPW7gocCewCHARcLKk9z+tdFHg6sFtEDAfmAWek\ny18DvgF8uUbN9yJiF2APYF9JvtiwmTUXDzhk5gEHM8tuecZHHZKuBP4CvEXSQkmf6eYem5mtX7Lm\ncP0sHgHMi4gFEbEcmAKMqdpmDHBZ+nwqsH/6/FBgSkSsiIj5JAMIIyC5KDCwtLqxiLg1IlamL+8G\nBqTLX42IvwDLqrb/d0Tcnj5fAdzfXmNm1jQaPCbuTXwNBzPLrsHz1SLi6K7piJlZL9X4ecM7AU9V\nvF5EOmhQa5uIaJP0kqR+6fK7KrZ7Ol2W1bEkAxyZSNoS+AjJLAszs+bhazhk5gEHM8suyu6AmVkv\n13gO1zqlrXqv9bbJUlu7UenrwPKIuDLj9q3AlcAF6WwKM7Pm4WPizHpkwGHl5Zvk2v7+M/ct1M5B\nm8/IXfOxp64u1Nal152Uu+aI+GWhtq4/bK0Zip16bcJWuWteea3Yj8Mmt+Sv2f/CGwq19Yefteau\nOeizEwu1dfi43+cvuqzzTap9vOV3+YsAniwyT+trxdqydd4ALcpd807uz12jKPYb+M+TRnW+UZU+\nuxQ7OfID731T7pr/PTx//z7/8iW5awC2aPlw7pq2WTsUauvZr2+Ru6b10ecLtfXDL+Q/g2qzPr/I\nXXND26W5awDO1Ddz11zGuNw1W7Bl7prsZqSPDi0CBlW8HgAsrtrmKWAgsDj9w3+LiFgqaVG6vKPa\ntUgaBxzM6lMzsvgp8FhEXJijpukN5W+5tj/wH38q1M6ftn1X7ppf//TThdra4YQnctfcHf1z11xx\n5N65awDexx25a7ZdMbJQW21PDs5d88rpxc5wb33w9dw1kw8+KnfNXn1+k7sG4Ny2i3LXXPrcyYXa\nung7n6HbzDzDwczMzGy9MDJ9tKs54D4TGCppMPAMMBao/ivkemAccA9wBHBbunwacIWk/yU5lWIo\ncG9F3VoXBZY0Gvgq8P6IWON6DVV1lTVnAZtHxHF1tjczs3VEp0NqtW5zJGm8pEWS7k8fo7u3m2bW\nHHyFnLI4i80s0dhVIyOiDTiZ5O4Rj5JcBHKOpImS2qfXTAK2kTQP+C/g9LR2NnAVMBu4ETgxIpnW\n1MFFgS8ENgVuSXPq4va+SHoSOA8Yl9bsLGknkul4u0p6IK05trHPrGs4h81stcaOiXv49sQfl/SI\npDZJe1Ys7yPp55IekvSopNM765+kIZLulvSYpF9J6nQCQ5YZDpNJfllUz2s8PyLOz1BvZusN39+n\nRM5iM6MrcjgibgLeWrVsfMXzZSS3v6xVezZwdo3lNS8KnN5as14/3lhnVbPeRc05bGap4llccXvi\nA0hOS5sp6bqImFux2arbE0v6BMnticdW3Z54AHCrpGHp4G+9jHoY+Cjwk6rlRwB9I2J3SW8AZqeD\nx4s66N93gfMi4jeSfpT2s3q/a+g00Ovd5ojaFw4ys/WaZziUxVlsZonG74tpxTiHzWy1hnK4p29P\n/FhEzGPtrApgk/RaPRuT3Kb45U76tz/QfhHEy0gGMjrUyAjySZJmSfqZpPxXnTKzddCKjA/rQc5i\ns14law47i3uQc9is12koh2vdnrj6FsNr3J4YqLw9cWVt3tsTV5oKvEpyPZ/5wLkR8WK9/knaGlga\nESsrlu/YWSNFBxwuBt4cEcOBZwFPIzPrFfytWpNxFpv1Op7h0GScw2a9Ur3cnQH8T8WjplJuT1zD\nCJJRkf7Am4D/J2lIJ23XmiXRoUJ3qYiI5ypeXkJyNeP6pk9Y/fzNI5OHmXW/u26Hu4vdUqs2H8A2\nkzxZPGvC6tuv9h85jP4j39KNPTOzSgtmzGfhjAUAPMrDDe7NOdxM8h4T/3HCnaueDxk5kDeOHNTB\n1mbWVebNeIZ5M57pwj3Wy+IR6aPdebU26vHbE9dxNHBTOmPhOUl3AnvV619E/J+kLSW1pDWZ2s46\n4LDGaIak/hHxbPrycOCRDqtHTcjYjJl1qb33Sx7tvn9Wgzv0FN2SFc7i4RMO6eaumVk9g0cOYfDI\nIQAMYyjTJl7XwN6cwyVr6Jj4AxP26caumVk9w0buwLCRO6x6/fuJsxrcY0NZ3KO3J65SuW4hyTUZ\nrpC0CfAekllac2v0b2xac1van1+n/ev0F1qnAw7plSpHAltLWgiMBz4gaTiwkuR8jxM624+ZrQ/8\nzVpZnMVmlnAOl8U5bGarFc/iiGiT1H574hZgUvvtiYGZEXEDye2JL09vT/w86R/8ETFbUvvtiZez\n9u2JR1KRURExWdJhJHev2Aa4QdKsiDgI+CEwWVL7QOmkiHg03Vd1/9rvoHE6MEXSt4AH0n52qNMB\nhzq3OZrcWZ2ZrY/+XXYHei1nsZklnMNlcQ6b2WqNZXEP3574WuDaGstf6aCNtfqXLn8SeHetmnoK\nXcPBzHorT+U1MyuXc9jMrHzO4qw84GBmOXgqr5lZuZzDZmblcxZn1SMDDjuf+kCu7edesUehdqbc\nPyZ3zT/ZrFBbW730dO6a3/YZUKittqe2yl80Ln/JkRtdlb8ImPXxd+SuefriYYXauv3EEZ1vVCU6\nvG5Kfa23tOWuabunNX/NiPw1AG8cNDt3zcJCLVXyaO66avJOJ+Uv2r5AQ/n/FwVABSJhxSbFfoV9\nhPxZd8Pfjshd81qnd6au7Yg35O/fmV8qdkesS794d+6a5TsU+9xfXZ7/TtyfbPtl7pqP6IbcNQA3\n8OHcNTdycO6a97JF7po1OYfXZd/s/71c26vYIQzvHzszd422K9bWM7e9KXfN+A+clrvmzGe+k7sG\n4LkdN81dM67154XaOvOY/Fn8o7a/FWrrtSEFjjkLnAXwrbZv5C8C3qn7c9d8Y9uvF2rrPt5ZoOrS\nQm2t5izOyjMczCwHj+aamZXLOWxmVj5ncVYecDCzHDyaa2ZWLuewmVn5nMVZecDBzHLwaK6ZWbmc\nw2Zm5XMWZ+UBBzPLwaO5Zmblcg6bmZXPWZyVBxzMLIdXy+6AmVkv5xw2MyufszgrDziYWQ4ezTUz\nK5dz2MysfM7irDzgYGY5NHa+mqTRwAVACzApIr7bFb0yM+s9fN6wmVn5nMVZecDBzHIoPporqQW4\nCDgAWAzMlHRdRMztos6ZmfUC/lbNzKx8zuKsPOBgZjk0NJo7ApgXEQsAJE0BxgAecDAzy8zfqpmZ\nlc9ZnFVLmY2/MuOvZTbfVCJmld2FpjHj8bJ70DxmvBxld6HKioyPmnYCnqp4vShdZiWasazsHjSP\n52c8WnYXmsZrM+4puwtN5W8zni67CxWy5rC/fVuXzHi97B40j/kzFpTdhabx+oy7y+5C01gwY37Z\nXajiHM6q1AGHV2+/r8zmm4wHHNrNmFd2D5rH7S+X3YNqy+s85gA3VDxqUo1lzTai0ut4wGE1Dzis\ntmzGvWV3oan8fcbisrtQoV4O13rYusIDDqstmLGw7C40DQ84rLaw6QainMNZ+ZQKM8uh3kjtkPTR\nbnqtjRYBgypeDyC5loOZmWXmb8zMzMrnLM6qRwYcdqJvzeXLaK257rUdi7WzCdvlrtmWTQu1NYjW\n3DVbDtmo7rqlS/uw1VZ11rcOyd1WnY+8Q9uzcf4iYGCRH6PNhtRft+FS2Gyrmqs2YofcTfVji9w1\nAEMGFijacEj+mh1qffGfenEp7FD7sxjABrmbavw7g383UjwTGCppMPAMMBY4quEuWTYDh9Revmgp\nDKj9M8Y2BdrZukANwOYFavp28P9OB+pl3WI2qJ+DfYbkbkfFusc2BT6MLYcMKdTWwDo5ErTWXUdL\nsbZUYFLldmySu2ZTts1dA7Cyg899Q97A5jV+uHdkw9zt9CvyC3oNDeWwla1eFi9eCjvWyOKCOUK/\nAjXFDpdgo/yd3JI6v3eAjXhD7fVFjoeBlgI50o8tC7W1SYEs7ug4ejEt7FhvfYEsLvJ7aauCn8Xm\nBb7df62DtjZio7p9Kfo3TGOcxVkpontnNEvylGmzJhIRhQ5fJM0HBmfcfEFEDKmxj9HA91l9ba8W\n7gAAIABJREFUW8zvFOmL5eMcNms+RbI4Zw5DnSy2cjiLzZpLmcfEvUm3DziYmZmZmZmZWe9T6kUj\nzczMzMzMzGz95AEHMzMzMzMzM+typQw4SBotaa6kxyWdVkYfmoWk+ZIelPSApF53HzJJkyQtkfRQ\nxbKtJE2X9JikmyUVvYzROqXOZzFe0iJJ96eP0WX20dYvzuLVenMWO4dXcw5bT3MOr9abcxicxZWc\nxeuXHh9wkNQCXAQcCOwGHCVp557uRxNZCYyMiD0iYkTZnSnBZJKfhUqnA7dGxFuB24AzerxX5aj1\nWQCcHxF7po+berpTtn5yFq+lN2exc3g157D1GOfwWnpzDoOzuJKzeD1SxgyHEcC8iFgQEcuBKcCY\nEvrRLEQvPrUlIu4AllYtHgNclj6/DDisRztVkjqfBRS/KZZZR5zFa+q1WewcXs05bD3MObymXpvD\n4Cyu5Cxev5TxP/VOwFMVrxely3qrAG6WNFPS8WV3pklsFxFLACLiWSh4U/X1x0mSZkn6WW+ZSmc9\nwlm8JmfxmpzDa3IOW3dwDq/JObw2Z/GanMXroDIGHGqNTPXme3O+NyL2Ag4m+Z9o37I7ZE3lYuDN\nETEceBY4v+T+2PrDWbwmZ7HV4xy27uIcXpNz2DriLF5HlTHgsAgYVPF6ALC4hH40hXS0koh4DriG\nZHpdb7dE0vYAkvoD/yi5P6WJiOciov3g4xLgXWX2x9YrzuIKzuK1OIdTzmHrRs7hCs7hmpzFKWfx\nuquMAYeZwFBJgyX1BcYC00roR+kkbSxp0/T5JsAo4JFye1UKseYo/zTg0+nzccB1Pd2hEq3xWaS/\nXNodTu/8+bDu4SxOOYsB53Al57D1FOdwyjm8irN4NWfxeqJPTzcYEW2STgamkwx4TIqIOT3djyax\nPXCNpCD5t7giIqaX3KceJelKYCSwtaSFwHjgO8BvJB0LLASOKK+HPafOZ/EBScNJrtw8HzihtA7a\nesVZvIZencXO4dWcw9aTnMNr6NU5DM7iSs7i9YtWz0wxMzMzMzMzM+savfbWM2ZmZmZmZmbWfTzg\nYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3OAw5mZmZmZmZm1uU84GBmZmZmZmZmXc4D\nDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3OAw5mZmZmZmZm1uU8\n4GBmZmZmZmZmXc4DDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3O\nAw5mZmZmZmZm1uU84GBmZmZmZmZmXc4DDusJSZMlnZlx2ycl7d/dfapqcz9JT/Vkm2ZmPck5bGZW\nPmexWXPxgEMdkuZLelXSy5Kel3S9pJ0y1jpIaouyO9CI9N91ZdZfYmbWGOdwt1gnc7jqZ+FlSTeV\n3Sez3sJZ3C3WySwGkHSKpCck/UvSo5KGlt0na24ecKgvgEMiYnNgB+AfwIUZa8U6HCTNTlJrCW32\nAS4A7u7pts16Medwkyohh1f9LKSP0T3cvllv5ixuUj2dxZI+C3wGOCgiNgU+DPxfT/bB1j0ecOiY\nACLidWAqsOuqFVJfSedKWiDpGUk/krShpI2BG4EdJf0zHQ3uL+ldkv4iaamkpyVdmP4RW6xj0h6S\n7pP0kqQpwEZV6z8s6YG0vTskvb3Ofur2S9JFks6t2n6apC+mz3eQNFXSPyT9XdIXKrbbSNLPJb0g\n6RHgXZ28n1GS5qb9+KGkGZKOTdeNS9/D+ZKeB8Yr8Y101P3ZtK3N0u3XGk2vnDInabyk30iakv77\n/FXS7p185F8GbgbmdrKdmXUt57BzeNUuOllvZt3HWdzLs1iSgG8CX4qIxwAi4smIeLGj92PmAYcM\n0sD8BHBXxeJzgKHA7ul/dwS+GRGvAgcBiyNis/SbmGeBNuC/gH7A3sD+wIkF+7MBcA1wWbq/3wAf\nq1i/JzAJOD5d/xNgWlpXraN+XQaMrdjv1un6K9PQuR54gGS0+wDgFEkfSjefALwxfRwIjOvg/Wyd\nvofTgK2Bx9K+VHo38DdgW+DbJKOrnwL2A94EbAb8sGL7zkbTDwV+DWwF/Aq4VnVGiSUNTts7Ex/w\nmpXCObxqv70yh1NXSFoi6aYMgxNm1g2cxav22xuzeED6eLukhenAyoRO9m0GEeFHjQfwJPAy8AKw\nHFgE7Fax/l/AGyte7w08kT7fD1jYyf5PAa4u2Lf3AYuqlt0JnJk+vxiYWLV+LvC+ive2f5Z+AY8C\nB6TPTwJuSJ+/G5hfVXs6MCl9/nfgQxXrjq/3mQCfBO6sWrYQODZ9Pq5GW7cC/1nx+i3AMpJBtLU+\n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\neuPVxnRsyZiOLXtfXzzliVq7DchEZX2NMUvHOIJsgsgeRwPXR0Q38Likm4E3A0tqfjgzsyGkH+Zw\nMDOzJjmL81MaejdwJ5Ci68FaP07W176qu9y5StTd+sY3ljrXL+I9hWu+1H5yqXM92r1P8XPFfxWu\nmfqtEwvXAHzg5FmFa8ZFuZVVfhUdxWs+/P5S5/rsles1HDZ0/kFnFK55501zCtcAfDr+t3DNR9uu\nISKK/Q+ZSIpbYkyuff9R89c7T/rL/31kk0b+mWy82VEV3b2QdALwhog4QdJE4PCI6Jk08jLgLWRD\nKW4ARkdESPoh8ERETKpxzYcCp0XEARXbTgX2iIjjJW2ermNCRNyb/9vYsJTJYYB2rWq803rnKpff\n83b+h8I1v4x3lzrXf7SfX7hmzROvKH6erc5uvFMN519SPEfGHzez1LneyW8L18yOw0qd6zefKP7n\n5umXTm68U5WvvH9K4RqAg352beGa4+KSwjWv4U0c2HZWqSwuksNQO4utdUrdE5fI4excxbO4TA5D\nuSz+j/avFa5Z88SrCtcAfHar4vdzF15yaqlzlcniMjkM5bJ4sHIYymVxmRyGclncynvijY17OJhZ\nbkNtvFqOMWYTWHc4BcB3gGmSehoYpr6cGxvM7OXFQyrMzFrPWZyfGxzMLLcm1xzu9/FqjcaYRcR6\nM5tHxPP1zmFmNtQ1m8NmZtY8Z3F+bnAws9w8Xs3MrLWcw2Zmrecszs8NDmaWW7Prv5uZWXOcw2Zm\nrecszs/flJnl5vFqZmat5Rw2M2s9Z3F+bnAws9wcrmZmreUcNjNrPWdxfm5wMLPcPF7NzKy1nMNm\nZq3nLM7PDQ5mlpvHq5mZtZZz2Mys9ZzF+fmbMrPc3H3MzKy1nMNmZq3nLM7PDQ5mltsqrzlsZtZS\nzmEzs9ZzFufnBgczy83dx8zMWss5bGbWes7i/PxNmVlu7j5mZtZazmEzs9ZzFufnBgczy83hambW\nWs5hM7PWcxbnNygNDjfv8qZC+4+PGaXOc7WOKlzTdt0fSp1Ls6NwTXeXSp1r2zX3FK5ZOfPvC9d0\nn1S4BID2X36ocM0XDvxyqXN9QV8rXNM2rtz3fsH3Ti9c0/3L4uc5jVuLFwG/VkeJqmtKnauHw3XD\nddsu+xSu+UBcXbhmto4sXAPQNv++wjW6pHgOQ7ks3p6HCtc8celOhWsAuo8rXtP+mwmlzvXl/b9Y\n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\n+8b/K1zTdUrx/wY/ru8XrgH4Il8uXLOHlhERxS+S7P/ltuXVoxVq695hi5rnSctiXsDaZTG/Urn2\nu6RNyVaQeBNp7feIWJJqzyBbxWI1a5fFfDvwG+AesiEWAZyZllRD0jTgloi4uOo6jgbOBLqBn0bE\nGcW+jQ1LmRwG0CXFs6fr7aX+82KbrurOLo1t2fZsqXM9pNcXrml/sPj3d96unylcA/BZ/W/hmrZa\nzW05aFLx/Onq+mSpc02Pmqss9ukT515euKbrtHL/DR5b4ns/my8WrtmUA3m1ZpXK4iI5DPWz2Fqj\n1D1xiRyGcllcJoehXBYPVg5DuSwuk8NQLovL5DCUy+LBymEol8VlchjgLM4qXLOrHm/pPfHGxEMq\nzCy37q7mIqO/136PiJuh/jTBEXFsne0zgBm5L9zMbIhoNofNzKx5zuL8/E2ZWX7uGmZm1lrOYTOz\n1nMW5+YGBzPLz+FqZtZazmEzs9ZzFufmBgczy2/NRj0Ezcys9ZzDZmat5yzOzQ0OZpbfmlZfgJnZ\nRs45bGbWes7i3Lwsppnl92LOh5mZDYy8OewsNjMbOE3msKRDJS2SdL+k02q8P1zSTEmLJd0iaVTF\ne2ek7QslHdLomJKmSXpQ0l2S5knaJ23fQ9LvJb0oaVLF/ptKui3tf4+k3gney3APBzPLb3WrL8DM\nbCPnHDYza70mslhSG3AhcBDwGDBX0jURsahit+OBpyJitKQJwLnAREl7ka3oticwErhR0mhADY55\nSkRcXXUpTwL/DhxeuTEiVkk6ICJekNQO3Czp5xFxe5nP6x4OZpZfV86HmZkNjLw57Cw2Mxs4zeXw\nOGBxRDwcEauBmcD4qn3GA5em57OAA9Pzw4CZEbEmIpYAi9PxGh1zvb/3R8QTEXEnNQaIRMQL6emm\nZJ0Uou6nacANDmaW35qcDzMzGxh5c9hZbGY2cJrL4R2BpRWvl6VtNfeJiC7gGUlb16h9NG1rdMyz\nJc2XdJ6kTRp9PEltku4ClgM3RMTcRjX1uMHBzPLzTa6ZWWv1Q4PDAI0dnipphaQ/VB3r3LTvfElX\nStoybd8vjQ/ueRyeto+UdJOkBWns8EllvyozswHTXA7XWuKiugdBvX2Kbgc4PSL2BPYDtgHWy/31\nCiO6I+JNZMM23pKGcpTiORzMLD83JpiZtVaTOTwQY4cjIoBpwLeBH1adcg7ZzW63pK8AZ6THPcC+\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py index b41deac843..7fd6e0a692 100644 --- a/openmc/mgxs/__init__.py +++ b/openmc/mgxs/__init__.py @@ -1,4 +1,4 @@ -from openmc.mgxs.groups import EnergyGroups, DelayedGroups +from openmc.mgxs.groups import EnergyGroups from openmc.mgxs.library import Library from openmc.mgxs.mgxs import * from openmc.mgxs.mdgxs import * diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index c0eaa27c17..068977d888 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -1,5 +1,5 @@ from collections import Iterable -from numbers import Real, Integral +from numbers import Real import copy import sys @@ -11,10 +11,6 @@ import openmc.checkvalue as cv if sys.version_info[0] >= 3: basestring = str -# Maximum number of delayed groups -# TODO: Get value from OpenMC -MAX_DELAYED_GROUPS = 8 - class EnergyGroups(object): """An energy groups structure used for multi-group cross-sections. @@ -303,127 +299,3 @@ class EnergyGroups(object): # Assign merged edges to merged groups merged_groups.group_edges = list(merged_edges) return merged_groups - - -class DelayedGroups(object): - """A delayed groups structure used for multi-delayed-group parameters. - - Parameters - ---------- - groups : Iterable of Int - The delayed groups - - Attributes - ---------- - groups : Iterable of Int - The delayed groups - num_groups : int - The number of delayed groups - - """ - - def __init__(self, groups=None): - self._groups = None - - if groups is not None: - self.groups = groups - - def __deepcopy__(self, memo): - existing = memo.get(id(self)) - - # If this is the first time we have tried to copy object, create copy - if existing is None: - clone = type(self).__new__(type(self)) - clone._groups = copy.deepcopy(self.groups, memo) - - memo[id(self)] = clone - - return clone - - # If this object has been copied before, return the first copy made - else: - return existing - - def __eq__(self, other): - if not isinstance(other, DelayedGroups): - return False - elif self.num_groups != other.num_groups: - return False - elif np.allclose(self.groups, other.groups): - return True - else: - return False - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash(tuple(self.groups)) - - @property - def groups(self): - return self._groups - - @property - def num_groups(self): - return len(self.groups) - - @groups.setter - def groups(self, groups): - cv.check_type('groups', groups, Iterable, Integral) - cv.check_greater_than('number of delayed groups', len(groups), 0) - - # Check that the groups are within [1, MAX_DELAYED_GROUPS] - for group in groups: - cv.check_greater_than('delayed group', group, 0) - cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS, - equality=True) - - self._groups = np.asarray(groups, dtype=int) - - def can_merge(self, other): - """Determine if delayed groups can be merged with another. - - Parameters - ---------- - other : openmc.mgxs.DelayedGroups - DelayedGroups to compare with - - Returns - ------- - bool - Whether the delayed groups can be merged - - """ - - return isinstance(other, DelayedGroups) - - def merge(self, other): - """Merge this delayed groups with another. - - Parameters - ---------- - other : openmc.mgxs.DelayedGroups - DelayedGroups to merge with - - Returns - ------- - merged_groups : openmc.mgxs.DelayedGroups - DelayedGroups resulting from the merge - - """ - - if not self.can_merge(other): - raise ValueError('Unable to merge delayed groups') - - # Create deep copy to return as merged delayed groups - merged_groups = copy.deepcopy(self) - - # Merge unique filter bins - groups = np.concatenate((self.groups, other.groups)) - groups = np.unique(groups) - groups.sort() - - # Assign groups to merged groups - merged_groups.groups = list(groups) - return merged_groups diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 5a4e2c94d4..6d2665566b 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -65,7 +65,7 @@ class Library(object): The highest legendre moment in the scattering matrices (default is 0) energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to @@ -224,7 +224,7 @@ class Library(object): if self.delayed_groups == None: return 0 else: - return self.delayed_groups.num_groups + return len(self.delayed_groups) @property def all_mgxs(self): @@ -327,8 +327,16 @@ class Library(object): @delayed_groups.setter def delayed_groups(self, delayed_groups): - cv.check_type('delayed groups', delayed_groups, - openmc.mgxs.DelayedGroups) + + cv.check_type('delayed groups', delayed_groups, list, int) + cv.check_greater_than('num delayed groups', len(delayed_groups), 0) + + # Check that the groups are within [1, MAX_DELAYED_GROUPS] + for group in delayed_groups: + cv.check_greater_than('delayed group', group, 0) + cv.check_less_than('delayed group', group, + openmc.mgxs.MAX_DELAYED_GROUPS, equality=True) + self._delayed_groups = delayed_groups @correction.setter diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index e985b01515..6d57f10a93 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -10,17 +10,22 @@ import abc import numpy as np -from mgxs import MGXS, MGXS_TYPES, DOMAIN_TYPES, _DOMAINS -from openmc.mgxs import EnergyGroups, DelayedGroups from openmc import Mesh import openmc import openmc.checkvalue as cv +from openmc.mgxs.groups import EnergyGroups +from openmc.mgxs.mgxs import MGXS, MGXS_TYPES, DOMAIN_TYPES, _DOMAINS + # Supported cross section types MDGXS_TYPES = ['delayed-nu-fission', 'chi-delayed', 'beta'] +# Maximum number of delayed groups, from src/constants.F90 +MAX_DELAYED_GROUPS = 8 + + class MDGXS(MGXS): """An abstract multi-delayed-group cross section for some energy and delayed group structures within some spatial domain. @@ -45,7 +50,7 @@ class MDGXS(MGXS): name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC 'tallies.xml' file. - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs Attributes @@ -62,7 +67,7 @@ class MDGXS(MGXS): Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to @@ -118,6 +123,7 @@ class MDGXS(MGXS): delayed_groups=None, by_nuclide=False, name=''): super(MDGXS, self).__init__(domain, domain_type, energy_groups, by_nuclide, name) + self._delayed_groups = None if delayed_groups is not None: @@ -164,12 +170,20 @@ class MDGXS(MGXS): if self.delayed_groups == None: return 0 else: - return self.delayed_groups.num_groups + return len(self.delayed_groups) @delayed_groups.setter def delayed_groups(self, delayed_groups): - cv.check_type('delayed groups', delayed_groups, - openmc.mgxs.DelayedGroups) + + cv.check_type('delayed groups', delayed_groups, list, int) + cv.check_greater_than('num delayed groups', len(delayed_groups), 0) + + # Check that the groups are within [1, MAX_DELAYED_GROUPS] + for group in delayed_groups: + cv.check_greater_than('delayed group', group, 0) + cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS, + equality=True) + self._delayed_groups = delayed_groups @property @@ -180,8 +194,7 @@ class MDGXS(MGXS): energy_filter = openmc.Filter('energy', group_edges) if self.delayed_groups != None: - delayed_groups = self.delayed_groups.groups - delayed_filter = openmc.Filter('delayedgroup', delayed_groups) + delayed_filter = openmc.Filter('delayedgroup', self.delayed_groups) return [[energy_filter], [delayed_filter, energy_filter]] else: return [[energy_filter], [energy_filter]] @@ -213,7 +226,7 @@ class MDGXS(MGXS): name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC 'tallies.xml' file. Defaults to the empty string. - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs Returns @@ -268,7 +281,7 @@ class MDGXS(MGXS): Defaults to 'increasing'. value : {'mean', 'std_dev', 'rel_err'} A string for the type of value to return. Defaults to 'mean'. - delayed_groups : Iterable of Integral or 'all' + delayed_groups : list of int or 'all' Delayed groups of interest. Defaults to 'all'. Returns @@ -316,7 +329,7 @@ class MDGXS(MGXS): # Construct list of delayed group tuples for all requested groups if not isinstance(delayed_groups, basestring): - cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + cv.check_type('delayed groups', delayed_groups, list, int) for delayed_group in delayed_groups: filters.append('delayedgroup') filter_bins.append((delayed_group,)) @@ -402,7 +415,7 @@ class MDGXS(MGXS): cv.check_iterable_type('nuclides', nuclides, basestring) cv.check_iterable_type('energy_groups', groups, Integral) - cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + cv.check_type('delayed groups', delayed_groups, list, int) # Build lists of filters and filter bins to slice filters = [] @@ -447,7 +460,7 @@ class MDGXS(MGXS): # Assign sliced delayed group structure to sliced MDGXS if delayed_groups: - slice_xs.delayed_groups.groups = delayed_groups + slice_xs.delayed_groups = delayed_groups # Assign sliced nuclides to sliced MGXS if nuclides: @@ -456,28 +469,6 @@ class MDGXS(MGXS): slice_xs.sparse = self.sparse return slice_xs - def can_merge(self, other): - """Determine if another MDGXS can be merged with this one - - If results have been loaded from a statepoint, then MGXS are only - mergeable along one and only one of enegy groups or nuclides. - - Parameters - ---------- - other : openmc.mgxs.MGXS - MGXS to check for merging - - """ - - can_merge = super(MDGXS, self).can_merge(other) - - # Compare delayed groups - if not self.delayed_groups.can_merge(other.delayed_groups): - can_merge = False - - # If all conditionals pass then MDGXS are mergeable - return can_merge - def merge(self, other): """Merge another MDGXS with this one @@ -502,9 +493,8 @@ class MDGXS(MGXS): # Merge delayed groups if self.delayed_groups != other.delayed_groups: - merged_delayed_groups = self.delayed_groups.merge( - other.delayed_groups) - merged_mdgxs.delayed_groups = merged_delayed_groups + merged_mdgxs.delayed_groups = list(set(self.delayed_groups + + other.delayed_groups)) return merged_mdgxs @@ -586,7 +576,7 @@ class MDGXS(MGXS): # Add the cross section header string += '{0: <16}\n'.format(xs_header) - for delayed_group in self.delayed_groups.groups: + for delayed_group in self.delayed_groups: template = '{0: <12}Delayed Group {1}:\t' string += template.format('', delayed_group) @@ -635,7 +625,7 @@ class MDGXS(MGXS): xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. - delayed_groups : Iterable of Integral or 'all' + delayed_groups : list of int or 'all' Delayed groups of interest. Defaults to 'all'. """ @@ -715,7 +705,7 @@ class MDGXS(MGXS): The geometric information in the Summary object is embedded into a Multi-index column with a geometric "path" to each distribcell instance. - delayed_groups : Iterable of Integral or 'all' + delayed_groups : list of int or 'all' Delayed groups of interest. Defaults to 'all'. Returns @@ -731,112 +721,11 @@ class MDGXS(MGXS): """ - if not isinstance(groups, basestring): - cv.check_iterable_type('groups', groups, Integral) - if nuclides != 'all' and nuclides != 'sum': - cv.check_iterable_type('nuclides', nuclides, basestring) if not isinstance(delayed_groups, basestring): - cv.check_iterable_type('delayed groups', delayed_groups, Integral) + cv.check_type('delayed groups', delayed_groups, list, int) - cv.check_value('xs_type', xs_type, ['macro', 'micro']) - - num_delayed_groups = 1 - if self.delayed_groups != None: - num_delayed_groups = self.delayed_groups.num_groups - - # Get a Pandas DataFrame from the derived xs tally - if self.by_nuclide and nuclides == 'sum': - - # Use tally summation to sum across all nuclides - query_nuclides = self.get_all_nuclides() - xs_tally = self.xs_tally.summation(nuclides=query_nuclides) - df = xs_tally.get_pandas_dataframe( - distribcell_paths=distribcell_paths) - - # Remove nuclide column since it is homogeneous and redundant - if self.domain_type == 'mesh': - df.drop('nuclide', axis=1, level=0, inplace=True) - else: - df.drop('nuclide', axis=1, inplace=True) - - # If the user requested a specific set of nuclides - elif self.by_nuclide and nuclides != 'all': - xs_tally = self.xs_tally.get_slice(nuclides=nuclides) - df = xs_tally.get_pandas_dataframe( - distribcell_paths=distribcell_paths) - - # If the user requested all nuclides, keep nuclide column in dataframe - else: - df = self.xs_tally.get_pandas_dataframe( - distribcell_paths=distribcell_paths) - - # Remove the score column since it is homogeneous and redundant - if self.domain_type == 'mesh': - df = df.drop('score', axis=1, level=0) - else: - df = df.drop('score', axis=1) - - # Override energy groups bounds with indices - all_groups = np.arange(self.num_groups, 0, -1, dtype=np.int) - all_groups = np.repeat(all_groups, self.num_nuclides) - if 'energy low [MeV]' in df and 'energyout low [MeV]' in df: - df.rename(columns={'energy low [MeV]': 'group in'}, - inplace=True) - in_groups = np.tile(all_groups, self.num_subdomains * num_delayed_groups) - in_groups = np.repeat(in_groups, df.shape[0] / in_groups.size) - df['group in'] = in_groups - del df['energy high [MeV]'] - - df.rename(columns={'energyout low [MeV]': 'group out'}, - inplace=True) - out_groups = np.repeat(all_groups, self.xs_tally.num_scores) - out_groups = np.tile(out_groups, df.shape[0] / out_groups.size * num_delayed_groups) - df['group out'] = out_groups - del df['energyout high [MeV]'] - columns = ['group in', 'group out'] - - elif 'energyout low [MeV]' in df: - df.rename(columns={'energyout low [MeV]': 'group out'}, - inplace=True) - in_groups = np.tile(all_groups, self.num_subdomains * num_delayed_groups) - df['group out'] = in_groups - del df['energyout high [MeV]'] - columns = ['group out'] - - elif 'energy low [MeV]' in df: - df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) - in_groups = np.tile(all_groups, self.num_subdomains * num_delayed_groups) - df['group in'] = in_groups - del df['energy high [MeV]'] - columns = ['group in'] - - # Select out those groups the user requested - if not isinstance(groups, basestring): - if 'group in' in df: - df = df[df['group in'].isin(groups)] - if 'group out' in df: - df = df[df['group out'].isin(groups)] - - # If user requested micro cross sections, divide out the atom densities - if xs_type == 'micro': - if self.by_nuclide: - densities = self.get_nuclide_densities(nuclides) - else: - densities = self.get_nuclide_densities('sum') - densities = np.repeat(densities, len(self.rxn_rate_tally.scores)) - tile_factor = df.shape[0] / len(densities) - df['mean'] /= np.tile(densities, tile_factor) - df['std. dev.'] /= np.tile(densities, tile_factor) - - # Sort the dataframe by domain type id (e.g., distribcell id) and - # energy groups such that data is from fast to thermal - if self.domain_type == 'mesh': - mesh_str = 'mesh {0}'.format(self.domain.id) - df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), \ - (mesh_str, 'z')] + columns, inplace=True) - else: - df.sort_values(by=[self.domain_type] + columns, inplace=True) - return df + df = super(MDGXS, self).get_pandas_dataframe(groups, nuclides, xs_type, + distribcell_paths) # Select out those delayed groups the user requested if not isinstance(delayed_groups, basestring): @@ -890,7 +779,7 @@ class ChiDelayed(MDGXS): name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC 'tallies.xml' file. - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs Attributes @@ -907,7 +796,7 @@ class ChiDelayed(MDGXS): Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to @@ -974,8 +863,7 @@ class ChiDelayed(MDGXS): energyout = openmc.Filter('energyout', group_edges) energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) if self.delayed_groups != None: - delayed_groups = self.delayed_groups.groups - delayed_filter = openmc.Filter('delayedgroup', delayed_groups) + delayed_filter = openmc.Filter('delayedgroup', self.delayed_groups) return [[delayed_filter, energyin], [delayed_filter, energyout]] else: return [[energyin], [energyout]] @@ -1120,9 +1008,8 @@ class ChiDelayed(MDGXS): # Merge delayed groups if self.delayed_groups != other.delayed_groups: - merged_delayed_groups = self.delayed_groups.merge\ - (other.delayed_groups) - merged_mdgxs.delayed_groups = merged_delayed_groups + merged_mdgxs.delayed_groups = list(set(self.delayed_groups + + other.delayed_groups)) # Merge nuclides if self.nuclides != other.nuclides: @@ -1157,7 +1044,7 @@ class ChiDelayed(MDGXS): ---------- groups : Iterable of Integral or 'all' Energy groups of interest. Defaults to 'all'. - delayed_groups : Iterable of Integral or 'all' + delayed_groups : list of int or 'all' Delayed groups of interest. Defaults to 'all'. subdomains : Iterable of Integral or 'all' Subdomain IDs of interest. Defaults to 'all'. @@ -1222,7 +1109,7 @@ class ChiDelayed(MDGXS): # Construct list of delayed group tuples for all requested groups if not isinstance(delayed_groups, basestring): - cv.check_iterable_type('delayed_groups', delayed_groups, Integral) + cv.check_type('delayed groups', delayed_groups, list, int) for delayed_group in delayed_groups: filters.append('delayedgroup') filter_bins.append((delayed_group,)) @@ -1344,7 +1231,7 @@ class DelayedNuFissionXS(MDGXS): name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC 'tallies.xml' file. - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs Attributes @@ -1361,7 +1248,7 @@ class DelayedNuFissionXS(MDGXS): Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to @@ -1463,7 +1350,7 @@ class Beta(MDGXS): name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC 'tallies.xml' file. - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs Attributes @@ -1480,7 +1367,7 @@ class Beta(MDGXS): Domain type for spatial homogenization energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation - delayed_groups : openmc.mgxs.DelayedGroups + delayed_groups : list of int Delayed groups to filter out the xs tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d6f36206ee..4fc4edb38e 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1517,15 +1517,14 @@ class MGXS(object): if 'energy low [MeV]' in df and 'energyout low [MeV]' in df: df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) - in_groups = np.tile(all_groups, self.num_subdomains) + in_groups = np.tile(all_groups, df.shape[0] / all_groups.size) in_groups = np.repeat(in_groups, df.shape[0] / in_groups.size) df['group in'] = in_groups del df['energy high [MeV]'] df.rename(columns={'energyout low [MeV]': 'group out'}, inplace=True) - out_groups = np.repeat(all_groups, self.xs_tally.num_scores) - out_groups = np.tile(out_groups, df.shape[0] / out_groups.size) + out_groups = np.tile(all_groups, df.shape[0] / all_groups.size) df['group out'] = out_groups del df['energyout high [MeV]'] columns = ['group in', 'group out'] @@ -1533,14 +1532,14 @@ class MGXS(object): elif 'energyout low [MeV]' in df: df.rename(columns={'energyout low [MeV]': 'group out'}, inplace=True) - in_groups = np.tile(all_groups, self.num_subdomains) + in_groups = np.tile(all_groups, df.shape[0] / all_groups.size) df['group out'] = in_groups del df['energyout high [MeV]'] columns = ['group out'] elif 'energy low [MeV]' in df: df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) - in_groups = np.tile(all_groups, self.num_subdomains) + in_groups = np.tile(all_groups, df.shape[0] / all_groups.size) df['group in'] = in_groups del df['energy high [MeV]'] columns = ['group in'] diff --git a/tests/input_set.py b/tests/input_set.py index 827484022d..8d650cafbc 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -2,6 +2,7 @@ import openmc from openmc.source import Source from openmc.stats import Box +import numpy as np class InputSet(object): def __init__(self): @@ -673,6 +674,158 @@ class PinCellInputSet(object): self.plots.add_plot(plot) +class AssemblyInputSet(object): + def __init__(self): + self.settings = openmc.Settings() + self.materials = openmc.Materials() + self.geometry = openmc.Geometry() + self.tallies = None + self.plots = None + + def export(self): + self.settings.export_to_xml() + self.materials.export_to_xml() + self.geometry.export_to_xml() + if self.tallies is not None: + self.tallies.export_to_xml() + if self.plots is not None: + self.plots.export_to_xml() + + def build_default_materials_and_geometry(self): + # Define materials. + fuel = openmc.Material(name='Fuel') + fuel.set_density('g/cm3', 10.29769) + fuel.add_nuclide("U234", 4.4843e-6) + fuel.add_nuclide("U235", 5.5815e-4) + fuel.add_nuclide("U238", 2.2408e-2) + fuel.add_nuclide("O16", 4.5829e-2) + + clad = openmc.Material(name='Cladding') + clad.set_density('g/cm3', 6.55) + clad.add_nuclide("Zr90", 2.1827e-2) + clad.add_nuclide("Zr91", 4.7600e-3) + clad.add_nuclide("Zr92", 7.2758e-3) + clad.add_nuclide("Zr94", 7.3734e-3) + clad.add_nuclide("Zr96", 1.1879e-3) + + hot_water = openmc.Material(name='Hot borated water') + hot_water.set_density('g/cm3', 0.740582) + hot_water.add_nuclide("H1", 4.9457e-2) + hot_water.add_nuclide("O16", 2.4672e-2) + hot_water.add_nuclide("B10", 8.0042e-6) + hot_water.add_nuclide("B11", 3.2218e-5) + hot_water.add_s_alpha_beta('c_H_in_H2O', '71t') + + # Define the materials file. + self.materials.default_xs = '71c' + self.materials += (fuel, clad, hot_water) + + # Instantiate ZCylinder surfaces + fuel_or = openmc.ZCylinder(x0=0, y0=0, R=0.39218, name='Fuel OR') + clad_or = openmc.ZCylinder(x0=0, y0=0, R=0.45720, name='Clad OR') + + # Create boundary planes to surround the geometry + min_x = openmc.XPlane(x0=-10.71, boundary_type='reflective') + max_x = openmc.XPlane(x0=+10.71, boundary_type='reflective') + min_y = openmc.YPlane(y0=-10.71, boundary_type='reflective') + max_y = openmc.YPlane(y0=+10.71, boundary_type='reflective') + + # Create a Universe to encapsulate a fuel pin + fuel_pin_universe = openmc.Universe(name='Fuel Pin') + + # Create fuel Cell + fuel_cell = openmc.Cell(name='fuel') + fuel_cell.fill = fuel + fuel_cell.region = -fuel_or + fuel_pin_universe.add_cell(fuel_cell) + + # Create a clad Cell + clad_cell = openmc.Cell(name='clad') + clad_cell.fill = clad + clad_cell.region = +fuel_or & -clad_or + fuel_pin_universe.add_cell(clad_cell) + + # Create a moderator Cell + hot_water_cell = openmc.Cell(name='hot water') + hot_water_cell.fill = hot_water + hot_water_cell.region = +clad_or + fuel_pin_universe.add_cell(hot_water_cell) + + # Create a Universe to encapsulate a control rod guide tube + guide_tube_universe = openmc.Universe(name='Guide Tube') + + # Create guide tube inner Cell + gt_inner_cell = openmc.Cell(name='guide tube inner water') + gt_inner_cell.fill = hot_water + gt_inner_cell.region = -fuel_or + guide_tube_universe.add_cell(gt_inner_cell) + + # Create a clad Cell + gt_clad_cell = openmc.Cell(name='guide tube clad') + gt_clad_cell.fill = clad + gt_clad_cell.region = +fuel_or & -clad_or + guide_tube_universe.add_cell(gt_clad_cell) + + # Create a guide tube outer Cell + gt_outer_cell = openmc.Cell(name='guide tube outer water') + gt_outer_cell.fill = hot_water + gt_outer_cell.region = +clad_or + guide_tube_universe.add_cell(gt_outer_cell) + + # Create fuel assembly Lattice + assembly = openmc.RectLattice(name='Fuel Assembly') + assembly.pitch = (1.26, 1.26) + assembly.lower_left = [-1.26 * 17. / 2.0] * 2 + + # Create array indices for guide tube locations in lattice + template_x = np.array([5, 8, 11, 3, 13, 2, 5, 8, 11, 14, 2, 5, 8, + 11, 14, 2, 5, 8, 11, 14, 3, 13, 5, 8, 11]) + template_y = np.array([2, 2, 2, 3, 3, 5, 5, 5, 5, 5, 8, 8, 8, 8, + 8, 11, 11, 11, 11, 11, 13, 13, 14, 14, 14]) + + # Initialize an empty 17x17 array of the lattice universes + universes = np.empty((17, 17), dtype=openmc.Universe) + + # Fill the array with the fuel pin and guide tube universes + universes[:,:] = fuel_pin_universe + universes[template_x, template_y] = guide_tube_universe + + # Store the array of universes in the lattice + assembly.universes = universes + + # Create root Cell + root_cell = openmc.Cell(name='root cell') + root_cell.fill = assembly + + # Add boundary planes + root_cell.region = +min_x & -max_x & +min_y & -max_y + + # Create root Universe + root_universe = openmc.Universe(universe_id=0, name='root universe') + root_universe.add_cell(root_cell) + + # Instantiate a Geometry, register the root Universe, and export to XML + self.geometry.root_universe = root_universe + + def build_default_settings(self): + self.settings.batches = 10 + self.settings.inactive = 5 + self.settings.particles = 100 + self.settings.source = Source(space=Box([-10.71, -10.71, -1], + [10.71, 10.71, 1], + only_fissionable=True)) + + def build_defualt_plots(self): + plot = openmc.Plot() + plot.filename = 'mat' + plot.origin = (0.0, 0.0, 0) + plot.width = (21.42, 21.42) + plot.pixels = (300, 300) + plot.color = 'mat' + + self.plots.add_plot(plot) + + class MGInputSet(InputSet): def build_default_materials_and_geometry(self): # Define materials needed for 1D/1G slab problem diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index b849391690..a3e849d6c5 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -24,7 +24,7 @@ class MGXSTestHarness(PyAPITestHarness): 20.]) # Initialize a six-delayed-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + delayed_groups = range(1,7) # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 64cd6b748d..924c53838f 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -5e4bd179eeb955f61e01dc2a486e3fefd2cef7859390f12a817cd5412359766d7bfe0bf3f8553e8d28af0844ee04a4ebaad6510ec6157ee836d631a2a2b3baec \ No newline at end of file +9ce3d6987d67e92b0924916bb54288429d2bd6dfd12a69f86c5dbefb407f7eb72adb0e44d558c09e9a39610ffeb651aee4aedc629cf3a28a181d62ca4cfbcd5a \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat index fb301be61f..5a996c8fa9 100644 --- a/tests/test_mgxs_library_distribcell/results_true.dat +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -1,63 +1,63 @@ - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.453624 0.02261 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.400852 0.024589 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.400852 0.024589 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.064903 0.004684 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.028048 0.004982 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.036855 0.002749 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.090649 0.006763 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 7.137955 0.532092 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.388721 0.018415 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.389304 0.023619 - avg(distribcell) group in group out nuclide moment mean std. dev. -0 (0,) 1 1 total P0 0.389304 0.023619 -1 (0,) 1 1 total P1 0.046224 0.005672 -2 (0,) 1 1 total P2 0.017984 0.002178 -3 (0,) 1 1 total P3 0.006628 0.001620 - avg(distribcell) group in group out nuclide moment mean std. dev. -0 (0,) 1 1 total P0 0.389304 0.023619 -1 (0,) 1 1 total P1 0.046224 0.005672 -2 (0,) 1 1 total P2 0.017984 0.002178 -3 (0,) 1 1 total P3 0.006628 0.001620 - avg(distribcell) group in group out nuclide mean std. dev. -0 (0,) 1 1 total 1.0 0.066327 - avg(distribcell) group in group out nuclide mean std. dev. -0 (0,) 1 1 total 0.085835 0.004328 - avg(distribcell) group out nuclide mean std. dev. -0 (0,) 1 total 1.0 0.046071 - avg(distribcell) group out nuclide mean std. dev. -0 (0,) 1 total 1.0 0.051471 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 4.996730e-07 3.741595e-08 - avg(distribcell) group in nuclide mean std. dev. -0 (0,) 1 total 0.090004 0.006717 - avg(distribcell) delayedgroup group in nuclide mean std. dev. -0 (0,) 1 1 total 0.000021 0.000002 -1 (0,) 2 1 total 0.000110 0.000008 -2 (0,) 3 1 total 0.000107 0.000008 -3 (0,) 4 1 total 0.000249 0.000018 -4 (0,) 5 1 total 0.000112 0.000008 -5 (0,) 6 1 total 0.000046 0.000003 - avg(distribcell) delayedgroup group out nuclide mean std. dev. -0 (0,) 1 1 total 0.0 0.000000 -1 (0,) 2 1 total 1.0 0.869128 -2 (0,) 3 1 total 1.0 1.414214 -3 (0,) 4 1 total 1.0 0.360359 -4 (0,) 5 1 total 0.0 0.000000 -5 (0,) 6 1 total 0.0 0.000000 - avg(distribcell) delayedgroup group in nuclide mean std. dev. -0 (0,) 1 1 total 0.000227 0.000022 -1 (0,) 2 1 total 0.001214 0.000115 -2 (0,) 3 1 total 0.001184 0.000111 -3 (0,) 4 1 total 0.002752 0.000257 -4 (0,) 5 1 total 0.001231 0.000113 -5 (0,) 6 1 total 0.000512 0.000047 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.457353 0.010474 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.405649 0.015784 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.405641 0.015787 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.066556 0.00251 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.028979 0.002712 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.037577 0.001487 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.092377 0.003628 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 7.276707 0.287579 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.390797 0.008717 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.387332 0.014241 + avg(distribcell) group in group out nuclide moment mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P0 0.387009 0.014230 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.047179 0.004923 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.015713 0.003654 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.005378 0.003137 + avg(distribcell) group in group out nuclide moment mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P0 0.387332 0.014241 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P1 0.047187 0.004933 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P2 0.015727 0.003654 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total P3 0.005387 0.003141 + avg(distribcell) group in group out nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 1.000834 0.037242 + avg(distribcell) group in group out nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.094516 0.0059 + avg(distribcell) group out nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.0 0.080455 + avg(distribcell) group out nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 1.0 0.080541 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 5.139437e-07 2.133314e-08 + avg(distribcell) group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 total 0.091725 0.003604 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.000021 8.253907e-07 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0.000112 4.284000e-06 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0.000109 4.105197e-06 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0.000252 9.271420e-06 +4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0.000112 3.888625e-06 +5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0.000047 1.625563e-06 + avg(distribcell) delayedgroup group out nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.0 0.000000 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 1.0 1.414214 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 1.0 1.414214 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0.0 0.000000 +4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0.0 0.000000 +5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 1.0 1.414214 + avg(distribcell) delayedgroup group in nuclide mean std. dev. +0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 1 1 total 0.000227 0.000012 +1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 2 1 total 0.001209 0.000061 +2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 3 1 total 0.001177 0.000059 +3 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 4 1 total 0.002727 0.000135 +4 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 5 1 total 0.001210 0.000058 +5 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 6 1 total 0.000504 0.000024 diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py index d03f003134..3103e07382 100644 --- a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -6,7 +6,7 @@ import glob import hashlib sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness -from input_set import PinCellInputSet +from input_set import AssemblyInputSet import openmc import openmc.mgxs @@ -14,7 +14,7 @@ import openmc.mgxs class MGXSTestHarness(PyAPITestHarness): def _build_inputs(self): # Set the input set to use the pincell model - self._input_set = PinCellInputSet() + self._input_set = AssemblyInputSet() # Generate inputs using parent class routine super(MGXSTestHarness, self)._build_inputs() @@ -23,7 +23,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) # Initialize a six-delayed-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + delayed_groups = range(1,7) # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry @@ -38,7 +38,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'distribcell' cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() - self.mgxs_lib.domains = [c for c in cells if c.name == 'cell 1'] + self.mgxs_lib.domains = [c for c in cells if c.name == 'fuel'] self.mgxs_lib.build_library() # Initialize a tallies file diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index a9d4210479..4359b27937 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -25,7 +25,7 @@ class MGXSTestHarness(PyAPITestHarness): 20.]) # Initialize a six-delayed-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + delayed_groups = range(1,7) # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) diff --git a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py index 2db57254b4..bcf2400108 100644 --- a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py +++ b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py @@ -19,7 +19,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) # Initialize a six-delayed-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + delayed_groups = range(1,7) # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index edd99b44c5..54650970f1 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -29,49 +29,49 @@ 1 10000 1 total 0.385188 0.026946 0 10000 2 total 0.412389 0.015425 material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 0.384199 0.027001 -13 10000 1 1 total P1 0.051870 0.006983 -14 10000 1 1 total P2 0.020069 0.002846 +1 10000 1 1 total P0 0.016482 0.004502 +3 10000 1 1 total P1 -0.010499 0.010438 +5 10000 1 1 total P2 -0.000768 0.000768 +7 10000 1 1 total P3 -0.000171 0.000172 +9 10000 1 1 total P0 -0.000207 0.000149 +11 10000 1 1 total P1 0.000234 0.000128 +13 10000 1 1 total P2 0.051870 0.006983 15 10000 1 1 total P3 0.009478 0.002234 -8 10000 1 2 total P0 0.000989 0.000482 -9 10000 1 2 total P1 -0.000207 0.000149 -10 10000 1 2 total P2 -0.000103 0.000184 -11 10000 1 2 total P3 0.000234 0.000128 -4 10000 2 1 total P0 0.000925 0.000925 -5 10000 2 1 total P1 -0.000768 0.000768 -6 10000 2 1 total P2 0.000494 0.000494 -7 10000 2 1 total P3 -0.000171 0.000172 0 10000 2 2 total P0 0.411465 0.015245 -1 10000 2 2 total P1 0.016482 0.004502 -2 10000 2 2 total P2 0.006371 0.010551 -3 10000 2 2 total P3 -0.010499 0.010438 +2 10000 2 2 total P1 0.006371 0.010551 +4 10000 2 2 total P2 0.000925 0.000925 +6 10000 2 2 total P3 0.000494 0.000494 +8 10000 2 2 total P0 0.000989 0.000482 +10 10000 2 2 total P1 -0.000103 0.000184 +12 10000 2 2 total P2 0.384199 0.027001 +14 10000 2 2 total P3 0.020069 0.002846 material group in group out nuclide moment mean std. dev. -12 10000 1 1 total P0 0.384199 0.027001 -13 10000 1 1 total P1 0.051870 0.006983 -14 10000 1 1 total P2 0.020069 0.002846 +1 10000 1 1 total P0 0.016482 0.004502 +3 10000 1 1 total P1 -0.010499 0.010438 +5 10000 1 1 total P2 -0.000768 0.000768 +7 10000 1 1 total P3 -0.000171 0.000172 +9 10000 1 1 total P0 -0.000207 0.000149 +11 10000 1 1 total P1 0.000234 0.000128 +13 10000 1 1 total P2 0.051870 0.006983 15 10000 1 1 total P3 0.009478 0.002234 -8 10000 1 2 total P0 0.000989 0.000482 -9 10000 1 2 total P1 -0.000207 0.000149 -10 10000 1 2 total P2 -0.000103 0.000184 -11 10000 1 2 total P3 0.000234 0.000128 -4 10000 2 1 total P0 0.000925 0.000925 -5 10000 2 1 total P1 -0.000768 0.000768 -6 10000 2 1 total P2 0.000494 0.000494 -7 10000 2 1 total P3 -0.000171 0.000172 0 10000 2 2 total P0 0.411465 0.015245 -1 10000 2 2 total P1 0.016482 0.004502 -2 10000 2 2 total P2 0.006371 0.010551 -3 10000 2 2 total P3 -0.010499 0.010438 +2 10000 2 2 total P1 0.006371 0.010551 +4 10000 2 2 total P2 0.000925 0.000925 +6 10000 2 2 total P3 0.000494 0.000494 +8 10000 2 2 total P0 0.000989 0.000482 +10 10000 2 2 total P1 -0.000103 0.000184 +12 10000 2 2 total P2 0.384199 0.027001 +14 10000 2 2 total P3 0.020069 0.002846 material group in group out nuclide mean std. dev. +1 10000 1 1 total 1.0 1.414214 3 10000 1 1 total 1.0 0.078516 -2 10000 1 2 total 1.0 0.687184 -1 10000 2 1 total 1.0 1.414214 0 10000 2 2 total 1.0 0.041130 +2 10000 2 2 total 1.0 0.687184 material group in group out nuclide mean std. dev. +1 10000 1 1 total 0.454366 0.027426 3 10000 1 1 total 0.020142 0.003149 -2 10000 1 2 total 0.000000 0.000000 -1 10000 2 1 total 0.454366 0.027426 0 10000 2 2 total 0.000000 0.000000 +2 10000 2 2 total 0.000000 0.000000 material group out nuclide mean std. dev. 1 10000 1 total 1.0 0.046071 0 10000 2 total 0.0 0.000000 @@ -154,49 +154,49 @@ 1 10001 1 total 0.310121 0.033788 0 10001 2 total 0.296264 0.043792 material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 0.310121 0.033788 -13 10001 1 1 total P1 0.038230 0.008484 -14 10001 1 1 total P2 0.020745 0.004696 +1 10001 1 1 total P0 -0.011214 0.016180 +3 10001 1 1 total P1 -0.003270 0.007329 +5 10001 1 1 total P2 0.000000 0.000000 +7 10001 1 1 total P3 0.000000 0.000000 +9 10001 1 1 total P0 0.000000 0.000000 +11 10001 1 1 total P1 0.000000 0.000000 +13 10001 1 1 total P2 0.038230 0.008484 15 10001 1 1 total P3 0.007964 0.003732 -8 10001 1 2 total P0 0.000000 0.000000 -9 10001 1 2 total P1 0.000000 0.000000 -10 10001 1 2 total P2 0.000000 0.000000 -11 10001 1 2 total P3 0.000000 0.000000 -4 10001 2 1 total P0 0.000000 0.000000 -5 10001 2 1 total P1 0.000000 0.000000 -6 10001 2 1 total P2 0.000000 0.000000 -7 10001 2 1 total P3 0.000000 0.000000 0 10001 2 2 total P0 0.296264 0.043792 -1 10001 2 2 total P1 -0.011214 0.016180 -2 10001 2 2 total P2 0.008837 0.011504 -3 10001 2 2 total P3 -0.003270 0.007329 +2 10001 2 2 total P1 0.008837 0.011504 +4 10001 2 2 total P2 0.000000 0.000000 +6 10001 2 2 total P3 0.000000 0.000000 +8 10001 2 2 total P0 0.000000 0.000000 +10 10001 2 2 total P1 0.000000 0.000000 +12 10001 2 2 total P2 0.310121 0.033788 +14 10001 2 2 total P3 0.020745 0.004696 material group in group out nuclide moment mean std. dev. -12 10001 1 1 total P0 0.310121 0.033788 -13 10001 1 1 total P1 0.038230 0.008484 -14 10001 1 1 total P2 0.020745 0.004696 +1 10001 1 1 total P0 -0.011214 0.016180 +3 10001 1 1 total P1 -0.003270 0.007329 +5 10001 1 1 total P2 0.000000 0.000000 +7 10001 1 1 total P3 0.000000 0.000000 +9 10001 1 1 total P0 0.000000 0.000000 +11 10001 1 1 total P1 0.000000 0.000000 +13 10001 1 1 total P2 0.038230 0.008484 15 10001 1 1 total P3 0.007964 0.003732 -8 10001 1 2 total P0 0.000000 0.000000 -9 10001 1 2 total P1 0.000000 0.000000 -10 10001 1 2 total P2 0.000000 0.000000 -11 10001 1 2 total P3 0.000000 0.000000 -4 10001 2 1 total P0 0.000000 0.000000 -5 10001 2 1 total P1 0.000000 0.000000 -6 10001 2 1 total P2 0.000000 0.000000 -7 10001 2 1 total P3 0.000000 0.000000 0 10001 2 2 total P0 0.296264 0.043792 -1 10001 2 2 total P1 -0.011214 0.016180 -2 10001 2 2 total P2 0.008837 0.011504 -3 10001 2 2 total P3 -0.003270 0.007329 +2 10001 2 2 total P1 0.008837 0.011504 +4 10001 2 2 total P2 0.000000 0.000000 +6 10001 2 2 total P3 0.000000 0.000000 +8 10001 2 2 total P0 0.000000 0.000000 +10 10001 2 2 total P1 0.000000 0.000000 +12 10001 2 2 total P2 0.310121 0.033788 +14 10001 2 2 total P3 0.020745 0.004696 material group in group out nuclide mean std. dev. +1 10001 1 1 total 0.0 0.000000 3 10001 1 1 total 1.0 0.108779 -2 10001 1 2 total 0.0 0.000000 -1 10001 2 1 total 0.0 0.000000 0 10001 2 2 total 1.0 0.142427 +2 10001 2 2 total 0.0 0.000000 material group in group out nuclide mean std. dev. +1 10001 1 1 total 0.0 0.0 3 10001 1 1 total 0.0 0.0 -2 10001 1 2 total 0.0 0.0 -1 10001 2 1 total 0.0 0.0 0 10001 2 2 total 0.0 0.0 +2 10001 2 2 total 0.0 0.0 material group out nuclide mean std. dev. 1 10001 1 total 0.0 0.0 0 10001 2 total 0.0 0.0 @@ -279,49 +279,49 @@ 1 10002 1 total 0.671269 0.026186 0 10002 2 total 2.035388 0.258060 material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 0.639901 0.024709 -13 10002 1 1 total P1 0.381167 0.016243 -14 10002 1 1 total P2 0.152392 0.008156 +1 10002 1 1 total P0 0.509941 0.051236 +3 10002 1 1 total P1 0.024988 0.008312 +5 10002 1 1 total P2 0.000400 0.000401 +7 10002 1 1 total P3 0.000214 0.000215 +9 10002 1 1 total P0 0.008758 0.000926 +11 10002 1 1 total P1 -0.003785 0.000817 +13 10002 1 1 total P2 0.381167 0.016243 15 10002 1 1 total P3 0.009148 0.003889 -8 10002 1 2 total P0 0.031368 0.001728 -9 10002 1 2 total P1 0.008758 0.000926 -10 10002 1 2 total P2 -0.002568 0.001014 -11 10002 1 2 total P3 -0.003785 0.000817 -4 10002 2 1 total P0 0.000443 0.000445 -5 10002 2 1 total P1 0.000400 0.000401 -6 10002 2 1 total P2 0.000320 0.000321 -7 10002 2 1 total P3 0.000214 0.000215 0 10002 2 2 total P0 2.034945 0.257800 -1 10002 2 2 total P1 0.509941 0.051236 -2 10002 2 2 total P2 0.111175 0.013020 -3 10002 2 2 total P3 0.024988 0.008312 +2 10002 2 2 total P1 0.111175 0.013020 +4 10002 2 2 total P2 0.000443 0.000445 +6 10002 2 2 total P3 0.000320 0.000321 +8 10002 2 2 total P0 0.031368 0.001728 +10 10002 2 2 total P1 -0.002568 0.001014 +12 10002 2 2 total P2 0.639901 0.024709 +14 10002 2 2 total P3 0.152392 0.008156 material group in group out nuclide moment mean std. dev. -12 10002 1 1 total P0 0.639901 0.024709 -13 10002 1 1 total P1 0.381167 0.016243 -14 10002 1 1 total P2 0.152392 0.008156 +1 10002 1 1 total P0 0.509941 0.051236 +3 10002 1 1 total P1 0.024988 0.008312 +5 10002 1 1 total P2 0.000400 0.000401 +7 10002 1 1 total P3 0.000214 0.000215 +9 10002 1 1 total P0 0.008758 0.000926 +11 10002 1 1 total P1 -0.003785 0.000817 +13 10002 1 1 total P2 0.381167 0.016243 15 10002 1 1 total P3 0.009148 0.003889 -8 10002 1 2 total P0 0.031368 0.001728 -9 10002 1 2 total P1 0.008758 0.000926 -10 10002 1 2 total P2 -0.002568 0.001014 -11 10002 1 2 total P3 -0.003785 0.000817 -4 10002 2 1 total P0 0.000443 0.000445 -5 10002 2 1 total P1 0.000400 0.000401 -6 10002 2 1 total P2 0.000320 0.000321 -7 10002 2 1 total P3 0.000214 0.000215 0 10002 2 2 total P0 2.034945 0.257800 -1 10002 2 2 total P1 0.509941 0.051236 -2 10002 2 2 total P2 0.111175 0.013020 -3 10002 2 2 total P3 0.024988 0.008312 +2 10002 2 2 total P1 0.111175 0.013020 +4 10002 2 2 total P2 0.000443 0.000445 +6 10002 2 2 total P3 0.000320 0.000321 +8 10002 2 2 total P0 0.031368 0.001728 +10 10002 2 2 total P1 -0.002568 0.001014 +12 10002 2 2 total P2 0.639901 0.024709 +14 10002 2 2 total P3 0.152392 0.008156 material group in group out nuclide mean std. dev. +1 10002 1 1 total 1.0 1.414214 3 10002 1 1 total 1.0 0.038609 -2 10002 1 2 total 1.0 0.067667 -1 10002 2 1 total 1.0 1.414214 0 10002 2 2 total 1.0 0.135929 +2 10002 2 2 total 1.0 0.067667 material group in group out nuclide mean std. dev. +1 10002 1 1 total 0.0 0.0 3 10002 1 1 total 0.0 0.0 -2 10002 1 2 total 0.0 0.0 -1 10002 2 1 total 0.0 0.0 0 10002 2 2 total 0.0 0.0 +2 10002 2 2 total 0.0 0.0 material group out nuclide mean std. dev. 1 10002 1 total 0.0 0.0 0 10002 2 total 0.0 0.0 diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py index d2e61a2da4..5ca90875d4 100644 --- a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -24,7 +24,7 @@ class MGXSTestHarness(PyAPITestHarness): 20.]) # Initialize a six-delayed-group structure - delayed_groups = openmc.mgxs.DelayedGroups(range(1,7)) + delayed_groups = range(1,7) # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 3da8146042..9671ad7857 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -e494320a213b5704a2ac915a2ba504857be91961ceb6735b6ad05d81eb31c44c9584d5bd9d40baececf1dcb5b030e6ecec63cfbd20639baf69bcb596c5c46591 \ No newline at end of file +cb61db73f66b40ed1a59a59e6f4fd52678e9dc41c7bb8ad327989233c3b8d78a71d84c3cb8ad9bc8b1585b319e1f1d66a8667e7cad2ead4cc574f415f8f7a35d \ No newline at end of file From b400045ded71a7b8af1336c09313f7cfa8138200 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sat, 6 Aug 2016 17:11:37 -0400 Subject: [PATCH 29/49] removed unnecessary imports in mdgx.py --- openmc/mgxs/mdgxs.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index 6d57f10a93..c01b0b575b 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -10,12 +10,9 @@ import abc import numpy as np -from openmc import Mesh import openmc +from openmc.mgxs import MGXS import openmc.checkvalue as cv -from openmc.mgxs.groups import EnergyGroups -from openmc.mgxs.mgxs import MGXS, MGXS_TYPES, DOMAIN_TYPES, _DOMAINS - # Supported cross section types MDGXS_TYPES = ['delayed-nu-fission', From 264cb33b3635e54f8d9958b829c0d0660b25258c Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Sun, 7 Aug 2016 14:31:18 -0500 Subject: [PATCH 30/49] Address #690 comments --- data/fission_Q_data_endfb71.h5 | Bin 67543 -> 67543 bytes docs/source/io_formats/fission_energy.rst | 7 ++--- openmc/data/endf_utils.py | 5 ++-- openmc/data/fission_energy.py | 35 +++++++++------------- src/tally.F90 | 12 ++++---- 5 files changed, 25 insertions(+), 34 deletions(-) diff --git a/data/fission_Q_data_endfb71.h5 b/data/fission_Q_data_endfb71.h5 index 89e51b70783034b40ce4e207fdb3e34b5d5d33cc..7cc5a86b5249c1abacfbf23bf777639825164c9b 100644 GIT binary patch delta 8209 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/** - Nuclides are named by concatenating their Z and their A numbers. For - example, U235 is named 92235. Metastable nuclides are appended with an - '_m' and their metastable number. For example, the first excited isomer - of Am-242 is named 95242_m1. + Nuclides are named by concatenating their atomic symbol and mass number. For + example, 'U235' or 'Pu239'. Metastable nuclides are appended with an + '_m' and their metastable number. For example, 'Am242_m1' :Datasets: - **data** (*double[][][]*) -- The energy release coefficients. The first axis indexes the component type. The second axis specifies diff --git a/openmc/data/endf_utils.py b/openmc/data/endf_utils.py index bfd9ae5c85..1a77c60a5e 100644 --- a/openmc/data/endf_utils.py +++ b/openmc/data/endf_utils.py @@ -12,9 +12,8 @@ import re def read_float(float_string): """Parse ENDF 6E11.0 formatted string into a float.""" assert len(float_string) == 11 - pattern = '([\s\\-]\d+\\.\d+)([\\+\\-]\d+)' - mantissa, exponent = re.match(pattern, float_string).groups() - return float(mantissa + 'e' + exponent) + pattern = r'([\s\-]\d+\.\d+)([\+\-]\d+)' + return float(re.sub(pattern, r'\1e\2', float_string)) def read_CONT_line(line): diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index 334231a9f6..60cc435646 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -6,8 +6,9 @@ import h5py import numpy as np from numpy.polynomial.polynomial import Polynomial -from .function import Tabulated1D, Sum +from .data import ATOMIC_SYMBOL from .endf_utils import read_float, read_CONT_line, identify_nuclide +from .function import Tabulated1D, Sum import openmc.checkvalue as cv if sys.version_info[0] >= 3: @@ -70,11 +71,11 @@ def _extract_458_data(filename): labels = ('EFR', 'ENP', 'END', 'EGP', 'EGD', 'EB', 'ENU', 'ER', 'ET') # Associate each set of values and uncertainties with its label. - value = dict() - uncertainty = dict() - for i in range(len(labels)): - value[labels[i]] = data[2*i::18] - uncertainty[labels[i]] = data[2*i + 1::18] + value = {} + uncertainty = {} + for i, label in enumerate(labels): + value[label] = data[2*i::18] + uncertainty[label] = data[2*i + 1::18] # In ENDF/B-7.1, data for 2nd-order coefficients were mistakenly not # converted from MeV to eV. Check for this error and fix it if present. @@ -94,13 +95,6 @@ def _extract_458_data(filename): for coeffs in value.values(): coeffs[2] *= 1e-6 for coeffs in uncertainty.values(): coeffs[2] *= 1e-6 - # Perform the sanity check again... just in case. - for coeffs in value.values(): - second_order = coeffs[2] - if abs(second_order) * 1e12 > 1e8: - raise ValueError("Encountered a ludicrously large second-" - "order polynomial coefficient.") - # Convert eV to MeV. for coeffs in value.values(): for i in range(len(coeffs)): @@ -112,8 +106,8 @@ def _extract_458_data(filename): return value, uncertainty -def write_compact_458_library(endf_files, output_name=None, comment=None, - verbose=False): +def write_compact_458_library(endf_files, output_name='fission_Q_data.h5', + comment=None, verbose=False): """Read ENDF files, strip the MF=1 MT=458 data and write to small HDF5. Parameters @@ -130,7 +124,6 @@ def write_compact_458_library(endf_files, output_name=None, comment=None, """ # Open the output file. - if output_name is None: output_name = 'fission_Q_data.h5' out = h5py.File(output_name, 'w', libver='latest') # Write comments, if given. This commented out comment is the one used for @@ -179,7 +172,7 @@ def write_compact_458_library(endf_files, output_name=None, comment=None, value, uncertainty = data # Make a group for this isomer. - name = str(ident['Z']) + str(ident['A']) + name = ATOMIC_SYMBOL[ident['Z']] + str(ident['A']) if ident['LISO'] != 0: name += '_m' + str(ident['LISO']) nuclide_group = out.create_group(name) @@ -447,7 +440,7 @@ class FissionEnergyRelease(object): and p.emission_mode == 'prompt'] else: raise ValueError('IncidentNeutron data has no fission ' - 'reaction.') + 'reaction.') if len(nu_prompt) == 0: raise ValueError('Nu data is needed to compute fission energy ' 'release with the Sher-Beck format.') @@ -533,7 +526,7 @@ class FissionEnergyRelease(object): elif group.attrs['format'].decode() == 'Sher-Beck': obj.form = 'Sher-Beck' obj.prompt_neutrons = Tabulated1D.from_hdf5( - group['prompt_neutrons']) + group['prompt_neutrons']) else: raise ValueError('Unrecognized energy release format') @@ -565,14 +558,14 @@ class FissionEnergyRelease(object): components = [s.decode() for s in fin.attrs['component order']] - nuclide_name = str(incident_neutron.atomic_number) + nuclide_name = ATOMIC_SYMBOL[incident_neutron.atomic_number] nuclide_name += str(incident_neutron.mass_number) if incident_neutron.metastable != 0: nuclide_name += '_m' + str(incident_neutron.metastable) if nuclide_name not in fin: return None - data = {c : fin[nuclide_name + '/data'][i, 0, :] + data = {c: fin[nuclide_name + '/data'][i, 0, :] for i, c in enumerate(components)} return cls._from_dictionary(data, incident_neutron) diff --git a/src/tally.F90 b/src/tally.F90 index ab630ceb25..a949313bd3 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -710,7 +710,7 @@ contains score = p % absorb_wgt * & nuc % reactions(nuc % index_fission(1)) % Q_value * & micro_xs(p % event_nuclide) % fission / & - micro_xs(p % event_nuclide) % absorption + micro_xs(p % event_nuclide) % absorption * flux end if end associate else @@ -724,7 +724,7 @@ contains score = p % last_wgt * & nuc % reactions(nuc % index_fission(1)) % Q_value * & micro_xs(p % event_nuclide) % fission / & - micro_xs(p % event_nuclide) % absorption + micro_xs(p % event_nuclide) % absorption * flux end if end associate end if @@ -785,7 +785,7 @@ contains score = p % absorb_wgt & * nuc % fission_q_prompt % evaluate(p % last_E) & * micro_xs(p % event_nuclide) % fission & - / micro_xs(p % event_nuclide) % absorption + / micro_xs(p % event_nuclide) % absorption * flux end if end associate else @@ -799,7 +799,7 @@ contains score = p % last_wgt & * nuc % fission_q_prompt % evaluate(p % last_E) & * micro_xs(p % event_nuclide) % fission & - / micro_xs(p % event_nuclide) % absorption + / micro_xs(p % event_nuclide) % absorption * flux end if end associate end if @@ -844,7 +844,7 @@ contains score = p % absorb_wgt & * nuc % fission_q_recov % evaluate(p % last_E) & * micro_xs(p % event_nuclide) % fission & - / micro_xs(p % event_nuclide) % absorption + / micro_xs(p % event_nuclide) % absorption * flux end if end associate else @@ -858,7 +858,7 @@ contains score = p % last_wgt & * nuc % fission_q_recov % evaluate(p % last_E) & * micro_xs(p % event_nuclide) % fission & - / micro_xs(p % event_nuclide) % absorption + / micro_xs(p % event_nuclide) % absorption * flux end if end associate end if From 75878d583d6b1e0ea158c62226d130238cd552d6 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 8 Aug 2016 10:06:02 -0500 Subject: [PATCH 31/49] Address #695 comments --- openmc/data/function.py | 2 +- openmc/data/product.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/openmc/data/function.py b/openmc/data/function.py index e827e12833..798aa18cdd 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -13,7 +13,7 @@ INTERPOLATION_SCHEME = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', class Function1D(object): """A function of one independent variable with HDF5 support.""" - __meta__class = ABCMeta + __metaclass__ = ABCMeta def __init__(self): pass diff --git a/openmc/data/product.py b/openmc/data/product.py index 116905f7a3..eec47c9560 100644 --- a/openmc/data/product.py +++ b/openmc/data/product.py @@ -35,7 +35,7 @@ class Product(object): yield represents particles from prompt and delayed sources. particle : str What particle the reaction product is. - yield_ : float or openmc.data.Tabulated1D or openmc.data.Polynomial + yield_ : openmc.data.Function1D Yield of secondary particle in the reaction. """ @@ -118,8 +118,7 @@ class Product(object): @yield_.setter def yield_(self, yield_): - cv.check_type('product yield', yield_, - (Tabulated1D, Polynomial)) + cv.check_type('product yield', yield_, Function1D) self._yield = yield_ def to_hdf5(self, group): From d86583c41683d87b9498a1a7095e49017f684f8c Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 8 Aug 2016 10:55:09 -0500 Subject: [PATCH 32/49] Infer Sher-Beck vs. Madland from data type --- docs/source/io_formats/nuclear_data.rst | 51 +++++++++++-------- openmc/data/fission_energy.py | 65 +++++++++---------------- src/nuclide_header.F90 | 14 ++---- tests/test_tallies/results_true.dat | 2 +- 4 files changed, 60 insertions(+), 72 deletions(-) diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst index 7544ca1f5e..2a16c02cec 100644 --- a/docs/source/io_formats/nuclear_data.rst +++ b/docs/source/io_formats/nuclear_data.rst @@ -57,24 +57,33 @@ Incident Neutron Data **//fission_energy_release/** -:Attributes: - **format** (*char[]*) -- The energy-dependence format. Either - 'Madland' or 'Sher-Beck' - -:Datasets: - **fragments** (*double[]*) -- Polynomial coefficients for energy - released in the form of fragments - - **prompt_neutrons** (*double[]* or :ref:`tabulated <1d_tabulated>`) - -- Energy released in the form of prompt neutrons. Polynomial if - the format is Madland or a table if Sher-Beck. - - **delayed_neutrons** (*double[]*) -- Polynomial coefficients for - energy released in the form of delayed neutrons - - **prompt_photons** (*double[]*) -- Polynomial coefficients for - energy released in the form of prompt photons - - **delayed_photons** (*double[]*) -- Polynomial coefficients for - energy released in the form of delayed photons - - **betas** (*double[]*) -- Polynomial coefficients for - energy released in the form of betas - - **neutrinos** (*double[]*) -- Polynomial coefficients for - energy released in the form of neutrinos +:Datasets: - **fragments** (:ref:`polynomial <1d_polynomial>`) -- Energy + released in the form of fragments as a function of incident + neutron energy. + - **prompt_neutrons** (:ref:`polynomial <1d_polynomial>` or + :ref:`tabulated <1d_tabulated>`) -- Energy released in the form of + prompt neutrons as a function of incident neutron energy. + - **delayed_neutrons** (:ref:`polynomial <1d_polynomial>`) -- Energy + released in the form of delayed neutrons as a function of incident + neutron energy. + - **prompt_photons** (:ref:`polynomial <1d_polynomial>`) -- Energy + released in the form of prompt photons as a function of incident + neutron energy. + - **delayed_photons** (:ref:`polynomial <1d_polynomial>`) -- Energy + released in the form of delayed photons as a function of incident + neutron energy. + - **betas** (:ref:`polynomial <1d_polynomial>`) -- Energy + released in the form of betas as a function of incident + neutron energy. + - **neutrinos** (:ref:`polynomial <1d_polynomial>`) -- Energy + released in the form of neutrinos as a function of incident + neutron energy. + - **q_prompt** (:ref:`polynomial <1d_polynomial>` or + :ref:`tabulated <1d_tabulated>`) -- The prompt fission Q-value + (fragments + prompt neutrons + prompt photons - incident energy) + - **q_recoverable** (:ref:`polynomial <1d_polynomial>` or + :ref:`tabulated <1d_tabulated>`) -- The recoverable fission Q-value + (Q_prompt + delayed neutrons + delayed photons + betas) ------------------------------- Thermal Neutron Scattering Data @@ -163,17 +172,19 @@ Tabulated :Object type: Dataset :Datatype: *double[2][]* :Description: x-values are listed first followed by corresponding y-values -:Attributes: - **type** (*char[]*) -- 'tabulated' +:Attributes: - **type** (*char[]*) -- 'Tabulated1D' - **breakpoints** (*int[]*) -- Region breakpoints - **interpolation** (*int[]*) -- Region interpolation codes +.. _1d_polynomial: + Polynomial ---------- :Object type: Dataset :Datatype: *double[]* :Description: Polynomial coefficients listed in order of increasing power -:Attributes: - **type** (*char[]*) -- 'polynomial' +:Attributes: - **type** (*char[]*) -- 'Polynomial' Coherent elastic scattering --------------------------- diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index 60cc435646..24743c19c5 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -4,11 +4,10 @@ import sys import h5py import numpy as np -from numpy.polynomial.polynomial import Polynomial from .data import ATOMIC_SYMBOL from .endf_utils import read_float, read_CONT_line, identify_nuclide -from .function import Tabulated1D, Sum +from .function import Function1D, Tabulated1D, Polynomial, Sum import openmc.checkvalue as cv if sys.version_info[0] >= 3: @@ -262,9 +261,6 @@ class FissionEnergyRelease(object): q_total : Callable Function of energy that returns the total fission Q-value (total release - incident neutron energy). - form : str - Format used to compute the energy-dependence of the data. Either - 'Sher-Beck' or 'Madland'. """ def __init__(self): @@ -275,7 +271,6 @@ class FissionEnergyRelease(object): self._delayed_photons = None self._betas = None self._neutrinos = None - self._form = None @property def fragments(self): @@ -328,10 +323,6 @@ class FissionEnergyRelease(object): @property def q_total(self): return Sum([self.total, lambda E: -E]) - - @property - def form(self): - return self._form @fragments.setter def fragments(self, energy_release): @@ -368,11 +359,6 @@ class FissionEnergyRelease(object): cv.check_type('neutrinos', energy_release, Callable) self._neutrinos = energy_release - @form.setter - def form(self, form): - cv.check_value('format', form, ('Madland', 'Sher-Beck')) - self._form = form - @classmethod def _from_dictionary(cls, energy_release, incident_neutron): """Generate fission energy release data from a dictionary. @@ -401,7 +387,6 @@ class FissionEnergyRelease(object): # energy dependence. Otherwise, it is a polynomial. n_coeffs = len(energy_release['EFR']) if n_coeffs > 1: - out.form = 'Madland' out.fragments = Polynomial(energy_release['EFR']) out.prompt_neutrons = Polynomial(energy_release['ENP']) out.delayed_neutrons = Polynomial(energy_release['END']) @@ -410,12 +395,9 @@ class FissionEnergyRelease(object): out.betas = Polynomial(energy_release['EB']) out.neutrinos = Polynomial(energy_release['ENU']) else: - out.form = 'Sher-Beck' - - # EFR and ENP are energy independent. Polynomial is used because it - # has a __call__ attribute that handles Iterable inputs. The - # energy-dependence of END is unspecified in ENDF-102 so assume it - # is independent. + # EFR and ENP are energy independent. Use 0-order polynomials to + # make a constant function. The energy-dependence of END is + # unspecified in ENDF-102 so assume it is independent. out.fragments = Polynomial((energy_release['EFR'][0])) out.prompt_photons = Polynomial((energy_release['EGP'][0])) out.delayed_neutrons = Polynomial((energy_release['END'][0])) @@ -580,41 +562,40 @@ class FissionEnergyRelease(object): """ - group.create_dataset('fragments', data=self.fragments.coef) - group.create_dataset('delayed_neutrons', - data=self.delayed_neutrons.coef) - group.create_dataset('prompt_photons', - data=self.prompt_photons.coef) - group.create_dataset('delayed_photons', - data=self.delayed_photons.coef) - group.create_dataset('betas', data=self.betas.coef) - group.create_dataset('neutrinos', data=self.neutrinos.coef) - - if self.form == 'Madland': - group.attrs['format'] = np.string_('Madland') - group.create_dataset('prompt_neutrons', - data=self.prompt_neutrons.coef) - + self.fragments.to_hdf5(group, 'fragments') + self.prompt_neutrons.to_hdf5(group, 'prompt_neutrons') + self.delayed_neutrons.to_hdf5(group, 'delayed_neutrons') + self.prompt_photons.to_hdf5(group, 'prompt_photons') + self.delayed_photons.to_hdf5(group, 'delayed_photons') + self.betas.to_hdf5(group, 'betas') + self.neutrinos.to_hdf5(group, 'neutrinos') + + if isinstance(self.prompt_neutrons, Polynomial): + # Add the polynomials for the relevant components together. Use a + # Polynomial((0.0, -1.0)) to subtract incident energy. q_prompt = (self.fragments + self.prompt_neutrons + self.prompt_photons + Polynomial((0.0, -1.0))) - group.create_dataset('q_prompt', data=q_prompt.coef) + q_prompt.to_hdf5(group, 'q_prompt') q_recoverable = (self.fragments + self.prompt_neutrons + self.delayed_neutrons + self.prompt_photons + self.delayed_photons + self.betas + Polynomial((0.0, -1.0))) - group.create_dataset('q_recoverable', data=q_recoverable.coef) - elif self.form == 'Sher-Beck': - group.attrs['format'] = np.string_('Sher-Beck') - self.prompt_neutrons.to_hdf5(group, 'prompt_neutrons') + q_recoverable.to_hdf5(group, 'q_recoverable') + elif isinstance(self.prompt_neutrons, Tabulated1D): + # Make a Tabulated1D and evaluate the polynomial components at the + # table x points to get new y points. Subtract x from y to remove + # incident energy. q_prompt = deepcopy(self.prompt_neutrons) q_prompt.y += self.fragments(q_prompt.x) q_prompt.y += self.prompt_photons(q_prompt.x) + q_prompt.y -= q_prompt.x q_prompt.to_hdf5(group, 'q_prompt') q_recoverable = q_prompt q_recoverable.y += self.delayed_neutrons(q_recoverable.x) q_recoverable.y += self.delayed_photons(q_recoverable.x) q_recoverable.y += self.betas(q_recoverable.x) q_recoverable.to_hdf5(group, 'q_recoverable') + else: raise ValueError('Unrecognized energy release format') diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 4fcbf3af85..f32a93030c 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -305,13 +305,13 @@ module nuclide_header hdf5_err) if (exists) then fer_group = open_group(group_id, 'fission_energy_release') - call read_attribute(temp, fer_group, 'format') - if (temp == 'Madland') then - ! The data uses the Madland format, i.e. polynomials + ! Check to see if this is polynomial or tabulated data + fer_dset = open_dataset(fer_group, 'q_prompt') + call read_attribute(temp, fer_dset, 'type') + if (temp == 'Polynomial') then ! Read the prompt Q-value allocate(Polynomial :: this % fission_q_prompt) - fer_dset = open_dataset(fer_group, 'q_prompt') call this % fission_q_prompt % from_hdf5(fer_dset) call close_dataset(fer_dset) @@ -320,13 +320,9 @@ module nuclide_header fer_dset = open_dataset(fer_group, 'q_recoverable') call this % fission_q_recov % from_hdf5(fer_dset) call close_dataset(fer_dset) - else if (temp == 'Sher-Beck') then - ! The data uses the Sher-Beck format. Python has handily converted this - ! format to Tabulated1Ds. - + else if (temp == 'Tabulated1D') then ! Read the prompt Q-value allocate(Tabulated1D :: this % fission_q_prompt) - fer_dset = open_dataset(fer_group, 'q_prompt') call this % fission_q_prompt % from_hdf5(fer_dset) call close_dataset(fer_dset) diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index 818d99a92b..d018a65da9 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -a6e5480c66e6510687bf281983b3f387da45005bb08d8cd0aa629e53c5a42a1b2fa8d76345ad2df497d85f2b273fbc5edc36105a71a73c1107479ca0af8329f6 \ No newline at end of file +5a0f3f1ae244ada7d8c9f444d7a98c2589a9720e78174a276cf96162df6728bab6d534f136f65cb0386c3235eb7d5db47a0dd6504636ca77e7eb375e6978a84d \ No newline at end of file From b3c134e9bbef99e48261a18c8d665fdc58228d5a Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 8 Aug 2016 11:09:50 -0500 Subject: [PATCH 33/49] Update FissionEnergyRelease.from_hdf5 --- openmc/data/fission_energy.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/openmc/data/fission_energy.py b/openmc/data/fission_energy.py index 24743c19c5..03d3ed84ed 100644 --- a/openmc/data/fission_energy.py +++ b/openmc/data/fission_energy.py @@ -495,22 +495,13 @@ class FissionEnergyRelease(object): obj = cls() - obj.fragments = Polynomial(group['fragments'].value) - obj.delayed_neutrons = Polynomial(group['delayed_neutrons'].value) - obj.prompt_photons = Polynomial(group['prompt_photons'].value) - obj.delayed_photons = Polynomial(group['delayed_photons'].value) - obj.betas = Polynomial(group['betas'].value) - obj.neutrinos = Polynomial(group['neutrinos'].value) - - if group.attrs['format'].decode() == 'Madland': - obj.form = 'Madland' - obj.prompt_neutrons = Polynomial(group['prompt_neutrons'].value) - elif group.attrs['format'].decode() == 'Sher-Beck': - obj.form = 'Sher-Beck' - obj.prompt_neutrons = Tabulated1D.from_hdf5( - group['prompt_neutrons']) - else: - raise ValueError('Unrecognized energy release format') + obj.fragments = Function1D.from_hdf5(group['fragments']) + obj.prompt_neutrons = Function1D.from_hdf5(group['prompt_neutrons']) + obj.delayed_neutrons = Function1D.from_hdf5(group['delayed_neutrons']) + obj.prompt_photons = Function1D.from_hdf5(group['prompt_photons']) + obj.delayed_photons = Function1D.from_hdf5(group['delayed_photons']) + obj.betas = Function1D.from_hdf5(group['betas']) + obj.neutrinos = Function1D.from_hdf5(group['neutrinos']) return obj From 5b0ba57792aca84b8831d5f93fc9edb476a9b229 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 8 Aug 2016 11:23:00 -0500 Subject: [PATCH 34/49] Allow longer score names in statepoint files --- src/endf.F90 | 2 +- src/state_point.F90 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/endf.F90 b/src/endf.F90 index 833082e1c7..07094d5d9b 100644 --- a/src/endf.F90 +++ b/src/endf.F90 @@ -14,7 +14,7 @@ contains pure function reaction_name(MT) result(string) integer, intent(in) :: MT - character(20) :: string + character(MAX_WORD_LEN) :: string select case (MT) ! Special reactions for tallies diff --git a/src/state_point.F90 b/src/state_point.F90 index abe034897a..39532652f1 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -51,7 +51,7 @@ contains integer(HID_T) :: file_id integer(HID_T) :: cmfd_group, tallies_group, tally_group, meshes_group, & mesh_group, filter_group, runtime_group - character(20), allocatable :: str_array(:) + character(MAX_WORD_LEN), allocatable :: str_array(:) character(MAX_FILE_LEN) :: filename type(RegularMesh), pointer :: meshp type(TallyObject), pointer :: tally From 7d23e09710387b0479cccf62eb1117f5c7e11b9f Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 8 Aug 2016 12:51:30 -0500 Subject: [PATCH 35/49] Update Travis data --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 30708de36a..173af7602c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,7 +42,7 @@ install: true before_script: - if [[ ! -e $HOME/nndc_hdf5/cross_sections.xml ]]; then - wget https://anl.box.com/shared/static/6pwyfjnufam0sb96kqwwrve6vdn8m7u4.xz -O - | tar -C $HOME -xvJ; + wget https://anl.box.com/shared/static/dqkwdl7o4lauo91h3mgrn9qno6a3c8mp.xz -O - | tar -C $HOME -xvJ; fi - export OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml From 651ee4240b24fa476bd8ba47606f9d89f9d317f7 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Wed, 10 Aug 2016 11:29:32 -0500 Subject: [PATCH 36/49] Address #698 comments --- docs/source/io_formats/fission_energy.rst | 4 ++-- openmc/data/function.py | 10 +++++----- scripts/openmc-ace-to-hdf5 | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/source/io_formats/fission_energy.rst b/docs/source/io_formats/fission_energy.rst index 1d3231ee34..768db56ebb 100644 --- a/docs/source/io_formats/fission_energy.rst +++ b/docs/source/io_formats/fission_energy.rst @@ -9,8 +9,8 @@ ENDF-102_ for details). It gives the information needed to compute the energy carried away from fission reactions by each reaction product (e.g. fragment nuclei, neutrons) which depends on the incident neutron energy. OpenMC is distributed with one of these files under -openmc/data/fission_Q_data_endfb71.h5. More files of this format can be -created from ENDF files with the +data/fission_Q_data_endfb71.h5. More files of this format can be created from +ENDF files with the ``openmc.data.write_compact_458_library`` function. They can be read with the ``openmc.data.FissionEnergyRelease.from_compact_hdf5`` class method. diff --git a/openmc/data/function.py b/openmc/data/function.py index 798aa18cdd..0d4fd3b1d8 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -13,12 +13,11 @@ INTERPOLATION_SCHEME = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', class Function1D(object): """A function of one independent variable with HDF5 support.""" - __metaclass__ = ABCMeta - def __init__(self): pass - @abstractmethod - def __call__(self): pass + def __call__(self): + raise NotImplemented('Subclasses of Function1D should overwrite the ' + '__call__ and to_hdf5 methods') @abstractmethod def to_hdf5(self, group, name='xy'): @@ -32,7 +31,8 @@ class Function1D(object): Name of the dataset to create """ - pass + raise NotImplemented('Subclasses of Function1D should overwrite the ' + '__call__ and to_hdf5 methods') @classmethod def from_hdf5(cls, dataset): diff --git a/scripts/openmc-ace-to-hdf5 b/scripts/openmc-ace-to-hdf5 index 90031f0faa..2051de00b6 100755 --- a/scripts/openmc-ace-to-hdf5 +++ b/scripts/openmc-ace-to-hdf5 @@ -124,7 +124,7 @@ for filename in ace_libraries: # Fission energy release data, if available if args.fission_energy_release is not None: fer = openmc.data.FissionEnergyRelease.from_compact_hdf5( - args.fission_energy_release, neutron) + args.fission_energy_release, neutron) if fer is not None: neutron.fission_energy = fer From d6ae522c2a70e980319404304b0a8b4b95a10ffa Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Sat, 6 Aug 2016 17:28:53 -0400 Subject: [PATCH 37/49] updated mgxs tests --- .../pythonapi/examples/mdgxs-part-i.ipynb | 254 ++-- .../pythonapi/examples/mdgxs-part-ii.ipynb | 42 +- .../pythonapi/examples/mgxs-part-ii.ipynb | 1053 ++++++++++------- .../pythonapi/examples/mgxs-part-iii.ipynb | 420 +++---- openmc/mgxs/library.py | 21 +- openmc/mgxs/mdgxs.py | 253 +++- openmc/mgxs/mgxs.py | 219 ++-- .../test_mgxs_library_condense.py | 3 +- .../test_mgxs_library_distribcell.py | 3 +- .../test_mgxs_library_hdf5.py | 2 +- .../test_mgxs_library_mesh.py | 3 +- .../results_true.dat | 120 +- .../test_mgxs_library_no_nuclides.py | 3 +- .../results_true.dat | 2 +- .../test_mgxs_library_nuclides.py | 1 + 15 files changed, 1354 insertions(+), 1045 deletions(-) diff --git a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb index 94be516fca..b180141834 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb @@ -265,7 +265,7 @@ "cell_type": "code", "execution_count": 8, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -308,7 +308,7 @@ "cell_type": "code", "execution_count": 10, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -404,6 +404,7 @@ "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=cell, groups=energy_groups, by_nuclide=True)\n", "chi_delayed = mgxs.ChiDelayed(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", "delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", + "#delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", "beta = mgxs.Beta(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", "\n", "chi_prompt.nuclides = ['U235', 'Pu239']\n", @@ -580,8 +581,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: ad9fe27d26940a7120ed920d37d9cb176bde6402\n", - " Date/Time: 2016-08-06 15:47:51\n", + " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", + " Date/Time: 2016-08-10 15:46:45\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -668,20 +669,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.7100E-01 seconds\n", - " Reading cross sections = 2.6500E-01 seconds\n", - " Total time in simulation = 8.5400E+01 seconds\n", - " Time in transport only = 8.5378E+01 seconds\n", - " Time in inactive batches = 4.8000E+00 seconds\n", - " Time in active batches = 8.0600E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-02 seconds\n", - " Sampling source sites = 8.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 7.7400E-01 seconds\n", + " Reading cross sections = 4.7500E-01 seconds\n", + " Total time in simulation = 8.9596E+01 seconds\n", + " Time in transport only = 8.9573E+01 seconds\n", + " Time in inactive batches = 4.8730E+00 seconds\n", + " Time in active batches = 8.4723E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 7.2000E-02 seconds\n", - " Total time elapsed = 8.5969E+01 seconds\n", - " Calculation Rate (inactive) = 10416.7 neutrons/second\n", - " Calculation Rate (active) = 2481.39 neutrons/second\n", + " Total time elapsed = 9.0468E+01 seconds\n", + " Calculation Rate (inactive) = 10260.6 neutrons/second\n", + " Calculation Rate (active) = 2360.63 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -794,61 +795,28 @@ }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Delayed-Group XS\n", - "\tReaction Type =\tdelayed-nu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t1\n", - "\tNuclide =\tU235\n", - "\tCross Sections [cm^-1]:\n", - " Delayed Group 1:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t5.14e-06 +/- 1.76e-01%\n", - "\n", - " Delayed Group 2:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t2.65e-05 +/- 1.76e-01%\n", - "\n", - " Delayed Group 3:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t2.53e-05 +/- 1.76e-01%\n", - "\n", - " Delayed Group 4:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t5.68e-05 +/- 1.76e-01%\n", - "\n", - " Delayed Group 5:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t2.33e-05 +/- 1.76e-01%\n", - "\n", - " Delayed Group 6:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t9.76e-06 +/- 1.76e-01%\n", - "\n", - "\n", - "\tNuclide =\tPu239\n", - "\tCross Sections [cm^-1]:\n", - " Delayed Group 1:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t1.16e-06 +/- 1.90e-01%\n", - "\n", - " Delayed Group 2:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t7.58e-06 +/- 1.90e-01%\n", - "\n", - " Delayed Group 3:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t5.74e-06 +/- 1.90e-01%\n", - "\n", - " Delayed Group 4:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t1.05e-05 +/- 1.90e-01%\n", - "\n", - " Delayed Group 5:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t5.46e-06 +/- 1.90e-01%\n", - "\n", - " Delayed Group 6:\t\n", - " Group 1 [1e-09 - 19.9526231497MeV]:\t1.65e-06 +/- 1.90e-01%\n", - "\n", - "\n", - "\n" - ] + "data": { + "text/plain": [ + "array([[[[ 5.14239169e-06, 1.16429778e-06]],\n", + "\n", + " [[ 2.65434434e-05, 7.58244504e-06]],\n", + "\n", + " [[ 2.53406770e-05, 5.73814391e-06]],\n", + "\n", + " [[ 5.68158884e-05, 1.04761254e-05]],\n", + "\n", + " [[ 2.32937121e-05, 5.45676114e-06]],\n", + "\n", + " [[ 9.75765501e-06, 1.65156185e-06]]]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "delayed_nu_fission.get_condensed_xs(one_group).print_xs()" + "delayed_nu_fission.get_condensed_xs(one_group).get_xs()" ] }, { @@ -865,14 +833,6 @@ "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/shape_base.py:873: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n" - ] - }, { "data": { "text/html": [ @@ -891,131 +851,111 @@ " \n", " \n", " \n", - " 0\n", + " 198\n", " 1\n", " 1\n", " 1\n", " U235\n", - " 0.000228\n", - " 4.753468e-07\n", + " 9.533842e-11\n", + " 4.789050e-11\n", " \n", " \n", - " 1\n", + " 199\n", " 1\n", " 1\n", " 1\n", " Pu239\n", - " 0.000081\n", - " 1.885620e-07\n", + " 1.606499e-11\n", + " 8.071081e-12\n", " \n", " \n", - " 2\n", + " 398\n", " 1\n", " 2\n", " 1\n", " U235\n", - " 0.001175\n", - " 2.453594e-06\n", + " 1.224131e-09\n", + " 6.149449e-10\n", " \n", " \n", - " 3\n", + " 399\n", " 1\n", " 2\n", " 1\n", " Pu239\n", - " 0.000531\n", - " 1.228003e-06\n", + " 2.602518e-10\n", + " 1.307590e-10\n", " \n", " \n", - " 4\n", + " 598\n", " 1\n", " 3\n", " 1\n", " U235\n", - " 0.001122\n", - " 2.342414e-06\n", + " 9.033000e-10\n", + " 4.537601e-10\n", " \n", " \n", - " 5\n", + " 599\n", " 1\n", " 3\n", " 1\n", " Pu239\n", - " 0.000402\n", - " 9.293122e-07\n", + " 1.522295e-10\n", + " 7.648264e-11\n", " \n", " \n", - " 6\n", + " 798\n", " 1\n", " 4\n", " 1\n", " U235\n", - " 0.002516\n", - " 5.251885e-06\n", + " 1.749138e-09\n", + " 8.786432e-10\n", " \n", " \n", - " 7\n", + " 799\n", " 1\n", " 4\n", " 1\n", " Pu239\n", - " 0.000733\n", - " 1.696645e-06\n", + " 2.400317e-10\n", + " 1.205943e-10\n", " \n", " \n", - " 8\n", + " 998\n", " 1\n", " 5\n", " 1\n", " U235\n", - " 0.001031\n", - " 2.153199e-06\n", + " 2.724017e-10\n", + " 1.368376e-10\n", " \n", " \n", - " 9\n", + " 999\n", " 1\n", " 5\n", " 1\n", " Pu239\n", - " 0.000382\n", - " 8.837413e-07\n", - " \n", - " \n", - " 10\n", - " 1\n", - " 6\n", - " 1\n", - " U235\n", - " 0.000432\n", - " 9.019675e-07\n", - " \n", - " \n", - " 11\n", - " 1\n", - " 6\n", - " 1\n", - " Pu239\n", - " 0.000116\n", - " 2.674761e-07\n", + " 4.749191e-11\n", + " 2.386080e-11\n", " \n", " \n", "\n", "" ], "text/plain": [ - " cell delayedgroup group in nuclide mean std. dev.\n", - "0 1 1 1 U235 0.000228 4.753468e-07\n", - "1 1 1 1 Pu239 0.000081 1.885620e-07\n", - "2 1 2 1 U235 0.001175 2.453594e-06\n", - "3 1 2 1 Pu239 0.000531 1.228003e-06\n", - "4 1 3 1 U235 0.001122 2.342414e-06\n", - "5 1 3 1 Pu239 0.000402 9.293122e-07\n", - "6 1 4 1 U235 0.002516 5.251885e-06\n", - "7 1 4 1 Pu239 0.000733 1.696645e-06\n", - "8 1 5 1 U235 0.001031 2.153199e-06\n", - "9 1 5 1 Pu239 0.000382 8.837413e-07\n", - "10 1 6 1 U235 0.000432 9.019675e-07\n", - "11 1 6 1 Pu239 0.000116 2.674761e-07" + " cell delayedgroup group in nuclide mean std. dev.\n", + "198 1 1 1 U235 9.533842e-11 4.789050e-11\n", + "199 1 1 1 Pu239 1.606499e-11 8.071081e-12\n", + "398 1 2 1 U235 1.224131e-09 6.149449e-10\n", + "399 1 2 1 Pu239 2.602518e-10 1.307590e-10\n", + "598 1 3 1 U235 9.033000e-10 4.537601e-10\n", + "599 1 3 1 Pu239 1.522295e-10 7.648264e-11\n", + "798 1 4 1 U235 1.749138e-09 8.786432e-10\n", + "799 1 4 1 Pu239 2.400317e-10 1.205943e-10\n", + "998 1 5 1 U235 2.724017e-10 1.368376e-10\n", + "999 1 5 1 Pu239 4.749191e-11 2.386080e-11" ] }, "execution_count": 19, @@ -1024,8 +964,8 @@ } ], "source": [ - "df = beta.get_condensed_xs(one_group).get_pandas_dataframe()\n", - "df.head(12)" + "df = delayed_nu_fission.get_pandas_dataframe()\n", + "df.head(10)" ] }, { @@ -1061,8 +1001,8 @@ }, "outputs": [], "source": [ - "chi_prompt.build_hdf5_store(filename='mgxs', append=True)\n", - "chi_delayed.build_hdf5_store(filename='mgxs', append=True)" + "chi_prompt.build_hdf5_store(filename='mdgxs', append=True)\n", + "chi_delayed.build_hdf5_store(filename='mdgxs', append=True)" ] }, { @@ -1315,9 +1255,9 @@ }, { "data": { - "image/png": "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\n771XLz/wwAO55JJLWLBgAfPmzVt9R8qOtPXkVe/EUikFl7+jrW3T5r6SGshKOGdGxNK0+HLggxGx\nK1mp5sftjtisizQ3w9KlVTfr1pYuza7D1rjjjjtYuHAhr7zyCj/72c/o379/m9ufcsopq29XfOGF\nF6617tvf/jZTp07lpptuqrhvv379GDNmDBdccAEvvvgiAP/1X//Fbrvtxq677so+++zD4YcfzoYb\nbsgWW2xRmwusoN5VYbOBYSWvtwHmlm0zC9gWmCupLzAwIt6UNDstX2dfSRuQJZVrI+KOlg0i4l8l\n2/8auKu1wJpLPv1NTU00NTXlviizeih6UmnRna6jM1VXNYuhQulk0003XavEMG/evNXPr7jiCq64\n4op19hk3bhz33Xcfjz76KA0NDW2ec/ny5bz88svsvPPO9O/fn0svvZRLL70UgF/96lfsvvvuuare\nJk2axKRJk6put448dwPr6APoC/w3MBzoBzwH7Fi2zanA5en5WLJ2FYCdgGfTfiPTcVpuTHYNWSN9\n+fm2Knl+FnBDK3FVv4Wa2XqW3aE9exRRV8Xfnf+eR4wYEQ8++OA6y48++ug4+uijY/ny5TF58uQY\nMmRIHHvssa0e5wc/+EGMGjUq5s2bt866J598Mh577LF47733YtmyZXHhhRfGgAED4vXXX4+IiDlz\n5sTcuXMjIuKJJ56IbbfdNh544IE2427tPSXnHSTXx22ADwD+DswAzknLxgOfS883Am5O658ERpTs\ne25KKNOA0WnZ3sDKlKSeBaYAB8SahPNCWvf/gC1bianNN9WsKzixdPS83fcNGzlyZMXE8vLLL8de\ne+0VjY2N8bnPfS7OPPPMNhOLpOjfv380Njauvl3xBRdcEBERjzzySOyyyy4xYMCAGDx4cDQ1NcVj\njz22et9HH300RowYEZtuumnssMMOceONN1aNu7OJxbcmNusmSmsmivjx7Kr4fWvi2vOtic3MrFup\n2ngv6ePAMcAnga2BZcBfgd8D10XEorpGaGZmhdJmVZikP5D1xLoD+AvwT6A/sD2wL3AwWSP6nfUP\ntXZcFWbdkavCOnpeV4XVWmerwqolliERsaBKAFW36W6cWKw7cmLp6HmdWGqtrm0sLQlD0qZp3i8k\nbS/pEEkblm5jZmYG+RvvHwX6SxoK3A8cC/y2XkGZmVlx5R15r4h4R9IJZIMZL5L0bD0DMzPLY/jw\n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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZYAAAEZCAYAAAC0HgObAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm8lXXd7//XGxVR2KBADqEMJaZ2TM2j5q3VVu9Dmjnl\nreDDqTJzTLPuUrvPCTB/aZ6sHNIGyXAkhzwKmZoDmuVA4lRAcKcog1CIMigpw+f3x/XdsFisvde1\n916Lva+938/HYz1Y6xo/12Lt9Vnf8VJEYGZmVis9OjoAMzPrWpxYzMysppxYzMysppxYzMysppxY\nzMysppxYzMysppxYrKYkfVrSnA44742SLtnY5+1uJF0s6ed1OvZASTMk9UyvH5P0pXqcq8K5vyrp\nso1xru7AicXWI2m2pHclLZG0WNKTks6QpFYcplMNjpJ0qqQ1kr5RtnyOpE/V4PijJd3U3uO08pxr\nJC2TtDT9u7gO59jgR0JEXBYRX6n1uZKLgF9GxPvtPVAbktLPgZMkDWzvuc2JxTYUwOER0Q8YAlwO\nXAiM69Co2m8xcKGkPh1x8lYm5jwC+FhE9I2Ihojo38x5N2nHOcRG+pGQSimnArdsjPOVi4j3gPuB\nUzri/F2NE4tVIoCIWBYRk4CRwKmSdoPsS0DSDyS9JukNSddJ2rzigaQLJf13+mX9F0lHlxzjTUkf\nLdn2A6m0NCC9/pyk5yW9lUpOu5dsu5ek51LJagLQq8o1TQeeAr7eTJySdFGK9Z+SJkjaKq3b4Je7\npFclHSzpM8C3gZGp5PB8Wv+YpEtT3O8AwyRtL+nedN0zJX255HijJf1a0vj0Xr0s6eMtXI/So/w6\nPp1KYt+S9AbwS0lbSZoo6R/p3BMlfbBkn60l/VLSvLT+N5K2JPui/WBJyWi7FOfNJfsemf5fF0t6\nVNIuZe/RNyS9mP4Pb2+q5qpgP+CtiJhftnwnSc9IelvSPU3/J+n4n5D0x3Ts5yV9Oi2/FPgkcG2K\n++q0/MeSXk+fmSmSDiw71+PA4S2855aTE4tVFRFTgLlkf6wAVwA7AR9L/w4CvtPM7v8NHBARfYGx\nwC2Stk3VHbcDJ5VsewLw+4h4M32pjgNOB/oDPwPuk7SZpM2Ae4Dxad2dwLHVLgP4P8AFpV9OJc4H\njkzX+EHgLeC6sv03PGjEg8D3gF+nksNeJatPAr4MNACvp+t9HdgOOA74nqSDSrY/ArgN6AdMBH5S\n5Zqasx2wFTAY+ArZ3/kvgR3TsnfLjn0LsAWwK7AN8KOIeBc4DJifrqtvRCxoumwASTuneM8DPgD8\nDpgoadOSYx8HjACGAXsAX2gm5t2Bv1VYfnLaZ3tgNXBNOvcgYBJwSURsDfwncLekARHxv4E/AOem\nuM9Lx3qW7DO7dYr7zrJENz3FaO3kxGJ5zSf7Eofsy/KCiFgSEe+QVZedUGmniLg7Iham53cCs4B9\n0+qbgBNLNj85LWs6x08j4s+RuRl4D/hEemwaEVdHxOqIuBuYUu0CIuIl4CGyqr1yXwH+KyLeiIiV\nwCXAf0hqz9/IryJiRkSsIfuyPwC4MCJWRsSLwA3pmps8GREPRjaB381kX4ItmZp+rS+W9OOS5auB\n0ek870XE4oi4Jz1/B7gM+BSApO2BzwBnRMTS9H7+Ief1HQ9MiohHI2I18AOyBPVvJdtcFRELI+Jt\nsmS5ZzPH2gpYVmH5zRExPSJWkP0wOE6SyD43v02JnYh4BPgz8Nnmgo2I2yLi7YhYExE/AjYHPlKy\nyTKypG7ttGn1TcyArFSyWNIHgC2B57Su2aAHFaplACSdAlwADE2LegMDASLiWUnLUxXGAuDDZF8+\nkLXvnCLpq02HAjYjK00AzCs71Ws5r+M7wDNlX8RN57tH0pqS860Ets153EpKq88+CCxOJYEmrwF7\nl7xeUPL8XaCXpB4pMVWyV0S8WmH5P1NyBEDSFsCPyRLIVmTX1id9Qe+Q4lqa96JKfJCS9z0iIlUZ\nDirZZmHZNW3fzLHeIivZlSt9D18j+wwMJPv/Ol7SEWmdyL7PHmkuWGWdN04riaEhHYuS10ua29/y\nc2KxqiTtQ/Yl8gdgEdkXxEcj4o0q+w0m621zUEQ8lZY9z/pJaDzZr/YFwF0lPYLmAP9fRGzQBVRZ\nT65BZYsHk1W7tSgi/ibpN2TtIqXVW68DX2qKs+x8g8iSadPrTciqftYetrnTlTyfD/SX1DuVGppi\nLk+QrdFch4DyeL4BDAf2iYh/StoDmJr2n5Pi6lshuVRruJ8P/I+yZTuSVZu21kvA1yos37Hk+RCy\nZL+ILO6bIuKMZo63XuypPeVbZJ/FaWnZYtZ/D3cFXmxD7FbGVWHWLEkNkj5H1jZwc0RMS9U0vwB+\nnEovSBokaUSFQ/QG1gCLJPWQ9EU2/CK6BTiGrGqjtMvuL4AzJe2bztFb0mcl9SZrhF+lbOzBJpI+\nz7rqtTwuAb5I9uu9yc/I2jwGp/N9QNKRad1MstLDYan94H8DpXXzC4GhUvM9vyJiLvAn4DJJm0v6\nGNmv55Z6QdWqJ1kDsAJYKqk/MKYkrgVkbSPXpUb+TSU1taUtBAZI6tvMce8ADpd0UNrvP4F/kf3/\ntNazwFapaq7USZJ2SZ0JxgJ3ps/gLcARkkakz1YvZR0Xmkq0C4EPlb0HK4E3lXUc+Q4blpA+TfZe\nWDs5sVglEyUtIfsVfzFZ3XnpmIALyUoHT0t6m6zdYufyg0TEdOBK4GmyEslHgSfLtplH9us5IuLJ\nkuXPkTXcX5t+Wc4k645Kqub5PFlyWEzWQHx33ouLiNlkbRi9SxZfBdwLPJSu/U+kZJV+yZ9N1plg\nLlldfOmv8jvJksCbkv7cdJoKpz6BrBF7for3/0TEoy2F2sZ15X5MVuJaRHZd95etPxlYBcwg+0I+\nH7LSHdmPildSO8526wUQMZOsg8K1wD/JelQdERGrWhtj+j/9Feu3OTW1NY0ne896lsQ2FziKrOT5\nT7Jqsv9k3XfaVWTtMW+mas8H0mMm8CpZqXttNZukXmTtM+PzxmzNU71v9CXpULIPdg9gXER8v2x9\nT7JfqnuTffBHRsTrad3FZF9oq4DzI+IhZd1anyD7kG1KVn0yNm0/FJhA1utjKnByyYfcOilJ44B5\nEdFczzLrBpQNTnyCrO3ovY187nOBHSLioo153q6qrokl9aiZCRxC9otjCjAqImaUbHMWsHtEnC1p\nJHBMRIxSNmbiVmAfsgbGh4HhqYFwy4h4N9V1/xE4LzUE/5os0dwp6XrghYj4Wd0u0Not/RiYSvZl\nkrcB3sw6sXpXhe0LzIqI11JRdwJZ8bXUUawrft4FHJyeHwlMiIhVqepibTfVkp41m5OVWpqy48Gs\nqxIZT1Z3b52Usrm9XgKucFIx6zrqnVgGsX53wbls2Jtn7TapL/yS1MBYvu+8pn1TY93zZPX2v4+I\nKcpGa79V0jVzLuu6plonFBHfSQPYLu/oWMysduqdWCr1aimve2tum2b3TQOc9iKrItsvVZtVmuKi\nU02GaGbWHdR7HMtcsr76TXYga2spNYesr/r81GbSLyLekjSX9fuwb7BvRCyVNBk4NCJ+mLpLNg0o\nq3QuACQ54ZiZtUFEVO0GX+8SyxSySeSGpN5fo4D7yraZSOpGStZttKn75X3AqNTnfBjZnFTPKrtn\nQz9YO6L438nm+CHte1x6fipZ99GKIqKwj9GjR3d4DN01/iLH7vg7/lH0+POqa4klIlanbnwPsa67\n8XRJY4Epkc2cOw64WdIs4E2y5ENETJN0BzCNbGDT2RERaQDV+NTjrAfZ5H9Ng5ouAiZI+i7wPMWf\n6t3MrHDqPqVLRDzA+hO9ERGjS56/RzaZXaV9LyObMK902ctAxenEI5s3ab92hmxmZu3gkfcF1NjY\n2NEhtEuR4y9y7OD4O1rR48+r7iPvOyNJ0R2v28ysPSQRORrvPbuxmRXa0KFDee01j6+tpSFDhjB7\n9uw27+8Si5kVWvoV3dFhdCnNvad5SyxuYzEzs5pyYjEzs5pyYjEzs5pyYjEzs5pyYjEzq5MePXrw\nyiuvrLds7NixnHzyyRW3f//99/nyl7/M0KFD6devH3vvvTcPPPDA2vXTp09nn332oX///gwYMIAR\nI0Ywffr0tevHjh1Lz5496du3Lw0NDfTt27ddvbvayonFzKxOpModqJpbvmrVKgYPHswf/vAHlixZ\nwiWXXMLxxx/P66+/DsCgQYO4++67Wbx4MYsWLeKII45g1KhR6x1j1KhRLF26lGXLlrF06VKGDh1a\n02vKw+NYzMzqpLXdoLfccku+8511d+g+/PDDGTZsGM899xyDBw+mb9++9O3bF4DVq1fTo0cP/v73\nv9c05lpwYjGzLquZgkGbbezhMgsXLmTWrFl89KMfXW/51ltvzTvvvMOaNWv47ne/u966iRMnMnDg\nQLbffnvOOecczjzzzI0ZMuDEYmbWKa1atYqTTjqJL3zhC+y8887rrXvrrbdYsWIF48ePZ/Dgdbe8\nGjlyJGeccQbbbrstTz/9NMceeyxbb701I0eO3Kixu43FzKxONtlkE1auXLnespUrV7LZZpsB8NnP\nfnZtI/vtt9++dpuI4KSTTmLzzTfnmmuuqXjsLbbYgjPOOINTTjmFRYsWAbDLLruw3XbbIYn999+f\n888/n7vuuqtOV9c8l1jMrMvq6JleBg8ezOzZs/nIR9bdOeTVV19d+/r++++vuN9pp53GokWLuP/+\n+9lkk02aPf7q1at59913mTdvHgMHDtxgfUdNd+MSi5lZnYwcOZJLL72UefPmERE8/PDDTJo0if/4\nj/9odp8zzzyTGTNmcN9999GzZ8/11j388MO88MILrFmzhqVLl/L1r3+d/v37s+uuuwJw33338fbb\nbwPw7LPPcvXVV3P00UfX7wKb09G3uuyg22uGmXUNnfnvecWKFfGtb30rhg4dGltttVXsvffeMWnS\npGa3f+2110JSbLHFFtGnT5/o06dPNDQ0xG233RYREXfeeWfssssu0dDQENtss00cfvjh8fLLL6/d\n/4QTTogBAwZEQ0ND7LrrrnHttde2Ke7m3tO0vOp3rGc3NrNC8+zGtefZjc3MrFNxYjEzs5pyYjEz\ns5pyYjEzs5pyYjEzs5pyYjEzs5pyYjEzs5pyYjEzs5pyYjEzs5pyYjEzq5OhQ4ey5ZZb0rdvX7bf\nfnu+9KUv8e6777b6ON/85jfZeeed6devH7vtths333zz2nVvvvkmBx54IAMHDqR///4ccMAB/OlP\nf1q7/v333+eCCy5g0KBBDBgwgHPPPZfVq1fX5PqaU/fEIulQSTMkzZR0YYX1PSVNkDRL0lOSBpes\nuzgtny5pRFq2g6RHJU2T9LKk80q2Hy1prqSp6XFova/PzKw5kvjtb3/L0qVLmTp1KlOmTOHSSy9t\n9XH69OnDb3/7W5YsWcKvfvUrzj//fJ5++um162688UYWLVrE4sWL+da3vsURRxzBmjVrALjsssuY\nOnUq06ZNY+bMmTz33HNtiqE16ppYJPUArgU+A3wUOEHSLmWbnQYsjojhwI+BK9K+uwHHA7sChwHX\nKbtR9Crg6xGxG7A/cE7ZMX8YER9PjwfqeHlmZlU1zbm1/fbbc9hhh/Hyyy8zbNgwHn300bXbjB07\nlpNPPrnZY4wePZrhw4cDsO+++/LJT36Sp556CoDNN9987bqIoEePHrz99tssXrwYgEmTJnHeeefR\nr18/BgwYwHnnnccvf/nLulxrk3rfj2VfYFZEvAYgaQJwFDCjZJujgNHp+V1A011tjgQmRMQqYLak\nWcC+EfEMsAAgIpZLmg4MKjlmjW9GamZFpbG1/TqI0W2f7HLOnDncf//9HHvssfz1r3/dYL1y3kd5\nxYoVTJkyhXPOOWe95XvssQczZsxg1apVnH766WvvzxLrZnUHYM2aNcydO5dly5bR0NDQ5utpSb2r\nwgYBc0pez03LKm4TEauBJZL6V9h3Xvm+koYCewLPlCw+R9ILkm6Q1K8G12C2UVx5JTQ0ZPdpL+qj\noSG7Dlvn6KOPpn///nzqU5/ioIMO4uKLL27XbMxnnnkme+21FyNGjFhv+YsvvsiyZcu47bbbOOCA\nA9YuP+yww7jqqqtYtGgRCxYsWHtHyra09eRV78RSKQWXv6PNbdPivpL6kJVwzo+I5WnxdcCHI2JP\nslLND1sdsVkHGTMGli+vulmntnx5dh22zr333svixYt59dVXueaaa+jVq1eL25911llrb1d8+eWX\nr7fum9/8JtOmTePXv/51xX179uzJyJEjueyyy3j55ZcB+K//+i/22msv9txzTw488ECOOeYYNtts\nM7bZZpvaXGAF9a4KmwsMLnm9AzC/bJs5wI7AfEmbAP0i4i1Jc9PyDfaVtClZUrk5Iu5t2iAi/lmy\n/S+Aic0FNqbk09/Y2EhjY2PuizKrh6InlSad6TraU3VVsxgqlE569+69XolhwYIFa59ff/31XH/9\n9RvsM3r0aB588EGeeOIJ+vTp0+I5V65cySuvvMLuu+9Or169uPrqq7n66qsB+PnPf87ee++dq+pt\n8uTJTJ48uep2G8hzN7C2PoBNgP8GhgA9gReAXcu2ORu4Lj0fRdauArAb8Hzab1g6TtONyW4ia6Qv\nP992Jc8vAG5rJq7qt1Az28iyO7RnjyLqqPg789/z0KFD45FHHtlg+YknnhgnnnhirFy5MqZMmRID\nBw6Mk08+udnjfO9734vhw4fHggULNlj39NNPx5NPPhnvv/9+rFixIi6//PLo27dvvPHGGxERMW/e\nvJg/f35ERDz11FOx4447xsMPP9xi3M29p+S8g+TGuA3wocDfgFnARWnZWOBz6fnmwB1p/dPA0JJ9\nL04JZTowIi07AFidktTzwFTg0FiXcF5K6/4fsG0zMbX4ppp1BCeWtp63875hw4YNq5hYXnnlldhv\nv/2ioaEhPve5z8X555/fYmKRFL169YqGhoa1tyu+7LLLIiLi8ccfjz322CP69u0bAwYMiMbGxnjy\nySfX7vvEE0/E0KFDo3fv3rHLLrvE7bffXjXu9iYW35rYrJMorZko4sezo+L3rYlrz7cmNjOzTqVq\n472k/YGTgE8C2wMrgL8AvwVuiYgldY3QzMwKpcWqMEm/I+uJdS/wZ+AfQC9gZ+Ag4AiyRvT76h9q\n7bgqzDojV4W19byuCqu19laFVUssAyNiUZUAqm7T2TixWGfkxNLW8zqx1Fpd21iaEoak3mneLyTt\nLOlISZuVbmNmZgb5G++fAHpJGgQ8AnwR+FW9gjIzs+LKO/JeEfGupNOAayLiCknP1zMwM7M8hgwZ\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1378,9 +1318,9 @@ }, { "data": { - "image/png": "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\n9erFmWeeyRtvvAFAkyZNgmWqSk5ODjt37mTHjh2AnT5zwoQJFBQU0KZNGyZMmBDTNPTCCy9w3HHH\n0bp1a8aPH1+ts3/wwQc5/vjjadOmDQMHDmTdunUR21m6dCmnnHIKBQUFFBcXh/xIBw8ezF/+8peQ\n+ieddBJPP23/dNasWUP//v1p06YNxx13HE888USw3o4dOzj//PMpKCigd+/eCaU3bciULi8NboaG\nR1IVg6oeAK4Dngc+Bhao6iciUioigwFE5Mcish64CLhPRAKJfYcCfYCxIvK+iLwnIifWpXyW30JK\npdoWzS4bqX5dRJ9cv359sKOMhldzyPfff8/KlSurpfw86aSTaNq0KRdccAFXXHFFMEdDIMxugIMH\nD7JhwwZ2795dre3t27dz0UUXcdttt7Ft2zaOPvpoXnvttWD5U089xe9//3ueeuoptm7dyplnnsmI\nESMiypmXl8fcuXPZtWsXS5Ys4b777gt2/IEcDQFWrVrFpk2bGDRoEHv37qV///6MHDmSbdu2MX/+\nfK699lo++eQTAK699lqaN2/Oli1bmD17tmf/h8FgqCLpsZJU9TlVPUZVu6rq751jJar6rPP5HVXt\nqKotVfVQZ3oqqvqYqjZR1VNU9WTn73+SLW99csEFF1BYWMhZZ51Fv379IialqSlXX301J598Mv37\n9w85vmrVKnbv3s28efM444wzgscHDhzI3XffzbZt2/jqq6+CWeH27t1bre2lS5dywgkn8LOf/YxG\njRpx/fXX065du2D5Aw88wJQpU+jWrRs5OTnceOONfPDBByFJfwKcddZZQeX1ox/9iOHDh7N8+XIA\nhgwZwmeffRZ823/00UcZNmwYjRo14tlnn6Vz586MHj0aEaFHjx5ceOGFLFy4kIMHD/Lkk09yyy23\n0LRpU0444QTGjBmT4BM1GBoeJoheClm8eDE7duzgyy+/5M9//jNNmjSJe84111wTzMXw+9//PqRs\n8uTJrF69Omou58aNGzNs2DBmzJjBhx/aA7OpU6dy8skn06NHD/r06cPPfvYzcnNzOeyww6qdH57y\nEwjZLy8vZ+LEicF0nG3atEFEqmVbA3jrrbc4++yzOeyww2jVqhX3339/MOVn48aNGTp0KI8++iiq\nyvz584O5oMvLy3nzzTdDUn7OmzePLVu2sHXrViorKznyyCOD12mwwfn8JVVbBALO6Ax0z0Uk/F6y\n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\n", + "image/png": "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\nvPBCdR+hwWCIQFYrhnSlsrKS4cOHM2rUKI4++uigtO+//54dO3bw8MMP06VLl8DxIUOGsHz5cjZv\n3szjjz/OHXfcwT//+c+w5T/33HOMHj2a4447jkMPPRTLsoJ6OH//+9+5//77KSgooHHjxtx6663M\nnDkzbFkXX3wxRxxxBACXXnopnTt35sMPPwTg8ssv55lnDob6nj59OpdffnngGtdeey2nnXYaIsKI\nESNo0KAB77//Pu+//z6VlZWMGTOGevXqcfHFF3P66afX4EmmLyW9SwJbTbB8VmAzGEIx5qpJol69\nelRUVAQdq6iooH79+gCcf/75vPPOO4gIjz32GMOG2WEsVJXhw4fToEEDHnroobBlH3rooVxzzTUc\ndthhrFixgpYtW3LssccG0s8880zGjh3L888/z5AhQ6qcv2HDBk477WCI7cLCwsD3zZs3s2fPHrp1\n6xY4duDAgYhDY0899RT3339/YKL7hx9+YMuWLQB0796dvLw8Fi5cSKtWrfj6668ZOHAgYLs0eeqp\npwL3qKpUVFSwYYMd56lt27ZB13HLmA3UxETVTenC0lory5B5ZLVisKzqDQVVN380OnToQFlZGccc\nc9Aj+TfffBPYnzdvXtjzrrzySrZs2cK8efOoV69exPL379/Pnj17WL9+PS1btqySHs1Ms3Xr1kHm\npuXl5YE5hpYtW9KoUSO+/PJLWrduHfUe16xZw9VXX82CBQs488wzATjllFOCrjty5EimT59Oq1at\nuOSSS8jNzQWgffv2jB8/nttuu61KuYsWLWL9+vVVrtWpU6eo8hgMBm+YoaQkMWTIECZOnMj69etR\nVd58803mzJnDJZdcEvGca6+9lhUrVvDKK68EKlA/b775Jp999hkHDhxg586d3HzzzTRv3pzjjjsO\ngFdeeYXt27cD8OGHHzJlyhQuvPDCsNcZPHgwTz75JMuXL2fPnj1B8wciwlVXXcVNN93E5s2bAVi/\nfj2vv/56lXJ++OEHcnJyaNmyJQcOHOCJJ57giy++CMozfPhwXnrpJZ555pnAMBLAVVddxaOPPhoY\ndvrhhx+YN28eP/zwA2eeeSaHHHIIDz30EPv37+fFF18M5DMYDPFjFEOSmDBhAmeddRY9e/akefPm\n3HrrrcyYMYPjjz8+bP41a9bw+OOP89lnn3HEEUcE1iL4x/a3b9/OsGHDaNq0KZ07d2b16tXMnz8/\n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\nalQgII2f77//nh9//DHQGvczZMgQrrnmGo444gjef/99Lr74Ypo1a8aQIUPCXkNEuPPOO6lfvz5n\nn302/fviYcdKAAAgAElEQVT359lnn2X8+PEADBo0iB49egBQv359nn32WZYuXUqjRo0oLCxk3Lhx\nTJ8+PaAY3OE4hwwZwt13301JSQn169fn5z//Obm5uaxatYqTT7Y9rfTv35+f/exnANx1110UFBSw\nfv162rZtC1S/x5XOhBvWSfc4C4nGDFXFh9cIbk2Bbc73ggTJklXUq1ePioqKoGMVFRXUr18fgPPP\nP5933nkHEeGxxx4LOJNTVYYPH06DBg0C8ZlDOfTQQ7nmmms47LDDWLFiBS1btuTYY48NpJ955pmM\nHTuW559/PqJiaNasGQ0bNgzsFxYWsmHDhsC+O6Tnli1bqKioCFJEhYWFQSE9jzjiiCD5AFq2bBl0\nbPfug61kd/mNGzemefPmbNiwIaAYsp10r/dMxZ3aeFEMk4BPRWQBIMDZQPxR61OASN3Qmu5Xhw4d\nOlBWVsYxxxwTOPbNN98E9ufNC28dfOWVV7JlyxbmzZtHvXr1Ipa/f/9+9uzZw/r164MqYD+xXEH4\nex7+SnzNmjWcdNJJQef7admyJfXr16e8vDyggMrLy+OqxN0hQ3fv3s22bduySinEaw2U6b6SYmFc\nZsRHVMUg9r//30AP7HkGAX6vqt9GO88QmyFDhjBx4kROPPFE2rRpw1tvvcWcOXMCQzXhuPbaa1mx\nYgVvvvkmubm5QWlvvvkmLVu25OSTT2b37t3cfvvtNG/enOOOOw6AV155hbPPPpumTZvy4YcfMmXK\nFO65556I11JVSkpKuOuuu3j//feZO3dulTkLPzk5OQwePJjx48czbdo0tm7dyv3338/vfve7qOVH\nY968ebz33nucdtpp/PGPf6RHjx60adMGgFatWrF69WqOPPLIqGWkM/FWxqWu+Ds1qRcTvbLaVNyp\nTVTFoKoqIi+rajfglTqSKSuYMGECJSUl9OzZk+3bt3PUUUcxY8YMjj/++LD516xZw+OPP07Dhg0D\nwzLuYabt27dz4403sn79eg499FBOP/105s+fH1Ags2bN4oorrmDfvn20a9eO2267jeHDh0eUr3Xr\n1jRr1ow2bdrQuHFjHnvsscDEczhz0SlTpnDjjTdy5JFHcuihh3L11VcH5hfCEVpG6P5ll12GZVks\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1388,21 +1328,15 @@ } ], "source": [ - "chi_d_u235 = chi_delayed.xs_tally.get_values(nuclides=['U235'])\n", - "chi_d_pu239 = chi_delayed.xs_tally.get_values(nuclides=['Pu239'])\n", - "chi_p_u235 = chi_prompt.xs_tally.get_values(nuclides=['U235'])\n", - "chi_p_pu239 = chi_prompt.xs_tally.get_values(nuclides=['Pu239'])\n", + "chi_d_u235 = np.squeeze(chi_delayed.get_xs(nuclides=['U235'], order_groups='decreasing'))\n", + "chi_d_pu239 = np.squeeze(chi_delayed.get_xs(nuclides=['Pu239'], order_groups='decreasing'))\n", + "chi_p_u235 = np.squeeze(chi_prompt.get_xs(nuclides=['U235'], order_groups='decreasing'))\n", + "chi_p_pu239 = np.squeeze(chi_prompt.get_xs(nuclides=['Pu239'], order_groups='decreasing'))\n", "\n", - "# Reshape the betas\n", - "chi_d_u235.shape = (chi_d_u235.shape[0])\n", - "chi_d_pu239.shape = (chi_d_pu239.shape[0])\n", - "chi_p_u235.shape = (chi_p_u235.shape[0])\n", - "chi_p_pu239.shape = (chi_p_pu239.shape[0])\n", - "\n", - "chi_d_u235 = np.append(chi_d_u235[0] , chi_d_u235)\n", - "chi_d_pu239 = np.append(chi_d_pu239[0], chi_d_pu239)\n", - "chi_p_u235 = np.append(chi_p_u235[0] , chi_p_u235)\n", - "chi_p_pu239 = np.append(chi_p_pu239[0], chi_p_pu239)\n", + "chi_d_u235 = np.append(chi_d_u235 , chi_d_u235[0])\n", + "chi_d_pu239 = np.append(chi_d_pu239, chi_d_pu239[0])\n", + "chi_p_u235 = np.append(chi_p_u235 , chi_p_u235[0])\n", + "chi_p_pu239 = np.append(chi_p_pu239, chi_p_pu239[0])\n", "\n", "# Create a step plot for the MGXS\n", "plt.semilogx(energy_groups.group_edges, chi_d_u235 , drawstyle='steps', color='b', linestyle='--', linewidth=3)\n", @@ -1443,7 +1377,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb index c6bf077f82..eb2471e222 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb @@ -30,7 +30,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1357: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -456,7 +456,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AICg8wKGTyw7MAAAWFSURBVGje7Zs7cttADIZ9CSvX\ncrP0iCxUqbBc8Ag6xR6BhV2EvYvwFD4CCx1ABT1jMdgndpegRQnOrCbjpPlGESISC4A/gd27e8H5\n83CX3b4+iKJrRHkS4vkghMPBonRYWGwtfgD2YN+dRDUOoh6lACw0Noi9w2fESuEoAR/uVuMolX03\n9oXGT7F3eFL2iEfhUX1f4cPdL/ishs+68ai+udE4xPhexbjX2FfjGNoPj/DPNX4Tsd+EODr8FvsV\ndf1Hd9P2VvCi4+s/aXvrf+upAD+1/9GV1mkOH5X9vV6THtfvACslcaUCbESL61drBPtdI8SrFMWr\nELsXCkuFDYW75gbiP7d9Cf7bAYI/aCwUShrBvh30+lWQkzVgZ/HD4OixNCgcQpJ3BxU/Ln91elKo\nM5VEE38QtJ+Yv6cQ9xjKNYayyl8TypP8DfJnQ2H/b/N3ye9P83cT33SQv/sQh9gV7zZ/0dNj5HQa\nC5vVzv9+/WFN2w8KVaZ2BwL1+pv4g0x1QRfjq0dB4Q3kT277oP6VNL6gKxNU9a8zK+WLbi/Wwpdi\nhbboKqyxFOulHMj6v4W/AXbmUeAxrv9J/CqEBXaRKsXaodD4nsYvkT/G6H1D4SR/iPy1Roj9JsQ5\ne18/7EUHv1+Fvx/Xj5V9Ugb5K8TW4TZEEdcvoz/up0VTe9qsVIppKVX6a7D6y9ZvwEKjrtQxPtv6\nfXII9vCxKOGaIeAIfEF8IvAG8ie3vRK9rRQl+PPpSctbhfpTUCpviH+kxsZgpT91+snoX1l49KK3\niUQvICRy5aUw6l8leoVwoo3Uv1rKreF/UFLY6d9QP4L9Wf2r7EP9GOSfcsjZ56f60kz+XmVPXv+R\nuP49ff0T/53Rv6n/7m2lvXT9Wqd/VUz8hvh5M/ED6ILmt4mfHYZSaePnTWpsf/SvqV9O6dLYYClL\nEetnoH/LBLFoBvrX189uTv8++kot5vTvQD4/9jP690g9P/4z/bvo/XVG/xYoZZx+8fr3MxAtsf7t\nUOkG2JqsTtCIpgCt/qX1226KqZS7gfzJbe+c9jLrtIZ8lXD+s4umlW6AKIVrlML2/cXjgPFjlJqI\nRC+Fj0bVJe+vSh56pSdR6YkQ1ygF10Wqf0FeLta/iKn9Mv1L24ti2e+7W4n1b3T/W+L+t9H9T/Sv\nVboUmqJJon1/hZq8LnzRDlDrX1u0xRT1+6vEpomMmyYkqi95vIH8yW1PN+122KkLcNLKi/WTF01z\n/cNASrWE/l3ev6T17zX909z9X27/euK/Rf3zWP+Waf9eEv37KkWJ+rfDl6ZglNDa+cEBhwYDvkoN\nP/rX69814NaI3imq0l7OYDy/qSdDGwr7r+Y3VbzoKZr6XX2lfxfOb87qXzr+b1j/Xlp/nP6dn98M\ncdH7cn7zjPObKsYWS3Eb9w8n85smHtqQuPuZ30T2dlIT6F9xFl+n8xslegL9a4c2KRr9W4rp/GYq\numiM9Nec/j2v/yj9u1h//hv9e93vc++f63/u+rPjL3f+5Lbn1j9m/eXWf+7zh/v8+2b9e/Hzn6s/\nuPqHrb8g71n6L3f+5Lbnvn8w33+4718/+5d47//c/gO7/5E7/nPbc/tv3P4fs//I7X9y+6/fqH+v\n6j9z+9/c/ju3/8+eP+TOn9z23PkXc/7Gnf9x5483q38Xzn+582fu/Js9fy8kb/6fO39y23P3n3S8\n/S/c/Tfc/T83uX/pgv1XE/9duP+Lu/+Mvf8td/znti8kb/8ld/9nx9t/Sjw/Ltr/yt1/+337f6/b\nf0zoB3nJ/ucVc/81d/83e/957vzJbc89/8A8f8E9/5HE78XnT/4H/cs5f8Q9/8Q9f8U+/5U7f3Lb\nc88fdrzzjyvm+cuf/Uu887/c88fs88954/8vO4SjPC+2QRIAAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTYtMDgtMTBUMTU6NDg6NDAtMDQ6MDB40MgqAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA4LTEw\nVDE1OjQ4OjQwLTA0OjAwCY1wlgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -607,8 +607,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: ad9fe27d26940a7120ed920d37d9cb176bde6402\n", - " Date/Time: 2016-08-06 15:52:56\n", + " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", + " Date/Time: 2016-08-10 15:48:40\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -713,20 +713,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2200E-01 seconds\n", - " Reading cross sections = 2.3800E-01 seconds\n", - " Total time in simulation = 7.5197E+01 seconds\n", - " Time in transport only = 7.4942E+01 seconds\n", - " Time in inactive batches = 4.8400E+00 seconds\n", - " Time in active batches = 7.0357E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 2.1900E-01 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 7.5653E+01 seconds\n", - " Calculation Rate (inactive) = 5165.29 neutrons/second\n", - " Calculation Rate (active) = 1421.32 neutrons/second\n", + " Total time for initialization = 5.2300E-01 seconds\n", + " Reading cross sections = 3.3300E-01 seconds\n", + " Total time in simulation = 7.3672E+01 seconds\n", + " Time in transport only = 7.3396E+01 seconds\n", + " Time in inactive batches = 5.0250E+00 seconds\n", + " Time in active batches = 6.8647E+01 seconds\n", + " Time synchronizing fission bank = 1.3000E-02 seconds\n", + " Sampling source sites = 0.0000E+00 seconds\n", + " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Time accumulating tallies = 2.0800E-01 seconds\n", + " Total time for finalization = 7.0000E-03 seconds\n", + " Total time elapsed = 7.4227E+01 seconds\n", + " Calculation Rate (inactive) = 4975.12 neutrons/second\n", + " Calculation Rate (active) = 1456.73 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1249,7 +1249,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1260,7 +1260,7 @@ "data": { "image/png": "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\nDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3OAw5mZmZmZmZm1uU8\n4GBmZmZmZmZmXc4DDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3O\nAw5mZmZmZmZm1uU84GBmZmZmZmZmXc4DDusJSZMlnZlx2ycl7d/dfapqcz9JT/Vkm2ZmPck5bGZW\nPmexWXPxgEMdkuZLelXSy5Kel3S9pJ0y1jpIaouyO9CI9N91ZdZfYmbWGOdwt1gnc7jqZ+FlSTeV\n3Sez3sJZ3C3WySwGkHSKpCck/UvSo5KGlt0na24ecKgvgEMiYnNgB+AfwIUZa8U6HCTNTlJrCW32\nAS4A7u7pts16Medwkyohh1f9LKSP0T3cvllv5ixuUj2dxZI+C3wGOCgiNgU+DPxfT/bB1j0ecOiY\nACLidWAqsOuqFVJfSedKWiDpGUk/krShpI2BG4EdJf0zHQ3uL+ldkv4iaamkpyVdmP4RW6xj0h6S\n7pP0kqQpwEZV6z8s6YG0vTskvb3Ofur2S9JFks6t2n6apC+mz3eQNFXSPyT9XdIXKrbbSNLPJb0g\n6RHgXZ28n1GS5qb9+KGkGZKOTdeNS9/D+ZKeB8Yr8Y101P3ZtK3N0u3XGk2vnDInabyk30iakv77\n/FXS7p185F8GbgbmdrKdmXUt57BzeNUuOllvZt3HWdzLs1iSgG8CX4qIxwAi4smIeLGj92PmAYcM\n0sD8BHBXxeJzgKHA7ul/dwS+GRGvAgcBiyNis/SbmGeBNuC/gH7A3sD+wIkF+7MBcA1wWbq/3wAf\nq1i/JzAJOD5d/xNgWlpXraN+XQaMrdjv1un6K9PQuR54gGS0+wDgFEkfSjefALwxfRwIjOvg/Wyd\nvofTgK2Bx9K+VHo38DdgW+DbJKOrnwL2A94EbAb8sGL7zkbTDwV+DWwF/Aq4VnVGiSUNTts7Ex/w\nmpXCObxqv70yh1NXSFoi6aYMgxNm1g2cxav22xuzeED6eLukhenAyoRO9m0GEeFHjQfwJPAy8AKw\nHFgE7Fax/l/AGyte7w08kT7fD1jYyf5PAa4u2Lf3AYuqlt0JnJk+vxiYWLV+LvC+ive2f5Z+AY8C\nB6TPTwJuSJ+/G5hfVXs6MCl9/nfgQxXrjq/3mQCfBO6sWrYQODZ9Pq5GW7cC/1nx+i3AMpJBtLU+\n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\neuPVxnRsyZiOLXtfXzzliVq7DchEZX2NMUvHOIJsgsgeRwPXR0Q38Likm4E3A0tqfjgzsyGkH+Zw\nMDOzJjmL81MaejdwJ5Ci68FaP07W176qu9y5StTd+sY3ljrXL+I9hWu+1H5yqXM92r1P8XPFfxWu\nmfqtEwvXAHzg5FmFa8ZFuZVVfhUdxWs+/P5S5/rsles1HDZ0/kFnFK55501zCtcAfDr+t3DNR9uu\nISKK/Q+ZSIpbYkyuff9R89c7T/rL/31kk0b+mWy82VEV3b2QdALwhog4QdJE4PCI6Jk08jLgLWRD\nKW4ARkdESPoh8ERETKpxzYcCp0XEARXbTgX2iIjjJW2ermNCRNyb/9vYsJTJYYB2rWq803rnKpff\n83b+h8I1v4x3lzrXf7SfX7hmzROvKH6erc5uvFMN519SPEfGHzez1LneyW8L18yOw0qd6zefKP7n\n5umXTm68U5WvvH9K4RqAg352beGa4+KSwjWv4U0c2HZWqSwuksNQO4utdUrdE5fI4excxbO4TA5D\nuSz+j/avFa5Z88SrCtcAfHar4vdzF15yaqlzlcniMjkM5bJ4sHIYymVxmRyGclncynvijY17OJhZ\nbkNtvFqOMWYTWHc4BcB3gGmSehoYpr6cGxvM7OXFQyrMzFrPWZyfGxzMLLcm1xzu9/FqjcaYRcR6\nM5tHxPP1zmFmNtQ1m8NmZtY8Z3F+bnAws9w8Xs3MrLWcw2Zmrecszs8NDmaWW7Prv5uZWXOcw2Zm\nrecszs/flJnl5vFqZmat5Rw2M2s9Z3F+bnAws9wcrmZmreUcNjNrPWdxfm5wMLPcPF7NzKy1nMNm\nZq3nLM7PDQ5mlpvHq5mZtZZz2Mys9ZzF+fmbMrPc3H3MzKy1nMNmZq3nLM7PDQ5mltsqrzlsZtZS\nzmEzs9ZzFufnBgczy83dx8zMWss5bGbWes7i/PxNmVlu7j5mZtZazmEzs9ZzFufnBgczy83hambW\nWs5hM7PWcxbnNygNDjfv8qZC+4+PGaXOc7WOKlzTdt0fSp1Ls6NwTXeXSp1r2zX3FK5ZOfPvC9d0\nn1S4BID2X36ocM0XDvxyqXN9QV8rXNM2rtz3fsH3Ti9c0/3L4uc5jVuLFwG/VkeJqmtKnauHw3XD\nddsu+xSu+UBcXbhmto4sXAPQNv++wjW6pHgOQ7ks3p6HCtc8celOhWsAuo8rXtP+mwmlzvXl/b9Y\n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\n+8b/K1zTdUrx/wY/ru8XrgH4Il8uXLOHlhERxS+S7P/ltuXVoxVq695hi5rnSctiXsDaZTG/Urn2\nu6RNyVaQeBNp7feIWJJqzyBbxWI1a5fFfDvwG+AesiEWAZyZllRD0jTgloi4uOo6jgbOBLqBn0bE\nGcW+jQ1LmRwG0CXFs6fr7aX+82KbrurOLo1t2fZsqXM9pNcXrml/sPj3d96unylcA/BZ/W/hmrZa\nzW05aFLx/Onq+mSpc02Pmqss9ukT515euKbrtHL/DR5b4ns/my8WrtmUA3m1ZpXK4iI5DPWz2Fqj\n1D1xiRyGcllcJoehXBYPVg5DuSwuk8NQLovL5DCUy+LBymEol8VlchjgLM4qXLOrHm/pPfHGxEMq\nzCy37q7mIqO/136PiJuh/jTBEXFsne0zgBm5L9zMbIhoNofNzKx5zuL8/E2ZWX7uGmZm1lrOYTOz\n1nMW5+YGBzPLz+FqZtZazmEzs9ZzFufmBgczy2/NRj0Ezcys9ZzDZmat5yzOzQ0OZpbfmlZfgJnZ\nRs45bGbWes7i3Lwsppnl92LOh5mZDYy8OewsNjMbOE3msKRDJS2SdL+k02q8P1zSTEmLJd0iaVTF\ne2ek7QslHdLomJKmSXpQ0l2S5knaJ23fQ9LvJb0oaVLF/ptKui3tf4+k3gney3APBzPLb3WrL8DM\nbCPnHDYza70mslhSG3AhcBDwGDBX0jURsahit+OBpyJitKQJwLnAREl7ka3oticwErhR0mhADY55\nSkRcXXUpTwL/DhxeuTEiVkk6ICJekNQO3Czp5xFxe5nP6x4OZpZfV86HmZkNjLw57Cw2Mxs4zeXw\nOGBxRDwcEauBmcD4qn3GA5em57OAA9Pzw4CZEbEmIpYAi9PxGh1zvb/3R8QTEXEnNQaIRMQL6emm\nZJ0Uou6nacANDmaW35qcDzMzGxh5c9hZbGY2cJrL4R2BpRWvl6VtNfeJiC7gGUlb16h9NG1rdMyz\nJc2XdJ6kTRp9PEltku4ClgM3RMTcRjX1uMHBzPLzTa6ZWWv1Q4PDAI0dnipphaQ/VB3r3LTvfElX\nStoybd8vjQ/ueRyeto+UdJOkBWns8EllvyozswHTXA7XWuKiugdBvX2Kbgc4PSL2BPYDtgHWy/31\nCiO6I+JNZMM23pKGcpTiORzMLD83JpiZtVaTOTwQY4cjIoBpwLeBH1adcg7ZzW63pK8AZ6THPcC+\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1332,7 +1332,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb index cb4df0fadf..ca4832809a 100644 --- a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb @@ -34,7 +34,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:878: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", + " warnings.warn(self.msg_depr % (key, alt_key))\n", + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1357: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -440,9 +442,10 @@ "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-22 21:32:41\n", + " Version: 0.8.0\n", + " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", + " Date/Time: 2016-08-10 15:31:07\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -452,11 +455,11 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", + " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", @@ -518,7 +521,7 @@ " 48/1 1.21610 1.22612 +/- 0.00251\n", " 49/1 1.22199 1.22602 +/- 0.00245\n", " 50/1 1.20860 1.22558 +/- 0.00243\n", - " Triggers unsatisfied, max unc./thresh. is 1.25496 for flux in tally 10054\n", + " Triggers unsatisfied, max unc./thresh. is 1.25496 for flux in tally 10052\n", " The estimated number of batches is 73\n", " Creating state point statepoint.050.h5...\n", " 51/1 1.21850 1.22541 +/- 0.00237\n", @@ -544,7 +547,7 @@ " 71/1 1.19720 1.22444 +/- 0.00195\n", " 72/1 1.23770 1.22465 +/- 0.00193\n", " 73/1 1.23894 1.22488 +/- 0.00191\n", - " Triggers unsatisfied, max unc./thresh. is 1.00243 for flux in tally 10054\n", + " Triggers unsatisfied, max unc./thresh. is 1.00243 for flux in tally 10052\n", " The estimated number of batches is 74\n", " 74/1 1.22437 1.22487 +/- 0.00188\n", " Triggers satisfied for batch 74\n", @@ -557,20 +560,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3000E-01 seconds\n", - " Reading cross sections = 2.6000E-01 seconds\n", - " Total time in simulation = 3.4077E+02 seconds\n", - " Time in transport only = 3.4068E+02 seconds\n", - " Time in inactive batches = 2.3968E+01 seconds\n", - " Time in active batches = 3.1680E+02 seconds\n", - " Time synchronizing fission bank = 3.0000E-02 seconds\n", + " Total time for initialization = 4.0400E-01 seconds\n", + " Reading cross sections = 2.1100E-01 seconds\n", + " Total time in simulation = 2.8243E+02 seconds\n", + " Time in transport only = 2.8236E+02 seconds\n", + " Time in inactive batches = 1.8781E+01 seconds\n", + " Time in active batches = 2.6365E+02 seconds\n", + " Time synchronizing fission bank = 2.7000E-02 seconds\n", " Sampling source sites = 1.7000E-02 seconds\n", - " SEND/RECV source sites = 1.3000E-02 seconds\n", - " Time accumulating tallies = 3.0000E-03 seconds\n", - " Total time for finalization = 1.6000E-02 seconds\n", - " Total time elapsed = 3.4129E+02 seconds\n", - " Calculation Rate (inactive) = 4172.23 neutrons/second\n", - " Calculation Rate (active) = 1262.62 neutrons/second\n", + " SEND/RECV source sites = 8.0000E-03 seconds\n", + " Time accumulating tallies = 2.0000E-03 seconds\n", + " Total time for finalization = 2.4000E-02 seconds\n", + " Total time elapsed = 2.8293E+02 seconds\n", + " Calculation Rate (inactive) = 5324.53 neutrons/second\n", + " Calculation Rate (active) = 1517.17 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -769,6 +772,14 @@ "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/shape_base.py:873: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n" + ] + }, { "data": { "text/html": [ @@ -1159,169 +1170,239 @@ "text": [ "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.574672\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.679815\tres = 4.253E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.660826\tres = 1.830E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.658941\tres = 2.793E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.643012\tres = 2.852E-03\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.625810\tres = 2.417E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.606678\tres = 2.675E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.587485\tres = 3.057E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.569029\tres = 3.164E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.551707\tres = 3.142E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.536035\tres = 3.044E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.522274\tres = 2.841E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.510609\tres = 2.567E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.501106\tres = 2.234E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.493831\tres = 1.861E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.488780\tres = 1.452E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.485923\tres = 1.023E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.485210\tres = 5.846E-03\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.486569\tres = 1.467E-03\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.489903\tres = 2.801E-03\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.495103\tres = 6.852E-03\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.502053\tres = 1.061E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.510627\tres = 1.404E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.520693\tres = 1.708E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.532117\tres = 1.971E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.544764\tres = 2.194E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.558501\tres = 2.377E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.573195\tres = 2.522E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.588718\tres = 2.631E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.604946\tres = 2.708E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.621759\tres = 2.756E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.639047\tres = 2.779E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.656702\tres = 2.780E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.674624\tres = 2.763E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.692722\tres = 2.729E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.710910\tres = 2.683E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.729109\tres = 2.625E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.747248\tres = 2.560E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.765263\tres = 2.488E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.783094\tres = 2.411E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.800690\tres = 2.330E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.818005\tres = 2.247E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.834999\tres = 2.163E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.851638\tres = 2.078E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.867892\tres = 1.993E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.883736\tres = 1.909E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.899149\tres = 1.826E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.914115\tres = 1.744E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.928622\tres = 1.664E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.942659\tres = 1.587E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.956221\tres = 1.512E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.969305\tres = 1.439E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.981909\tres = 1.368E-02\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.994035\tres = 1.300E-02\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.005685\tres = 1.235E-02\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.016866\tres = 1.172E-02\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.027584\tres = 1.112E-02\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.037846\tres = 1.054E-02\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.047661\tres = 9.986E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.057040\tres = 9.457E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.065994\tres = 8.953E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.074533\tres = 8.470E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.082671\tres = 8.011E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.090418\tres = 7.573E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.097790\tres = 7.156E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.104797\tres = 6.760E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.111453\tres = 6.383E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.117770\tres = 6.025E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.123764\tres = 5.684E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.129446\tres = 5.362E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.134828\tres = 5.056E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.139924\tres = 4.765E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.144746\tres = 4.491E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.149306\tres = 4.230E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.153617\tres = 3.983E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.157688\tres = 3.751E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.161534\tres = 3.530E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.165163\tres = 3.322E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.168586\tres = 3.124E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.171813\tres = 2.938E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.174855\tres = 2.762E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.177721\tres = 2.596E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.180419\tres = 2.439E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.182960\tres = 2.291E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.185350\tres = 2.152E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.187599\tres = 2.021E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.189713\tres = 1.897E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.191700\tres = 1.780E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.193567\tres = 1.670E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.195321\tres = 1.567E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.196967\tres = 1.469E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.198513\tres = 1.378E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.199964\tres = 1.291E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.201326\tres = 1.211E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.202602\tres = 1.135E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.203800\tres = 1.062E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.204922\tres = 9.959E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.205974\tres = 9.321E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.206961\tres = 8.732E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.207884\tres = 8.175E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.208748\tres = 7.646E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.209558\tres = 7.159E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.210316\tres = 6.699E-04\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.211025\tres = 6.262E-04\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.211689\tres = 5.864E-04\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.212310\tres = 5.481E-04\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.212891\tres = 5.124E-04\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.213434\tres = 4.792E-04\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.213942\tres = 4.477E-04\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.214416\tres = 4.189E-04\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.214861\tres = 3.907E-04\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.215275\tres = 3.660E-04\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.215663\tres = 3.414E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.216025\tres = 3.188E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.216363\tres = 2.981E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.216679\tres = 2.776E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.216974\tres = 2.599E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.217250\tres = 2.427E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.217507\tres = 2.263E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.217747\tres = 2.115E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.217970\tres = 1.970E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.218180\tres = 1.834E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.218375\tres = 1.718E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.218557\tres = 1.602E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.218726\tres = 1.496E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.218885\tres = 1.387E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.219032\tres = 1.301E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.219169\tres = 1.211E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.219298\tres = 1.127E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.219418\tres = 1.058E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.219529\tres = 9.828E-05\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.219633\tres = 9.100E-05\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.219730\tres = 8.530E-05\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.219820\tres = 7.940E-05\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.219904\tres = 7.409E-05\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.219983\tres = 6.876E-05\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.220056\tres = 6.455E-05\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.220124\tres = 5.969E-05\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.220187\tres = 5.603E-05\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.220246\tres = 5.166E-05\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.220301\tres = 4.829E-05\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.220352\tres = 4.510E-05\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.220400\tres = 4.199E-05\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.220445\tres = 3.939E-05\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.220486\tres = 3.630E-05\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.220525\tres = 3.362E-05\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.220561\tres = 3.181E-05\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.220594\tres = 2.977E-05\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.220626\tres = 2.745E-05\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.220655\tres = 2.569E-05\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.220682\tres = 2.376E-05\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.220707\tres = 2.201E-05\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.220730\tres = 2.071E-05\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.220752\tres = 1.925E-05\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.220772\tres = 1.793E-05\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.220791\tres = 1.669E-05\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.220809\tres = 1.554E-05\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.220826\tres = 1.457E-05\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.220841\tres = 1.372E-05\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.220855\tres = 1.249E-05\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.220868\tres = 1.138E-05\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.220881\tres = 1.104E-05\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.220892\tres = 1.028E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.423123\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.475921\tres = 5.769E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.491443\tres = 1.248E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.487441\tres = 3.261E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.483949\tres = 8.144E-03\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.477326\tres = 7.164E-03\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.469012\tres = 1.369E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.460422\tres = 1.742E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.450721\tres = 1.832E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.441532\tres = 2.107E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.432168\tres = 2.039E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.423131\tres = 2.121E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.414705\tres = 2.091E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.406942\tres = 1.991E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.399627\tres = 1.872E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.393329\tres = 1.798E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.387699\tres = 1.576E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.382948\tres = 1.431E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.379028\tres = 1.225E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.375934\tres = 1.024E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.373784\tres = 8.161E-03\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.372654\tres = 5.719E-03\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.372273\tres = 3.023E-03\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.372879\tres = 1.024E-03\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.374353\tres = 1.629E-03\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.376678\tres = 3.951E-03\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.379854\tres = 6.212E-03\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.383870\tres = 8.432E-03\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.388663\tres = 1.057E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.394216\tres = 1.249E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.400506\tres = 1.429E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.407501\tres = 1.596E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.415145\tres = 1.747E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.423426\tres = 1.876E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.432299\tres = 1.995E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.441713\tres = 2.095E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.451665\tres = 2.178E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.462081\tres = 2.253E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.472951\tres = 2.306E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.484220\tres = 2.352E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.495861\tres = 2.383E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.507836\tres = 2.404E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.520110\tres = 2.415E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.532648\tres = 2.417E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.545418\tres = 2.411E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.558388\tres = 2.398E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.571526\tres = 2.378E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.584802\tres = 2.353E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.598189\tres = 2.323E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.611657\tres = 2.289E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.625182\tres = 2.252E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.638738\tres = 2.211E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.652302\tres = 2.168E-02\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.665851\tres = 2.124E-02\n", + "[ NORMAL ] Iteration 54:\tk_eff = 0.679364\tres = 2.077E-02\n", + "[ NORMAL ] Iteration 55:\tk_eff = 0.692821\tres = 2.029E-02\n", + "[ NORMAL ] Iteration 56:\tk_eff = 0.706204\tres = 1.981E-02\n", + "[ NORMAL ] Iteration 57:\tk_eff = 0.719496\tres = 1.932E-02\n", + "[ NORMAL ] Iteration 58:\tk_eff = 0.732679\tres = 1.882E-02\n", + "[ NORMAL ] Iteration 59:\tk_eff = 0.745740\tres = 1.832E-02\n", + "[ NORMAL ] Iteration 60:\tk_eff = 0.758664\tres = 1.783E-02\n", + "[ NORMAL ] Iteration 61:\tk_eff = 0.771439\tres = 1.733E-02\n", + "[ NORMAL ] Iteration 62:\tk_eff = 0.784053\tres = 1.684E-02\n", + "[ NORMAL ] Iteration 63:\tk_eff = 0.796495\tres = 1.635E-02\n", + "[ NORMAL ] Iteration 64:\tk_eff = 0.808756\tres = 1.587E-02\n", + "[ NORMAL ] Iteration 65:\tk_eff = 0.820827\tres = 1.539E-02\n", + "[ NORMAL ] Iteration 66:\tk_eff = 0.832700\tres = 1.493E-02\n", + "[ NORMAL ] Iteration 67:\tk_eff = 0.844370\tres = 1.447E-02\n", + "[ NORMAL ] Iteration 68:\tk_eff = 0.855828\tres = 1.401E-02\n", + "[ NORMAL ] Iteration 69:\tk_eff = 0.867071\tres = 1.357E-02\n", + "[ NORMAL ] Iteration 70:\tk_eff = 0.878094\tres = 1.314E-02\n", + "[ NORMAL ] Iteration 71:\tk_eff = 0.888893\tres = 1.271E-02\n", + "[ NORMAL ] Iteration 72:\tk_eff = 0.899465\tres = 1.230E-02\n", + "[ NORMAL ] Iteration 73:\tk_eff = 0.909807\tres = 1.189E-02\n", + "[ NORMAL ] Iteration 74:\tk_eff = 0.919919\tres = 1.150E-02\n", + "[ NORMAL ] Iteration 75:\tk_eff = 0.929798\tres = 1.111E-02\n", + "[ NORMAL ] Iteration 76:\tk_eff = 0.939444\tres = 1.074E-02\n", + "[ NORMAL ] Iteration 77:\tk_eff = 0.948856\tres = 1.037E-02\n", + "[ NORMAL ] Iteration 78:\tk_eff = 0.958036\tres = 1.002E-02\n", + "[ NORMAL ] Iteration 79:\tk_eff = 0.966983\tres = 9.674E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 0.975698\tres = 9.339E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 0.984184\tres = 9.013E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 0.992441\tres = 8.697E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.000472\tres = 8.390E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.008280\tres = 8.092E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.015866\tres = 7.804E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.023234\tres = 7.524E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.030386\tres = 7.253E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.037327\tres = 6.990E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.044059\tres = 6.736E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.050585\tres = 6.490E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.056911\tres = 6.251E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.063038\tres = 6.021E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.068972\tres = 5.798E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.074716\tres = 5.582E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.080275\tres = 5.373E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.085651\tres = 5.172E-03\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.090850\tres = 4.977E-03\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.095876\tres = 4.789E-03\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.100733\tres = 4.607E-03\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.105424\tres = 4.432E-03\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.109955\tres = 4.262E-03\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.114328\tres = 4.099E-03\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.118550\tres = 3.941E-03\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.122623\tres = 3.788E-03\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.126551\tres = 3.641E-03\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.130339\tres = 3.499E-03\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.133991\tres = 3.363E-03\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.137511\tres = 3.231E-03\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.140902\tres = 3.104E-03\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.144168\tres = 2.981E-03\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.147313\tres = 2.863E-03\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.150342\tres = 2.749E-03\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.153257\tres = 2.640E-03\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.156062\tres = 2.534E-03\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.158761\tres = 2.432E-03\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.161356\tres = 2.334E-03\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.163852\tres = 2.240E-03\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.166252\tres = 2.149E-03\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.168559\tres = 2.062E-03\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.170776\tres = 1.978E-03\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.172906\tres = 1.897E-03\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.174952\tres = 1.819E-03\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.176918\tres = 1.745E-03\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.178805\tres = 1.673E-03\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.180617\tres = 1.603E-03\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.182356\tres = 1.537E-03\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.184025\tres = 1.473E-03\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.185626\tres = 1.412E-03\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.187163\tres = 1.353E-03\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.188637\tres = 1.296E-03\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.190050\tres = 1.241E-03\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.191405\tres = 1.189E-03\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.192704\tres = 1.139E-03\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.193950\tres = 1.091E-03\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.195144\tres = 1.044E-03\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.196287\tres = 9.997E-04\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.197383\tres = 9.571E-04\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.198433\tres = 9.161E-04\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.199439\tres = 8.768E-04\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.200402\tres = 8.391E-04\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.201324\tres = 8.029E-04\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.202207\tres = 7.682E-04\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.203052\tres = 7.349E-04\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.203861\tres = 7.030E-04\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.204635\tres = 6.724E-04\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.205376\tres = 6.431E-04\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.206084\tres = 6.149E-04\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.206762\tres = 5.880E-04\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.207411\tres = 5.622E-04\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.208031\tres = 5.374E-04\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.208624\tres = 5.137E-04\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.209192\tres = 4.910E-04\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.209734\tres = 4.693E-04\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.210252\tres = 4.484E-04\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.210748\tres = 4.285E-04\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.211221\tres = 4.094E-04\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.211674\tres = 3.911E-04\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.212106\tres = 3.736E-04\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.212519\tres = 3.569E-04\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.212914\tres = 3.408E-04\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.213291\tres = 3.255E-04\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.213651\tres = 3.108E-04\n", + "[ NORMAL ] Iteration 163:\tk_eff = 1.213995\tres = 2.968E-04\n", + "[ NORMAL ] Iteration 164:\tk_eff = 1.214323\tres = 2.834E-04\n", + "[ NORMAL ] Iteration 165:\tk_eff = 1.214637\tres = 2.705E-04\n", + "[ NORMAL ] Iteration 166:\tk_eff = 1.214936\tres = 2.582E-04\n", + "[ NORMAL ] Iteration 167:\tk_eff = 1.215222\tres = 2.465E-04\n", + "[ NORMAL ] Iteration 168:\tk_eff = 1.215495\tres = 2.353E-04\n", + "[ NORMAL ] Iteration 169:\tk_eff = 1.215755\tres = 2.245E-04\n", + "[ NORMAL ] Iteration 170:\tk_eff = 1.216004\tres = 2.142E-04\n", + "[ NORMAL ] Iteration 171:\tk_eff = 1.216241\tres = 2.044E-04\n", + "[ NORMAL ] Iteration 172:\tk_eff = 1.216468\tres = 1.951E-04\n", + "[ NORMAL ] Iteration 173:\tk_eff = 1.216683\tres = 1.861E-04\n", + "[ NORMAL ] Iteration 174:\tk_eff = 1.216889\tres = 1.775E-04\n", + "[ NORMAL ] Iteration 175:\tk_eff = 1.217086\tres = 1.693E-04\n", + "[ NORMAL ] Iteration 176:\tk_eff = 1.217274\tres = 1.615E-04\n", + "[ NORMAL ] Iteration 177:\tk_eff = 1.217452\tres = 1.540E-04\n", + "[ NORMAL ] Iteration 178:\tk_eff = 1.217623\tres = 1.469E-04\n", + "[ NORMAL ] Iteration 179:\tk_eff = 1.217786\tres = 1.401E-04\n", + "[ NORMAL ] Iteration 180:\tk_eff = 1.217941\tres = 1.336E-04\n", + "[ NORMAL ] Iteration 181:\tk_eff = 1.218089\tres = 1.274E-04\n", + "[ NORMAL ] Iteration 182:\tk_eff = 1.218230\tres = 1.214E-04\n", + "[ NORMAL ] Iteration 183:\tk_eff = 1.218364\tres = 1.158E-04\n", + "[ NORMAL ] Iteration 184:\tk_eff = 1.218492\tres = 1.104E-04\n", + "[ NORMAL ] Iteration 185:\tk_eff = 1.218614\tres = 1.052E-04\n", + "[ NORMAL ] Iteration 186:\tk_eff = 1.218731\tres = 1.003E-04\n", + "[ NORMAL ] Iteration 187:\tk_eff = 1.218842\tres = 9.556E-05\n", + "[ NORMAL ] Iteration 188:\tk_eff = 1.218948\tres = 9.107E-05\n", + "[ NORMAL ] Iteration 189:\tk_eff = 1.219048\tres = 8.679E-05\n", + "[ NORMAL ] Iteration 190:\tk_eff = 1.219144\tres = 8.270E-05\n", + "[ NORMAL ] Iteration 191:\tk_eff = 1.219236\tres = 7.880E-05\n", + "[ NORMAL ] Iteration 192:\tk_eff = 1.219323\tres = 7.508E-05\n", + "[ NORMAL ] Iteration 193:\tk_eff = 1.219406\tres = 7.152E-05\n", + "[ NORMAL ] Iteration 194:\tk_eff = 1.219485\tres = 6.814E-05\n", + "[ NORMAL ] Iteration 195:\tk_eff = 1.219561\tres = 6.491E-05\n", + "[ NORMAL ] Iteration 196:\tk_eff = 1.219633\tres = 6.183E-05\n", + "[ NORMAL ] Iteration 197:\tk_eff = 1.219701\tres = 5.889E-05\n", + "[ NORMAL ] Iteration 198:\tk_eff = 1.219766\tres = 5.609E-05\n", + "[ NORMAL ] Iteration 199:\tk_eff = 1.219828\tres = 5.341E-05\n", + "[ NORMAL ] Iteration 200:\tk_eff = 1.219887\tres = 5.087E-05\n", + "[ NORMAL ] Iteration 201:\tk_eff = 1.219944\tres = 4.844E-05\n", + "[ NORMAL ] Iteration 202:\tk_eff = 1.219997\tres = 4.612E-05\n", + "[ NORMAL ] Iteration 203:\tk_eff = 1.220048\tres = 4.391E-05\n", + "[ NORMAL ] Iteration 204:\tk_eff = 1.220097\tres = 4.181E-05\n", + "[ NORMAL ] Iteration 205:\tk_eff = 1.220143\tres = 3.981E-05\n", + "[ NORMAL ] Iteration 206:\tk_eff = 1.220187\tres = 3.789E-05\n", + "[ NORMAL ] Iteration 207:\tk_eff = 1.220229\tres = 3.607E-05\n", + "[ NORMAL ] Iteration 208:\tk_eff = 1.220269\tres = 3.434E-05\n", + "[ NORMAL ] Iteration 209:\tk_eff = 1.220307\tres = 3.268E-05\n", + "[ NORMAL ] Iteration 210:\tk_eff = 1.220343\tres = 3.111E-05\n", + "[ NORMAL ] Iteration 211:\tk_eff = 1.220377\tres = 2.961E-05\n", + "[ NORMAL ] Iteration 212:\tk_eff = 1.220410\tres = 2.818E-05\n", + "[ NORMAL ] Iteration 213:\tk_eff = 1.220441\tres = 2.681E-05\n", + "[ NORMAL ] Iteration 214:\tk_eff = 1.220471\tres = 2.552E-05\n", + "[ NORMAL ] Iteration 215:\tk_eff = 1.220499\tres = 2.428E-05\n", + "[ NORMAL ] Iteration 216:\tk_eff = 1.220526\tres = 2.310E-05\n", + "[ NORMAL ] Iteration 217:\tk_eff = 1.220551\tres = 2.198E-05\n", + "[ NORMAL ] Iteration 218:\tk_eff = 1.220576\tres = 2.091E-05\n", + "[ NORMAL ] Iteration 219:\tk_eff = 1.220599\tres = 1.990E-05\n", + "[ NORMAL ] Iteration 220:\tk_eff = 1.220621\tres = 1.893E-05\n", + "[ NORMAL ] Iteration 221:\tk_eff = 1.220642\tres = 1.801E-05\n", + "[ NORMAL ] Iteration 222:\tk_eff = 1.220661\tres = 1.713E-05\n", + "[ NORMAL ] Iteration 223:\tk_eff = 1.220680\tres = 1.629E-05\n", + "[ NORMAL ] Iteration 224:\tk_eff = 1.220698\tres = 1.550E-05\n", + "[ NORMAL ] Iteration 225:\tk_eff = 1.220715\tres = 1.474E-05\n", + "[ NORMAL ] Iteration 226:\tk_eff = 1.220732\tres = 1.402E-05\n", + "[ NORMAL ] Iteration 227:\tk_eff = 1.220747\tres = 1.333E-05\n", + "[ NORMAL ] Iteration 228:\tk_eff = 1.220762\tres = 1.268E-05\n", + "[ NORMAL ] Iteration 229:\tk_eff = 1.220776\tres = 1.206E-05\n", + "[ NORMAL ] Iteration 230:\tk_eff = 1.220789\tres = 1.146E-05\n", + "[ NORMAL ] Iteration 231:\tk_eff = 1.220802\tres = 1.090E-05\n", + "[ NORMAL ] Iteration 232:\tk_eff = 1.220814\tres = 1.036E-05\n" ] } ], @@ -1354,8 +1435,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.223474\n", - "openmoc keff = 1.220892\n", - "bias [pcm]: -258.1\n" + "openmoc keff = 1.220814\n", + "bias [pcm]: -266.0\n" ] } ], @@ -1430,237 +1511,346 @@ "text": [ "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.495816\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.557477\tres = 5.042E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.518301\tres = 1.244E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.509212\tres = 7.027E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.496490\tres = 1.754E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.488581\tres = 2.498E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.482897\tres = 1.593E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.479775\tres = 1.163E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.478834\tres = 6.465E-03\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.479871\tres = 1.960E-03\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.482684\tres = 2.165E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.487084\tres = 5.860E-03\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.492900\tres = 9.116E-03\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.499971\tres = 1.194E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.508153\tres = 1.435E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.517312\tres = 1.637E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.527325\tres = 1.802E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.538079\tres = 1.936E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.549472\tres = 2.039E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.561410\tres = 2.117E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.573807\tres = 2.173E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.586585\tres = 2.208E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.599674\tres = 2.227E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.613007\tres = 2.231E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.626528\tres = 2.223E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.640181\tres = 2.206E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.653920\tres = 2.179E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.667700\tres = 2.146E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.681483\tres = 2.107E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.695234\tres = 2.064E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.708921\tres = 2.018E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.722515\tres = 1.969E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.735993\tres = 1.918E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.749331\tres = 1.865E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.762510\tres = 1.812E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.775514\tres = 1.759E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.788326\tres = 1.705E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.800935\tres = 1.652E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.813328\tres = 1.599E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.825497\tres = 1.547E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.837433\tres = 1.496E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.849130\tres = 1.446E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.860583\tres = 1.397E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.871788\tres = 1.349E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.882742\tres = 1.302E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.893442\tres = 1.256E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.903887\tres = 1.212E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.914077\tres = 1.169E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.924012\tres = 1.127E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.933693\tres = 1.087E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.943122\tres = 1.048E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.952299\tres = 1.010E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.961228\tres = 9.730E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.969911\tres = 9.377E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 0.978351\tres = 9.033E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 0.986552\tres = 8.702E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 0.994517\tres = 8.382E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.002250\tres = 8.074E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.009755\tres = 7.776E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.017037\tres = 7.488E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.024099\tres = 7.211E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.030947\tres = 6.944E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.037584\tres = 6.687E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.044016\tres = 6.438E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.050247\tres = 6.199E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.056282\tres = 5.969E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.062125\tres = 5.746E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.067781\tres = 5.531E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.073255\tres = 5.326E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.078552\tres = 5.126E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.083676\tres = 4.936E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.088632\tres = 4.751E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.093425\tres = 4.573E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.098058\tres = 4.403E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.102537\tres = 4.237E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.106866\tres = 4.079E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.111049\tres = 3.926E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.115090\tres = 3.779E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.118995\tres = 3.638E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.122766\tres = 3.501E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.126408\tres = 3.370E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.129925\tres = 3.244E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.133320\tres = 3.122E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.136597\tres = 3.005E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.139761\tres = 2.892E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.142815\tres = 2.783E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.145761\tres = 2.679E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.148605\tres = 2.579E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.151348\tres = 2.482E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.153994\tres = 2.388E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.156547\tres = 2.299E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.159009\tres = 2.212E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.161384\tres = 2.129E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.163674\tres = 2.049E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.165882\tres = 1.972E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.168012\tres = 1.898E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.170064\tres = 1.827E-03\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.172043\tres = 1.757E-03\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.173951\tres = 1.692E-03\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.175790\tres = 1.628E-03\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.177562\tres = 1.566E-03\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.179269\tres = 1.507E-03\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.180916\tres = 1.450E-03\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.182502\tres = 1.396E-03\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.184030\tres = 1.343E-03\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.185503\tres = 1.292E-03\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.186922\tres = 1.244E-03\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.188288\tres = 1.197E-03\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.189606\tres = 1.151E-03\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.190874\tres = 1.108E-03\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.192096\tres = 1.066E-03\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.193273\tres = 1.026E-03\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.194407\tres = 9.870E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.195499\tres = 9.504E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.196550\tres = 9.140E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.197563\tres = 8.792E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.198538\tres = 8.468E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.199477\tres = 8.140E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.200382\tres = 7.837E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.201253\tres = 7.539E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.202091\tres = 7.257E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.202898\tres = 6.979E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.203676\tres = 6.716E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.204424\tres = 6.465E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.205144\tres = 6.217E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.205838\tres = 5.979E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.206505\tres = 5.760E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.207148\tres = 5.532E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.207767\tres = 5.325E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.208363\tres = 5.125E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.208936\tres = 4.935E-04\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.209487\tres = 4.744E-04\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.210018\tres = 4.559E-04\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.210529\tres = 4.392E-04\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.211021\tres = 4.223E-04\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.211495\tres = 4.060E-04\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.211951\tres = 3.914E-04\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.212390\tres = 3.763E-04\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.212812\tres = 3.623E-04\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.213217\tres = 3.480E-04\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.213608\tres = 3.344E-04\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.213984\tres = 3.223E-04\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.214347\tres = 3.097E-04\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.214695\tres = 2.985E-04\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.215031\tres = 2.869E-04\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.215352\tres = 2.763E-04\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.215663\tres = 2.648E-04\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.215962\tres = 2.552E-04\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.216249\tres = 2.460E-04\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.216526\tres = 2.362E-04\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.216792\tres = 2.279E-04\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.217048\tres = 2.188E-04\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.217294\tres = 2.100E-04\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.217531\tres = 2.024E-04\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.217759\tres = 1.948E-04\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.217978\tres = 1.872E-04\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.218189\tres = 1.799E-04\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.218393\tres = 1.733E-04\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.218588\tres = 1.668E-04\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.218776\tres = 1.600E-04\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.218957\tres = 1.544E-04\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.219131\tres = 1.485E-04\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.219298\tres = 1.428E-04\n", - "[ NORMAL ] Iteration 163:\tk_eff = 1.219459\tres = 1.374E-04\n", - "[ NORMAL ] Iteration 164:\tk_eff = 1.219614\tres = 1.321E-04\n", - "[ NORMAL ] Iteration 165:\tk_eff = 1.219763\tres = 1.270E-04\n", - "[ NORMAL ] Iteration 166:\tk_eff = 1.219906\tres = 1.221E-04\n", - "[ NORMAL ] Iteration 167:\tk_eff = 1.220044\tres = 1.175E-04\n", - "[ NORMAL ] Iteration 168:\tk_eff = 1.220177\tres = 1.130E-04\n", - "[ NORMAL ] Iteration 169:\tk_eff = 1.220304\tres = 1.084E-04\n", - "[ NORMAL ] Iteration 170:\tk_eff = 1.220427\tres = 1.045E-04\n", - "[ NORMAL ] Iteration 171:\tk_eff = 1.220545\tres = 1.007E-04\n", - "[ NORMAL ] Iteration 172:\tk_eff = 1.220659\tres = 9.678E-05\n", - "[ NORMAL ] Iteration 173:\tk_eff = 1.220768\tres = 9.304E-05\n", - "[ NORMAL ] Iteration 174:\tk_eff = 1.220874\tres = 8.984E-05\n", - "[ NORMAL ] Iteration 175:\tk_eff = 1.220975\tres = 8.640E-05\n", - "[ NORMAL ] Iteration 176:\tk_eff = 1.221073\tres = 8.326E-05\n", - "[ NORMAL ] Iteration 177:\tk_eff = 1.221166\tres = 7.985E-05\n", - "[ NORMAL ] Iteration 178:\tk_eff = 1.221256\tres = 7.662E-05\n", - "[ NORMAL ] Iteration 179:\tk_eff = 1.221343\tres = 7.371E-05\n", - "[ NORMAL ] Iteration 180:\tk_eff = 1.221426\tres = 7.091E-05\n", - "[ NORMAL ] Iteration 181:\tk_eff = 1.221506\tres = 6.827E-05\n", - "[ NORMAL ] Iteration 182:\tk_eff = 1.221583\tres = 6.560E-05\n", - "[ NORMAL ] Iteration 183:\tk_eff = 1.221657\tres = 6.320E-05\n", - "[ NORMAL ] Iteration 184:\tk_eff = 1.221729\tres = 6.067E-05\n", - "[ NORMAL ] Iteration 185:\tk_eff = 1.221797\tres = 5.829E-05\n", - "[ NORMAL ] Iteration 186:\tk_eff = 1.221863\tres = 5.641E-05\n", - "[ NORMAL ] Iteration 187:\tk_eff = 1.221927\tres = 5.382E-05\n", - "[ NORMAL ] Iteration 188:\tk_eff = 1.221987\tres = 5.196E-05\n", - "[ NORMAL ] Iteration 189:\tk_eff = 1.222046\tres = 4.968E-05\n", - "[ NORMAL ] Iteration 190:\tk_eff = 1.222102\tres = 4.810E-05\n", - "[ NORMAL ] Iteration 191:\tk_eff = 1.222157\tres = 4.617E-05\n", - "[ NORMAL ] Iteration 192:\tk_eff = 1.222209\tres = 4.456E-05\n", - "[ NORMAL ] Iteration 193:\tk_eff = 1.222260\tres = 4.287E-05\n", - "[ NORMAL ] Iteration 194:\tk_eff = 1.222308\tres = 4.122E-05\n", - "[ NORMAL ] Iteration 195:\tk_eff = 1.222355\tres = 3.971E-05\n", - "[ NORMAL ] Iteration 196:\tk_eff = 1.222399\tres = 3.805E-05\n", - "[ NORMAL ] Iteration 197:\tk_eff = 1.222442\tres = 3.657E-05\n", - "[ NORMAL ] Iteration 198:\tk_eff = 1.222484\tres = 3.521E-05\n", - "[ NORMAL ] Iteration 199:\tk_eff = 1.222523\tres = 3.381E-05\n", - "[ NORMAL ] Iteration 200:\tk_eff = 1.222561\tres = 3.262E-05\n", - "[ NORMAL ] Iteration 201:\tk_eff = 1.222598\tres = 3.107E-05\n", - "[ NORMAL ] Iteration 202:\tk_eff = 1.222634\tres = 2.985E-05\n", - "[ NORMAL ] Iteration 203:\tk_eff = 1.222668\tres = 2.902E-05\n", - "[ NORMAL ] Iteration 204:\tk_eff = 1.222700\tres = 2.804E-05\n", - "[ NORMAL ] Iteration 205:\tk_eff = 1.222732\tres = 2.639E-05\n", - "[ NORMAL ] Iteration 206:\tk_eff = 1.222762\tres = 2.577E-05\n", - "[ NORMAL ] Iteration 207:\tk_eff = 1.222792\tres = 2.487E-05\n", - "[ NORMAL ] Iteration 208:\tk_eff = 1.222820\tres = 2.400E-05\n", - "[ NORMAL ] Iteration 209:\tk_eff = 1.222847\tres = 2.291E-05\n", - "[ NORMAL ] Iteration 210:\tk_eff = 1.222872\tres = 2.200E-05\n", - "[ NORMAL ] Iteration 211:\tk_eff = 1.222897\tres = 2.121E-05\n", - "[ NORMAL ] Iteration 212:\tk_eff = 1.222921\tres = 2.040E-05\n", - "[ NORMAL ] Iteration 213:\tk_eff = 1.222944\tres = 1.964E-05\n", - "[ NORMAL ] Iteration 214:\tk_eff = 1.222967\tres = 1.882E-05\n", - "[ NORMAL ] Iteration 215:\tk_eff = 1.222988\tres = 1.821E-05\n", - "[ NORMAL ] Iteration 216:\tk_eff = 1.223009\tres = 1.763E-05\n", - "[ NORMAL ] Iteration 217:\tk_eff = 1.223029\tres = 1.690E-05\n", - "[ NORMAL ] Iteration 218:\tk_eff = 1.223048\tres = 1.630E-05\n", - "[ NORMAL ] Iteration 219:\tk_eff = 1.223067\tres = 1.572E-05\n", - "[ NORMAL ] Iteration 220:\tk_eff = 1.223084\tres = 1.507E-05\n", - "[ NORMAL ] Iteration 221:\tk_eff = 1.223101\tres = 1.427E-05\n", - "[ NORMAL ] Iteration 222:\tk_eff = 1.223117\tres = 1.394E-05\n", - "[ NORMAL ] Iteration 223:\tk_eff = 1.223133\tres = 1.330E-05\n", - "[ NORMAL ] Iteration 224:\tk_eff = 1.223148\tres = 1.298E-05\n", - "[ NORMAL ] Iteration 225:\tk_eff = 1.223163\tres = 1.241E-05\n", - "[ NORMAL ] Iteration 226:\tk_eff = 1.223177\tres = 1.167E-05\n", - "[ NORMAL ] Iteration 227:\tk_eff = 1.223190\tres = 1.151E-05\n", - "[ NORMAL ] Iteration 228:\tk_eff = 1.223203\tres = 1.073E-05\n", - "[ NORMAL ] Iteration 229:\tk_eff = 1.223215\tres = 1.050E-05\n", - "[ NORMAL ] Iteration 230:\tk_eff = 1.223227\tres = 1.000E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.366907\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.391217\tres = 6.331E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.393027\tres = 6.626E-02\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.381142\tres = 4.627E-03\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.375065\tres = 3.024E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.369645\tres = 1.594E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.365597\tres = 1.445E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.363111\tres = 1.095E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.361532\tres = 6.802E-03\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.361339\tres = 4.349E-03\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.362062\tres = 5.322E-04\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.363777\tres = 2.001E-03\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.366395\tres = 4.735E-03\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.369859\tres = 7.198E-03\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.374042\tres = 9.454E-03\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.378972\tres = 1.131E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.384524\tres = 1.318E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.390678\tres = 1.465E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.397373\tres = 1.600E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.404563\tres = 1.714E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.412207\tres = 1.809E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.420270\tres = 1.890E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.428695\tres = 1.956E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.437463\tres = 2.005E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.446530\tres = 2.045E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.455867\tres = 2.073E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.465442\tres = 2.091E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.475229\tres = 2.101E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.485198\tres = 2.103E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.495327\tres = 2.098E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.505591\tres = 2.088E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.515969\tres = 2.072E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.526440\tres = 2.053E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.536985\tres = 2.029E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.547587\tres = 2.003E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.558228\tres = 1.974E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.568893\tres = 1.943E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.579569\tres = 1.911E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.590241\tres = 1.877E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.600898\tres = 1.841E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.611527\tres = 1.805E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.622118\tres = 1.769E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.632662\tres = 1.732E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.643149\tres = 1.695E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.653571\tres = 1.658E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.663920\tres = 1.620E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.674189\tres = 1.583E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.684372\tres = 1.547E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.694464\tres = 1.510E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.704457\tres = 1.475E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.714349\tres = 1.439E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.724134\tres = 1.404E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.733808\tres = 1.370E-02\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.743369\tres = 1.336E-02\n", + "[ NORMAL ] Iteration 54:\tk_eff = 0.752812\tres = 1.303E-02\n", + "[ NORMAL ] Iteration 55:\tk_eff = 0.762135\tres = 1.270E-02\n", + "[ NORMAL ] Iteration 56:\tk_eff = 0.771336\tres = 1.238E-02\n", + "[ NORMAL ] Iteration 57:\tk_eff = 0.780412\tres = 1.207E-02\n", + "[ NORMAL ] Iteration 58:\tk_eff = 0.789362\tres = 1.177E-02\n", + "[ NORMAL ] Iteration 59:\tk_eff = 0.798184\tres = 1.147E-02\n", + "[ NORMAL ] Iteration 60:\tk_eff = 0.806877\tres = 1.118E-02\n", + "[ NORMAL ] Iteration 61:\tk_eff = 0.815440\tres = 1.089E-02\n", + "[ NORMAL ] Iteration 62:\tk_eff = 0.823872\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 63:\tk_eff = 0.832172\tres = 1.034E-02\n", + "[ NORMAL ] Iteration 64:\tk_eff = 0.840340\tres = 1.007E-02\n", + "[ NORMAL ] Iteration 65:\tk_eff = 0.848377\tres = 9.816E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 0.856281\tres = 9.563E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 0.864053\tres = 9.317E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 0.871693\tres = 9.076E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 0.879202\tres = 8.842E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 0.886580\tres = 8.614E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 0.893828\tres = 8.392E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 0.900946\tres = 8.175E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 0.907936\tres = 7.964E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 0.914798\tres = 7.758E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 0.921534\tres = 7.558E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 0.928144\tres = 7.363E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 0.934629\tres = 7.173E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 0.940992\tres = 6.988E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 0.947233\tres = 6.808E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 0.953353\tres = 6.632E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 0.959355\tres = 6.461E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 0.965238\tres = 6.295E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 0.971006\tres = 6.133E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 0.976659\tres = 5.975E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 0.982199\tres = 5.822E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 0.987627\tres = 5.672E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 0.992945\tres = 5.527E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 0.998155\tres = 5.385E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.003258\tres = 5.247E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.008256\tres = 5.113E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.013151\tres = 4.982E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.017943\tres = 4.854E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.022635\tres = 4.730E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.027229\tres = 4.609E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.031726\tres = 4.492E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.036127\tres = 4.377E-03\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.040434\tres = 4.266E-03\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.044649\tres = 4.157E-03\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.048774\tres = 4.051E-03\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.052810\tres = 3.948E-03\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.056759\tres = 3.848E-03\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.060622\tres = 3.751E-03\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.064400\tres = 3.655E-03\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.068096\tres = 3.563E-03\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.071711\tres = 3.473E-03\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.075247\tres = 3.385E-03\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.078705\tres = 3.299E-03\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.082086\tres = 3.216E-03\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.085392\tres = 3.134E-03\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.088624\tres = 3.055E-03\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.091785\tres = 2.978E-03\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.094875\tres = 2.903E-03\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.097895\tres = 2.830E-03\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.100848\tres = 2.759E-03\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.103734\tres = 2.689E-03\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.106555\tres = 2.622E-03\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.109312\tres = 2.556E-03\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.112007\tres = 2.492E-03\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.114641\tres = 2.429E-03\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.117214\tres = 2.368E-03\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.119729\tres = 2.309E-03\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.122187\tres = 2.251E-03\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.124588\tres = 2.195E-03\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.126934\tres = 2.140E-03\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.129226\tres = 2.086E-03\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.131466\tres = 2.034E-03\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.133654\tres = 1.983E-03\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.135791\tres = 1.934E-03\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.137879\tres = 1.885E-03\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.139919\tres = 1.838E-03\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.141911\tres = 1.793E-03\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.143857\tres = 1.748E-03\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.145758\tres = 1.704E-03\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.147615\tres = 1.662E-03\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.149428\tres = 1.620E-03\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.151200\tres = 1.580E-03\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.152929\tres = 1.541E-03\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.154619\tres = 1.503E-03\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.156268\tres = 1.465E-03\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.157879\tres = 1.429E-03\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.159453\tres = 1.393E-03\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.160989\tres = 1.359E-03\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.162489\tres = 1.325E-03\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.163954\tres = 1.292E-03\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.165384\tres = 1.260E-03\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.166781\tres = 1.229E-03\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.168144\tres = 1.198E-03\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.169476\tres = 1.169E-03\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.170776\tres = 1.140E-03\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.172045\tres = 1.112E-03\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.173284\tres = 1.084E-03\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.174494\tres = 1.057E-03\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.175675\tres = 1.031E-03\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.176828\tres = 1.006E-03\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.177953\tres = 9.807E-04\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.179052\tres = 9.565E-04\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.180125\tres = 9.328E-04\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.181172\tres = 9.098E-04\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.182194\tres = 8.873E-04\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.183192\tres = 8.654E-04\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.184166\tres = 8.441E-04\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.185117\tres = 8.232E-04\n", + "[ NORMAL ] Iteration 163:\tk_eff = 1.186045\tres = 8.029E-04\n", + "[ NORMAL ] Iteration 164:\tk_eff = 1.186951\tres = 7.831E-04\n", + "[ NORMAL ] Iteration 165:\tk_eff = 1.187835\tres = 7.638E-04\n", + "[ NORMAL ] Iteration 166:\tk_eff = 1.188698\tres = 7.450E-04\n", + "[ NORMAL ] Iteration 167:\tk_eff = 1.189541\tres = 7.266E-04\n", + "[ NORMAL ] Iteration 168:\tk_eff = 1.190363\tres = 7.087E-04\n", + "[ NORMAL ] Iteration 169:\tk_eff = 1.191166\tres = 6.912E-04\n", + "[ NORMAL ] Iteration 170:\tk_eff = 1.191949\tres = 6.742E-04\n", + "[ NORMAL ] Iteration 171:\tk_eff = 1.192713\tres = 6.576E-04\n", + "[ NORMAL ] Iteration 172:\tk_eff = 1.193460\tres = 6.414E-04\n", + "[ NORMAL ] Iteration 173:\tk_eff = 1.194188\tres = 6.256E-04\n", + "[ NORMAL ] Iteration 174:\tk_eff = 1.194899\tres = 6.102E-04\n", + "[ NORMAL ] Iteration 175:\tk_eff = 1.195592\tres = 5.952E-04\n", + "[ NORMAL ] Iteration 176:\tk_eff = 1.196269\tres = 5.806E-04\n", + "[ NORMAL ] Iteration 177:\tk_eff = 1.196930\tres = 5.663E-04\n", + "[ NORMAL ] Iteration 178:\tk_eff = 1.197575\tres = 5.524E-04\n", + "[ NORMAL ] Iteration 179:\tk_eff = 1.198204\tres = 5.388E-04\n", + "[ NORMAL ] Iteration 180:\tk_eff = 1.198819\tres = 5.255E-04\n", + "[ NORMAL ] Iteration 181:\tk_eff = 1.199418\tres = 5.126E-04\n", + "[ NORMAL ] Iteration 182:\tk_eff = 1.200003\tres = 5.000E-04\n", + "[ NORMAL ] Iteration 183:\tk_eff = 1.200574\tres = 4.877E-04\n", + "[ NORMAL ] Iteration 184:\tk_eff = 1.201131\tres = 4.757E-04\n", + "[ NORMAL ] Iteration 185:\tk_eff = 1.201675\tres = 4.640E-04\n", + "[ NORMAL ] Iteration 186:\tk_eff = 1.202205\tres = 4.526E-04\n", + "[ NORMAL ] Iteration 187:\tk_eff = 1.202723\tres = 4.415E-04\n", + "[ NORMAL ] Iteration 188:\tk_eff = 1.203228\tres = 4.307E-04\n", + "[ NORMAL ] Iteration 189:\tk_eff = 1.203721\tres = 4.201E-04\n", + "[ NORMAL ] Iteration 190:\tk_eff = 1.204202\tres = 4.098E-04\n", + "[ NORMAL ] Iteration 191:\tk_eff = 1.204672\tres = 3.997E-04\n", + "[ NORMAL ] Iteration 192:\tk_eff = 1.205130\tres = 3.899E-04\n", + "[ NORMAL ] Iteration 193:\tk_eff = 1.205577\tres = 3.803E-04\n", + "[ NORMAL ] Iteration 194:\tk_eff = 1.206014\tres = 3.710E-04\n", + "[ NORMAL ] Iteration 195:\tk_eff = 1.206439\tres = 3.619E-04\n", + "[ NORMAL ] Iteration 196:\tk_eff = 1.206855\tres = 3.530E-04\n", + "[ NORMAL ] Iteration 197:\tk_eff = 1.207260\tres = 3.444E-04\n", + "[ NORMAL ] Iteration 198:\tk_eff = 1.207656\tres = 3.359E-04\n", + "[ NORMAL ] Iteration 199:\tk_eff = 1.208042\tres = 3.277E-04\n", + "[ NORMAL ] Iteration 200:\tk_eff = 1.208418\tres = 3.196E-04\n", + "[ NORMAL ] Iteration 201:\tk_eff = 1.208786\tres = 3.118E-04\n", + "[ NORMAL ] Iteration 202:\tk_eff = 1.209144\tres = 3.041E-04\n", + "[ NORMAL ] Iteration 203:\tk_eff = 1.209494\tres = 2.967E-04\n", + "[ NORMAL ] Iteration 204:\tk_eff = 1.209836\tres = 2.894E-04\n", + "[ NORMAL ] Iteration 205:\tk_eff = 1.210169\tres = 2.823E-04\n", + "[ NORMAL ] Iteration 206:\tk_eff = 1.210494\tres = 2.754E-04\n", + "[ NORMAL ] Iteration 207:\tk_eff = 1.210811\tres = 2.686E-04\n", + "[ NORMAL ] Iteration 208:\tk_eff = 1.211121\tres = 2.621E-04\n", + "[ NORMAL ] Iteration 209:\tk_eff = 1.211423\tres = 2.556E-04\n", + "[ NORMAL ] Iteration 210:\tk_eff = 1.211718\tres = 2.494E-04\n", + "[ NORMAL ] Iteration 211:\tk_eff = 1.212005\tres = 2.433E-04\n", + "[ NORMAL ] Iteration 212:\tk_eff = 1.212286\tres = 2.373E-04\n", + "[ NORMAL ] Iteration 213:\tk_eff = 1.212559\tres = 2.315E-04\n", + "[ NORMAL ] Iteration 214:\tk_eff = 1.212827\tres = 2.258E-04\n", + "[ NORMAL ] Iteration 215:\tk_eff = 1.213087\tres = 2.203E-04\n", + "[ NORMAL ] Iteration 216:\tk_eff = 1.213341\tres = 2.149E-04\n", + "[ NORMAL ] Iteration 217:\tk_eff = 1.213590\tres = 2.096E-04\n", + "[ NORMAL ] Iteration 218:\tk_eff = 1.213832\tres = 2.045E-04\n", + "[ NORMAL ] Iteration 219:\tk_eff = 1.214068\tres = 1.995E-04\n", + "[ NORMAL ] Iteration 220:\tk_eff = 1.214298\tres = 1.946E-04\n", + "[ NORMAL ] Iteration 221:\tk_eff = 1.214523\tres = 1.898E-04\n", + "[ NORMAL ] Iteration 222:\tk_eff = 1.214743\tres = 1.852E-04\n", + "[ NORMAL ] Iteration 223:\tk_eff = 1.214957\tres = 1.806E-04\n", + "[ NORMAL ] Iteration 224:\tk_eff = 1.215165\tres = 1.762E-04\n", + "[ NORMAL ] Iteration 225:\tk_eff = 1.215369\tres = 1.719E-04\n", + "[ NORMAL ] Iteration 226:\tk_eff = 1.215568\tres = 1.677E-04\n", + "[ NORMAL ] Iteration 227:\tk_eff = 1.215762\tres = 1.636E-04\n", + "[ NORMAL ] Iteration 228:\tk_eff = 1.215951\tres = 1.596E-04\n", + "[ NORMAL ] Iteration 229:\tk_eff = 1.216136\tres = 1.557E-04\n", + "[ NORMAL ] Iteration 230:\tk_eff = 1.216316\tres = 1.519E-04\n", + "[ NORMAL ] Iteration 231:\tk_eff = 1.216492\tres = 1.482E-04\n", + "[ NORMAL ] Iteration 232:\tk_eff = 1.216663\tres = 1.445E-04\n", + "[ NORMAL ] Iteration 233:\tk_eff = 1.216831\tres = 1.410E-04\n", + "[ NORMAL ] Iteration 234:\tk_eff = 1.216994\tres = 1.375E-04\n", + "[ NORMAL ] Iteration 235:\tk_eff = 1.217153\tres = 1.342E-04\n", + "[ NORMAL ] Iteration 236:\tk_eff = 1.217309\tres = 1.309E-04\n", + "[ NORMAL ] Iteration 237:\tk_eff = 1.217460\tres = 1.277E-04\n", + "[ NORMAL ] Iteration 238:\tk_eff = 1.217608\tres = 1.246E-04\n", + "[ NORMAL ] Iteration 239:\tk_eff = 1.217753\tres = 1.215E-04\n", + "[ NORMAL ] Iteration 240:\tk_eff = 1.217894\tres = 1.185E-04\n", + "[ NORMAL ] Iteration 241:\tk_eff = 1.218031\tres = 1.156E-04\n", + "[ NORMAL ] Iteration 242:\tk_eff = 1.218165\tres = 1.128E-04\n", + "[ NORMAL ] Iteration 243:\tk_eff = 1.218296\tres = 1.101E-04\n", + "[ NORMAL ] Iteration 244:\tk_eff = 1.218423\tres = 1.074E-04\n", + "[ NORMAL ] Iteration 245:\tk_eff = 1.218548\tres = 1.047E-04\n", + "[ NORMAL ] Iteration 246:\tk_eff = 1.218669\tres = 1.022E-04\n", + "[ NORMAL ] Iteration 247:\tk_eff = 1.218788\tres = 9.967E-05\n", + "[ NORMAL ] Iteration 248:\tk_eff = 1.218903\tres = 9.723E-05\n", + "[ NORMAL ] Iteration 249:\tk_eff = 1.219016\tres = 9.486E-05\n", + "[ NORMAL ] Iteration 250:\tk_eff = 1.219126\tres = 9.254E-05\n", + "[ NORMAL ] Iteration 251:\tk_eff = 1.219234\tres = 9.027E-05\n", + "[ NORMAL ] Iteration 252:\tk_eff = 1.219338\tres = 8.806E-05\n", + "[ NORMAL ] Iteration 253:\tk_eff = 1.219441\tres = 8.591E-05\n", + "[ NORMAL ] Iteration 254:\tk_eff = 1.219540\tres = 8.381E-05\n", + "[ NORMAL ] Iteration 255:\tk_eff = 1.219637\tres = 8.176E-05\n", + "[ NORMAL ] Iteration 256:\tk_eff = 1.219732\tres = 7.976E-05\n", + "[ NORMAL ] Iteration 257:\tk_eff = 1.219825\tres = 7.781E-05\n", + "[ NORMAL ] Iteration 258:\tk_eff = 1.219915\tres = 7.591E-05\n", + "[ NORMAL ] Iteration 259:\tk_eff = 1.220003\tres = 7.405E-05\n", + "[ NORMAL ] Iteration 260:\tk_eff = 1.220089\tres = 7.224E-05\n", + "[ NORMAL ] Iteration 261:\tk_eff = 1.220173\tres = 7.047E-05\n", + "[ NORMAL ] Iteration 262:\tk_eff = 1.220255\tres = 6.875E-05\n", + "[ NORMAL ] Iteration 263:\tk_eff = 1.220335\tres = 6.707E-05\n", + "[ NORMAL ] Iteration 264:\tk_eff = 1.220413\tres = 6.543E-05\n", + "[ NORMAL ] Iteration 265:\tk_eff = 1.220489\tres = 6.383E-05\n", + "[ NORMAL ] Iteration 266:\tk_eff = 1.220563\tres = 6.227E-05\n", + "[ NORMAL ] Iteration 267:\tk_eff = 1.220635\tres = 6.075E-05\n", + "[ NORMAL ] Iteration 268:\tk_eff = 1.220706\tres = 5.926E-05\n", + "[ NORMAL ] Iteration 269:\tk_eff = 1.220775\tres = 5.781E-05\n", + "[ NORMAL ] Iteration 270:\tk_eff = 1.220842\tres = 5.640E-05\n", + "[ NORMAL ] Iteration 271:\tk_eff = 1.220907\tres = 5.502E-05\n", + "[ NORMAL ] Iteration 272:\tk_eff = 1.220971\tres = 5.368E-05\n", + "[ NORMAL ] Iteration 273:\tk_eff = 1.221034\tres = 5.236E-05\n", + "[ NORMAL ] Iteration 274:\tk_eff = 1.221095\tres = 5.108E-05\n", + "[ NORMAL ] Iteration 275:\tk_eff = 1.221154\tres = 4.984E-05\n", + "[ NORMAL ] Iteration 276:\tk_eff = 1.221212\tres = 4.862E-05\n", + "[ NORMAL ] Iteration 277:\tk_eff = 1.221268\tres = 4.743E-05\n", + "[ NORMAL ] Iteration 278:\tk_eff = 1.221324\tres = 4.627E-05\n", + "[ NORMAL ] Iteration 279:\tk_eff = 1.221377\tres = 4.514E-05\n", + "[ NORMAL ] Iteration 280:\tk_eff = 1.221430\tres = 4.403E-05\n", + "[ NORMAL ] Iteration 281:\tk_eff = 1.221481\tres = 4.296E-05\n", + "[ NORMAL ] Iteration 282:\tk_eff = 1.221531\tres = 4.191E-05\n", + "[ NORMAL ] Iteration 283:\tk_eff = 1.221580\tres = 4.088E-05\n", + "[ NORMAL ] Iteration 284:\tk_eff = 1.221627\tres = 3.988E-05\n", + "[ NORMAL ] Iteration 285:\tk_eff = 1.221674\tres = 3.891E-05\n", + "[ NORMAL ] Iteration 286:\tk_eff = 1.221719\tres = 3.796E-05\n", + "[ NORMAL ] Iteration 287:\tk_eff = 1.221763\tres = 3.703E-05\n", + "[ NORMAL ] Iteration 288:\tk_eff = 1.221806\tres = 3.613E-05\n", + "[ NORMAL ] Iteration 289:\tk_eff = 1.221848\tres = 3.524E-05\n", + "[ NORMAL ] Iteration 290:\tk_eff = 1.221889\tres = 3.438E-05\n", + "[ NORMAL ] Iteration 291:\tk_eff = 1.221929\tres = 3.354E-05\n", + "[ NORMAL ] Iteration 292:\tk_eff = 1.221968\tres = 3.272E-05\n", + "[ NORMAL ] Iteration 293:\tk_eff = 1.222006\tres = 3.192E-05\n", + "[ NORMAL ] Iteration 294:\tk_eff = 1.222043\tres = 3.114E-05\n", + "[ NORMAL ] Iteration 295:\tk_eff = 1.222079\tres = 3.038E-05\n", + "[ NORMAL ] Iteration 296:\tk_eff = 1.222115\tres = 2.964E-05\n", + "[ NORMAL ] Iteration 297:\tk_eff = 1.222149\tres = 2.891E-05\n", + "[ NORMAL ] Iteration 298:\tk_eff = 1.222183\tres = 2.821E-05\n", + "[ NORMAL ] Iteration 299:\tk_eff = 1.222216\tres = 2.752E-05\n", + "[ NORMAL ] Iteration 300:\tk_eff = 1.222248\tres = 2.685E-05\n", + "[ NORMAL ] Iteration 301:\tk_eff = 1.222279\tres = 2.619E-05\n", + "[ NORMAL ] Iteration 302:\tk_eff = 1.222309\tres = 2.555E-05\n", + "[ NORMAL ] Iteration 303:\tk_eff = 1.222339\tres = 2.492E-05\n", + "[ NORMAL ] Iteration 304:\tk_eff = 1.222368\tres = 2.432E-05\n", + "[ NORMAL ] Iteration 305:\tk_eff = 1.222396\tres = 2.372E-05\n", + "[ NORMAL ] Iteration 306:\tk_eff = 1.222424\tres = 2.314E-05\n", + "[ NORMAL ] Iteration 307:\tk_eff = 1.222451\tres = 2.258E-05\n", + "[ NORMAL ] Iteration 308:\tk_eff = 1.222477\tres = 2.202E-05\n", + "[ NORMAL ] Iteration 309:\tk_eff = 1.222503\tres = 2.149E-05\n", + "[ NORMAL ] Iteration 310:\tk_eff = 1.222528\tres = 2.096E-05\n", + "[ NORMAL ] Iteration 311:\tk_eff = 1.222552\tres = 2.045E-05\n", + "[ NORMAL ] Iteration 312:\tk_eff = 1.222576\tres = 1.995E-05\n", + "[ NORMAL ] Iteration 313:\tk_eff = 1.222599\tres = 1.946E-05\n", + "[ NORMAL ] Iteration 314:\tk_eff = 1.222622\tres = 1.899E-05\n", + "[ NORMAL ] Iteration 315:\tk_eff = 1.222644\tres = 1.852E-05\n", + "[ NORMAL ] Iteration 316:\tk_eff = 1.222665\tres = 1.807E-05\n", + "[ NORMAL ] Iteration 317:\tk_eff = 1.222686\tres = 1.763E-05\n", + "[ NORMAL ] Iteration 318:\tk_eff = 1.222707\tres = 1.720E-05\n", + "[ NORMAL ] Iteration 319:\tk_eff = 1.222727\tres = 1.678E-05\n", + "[ NORMAL ] Iteration 320:\tk_eff = 1.222746\tres = 1.637E-05\n", + "[ NORMAL ] Iteration 321:\tk_eff = 1.222766\tres = 1.597E-05\n", + "[ NORMAL ] Iteration 322:\tk_eff = 1.222784\tres = 1.558E-05\n", + "[ NORMAL ] Iteration 323:\tk_eff = 1.222802\tres = 1.520E-05\n", + "[ NORMAL ] Iteration 324:\tk_eff = 1.222820\tres = 1.483E-05\n", + "[ NORMAL ] Iteration 325:\tk_eff = 1.222837\tres = 1.446E-05\n", + "[ NORMAL ] Iteration 326:\tk_eff = 1.222854\tres = 1.411E-05\n", + "[ NORMAL ] Iteration 327:\tk_eff = 1.222870\tres = 1.377E-05\n", + "[ NORMAL ] Iteration 328:\tk_eff = 1.222886\tres = 1.343E-05\n", + "[ NORMAL ] Iteration 329:\tk_eff = 1.222902\tres = 1.310E-05\n", + "[ NORMAL ] Iteration 330:\tk_eff = 1.222917\tres = 1.278E-05\n", + "[ NORMAL ] Iteration 331:\tk_eff = 1.222932\tres = 1.247E-05\n", + "[ NORMAL ] Iteration 332:\tk_eff = 1.222947\tres = 1.216E-05\n", + "[ NORMAL ] Iteration 333:\tk_eff = 1.222961\tres = 1.187E-05\n", + "[ NORMAL ] Iteration 334:\tk_eff = 1.222975\tres = 1.158E-05\n", + "[ NORMAL ] Iteration 335:\tk_eff = 1.222988\tres = 1.129E-05\n", + "[ NORMAL ] Iteration 336:\tk_eff = 1.223001\tres = 1.102E-05\n", + "[ NORMAL ] Iteration 337:\tk_eff = 1.223014\tres = 1.075E-05\n", + "[ NORMAL ] Iteration 338:\tk_eff = 1.223027\tres = 1.049E-05\n", + "[ NORMAL ] Iteration 339:\tk_eff = 1.223039\tres = 1.023E-05\n" ] } ], @@ -1686,8 +1876,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.223474\n", - "openmoc keff = 1.223227\n", - "bias [pcm]: -24.7\n" + "openmoc keff = 1.223039\n", + "bias [pcm]: -43.5\n" ] } ], @@ -1772,9 +1962,9 @@ }, { "data": { - "image/png": "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\nRK5CYII=\n", + "image/png": "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\nYwHYAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1790,6 +1980,7 @@ "energy_groups = nufission.energy_groups\n", "x = energy_groups.group_edges\n", "y = nufission.get_xs(nuclides=['U235'], order_groups='decreasing', xs_type='micro')\n", + "y = np.squeeze(y)\n", "\n", "# Fix low energy bound to the value defined by the ACE library\n", "x[0] = fission.xs.x[0]\n", @@ -1855,9 +2046,9 @@ "outputs": [ { "data": { - "image/png": "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\nfn35+EIOpHUAAAAASUVORK5CYII=\n", + "image/png": "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\nZlZT/x9xJfW8VvykSgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1897,21 +2088,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.2" + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index a1eaa7ad82..9d2b89c512 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -32,7 +32,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1357: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -458,7 +458,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -727,9 +727,10 @@ "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-23 16:42:32\n", + " Version: 0.8.0\n", + " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", + " Date/Time: 2016-08-10 18:33:28\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -739,12 +740,12 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", + " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", + " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", + " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", + " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", + " Reading B10.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/B10_71c.h5\n", + " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", @@ -780,32 +781,32 @@ " 22/1 1.04175 1.02516 +/- 0.00588\n", " 23/1 1.01909 1.02469 +/- 0.00543\n", " 24/1 1.07119 1.02801 +/- 0.00603\n", - " 25/1 0.97445 1.02444 +/- 0.00665\n", - " 26/1 1.04737 1.02588 +/- 0.00638\n", - " 27/1 1.04656 1.02709 +/- 0.00612\n", - " 28/1 1.03464 1.02751 +/- 0.00578\n", - " 29/1 1.02528 1.02739 +/- 0.00547\n", - " 30/1 1.02799 1.02742 +/- 0.00519\n", - " 31/1 1.05846 1.02890 +/- 0.00516\n", - " 32/1 1.03811 1.02932 +/- 0.00493\n", - " 33/1 1.00894 1.02843 +/- 0.00480\n", - " 34/1 1.02049 1.02810 +/- 0.00460\n", - " 35/1 1.00690 1.02726 +/- 0.00450\n", - " 36/1 1.03129 1.02741 +/- 0.00432\n", - " 37/1 0.98864 1.02597 +/- 0.00440\n", - " 38/1 1.00017 1.02505 +/- 0.00434\n", - " 39/1 1.03635 1.02544 +/- 0.00421\n", - " 40/1 1.07090 1.02696 +/- 0.00434\n", - " 41/1 1.03141 1.02710 +/- 0.00420\n", - " 42/1 1.02624 1.02707 +/- 0.00406\n", - " 43/1 1.02668 1.02706 +/- 0.00394\n", - " 44/1 1.05940 1.02801 +/- 0.00394\n", - " 45/1 1.01149 1.02754 +/- 0.00385\n", - " 46/1 1.06958 1.02871 +/- 0.00392\n", - " 47/1 1.02674 1.02866 +/- 0.00381\n", - " 48/1 1.02542 1.02857 +/- 0.00371\n", - " 49/1 1.03516 1.02874 +/- 0.00362\n", - " 50/1 1.06818 1.02973 +/- 0.00366\n", + " 25/1 0.97414 1.02442 +/- 0.00666\n", + " 26/1 1.04709 1.02584 +/- 0.00639\n", + " 27/1 1.05872 1.02777 +/- 0.00631\n", + " 28/1 1.03930 1.02841 +/- 0.00598\n", + " 29/1 1.01488 1.02770 +/- 0.00570\n", + " 30/1 1.04513 1.02857 +/- 0.00548\n", + " 31/1 0.99538 1.02699 +/- 0.00545\n", + " 32/1 1.00106 1.02581 +/- 0.00532\n", + " 33/1 0.99389 1.02442 +/- 0.00527\n", + " 34/1 0.99938 1.02338 +/- 0.00516\n", + " 35/1 1.02161 1.02331 +/- 0.00495\n", + " 36/1 1.04084 1.02398 +/- 0.00480\n", + " 37/1 0.98801 1.02265 +/- 0.00481\n", + " 38/1 1.01348 1.02232 +/- 0.00464\n", + " 39/1 1.06693 1.02386 +/- 0.00474\n", + " 40/1 1.07729 1.02564 +/- 0.00491\n", + " 41/1 1.03191 1.02585 +/- 0.00475\n", + " 42/1 1.05209 1.02667 +/- 0.00468\n", + " 43/1 1.02997 1.02677 +/- 0.00453\n", + " 44/1 1.07288 1.02812 +/- 0.00460\n", + " 45/1 1.01268 1.02768 +/- 0.00449\n", + " 46/1 1.03759 1.02796 +/- 0.00437\n", + " 47/1 1.02620 1.02791 +/- 0.00425\n", + " 48/1 1.02509 1.02783 +/- 0.00414\n", + " 49/1 1.01043 1.02739 +/- 0.00406\n", + " 50/1 1.01457 1.02707 +/- 0.00397\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -815,27 +816,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3400E-01 seconds\n", - " Reading cross sections = 2.7900E-01 seconds\n", - " Total time in simulation = 6.1121E+01 seconds\n", - " Time in transport only = 6.1101E+01 seconds\n", - " Time in inactive batches = 5.0660E+00 seconds\n", - " Time in active batches = 5.6055E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", - " SEND/RECV source sites = 2.0000E-03 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for initialization = 4.3000E-01 seconds\n", + " Reading cross sections = 2.2800E-01 seconds\n", + " Total time in simulation = 6.1235E+01 seconds\n", + " Time in transport only = 6.1207E+01 seconds\n", + " Time in inactive batches = 5.0280E+00 seconds\n", + " Time in active batches = 5.6207E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 4.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 2.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 6.1576E+01 seconds\n", - " Calculation Rate (inactive) = 4934.86 neutrons/second\n", - " Calculation Rate (active) = 1783.96 neutrons/second\n", + " Total time elapsed = 6.1689E+01 seconds\n", + " Calculation Rate (inactive) = 4972.16 neutrons/second\n", + " Calculation Rate (active) = 1779.14 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02763 +/- 0.00343\n", - " k-effective (Track-length) = 1.02973 +/- 0.00366\n", - " k-effective (Absorption) = 1.02732 +/- 0.00319\n", - " Combined k-effective = 1.02826 +/- 0.00259\n", + " k-effective (Collision) = 1.02489 +/- 0.00308\n", + " k-effective (Track-length) = 1.02707 +/- 0.00397\n", + " k-effective (Absorption) = 1.02637 +/- 0.00325\n", + " Combined k-effective = 1.02581 +/- 0.00264\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -955,8 +956,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/romano/openmc/openmc/tallies.py:1941: RuntimeWarning: invalid value encountered in true_divide\n", - " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n" + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1944: RuntimeWarning: invalid value encountered in true_divide\n" ] }, { @@ -980,16 +980,16 @@ " 10000\n", " 1\n", " U235\n", - " 8.055246e-03\n", - " 2.857567e-05\n", + " 8.046809e-03\n", + " 2.697198e-05\n", " \n", " \n", " 4\n", " 10000\n", " 1\n", " U238\n", - " 7.339215e-03\n", - " 4.349466e-05\n", + " 7.366624e-03\n", + " 4.255197e-05\n", " \n", " \n", " 5\n", @@ -1004,16 +1004,16 @@ " 10000\n", " 2\n", " U235\n", - " 3.615565e-01\n", - " 2.050486e-03\n", + " 3.614917e-01\n", + " 2.135233e-03\n", " \n", " \n", " 1\n", " 10000\n", " 2\n", " U238\n", - " 6.742638e-07\n", - " 3.795256e-09\n", + " 6.741607e-07\n", + " 3.924924e-09\n", " \n", " \n", " 2\n", @@ -1029,11 +1029,11 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U235 8.055246e-03 2.857567e-05\n", - "4 10000 1 U238 7.339215e-03 4.349466e-05\n", + "3 10000 1 U235 8.046809e-03 2.697198e-05\n", + "4 10000 1 U238 7.366624e-03 4.255197e-05\n", "5 10000 1 O16 0.000000e+00 0.000000e+00\n", - "0 10000 2 U235 3.615565e-01 2.050486e-03\n", - "1 10000 2 U238 6.742638e-07 3.795256e-09\n", + "0 10000 2 U235 3.614917e-01 2.135233e-03\n", + "1 10000 2 U238 6.741607e-07 3.924924e-09\n", "2 10000 2 O16 0.000000e+00 0.000000e+00" ] }, @@ -1071,18 +1071,18 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU235\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t8.06e-03 +/- 3.55e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t3.62e-01 +/- 5.67e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t8.05e-03 +/- 3.35e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.61e-01 +/- 5.91e-01%\n", "\n", "\tNuclide =\tU238\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.34e-03 +/- 5.93e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.63e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.37e-03 +/- 5.78e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.82e-01%\n", "\n", "\tNuclide =\tO16\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t0.00e+00 +/- nan%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t0.00e+00 +/- nan%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t0.00e+00 +/- 0.00e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t0.00e+00 +/- 0.00e+00%\n", "\n", "\n", "\n" @@ -1193,16 +1193,16 @@ " 10000\n", " 1\n", " U235\n", - " 0.074860\n", - " 0.000303\n", + " 0.074734\n", + " 0.000325\n", " \n", " \n", " 1\n", " 10000\n", " 1\n", " U238\n", - " 0.005952\n", - " 0.000035\n", + " 0.005977\n", + " 0.000034\n", " \n", " \n", " 2\n", @@ -1218,8 +1218,8 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "0 10000 1 U235 0.074860 0.000303\n", - "1 10000 1 U238 0.005952 0.000035\n", + "0 10000 1 U235 0.074734 0.000325\n", + "1 10000 1 U238 0.005977 0.000034\n", "2 10000 1 O16 0.000000 0.000000" ] }, @@ -1300,127 +1300,133 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.854370\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.801922\tres = 1.521E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.761745\tres = 6.349E-02\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.732366\tres = 5.029E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.711073\tres = 3.869E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.696554\tres = 2.912E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.687670\tres = 2.044E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.683465\tres = 1.277E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.683124\tres = 6.142E-03\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.685943\tres = 7.897E-04\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.691322\tres = 4.180E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.698746\tres = 7.873E-03\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.707777\tres = 1.076E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.718039\tres = 1.295E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.729218\tres = 1.452E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.741045\tres = 1.559E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.753296\tres = 1.624E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.765784\tres = 1.655E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.778355\tres = 1.659E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.790879\tres = 1.643E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.803253\tres = 1.610E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.815394\tres = 1.566E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.827235\tres = 1.513E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.838724\tres = 1.453E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.849823\tres = 1.390E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.860502\tres = 1.324E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.870744\tres = 1.258E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.880535\tres = 1.191E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.889869\tres = 1.125E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.898747\tres = 1.061E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.907172\tres = 9.985E-03\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.915150\tres = 9.382E-03\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.922692\tres = 8.802E-03\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.929810\tres = 8.248E-03\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.936517\tres = 7.720E-03\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.942827\tres = 7.219E-03\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.948756\tres = 6.744E-03\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.954321\tres = 6.295E-03\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.959539\tres = 5.871E-03\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.964424\tres = 5.472E-03\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.968995\tres = 5.096E-03\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.973268\tres = 4.744E-03\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.977258\tres = 4.413E-03\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.980981\tres = 4.104E-03\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.984453\tres = 3.814E-03\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.987689\tres = 3.543E-03\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.990701\tres = 3.289E-03\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.993505\tres = 3.053E-03\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.996112\tres = 2.832E-03\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.998536\tres = 2.627E-03\n", - "[ NORMAL ] Iteration 50:\tk_eff = 1.000787\tres = 2.435E-03\n", - "[ NORMAL ] Iteration 51:\tk_eff = 1.002878\tres = 2.257E-03\n", - "[ NORMAL ] Iteration 52:\tk_eff = 1.004818\tres = 2.091E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 1.006618\tres = 1.937E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.008287\tres = 1.793E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.009834\tres = 1.660E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.011268\tres = 1.536E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.012595\tres = 1.421E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.013824\tres = 1.314E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.014962\tres = 1.215E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.016015\tres = 1.123E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.016988\tres = 1.038E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.017889\tres = 9.595E-04\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.018721\tres = 8.864E-04\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.019490\tres = 8.187E-04\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.020201\tres = 7.560E-04\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.020857\tres = 6.980E-04\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.021464\tres = 6.443E-04\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.022024\tres = 5.947E-04\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.022540\tres = 5.488E-04\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.023017\tres = 5.063E-04\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.023457\tres = 4.670E-04\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.023863\tres = 4.308E-04\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.024238\tres = 3.972E-04\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.024583\tres = 3.663E-04\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.024902\tres = 3.376E-04\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.025195\tres = 3.112E-04\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.025466\tres = 2.868E-04\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.025715\tres = 2.643E-04\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.025945\tres = 2.435E-04\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.026157\tres = 2.244E-04\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.026352\tres = 2.067E-04\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.026531\tres = 1.904E-04\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.026697\tres = 1.753E-04\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.026849\tres = 1.614E-04\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.026989\tres = 1.487E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.027118\tres = 1.368E-04\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.027237\tres = 1.260E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.027346\tres = 1.159E-04\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.027447\tres = 1.067E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.027540\tres = 9.821E-05\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.027625\tres = 9.040E-05\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.027703\tres = 8.316E-05\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.027775\tres = 7.652E-05\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.027842\tres = 7.039E-05\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.027903\tres = 6.480E-05\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.027959\tres = 5.959E-05\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.028011\tres = 5.479E-05\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.028058\tres = 5.043E-05\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.028102\tres = 4.633E-05\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.028142\tres = 4.265E-05\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.028180\tres = 3.921E-05\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.028214\tres = 3.605E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.028245\tres = 3.315E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.028273\tres = 3.047E-05\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.028300\tres = 2.800E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.028324\tres = 2.575E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.028346\tres = 2.368E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.028367\tres = 2.176E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.028386\tres = 2.003E-05\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.028403\tres = 1.837E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.028419\tres = 1.690E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.028434\tres = 1.553E-05\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.028447\tres = 1.426E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.028459\tres = 1.309E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.028471\tres = 1.202E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.028481\tres = 1.107E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.028491\tres = 1.015E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.823582\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.780361\tres = 1.940E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.739500\tres = 6.545E-02\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.710868\tres = 5.284E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.689663\tres = 3.926E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.675035\tres = 3.007E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.665831\tres = 2.137E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.661179\tres = 1.377E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.660309\tres = 7.167E-03\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.662566\tres = 1.972E-03\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.667383\tres = 3.708E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.674274\tres = 7.412E-03\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.682821\tres = 1.043E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.692664\tres = 1.276E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.703499\tres = 1.449E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.715063\tres = 1.571E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.727136\tres = 1.650E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.739531\tres = 1.694E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.752091\tres = 1.710E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.764686\tres = 1.703E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.777208\tres = 1.679E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.789567\tres = 1.642E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.801692\tres = 1.595E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.813525\tres = 1.540E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.825022\tres = 1.480E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.836147\tres = 1.417E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.846876\tres = 1.352E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.857190\tres = 1.287E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.867079\tres = 1.221E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.876536\tres = 1.157E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.885559\tres = 1.094E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.894153\tres = 1.032E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.902320\tres = 9.731E-03\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.910071\tres = 9.161E-03\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.917414\tres = 8.614E-03\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.924362\tres = 8.092E-03\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.930926\tres = 7.595E-03\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.937121\tres = 7.122E-03\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.942961\tres = 6.674E-03\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.948460\tres = 6.250E-03\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.953633\tres = 5.849E-03\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.958495\tres = 5.471E-03\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.963061\tres = 5.114E-03\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.967346\tres = 4.779E-03\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.971364\tres = 4.463E-03\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.975128\tres = 4.166E-03\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.978653\tres = 3.888E-03\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.981952\tres = 3.627E-03\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.985037\tres = 3.382E-03\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.987921\tres = 3.152E-03\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.990615\tres = 2.937E-03\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.993131\tres = 2.736E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.995479\tres = 2.548E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.997670\tres = 2.373E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 0.999713\tres = 2.208E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.001618\tres = 2.055E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.003393\tres = 1.912E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.005046\tres = 1.778E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.006586\tres = 1.654E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.008019\tres = 1.537E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.009352\tres = 1.429E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.010593\tres = 1.328E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.011747\tres = 1.234E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.012820\tres = 1.146E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.013818\tres = 1.065E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.014745\tres = 9.887E-04\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.015606\tres = 9.179E-04\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.016406\tres = 8.522E-04\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.017149\tres = 7.909E-04\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.017839\tres = 7.340E-04\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.018480\tres = 6.811E-04\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.019074\tres = 6.319E-04\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.019626\tres = 5.862E-04\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.020138\tres = 5.437E-04\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.020613\tres = 5.042E-04\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.021054\tres = 4.676E-04\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.021462\tres = 4.335E-04\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.021841\tres = 4.019E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.022193\tres = 3.725E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.022518\tres = 3.453E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.022820\tres = 3.200E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.023100\tres = 2.965E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.023359\tres = 2.748E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.023600\tres = 2.546E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.023822\tres = 2.358E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.024028\tres = 2.185E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.024219\tres = 2.023E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.024396\tres = 1.874E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.024560\tres = 1.735E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.024712\tres = 1.607E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.024852\tres = 1.488E-04\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.024983\tres = 1.378E-04\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.025103\tres = 1.275E-04\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.025215\tres = 1.181E-04\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.025318\tres = 1.093E-04\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.025413\tres = 1.012E-04\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.025502\tres = 9.364E-05\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.025584\tres = 8.666E-05\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.025659\tres = 8.020E-05\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.025729\tres = 7.422E-05\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.025794\tres = 6.868E-05\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.025854\tres = 6.355E-05\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.025910\tres = 5.880E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.025961\tres = 5.440E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.026009\tres = 5.033E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.026053\tres = 4.656E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.026093\tres = 4.307E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.026131\tres = 3.984E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.026166\tres = 3.685E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.026198\tres = 3.409E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.026228\tres = 3.153E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.026255\tres = 2.916E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.026281\tres = 2.697E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.026304\tres = 2.494E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.026326\tres = 2.307E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.026346\tres = 2.133E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.026365\tres = 1.973E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.026382\tres = 1.824E-05\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.026398\tres = 1.687E-05\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.026413\tres = 1.560E-05\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.026426\tres = 1.442E-05\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.026439\tres = 1.333E-05\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.026451\tres = 1.233E-05\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.026461\tres = 1.140E-05\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.026471\tres = 1.054E-05\n" ] } ], @@ -1452,9 +1458,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.028263\n", - "openmoc keff = 1.028491\n", - "bias [pcm]: 22.8\n" + "openmc keff = 1.025806\n", + "openmoc keff = 1.026471\n", + "bias [pcm]: 66.5\n" ] } ], @@ -1562,7 +1568,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 43, @@ -1571,9 +1577,9 @@ }, { "data": { - "image/png": "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\nSUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1613,7 +1619,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 6d2665566b..42cfdd06c5 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -328,16 +328,19 @@ class Library(object): @delayed_groups.setter def delayed_groups(self, delayed_groups): - cv.check_type('delayed groups', delayed_groups, list, int) - cv.check_greater_than('num delayed groups', len(delayed_groups), 0) + if delayed_groups != None: - # Check that the groups are within [1, MAX_DELAYED_GROUPS] - for group in delayed_groups: - cv.check_greater_than('delayed group', group, 0) - cv.check_less_than('delayed group', group, - openmc.mgxs.MAX_DELAYED_GROUPS, equality=True) + cv.check_type('delayed groups', delayed_groups, list, int) + cv.check_greater_than('num delayed groups', len(delayed_groups), 0) - self._delayed_groups = delayed_groups + # Check that the groups are within [1, MAX_DELAYED_GROUPS] + for group in delayed_groups: + cv.check_greater_than('delayed group', group, 0) + cv.check_less_than('delayed group', group, + openmc.mgxs.MAX_DELAYED_GROUPS, + equality=True) + + self._delayed_groups = delayed_groups @correction.setter def correction(self, correction): @@ -508,7 +511,7 @@ class Library(object): ---------- domain : Material or Cell or Universe or Integral The material, cell, or universe object of interest (or its ID) - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission'} + mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', 'delayed-nu-fission', 'chi-delayed', 'beta'} The type of multi-group cross section object to return Returns diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index c01b0b575b..d853ebed34 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -14,6 +14,9 @@ import openmc from openmc.mgxs import MGXS import openmc.checkvalue as cv +if sys.version_info[0] >= 3: + basestring = str + # Supported cross section types MDGXS_TYPES = ['delayed-nu-fission', 'chi-delayed', @@ -102,12 +105,12 @@ class MDGXS(MGXS): are not specified by the user, all nuclides in the spatial domain are included. This attribute is 'sum' if by_nuclide is false. sparse : bool - Whether or not the MDGXS' tallies use SciPy's LIL sparse matrix format + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format for compressed data storage loaded_sp : bool Whether or not a statepoint file has been loaded with tally data derived : bool - Whether or not the MDGXS is merged from one or more other MDGXS + Whether or not the MGXS is merged from one or more other MGXS hdf5_key : str The key used to index multi-group cross sections in an HDF5 data store @@ -165,23 +168,25 @@ class MDGXS(MGXS): @property def num_delayed_groups(self): if self.delayed_groups == None: - return 0 + return 1 else: return len(self.delayed_groups) @delayed_groups.setter def delayed_groups(self, delayed_groups): - cv.check_type('delayed groups', delayed_groups, list, int) - cv.check_greater_than('num delayed groups', len(delayed_groups), 0) + if delayed_groups != None: - # Check that the groups are within [1, MAX_DELAYED_GROUPS] - for group in delayed_groups: - cv.check_greater_than('delayed group', group, 0) - cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS, - equality=True) + cv.check_type('delayed groups', delayed_groups, list, int) + cv.check_greater_than('num delayed groups', len(delayed_groups), 0) - self._delayed_groups = delayed_groups + # Check that the groups are within [1, MAX_DELAYED_GROUPS] + for group in delayed_groups: + cv.check_greater_than('delayed group', group, 0) + cv.check_less_than('delayed group', group, MAX_DELAYED_GROUPS, + equality=True) + + self._delayed_groups = delayed_groups @property def filters(self): @@ -251,12 +256,13 @@ class MDGXS(MGXS): def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', - value='mean', delayed_groups='all', **kwargs): + value='mean', delayed_groups='all', squeeze=True, **kwargs): """Returns an array of multi-delayed-group cross sections. - This method constructs a 2D NumPy array for the requested - multi-delayed-group cross section data data for one or more energy - groups, delayed groups, and subdomains. + This method constructs a 4D NumPy array for the requested + multi-delayed-group cross section data for one or more + subdomains (1st dimension), delayed groups (2nd demension), + energy groups (3rd dimension), and nuclides (4th dimension). Parameters ---------- @@ -280,6 +286,10 @@ class MDGXS(MGXS): A string for the type of value to return. Defaults to 'mean'. delayed_groups : list of int or 'all' Delayed groups of interest. Defaults to 'all'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array this is to be retured. Defaults to + True. Returns ------- @@ -359,25 +369,36 @@ class MDGXS(MGXS): if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + # Eliminate the trivial score dimension + xs = np.squeeze(xs, axis=len(xs.shape) - 1) + xs = np.nan_to_num(xs) + + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + if delayed_groups == 'all': + num_delayed_groups = self.num_delayed_groups + else: + num_delayed_groups = len(delayed_groups) + + # Reshape tally data array with separate axes for domain, energy groups, + # delayed groups, and nuclides + num_subdomains = int(xs.shape[0] / (num_groups * num_delayed_groups)) + new_shape = (num_subdomains, num_delayed_groups, num_groups) + new_shape += xs.shape[1:] + xs = np.reshape(xs, new_shape) + # Reverse data if user requested increasing energy groups since # tally data is stored in order of increasing energies if order_groups == 'increasing': - if groups == 'all': - num_groups = self.num_groups - else: - num_groups = len(groups) + xs = xs[:, :, ::-1, :] - # Reshape tally data array with separate axes for domain and energy - num_subdomains = int(xs.shape[0] / num_groups) - new_shape = (num_subdomains, num_groups) + xs.shape[1:] - xs = np.reshape(xs, new_shape) + if squeeze: + xs = np.squeeze(xs) + xs = np.atleast_1d(xs) - # Reverse energies to align with increasing energy groups - xs = xs[:, ::-1, :] - - # Eliminate trivial dimensions - xs = np.squeeze(xs) - xs = np.atleast_1d(xs) return xs def get_slice(self, nuclides=[], groups=[], delayed_groups=[]): @@ -467,11 +488,11 @@ class MDGXS(MGXS): return slice_xs def merge(self, other): - """Merge another MDGXS with this one + """Merge another MGXS with this one - MDGXS are only mergeable if their energy groups and nuclides are either + MGXS are only mergeable if their energy groups and nuclides are either identical or mutually exclusive. If results have been loaded from a - statepoint, then MDGXS are only mergeable along one and only one of + statepoint, then MGXS are only mergeable along one and only one of energy groups or nuclides. Parameters @@ -718,9 +739,112 @@ class MDGXS(MGXS): """ + if not isinstance(groups, basestring): + cv.check_iterable_type('groups', groups, Integral) + if nuclides != 'all' and nuclides != 'sum': + cv.check_iterable_type('nuclides', nuclides, basestring) if not isinstance(delayed_groups, basestring): cv.check_type('delayed groups', delayed_groups, list, int) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + # Get a Pandas DataFrame from the derived xs tally + if self.by_nuclide and nuclides == 'sum': + + # Use tally summation to sum across all nuclides + query_nuclides = self.get_all_nuclides() + xs_tally = self.xs_tally.summation(nuclides=query_nuclides) + df = xs_tally.get_pandas_dataframe( + distribcell_paths=distribcell_paths) + + # Remove nuclide column since it is homogeneous and redundant + if self.domain_type == 'mesh': + df.drop('nuclide', axis=1, level=0, inplace=True) + else: + df.drop('nuclide', axis=1, inplace=True) + + # If the user requested a specific set of nuclides + elif self.by_nuclide and nuclides != 'all': + xs_tally = self.xs_tally.get_slice(nuclides=nuclides) + df = xs_tally.get_pandas_dataframe( + distribcell_paths=distribcell_paths) + + # If the user requested all nuclides, keep nuclide column in dataframe + else: + df = self.xs_tally.get_pandas_dataframe( + distribcell_paths=distribcell_paths) + + # Remove the score column since it is homogeneous and redundant + if self.domain_type == 'mesh': + df = df.drop('score', axis=1, level=0) + else: + df = df.drop('score', axis=1) + + # Override energy groups bounds with indices + all_groups = np.arange(self.num_groups, 0, -1, dtype=np.int) + all_groups = np.repeat(all_groups, self.num_nuclides) + if 'energy low [MeV]' in df and 'energyout low [MeV]' in df: + df.rename(columns={'energy low [MeV]': 'group in'}, + inplace=True) + in_groups = np.tile(all_groups, int(self.num_subdomains * + self.num_delayed_groups)) + in_groups = np.repeat(in_groups, int(df.shape[0] / in_groups.size)) + df['group in'] = in_groups + del df['energy high [MeV]'] + + df.rename(columns={'energyout low [MeV]': 'group out'}, + inplace=True) + out_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size)) + df['group out'] = out_groups + del df['energyout high [MeV]'] + columns = ['group in', 'group out'] + + elif 'energyout low [MeV]' in df: + df.rename(columns={'energyout low [MeV]': 'group out'}, + inplace=True) + in_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size)) + df['group out'] = in_groups + del df['energyout high [MeV]'] + columns = ['group out'] + + elif 'energy low [MeV]' in df: + df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) + in_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size)) + df['group in'] = in_groups + del df['energy high [MeV]'] + columns = ['group in'] + + # Select out those groups the user requested + if not isinstance(groups, basestring): + if 'group in' in df: + df = df[df['group in'].isin(groups)] + if 'group out' in df: + df = df[df['group out'].isin(groups)] + + # If user requested micro cross sections, divide out the atom densities + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') + densities = np.repeat(densities, len(self.rxn_rate_tally.scores)) + tile_factor = df.shape[0] / len(densities) + df['mean'] /= np.tile(densities, tile_factor) + df['std. dev.'] /= np.tile(densities, tile_factor) + + # Sort the dataframe by domain type id (e.g., distribcell id) and + # energy groups such that data is from fast to thermal + if self.domain_type == 'mesh': + mesh_str = 'mesh {0}'.format(self.domain.id) + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), \ + (mesh_str, 'z')] + columns, inplace=True) + else: + df.sort_values(by=[self.domain_type] + columns, inplace=True) + + return df + + + df = super(MDGXS, self).get_pandas_dataframe(groups, nuclides, xs_type, distribcell_paths) @@ -744,7 +868,7 @@ class ChiDelayed(MDGXS): domain are generated automatically via the :attr:`ChiDelayed.tallies` property, which can then be appended to a :class:`openmc.Tallies` instance. - For post-processing, the :meth:`MDGXS.load_from_statepoint` will pull in the + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a :class:`openmc.StatePoint` instance. The derived multi-group cross section can then be obtained from the :attr:`ChiDelayed.xs_tally` property. @@ -961,7 +1085,7 @@ class ChiDelayed(MDGXS): # Slice nu-fission-out tally along energyout filter delayed_nu_fission_out = slice_xs.tallies['delayed-nu-fission-out'] - tally_slice = delayed_nu_fission_out.get_slice\ + tally_slice = delayed_nu_fission_out.get_slice \ (filters=filters, filter_bins=filter_bins) slice_xs._tallies['delayed-nu-fission-out'] = tally_slice @@ -980,8 +1104,8 @@ class ChiDelayed(MDGXS): Parameters ---------- - other : openmc.mdgxs.MDGXS - MDGXS to merge with this one + other : openmc.mdgxs.MGXS + MGXS to merge with this one Returns ------- @@ -1030,12 +1154,13 @@ class ChiDelayed(MDGXS): def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', - value='mean', delayed_groups='all', **kwargs): + value='mean', delayed_groups='all', squeeze=True, **kwargs): """Returns an array of the delayed fission spectrum. - This method constructs a 2D NumPy array for the requested multi-group - and multi-delayed group cross section data data for one or more energy - groups and subdomains. + This method constructs a 4D NumPy array for the requested + multi-delayed-group cross section data for one or more + subdomains (1st dimension), delayed groups (2nd demension), + energy groups (3rd dimension), and nuclides (4th dimension). Parameters ---------- @@ -1052,13 +1177,17 @@ class ChiDelayed(MDGXS): cross section summed over all nuclides. Defaults to 'all'. xs_type: {'macro', 'micro'} This parameter is not relevant for chi but is included here to - mirror the parent MDGXS.get_xs(...) class method + mirror the parent MGXS.get_xs(...) class method order_groups: {'increasing', 'decreasing'} Return the cross section indexed according to increasing or decreasing energy groups (decreasing or increasing energies). Defaults to 'increasing'. value : {'mean', 'std_dev', 'rel_err'} A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array this is to be retured. Defaults to + True. Returns ------- @@ -1162,27 +1291,37 @@ class ChiDelayed(MDGXS): xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) + # Eliminate the trivial score dimension + xs = np.squeeze(xs, axis=len(xs.shape) - 1) + xs = np.nan_to_num(xs) + + # Reshape tally data array with separate axes for domain and energy + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + if delayed_groups == 'all': + num_delayed_groups = self.num_delayed_groups + else: + num_delayed_groups = len(delayed_groups) + + # Reshape tally data array with separate axes for domain, energy groups, + # delayed groups, and nuclides + num_subdomains = int(xs.shape[0] / (num_groups * num_delayed_groups)) + new_shape = (num_subdomains, num_delayed_groups, num_groups) + new_shape += xs.shape[1:] + xs = np.reshape(xs, new_shape) + # Reverse data if user requested increasing energy groups since # tally data is stored in order of increasing energies if order_groups == 'increasing': + xs = xs[:, :, ::-1, :] - # Reshape tally data array with separate axes for domain and energy - if groups == 'all': - num_groups = self.num_groups - else: - num_groups = len(groups) - num_subdomains = int(xs.shape[0] / num_groups) - new_shape = (num_subdomains, num_groups) + xs.shape[1:] - xs = np.reshape(xs, new_shape) - - # Reverse energies to align with increasing energy groups - xs = xs[:, ::-1, :] - - # Eliminate trivial dimensions + if squeeze: xs = np.squeeze(xs) xs = np.atleast_1d(xs) - xs = np.nan_to_num(xs) return xs @@ -1199,7 +1338,7 @@ class DelayedNuFissionXS(MDGXS): :attr:`DelayedNuFissionXS.tallies` property, which can then be appended to a :class:`openmc.Tallies` instance. - For post-processing, the :meth:`MDGXS.load_from_statepoint` will pull in the + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a :class:`openmc.StatePoint` instance. The derived multi-group cross section can then be obtained from the :attr:`DelayedNuFissionXS.xs_tally` property. @@ -1315,7 +1454,7 @@ class Beta(MDGXS): generated automatically via the :attr:`Beta.tallies` property, which can then be appended to a :class:`openmc.Tallies` instance. - For post-processing, the :meth:`MDGXS.load_from_statepoint` will pull in the + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the necessary data to compute multi-group cross sections from a :class:`openmc.StatePoint` instance. The derived multi-group cross section can then be obtained from the :attr:`Beta.xs_tally` property. diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 4fc4edb38e..5a4c5866b7 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -724,11 +724,13 @@ class MGXS(object): def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', - value='mean', **kwargs): + value='mean', squeeze=True, **kwargs): r"""Returns an array of multi-group cross sections. - This method constructs a 2D NumPy array for the requested multi-group - cross section data data for one or more energy groups and subdomains. + This method constructs a 3D NumPy array for the requested + multi-group cross section data for one or more subdomains + (1st dimension), energy groups (2nd dimension), and nuclides + (3rd dimension). Parameters ---------- @@ -750,6 +752,10 @@ class MGXS(object): Defaults to 'increasing'. value : {'mean', 'std_dev', 'rel_err'} A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array this is to be retured. Defaults to + True. Returns ------- @@ -819,25 +825,29 @@ class MGXS(object): if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + # Eliminate the trivial score dimension + xs = np.squeeze(xs, axis=len(xs.shape) - 1) + xs = np.nan_to_num(xs) + + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + # Reshape tally data array with separate axes for domain and energy + num_subdomains = int(xs.shape[0] / num_groups) + new_shape = (num_subdomains, num_groups) + xs.shape[1:] + xs = np.reshape(xs, new_shape) + # Reverse data if user requested increasing energy groups since # tally data is stored in order of increasing energies if order_groups == 'increasing': - if groups == 'all': - num_groups = self.num_groups - else: - num_groups = len(groups) - - # Reshape tally data array with separate axes for domain and energy - num_subdomains = int(xs.shape[0] / num_groups) - new_shape = (num_subdomains, num_groups) + xs.shape[1:] - xs = np.reshape(xs, new_shape) - - # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, :] - # Eliminate trivial dimensions - xs = np.squeeze(xs) - xs = np.atleast_1d(xs) + if squeeze: + xs = np.squeeze(xs) + xs = np.atleast_1d(xs) + return xs def get_condensed_xs(self, coarse_groups): @@ -1350,8 +1360,6 @@ class MGXS(object): std_dev = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], xs_type=xs_type, value='std_dev', row_column=row_column) - average = average.squeeze() - std_dev = std_dev.squeeze() # Add MGXS results data to the HDF5 group nuclide_group.require_dataset('average', dtype=np.float64, @@ -1517,14 +1525,14 @@ class MGXS(object): if 'energy low [MeV]' in df and 'energyout low [MeV]' in df: df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) - in_groups = np.tile(all_groups, df.shape[0] / all_groups.size) - in_groups = np.repeat(in_groups, df.shape[0] / in_groups.size) + in_groups = np.tile(all_groups, int(self.num_subdomains)) + in_groups = np.repeat(in_groups, int(df.shape[0] / in_groups.size)) df['group in'] = in_groups del df['energy high [MeV]'] df.rename(columns={'energyout low [MeV]': 'group out'}, inplace=True) - out_groups = np.tile(all_groups, df.shape[0] / all_groups.size) + out_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size)) df['group out'] = out_groups del df['energyout high [MeV]'] columns = ['group in', 'group out'] @@ -1532,14 +1540,14 @@ class MGXS(object): elif 'energyout low [MeV]' in df: df.rename(columns={'energyout low [MeV]': 'group out'}, inplace=True) - in_groups = np.tile(all_groups, df.shape[0] / all_groups.size) + in_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size)) df['group out'] = in_groups del df['energyout high [MeV]'] columns = ['group out'] elif 'energy low [MeV]' in df: df.rename(columns={'energy low [MeV]': 'group in'}, inplace=True) - in_groups = np.tile(all_groups, df.shape[0] / all_groups.size) + in_groups = np.tile(all_groups, int(df.shape[0] / all_groups.size)) df['group in'] = in_groups del df['energy high [MeV]'] columns = ['group in'] @@ -1570,6 +1578,7 @@ class MGXS(object): (mesh_str, 'z')] + columns, inplace=True) else: df.sort_values(by=[self.domain_type] + columns, inplace=True) + return df def get_units(self, xs_type='macro'): @@ -1700,11 +1709,13 @@ class MatrixMGXS(MGXS): def get_xs(self, in_groups='all', out_groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', - row_column='inout', value='mean', **kwargs): + row_column='inout', value='mean', squeeze=True, **kwargs): """Returns an array of multi-group cross sections. - This method constructs a 2D NumPy array for the requested multi-group - matrix data for one or more energy groups and subdomains. + This method constructs a 4D NumPy array for the requested + multi-group cross section data for one or more subdomains + (1st dimension), energy groups in (2nd dimension), energy groups out + (3rd dimension), and nuclides (4th dimension). Parameters ---------- @@ -1733,6 +1744,10 @@ class MatrixMGXS(MGXS): Defaults to 'inout'. value : {'mean', 'std_dev', 'rel_err'} A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array this is to be retured. Defaults to + True. Returns ------- @@ -1804,8 +1819,6 @@ class MatrixMGXS(MGXS): filter_bins=filter_bins, nuclides=query_nuclides, value=value) - xs = np.nan_to_num(xs) - # Divide by atom number densities for microscopic cross sections if xs_type == 'micro': if self.by_nuclide: @@ -1815,33 +1828,36 @@ class MatrixMGXS(MGXS): if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + # Eliminate the trivial score dimension + xs = np.squeeze(xs, axis=len(xs.shape) - 1) + xs = np.nan_to_num(xs) + + if in_groups == 'all': + num_in_groups = self.num_groups + else: + num_in_groups = len(in_groups) + + if out_groups == 'all': + num_out_groups = self.num_groups + else: + num_out_groups = len(out_groups) + + # Reshape tally data array with separate axes for domain and energy + num_subdomains = int(xs.shape[0] / (num_in_groups * num_out_groups)) + new_shape = (num_subdomains, num_in_groups, num_out_groups) + new_shape += xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Transpose the matrix if requested by user + if row_column == 'outin': + xs = np.swapaxes(xs, 1, 2) + # Reverse data if user requested increasing energy groups since # tally data is stored in order of increasing energies if order_groups == 'increasing': - if in_groups == 'all': - num_in_groups = self.num_groups - else: - num_in_groups = len(in_groups) - if out_groups == 'all': - num_out_groups = self.num_groups - else: - num_out_groups = len(out_groups) - - # Reshape tally data array with separate axes for domain and energy - num_subdomains = int(xs.shape[0] / - (num_in_groups * num_out_groups)) - new_shape = (num_subdomains, num_in_groups, num_out_groups) - new_shape += xs.shape[1:] - xs = np.reshape(xs, new_shape) - - # Transpose the matrix if requested by user - if row_column == 'outin': - xs = np.swapaxes(xs, 1, 2) - - # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, ::-1, :] - # Eliminate trivial dimensions + if squeeze: xs = np.squeeze(xs) xs = np.atleast_2d(xs) @@ -3518,11 +3534,13 @@ class ScatterMatrixXS(MatrixMGXS): def get_xs(self, in_groups='all', out_groups='all', subdomains='all', nuclides='all', moment='all', xs_type='macro', order_groups='increasing', - row_column='inout', value='mean'): + row_column='inout', value='mean', squeeze=True): r"""Returns an array of multi-group cross sections. - This method constructs a 2D NumPy array for the requested scattering - matrix data data for one or more energy groups and subdomains. + This method constructs a 5D NumPy array for the requested + multi-group cross section data for one or more subdomains + (1st dimension), energy groups in (2nd dimension), energy groups out + (3rd dimension), nuclides (4th dimension), and moments (5th dimension). NOTE: The scattering moments are not multiplied by the :math:`(2l+1)/2` prefactor in the expansion of the scattering source into Legendre @@ -3558,6 +3576,10 @@ class ScatterMatrixXS(MatrixMGXS): Defaults to 'inout'. value : {'mean', 'std_dev', 'rel_err'} A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array this is to be retured. Defaults to + False. Returns ------- @@ -3636,8 +3658,6 @@ class ScatterMatrixXS(MatrixMGXS): filter_bins=filter_bins, nuclides=query_nuclides, value=value) - xs = np.nan_to_num(xs) - # Divide by atom number densities for microscopic cross sections if xs_type == 'micro': if self.by_nuclide: @@ -3647,32 +3667,35 @@ class ScatterMatrixXS(MatrixMGXS): if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + # Convert and nans to zero + xs = np.nan_to_num(xs) + + if in_groups == 'all': + num_in_groups = self.num_groups + else: + num_in_groups = len(in_groups) + + if out_groups == 'all': + num_out_groups = self.num_groups + else: + num_out_groups = len(out_groups) + + # Reshape tally data array with separate axes for domain and energy + num_subdomains = int(xs.shape[0] / (num_in_groups * num_out_groups)) + new_shape = (num_subdomains, num_in_groups, num_out_groups) + new_shape += xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Transpose the scattering matrix if requested by user + if row_column == 'outin': + xs = np.swapaxes(xs, 1, 2) + # Reverse data if user requested increasing energy groups since # tally data is stored in order of increasing energies if order_groups == 'increasing': - if in_groups == 'all': - num_in_groups = self.num_groups - else: - num_in_groups = len(in_groups) - if out_groups == 'all': - num_out_groups = self.num_groups - else: - num_out_groups = len(out_groups) - - # Reshape tally data array with separate axes for domain and energy - num_subdomains = int(xs.shape[0] / (num_in_groups * num_out_groups)) - new_shape = (num_subdomains, num_in_groups, num_out_groups) - new_shape += xs.shape[1:] - xs = np.reshape(xs, new_shape) - - # Transpose the scattering matrix if requested by user - if row_column == 'outin': - xs = np.swapaxes(xs, 1, 2) - - # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, ::-1, :] - # Eliminate trivial dimensions + if squeeze: xs = np.squeeze(xs) xs = np.atleast_2d(xs) @@ -3729,7 +3752,7 @@ class ScatterMatrixXS(MatrixMGXS): if self.legendre_order > 0: # Insert a column corresponding to the Legendre moments moments = ['P{}'.format(i) for i in range(self.legendre_order+1)] - moments = np.tile(moments, df.shape[0] / len(moments)) + moments = np.tile(moments, int(df.shape[0] / len(moments))) df['moment'] = moments # Place the moment column before the mean column @@ -4513,11 +4536,13 @@ class Chi(MGXS): def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', - value='mean', **kwargs): + value='mean', squeeze=True, **kwargs): """Returns an array of the fission spectrum. - This method constructs a 2D NumPy array for the requested multi-group - cross section data data for one or more energy groups and subdomains. + This method constructs a 3D NumPy array for the requested + multi-group cross section data for one or more subdomains + (1st dimension), energy groups (2nd dimension), and nuclides + (3rd dimension). Parameters ---------- @@ -4539,6 +4564,10 @@ class Chi(MGXS): Defaults to 'increasing'. value : {'mean', 'std_dev', 'rel_err'} A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array this is to be retured. Defaults to + True. Returns ------- @@ -4630,27 +4659,29 @@ class Chi(MGXS): xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) + # Eliminate the trivial score dimension + xs = np.squeeze(xs, axis=len(xs.shape) - 1) + xs = np.nan_to_num(xs) + + # Reshape tally data array with separate axes for domain and energy + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + num_subdomains = int(xs.shape[0] / num_groups) + new_shape = (num_subdomains, num_groups) + xs.shape[1:] + xs = np.reshape(xs, new_shape) + # Reverse data if user requested increasing energy groups since # tally data is stored in order of increasing energies if order_groups == 'increasing': - - # Reshape tally data array with separate axes for domain and energy - if groups == 'all': - num_groups = self.num_groups - else: - num_groups = len(groups) - num_subdomains = int(xs.shape[0] / num_groups) - new_shape = (num_subdomains, num_groups) + xs.shape[1:] - xs = np.reshape(xs, new_shape) - - # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, :] - # Eliminate trivial dimensions + if squeeze: xs = np.squeeze(xs) xs = np.atleast_1d(xs) - xs = np.nan_to_num(xs) return xs def get_pandas_dataframe(self, groups='all', nuclides='all', diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index a3e849d6c5..551229e6b5 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -9,6 +9,7 @@ from testing_harness import PyAPITestHarness from input_set import PinCellInputSet import openmc import openmc.mgxs +import numpy as np class MGXSTestHarness(PyAPITestHarness): @@ -24,7 +25,7 @@ class MGXSTestHarness(PyAPITestHarness): 20.]) # Initialize a six-delayed-group structure - delayed_groups = range(1,7) + delayed_groups = list(range(1,7)) # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py index 3103e07382..fe1ca9c0f8 100644 --- a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -9,6 +9,7 @@ from testing_harness import PyAPITestHarness from input_set import AssemblyInputSet import openmc import openmc.mgxs +import numpy as np class MGXSTestHarness(PyAPITestHarness): @@ -23,7 +24,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) # Initialize a six-delayed-group structure - delayed_groups = range(1,7) + delayed_groups = list(range(1,7)) # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index 4359b27937..b4d7e5dbbe 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -25,7 +25,7 @@ class MGXSTestHarness(PyAPITestHarness): 20.]) # Initialize a six-delayed-group structure - delayed_groups = range(1,7) + delayed_groups = list(range(1,7)) # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) diff --git a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py index bcf2400108..750274b1fd 100644 --- a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py +++ b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py @@ -8,6 +8,7 @@ sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness import openmc import openmc.mgxs +import numpy as np class MGXSTestHarness(PyAPITestHarness): @@ -19,7 +20,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) # Initialize a six-delayed-group structure - delayed_groups = range(1,7) + delayed_groups = list(range(1,7)) # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index 54650970f1..3563f141b1 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -29,49 +29,49 @@ 1 10000 1 total 0.385188 0.026946 0 10000 2 total 0.412389 0.015425 material group in group out nuclide moment mean std. dev. -1 10000 1 1 total P0 0.016482 0.004502 -3 10000 1 1 total P1 -0.010499 0.010438 -5 10000 1 1 total P2 -0.000768 0.000768 -7 10000 1 1 total P3 -0.000171 0.000172 9 10000 1 1 total P0 -0.000207 0.000149 11 10000 1 1 total P1 0.000234 0.000128 13 10000 1 1 total P2 0.051870 0.006983 15 10000 1 1 total P3 0.009478 0.002234 +8 10000 1 2 total P0 0.000989 0.000482 +10 10000 1 2 total P1 -0.000103 0.000184 +12 10000 1 2 total P2 0.384199 0.027001 +14 10000 1 2 total P3 0.020069 0.002846 +1 10000 2 1 total P0 0.016482 0.004502 +3 10000 2 1 total P1 -0.010499 0.010438 +5 10000 2 1 total P2 -0.000768 0.000768 +7 10000 2 1 total P3 -0.000171 0.000172 0 10000 2 2 total P0 0.411465 0.015245 2 10000 2 2 total P1 0.006371 0.010551 4 10000 2 2 total P2 0.000925 0.000925 6 10000 2 2 total P3 0.000494 0.000494 -8 10000 2 2 total P0 0.000989 0.000482 -10 10000 2 2 total P1 -0.000103 0.000184 -12 10000 2 2 total P2 0.384199 0.027001 -14 10000 2 2 total P3 0.020069 0.002846 material group in group out nuclide moment mean std. dev. -1 10000 1 1 total P0 0.016482 0.004502 -3 10000 1 1 total P1 -0.010499 0.010438 -5 10000 1 1 total P2 -0.000768 0.000768 -7 10000 1 1 total P3 -0.000171 0.000172 9 10000 1 1 total P0 -0.000207 0.000149 11 10000 1 1 total P1 0.000234 0.000128 13 10000 1 1 total P2 0.051870 0.006983 15 10000 1 1 total P3 0.009478 0.002234 +8 10000 1 2 total P0 0.000989 0.000482 +10 10000 1 2 total P1 -0.000103 0.000184 +12 10000 1 2 total P2 0.384199 0.027001 +14 10000 1 2 total P3 0.020069 0.002846 +1 10000 2 1 total P0 0.016482 0.004502 +3 10000 2 1 total P1 -0.010499 0.010438 +5 10000 2 1 total P2 -0.000768 0.000768 +7 10000 2 1 total P3 -0.000171 0.000172 0 10000 2 2 total P0 0.411465 0.015245 2 10000 2 2 total P1 0.006371 0.010551 4 10000 2 2 total P2 0.000925 0.000925 6 10000 2 2 total P3 0.000494 0.000494 -8 10000 2 2 total P0 0.000989 0.000482 -10 10000 2 2 total P1 -0.000103 0.000184 -12 10000 2 2 total P2 0.384199 0.027001 -14 10000 2 2 total P3 0.020069 0.002846 material group in group out nuclide mean std. dev. -1 10000 1 1 total 1.0 1.414214 3 10000 1 1 total 1.0 0.078516 +2 10000 1 2 total 1.0 0.687184 +1 10000 2 1 total 1.0 1.414214 0 10000 2 2 total 1.0 0.041130 -2 10000 2 2 total 1.0 0.687184 material group in group out nuclide mean std. dev. -1 10000 1 1 total 0.454366 0.027426 3 10000 1 1 total 0.020142 0.003149 +2 10000 1 2 total 0.000000 0.000000 +1 10000 2 1 total 0.454366 0.027426 0 10000 2 2 total 0.000000 0.000000 -2 10000 2 2 total 0.000000 0.000000 material group out nuclide mean std. dev. 1 10000 1 total 1.0 0.046071 0 10000 2 total 0.0 0.000000 @@ -154,49 +154,49 @@ 1 10001 1 total 0.310121 0.033788 0 10001 2 total 0.296264 0.043792 material group in group out nuclide moment mean std. dev. -1 10001 1 1 total P0 -0.011214 0.016180 -3 10001 1 1 total P1 -0.003270 0.007329 -5 10001 1 1 total P2 0.000000 0.000000 -7 10001 1 1 total P3 0.000000 0.000000 9 10001 1 1 total P0 0.000000 0.000000 11 10001 1 1 total P1 0.000000 0.000000 13 10001 1 1 total P2 0.038230 0.008484 15 10001 1 1 total P3 0.007964 0.003732 +8 10001 1 2 total P0 0.000000 0.000000 +10 10001 1 2 total P1 0.000000 0.000000 +12 10001 1 2 total P2 0.310121 0.033788 +14 10001 1 2 total P3 0.020745 0.004696 +1 10001 2 1 total P0 -0.011214 0.016180 +3 10001 2 1 total P1 -0.003270 0.007329 +5 10001 2 1 total P2 0.000000 0.000000 +7 10001 2 1 total P3 0.000000 0.000000 0 10001 2 2 total P0 0.296264 0.043792 2 10001 2 2 total P1 0.008837 0.011504 4 10001 2 2 total P2 0.000000 0.000000 6 10001 2 2 total P3 0.000000 0.000000 -8 10001 2 2 total P0 0.000000 0.000000 -10 10001 2 2 total P1 0.000000 0.000000 -12 10001 2 2 total P2 0.310121 0.033788 -14 10001 2 2 total P3 0.020745 0.004696 material group in group out nuclide moment mean std. dev. -1 10001 1 1 total P0 -0.011214 0.016180 -3 10001 1 1 total P1 -0.003270 0.007329 -5 10001 1 1 total P2 0.000000 0.000000 -7 10001 1 1 total P3 0.000000 0.000000 9 10001 1 1 total P0 0.000000 0.000000 11 10001 1 1 total P1 0.000000 0.000000 13 10001 1 1 total P2 0.038230 0.008484 15 10001 1 1 total P3 0.007964 0.003732 +8 10001 1 2 total P0 0.000000 0.000000 +10 10001 1 2 total P1 0.000000 0.000000 +12 10001 1 2 total P2 0.310121 0.033788 +14 10001 1 2 total P3 0.020745 0.004696 +1 10001 2 1 total P0 -0.011214 0.016180 +3 10001 2 1 total P1 -0.003270 0.007329 +5 10001 2 1 total P2 0.000000 0.000000 +7 10001 2 1 total P3 0.000000 0.000000 0 10001 2 2 total P0 0.296264 0.043792 2 10001 2 2 total P1 0.008837 0.011504 4 10001 2 2 total P2 0.000000 0.000000 6 10001 2 2 total P3 0.000000 0.000000 -8 10001 2 2 total P0 0.000000 0.000000 -10 10001 2 2 total P1 0.000000 0.000000 -12 10001 2 2 total P2 0.310121 0.033788 -14 10001 2 2 total P3 0.020745 0.004696 material group in group out nuclide mean std. dev. -1 10001 1 1 total 0.0 0.000000 3 10001 1 1 total 1.0 0.108779 +2 10001 1 2 total 0.0 0.000000 +1 10001 2 1 total 0.0 0.000000 0 10001 2 2 total 1.0 0.142427 -2 10001 2 2 total 0.0 0.000000 material group in group out nuclide mean std. dev. -1 10001 1 1 total 0.0 0.0 3 10001 1 1 total 0.0 0.0 +2 10001 1 2 total 0.0 0.0 +1 10001 2 1 total 0.0 0.0 0 10001 2 2 total 0.0 0.0 -2 10001 2 2 total 0.0 0.0 material group out nuclide mean std. dev. 1 10001 1 total 0.0 0.0 0 10001 2 total 0.0 0.0 @@ -279,49 +279,49 @@ 1 10002 1 total 0.671269 0.026186 0 10002 2 total 2.035388 0.258060 material group in group out nuclide moment mean std. dev. -1 10002 1 1 total P0 0.509941 0.051236 -3 10002 1 1 total P1 0.024988 0.008312 -5 10002 1 1 total P2 0.000400 0.000401 -7 10002 1 1 total P3 0.000214 0.000215 9 10002 1 1 total P0 0.008758 0.000926 11 10002 1 1 total P1 -0.003785 0.000817 13 10002 1 1 total P2 0.381167 0.016243 15 10002 1 1 total P3 0.009148 0.003889 +8 10002 1 2 total P0 0.031368 0.001728 +10 10002 1 2 total P1 -0.002568 0.001014 +12 10002 1 2 total P2 0.639901 0.024709 +14 10002 1 2 total P3 0.152392 0.008156 +1 10002 2 1 total P0 0.509941 0.051236 +3 10002 2 1 total P1 0.024988 0.008312 +5 10002 2 1 total P2 0.000400 0.000401 +7 10002 2 1 total P3 0.000214 0.000215 0 10002 2 2 total P0 2.034945 0.257800 2 10002 2 2 total P1 0.111175 0.013020 4 10002 2 2 total P2 0.000443 0.000445 6 10002 2 2 total P3 0.000320 0.000321 -8 10002 2 2 total P0 0.031368 0.001728 -10 10002 2 2 total P1 -0.002568 0.001014 -12 10002 2 2 total P2 0.639901 0.024709 -14 10002 2 2 total P3 0.152392 0.008156 material group in group out nuclide moment mean std. dev. -1 10002 1 1 total P0 0.509941 0.051236 -3 10002 1 1 total P1 0.024988 0.008312 -5 10002 1 1 total P2 0.000400 0.000401 -7 10002 1 1 total P3 0.000214 0.000215 9 10002 1 1 total P0 0.008758 0.000926 11 10002 1 1 total P1 -0.003785 0.000817 13 10002 1 1 total P2 0.381167 0.016243 15 10002 1 1 total P3 0.009148 0.003889 +8 10002 1 2 total P0 0.031368 0.001728 +10 10002 1 2 total P1 -0.002568 0.001014 +12 10002 1 2 total P2 0.639901 0.024709 +14 10002 1 2 total P3 0.152392 0.008156 +1 10002 2 1 total P0 0.509941 0.051236 +3 10002 2 1 total P1 0.024988 0.008312 +5 10002 2 1 total P2 0.000400 0.000401 +7 10002 2 1 total P3 0.000214 0.000215 0 10002 2 2 total P0 2.034945 0.257800 2 10002 2 2 total P1 0.111175 0.013020 4 10002 2 2 total P2 0.000443 0.000445 6 10002 2 2 total P3 0.000320 0.000321 -8 10002 2 2 total P0 0.031368 0.001728 -10 10002 2 2 total P1 -0.002568 0.001014 -12 10002 2 2 total P2 0.639901 0.024709 -14 10002 2 2 total P3 0.152392 0.008156 material group in group out nuclide mean std. dev. -1 10002 1 1 total 1.0 1.414214 3 10002 1 1 total 1.0 0.038609 +2 10002 1 2 total 1.0 0.067667 +1 10002 2 1 total 1.0 1.414214 0 10002 2 2 total 1.0 0.135929 -2 10002 2 2 total 1.0 0.067667 material group in group out nuclide mean std. dev. -1 10002 1 1 total 0.0 0.0 3 10002 1 1 total 0.0 0.0 +2 10002 1 2 total 0.0 0.0 +1 10002 2 1 total 0.0 0.0 0 10002 2 2 total 0.0 0.0 -2 10002 2 2 total 0.0 0.0 material group out nuclide mean std. dev. 1 10002 1 total 0.0 0.0 0 10002 2 total 0.0 0.0 diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py index 5ca90875d4..5dee9c4076 100644 --- a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -9,6 +9,7 @@ from testing_harness import PyAPITestHarness from input_set import PinCellInputSet import openmc import openmc.mgxs +import numpy as np class MGXSTestHarness(PyAPITestHarness): @@ -24,7 +25,7 @@ class MGXSTestHarness(PyAPITestHarness): 20.]) # Initialize a six-delayed-group structure - delayed_groups = range(1,7) + delayed_groups = list(range(1,7)) # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 9671ad7857..d3e3235ccc 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1 @@ -cb61db73f66b40ed1a59a59e6f4fd52678e9dc41c7bb8ad327989233c3b8d78a71d84c3cb8ad9bc8b1585b319e1f1d66a8667e7cad2ead4cc574f415f8f7a35d \ No newline at end of file +8142ae4e107002a835999e4ace85c17376f262a7059fc224f3756a2de19aba6ca4c4fa14ca2085c87d7729aa8d6d6f78fdae21ac6dfe33ca303449c769076074 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py index da613d78a1..ac24334e48 100644 --- a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py +++ b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py @@ -9,6 +9,7 @@ from testing_harness import PyAPITestHarness from input_set import PinCellInputSet import openmc import openmc.mgxs +import numpy as np class MGXSTestHarness(PyAPITestHarness): From 6669e437e21b2bbbc88a142352245b0fb9a54419 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 11 Aug 2016 08:02:44 -0400 Subject: [PATCH 38/49] removed unnecessary imports and fixed comments --- .../pythonapi/examples/mgxs-part-iii.ipynb | 3 +++ openmc/mgxs/mdgxs.py | 18 ++---------------- openmc/mgxs/mgxs.py | 12 ++++-------- .../test_mgxs_library_condense.py | 1 - .../test_mgxs_library_distribcell.py | 1 - .../test_mgxs_library_mesh.py | 1 - .../test_mgxs_library_no_nuclides.py | 1 - .../test_mgxs_library_nuclides.py | 1 - 8 files changed, 9 insertions(+), 29 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 9d2b89c512..af9f2878fe 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -552,6 +552,9 @@ "* `ChiPrompt` (`\"chi prompt\"`)\n", "* `InverseVelocity` (`\"inverse-velocity\"`)\n", "* `PromptNuFissionXS` (`\"prompt-nu-fission\"`)\n", + "* `DelayedNuFissionXS` (`\"delayed-nu-fission\"`)\n", + "* `ChiDelayed` (`\"chi-delayed\"`)\n", + "* `Beta` (`\"beta\"`)\n", "\n", "In this case, let's create the multi-group cross sections needed to run an OpenMOC simulation to verify the accuracy of our cross sections. In particular, we will define `\"transport\"`, `\"nu-fission\"`, `'\"fission\"`, `\"nu-scatter matrix\"` and `\"chi\"` cross sections for our `Library`.\n", "\n", diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index d853ebed34..0a2f898c07 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -288,8 +288,7 @@ class MDGXS(MGXS): Delayed groups of interest. Defaults to 'all'. squeeze : bool A boolean representing whether to eliminate the extra dimensions - of the multi-dimensional array this is to be retured. Defaults to - True. + of the multi-dimensional array to be returned. Defaults to True. Returns ------- @@ -844,18 +843,6 @@ class MDGXS(MGXS): return df - - df = super(MDGXS, self).get_pandas_dataframe(groups, nuclides, xs_type, - distribcell_paths) - - # Select out those delayed groups the user requested - if not isinstance(delayed_groups, basestring): - if 'delayedgroup' in df: - df = df[df['delayedgroup'].isin(delayed_groups)] - - return df - - class ChiDelayed(MDGXS): r"""The delayed fission spectrum. @@ -1186,8 +1173,7 @@ class ChiDelayed(MDGXS): A string for the type of value to return. Defaults to 'mean'. squeeze : bool A boolean representing whether to eliminate the extra dimensions - of the multi-dimensional array this is to be retured. Defaults to - True. + of the multi-dimensional array to be returned. Defaults to True. Returns ------- diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 5a4c5866b7..0a247aeab2 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -754,8 +754,7 @@ class MGXS(object): A string for the type of value to return. Defaults to 'mean'. squeeze : bool A boolean representing whether to eliminate the extra dimensions - of the multi-dimensional array this is to be retured. Defaults to - True. + of the multi-dimensional array to be returned. Defaults to True. Returns ------- @@ -1746,8 +1745,7 @@ class MatrixMGXS(MGXS): A string for the type of value to return. Defaults to 'mean'. squeeze : bool A boolean representing whether to eliminate the extra dimensions - of the multi-dimensional array this is to be retured. Defaults to - True. + of the multi-dimensional array to be returned. Defaults to True. Returns ------- @@ -3578,8 +3576,7 @@ class ScatterMatrixXS(MatrixMGXS): A string for the type of value to return. Defaults to 'mean'. squeeze : bool A boolean representing whether to eliminate the extra dimensions - of the multi-dimensional array this is to be retured. Defaults to - False. + of the multi-dimensional array to be returned. Defaults to True. Returns ------- @@ -4566,8 +4563,7 @@ class Chi(MGXS): A string for the type of value to return. Defaults to 'mean'. squeeze : bool A boolean representing whether to eliminate the extra dimensions - of the multi-dimensional array this is to be retured. Defaults to - True. + of the multi-dimensional array to be returned. Defaults to True. Returns ------- diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index 551229e6b5..d3f2bc08e8 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -9,7 +9,6 @@ from testing_harness import PyAPITestHarness from input_set import PinCellInputSet import openmc import openmc.mgxs -import numpy as np class MGXSTestHarness(PyAPITestHarness): diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py index fe1ca9c0f8..940985d916 100644 --- a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -9,7 +9,6 @@ from testing_harness import PyAPITestHarness from input_set import AssemblyInputSet import openmc import openmc.mgxs -import numpy as np class MGXSTestHarness(PyAPITestHarness): diff --git a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py index 750274b1fd..1f31bd5660 100644 --- a/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py +++ b/tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py @@ -8,7 +8,6 @@ sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness import openmc import openmc.mgxs -import numpy as np class MGXSTestHarness(PyAPITestHarness): diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py index 5dee9c4076..edd41f1c56 100644 --- a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -9,7 +9,6 @@ from testing_harness import PyAPITestHarness from input_set import PinCellInputSet import openmc import openmc.mgxs -import numpy as np class MGXSTestHarness(PyAPITestHarness): diff --git a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py index ac24334e48..da613d78a1 100644 --- a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py +++ b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py @@ -9,7 +9,6 @@ from testing_harness import PyAPITestHarness from input_set import PinCellInputSet import openmc import openmc.mgxs -import numpy as np class MGXSTestHarness(PyAPITestHarness): From 7def0d51ce27eb58ec3d4581da4fff9aa1a1c6a7 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Thu, 11 Aug 2016 08:27:22 -0400 Subject: [PATCH 39/49] updated mdgxs notebooks and added them to documentation --- .../pythonapi/examples/mdgxs-part-i.ipynb | 60 +++++++++---------- .../pythonapi/examples/mdgxs-part-ii.ipynb | 50 +++++++++------- docs/source/pythonapi/index.rst | 12 +--- 3 files changed, 57 insertions(+), 65 deletions(-) diff --git a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb index b180141834..5d65a0a202 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-i.ipynb @@ -337,7 +337,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are ready to generate multi-group cross sections! First, let's define a 100-energy-group structure and 1-energy-group structure using the built-in `EnergyGroups` class. We will also create a 6-delayed-group structure using the built-in `DelayedGroups` class." + "Now we are ready to generate multi-group cross sections! First, let's define a 100-energy-group structure and 1-energy-group structure using the built-in `EnergyGroups` class. We will also create a 6-delayed-group list." ] }, { @@ -356,14 +356,14 @@ "one_group = mgxs.EnergyGroups()\n", "one_group.group_edges = np.array([energy_groups.group_edges[0], energy_groups.group_edges[-1]])\n", "\n", - "delayed_groups = range(1,7)" + "delayed_groups = list(range(1,7))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can now use the `EnergyGroups` and `DelayedGroups` objects, along with our previously created materials and geometry, to instantiate some `MGXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of the generic and abstract `MGXS` class:\n", + "We can now use the `EnergyGroups` object and delayed group list, along with our previously created materials and geometry, to instantiate some `MGXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of the generic and abstract `MGXS` class:\n", "\n", "* `TotalXS`\n", "* `TransportXS`\n", @@ -404,7 +404,6 @@ "prompt_nu_fission = mgxs.PromptNuFissionXS(domain=cell, groups=energy_groups, by_nuclide=True)\n", "chi_delayed = mgxs.ChiDelayed(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", "delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", - "#delayed_nu_fission = mgxs.DelayedNuFissionXS(domain=cell, energy_groups=energy_groups, by_nuclide=True)\n", "beta = mgxs.Beta(domain=cell, energy_groups=energy_groups, delayed_groups=delayed_groups, by_nuclide=True)\n", "\n", "chi_prompt.nuclides = ['U235', 'Pu239']\n", @@ -581,8 +580,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", - " Date/Time: 2016-08-10 15:46:45\n", + " Git SHA1: c21ceb0aea4abc243b84106576c4f9010f608d0b\n", + " Date/Time: 2016-08-11 08:23:44\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -669,20 +668,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 7.7400E-01 seconds\n", - " Reading cross sections = 4.7500E-01 seconds\n", - " Total time in simulation = 8.9596E+01 seconds\n", - " Time in transport only = 8.9573E+01 seconds\n", - " Time in inactive batches = 4.8730E+00 seconds\n", - " Time in active batches = 8.4723E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 2.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 7.2000E-02 seconds\n", - " Total time elapsed = 9.0468E+01 seconds\n", - " Calculation Rate (inactive) = 10260.6 neutrons/second\n", - " Calculation Rate (active) = 2360.63 neutrons/second\n", + " Total time for initialization = 6.1600E-01 seconds\n", + " Reading cross sections = 3.6500E-01 seconds\n", + " Total time in simulation = 8.3297E+01 seconds\n", + " Time in transport only = 8.3256E+01 seconds\n", + " Time in inactive batches = 4.4890E+00 seconds\n", + " Time in active batches = 7.8808E+01 seconds\n", + " Time synchronizing fission bank = 1.6000E-02 seconds\n", + " Sampling source sites = 1.1000E-02 seconds\n", + " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Time accumulating tallies = 5.0000E-03 seconds\n", + " Total time for finalization = 8.0000E-02 seconds\n", + " Total time elapsed = 8.4019E+01 seconds\n", + " Calculation Rate (inactive) = 11138.3 neutrons/second\n", + " Calculation Rate (active) = 2537.81 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -797,17 +796,12 @@ { "data": { "text/plain": [ - "array([[[[ 5.14239169e-06, 1.16429778e-06]],\n", - "\n", - " [[ 2.65434434e-05, 7.58244504e-06]],\n", - "\n", - " [[ 2.53406770e-05, 5.73814391e-06]],\n", - "\n", - " [[ 5.68158884e-05, 1.04761254e-05]],\n", - "\n", - " [[ 2.32937121e-05, 5.45676114e-06]],\n", - "\n", - " [[ 9.75765501e-06, 1.65156185e-06]]]])" + "array([[ 5.14239169e-06, 1.16429778e-06],\n", + " [ 2.65434434e-05, 7.58244504e-06],\n", + " [ 2.53406770e-05, 5.73814391e-06],\n", + " [ 5.68158884e-05, 1.04761254e-05],\n", + " [ 2.32937121e-05, 5.45676114e-06],\n", + " [ 9.75765501e-06, 1.65156185e-06]])" ] }, "execution_count": 18, @@ -1257,7 +1251,7 @@ "data": { "image/png": "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\nA9YuP+yww7jqqqtYtGgRCxYsWHtHyra09eRV78RSKQWXv6PNbdPivpL6kJVwzo+I5WnxdcCHI2JP\nslLND1sdsVkHGTMGli+vulmntnx5dh22zr333svixYt59dVXueaaa+jVq1eL25911llrb1d8+eWX\nr7fum9/8JtOmTePXv/51xX179uzJyJEjueyyy3j55ZcB+K//+i/22msv9txzTw488ECOOeYYNtts\nM7bZZpvaXGAF9a4KmwsMLnm9AzC/bJs5wI7AfEmbAP0i4i1Jc9PyDfaVtClZUrk5Iu5t2iAi/lmy\n/S+Aic0FNqbk09/Y2EhjY2PuizKrh6InlSad6TraU3VVsxgqlE569+69XolhwYIFa59ff/31XH/9\n9RvsM3r0aB588EGeeOIJ+vTp0+I5V65cySuvvMLuu+9Or169uPrqq7n66qsB+PnPf87ee++dq+pt\n8uTJTJ48uep2G8hzN7C2PoBNgP8GhgA9gReAXcu2ORu4Lj0fRdauArAb8Hzab1g6TtONyW4ia6Qv\nP992Jc8vAG5rJq7qt1Az28iyO7RnjyLqqPg789/z0KFD45FHHtlg+YknnhgnnnhirFy5MqZMmRID\nBw6Mk08+udnjfO9734vhw4fHggULNlj39NNPx5NPPhnvv/9+rFixIi6//PLo27dvvPHGGxERMW/e\nvJg/f35ERDz11FOx4447xsMPP9xi3M29p+S8g+TGuA3wocDfgFnARWnZWOBz6fnmwB1p/dPA0JJ9\nL04JZTowIi07AFidktTzwFTg0FiXcF5K6/4fsG0zMbX4ppp1BCeWtp63875hw4YNq5hYXnnlldhv\nv/2ioaEhPve5z8X555/fYmKRFL169YqGhoa1tyu+7LLLIiLi8ccfjz322CP69u0bAwYMiMbGxnjy\nySfX7vvEE0/E0KFDo3fv3rHLLrvE7bffXjXu9iYW35rYrJMorZko4sezo+L3rYlrz7cmNjOzTqVq\n472k/YGTgE8C2wMrgL8AvwVuiYgldY3QzMwKpcWqMEm/I+uJdS/wZ+AfQC9gZ+Ag4AiyRvT76h9q\n7bgqzDojV4W19byuCqu19laFVUssAyNiUZUAqm7T2TixWGfkxNLW8zqx1Fpd21iaEoak3mneLyTt\nLOlISZuVbmNmZgb5G++fAHpJGgQ8AnwR+FW9gjIzs+LKO/JeEfGupNOAayLiCknP1zMwM7M8hgwZ\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1320,7 +1314,7 @@ "data": { "image/png": "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\nvPBCdR+hwWCIQFYrhnSlsrKS4cOHM2rUKI4++uigtO+//54dO3bw8MMP06VLl8DxIUOGsHz5cjZv\n3szjjz/OHXfcwT//+c+w5T/33HOMHj2a4447jkMPPRTLsoJ6OH//+9+5//77KSgooHHjxtx6663M\nnDkzbFkXX3wxRxxxBACXXnopnTt35sMPPwTg8ssv55lnDob6nj59OpdffnngGtdeey2nnXYaIsKI\nESNo0KAB77//Pu+//z6VlZWMGTOGevXqcfHFF3P66afX4EmmLyW9SwJbTbB8VmAzGEIx5qpJol69\nelRUVAQdq6iooH79+gCcf/75vPPOO4gIjz32GMOG2WEsVJXhw4fToEEDHnroobBlH3rooVxzzTUc\ndthhrFixgpYtW3LssccG0s8880zGjh3L888/z5AhQ6qcv2HDBk477WCI7cLCwsD3zZs3s2fPHrp1\n6xY4duDAgYhDY0899RT3339/YKL7hx9+YMuWLQB0796dvLw8Fi5cSKtWrfj6668ZOHAgYLs0eeqp\npwL3qKpUVFSwYYMd56lt27ZB13HLmA3UxETVTenC0lory5B5ZLVisKzqDQVVN380OnToQFlZGccc\nc9Aj+TfffBPYnzdvXtjzrrzySrZs2cK8efOoV69exPL379/Pnj17WL9+PS1btqySHs1Ms3Xr1kHm\npuXl5YE5hpYtW9KoUSO+/PJLWrduHfUe16xZw9VXX82CBQs488wzATjllFOCrjty5EimT59Oq1at\nuOSSS8jNzQWgffv2jB8/nttuu61KuYsWLWL9+vVVrtWpU6eo8hgMBm+YoaQkMWTIECZOnMj69etR\nVd58803mzJnDJZdcEvGca6+9lhUrVvDKK68EKlA/b775Jp999hkHDhxg586d3HzzzTRv3pzjjjsO\ngFdeeYXt27cD8OGHHzJlyhQuvPDCsNcZPHgwTz75JMuXL2fPnj1B8wciwlVXXcVNN93E5s2bAVi/\nfj2vv/56lXJ++OEHcnJyaNmyJQcOHOCJJ57giy++CMozfPhwXnrpJZ555pnAMBLAVVddxaOPPhoY\ndvrhhx+YN28eP/zwA2eeeSaHHHIIDz30EPv37+fFF18M5DMYDPFjFEOSmDBhAmeddRY9e/akefPm\n3HrrrcyYMYPjjz8+bP41a9bw+OOP89lnn3HEEUcE1iL4x/a3b9/OsGHDaNq0KZ07d2b16tXMnz8/\n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\nalQgII2f77//nh9//DHQGvczZMgQrrnmGo444gjef/99Lr74Ypo1a8aQIUPCXkNEuPPOO6lfvz5n\nn302/fviYcdKAAAgAElEQVT359lnn2X8+PEADBo0iB49egBQv359nn32WZYuXUqjRo0oLCxk3Lhx\nTJ8+PaAY3OE4hwwZwt13301JSQn169fn5z//Obm5uaxatYqTT7Y9rfTv35+f/exnANx1110UFBSw\nfv162rZtC1S/x5XOhBvWSfc4C4nGDFXFh9cIbk2Bbc73ggTJklXUq1ePioqKoGMVFRXUr18fgPPP\nP5933nkHEeGxxx4LOJNTVYYPH06DBg0C8ZlDOfTQQ7nmmms47LDDWLFiBS1btuTYY48NpJ955pmM\nHTuW559/PqJiaNasGQ0bNgzsFxYWsmHDhsC+O6Tnli1bqKioCFJEhYWFQSE9jzjiiCD5AFq2bBl0\nbPfug61kd/mNGzemefPmbNiwIaAYsp10r/dMxZ3aeFEMk4BPRWQBIMDZQPxR61OASN3Qmu5Xhw4d\nOlBWVsYxxxwTOPbNN98E9ufNC28dfOWVV7JlyxbmzZtHvXr1Ipa/f/9+9uzZw/r164MqYD+xXEH4\nex7+SnzNmjWcdNJJQef7admyJfXr16e8vDyggMrLy+OqxN0hQ3fv3s22bduySinEaw2U6b6SYmFc\nZsRHVMUg9r//30AP7HkGAX6vqt9GO88QmyFDhjBx4kROPPFE2rRpw1tvvcWcOXMCQzXhuPbaa1mx\nYgVvvvkmubm5QWlvvvkmLVu25OSTT2b37t3cfvvtNG/enOOOOw6AV155hbPPPpumTZvy4YcfMmXK\nFO65556I11JVSkpKuOuuu3j//feZO3dulTkLPzk5OQwePJjx48czbdo0tm7dyv3338/vfve7qOVH\nY968ebz33nucdtpp/PGPf6RHjx60adMGgFatWrF69WqOPPLIqGWkM/FWxqWu+Ds1qRcTvbLaVNyp\nTVTFoKoqIi+rajfglTqSKSuYMGECJSUl9OzZk+3bt3PUUUcxY8YMjj/++LD516xZw+OPP07Dhg0D\nwzLuYabt27dz4403sn79eg499FBOP/105s+fH1Ags2bN4oorrmDfvn20a9eO2267jeHDh0eUr3Xr\n1jRr1ow2bdrQuHFjHnvsscDEczhz0SlTpnDjjTdy5JFHcuihh3L11VcH5hfCEVpG6P5ll12GZVks\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb index eb2471e222..3dea15c501 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb @@ -456,7 +456,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -492,7 +492,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are ready to generate multi-group cross sections! First, let's define 20-energy-group, 1-energy-group, and 6-delayed-group structures using the built-in `EnergyGroups` and `DelayedGroups` classes." + "Now we are ready to generate multi-group cross sections! First, let's define 20-energy-group, 1-energy-group, and 6-delayed-group structures." ] }, { @@ -511,8 +511,8 @@ "one_group = openmc.mgxs.EnergyGroups()\n", "one_group.group_edges = np.array([energy_groups.group_edges[0], energy_groups.group_edges[-1]])\n", "\n", - "# Instantiate a 6-group DelayedGroups object\n", - "delayed_groups = range(1,7)" + "# Instantiate a 6-delayed-group list\n", + "delayed_groups = list(range(1,7))" ] }, { @@ -607,8 +607,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", - " Date/Time: 2016-08-10 15:48:40\n", + " Git SHA1: c21ceb0aea4abc243b84106576c4f9010f608d0b\n", + " Date/Time: 2016-08-11 08:25:23\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -713,20 +713,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.2300E-01 seconds\n", - " Reading cross sections = 3.3300E-01 seconds\n", - " Total time in simulation = 7.3672E+01 seconds\n", - " Time in transport only = 7.3396E+01 seconds\n", - " Time in inactive batches = 5.0250E+00 seconds\n", - " Time in active batches = 6.8647E+01 seconds\n", - " Time synchronizing fission bank = 1.3000E-02 seconds\n", - " Sampling source sites = 0.0000E+00 seconds\n", - " SEND/RECV source sites = 3.0000E-03 seconds\n", - " Time accumulating tallies = 2.0800E-01 seconds\n", + " Total time for initialization = 5.7200E-01 seconds\n", + " Reading cross sections = 3.6100E-01 seconds\n", + " Total time in simulation = 7.5373E+01 seconds\n", + " Time in transport only = 7.5119E+01 seconds\n", + " Time in inactive batches = 5.1640E+00 seconds\n", + " Time in active batches = 7.0209E+01 seconds\n", + " Time synchronizing fission bank = 5.0000E-03 seconds\n", + " Sampling source sites = 3.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 2.1900E-01 seconds\n", " Total time for finalization = 7.0000E-03 seconds\n", - " Total time elapsed = 7.4227E+01 seconds\n", - " Calculation Rate (inactive) = 4975.12 neutrons/second\n", - " Calculation Rate (active) = 1456.73 neutrons/second\n", + " Total time elapsed = 7.5973E+01 seconds\n", + " Calculation Rate (inactive) = 4841.21 neutrons/second\n", + " Calculation Rate (active) = 1424.32 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -832,11 +832,17 @@ "output_type": "stream", "text": [ "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1944: RuntimeWarning: invalid value encountered in true_divide\n", + " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n", "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1945: RuntimeWarning: invalid value encountered in true_divide\n", + " other_rel_err = data['other']['std. dev.'] / data['other']['mean']\n", "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1946: RuntimeWarning: divide by zero encountered in true_divide\n", + " new_tally._mean = data['self']['mean'] / data['other']['mean']\n", "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1946: RuntimeWarning: invalid value encountered in true_divide\n", + " new_tally._mean = data['self']['mean'] / data['other']['mean']\n", "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1938: RuntimeWarning: invalid value encountered in true_divide\n", - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1939: RuntimeWarning: invalid value encountered in true_divide\n" + " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n", + "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1939: RuntimeWarning: invalid value encountered in true_divide\n", + " other_rel_err = data['other']['std. dev.'] / data['other']['mean']\n" ] }, { @@ -1249,7 +1255,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1260,7 +1266,7 @@ "data": { "image/png": "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\nDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3OAw5mZmZmZmZm1uU8\n4GBmZmZmZmZmXc4DDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3O\nAw5mZmZmZmZm1uU84GBmZmZmZmZmXc4DDusJSZMlnZlx2ycl7d/dfapqcz9JT/Vkm2ZmPck5bGZW\nPmexWXPxgEMdkuZLelXSy5Kel3S9pJ0y1jpIaouyO9CI9N91ZdZfYmbWGOdwt1gnc7jqZ+FlSTeV\n3Sez3sJZ3C3WySwGkHSKpCck/UvSo5KGlt0na24ecKgvgEMiYnNgB+AfwIUZa8U6HCTNTlJrCW32\nAS4A7u7pts16Medwkyohh1f9LKSP0T3cvllv5ixuUj2dxZI+C3wGOCgiNgU+DPxfT/bB1j0ecOiY\nACLidWAqsOuqFVJfSedKWiDpGUk/krShpI2BG4EdJf0zHQ3uL+ldkv4iaamkpyVdmP4RW6xj0h6S\n7pP0kqQpwEZV6z8s6YG0vTskvb3Ofur2S9JFks6t2n6apC+mz3eQNFXSPyT9XdIXKrbbSNLPJb0g\n6RHgXZ28n1GS5qb9+KGkGZKOTdeNS9/D+ZKeB8Yr8Y101P3ZtK3N0u3XGk2vnDInabyk30iakv77\n/FXS7p185F8GbgbmdrKdmXUt57BzeNUuOllvZt3HWdzLs1iSgG8CX4qIxwAi4smIeLGj92PmAYcM\n0sD8BHBXxeJzgKHA7ul/dwS+GRGvAgcBiyNis/SbmGeBNuC/gH7A3sD+wIkF+7MBcA1wWbq/3wAf\nq1i/JzAJOD5d/xNgWlpXraN+XQaMrdjv1un6K9PQuR54gGS0+wDgFEkfSjefALwxfRwIjOvg/Wyd\nvofTgK2Bx9K+VHo38DdgW+DbJKOrnwL2A94EbAb8sGL7zkbTDwV+DWwF/Aq4VnVGiSUNTts7Ex/w\nmpXCObxqv70yh1NXSFoi6aYMgxNm1g2cxav22xuzeED6eLukhenAyoRO9m0GEeFHjQfwJPAy8AKw\nHFgE7Fax/l/AGyte7w08kT7fD1jYyf5PAa4u2Lf3AYuqlt0JnJk+vxiYWLV+LvC+ive2f5Z+AY8C\nB6TPTwJuSJ+/G5hfVXs6MCl9/nfgQxXrjq/3mQCfBO6sWrYQODZ9Pq5GW7cC/1nx+i3AMpJBtLU+\n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\neuPVxnRsyZiOLXtfXzzliVq7DchEZX2NMUvHOIJsgsgeRwPXR0Q38Likm4E3A0tqfjgzsyGkH+Zw\nMDOzJjmL81MaejdwJ5Ci68FaP07W176qu9y5StTd+sY3ljrXL+I9hWu+1H5yqXM92r1P8XPFfxWu\nmfqtEwvXAHzg5FmFa8ZFuZVVfhUdxWs+/P5S5/rsles1HDZ0/kFnFK55501zCtcAfDr+t3DNR9uu\nISKK/Q+ZSIpbYkyuff9R89c7T/rL/31kk0b+mWy82VEV3b2QdALwhog4QdJE4PCI6Jk08jLgLWRD\nKW4ARkdESPoh8ERETKpxzYcCp0XEARXbTgX2iIjjJW2ermNCRNyb/9vYsJTJYYB2rWq803rnKpff\n83b+h8I1v4x3lzrXf7SfX7hmzROvKH6erc5uvFMN519SPEfGHzez1LneyW8L18yOw0qd6zefKP7n\n5umXTm68U5WvvH9K4RqAg352beGa4+KSwjWv4U0c2HZWqSwuksNQO4utdUrdE5fI4excxbO4TA5D\nuSz+j/avFa5Z88SrCtcAfHar4vdzF15yaqlzlcniMjkM5bJ4sHIYymVxmRyGclncynvijY17OJhZ\nbkNtvFqOMWYTWHc4BcB3gGmSehoYpr6cGxvM7OXFQyrMzFrPWZyfGxzMLLcm1xzu9/FqjcaYRcR6\nM5tHxPP1zmFmNtQ1m8NmZtY8Z3F+bnAws9w8Xs3MrLWcw2Zmrecszs8NDmaWW7Prv5uZWXOcw2Zm\nrecszs/flJnl5vFqZmat5Rw2M2s9Z3F+bnAws9wcrmZmreUcNjNrPWdxfm5wMLPcPF7NzKy1nMNm\nZq3nLM7PDQ5mlpvHq5mZtZZz2Mys9ZzF+fmbMrPc3H3MzKy1nMNmZq3nLM7PDQ5mltsqrzlsZtZS\nzmEzs9ZzFufnBgczy83dx8zMWss5bGbWes7i/PxNmVlu7j5mZtZazmEzs9ZzFufnBgczy83hambW\nWs5hM7PWcxbnNygNDjfv8qZC+4+PGaXOc7WOKlzTdt0fSp1Ls6NwTXeXSp1r2zX3FK5ZOfPvC9d0\nn1S4BID2X36ocM0XDvxyqXN9QV8rXNM2rtz3fsH3Ti9c0/3L4uc5jVuLFwG/VkeJqmtKnauHw3XD\nddsu+xSu+UBcXbhmto4sXAPQNv++wjW6pHgOQ7ks3p6HCtc8celOhWsAuo8rXtP+mwmlzvXl/b9Y\n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\n+8b/K1zTdUrx/wY/ru8XrgH4Il8uXLOHlhERxS+S7P/ltuXVoxVq695hi5rnSctiXsDaZTG/Urn2\nu6RNyVaQeBNp7feIWJJqzyBbxWI1a5fFfDvwG+AesiEWAZyZllRD0jTgloi4uOo6jgbOBLqBn0bE\nGcW+jQ1LmRwG0CXFs6fr7aX+82KbrurOLo1t2fZsqXM9pNcXrml/sPj3d96unylcA/BZ/W/hmrZa\nzW05aFLx/Onq+mSpc02Pmqss9ukT515euKbrtHL/DR5b4ns/my8WrtmUA3m1ZpXK4iI5DPWz2Fqj\n1D1xiRyGcllcJoehXBYPVg5DuSwuk8NQLovL5DCUy+LBymEol8VlchjgLM4qXLOrHm/pPfHGxEMq\nzCy37q7mIqO/136PiJuh/jTBEXFsne0zgBm5L9zMbIhoNofNzKx5zuL8/E2ZWX7uGmZm1lrOYTOz\n1nMW5+YGBzPLz+FqZtZazmEzs9ZzFufmBgczy2/NRj0Ezcys9ZzDZmat5yzOzQ0OZpbfmlZfgJnZ\nRs45bGbWes7i3Lwsppnl92LOh5mZDYy8OewsNjMbOE3msKRDJS2SdL+k02q8P1zSTEmLJd0iaVTF\ne2ek7QslHdLomJKmSXpQ0l2S5knaJ23fQ9LvJb0oaVLF/ptKui3tf4+k3gney3APBzPLb3WrL8DM\nbCPnHDYza70mslhSG3AhcBDwGDBX0jURsahit+OBpyJitKQJwLnAREl7ka3oticwErhR0mhADY55\nSkRcXXUpTwL/DhxeuTEiVkk6ICJekNQO3Czp5xFxe5nP6x4OZpZfV86HmZkNjLw57Cw2Mxs4zeXw\nOGBxRDwcEauBmcD4qn3GA5em57OAA9Pzw4CZEbEmIpYAi9PxGh1zvb/3R8QTEXEnNQaIRMQL6emm\nZJ0Uou6nacANDmaW35qcDzMzGxh5c9hZbGY2cJrL4R2BpRWvl6VtNfeJiC7gGUlb16h9NG1rdMyz\nJc2XdJ6kTRp9PEltku4ClgM3RMTcRjX1uMHBzPLzTa6ZWWv1Q4PDAI0dnipphaQ/VB3r3LTvfElX\nStoybd8vjQ/ueRyeto+UdJOkBWns8EllvyozswHTXA7XWuKiugdBvX2Kbgc4PSL2BPYDtgHWy/31\nCiO6I+JNZMM23pKGcpTiORzMLD83JpiZtVaTOTwQY4cjIoBpwLeBH1adcg7ZzW63pK8AZ6THPcC+\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 4371ad0c45..8d5638b6da 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -27,6 +27,8 @@ Example Jupyter Notebooks examples/mgxs-part-ii examples/mgxs-part-iii examples/mgxs-part-iv + examples/mdgxs-part-i + examples/mdgxs-part-ii examples/nuclear-data ------------------------------------ @@ -257,16 +259,6 @@ Energy Groups openmc.mgxs.EnergyGroups -Delayed Groups -------------- - -.. autosummary:: - :toctree: generated - :nosignatures: - :template: myclass.rst - - openmc.mgxs.DelayedGroups - Multi-group Cross Sections -------------------------- From 5b219fd6aa36f58cc5313b259b6f098ccf35a2d1 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 12 Aug 2016 11:32:31 -0500 Subject: [PATCH 40/49] Fix doc build for metaclassed Polynomials --- docs/source/conf.py | 3 +++ openmc/data/function.py | 13 +++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 4aa000f386..1baea2b03c 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -28,6 +28,9 @@ MOCK_MODULES = ['numpy', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'h5py', 'pandas', 'opencg'] sys.modules.update((mod_name, MagicMock()) for mod_name in MOCK_MODULES) +import numpy as np +np.polynomial.Polynomial = MagicMock + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the diff --git a/openmc/data/function.py b/openmc/data/function.py index 768250259f..88d27ce93d 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -1,6 +1,7 @@ from abc import ABCMeta, abstractmethod from collections import Iterable, Callable from numbers import Real, Integral +from six import with_metaclass import numpy as np @@ -10,14 +11,11 @@ INTERPOLATION_SCHEME = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', 4: 'log-linear', 5: 'log-log'} -class Function1D(object): +class Function1D(with_metaclass(ABCMeta, object)): """A function of one independent variable with HDF5 support.""" - def __init__(self): pass - - def __call__(self): - raise NotImplemented('Subclasses of Function1D should overwrite the ' - '__call__ and to_hdf5 methods') + @abstractmethod + def __call__(self): pass @abstractmethod def to_hdf5(self, group, name='xy'): @@ -31,8 +29,7 @@ class Function1D(object): Name of the dataset to create """ - raise NotImplemented('Subclasses of Function1D should overwrite the ' - '__call__ and to_hdf5 methods') + pass @classmethod def from_hdf5(cls, dataset): From f4e0525a053741fda2e507aa2ca7954e7d1d73d9 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 12 Aug 2016 14:16:46 -0500 Subject: [PATCH 41/49] Remove six dependency --- openmc/data/function.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openmc/data/function.py b/openmc/data/function.py index 88d27ce93d..a7397e7858 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -1,7 +1,6 @@ from abc import ABCMeta, abstractmethod from collections import Iterable, Callable from numbers import Real, Integral -from six import with_metaclass import numpy as np @@ -11,9 +10,11 @@ INTERPOLATION_SCHEME = {1: 'histogram', 2: 'linear-linear', 3: 'linear-log', 4: 'log-linear', 5: 'log-log'} -class Function1D(with_metaclass(ABCMeta, object)): +class Function1D(object): """A function of one independent variable with HDF5 support.""" + __metaclass__ = ABCMeta + @abstractmethod def __call__(self): pass From c5df6ce146abeee0d83447aa7a1deccf354b9ade Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 12 Aug 2016 16:40:13 -0500 Subject: [PATCH 42/49] Fix mesh filter max iterator check --- src/tally_filter.F90 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/tally_filter.F90 b/src/tally_filter.F90 index c0e1c88534..67d0452847 100644 --- a/src/tally_filter.F90 +++ b/src/tally_filter.F90 @@ -295,8 +295,12 @@ contains search_iter = 0 do while (any(ijk0(:m % n_dimension) < 1) & .or. any(ijk0(:m % n_dimension) > m % dimension)) - if (search_iter == MAX_SEARCH_ITER) call fatal_error("Failed to & - &find a mesh intersection on a tally mesh filter.") + if (search_iter == MAX_SEARCH_ITER) then + call warning("Failed to find a mesh intersection on a tally mesh & + &filter.") + next_bin = NO_BIN_FOUND + return + end if do j = 1, m % n_dimension if (abs(uvw(j)) < FP_PRECISION) then @@ -315,6 +319,8 @@ contains else ijk0(j) = ijk0(j) - 1 end if + + search_iter = search_iter + 1 end do distance = d(j) xyz0 = xyz0 + distance * uvw From aca4578f46327e3978f95b9dcfd99d2610b2fff6 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 12 Aug 2016 17:57:54 -0500 Subject: [PATCH 43/49] Fix Sphinx bullet list error --- docs/source/io_formats/fission_energy.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/source/io_formats/fission_energy.rst b/docs/source/io_formats/fission_energy.rst index 768db56ebb..f80db4569a 100644 --- a/docs/source/io_formats/fission_energy.rst +++ b/docs/source/io_formats/fission_energy.rst @@ -26,7 +26,8 @@ ENDF files with the example, 'U235' or 'Pu239'. Metastable nuclides are appended with an '_m' and their metastable number. For example, 'Am242_m1' -:Datasets: - **data** (*double[][][]*) -- The energy release coefficients. The +:Datasets: + - **data** (*double[][][]*) -- The energy release coefficients. The first axis indexes the component type. The second axis specifies values or uncertainties. The third axis indexes the polynomial order. If the data uses the Sher-Beck format, then the last axis From 328c6a0e886d0011f3e88b03a53028e7119d0250 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sat, 13 Aug 2016 17:40:28 -0500 Subject: [PATCH 44/49] Allow estimator to be set for MGXS --- openmc/mgxs/mgxs.py | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7aa12d0418..b942351556 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -47,6 +47,10 @@ DOMAIN_TYPES = ['cell', 'material', 'mesh'] +ESTIMATOR_TYPES = ['tracklength', + 'collision', + 'analog'] + # Supported domain classes _DOMAINS = (openmc.Cell, openmc.Universe, @@ -102,7 +106,7 @@ class MGXS(object): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section @@ -149,6 +153,7 @@ class MGXS(object): self._rxn_type = None self._by_nuclide = None self._nuclides = None + self._estimator = 'tracklength' self._domain = None self._domain_type = None self._energy_groups = None @@ -250,7 +255,7 @@ class MGXS(object): @property def estimator(self): - return 'tracklength' + return self._estimator @property def tallies(self): @@ -368,6 +373,11 @@ class MGXS(object): cv.check_iterable_type('nuclides', nuclides, basestring) self._nuclides = nuclides + @estimator.setter + def estimator(self, estimator): + cv.check_value('estimator', estimator, ESTIMATOR_TYPES) + self._estimator = estimator + @domain.setter def domain(self, domain): cv.check_type('domain', domain, _DOMAINS) @@ -1643,7 +1653,7 @@ class MatrixMGXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section @@ -1692,10 +1702,6 @@ class MatrixMGXS(MGXS): return [[energy], [energy, energyout]] - @property - def estimator(self): - return 'analog' - def get_xs(self, in_groups='all', out_groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', @@ -2072,7 +2078,7 @@ class TotalXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2190,7 +2196,7 @@ class TransportXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2233,6 +2239,7 @@ class TransportXS(MGXS): super(TransportXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'transport' + self._estimator = 'analog' @property def scores(self): @@ -2245,10 +2252,6 @@ class TransportXS(MGXS): energyout_filter = openmc.Filter('energyout', group_edges) return [[energy_filter], [energy_filter], [energyout_filter]] - @property - def estimator(self): - return 'analog' - @property def rxn_rate_tally(self): if self._rxn_rate_tally is None: @@ -2320,7 +2323,7 @@ class NuTransportXS(TransportXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2441,7 +2444,7 @@ class AbsorptionXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2557,7 +2560,7 @@ class CaptureXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2679,7 +2682,7 @@ class FissionXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2790,7 +2793,7 @@ class NuFissionXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2906,7 +2909,7 @@ class KappaFissionXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -3019,7 +3022,7 @@ class ScatterXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -3134,7 +3137,7 @@ class NuScatterXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -3177,10 +3180,7 @@ class NuScatterXS(MGXS): super(NuScatterXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'nu-scatter' - - @property - def estimator(self): - return 'analog' + self._estimator = 'analog' class ScatterMatrixXS(MatrixMGXS): @@ -3268,7 +3268,7 @@ class ScatterMatrixXS(MatrixMGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -3314,6 +3314,7 @@ class ScatterMatrixXS(MatrixMGXS): self._correction = 'P0' self._legendre_order = 0 self._hdf5_key = 'scatter matrix' + self._estimator = 'analog' def __deepcopy__(self, memo): clone = super(ScatterMatrixXS, self).__deepcopy__(memo) @@ -3929,7 +3930,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4051,7 +4052,7 @@ class MultiplicityMatrixXS(MatrixMGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4094,6 +4095,7 @@ class MultiplicityMatrixXS(MatrixMGXS): super(MultiplicityMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'multiplicity matrix' + self._estimator = 'analog' @property def scores(self): @@ -4198,7 +4200,7 @@ class NuFissionMatrixXS(MatrixMGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4242,6 +4244,7 @@ class NuFissionMatrixXS(MatrixMGXS): groups, by_nuclide, name) self._rxn_type = 'nu-fission' self._hdf5_key = 'nu-fission matrix' + self._estimator = 'analog' class Chi(MGXS): @@ -4313,7 +4316,7 @@ class Chi(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4355,6 +4358,7 @@ class Chi(MGXS): groups=None, by_nuclide=False, name=''): super(Chi, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'chi' + self._estimator = 'analog' @property def scores(self): @@ -4372,10 +4376,6 @@ class Chi(MGXS): def tally_keys(self): return ['nu-fission-in', 'nu-fission-out'] - @property - def estimator(self): - return 'analog' - @property def rxn_rate_tally(self): if self._rxn_rate_tally is None: @@ -4803,7 +4803,7 @@ class ChiPrompt(Chi): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4918,7 +4918,7 @@ class InverseVelocity(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -5052,7 +5052,7 @@ class PromptNuFissionXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'analog'} + estimator : {'tracklength', 'collision', 'analog'} The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys From 8e0f3f4f79fedcbd3892a0164d336f6315f97f45 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 15 Aug 2016 06:47:19 -0500 Subject: [PATCH 45/49] Respond to @wbinventor comments on #704 --- openmc/__init__.py | 2 +- openmc/mgxs/mgxs.py | 32 +++++++++++++++++--------------- openmc/tallies.py | 6 ++++-- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/openmc/__init__.py b/openmc/__init__.py index 026ccce114..a0492ee408 100644 --- a/openmc/__init__.py +++ b/openmc/__init__.py @@ -13,10 +13,10 @@ from openmc.settings import * from openmc.surface import * from openmc.universe import * from openmc.mesh import * -from openmc.mgxs_library import * from openmc.filter import * from openmc.trigger import * from openmc.tallies import * +from openmc.mgxs_library import * from openmc.cmfd import * from openmc.executor import * from openmc.statepoint import * diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index b942351556..d68dc508f2 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -13,6 +13,7 @@ import numpy as np import openmc import openmc.checkvalue as cv +from openmc.tallies import ESTIMATOR_TYPES from openmc.mgxs import EnergyGroups if sys.version_info[0] >= 3: @@ -39,7 +40,6 @@ MGXS_TYPES = ['total', 'inverse-velocity', 'prompt-nu-fission'] - # Supported domain types DOMAIN_TYPES = ['cell', 'distribcell', @@ -47,10 +47,6 @@ DOMAIN_TYPES = ['cell', 'material', 'mesh'] -ESTIMATOR_TYPES = ['tracklength', - 'collision', - 'analog'] - # Supported domain classes _DOMAINS = (openmc.Cell, openmc.Universe, @@ -148,7 +144,6 @@ class MGXS(object): def __init__(self, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name=''): - self._name = '' self._rxn_type = None self._by_nuclide = None @@ -165,6 +160,7 @@ class MGXS(object): self._loaded_sp = False self._derived = False self._hdf5_key = None + self._valid_estimators = ESTIMATOR_TYPES self.name = name self.by_nuclide = by_nuclide @@ -375,7 +371,7 @@ class MGXS(object): @estimator.setter def estimator(self, estimator): - cv.check_value('estimator', estimator, ESTIMATOR_TYPES) + cv.check_value('estimator', estimator, self._valid_estimators) self._estimator = estimator @domain.setter @@ -2196,7 +2192,7 @@ class TransportXS(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -2240,6 +2236,7 @@ class TransportXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'transport' self._estimator = 'analog' + self._valid_estimators = ['analog'] @property def scores(self): @@ -2323,7 +2320,7 @@ class NuTransportXS(TransportXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -3181,6 +3178,7 @@ class NuScatterXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'nu-scatter' self._estimator = 'analog' + self._valid_estimators = ['analog'] class ScatterMatrixXS(MatrixMGXS): @@ -3268,7 +3266,7 @@ class ScatterMatrixXS(MatrixMGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -3315,6 +3313,7 @@ class ScatterMatrixXS(MatrixMGXS): self._legendre_order = 0 self._hdf5_key = 'scatter matrix' self._estimator = 'analog' + self._valid_estimators = ['analog'] def __deepcopy__(self, memo): clone = super(ScatterMatrixXS, self).__deepcopy__(memo) @@ -3930,7 +3929,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4052,7 +4051,7 @@ class MultiplicityMatrixXS(MatrixMGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4096,6 +4095,7 @@ class MultiplicityMatrixXS(MatrixMGXS): by_nuclide, name) self._rxn_type = 'multiplicity matrix' self._estimator = 'analog' + self._valid_estimators = ['analog'] @property def scores(self): @@ -4200,7 +4200,7 @@ class NuFissionMatrixXS(MatrixMGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4245,6 +4245,7 @@ class NuFissionMatrixXS(MatrixMGXS): self._rxn_type = 'nu-fission' self._hdf5_key = 'nu-fission matrix' self._estimator = 'analog' + self._valid_estimators = ['analog'] class Chi(MGXS): @@ -4316,7 +4317,7 @@ class Chi(MGXS): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys @@ -4359,6 +4360,7 @@ class Chi(MGXS): super(Chi, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'chi' self._estimator = 'analog' + self._valid_estimators = ['analog'] @property def scores(self): @@ -4803,7 +4805,7 @@ class ChiPrompt(Chi): tally_keys : list of str The keys into the tallies dictionary for each tally used to compute the multi-group cross section - estimator : {'tracklength', 'collision', 'analog'} + estimator : 'analog' The tally estimator used to compute the multi-group cross section tallies : collections.OrderedDict OpenMC tallies needed to compute the multi-group cross section. The keys diff --git a/openmc/tallies.py b/openmc/tallies.py index c68b0faacb..f645fa1624 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -40,6 +40,9 @@ _SCORE_CLASSES = (basestring, CrossScore, AggregateScore) _NUCLIDE_CLASSES = (basestring, Nuclide, CrossNuclide, AggregateNuclide) _FILTER_CLASSES = (Filter, CrossFilter, AggregateFilter) +# Valid types of estimators +ESTIMATOR_TYPES = ['tracklength', 'collision', 'analog'] + def reset_auto_tally_id(): """Reset counter for auto-generated tally IDs.""" @@ -387,8 +390,7 @@ class Tally(object): @estimator.setter def estimator(self, estimator): - cv.check_value('estimator', estimator, - ['analog', 'tracklength', 'collision']) + cv.check_value('estimator', estimator, ESTIMATOR_TYPES) self._estimator = estimator @triggers.setter From 6be762858e14b9e1db69cf1366fbde004dc4cd51 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 16 Aug 2016 09:33:26 -0500 Subject: [PATCH 46/49] Allow estimator to be set for mgxs.Library --- openmc/mgxs/library.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index ee11d0ef64..5685681e43 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -11,6 +11,7 @@ import numpy as np import openmc import openmc.mgxs import openmc.checkvalue as cv +from openmc.tallies import ESTIMATOR_TYPES if sys.version_info[0] >= 3: @@ -39,7 +40,7 @@ class Library(object): mgxs_types : Iterable of str The types of cross sections in the library (e.g., ['total', 'scatter']) name : str, optional - Name of the multi-group cross section. library Used as a label to + Name of the multi-group cross section library. Used as a label to identify tallies in OpenMC 'tallies.xml' file. Attributes @@ -64,6 +65,9 @@ class Library(object): The highest legendre moment in the scattering matrices (default is 0) energy_groups : openmc.mgxs.EnergyGroups Energy group structure for energy condensation + estimator : str or None + The tally estimator used to compute multi-group cross sections. If None, + the default for each MGXS type is used. tally_trigger : openmc.Trigger An (optional) tally precision trigger given to each tally used to compute the cross section @@ -102,6 +106,7 @@ class Library(object): self._sp_filename = None self._keff = None self._sparse = False + self._estimator = None self.name = name self.openmc_geometry = openmc_geometry @@ -206,6 +211,10 @@ class Library(object): def tally_trigger(self): return self._tally_trigger + @property + def estimator(self): + return self._estimator + @property def num_groups(self): return self.energy_groups.num_groups @@ -327,6 +336,11 @@ class Library(object): cv.check_type('tally trigger', tally_trigger, openmc.Trigger) self._tally_trigger = tally_trigger + @estimator.setter + def estimator(self, estimator): + cv.check_value('estimator', estimator, ESTIMATOR_TYPES) + self._estimator = estimator + @sparse.setter def sparse(self, sparse): """Convert tally data from NumPy arrays to SciPy list of lists (LIL) @@ -368,9 +382,11 @@ class Library(object): mgxs.domain_type = self.domain_type mgxs.energy_groups = self.energy_groups mgxs.by_nuclide = self.by_nuclide + if self.estimator is not None: + mgxs.estimator = self.estimator # If a tally trigger was specified, add it to the MGXS - if self.tally_trigger: + if self.tally_trigger is not None: mgxs.tally_trigger = self.tally_trigger # Specify whether to use a transport ('P0') correction From e122535ddc3d672efd8d5b68a5263629273e14ae Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 16 Aug 2016 16:47:50 -0400 Subject: [PATCH 47/49] fixed issue in tally.F90 and updated mdgxs-part-ii.ipynb --- .../pythonapi/examples/mdgxs-part-ii.ipynb | 106 ++++++++---------- src/mesh.F90 | 22 ++-- src/tally.F90 | 14 ++- 3 files changed, 63 insertions(+), 79 deletions(-) diff --git a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb index 3dea15c501..ee652bc1f4 100644 --- a/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mdgxs-part-ii.ipynb @@ -456,7 +456,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -607,8 +607,8 @@ " Copyright: 2011-2016 Massachusetts Institute of Technology\n", " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.8.0\n", - " Git SHA1: c21ceb0aea4abc243b84106576c4f9010f608d0b\n", - " Date/Time: 2016-08-11 08:25:23\n", + " Git SHA1: 2636be6779b4c821dc6fb7a49de391fecb471358\n", + " Date/Time: 2016-08-16 16:45:50\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -713,20 +713,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7200E-01 seconds\n", - " Reading cross sections = 3.6100E-01 seconds\n", - " Total time in simulation = 7.5373E+01 seconds\n", - " Time in transport only = 7.5119E+01 seconds\n", - " Time in inactive batches = 5.1640E+00 seconds\n", - " Time in active batches = 7.0209E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 2.1900E-01 seconds\n", - " Total time for finalization = 7.0000E-03 seconds\n", - " Total time elapsed = 7.5973E+01 seconds\n", - " Calculation Rate (inactive) = 4841.21 neutrons/second\n", - " Calculation Rate (active) = 1424.32 neutrons/second\n", + " Total time for initialization = 4.3700E-01 seconds\n", + " Reading cross sections = 2.3700E-01 seconds\n", + " Total time in simulation = 6.7426E+01 seconds\n", + " Time in transport only = 6.7172E+01 seconds\n", + " Time in inactive batches = 4.8900E+00 seconds\n", + " Time in active batches = 6.2536E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 7.0000E-03 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 2.0100E-01 seconds\n", + " Total time for finalization = 6.0000E-03 seconds\n", + " Total time elapsed = 6.7893E+01 seconds\n", + " Calculation Rate (inactive) = 5112.47 neutrons/second\n", + " Calculation Rate (active) = 1599.08 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -827,24 +827,6 @@ "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1944: RuntimeWarning: invalid value encountered in true_divide\n", - " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n", - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1945: RuntimeWarning: invalid value encountered in true_divide\n", - " other_rel_err = data['other']['std. dev.'] / data['other']['mean']\n", - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1946: RuntimeWarning: divide by zero encountered in true_divide\n", - " new_tally._mean = data['self']['mean'] / data['other']['mean']\n", - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1946: RuntimeWarning: invalid value encountered in true_divide\n", - " new_tally._mean = data['self']['mean'] / data['other']['mean']\n", - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1938: RuntimeWarning: invalid value encountered in true_divide\n", - " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n", - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1939: RuntimeWarning: invalid value encountered in true_divide\n", - " other_rel_err = data['other']['std. dev.'] / data['other']['mean']\n" - ] - }, { "data": { "text/html": [ @@ -947,8 +929,8 @@ " 1\n", " total\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 0.006642\n", - " 0.001718\n", + " 0.011466\n", + " 0.004394\n", " \n", " \n", " 7\n", @@ -958,8 +940,8 @@ " 2\n", " total\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 0.001157\n", - " 0.000075\n", + " 0.000960\n", + " 0.000081\n", " \n", " \n", " 8\n", @@ -969,8 +951,8 @@ " 3\n", " total\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 0.006708\n", - " 0.000578\n", + " 0.007407\n", + " 0.000779\n", " \n", " \n", " 9\n", @@ -980,8 +962,8 @@ " 4\n", " total\n", " (((delayed-nu-fission / nu-fission) * (delayed...\n", - " 0.076515\n", - " 0.005032\n", + " 0.083327\n", + " 0.005229\n", " \n", " \n", "\n", @@ -1009,10 +991,10 @@ "3 (((delayed-nu-fission / nu-fission) * (delayed... 0.074721 0.005119 \n", "4 (((delayed-nu-fission / nu-fission) * (delayed... 0.034106 0.002235 \n", "5 (((delayed-nu-fission / nu-fission) * (delayed... 0.002500 0.000358 \n", - "6 (((delayed-nu-fission / nu-fission) * (delayed... 0.006642 0.001718 \n", - "7 (((delayed-nu-fission / nu-fission) * (delayed... 0.001157 0.000075 \n", - "8 (((delayed-nu-fission / nu-fission) * (delayed... 0.006708 0.000578 \n", - "9 (((delayed-nu-fission / nu-fission) * (delayed... 0.076515 0.005032 " + "6 (((delayed-nu-fission / nu-fission) * (delayed... 0.011466 0.004394 \n", + "7 (((delayed-nu-fission / nu-fission) * (delayed... 0.000960 0.000081 \n", + "8 (((delayed-nu-fission / nu-fission) * (delayed... 0.007407 0.000779 \n", + "9 (((delayed-nu-fission / nu-fission) * (delayed... 0.083327 0.005229 " ] }, "execution_count": 22, @@ -1167,8 +1149,8 @@ " x-min\n", " total\n", " current\n", - " 0.00000\n", - " 0.000000\n", + " 0.03039\n", + " 0.000670\n", " \n", " \n", " 7\n", @@ -1178,8 +1160,8 @@ " x-max\n", " total\n", " current\n", - " 0.03134\n", - " 0.000669\n", + " 0.03067\n", + " 0.000567\n", " \n", " \n", " 8\n", @@ -1189,8 +1171,8 @@ " y-min\n", " total\n", " current\n", - " 0.03055\n", - " 0.000605\n", + " 0.00000\n", + " 0.000000\n", " \n", " \n", " 9\n", @@ -1200,8 +1182,8 @@ " y-max\n", " total\n", " current\n", - " 0.03113\n", - " 0.000634\n", + " 0.03082\n", + " 0.000617\n", " \n", " \n", "\n", @@ -1216,10 +1198,10 @@ "3 1 1 1 y-max total current 0.03091 0.000636\n", "4 1 1 1 z-min total current 0.00000 0.000000\n", "5 1 1 1 z-max total current 0.00000 0.000000\n", - "6 1 2 1 x-min total current 0.00000 0.000000\n", - "7 1 2 1 x-max total current 0.03134 0.000669\n", - "8 1 2 1 y-min total current 0.03055 0.000605\n", - "9 1 2 1 y-max total current 0.03113 0.000634" + "6 1 2 1 x-min total current 0.03039 0.000670\n", + "7 1 2 1 x-max total current 0.03067 0.000567\n", + "8 1 2 1 y-min total current 0.00000 0.000000\n", + "9 1 2 1 y-max total current 0.03082 0.000617" ] }, "execution_count": 23, @@ -1255,7 +1237,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1264,9 +1246,9 @@ }, { "data": { - "image/png": "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\nDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3OAw5mZmZmZmZm1uU8\n4GBmZmZmZmZmXc4DDmZmZmZmZmbW5TzgYGZmZmZmZmZdzgMOZmZmZmZmZtblPOBgZmZmZmZmZl3O\nAw5mZmZmZmZm1uU84GBmZmZmZmZmXc4DDusJSZMlnZlx2ycl7d/dfapqcz9JT/Vkm2ZmPck5bGZW\nPmexWXPxgEMdkuZLelXSy5Kel3S9pJ0y1jpIaouyO9CI9N91ZdZfYmbWGOdwt1gnc7jqZ+FlSTeV\n3Sez3sJZ3C3WySwGkHSKpCck/UvSo5KGlt0na24ecKgvgEMiYnNgB+AfwIUZa8U6HCTNTlJrCW32\nAS4A7u7pts16Medwkyohh1f9LKSP0T3cvllv5ixuUj2dxZI+C3wGOCgiNgU+DPxfT/bB1j0ecOiY\nACLidWAqsOuqFVJfSedKWiDpGUk/krShpI2BG4EdJf0zHQ3uL+ldkv4iaamkpyVdmP4RW6xj0h6S\n7pP0kqQpwEZV6z8s6YG0vTskvb3Ofur2S9JFks6t2n6apC+mz3eQNFXSPyT9XdIXKrbbSNLPJb0g\n6RHgXZ28n1GS5qb9+KGkGZKOTdeNS9/D+ZKeB8Yr8Y101P3ZtK3N0u3XGk2vnDInabyk30iakv77\n/FXS7p185F8GbgbmdrKdmXUt57BzeNUuOllvZt3HWdzLs1iSgG8CX4qIxwAi4smIeLGj92PmAYcM\n0sD8BHBXxeJzgKHA7ul/dwS+GRGvAgcBiyNis/SbmGeBNuC/gH7A3sD+wIkF+7MBcA1wWbq/3wAf\nq1i/JzAJOD5d/xNgWlpXraN+XQaMrdjv1un6K9PQuR54gGS0+wDgFEkfSjefALwxfRwIjOvg/Wyd\nvofTgK2Bx9K+VHo38DdgW+DbJKOrnwL2A94EbAb8sGL7zkbTDwV+DWwF/Aq4VnVGiSUNTts7Ex/w\nmpXCObxqv70yh1NXSFoi6aYMgxNm1g2cxav22xuzeED6eLukhenAyoRO9m0GEeFHjQfwJPAy8AKw\nHFgE7Fax/l/AGyte7w08kT7fD1jYyf5PAa4u2Lf3AYuqlt0JnJk+vxiYWLV+LvC+ive2f5Z+AY8C\nB6TPTwJuSJ+/G5hfVXs6MCl9/nfgQxXrjq/3mQCfBO6sWrYQODZ9Pq5GW7cC/1nx+i3AMpJBtLU+\n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\neuPVxnRsyZiOLXtfXzzliVq7DchEZX2NMUvHOIJsgsgeRwPXR0Q38Likm4E3A0tqfjgzsyGkH+Zw\nMDOzJjmL81MaejdwJ5Ci68FaP07W176qu9y5StTd+sY3ljrXL+I9hWu+1H5yqXM92r1P8XPFfxWu\nmfqtEwvXAHzg5FmFa8ZFuZVVfhUdxWs+/P5S5/rsles1HDZ0/kFnFK55501zCtcAfDr+t3DNR9uu\nISKK/Q+ZSIpbYkyuff9R89c7T/rL/31kk0b+mWy82VEV3b2QdALwhog4QdJE4PCI6Jk08jLgLWRD\nKW4ARkdESPoh8ERETKpxzYcCp0XEARXbTgX2iIjjJW2ermNCRNyb/9vYsJTJYYB2rWq803rnKpff\n83b+h8I1v4x3lzrXf7SfX7hmzROvKH6erc5uvFMN519SPEfGHzez1LneyW8L18yOw0qd6zefKP7n\n5umXTm68U5WvvH9K4RqAg352beGa4+KSwjWv4U0c2HZWqSwuksNQO4utdUrdE5fI4excxbO4TA5D\nuSz+j/avFa5Z88SrCtcAfHar4vdzF15yaqlzlcniMjkM5bJ4sHIYymVxmRyGclncynvijY17OJhZ\nbkNtvFqOMWYTWHc4BcB3gGmSehoYpr6cGxvM7OXFQyrMzFrPWZyfGxzMLLcm1xzu9/FqjcaYRcR6\nM5tHxPP1zmFmNtQ1m8NmZtY8Z3F+bnAws9w8Xs3MrLWcw2Zmrecszs8NDmaWW7Prv5uZWXOcw2Zm\nrecszs/flJnl5vFqZmat5Rw2M2s9Z3F+bnAws9wcrmZmreUcNjNrPWdxfm5wMLPcPF7NzKy1nMNm\nZq3nLM7PDQ5mlpvHq5mZtZZz2Mys9ZzF+fmbMrPc3H3MzKy1nMNmZq3nLM7PDQ5mltsqrzlsZtZS\nzmEzs9ZzFufnBgczy83dx8zMWss5bGbWes7i/PxNmVlu7j5mZtZazmEzs9ZzFufnBgczy83hambW\nWs5hM7PWcxbnNygNDjfv8qZC+4+PGaXOc7WOKlzTdt0fSp1Ls6NwTXeXSp1r2zX3FK5ZOfPvC9d0\nn1S4BID2X36ocM0XDvxyqXN9QV8rXNM2rtz3fsH3Ti9c0/3L4uc5jVuLFwG/VkeJqmtKnauHw3XD\nddsu+xSu+UBcXbhmto4sXAPQNv++wjW6pHgOQ7ks3p6HCtc8celOhWsAuo8rXtP+mwmlzvXl/b9Y\n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\n+8b/K1zTdUrx/wY/ru8XrgH4Il8uXLOHlhERxS+S7P/ltuXVoxVq695hi5rnSctiXsDaZTG/Urn2\nu6RNyVaQeBNp7feIWJJqzyBbxWI1a5fFfDvwG+AesiEWAZyZllRD0jTgloi4uOo6jgbOBLqBn0bE\nGcW+jQ1LmRwG0CXFs6fr7aX+82KbrurOLo1t2fZsqXM9pNcXrml/sPj3d96unylcA/BZ/W/hmrZa\nzW05aFLx/Onq+mSpc02Pmqss9ukT515euKbrtHL/DR5b4ns/my8WrtmUA3m1ZpXK4iI5DPWz2Fqj\n1D1xiRyGcllcJoehXBYPVg5DuSwuk8NQLovL5DCUy+LBymEol8VlchjgLM4qXLOrHm/pPfHGxEMq\nzCy37q7mIqO/136PiJuh/jTBEXFsne0zgBm5L9zMbIhoNofNzKx5zuL8/E2ZWX7uGmZm1lrOYTOz\n1nMW5+YGBzPLz+FqZtZazmEzs9ZzFufmBgczy2/NRj0Ezcys9ZzDZmat5yzOzQ0OZpbfmlZfgJnZ\nRs45bGbWes7i3Lwsppnl92LOh5mZDYy8OewsNjMbOE3msKRDJS2SdL+k02q8P1zSTEmLJd0iaVTF\ne2ek7QslHdLomJKmSXpQ0l2S5knaJ23fQ9LvJb0oaVLF/ptKui3tf4+k3gney3APBzPLb3WrL8DM\nbCPnHDYza70mslhSG3AhcBDwGDBX0jURsahit+OBpyJitKQJwLnAREl7ka3oticwErhR0mhADY55\nSkRcXXUpTwL/DhxeuTEiVkk6ICJekNQO3Czp5xFxe5nP6x4OZpZfV86HmZkNjLw57Cw2Mxs4zeXw\nOGBxRDwcEauBmcD4qn3GA5em57OAA9Pzw4CZEbEmIpYAi9PxGh1zvb/3R8QTEXEnNQaIRMQL6emm\nZJ0Uou6nacANDmaW35qcDzMzGxh5c9hZbGY2cJrL4R2BpRWvl6VtNfeJiC7gGUlb16h9NG1rdMyz\nJc2XdJ6kTRp9PEltku4ClgM3RMTcRjX1uMHBzPLzTa6ZWWv1Q4PDAI0dnipphaQ/VB3r3LTvfElX\nStoybd8vjQ/ueRyeto+UdJOkBWns8EllvyozswHTXA7XWuKiugdBvX2Kbgc4PSL2BPYDtgHWy/31\nCiO6I+JNZMM23pKGcpTiORzMLD83JpiZtVaTOTwQY4cjIoBpwLeBH1adcg7ZzW63pK8AZ6THPcC+\n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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABBwAAAIhCAYAAADtr6lMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcHFW5//HPdyYE2beAQcIewnrZQa+CGUE2RQLIrhAB\nwXu5XHC5Pxa3JLggeFUUxSsYEIQYEJBNNhHDvoQ1QAKJaIAQiEBYRDQkk+f3R9UkTad7uk71zPTA\nfN+vV73Sfeo8daorydM1Z06do4jAzMzMzMzMzKwntbX6BMzMzMzMzMzsvccdDmZmZmZmZmbW49zh\nYGZmZmZmZmY9zh0OZmZmZmZmZtbj3OFgZmZmZmZmZj3OHQ5mZmZmZmZm1uPc4fAeIekCSacVrPtX\nSbv09jlVtTlS0nN92aaZWV9yHjYzaz3nYrP+xR0OdUiaKektSW9IekXStZLWKhjrRFJbtPoEypB0\nmqQpkuZL+marz8dsoHAe7hXvujwsaXVJEyQ9L+lVSXdI2rHV52U2UDgX94p3XS4GkHSrpL9Jek3S\nw5L2afU5Wf/nDof6AvhkRKwIrAn8DTi7YKx4lyaSdwNJ7X3c5Azg/wHX9XG7ZgOd83A/1cd5eHng\nfmAbYFXgIuD3kpbtw3MwG8ici/upFtwTnwAMjYiVgS8AF0t6fx+fg73LuMOhewKIiLeBy4HNFu2Q\nBkv6X0nPSHpB0s8lLZ3fAF0PfEDS3/Pe4KGSdpB0d/7bmeclnS1pUOkTk7aR9KCk1yVNBN5XtX/v\nvOfxVUl3Svq3Osepe16Sfirpf6vqXyPphPz1mpIuz3s6n5b03xX13ifpV5LmSnoc2KHB59ld0pP5\nefxM0iRJR+X7Ruef4YeSXgHGKPP1vNf9xbytFfL6S/SmVw6ZkzRG0m8lTcz/fh6QtGW9c4uIX0fE\nTcCb3X0GM+sVzsMDPA9HxF8j4qyI+FtkzgMGAxt393nMrEc5Fw/wXAwQEY9HxMKKokHA2t19HjN3\nOBSQJ8yDgXsqis8EhgNb5n9+APhmRLwF7AXMjogVImLFiHgR6AS+SPbbmX8HdgGOK3k+SwG/Ay7M\nj/db4NMV+7cFxgPH5Pt/AVyTx1Xr7rwuBA6pOO5q+f4JkgRcCzxM1tu9K3CipN3y6mOB9fNtD2B0\nN59ntfwznAysBjyVn0ulDwJ/BlYHvgMcCRwBjAQ2AFYAflZRv1Fv+j7ApcAqwG+AOyXNkTSlQVxD\n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\n6TKyH/TnA8flK1QgaQLQAawm6VlgTERcIGlfskknhwDXSXokIvYC1iCbzL2TbC6Iw/PjrAV8FZgm\n6WGyRzZ+GhHnAydI2idvey7wuUaf1x0OZlZYJ77RNTNrJedhM7PWazYXR8SNwMZVZWMqXs8jW/6y\nVuzpwOk1yg+rU/8q4Koa5c8Am9Qof546y9hHxFfJOiMKc4eDmRW2wDe6ZmYt5TxsZtZ6zsXFucPB\nzArrdMowM2sp52Ezs9ZzLi7OV8rMCvNQXjOz1nIeNjNrPefi4tzhYGaFvc3gVp+CmdmA5jxsZtZ6\nzsXFucPBzArz82pmZq3lPGxm1nrOxcW5w8HMCvPzamZmreU8bGbWes7FxflKmVlhfl7NzKy1nIfN\nzFrPubg4dziYWWFOrmZmreU8bGbWes7FxbnDwcwK8/NqZmat5TxsZtZ6zsXFucPBzArz82pmZq3l\nPGxm1nrOxcX1yZW6+gN7J9UftfbOpdrRWpEcs9+s35Vq6wxOTo75QdtXSrW1zvTpyTFvx6rJMcts\nmn79AIZd90pyzCkfHlOqrYN1aXLM0d8aX6qtwcxLjmnrTL+G/xqzSnIMgD5XKqwpHj727jWPpZNj\nxiwYlxwz9wdrJccAMCw9ZIcf3l6qqb9r+eSY51ZbOzlmP8p9v7x59+rJMUN2f65UW3/Yap/kmGMe\n/Umpth7VVskxZX6DdMinL0iOAfjPN85Ljpm3Zno7bU2mUefhd7cXlfaP5oLYulQ7133twPSgfUs1\nxUdPuik5psySgne8NTI5BuCIZS9Mjnn9mqGl2hpyUHouPn/Uf5Vq65Sr0++l79cOyTGTSY8B2P/g\nS5Jjdtadpdp6ec3lSkT9o1RbXZyLi3PXjJkV5uRqZtZazsNmZq3nXFycOxzMrLB5JX4jYWZmPcd5\n2Mys9ZyLi3OHg5kV5ufVzMxay3nYzKz1nIuLa2v1CZjZu0cn7YU2MzPrHUXzcHe5WNKekp6UNF3S\nEpNSSRosaaKkGZLukbROxb5T8/JpknavKB8vaY6kKVXHOjOv+4ikKyStmJevKulWSX+X9JOqmEMl\nTcljrpeUPjGVmVkv8j1xce5wMLPCnFzNzFqr2Q4HSW3AT4E9gM2BQyVtUlXtaGBuRGwEnAWcmcdu\nBhwEbArsBZwjSXnMBfkxq90MbB4RWwMzgFPz8n8BXwfeMaO2pPa8zZF5zGPA8cWujplZ3/A9cXHu\n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\nt+4xU5OXpbvKBMwBPpe2fxXYjFVLHC+PiHGS3gN8Epgr6V6yH+u+kv7uKM0dDmZWWKNwvavnRe7q\nqTtWOG/IJiprMsbsKOAnudfjyIZibAVsDvxW0qw006+ZWUfz5L1mZu3XahYPUcfvGsdM28c3OM4/\nAP9QZ/utMHh/2bjDwcwKazRebY/ujdmje+P+1z+c/FS93YZkorKBxpilYxxKNkFkn6OBGyNiJfCk\npFuBvwUW1f1wZmYdZBDmcDAzsxY5i4sblg6HP2jH5jvlPBF/Xamd8087s3zRibUrghRzwHHXVqqr\n4qon/650zT++qfxwm2euqLa86pZHP1K65puf/Wqltv7lB6c036nGLXpv853quIu9S9ccctj00jU7\namHpGoA/brpphapnm+8ygBbHDg/VRGUDjTE7AJgfEfmOjcfIZkq/TNLrgXcC327lg60N5uqtpWv+\nHG8oXfN/Tvlm6RqA9Sc9U7rmI4fOqNRWFd9bdHLpmlO2O7v5TnU8+eMxzXeqseWny+cwwKTTzi1d\nc/43/qlSWz0qf4f8Pav1FRbzkcOq/XfxRpUfWfXHjbcoXbM+GzffaQCtzuFg7VU2i6vkMFTL4io5\nDNWyuIsVpWt+uOSk0jUAJ41e44fgpqrkMFTL4kmnlM9hgPPPK5/Fw5XDUC2LN9PTldqqksXZYmjV\nOYuL8zdlZoV12ni1AmPMjmT14RQA/wZMlfRAej0lIh7AzGwt4CEVZmbt5ywuzh0OZlZYi2sOD/p4\ntWZjzCJijZnNI+LFRm2YmXW6VnPYzMxa5ywuzh0OZlaYx6uZmbWXc9jMrP2cxcW5w8HMCvN4NTOz\n9nIOm5m1n7O4OH9TZlaYx6uZmbWXc9jMrP2cxcW5w8HMCnO4mpm1l3PYzKz9nMXFucPBzArzeDUz\ns/ZyDpuZtZ+zuDh3OJhZYR6vZmbWXs5hM7P2cxYX52/KzArz7WNmZu3lHDYzaz9ncXHucDCzwl7x\nmsNmZm3lHDYzaz9ncXHucDCzwnz7mJlZezmHzczaz1lcnL8pMyvMt4+ZmbWXc9jMrP2cxcW5w8HM\nCnO4mpm1l3PYzKz9nMXFDUuHww8fPaHU/ieO+XaldlaeW76ma9nySm3Nuu+jpWt6365KbW04qnxb\nr1y4aemalSeVLgFgxKTtS9cc+P1rKrV1BueXrvlgXFupraseOrp0Te/fjChdsxXvLl0DcIIurlD1\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/src/mesh.F90 b/src/mesh.F90 index 137590e65c..cee29aa1ca 100644 --- a/src/mesh.F90 +++ b/src/mesh.F90 @@ -98,16 +98,16 @@ contains integer, intent(in) :: ijk(:) integer :: bin + integer :: n_x ! number of mesh cells in x direction integer :: n_y ! number of mesh cells in y direction - integer :: n_z ! number of mesh cells in z direction + n_x = m % dimension(1) n_y = m % dimension(2) if (m % n_dimension == 2) then - bin = (ijk(1) - 1)*n_y + ijk(2) + bin = (ijk(2) - 1)*n_x + ijk(1) elseif (m % n_dimension == 3) then - n_z = m % dimension(3) - bin = (ijk(1) - 1)*n_y*n_z + (ijk(2) - 1)*n_z + ijk(3) + bin = (ijk(3) - 1)*n_y*n_x + (ijk(2) - 1)*n_x + ijk(1) end if end function mesh_indices_to_bin @@ -122,19 +122,19 @@ contains integer, intent(in) :: bin integer, intent(out) :: ijk(:) + integer :: n_x ! number of mesh cells in x direction integer :: n_y ! number of mesh cells in y direction - integer :: n_z ! number of mesh cells in z direction + n_x = m % dimension(1) n_y = m % dimension(2) if (m % n_dimension == 2) then - ijk(1) = (bin - 1)/n_y + 1 - ijk(2) = mod(bin - 1, n_y) + 1 + ijk(1) = mod(bin - 1, n_x) + 1 + ijk(2) = (bin - 1)/n_x + 1 else if (m % n_dimension == 3) then - n_z = m % dimension(3) - ijk(1) = (bin - 1)/(n_y*n_z) + 1 - ijk(2) = mod(bin - 1, n_y*n_z)/n_z + 1 - ijk(3) = mod(bin - 1, n_z) + 1 + ijk(1) = mod(bin - 1, n_x) + 1 + ijk(2) = mod(bin - 1, n_x*n_y)/n_x + 1 + ijk(3) = (bin - 1)/(n_x*n_y) + 1 end if end subroutine bin_to_mesh_indices diff --git a/src/tally.F90 b/src/tally.F90 index 7bfd908c5f..3c3dc6a693 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -2327,6 +2327,7 @@ contains integer :: filter_index ! index of scoring bin integer :: i_filter_mesh ! index of mesh filter in filters array integer :: i_filter_surf ! index of surface filter in filters + integer :: i_filter_energy ! index of energy filter in filters real(8) :: uvw(3) ! cosine of angle of particle real(8) :: xyz0(3) ! starting/intermediate coordinates real(8) :: xyz1(3) ! ending coordinates of particle @@ -2351,9 +2352,10 @@ contains i_tally = active_current_tallies % get_item(i) t => tallies(i_tally) - ! Get index for mesh and surface filters + ! Get index for mesh, surface, and energy filters i_filter_mesh = t % find_filter(FILTER_MESH) i_filter_surf = t % find_filter(FILTER_SURFACE) + i_filter_energy = t % find_filter(FILTER_ENERGYIN) ! Get pointer to mesh select type(filt => t % filters(i_filter_mesh) % obj) @@ -2386,11 +2388,11 @@ contains ! Determine incoming energy bin. We need to tell the energy filter this ! is a tracklength tally so it uses the pre-collision energy. - j = t % find_filter(FILTER_ENERGYIN) - if (j > 0) then - call t % filters(i) % obj % get_next_bin(p, ESTIMATOR_TRACKLENGTH, & - & NO_BIN_FOUND, matching_bins(j), filt_score) - if (matching_bins(j) == NO_BIN_FOUND) cycle + if (i_filter_energy > 0) then + call t % filters(i_filter_energy) % obj % get_next_bin(p, & + ESTIMATOR_TRACKLENGTH, NO_BIN_FOUND, & + matching_bins(i_filter_energy), filt_score) + if (matching_bins(i_filter_energy) == NO_BIN_FOUND) cycle end if ! ======================================================================= From e5bde6f1c223be15908f9c1c6075460da6e1af17 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 16 Aug 2016 18:01:45 -0400 Subject: [PATCH 48/49] updated test results --- .../test_asymmetric_lattice/results_true.dat | 2 +- tests/test_filter_mesh_2d/results_true.dat | 868 +- tests/test_filter_mesh_3d/results_true.dat | 15332 ++++++++-------- tests/test_mg_tallies/results_true.dat | 2240 +-- tests/test_mgxs_library_mesh/results_true.dat | 144 +- tests/test_quadric_surfaces/results_true.dat | 2 +- tests/test_score_current/results_true.dat | 2 +- .../test_sourcepoint_restart/results_true.dat | 3420 ++-- .../test_statepoint_restart/results_true.dat | 3420 ++-- tests/test_tallies/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_tally_slice_merge/results_true.dat | 32 +- tests/test_track_output/results_true.dat | 2 +- tests/test_triso/results_true.dat | 2 +- 14 files changed, 12735 insertions(+), 12735 deletions(-) diff --git a/tests/test_asymmetric_lattice/results_true.dat b/tests/test_asymmetric_lattice/results_true.dat index a33b9c9e59..c2014a1912 100644 --- a/tests/test_asymmetric_lattice/results_true.dat +++ b/tests/test_asymmetric_lattice/results_true.dat @@ -1 +1 @@ -bc8bef8121f9b6470e4fea817a4e48eabb1ecba1f42761a4cbd77d71181bf9e1612df4a3d6ddfbcd08a3086ac873e5f3c3e560bf96b2b7c959a2f7aad7e4e08d \ No newline at end of file +280d08e4f4e6768f3100caff91a4c77d3a29ebc05353bdda47e3634f48e2ba2bd1d6a0030a00f97f2ea4c647c93155279697545cf2f951f71b58cfcd400c99de \ No newline at end of file diff --git a/tests/test_filter_mesh_2d/results_true.dat b/tests/test_filter_mesh_2d/results_true.dat index f4c5979526..e223464e5d 100644 --- a/tests/test_filter_mesh_2d/results_true.dat +++ b/tests/test_filter_mesh_2d/results_true.dat @@ -19,6 +19,82 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.486634E-01 +2.561523E-02 +5.574899E-01 +1.049542E-01 +7.713789E-01 +2.948263E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.149324E-01 +1.320945E-02 +2.001407E+00 +1.600000E+00 +9.572791E-01 +8.942065E-01 +0.000000E+00 +0.000000E+00 +2.501129E-02 +6.255649E-04 +1.484996E-01 +2.205214E-02 +3.079994E-03 +9.486363E-06 +1.090478E+00 +5.381842E-01 +4.235354E+00 +5.638989E+00 +3.267703E-01 +4.763836E-02 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.465048E-02 +3.049063E-04 +7.159080E-01 +2.988090E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.984785E-01 +1.486414E-01 +9.889831E-01 +3.657975E-01 +1.492571E+00 +6.318792E-01 +6.314497E-01 +1.552199E-01 +2.034493E+00 +1.162774E+00 +1.252153E+00 +4.563949E-01 +3.452042E-02 +1.191659E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -39,6 +115,186 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.251028E-01 +1.306358E-02 +2.850134E+00 +2.250972E+00 +2.083542E+00 +1.599782E+00 +3.417016E+00 +2.972256E+00 +1.533605E+00 +8.644495E-01 +1.962807E-01 +2.410165E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.131352E-01 +6.756111E-02 +2.677440E+00 +2.382024E+00 +5.709899E+00 +7.095076E+00 +4.663027E+00 +5.641430E+00 +1.357567E+00 +4.362757E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.473499E-01 +1.206520E-01 +5.299733E-01 +2.205463E-01 +4.425042E-01 +5.854257E-02 +9.831996E-01 +4.846833E-01 +8.393183E-03 +7.044551E-05 +4.457483E-01 +5.194318E-02 +1.194169E+00 +4.790398E-01 +1.261505E+00 +7.705206E-01 +2.356462E-01 +3.082678E-02 +3.679762E-01 +1.354065E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.597805E-01 +1.297695E-02 +1.349846E+00 +6.808561E-01 +2.237774E+00 +1.109643E+00 +4.237107E-01 +6.002592E-02 +0.000000E+00 +0.000000E+00 +5.424180E-02 +2.942173E-03 +1.420269E-01 +2.017163E-02 +1.954689E+00 +9.874394E-01 +1.380025E+00 +4.289689E-01 +5.043842E-02 +2.544034E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.438568E-01 +1.597365E-02 +6.874433E-01 +2.287801E-01 +7.495196E-01 +1.939234E-01 +8.922533E-01 +2.835397E-01 +7.462571E-02 +5.568996E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.449729E-01 +2.101714E-02 +1.876891E-01 +1.675278E-02 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.002118E-02 +4.902965E-03 +8.612279E-02 +5.910825E-03 +5.651386E-01 +1.286874E-01 +3.804197E-01 +1.225870E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.355899E-02 +5.550260E-04 +3.214464E-01 +1.033278E-01 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -55,456 +311,200 @@ tally 1: 0.000000E+00 1.474078E-01 2.172907E-02 +5.128548E-01 +1.258296E-01 +9.004671E-01 +2.791173E-01 +5.729905E-01 +2.680764E-01 +1.009880E-01 +9.392497E-03 +3.174349E-01 +1.007649E-01 +2.560771E-01 +6.557550E-02 +3.571813E-02 +1.275785E-03 +2.222160E-02 +4.937996E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 6.386562E-02 4.078817E-03 +1.379070E+00 +4.300261E-01 +6.485841E+00 +1.046238E+01 +5.509254E-01 +1.200498E-01 +2.424177E+00 +1.613025E+00 +1.260449E+00 +5.881747E-01 +9.262861E-03 +8.580060E-05 +6.588191E-01 +2.543824E-01 +2.028040E-01 +4.112944E-02 +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 +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.040956E+00 +3.089102E-01 +6.743595E+00 +1.135216E+01 +1.494910E+00 +6.327940E-01 +2.226123E+00 +1.203763E+00 +3.147407E+00 +3.333589E+00 +2.505905E-01 +6.279558E-02 +4.171440E-01 +8.701395E-02 +1.417427E+00 +9.671327E-01 +1.398153E-01 +1.954832E-02 +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 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 2.905797E-02 8.443654E-04 -7.532560E-03 -5.673946E-05 -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.149324E-01 -1.320945E-02 -2.465048E-02 -3.049063E-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 -0.000000E+00 -0.000000E+00 -7.002118E-02 -4.902965E-03 -5.128548E-01 -1.258296E-01 -1.379070E+00 -4.300261E-01 -1.040956E+00 -3.089102E-01 1.237157E+00 6.284409E-01 -9.539296E-01 -5.206980E-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 -2.001407E+00 -1.600000E+00 -7.159080E-01 -2.988090E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.473499E-01 -1.206520E-01 -1.597805E-01 -1.297695E-02 -1.438568E-01 -1.597365E-02 -8.612279E-02 -5.910825E-03 -9.004671E-01 -2.791173E-01 -6.485841E+00 -1.046238E+01 -6.743595E+00 -1.135216E+01 7.681046E-01 1.896252E-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 -9.572791E-01 -8.942065E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.299733E-01 -2.205463E-01 -1.349846E+00 -6.808561E-01 -6.874433E-01 -2.287801E-01 -5.651386E-01 -1.286874E-01 -5.729905E-01 -2.680764E-01 -5.509254E-01 -1.200498E-01 -1.494910E+00 -6.327940E-01 2.444256E-01 2.804968E-02 -6.927475E-01 -2.317744E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.425042E-01 -5.854257E-02 -2.237774E+00 -1.109643E+00 -7.495196E-01 -1.939234E-01 -3.804197E-01 -1.225870E-01 -1.009880E-01 -9.392497E-03 -2.424177E+00 -1.613025E+00 -2.226123E+00 -1.203763E+00 1.939766E+00 1.132042E+00 -3.953753E-01 -1.420303E-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 -2.501129E-02 -6.255649E-04 -3.984785E-01 -1.486414E-01 -1.251028E-01 -1.306358E-02 -0.000000E+00 -0.000000E+00 -9.831996E-01 -4.846833E-01 -4.237107E-01 -6.002592E-02 -8.922533E-01 -2.835397E-01 -0.000000E+00 -0.000000E+00 -3.174349E-01 -1.007649E-01 -1.260449E+00 -5.881747E-01 -3.147407E+00 -3.333589E+00 2.021896E+00 1.425606E+00 -1.377786E-01 -1.716503E-02 -3.011069E-02 -9.066538E-04 -0.000000E+00 -0.000000E+00 -5.118696E-02 -2.620104E-03 -0.000000E+00 -0.000000E+00 -1.484996E-01 -2.205214E-02 -9.889831E-01 -3.657975E-01 -2.850134E+00 -2.250972E+00 -4.131352E-01 -6.756111E-02 -8.393183E-03 -7.044551E-05 -0.000000E+00 -0.000000E+00 -7.462571E-02 -5.568996E-03 -0.000000E+00 -0.000000E+00 -2.560771E-01 -6.557550E-02 -9.262861E-03 -8.580060E-05 -2.505905E-01 -6.279558E-02 5.136552E-01 2.638417E-01 -1.441275E+00 -5.086865E-01 -2.913901E+00 -1.841912E+00 -6.978650E-01 -2.584000E-01 -1.451562E-02 -2.107031E-04 -0.000000E+00 -0.000000E+00 -3.079994E-03 -9.486363E-06 -1.492571E+00 -6.318792E-01 -2.083542E+00 -1.599782E+00 -2.677440E+00 -2.382024E+00 -4.457483E-01 -5.194318E-02 -5.424180E-02 -2.942173E-03 -0.000000E+00 -0.000000E+00 -2.355899E-02 -5.550260E-04 -3.571813E-02 -1.275785E-03 -6.588191E-01 -2.543824E-01 -4.171440E-01 -8.701395E-02 7.735493E-01 1.575534E-01 -4.033076E-01 -5.492660E-02 -4.513270E+00 -5.611449E+00 -1.653243E+00 -8.369762E-01 -1.045336E-01 -1.092727E-02 -2.486634E-01 -2.561523E-02 -1.090478E+00 -5.381842E-01 -6.314497E-01 -1.552199E-01 -3.417016E+00 -2.972256E+00 -5.709899E+00 -7.095076E+00 -1.194169E+00 -4.790398E-01 -1.420269E-01 -2.017163E-02 -0.000000E+00 -0.000000E+00 -3.214464E-01 -1.033278E-01 -2.222160E-02 -4.937996E-04 -2.028040E-01 -4.112944E-02 -1.417427E+00 -9.671327E-01 1.453489E+00 6.697189E-01 -8.534416E-01 -2.290345E-01 -5.367404E+00 -6.853344E+00 -1.237276E+00 -4.961691E-01 -5.835684E-02 -3.405521E-03 -5.574899E-01 -1.049542E-01 -4.235354E+00 -5.638989E+00 -2.034493E+00 -1.162774E+00 -1.533605E+00 -8.644495E-01 -4.663027E+00 -5.641430E+00 -1.261505E+00 -7.705206E-01 -1.954689E+00 -9.874394E-01 -1.449729E-01 -2.101714E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.398153E-01 -1.954832E-02 5.089636E-01 8.836228E-02 -1.422521E+00 -6.953668E-01 -1.137705E+00 -5.670907E-01 -3.521780E-01 -6.575561E-02 -0.000000E+00 -0.000000E+00 -7.713789E-01 -2.948263E-01 -3.267703E-01 -4.763836E-02 -1.252153E+00 -4.563949E-01 -1.962807E-01 -2.410165E-02 -1.357567E+00 -4.362757E-01 -2.356462E-01 -3.082678E-02 -1.380025E+00 -4.289689E-01 -1.876891E-01 -1.675278E-02 -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.940736E-01 -2.763730E-02 -6.059470E-02 -3.671718E-03 -3.479381E-01 -1.210609E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.452042E-02 -1.191659E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.679762E-01 -1.354065E-01 -5.043842E-02 -2.544034E-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 -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 -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 -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 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 1.678278E-01 2.097037E-02 -5.312751E-02 -1.423243E-03 -3.374418E-01 -1.138670E-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 -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 -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.208007E-01 2.057626E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.532560E-03 +5.673946E-05 +9.539296E-01 +5.206980E-01 +0.000000E+00 +0.000000E+00 +6.927475E-01 +2.317744E-01 +3.953753E-01 +1.420303E-01 +1.377786E-01 +1.716503E-02 +1.441275E+00 +5.086865E-01 +4.033076E-01 +5.492660E-02 +8.534416E-01 +2.290345E-01 +1.422521E+00 +6.953668E-01 +1.940736E-01 +2.763730E-02 +0.000000E+00 +0.000000E+00 +5.312751E-02 +1.423243E-03 1.050464E+00 5.524605E-01 +5.214580E-02 +2.719184E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.011069E-02 +9.066538E-04 +2.913901E+00 +1.841912E+00 +4.513270E+00 +5.611449E+00 +5.367404E+00 +6.853344E+00 +1.137705E+00 +5.670907E-01 +6.059470E-02 +3.671718E-03 +0.000000E+00 +0.000000E+00 +3.374418E-01 +1.138670E-01 7.171591E-02 5.143172E-03 0.000000E+00 @@ -525,24 +525,16 @@ tally 1: 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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.214580E-02 -2.719184E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +6.978650E-01 +2.584000E-01 +1.653243E+00 +8.369762E-01 +1.237276E+00 +4.961691E-01 +3.521780E-01 +6.575561E-02 +3.479381E-01 +1.210609E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -565,6 +557,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.118696E-02 +2.620104E-03 +1.451562E-02 +2.107031E-04 +1.045336E-01 +1.092727E-02 +5.835684E-02 +3.405521E-03 0.000000E+00 0.000000E+00 0.000000E+00 diff --git a/tests/test_filter_mesh_3d/results_true.dat b/tests/test_filter_mesh_3d/results_true.dat index 88a5228278..44cd1bcc8c 100644 --- a/tests/test_filter_mesh_3d/results_true.dat +++ b/tests/test_filter_mesh_3d/results_true.dat @@ -19,6 +19,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.784067E-02 +1.431916E-03 +5.718522E-03 +3.270150E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -51,6 +55,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +7.373020E-01 +2.296999E-01 +1.235293E-01 +1.096341E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -81,6 +89,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.646162E-01 +2.722494E-02 +3.297202E-01 +5.369813E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -111,6 +123,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.327761E-01 +1.698166E-02 +4.895403E-02 +2.396497E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -581,6 +597,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.013954E-02 +4.056009E-04 +1.244176E-01 +1.547973E-02 +6.200444E-02 +3.844551E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -609,6 +631,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.919075E-02 +1.535915E-03 +1.076125E+00 +3.620665E-01 +1.895015E-01 +3.591083E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -637,6 +665,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +7.532992E-02 +5.674596E-03 +2.779035E-01 +3.159893E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -865,6 +897,2854 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.849679E-01 +3.421312E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +4.562052E-01 +1.041492E-01 +9.262861E-03 +8.580060E-05 +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 +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 +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 +3.680080E-01 +7.239472E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +1.211417E-01 +1.467532E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.308558E-02 +1.856368E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.785033E-03 +6.060673E-05 +2.958840E-01 +7.992999E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +2.470259E-01 +3.094098E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +8.606674E-02 +7.407483E-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 +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 +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 +0.000000E+00 +0.000000E+00 +3.650200E-01 +7.121133E-02 +1.853335E-01 +3.434852E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +4.409446E-02 +1.944321E-03 +4.226996E-01 +1.360325E-01 +0.000000E+00 +0.000000E+00 +1.324670E-01 +1.754750E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.729718E-01 +2.991925E-02 +8.563908E-02 +4.712912E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.039507E-02 +3.647564E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.254527E-01 +1.810100E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.309308E-01 +5.812760E-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 +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 +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.162108E+00 +5.854785E-01 +1.144903E+00 +4.944036E-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 +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 +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.206585E-01 +1.455847E-02 +5.987372E-02 +2.032332E-03 +1.257462E-01 +1.456033E-02 +2.157774E-03 +4.655990E-06 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.358169E-02 +5.560962E-04 +1.892565E-01 +3.581801E-02 +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 +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 +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.668276E-01 +2.783144E-02 +1.382909E-01 +1.912437E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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.553405E-01 +1.453017E-02 +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 +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 +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.089221E-02 +2.590017E-03 +2.384503E+00 +1.209500E+00 +4.612134E-01 +1.063957E-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 +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 +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.032011E-01 +1.065047E-02 +2.762615E-01 +3.559292E-02 +1.771223E-02 +3.137232E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.465169E-02 +6.077057E-04 +2.812104E-01 +7.907926E-02 +7.317899E-02 +5.355165E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.994456E-02 +8.966764E-04 +9.597166E-01 +3.206571E-01 +2.946064E-02 +8.679293E-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 +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 +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 +0.000000E+00 +0.000000E+00 +2.391190E-01 +2.413267E-02 +0.000000E+00 +0.000000E+00 +3.630182E-02 +1.317822E-03 +7.945599E-03 +6.313254E-05 +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 +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 +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.640780E-01 +1.059726E-01 +7.558522E-01 +3.387696E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.753697E-01 +3.075454E-02 +9.929647E-02 +9.859789E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.755790E-03 +3.082798E-06 +6.310707E-02 +2.175394E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.071175E-01 +5.415795E-02 +3.663834E-02 +8.107316E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.678545E-02 +1.353169E-03 +4.196949E-01 +8.821556E-02 +6.573174E-01 +3.473163E-01 +1.432122E-01 +1.520012E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.642655E-02 +9.273189E-03 +5.463078E-01 +1.319680E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.214217E-01 +2.168033E-02 +1.223027E-01 +1.495794E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.415665E-01 +2.918471E-02 +8.969160E-01 +4.355459E-01 +1.358408E-01 +1.019608E-02 +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 +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 +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.149703E+00 +3.989107E-01 +8.078002E-01 +1.757558E-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 +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 +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.449729E-01 +2.101714E-02 +1.354717E-01 +9.718740E-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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +9.977770E-03 +9.955590E-05 +3.164476E-01 +5.280988E-02 +1.124256E-01 +1.263950E-02 +1.739446E-01 +3.025673E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.565669E-02 +2.451318E-04 +3.823223E-01 +4.488260E-02 +1.508419E-01 +2.275329E-02 +6.960539E-02 +4.844911E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.052674E-02 +8.195092E-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.022426E-01 +9.085949E-03 +2.615062E-01 +3.533945E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.322470E-02 +3.984732E-03 +1.034037E-01 +3.976885E-03 +5.731061E-01 +1.428980E-01 +1.115403E+00 +3.834871E-01 +1.574353E-01 +2.355445E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.580128E-01 +9.575996E-02 +9.766238E-01 +3.187064E-01 +1.641852E+00 +9.021844E-01 +5.073845E-01 +9.507188E-02 +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 +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 +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.348043E-02 +2.860156E-03 +2.874488E-01 +4.930982E-02 +1.164369E-01 +1.355756E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.165841E-02 +1.735423E-03 +8.832720E-02 +7.801694E-03 +8.209316E-02 +3.505893E-03 +3.679762E-01 +1.354065E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.049861E-01 +1.599684E-01 +5.722246E-01 +9.204135E-02 +3.727350E-02 +1.389314E-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 +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 +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.221740E-02 +2.726657E-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 +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 +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 +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 +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.125733E-01 +1.267274E-02 +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 +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 +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 +4.396029E-01 +6.352573E-02 +2.073790E+00 +1.188596E+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 +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 +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 +0.000000E+00 +8.200689E-01 +2.392978E-01 +4.156041E+00 +4.315163E+00 +2.887905E-01 +4.216084E-02 +3.721224E-03 +1.384751E-05 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.998387E-02 +7.936690E-03 +3.050953E-01 +3.658881E-02 +0.000000E+00 +0.000000E+00 +1.426667E-01 +2.035380E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.137535E-02 +2.639427E-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 +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 +2.742414E-01 +7.520835E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.027660E-02 +1.056086E-04 +8.945207E-02 +4.272339E-03 +4.274862E-02 +1.827445E-03 +2.729010E-01 +4.130164E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.011069E-02 +9.066538E-04 +4.871561E-01 +9.900028E-02 +2.263564E+00 +1.440716E+00 +2.844653E+00 +1.857026E+00 +4.871086E-01 +1.359461E-01 +3.788668E-02 +1.435401E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.290530E-02 +1.295592E-03 +2.593320E-01 +3.729386E-02 +2.357411E-01 +2.637254E-02 +8.896790E-03 +7.915287E-05 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +1.316492E-02 +1.733152E-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 +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 +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 +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 +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 0.000000E+00 @@ -899,10 +3779,10 @@ tally 1: 0.000000E+00 1.083669E-01 1.174340E-02 -3.904088E-02 -1.524190E-03 -0.000000E+00 -0.000000E+00 +2.623543E-01 +4.112454E-02 +3.364085E-01 +6.085429E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -933,6 +3813,16 @@ tally 1: 0.000000E+00 6.386562E-02 4.078817E-03 +5.669837E-01 +1.209384E-01 +9.609431E-01 +2.621642E-01 +8.878742E-02 +7.053770E-03 +2.075806E-02 +4.308970E-04 +4.751513E-01 +1.205013E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -957,26 +3847,16 @@ tally 1: 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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 +1.748649E-01 +1.584562E-02 +1.009424E+00 +3.060875E-01 +4.015408E-01 +7.884715E-02 +7.406533E-02 +5.485672E-03 +8.567983E-02 +7.341033E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1001,22 +3881,22 @@ tally 1: 0.000000E+00 2.905797E-02 8.443654E-04 +1.089115E+00 +5.614559E-01 +1.622477E-01 +1.848987E-02 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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +6.715405E-02 +4.509666E-03 +1.001959E-01 +1.003923E-02 +2.054517E-01 +4.221041E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1035,6 +3915,8 @@ tally 1: 0.000000E+00 7.532560E-03 5.673946E-05 +6.796882E-01 +2.348838E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1043,6 +3925,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +7.510694E-01 +2.592974E-01 +1.074496E-01 +1.154542E-02 +7.434457E-03 +5.527115E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1071,8 +3959,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.399012E+00 +6.326649E-01 +6.206466E-01 +1.107636E-01 +3.432563E-02 +1.076561E-03 0.000000E+00 0.000000E+00 +2.270802E-02 +5.156541E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1097,8 +3993,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +4.262772E-01 +9.802530E-02 +8.510644E-02 +4.903433E-03 +5.896045E-03 +3.476335E-05 0.000000E+00 0.000000E+00 +4.847729E-02 +2.350047E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1127,6 +4031,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.835684E-02 +3.405521E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1223,6 +4129,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.508012E-02 +1.230615E-03 +1.429072E-01 +2.042247E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1253,46 +4163,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.306116E-02 -1.705939E-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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +1.491740E-02 +2.225288E-04 +2.985580E-01 +4.742470E-02 +2.715682E-01 +6.930003E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1323,6 +4199,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.046129E-01 +1.094386E-02 +3.355127E-01 +7.824603E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1469,16 +4349,26 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.465169E-02 -6.077057E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -2.623543E-01 -4.112454E-02 +0.000000E+00 +0.000000E+00 +3.904088E-02 +1.524190E-03 2.258489E-01 5.100771E-02 +8.236284E-02 +4.869311E-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 0.000000E+00 @@ -1501,18 +4391,4616 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.729718E-01 -2.991925E-02 -2.994456E-02 -8.966764E-04 -9.977770E-03 -9.955590E-05 -4.396029E-01 -6.352573E-02 -5.669837E-01 -1.209384E-01 1.423672E-01 1.771243E-02 +4.350509E-01 +1.399885E-01 +0.000000E+00 +0.000000E+00 +8.573314E-01 +2.242082E-01 +2.686970E-01 +3.401364E-02 +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 +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 +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.330296E+00 +6.633075E-01 +1.754088E+00 +8.632560E-01 +1.701984E-01 +2.896749E-02 +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 +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 +0.000000E+00 +0.000000E+00 +4.805840E-02 +2.309610E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.091381E-02 +5.028768E-03 +0.000000E+00 +0.000000E+00 +4.465012E-01 +1.993633E-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 +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 +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 +0.000000E+00 +0.000000E+00 +1.811100E-01 +3.280084E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +4.954942E-01 +1.916582E-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 +1.582984E-01 +2.505838E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.905640E-01 +8.442745E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.016991E-02 +1.613622E-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 +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 +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 +0.000000E+00 +0.000000E+00 +3.209188E-02 +1.029889E-03 +1.711788E+00 +1.416936E+00 +1.685770E-02 +2.841820E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.728851E-03 +7.619284E-05 +1.524559E+00 +7.117855E-01 +2.225245E+00 +1.498774E+00 +1.375452E-01 +1.835673E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.457483E-01 +5.194318E-02 +4.628619E-01 +9.960982E-02 +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 +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 +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.424180E-02 +2.942173E-03 +1.420269E-01 +2.017163E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.267546E-01 +2.900091E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +1.862835E-02 +3.470153E-04 +7.547884E-04 +5.697055E-07 +8.039207E-02 +6.462885E-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 +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 +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 +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 +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 +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 +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 +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.085624E-02 +1.178580E-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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.460448E-01 +2.132907E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +1.385333E-02 +1.919148E-04 +4.750552E-01 +9.493583E-02 +4.475531E-02 +2.003038E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.582575E-01 +2.504545E-02 +7.244018E-01 +2.009724E-01 +1.675068E+00 +7.021248E-01 +1.548403E-01 +2.397552E-02 +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 +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 +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 +3.325684E-01 +5.701948E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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.326035E-02 +1.758368E-04 +1.155931E-01 +1.336177E-02 +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 +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 +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 +3.309870E-02 +1.095524E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.215622E-02 +4.908983E-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 +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 +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 +3.890902E-02 +1.513911E-03 +1.333296E-03 +1.777678E-06 +5.545269E-01 +1.316670E-01 +9.183632E-01 +2.857440E-01 +3.452042E-02 +1.191659E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.009713E-01 +3.766430E-02 +4.064749E-01 +9.731066E-02 +7.510889E-01 +3.262838E-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 +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 +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.834594E-02 +3.365736E-04 +5.221919E-01 +2.558641E-01 +6.058351E-02 +1.850615E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +1.075776E-01 +1.157294E-02 +1.408841E-01 +9.930494E-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 +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 +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.324866E-01 +1.755269E-02 +2.157489E-01 +2.724501E-02 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +2.362142E-01 +5.579715E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +7.171591E-02 +5.143172E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +3.079994E-03 +9.486363E-06 +2.573597E-01 +5.360516E-02 +7.663116E-02 +5.274654E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.522719E-01 +2.318672E-02 +1.234218E+00 +4.999181E-01 +6.053656E-02 +3.664676E-03 +3.866882E-01 +1.202701E-01 +4.069831E-03 +1.656352E-05 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.099509E-01 +6.290302E-02 +5.245828E-01 +7.576335E-02 +5.521306E-01 +1.121121E-01 +1.518297E-01 +1.402100E-02 +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 +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 +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.298371E-01 +1.330104E-02 +1.431856E-01 +2.050213E-02 +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 +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 +3.602120E-02 +1.297527E-03 +1.614711E-02 +2.607292E-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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.367392E-03 +1.869762E-06 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +2.028040E-01 +4.112944E-02 +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 +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 +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.876735E-02 +3.142665E-04 +1.266345E+00 +7.682954E-01 +1.355863E-01 +1.838365E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.894914E-01 +7.732641E-02 +7.546765E-01 +2.070654E-01 +1.481609E-01 +2.195167E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.589438E-01 +2.060098E-02 +4.924729E-01 +2.024222E-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 +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 +2.693310E-02 +6.692041E-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 +2.901092E-02 +8.416334E-04 +6.926635E-01 +2.428256E-01 +5.214580E-02 +2.719184E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.067391E-01 +1.139323E-02 +2.330690E-01 +5.432115E-02 +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 +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 +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 +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 +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 +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 +3.631683E-01 +1.318912E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.948898E-01 +3.798204E-02 +1.473267E-01 +2.170516E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.021145E-01 +1.042738E-02 +5.996351E-01 +1.076802E-01 +7.003137E-01 +2.735252E-01 +3.750187E-01 +1.153951E-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.054694E-02 +4.221768E-04 +9.531928E-02 +6.215764E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.231222E-02 +9.616114E-05 +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 +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 +6.315614E-02 +2.242266E-03 +9.974406E-01 +3.947626E-01 +6.997755E-01 +1.672455E-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 +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 +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.613314E-01 +2.177882E-02 +0.000000E+00 +0.000000E+00 +9.028974E-02 +4.229429E-03 +7.462571E-02 +5.568996E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.683052E-03 +9.376150E-05 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +4.228981E-03 +1.788428E-05 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.883980E-03 +7.892509E-05 +2.832772E-02 +8.024597E-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 +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 +0.000000E+00 +0.000000E+00 +3.591875E-02 +1.290157E-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 +5.993460E-03 +3.592156E-05 +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 +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.374400E-01 +1.888975E-02 +1.770925E-01 +1.577698E-02 +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 +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 +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 +2.699969E-01 +4.178442E-02 +7.084057E-01 +1.536166E-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 +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 +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.118696E-02 +2.620104E-03 +1.451562E-02 +2.107031E-04 +5.751275E-02 +3.307717E-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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.397100E-02 +5.746090E-04 +1.165202E-01 +6.930471E-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 +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 +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.230381E-02 +2.735689E-03 +4.899885E-02 +2.400887E-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 +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 +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.526715E-02 +2.330858E-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 +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 +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 +0.000000E+00 +0.000000E+00 +4.241176E-01 +9.055699E-02 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.715160E-01 +1.827795E-02 +3.979721E-01 +1.307262E-01 +2.136983E-01 +4.566698E-02 +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 +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.699789E-01 +1.099867E-01 +2.906510E-01 +2.666266E-02 +4.420414E-02 +1.954006E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.974266E-02 +4.864039E-03 +3.006400E-01 +3.566201E-02 +9.975381E-01 +3.048346E-01 +1.525008E-01 +1.765369E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.896367E-02 +1.518168E-03 +4.750135E-01 +1.508282E-01 +6.670089E-01 +1.688817E-01 +8.019636E-01 +2.406005E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.396759E-03 +5.744454E-06 +3.936907E-01 +7.202022E-02 +3.707367E-01 +1.159281E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.355899E-02 +5.550260E-04 +2.878871E-01 +8.287897E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.524618E-01 +6.373694E-02 +1.453317E-02 +2.112130E-04 +2.222160E-02 +4.937996E-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 +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 +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 +0.000000E+00 +0.000000E+00 +5.015914E-02 +2.515940E-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 +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 +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 +0.000000E+00 +0.000000E+00 +8.266086E-02 +6.832818E-03 +1.019759E-02 +1.039909E-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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.927144E-03 +8.568173E-06 +8.685372E-02 +7.543569E-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 +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 +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 +0.000000E+00 +0.000000E+00 +3.206602E-02 +8.744271E-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 +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 +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 +0.000000E+00 +0.000000E+00 +1.590867E-03 +2.530859E-06 +5.000909E-01 +1.141659E-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 +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 +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 +0.000000E+00 +0.000000E+00 +4.702083E-02 +2.210958E-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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.667122E-01 +1.609363E-02 +2.882401E-01 +4.938325E-02 +1.186127E-01 +1.335481E-02 +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 +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 +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.802912E-01 +1.787062E-01 +2.509994E-01 +3.312022E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.071904E-01 +2.889953E-02 +3.636704E-02 +1.322562E-03 +4.636650E-02 +2.149852E-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 +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 +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.023202E+00 +7.786623E-01 +3.230798E-01 +3.896399E-02 +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 +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 +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.698392E-01 +1.770322E-02 +1.047304E-01 +5.484511E-03 +0.000000E+00 +0.000000E+00 +9.764118E-02 +9.533800E-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 +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.319541E-03 +2.829752E-05 +1.034262E-01 +6.886191E-03 +4.038686E-02 +1.631098E-03 +9.389954E-01 +4.408852E-01 +8.393183E-03 +7.044551E-05 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.176521E-02 +2.679637E-03 +5.390926E-01 +9.312562E-02 +2.712099E-01 +3.687123E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.048931E-01 +7.753447E-03 +5.109842E-02 +1.598239E-03 +8.251077E-02 +3.717992E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.372603E-02 +5.869219E-03 +1.714479E-01 +1.505049E-02 +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.355929E-02 +1.126226E-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 +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 +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.615369E-03 +1.307089E-05 +2.118496E-02 +4.488027E-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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.411503E-04 +2.928436E-07 +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.972802E-01 +2.058844E-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 +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 +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 +0.000000E+00 +0.000000E+00 +8.619416E-02 +6.961721E-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 +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 +0.000000E+00 +0.000000E+00 +1.164981E-01 +1.357181E-02 +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 +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 +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 +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 +2.682268E-01 +7.194562E-02 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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.786607E-02 +3.191964E-04 +2.870320E-01 +4.518339E-02 +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 +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 +0.000000E+00 +0.000000E+00 +2.501129E-02 +6.255649E-04 +1.484996E-01 +2.205214E-02 +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 +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 +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 +8.907152E-02 +7.933735E-03 +1.077088E-01 +1.160118E-02 +0.000000E+00 +0.000000E+00 +1.962851E-01 +3.852783E-02 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.978887E-01 +2.156289E-01 +2.621971E-01 +4.860489E-02 +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 +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 +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 +7.630962E-02 +2.320465E-03 +9.867531E-02 +9.736817E-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 +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 +0.000000E+00 +0.000000E+00 +3.420304E-01 +1.169848E-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 +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 +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 +0.000000E+00 +0.000000E+00 +2.688171E-02 +7.226262E-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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1529,24 +9017,24 @@ tally 1: 0.000000E+00 1.722215E-02 2.966024E-04 +1.480967E+00 +5.223269E-01 +1.561576E-01 +2.112454E-02 +3.978837E-01 +1.583114E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +1.137979E-02 +1.294997E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.565669E-02 -2.451318E-04 -8.200689E-01 -2.392978E-01 -1.748649E-01 -1.584562E-02 -0.000000E+00 -0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1563,24 +9051,18 @@ tally 1: 0.000000E+00 3.036511E-02 9.220402E-04 +3.308084E-01 +5.110266E-02 +5.595964E-02 +2.146289E-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 -0.000000E+00 -0.000000E+00 -9.998387E-02 -7.936690E-03 -1.089115E+00 -5.614559E-01 -4.805840E-02 -2.309610E-03 +1.219441E-01 +1.487035E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1603,16 +9085,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +9.373673E-02 +4.377147E-03 +7.403983E-02 +3.220776E-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 0.000000E+00 0.000000E+00 -2.742414E-01 -7.520835E-02 -6.796882E-01 -2.348838E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1803,582 +9291,6 @@ tally 1: 0.000000E+00 3.448095E-01 5.774877E-02 -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 -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 -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 -0.000000E+00 -0.000000E+00 -6.033873E-01 -2.672168E-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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.319541E-03 -2.829752E-05 -3.420304E-01 -1.169848E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.315614E-02 -2.242266E-03 -6.974266E-02 -4.864039E-03 -0.000000E+00 -0.000000E+00 -2.688171E-02 -7.226262E-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 -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 -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 -3.896367E-02 -1.518168E-03 -1.048931E-01 -7.753447E-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 -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 -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 -2.396759E-03 -5.744454E-06 -8.372603E-02 -5.869219E-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 -4.409446E-02 -1.944321E-03 -2.812104E-01 -7.907926E-02 -0.000000E+00 -0.000000E+00 -1.125733E-01 -1.267274E-02 -3.364085E-01 -6.085429E-02 -8.236284E-02 -4.869311E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.381770E-02 -1.919990E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.563908E-02 -4.712912E-03 -9.597166E-01 -3.206571E-01 -3.164476E-01 -5.280988E-02 -2.073790E+00 -1.188596E+00 -9.609431E-01 -2.621642E-01 -4.350509E-01 -1.399885E-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 -0.000000E+00 -0.000000E+00 -5.411503E-04 -2.928436E-07 -1.480967E+00 -5.223269E-01 -1.727443E-01 -1.798769E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.254527E-01 -1.810100E-01 -2.391190E-01 -2.413267E-02 -3.823223E-01 -4.488260E-02 -4.156041E+00 -4.315163E+00 -1.009424E+00 -3.060875E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.308084E-01 -5.110266E-02 -2.004281E-01 -2.595071E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.052674E-02 -8.195092E-03 -3.050953E-01 -3.658881E-02 -1.622477E-01 -1.848987E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.164981E-01 -1.357181E-02 -9.373673E-02 -4.377147E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 1.370265E-01 1.583751E-02 0.000000E+00 @@ -2409,10 +9321,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.306116E-02 +1.705939E-04 +6.033873E-01 +2.672168E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +3.094070E-01 +8.793386E-02 +4.867319E-01 +8.396510E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2443,6 +9363,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.251028E-01 +1.306358E-02 +2.410067E-01 +5.808423E-02 +4.089938E-03 +9.542099E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2505,14 +9431,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.602120E-02 -1.297527E-03 -2.054694E-02 -4.221768E-04 -3.699789E-01 -1.099867E-01 -1.034262E-01 -6.886191E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2541,12 +9459,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.974406E-01 -3.947626E-01 -3.006400E-01 -3.566201E-02 -5.176521E-02 -2.679637E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2575,12 +9487,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.613314E-01 -2.177882E-02 -4.750135E-01 -1.508282E-01 -5.109842E-02 -1.598239E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2611,10 +9517,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.936907E-01 -7.202022E-02 -1.714479E-01 -1.505049E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2623,10 +9525,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.226996E-01 -1.360325E-01 -7.317899E-02 -5.355165E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2651,22 +9549,24 @@ tally 1: 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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.381770E-02 +1.919990E-03 7.711190E-02 5.946245E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.946064E-02 -8.679293E-04 -1.124256E-01 -1.263950E-02 -0.000000E+00 -0.000000E+00 -8.878742E-02 -7.053770E-03 +1.009880E-01 +9.392497E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2683,24 +9583,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.561576E-01 -2.112454E-02 +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 +0.000000E+00 +0.000000E+00 +1.727443E-01 +1.798769E-02 1.640942E-01 2.692690E-02 -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.508419E-01 -2.275329E-02 -2.887905E-01 -4.216084E-02 -4.015408E-01 -7.884715E-02 +7.475045E-01 +2.090484E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2717,10 +9617,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.595964E-02 -2.146289E-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 +0.000000E+00 +0.000000E+00 +2.004281E-01 +2.595071E-02 3.159701E-01 3.538768E-02 +5.329778E-01 +1.118275E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2751,16 +9665,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.403983E-02 -3.220776E-03 1.220497E-01 1.051103E-02 0.000000E+00 0.000000E+00 -4.308558E-02 -1.856368E-03 -1.206585E-01 -1.455847E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2789,582 +9701,6 @@ tally 1: 0.000000E+00 5.069737E-01 1.407934E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.614711E-02 -2.607292E-04 -9.531928E-02 -6.215764E-03 -2.906510E-01 -2.666266E-02 -4.038686E-02 -1.631098E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.367392E-03 -1.869762E-06 -6.997755E-01 -1.672455E-01 -9.975381E-01 -3.048346E-01 -5.390926E-01 -9.312562E-02 -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 -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 -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 -6.670089E-01 -1.688817E-01 -8.251077E-02 -3.717992E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.683052E-03 -9.376150E-05 -3.707367E-01 -1.159281E-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 -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 -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 -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.009880E-01 -9.392497E-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 -1.739446E-01 -3.025673E-02 -0.000000E+00 -0.000000E+00 -2.075806E-02 -4.308970E-04 -8.573314E-01 -2.242082E-01 -2.267546E-01 -2.900091E-02 -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 -0.000000E+00 -0.000000E+00 -3.978837E-01 -1.583114E-01 -7.475045E-01 -2.090484E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.630182E-02 -1.317822E-03 -6.960539E-02 -4.844911E-03 -3.721224E-03 -1.384751E-05 -7.406533E-02 -5.485672E-03 -1.330296E+00 -6.633075E-01 -1.862835E-02 -3.470153E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.329778E-01 -1.118275E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.162108E+00 -5.854785E-01 -5.640780E-01 -1.059726E-01 -0.000000E+00 -0.000000E+00 -1.426667E-01 -2.035380E-02 -0.000000E+00 -0.000000E+00 -7.091381E-02 -5.028768E-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 -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 -0.000000E+00 -0.000000E+00 -5.987372E-02 -2.032332E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 7.471872E-02 5.582887E-03 0.000000E+00 @@ -3491,6339 +9827,3 @@ tally 1: 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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.501129E-02 -6.255649E-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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.907152E-02 -7.933735E-03 -3.094070E-01 -8.793386E-02 -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 -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 -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 -0.000000E+00 -0.000000E+00 -1.251028E-01 -1.306358E-02 -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 -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 -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 -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 -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 -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 -4.420414E-02 -1.954006E-03 -9.389954E-01 -4.408852E-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 -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 -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.525008E-01 -1.765369E-02 -2.712099E-01 -3.687123E-02 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.028974E-02 -4.229429E-03 -8.019636E-01 -2.406005E-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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -1.849679E-01 -3.421312E-02 -1.324670E-01 -1.754750E-02 -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 -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 -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 -4.562052E-01 -1.041492E-01 -6.039507E-02 -3.647564E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.751513E-01 -1.205013E-01 -2.686970E-01 -3.401364E-02 -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 -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 -3.680080E-01 -7.239472E-02 -9.309308E-01 -5.812760E-01 -7.945599E-03 -6.313254E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.567983E-02 -7.341033E-03 -1.754088E+00 -8.632560E-01 -7.547884E-04 -5.697055E-07 -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 -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.211417E-01 -1.467532E-02 -1.144903E+00 -4.944036E-01 -7.558522E-01 -3.387696E-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 -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 -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.257462E-01 -1.456033E-02 -1.755790E-03 -3.082798E-06 -0.000000E+00 -0.000000E+00 -1.027660E-02 -1.056086E-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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.011069E-02 -9.066538E-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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -5.118696E-02 -2.620104E-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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -1.484996E-01 -2.205214E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.508012E-02 -1.230615E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.522719E-01 -2.318672E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.071904E-01 -2.889953E-02 -1.077088E-01 -1.160118E-02 -4.867319E-01 -8.396510E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.491740E-02 -2.225288E-04 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.099509E-01 -6.290302E-02 -3.631683E-01 -1.318912E-01 -0.000000E+00 -0.000000E+00 -1.023202E+00 -7.786623E-01 -7.978887E-01 -2.156289E-01 -2.410067E-01 -5.808423E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.728851E-03 -7.619284E-05 -1.582575E-01 -2.504545E-02 -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.698392E-01 -1.770322E-02 -7.630962E-02 -2.320465E-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 -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 -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 -8.393183E-03 -7.044551E-05 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -7.462571E-02 -5.568996E-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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.524618E-01 -6.373694E-02 -3.615369E-03 -1.307089E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.262861E-03 -8.580060E-05 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.701984E-01 -2.896749E-02 -8.039207E-02 -6.462885E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.715405E-02 -4.509666E-03 -4.465012E-01 -1.993633E-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 -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 -0.000000E+00 -0.000000E+00 -2.157774E-03 -4.655990E-06 -6.310707E-02 -2.175394E-03 -8.322470E-02 -3.984732E-03 -8.945207E-02 -4.272339E-03 -7.510694E-01 -2.592974E-01 -1.811100E-01 -3.280084E-02 -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 -2.927144E-03 -8.568173E-06 -2.682268E-01 -7.194562E-02 -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 -3.678545E-02 -1.353169E-03 -3.580128E-01 -9.575996E-02 -4.871561E-01 -9.900028E-02 -1.399012E+00 -6.326649E-01 -4.954942E-01 -1.916582E-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 -1.374400E-01 -1.888975E-02 -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 -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 -4.262772E-01 -9.802530E-02 -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 -2.699969E-01 -4.178442E-02 -1.590867E-03 -2.530859E-06 -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 -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 -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.451562E-02 -2.107031E-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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.079994E-03 -9.486363E-06 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.429072E-01 -2.042247E-02 -4.016991E-02 -1.613622E-03 -0.000000E+00 -0.000000E+00 -3.890902E-02 -1.513911E-03 -1.234218E+00 -4.999181E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.636704E-02 -1.322562E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.985580E-01 -4.742470E-02 -3.209188E-02 -1.029889E-03 -1.385333E-02 -1.919148E-04 -2.009713E-01 -3.766430E-02 -5.245828E-01 -7.576335E-02 -0.000000E+00 -0.000000E+00 -4.241176E-01 -9.055699E-02 -3.230798E-01 -3.896399E-02 -2.621971E-01 -4.860489E-02 -4.089938E-03 -9.542099E-06 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.046129E-01 -1.094386E-02 -1.524559E+00 -7.117855E-01 -7.244018E-01 -2.009724E-01 -1.834594E-02 -3.365736E-04 -0.000000E+00 -0.000000E+00 -1.021145E-01 -1.042738E-02 -0.000000E+00 -0.000000E+00 -1.047304E-01 -5.484511E-03 -9.867531E-02 -9.736817E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.457483E-01 -5.194318E-02 -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 -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 -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 -0.000000E+00 -0.000000E+00 -5.424180E-02 -2.942173E-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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.355899E-02 -5.550260E-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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.453317E-02 -2.112130E-04 -2.118496E-02 -4.488027E-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 -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 -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 -0.000000E+00 -0.000000E+00 -5.015914E-02 -2.515940E-03 -5.972802E-01 -2.058844E-01 -1.137979E-02 -1.294997E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.075776E-01 -1.157294E-02 -1.876735E-02 -3.142665E-04 -0.000000E+00 -0.000000E+00 -8.266086E-02 -6.832818E-03 -8.619416E-02 -6.961721E-03 -1.219441E-01 -1.487035E-02 -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 -0.000000E+00 -0.000000E+00 -5.137535E-02 -2.639427E-03 -1.001959E-01 -1.003923E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.324866E-01 -1.755269E-02 -4.894914E-01 -7.732641E-02 -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 -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.034037E-01 -3.976885E-03 -4.274862E-02 -1.827445E-03 -1.074496E-01 -1.154542E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.693310E-02 -6.692041E-04 -3.591875E-02 -1.290157E-03 -8.685372E-02 -7.543569E-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 -2.358169E-02 -5.560962E-04 -4.196949E-01 -8.821556E-02 -9.766238E-01 -3.187064E-01 -2.263564E+00 -1.440716E+00 -6.206466E-01 -1.107636E-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 -1.770925E-01 -1.577698E-02 -3.206602E-02 -8.744271E-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 -0.000000E+00 -0.000000E+00 -1.668276E-01 -2.783144E-02 -9.642655E-02 -9.273189E-03 -5.348043E-02 -2.860156E-03 -4.290530E-02 -1.295592E-03 -8.510644E-02 -4.903433E-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 -7.084057E-01 -1.536166E-01 -5.000909E-01 -1.141659E-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 -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 -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.751275E-02 -3.307717E-03 -4.702083E-02 -2.210958E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.784067E-02 -1.431916E-03 -2.013954E-02 -4.056009E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.397100E-02 -5.746090E-04 -1.667122E-01 -1.609363E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.919075E-02 -1.535915E-03 -7.785033E-03 -6.060673E-05 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.573597E-01 -5.360516E-02 -1.067391E-01 -1.139323E-02 -5.230381E-02 -2.735689E-03 -5.802912E-01 -1.787062E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -7.532992E-02 -5.674596E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.333296E-03 -1.777678E-06 -6.053656E-02 -3.664676E-03 -0.000000E+00 -0.000000E+00 -1.526715E-02 -2.330858E-04 -4.636650E-02 -2.149852E-03 -1.962851E-01 -3.852783E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.715682E-01 -6.930003E-02 -1.711788E+00 -1.416936E+00 -4.750552E-01 -9.493583E-02 -4.064749E-01 -9.731066E-02 -5.521306E-01 -1.121121E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.089221E-02 -2.590017E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.355127E-01 -7.824603E-02 -2.225245E+00 -1.498774E+00 -1.675068E+00 -7.021248E-01 -5.221919E-01 -2.558641E-01 -1.298371E-01 -1.330104E-02 -5.996351E-01 -1.076802E-01 -1.715160E-01 -1.827795E-02 -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 -0.000000E+00 -0.000000E+00 -1.032011E-01 -1.065047E-02 -2.415665E-01 -2.918471E-02 -4.165841E-02 -1.735423E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.628619E-01 -9.960982E-02 -3.325684E-01 -5.701948E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.231222E-02 -9.616114E-05 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.420269E-01 -2.017163E-02 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.878871E-01 -8.287897E-02 -3.355929E-02 -1.126226E-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 -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 -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 -2.222160E-02 -4.937996E-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 -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 -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 -2.028040E-01 -4.112944E-02 -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 -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 -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.408841E-01 -9.930494E-03 -1.266345E+00 -7.682954E-01 -0.000000E+00 -0.000000E+00 -1.019759E-02 -1.039909E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.753697E-01 -3.075454E-02 -1.022426E-01 -9.085949E-03 -0.000000E+00 -0.000000E+00 -2.054517E-01 -4.221041E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.157489E-01 -2.724501E-02 -7.546765E-01 -2.070654E-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 -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.731061E-01 -1.428980E-01 -2.729010E-01 -4.130164E-02 -7.434457E-03 -5.527115E-05 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.892565E-01 -3.581801E-02 -6.573174E-01 -3.473163E-01 -1.641852E+00 -9.021844E-01 -2.844653E+00 -1.857026E+00 -3.432563E-02 -1.076561E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.382909E-01 -1.912437E-02 -5.463078E-01 -1.319680E-01 -2.874488E-01 -4.930982E-02 -2.593320E-01 -3.729386E-02 -5.896045E-03 -3.476335E-05 -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 -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 -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 -0.000000E+00 -0.000000E+00 -5.835684E-02 -3.405521E-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 -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.718522E-03 -3.270150E-05 -1.244176E-01 -1.547973E-02 -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 -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 -0.000000E+00 -0.000000E+00 -1.165202E-01 -6.930471E-03 -2.882401E-01 -4.938325E-02 -1.786607E-02 -3.191964E-04 -0.000000E+00 -0.000000E+00 -7.373020E-01 -2.296999E-01 -1.076125E+00 -3.620665E-01 -2.958840E-01 -7.992999E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.215622E-02 -4.908983E-04 -7.663116E-02 -5.274654E-03 -2.330690E-01 -5.432115E-02 -4.899885E-02 -2.400887E-03 -2.509994E-01 -3.312022E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.646162E-01 -2.722494E-02 -2.779035E-01 -3.159893E-02 -2.470259E-01 -3.094098E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.545269E-01 -1.316670E-01 -3.866882E-01 -1.202701E-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 -1.327761E-01 -1.698166E-02 -0.000000E+00 -0.000000E+00 -8.606674E-02 -7.407483E-03 -1.553405E-01 -1.453017E-02 -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.685770E-02 -2.841820E-04 -4.475531E-02 -2.003038E-03 -7.510889E-01 -3.262838E-01 -1.518297E-01 -1.402100E-02 -1.948898E-01 -3.798204E-02 -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 -0.000000E+00 -0.000000E+00 -3.650200E-01 -7.121133E-02 -2.384503E+00 -1.209500E+00 -2.214217E-01 -2.168033E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.375452E-01 -1.835673E-02 -1.548403E-01 -2.397552E-02 -6.058351E-02 -1.850615E-03 -1.431856E-01 -2.050213E-02 -7.003137E-01 -2.735252E-01 -3.979721E-01 -1.307262E-01 -9.764118E-02 -9.533800E-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 -2.762615E-01 -3.559292E-02 -8.969160E-01 -4.355459E-01 -8.832720E-02 -7.801694E-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 -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 -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.149703E+00 -3.989107E-01 -8.049861E-01 -1.599684E-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 -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 -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.449729E-01 -2.101714E-02 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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.355863E-01 -1.838365E-02 -4.228981E-03 -1.788428E-05 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.929647E-02 -9.859789E-03 -2.615062E-01 -3.533945E-02 -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 -0.000000E+00 -0.000000E+00 -1.481609E-01 -2.195167E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.071175E-01 -5.415795E-02 -1.115403E+00 -3.834871E-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 -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 -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.432122E-01 -1.520012E-02 -5.073845E-01 -9.507188E-02 -4.871086E-01 -1.359461E-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 -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 -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.164369E-01 -1.355756E-02 -2.357411E-01 -2.637254E-02 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.200444E-02 -3.844551E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.186127E-01 -1.335481E-02 -2.870320E-01 -4.518339E-02 -0.000000E+00 -0.000000E+00 -1.235293E-01 -1.096341E-02 -1.895015E-01 -3.591083E-02 -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 -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 -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 -3.297202E-01 -5.369813E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.183632E-01 -2.857440E-01 -4.069831E-03 -1.656352E-05 -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 -4.895403E-02 -2.396497E-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 -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 -0.000000E+00 -0.000000E+00 -1.473267E-01 -2.170516E-02 -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 -0.000000E+00 -0.000000E+00 -1.853335E-01 -3.434852E-02 -4.612134E-01 -1.063957E-01 -1.223027E-01 -1.495794E-02 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.750187E-01 -1.153951E-01 -2.136983E-01 -4.566698E-02 -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 -0.000000E+00 -0.000000E+00 -1.771223E-02 -3.137232E-04 -1.358408E-01 -1.019608E-02 -8.209316E-02 -3.505893E-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 -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 -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 -8.078002E-01 -1.757558E-01 -5.722246E-01 -9.204135E-02 -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 -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 -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.354717E-01 -9.718740E-03 -5.221740E-02 -2.726657E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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.663834E-02 -8.107316E-04 -1.574353E-01 -2.355445E-02 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.788668E-02 -1.435401E-03 -2.270802E-02 -5.156541E-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 -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 -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 -0.000000E+00 -0.000000E+00 -8.896790E-03 -7.915287E-05 -4.847729E-02 -2.350047E-03 -2.905640E-01 -8.442745E-02 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -3.452042E-02 -1.191659E-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 -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 -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 -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 -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 -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 -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 -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 -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 -3.679762E-01 -1.354065E-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 -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 -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 -0.000000E+00 -0.000000E+00 -3.727350E-02 -1.389314E-03 -1.316492E-02 -1.733152E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -1.589438E-01 -2.060098E-02 -8.883980E-03 -7.892509E-05 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.085624E-02 -1.178580E-04 -1.326035E-02 -1.758368E-04 -0.000000E+00 -0.000000E+00 -2.901092E-02 -8.416334E-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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.582984E-01 -2.505838E-02 -1.460448E-01 -2.132907E-02 -3.309870E-02 -1.095524E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -4.924729E-01 -2.024222E-01 -2.832772E-02 -8.024597E-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 -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 -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.155931E-01 -1.336177E-02 -2.362142E-01 -5.579715E-02 -6.926635E-01 -2.428256E-01 -5.993460E-03 -3.592156E-05 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -7.171591E-02 -5.143172E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.214580E-02 -2.719184E-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 diff --git a/tests/test_mg_tallies/results_true.dat b/tests/test_mg_tallies/results_true.dat index 4a654639af..cb0498e511 100644 --- a/tests/test_mg_tallies/results_true.dat +++ b/tests/test_mg_tallies/results_true.dat @@ -11,166 +11,6 @@ tally 1: 3.574150E-04 9.366009E-02 2.196850E-03 -2.410307E+00 -1.211320E+00 -7.104710E-02 -1.056830E-03 -3.619111E+00 -2.712466E+00 -3.046789E-02 -2.019483E-04 -7.553639E-02 -1.241275E-03 -2.616860E+00 -1.407243E+00 -7.221083E-02 -1.059301E-03 -3.719840E+00 -2.827103E+00 -2.963219E-02 -1.775955E-04 -7.346451E-02 -1.091590E-03 -2.383417E+00 -1.171863E+00 -6.968054E-02 -9.924374E-04 -3.486989E+00 -2.493855E+00 -2.962148E-02 -1.817051E-04 -7.343795E-02 -1.116850E-03 -2.177844E+00 -9.998272E-01 -6.808817E-02 -9.543925E-04 -3.302614E+00 -2.268097E+00 -3.001326E-02 -1.847730E-04 -7.440926E-02 -1.135706E-03 -2.585363E+00 -1.416531E+00 -7.208386E-02 -1.068367E-03 -3.721777E+00 -2.868016E+00 -2.981132E-02 -1.871051E-04 -7.390860E-02 -1.150041E-03 -2.740199E+00 -1.663131E+00 -8.719535E-02 -1.596752E-03 -4.146740E+00 -3.682203E+00 -3.870935E-02 -3.136109E-04 -9.596871E-02 -1.927608E-03 -2.212799E+00 -1.000035E+00 -7.449165E-02 -1.135538E-03 -3.466616E+00 -2.419923E+00 -3.399202E-02 -2.463541E-04 -8.427346E-02 -1.514215E-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 -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 -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 -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 -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 -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 -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 -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 -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 2.099094E+00 8.919271E-01 7.540489E-02 @@ -181,166 +21,6 @@ tally 1: 2.711517E-04 8.768256E-02 1.666633E-03 -2.413065E+00 -1.186499E+00 -7.505466E-02 -1.154624E-03 -3.609948E+00 -2.664048E+00 -3.294274E-02 -2.242161E-04 -8.167207E-02 -1.378144E-03 -2.536174E+00 -1.301621E+00 -7.790327E-02 -1.242427E-03 -3.836384E+00 -2.980367E+00 -3.409705E-02 -2.443384E-04 -8.453386E-02 -1.501825E-03 -2.666159E+00 -1.492268E+00 -7.417343E-02 -1.141120E-03 -3.912196E+00 -3.186439E+00 -3.075257E-02 -1.953163E-04 -7.624217E-02 -1.200511E-03 -2.459342E+00 -1.286534E+00 -6.409323E-02 -8.519553E-04 -3.511461E+00 -2.568245E+00 -2.550853E-02 -1.387171E-04 -6.324108E-02 -8.526242E-04 -3.227353E+00 -2.189454E+00 -8.161989E-02 -1.366996E-03 -4.465292E+00 -4.143037E+00 -3.169508E-02 -2.069605E-04 -7.857885E-02 -1.272082E-03 -3.006650E+00 -1.972749E+00 -8.846181E-02 -1.643195E-03 -4.449165E+00 -4.222523E+00 -3.779771E-02 -2.999515E-04 -9.370858E-02 -1.843651E-03 -2.591189E+00 -1.530310E+00 -7.305643E-02 -1.114250E-03 -3.732882E+00 -3.031120E+00 -3.039294E-02 -1.919600E-04 -7.535057E-02 -1.179882E-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 -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 -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 -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 -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 -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 -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 -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 -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 2.667561E+00 1.528159E+00 6.981409E-02 @@ -351,166 +31,6 @@ tally 1: 1.628195E-04 6.863038E-02 1.000769E-03 -2.579691E+00 -1.399684E+00 -7.252523E-02 -1.085979E-03 -3.762646E+00 -2.966415E+00 -3.021298E-02 -1.872587E-04 -7.490441E-02 -1.150985E-03 -2.326398E+00 -1.111745E+00 -6.380790E-02 -8.422824E-04 -3.373074E+00 -2.338678E+00 -2.619114E-02 -1.463613E-04 -6.493342E-02 -8.996094E-04 -2.689651E+00 -1.483190E+00 -8.007622E-02 -1.328579E-03 -4.015410E+00 -3.294872E+00 -3.443210E-02 -2.525628E-04 -8.536450E-02 -1.552377E-03 -2.712538E+00 -1.496273E+00 -7.040893E-02 -1.033599E-03 -3.801423E+00 -2.967673E+00 -2.785218E-02 -1.687241E-04 -6.905150E-02 -1.037062E-03 -3.101358E+00 -2.022582E+00 -8.316566E-02 -1.469875E-03 -4.433641E+00 -4.167950E+00 -3.363316E-02 -2.428472E-04 -8.338377E-02 -1.492660E-03 -2.669269E+00 -1.482479E+00 -7.250461E-02 -1.097959E-03 -3.815372E+00 -3.039000E+00 -2.952621E-02 -1.837209E-04 -7.320176E-02 -1.129240E-03 -2.719836E+00 -1.670890E+00 -8.176774E-02 -1.472662E-03 -4.030045E+00 -3.607044E+00 -3.530219E-02 -2.721266E-04 -8.752165E-02 -1.672625E-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 -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 -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 -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 -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 -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 -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 -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 -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 2.643152E+00 1.461242E+00 7.777503E-02 @@ -521,166 +41,6 @@ tally 1: 2.353505E-04 8.228231E-02 1.446581E-03 -2.707136E+00 -1.528526E+00 -7.153411E-02 -1.046460E-03 -3.793295E+00 -2.976791E+00 -2.857458E-02 -1.671752E-04 -7.084247E-02 -1.027542E-03 -2.745209E+00 -1.561299E+00 -7.557988E-02 -1.164281E-03 -3.914803E+00 -3.154166E+00 -3.099509E-02 -1.948889E-04 -7.684344E-02 -1.197884E-03 -3.141608E+00 -2.000672E+00 -8.238823E-02 -1.366316E-03 -4.442048E+00 -3.976219E+00 -3.282615E-02 -2.177028E-04 -8.138301E-02 -1.338110E-03 -3.078971E+00 -1.928690E+00 -8.927133E-02 -1.655293E-03 -4.508330E+00 -4.154031E+00 -3.778191E-02 -3.038622E-04 -9.366939E-02 -1.867688E-03 -3.342682E+00 -2.353374E+00 -9.542381E-02 -1.892530E-03 -4.916807E+00 -5.068483E+00 -4.010858E-02 -3.330650E-04 -9.943770E-02 -2.047183E-03 -2.906350E+00 -1.760817E+00 -8.559496E-02 -1.527401E-03 -4.338708E+00 -3.888336E+00 -3.663301E-02 -2.834528E-04 -9.082102E-02 -1.742242E-03 -2.201534E+00 -1.026489E+00 -7.361463E-02 -1.156634E-03 -3.444005E+00 -2.510736E+00 -3.352726E-02 -2.491193E-04 -8.312121E-02 -1.531211E-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 -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 -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 -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 -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 -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 -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 -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 -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 2.379478E+00 1.220072E+00 7.149541E-02 @@ -691,166 +51,6 @@ tally 1: 1.953397E-04 7.681538E-02 1.200655E-03 -3.155079E+00 -2.066218E+00 -9.171950E-02 -1.711836E-03 -4.700403E+00 -4.503318E+00 -3.904100E-02 -3.167906E-04 -9.679096E-02 -1.947152E-03 -2.737388E+00 -1.515779E+00 -7.304714E-02 -1.077128E-03 -3.854064E+00 -2.996781E+00 -2.937470E-02 -1.746013E-04 -7.282614E-02 -1.073187E-03 -3.294568E+00 -2.201280E+00 -8.370459E-02 -1.449531E-03 -4.567777E+00 -4.247816E+00 -3.258414E-02 -2.266289E-04 -8.078302E-02 -1.392974E-03 -3.040055E+00 -1.908677E+00 -8.543146E-02 -1.469528E-03 -4.395363E+00 -3.943052E+00 -3.551022E-02 -2.539139E-04 -8.803740E-02 -1.560681E-03 -2.733720E+00 -1.608810E+00 -7.575232E-02 -1.234497E-03 -3.955386E+00 -3.353987E+00 -3.126476E-02 -2.114507E-04 -7.751200E-02 -1.299681E-03 -2.633801E+00 -1.566751E+00 -7.851898E-02 -1.276803E-03 -3.867974E+00 -3.237952E+00 -3.370851E-02 -2.331450E-04 -8.357057E-02 -1.433025E-03 -2.649820E+00 -1.500516E+00 -6.849773E-02 -9.733415E-04 -3.744876E+00 -2.926356E+00 -2.706771E-02 -1.530408E-04 -6.710661E-02 -9.406650E-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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 3.128432E+00 2.123023E+00 8.683081E-02 @@ -861,166 +61,6 @@ tally 1: 2.733665E-04 8.913952E-02 1.680246E-03 -2.955891E+00 -1.796192E+00 -8.526700E-02 -1.464085E-03 -4.355866E+00 -3.839684E+00 -3.605221E-02 -2.663621E-04 -8.938111E-02 -1.637194E-03 -2.731962E+00 -1.617682E+00 -7.685258E-02 -1.239175E-03 -4.057901E+00 -3.505399E+00 -3.210546E-02 -2.150275E-04 -7.959627E-02 -1.321666E-03 -3.058734E+00 -1.911285E+00 -8.780153E-02 -1.572171E-03 -4.531361E+00 -4.177302E+00 -3.703146E-02 -2.828466E-04 -9.180888E-02 -1.738516E-03 -2.854688E+00 -1.652859E+00 -8.501906E-02 -1.459424E-03 -4.215336E+00 -3.600073E+00 -3.650039E-02 -2.691434E-04 -9.049224E-02 -1.654289E-03 -2.532385E+00 -1.341692E+00 -7.908024E-02 -1.289149E-03 -3.816608E+00 -3.020090E+00 -3.480705E-02 -2.494950E-04 -8.629409E-02 -1.533520E-03 -2.946914E+00 -1.857842E+00 -7.586572E-02 -1.217999E-03 -4.089763E+00 -3.522165E+00 -2.980738E-02 -1.901498E-04 -7.389883E-02 -1.168755E-03 -2.788908E+00 -1.667764E+00 -7.477958E-02 -1.148212E-03 -4.029335E+00 -3.403340E+00 -3.033277E-02 -1.914118E-04 -7.520139E-02 -1.176512E-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 -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 -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 -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 -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 -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 -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 -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 -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 3.320603E+00 2.324411E+00 9.169756E-02 @@ -1031,166 +71,6 @@ tally 1: 3.050758E-04 9.372640E-02 1.875147E-03 -3.157638E+00 -2.088634E+00 -8.917486E-02 -1.627414E-03 -4.530493E+00 -4.262890E+00 -3.711278E-02 -2.791427E-04 -9.201048E-02 -1.715750E-03 -2.826797E+00 -1.654653E+00 -8.798649E-02 -1.562942E-03 -4.238099E+00 -3.671654E+00 -3.864939E-02 -3.007708E-04 -9.582007E-02 -1.848687E-03 -2.639291E+00 -1.470166E+00 -8.380168E-02 -1.469150E-03 -3.995402E+00 -3.337545E+00 -3.720130E-02 -2.907469E-04 -9.222996E-02 -1.787075E-03 -2.563883E+00 -1.375196E+00 -8.901196E-02 -1.610331E-03 -4.042903E+00 -3.361278E+00 -4.116155E-02 -3.428545E-04 -1.020482E-01 -2.107354E-03 -2.651467E+00 -1.472579E+00 -7.547436E-02 -1.201468E-03 -3.877983E+00 -3.154531E+00 -3.166886E-02 -2.150564E-04 -7.851384E-02 -1.321843E-03 -2.884789E+00 -1.801722E+00 -7.517555E-02 -1.168857E-03 -4.085136E+00 -3.522983E+00 -2.985774E-02 -1.859368E-04 -7.402368E-02 -1.142860E-03 -2.810664E+00 -1.609682E+00 -6.917229E-02 -9.875658E-04 -3.854296E+00 -3.029615E+00 -2.634304E-02 -1.483398E-04 -6.531000E-02 -9.117703E-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 -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 -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 -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 -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 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 3.709821E+00 2.847102E+00 1.037249E-01 @@ -1201,6 +81,166 @@ tally 1: 3.964777E-04 1.065039E-01 2.436949E-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 +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 +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 +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 +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 +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 +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 +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 +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 +2.410307E+00 +1.211320E+00 +7.104710E-02 +1.056830E-03 +3.619111E+00 +2.712466E+00 +3.046789E-02 +2.019483E-04 +7.553639E-02 +1.241275E-03 +2.413065E+00 +1.186499E+00 +7.505466E-02 +1.154624E-03 +3.609948E+00 +2.664048E+00 +3.294274E-02 +2.242161E-04 +8.167207E-02 +1.378144E-03 +2.579691E+00 +1.399684E+00 +7.252523E-02 +1.085979E-03 +3.762646E+00 +2.966415E+00 +3.021298E-02 +1.872587E-04 +7.490441E-02 +1.150985E-03 +2.707136E+00 +1.528526E+00 +7.153411E-02 +1.046460E-03 +3.793295E+00 +2.976791E+00 +2.857458E-02 +1.671752E-04 +7.084247E-02 +1.027542E-03 +3.155079E+00 +2.066218E+00 +9.171950E-02 +1.711836E-03 +4.700403E+00 +4.503318E+00 +3.904100E-02 +3.167906E-04 +9.679096E-02 +1.947152E-03 +2.955891E+00 +1.796192E+00 +8.526700E-02 +1.464085E-03 +4.355866E+00 +3.839684E+00 +3.605221E-02 +2.663621E-04 +8.938111E-02 +1.637194E-03 +3.157638E+00 +2.088634E+00 +8.917486E-02 +1.627414E-03 +4.530493E+00 +4.262890E+00 +3.711278E-02 +2.791427E-04 +9.201048E-02 +1.715750E-03 3.237824E+00 2.159909E+00 9.708289E-02 @@ -1211,6 +251,166 @@ tally 1: 3.503645E-04 1.036145E-01 2.153514E-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 +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 +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 +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 +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 +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 +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 +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 +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 +2.616860E+00 +1.407243E+00 +7.221083E-02 +1.059301E-03 +3.719840E+00 +2.827103E+00 +2.963219E-02 +1.775955E-04 +7.346451E-02 +1.091590E-03 +2.536174E+00 +1.301621E+00 +7.790327E-02 +1.242427E-03 +3.836384E+00 +2.980367E+00 +3.409705E-02 +2.443384E-04 +8.453386E-02 +1.501825E-03 +2.326398E+00 +1.111745E+00 +6.380790E-02 +8.422824E-04 +3.373074E+00 +2.338678E+00 +2.619114E-02 +1.463613E-04 +6.493342E-02 +8.996094E-04 +2.745209E+00 +1.561299E+00 +7.557988E-02 +1.164281E-03 +3.914803E+00 +3.154166E+00 +3.099509E-02 +1.948889E-04 +7.684344E-02 +1.197884E-03 +2.737388E+00 +1.515779E+00 +7.304714E-02 +1.077128E-03 +3.854064E+00 +2.996781E+00 +2.937470E-02 +1.746013E-04 +7.282614E-02 +1.073187E-03 +2.731962E+00 +1.617682E+00 +7.685258E-02 +1.239175E-03 +4.057901E+00 +3.505399E+00 +3.210546E-02 +2.150275E-04 +7.959627E-02 +1.321666E-03 +2.826797E+00 +1.654653E+00 +8.798649E-02 +1.562942E-03 +4.238099E+00 +3.671654E+00 +3.864939E-02 +3.007708E-04 +9.582007E-02 +1.848687E-03 2.503072E+00 1.321745E+00 6.623202E-02 @@ -1221,6 +421,166 @@ tally 1: 1.469478E-04 6.579875E-02 9.032144E-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 +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 +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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +2.383417E+00 +1.171863E+00 +6.968054E-02 +9.924374E-04 +3.486989E+00 +2.493855E+00 +2.962148E-02 +1.817051E-04 +7.343795E-02 +1.116850E-03 +2.666159E+00 +1.492268E+00 +7.417343E-02 +1.141120E-03 +3.912196E+00 +3.186439E+00 +3.075257E-02 +1.953163E-04 +7.624217E-02 +1.200511E-03 +2.689651E+00 +1.483190E+00 +8.007622E-02 +1.328579E-03 +4.015410E+00 +3.294872E+00 +3.443210E-02 +2.525628E-04 +8.536450E-02 +1.552377E-03 +3.141608E+00 +2.000672E+00 +8.238823E-02 +1.366316E-03 +4.442048E+00 +3.976219E+00 +3.282615E-02 +2.177028E-04 +8.138301E-02 +1.338110E-03 +3.294568E+00 +2.201280E+00 +8.370459E-02 +1.449531E-03 +4.567777E+00 +4.247816E+00 +3.258414E-02 +2.266289E-04 +8.078302E-02 +1.392974E-03 +3.058734E+00 +1.911285E+00 +8.780153E-02 +1.572171E-03 +4.531361E+00 +4.177302E+00 +3.703146E-02 +2.828466E-04 +9.180888E-02 +1.738516E-03 +2.639291E+00 +1.470166E+00 +8.380168E-02 +1.469150E-03 +3.995402E+00 +3.337545E+00 +3.720130E-02 +2.907469E-04 +9.222996E-02 +1.787075E-03 2.360183E+00 1.196310E+00 7.336179E-02 @@ -1231,6 +591,166 @@ tally 1: 2.218615E-04 7.989359E-02 1.363671E-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 +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 +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 +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 +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 +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 +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 +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 +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 +2.177844E+00 +9.998272E-01 +6.808817E-02 +9.543925E-04 +3.302614E+00 +2.268097E+00 +3.001326E-02 +1.847730E-04 +7.440926E-02 +1.135706E-03 +2.459342E+00 +1.286534E+00 +6.409323E-02 +8.519553E-04 +3.511461E+00 +2.568245E+00 +2.550853E-02 +1.387171E-04 +6.324108E-02 +8.526242E-04 +2.712538E+00 +1.496273E+00 +7.040893E-02 +1.033599E-03 +3.801423E+00 +2.967673E+00 +2.785218E-02 +1.687241E-04 +6.905150E-02 +1.037062E-03 +3.078971E+00 +1.928690E+00 +8.927133E-02 +1.655293E-03 +4.508330E+00 +4.154031E+00 +3.778191E-02 +3.038622E-04 +9.366939E-02 +1.867688E-03 +3.040055E+00 +1.908677E+00 +8.543146E-02 +1.469528E-03 +4.395363E+00 +3.943052E+00 +3.551022E-02 +2.539139E-04 +8.803740E-02 +1.560681E-03 +2.854688E+00 +1.652859E+00 +8.501906E-02 +1.459424E-03 +4.215336E+00 +3.600073E+00 +3.650039E-02 +2.691434E-04 +9.049224E-02 +1.654289E-03 +2.563883E+00 +1.375196E+00 +8.901196E-02 +1.610331E-03 +4.042903E+00 +3.361278E+00 +4.116155E-02 +3.428545E-04 +1.020482E-01 +2.107354E-03 2.353136E+00 1.260383E+00 7.514099E-02 @@ -1241,6 +761,166 @@ tally 1: 2.280172E-04 8.303643E-02 1.401507E-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 +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 +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 +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 +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 +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 +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 +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 +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 +2.585363E+00 +1.416531E+00 +7.208386E-02 +1.068367E-03 +3.721777E+00 +2.868016E+00 +2.981132E-02 +1.871051E-04 +7.390860E-02 +1.150041E-03 +3.227353E+00 +2.189454E+00 +8.161989E-02 +1.366996E-03 +4.465292E+00 +4.143037E+00 +3.169508E-02 +2.069605E-04 +7.857885E-02 +1.272082E-03 +3.101358E+00 +2.022582E+00 +8.316566E-02 +1.469875E-03 +4.433641E+00 +4.167950E+00 +3.363316E-02 +2.428472E-04 +8.338377E-02 +1.492660E-03 +3.342682E+00 +2.353374E+00 +9.542381E-02 +1.892530E-03 +4.916807E+00 +5.068483E+00 +4.010858E-02 +3.330650E-04 +9.943770E-02 +2.047183E-03 +2.733720E+00 +1.608810E+00 +7.575232E-02 +1.234497E-03 +3.955386E+00 +3.353987E+00 +3.126476E-02 +2.114507E-04 +7.751200E-02 +1.299681E-03 +2.532385E+00 +1.341692E+00 +7.908024E-02 +1.289149E-03 +3.816608E+00 +3.020090E+00 +3.480705E-02 +2.494950E-04 +8.629409E-02 +1.533520E-03 +2.651467E+00 +1.472579E+00 +7.547436E-02 +1.201468E-03 +3.877983E+00 +3.154531E+00 +3.166886E-02 +2.150564E-04 +7.851384E-02 +1.321843E-03 2.404559E+00 1.241962E+00 6.952417E-02 @@ -1251,6 +931,166 @@ tally 1: 1.929942E-04 7.306514E-02 1.186238E-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 +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 +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 +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 +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 +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 +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 +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 +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 +2.740199E+00 +1.663131E+00 +8.719535E-02 +1.596752E-03 +4.146740E+00 +3.682203E+00 +3.870935E-02 +3.136109E-04 +9.596871E-02 +1.927608E-03 +3.006650E+00 +1.972749E+00 +8.846181E-02 +1.643195E-03 +4.449165E+00 +4.222523E+00 +3.779771E-02 +2.999515E-04 +9.370858E-02 +1.843651E-03 +2.669269E+00 +1.482479E+00 +7.250461E-02 +1.097959E-03 +3.815372E+00 +3.039000E+00 +2.952621E-02 +1.837209E-04 +7.320176E-02 +1.129240E-03 +2.906350E+00 +1.760817E+00 +8.559496E-02 +1.527401E-03 +4.338708E+00 +3.888336E+00 +3.663301E-02 +2.834528E-04 +9.082102E-02 +1.742242E-03 +2.633801E+00 +1.566751E+00 +7.851898E-02 +1.276803E-03 +3.867974E+00 +3.237952E+00 +3.370851E-02 +2.331450E-04 +8.357057E-02 +1.433025E-03 +2.946914E+00 +1.857842E+00 +7.586572E-02 +1.217999E-03 +4.089763E+00 +3.522165E+00 +2.980738E-02 +1.901498E-04 +7.389883E-02 +1.168755E-03 +2.884789E+00 +1.801722E+00 +7.517555E-02 +1.168857E-03 +4.085136E+00 +3.522983E+00 +2.985774E-02 +1.859368E-04 +7.402368E-02 +1.142860E-03 2.740499E+00 1.588007E+00 7.592011E-02 @@ -1261,6 +1101,166 @@ tally 1: 2.121705E-04 7.770960E-02 1.304106E-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 +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 +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 +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 +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 +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 +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 +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 +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 +2.212799E+00 +1.000035E+00 +7.449165E-02 +1.135538E-03 +3.466616E+00 +2.419923E+00 +3.399202E-02 +2.463541E-04 +8.427346E-02 +1.514215E-03 +2.591189E+00 +1.530310E+00 +7.305643E-02 +1.114250E-03 +3.732882E+00 +3.031120E+00 +3.039294E-02 +1.919600E-04 +7.535057E-02 +1.179882E-03 +2.719836E+00 +1.670890E+00 +8.176774E-02 +1.472662E-03 +4.030045E+00 +3.607044E+00 +3.530219E-02 +2.721266E-04 +8.752165E-02 +1.672625E-03 +2.201534E+00 +1.026489E+00 +7.361463E-02 +1.156634E-03 +3.444005E+00 +2.510736E+00 +3.352726E-02 +2.491193E-04 +8.312121E-02 +1.531211E-03 +2.649820E+00 +1.500516E+00 +6.849773E-02 +9.733415E-04 +3.744876E+00 +2.926356E+00 +2.706771E-02 +1.530408E-04 +6.710661E-02 +9.406650E-04 +2.788908E+00 +1.667764E+00 +7.477958E-02 +1.148212E-03 +4.029335E+00 +3.403340E+00 +3.033277E-02 +1.914118E-04 +7.520139E-02 +1.176512E-03 +2.810664E+00 +1.609682E+00 +6.917229E-02 +9.875658E-04 +3.854296E+00 +3.029615E+00 +2.634304E-02 +1.483398E-04 +6.531000E-02 +9.117703E-04 2.647586E+00 1.416013E+00 7.421099E-02 diff --git a/tests/test_mgxs_library_mesh/results_true.dat b/tests/test_mgxs_library_mesh/results_true.dat index 2d641cc952..b6656d67b4 100644 --- a/tests/test_mgxs_library_mesh/results_true.dat +++ b/tests/test_mgxs_library_mesh/results_true.dat @@ -1,62 +1,62 @@ mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.640786 0.044177 -1 1 2 1 1 total 0.660597 0.128423 -2 2 1 1 1 total 0.615276 0.104046 +1 1 2 1 1 total 0.615276 0.104046 +2 2 1 1 1 total 0.660597 0.128423 3 2 2 1 1 total 0.646999 0.186709 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.36665 0.048814 -1 1 2 1 1 total 0.40784 0.096486 -2 2 1 1 1 total 0.36356 0.074111 +1 1 2 1 1 total 0.36356 0.074111 +2 2 1 1 1 total 0.40784 0.096486 3 2 2 1 1 total 0.41456 0.160443 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.366650 0.048814 -1 1 2 1 1 total 0.407840 0.096486 -2 2 1 1 1 total 0.363560 0.074111 +1 1 2 1 1 total 0.363560 0.074111 +2 2 1 1 1 total 0.407840 0.096486 3 2 2 1 1 total 0.414593 0.160436 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.025749 0.002863 -1 1 2 1 1 total 0.028400 0.005275 -2 2 1 1 1 total 0.022988 0.004099 +1 1 2 1 1 total 0.022988 0.004099 +2 2 1 1 1 total 0.028400 0.005275 3 2 2 1 1 total 0.027589 0.010350 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.015861 0.002876 -1 1 2 1 1 total 0.017280 0.004371 -2 2 1 1 1 total 0.014403 0.003542 +1 1 2 1 1 total 0.014403 0.003542 +2 2 1 1 1 total 0.017280 0.004371 3 2 2 1 1 total 0.018061 0.010110 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.009888 0.001077 -1 1 2 1 1 total 0.011121 0.002456 -2 2 1 1 1 total 0.008585 0.001552 +1 1 2 1 1 total 0.008585 0.001552 +2 2 1 1 1 total 0.011121 0.002456 3 2 2 1 1 total 0.009527 0.003659 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.026065 0.002907 -1 1 2 1 1 total 0.029084 0.006430 -2 2 1 1 1 total 0.022596 0.004062 +1 1 2 1 1 total 0.022596 0.004062 +2 2 1 1 1 total 0.029084 0.006430 3 2 2 1 1 total 0.025066 0.009687 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 1.938476 0.211550 -1 1 2 1 1 total 2.177360 0.480780 -2 2 1 1 1 total 1.682799 0.303764 +1 1 2 1 1 total 1.682799 0.303764 +2 2 1 1 1 total 2.177360 0.480780 3 2 2 1 1 total 1.864890 0.715661 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.615037 0.041754 -1 1 2 1 1 total 0.632196 0.123878 -2 2 1 1 1 total 0.592288 0.100439 +1 1 2 1 1 total 0.592288 0.100439 +2 2 1 1 1 total 0.632196 0.123878 3 2 2 1 1 total 0.619410 0.177190 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.584014 0.054315 -1 1 2 1 1 total 0.622514 0.111323 -2 2 1 1 1 total 0.587256 0.084833 +1 1 2 1 1 total 0.587256 0.084833 +2 2 1 1 1 total 0.622514 0.111323 3 2 2 1 1 total 0.613792 0.168612 mesh 1 group in group out nuclide moment mean std. dev. x y z @@ -64,14 +64,14 @@ 1 1 1 1 1 1 total P1 0.243427 0.025488 2 1 1 1 1 1 total P2 0.089236 0.007357 3 1 1 1 1 1 total P3 0.008994 0.005768 -4 1 2 1 1 1 total P0 0.622514 0.111323 -5 1 2 1 1 1 total P1 0.239376 0.042594 -6 1 2 1 1 1 total P2 0.088386 0.017200 -7 1 2 1 1 1 total P3 -0.001243 0.005639 -8 2 1 1 1 1 total P0 0.587256 0.084833 -9 2 1 1 1 1 total P1 0.245120 0.041033 -10 2 1 1 1 1 total P2 0.086784 0.016255 -11 2 1 1 1 1 total P3 0.008660 0.004755 +4 1 2 1 1 1 total P0 0.587256 0.084833 +5 1 2 1 1 1 total P1 0.245120 0.041033 +6 1 2 1 1 1 total P2 0.086784 0.016255 +7 1 2 1 1 1 total P3 0.008660 0.004755 +8 2 1 1 1 1 total P0 0.622514 0.111323 +9 2 1 1 1 1 total P1 0.239376 0.042594 +10 2 1 1 1 1 total P2 0.088386 0.017200 +11 2 1 1 1 1 total P3 -0.001243 0.005639 12 2 2 1 1 1 total P0 0.612950 0.167940 13 2 2 1 1 1 total P1 0.226176 0.061882 14 2 2 1 1 1 total P2 0.086593 0.026126 @@ -82,14 +82,14 @@ 1 1 1 1 1 1 total P1 0.243427 0.025488 2 1 1 1 1 1 total P2 0.089236 0.007357 3 1 1 1 1 1 total P3 0.008994 0.005768 -4 1 2 1 1 1 total P0 0.622514 0.111323 -5 1 2 1 1 1 total P1 0.239376 0.042594 -6 1 2 1 1 1 total P2 0.088386 0.017200 -7 1 2 1 1 1 total P3 -0.001243 0.005639 -8 2 1 1 1 1 total P0 0.587256 0.084833 -9 2 1 1 1 1 total P1 0.245120 0.041033 -10 2 1 1 1 1 total P2 0.086784 0.016255 -11 2 1 1 1 1 total P3 0.008660 0.004755 +4 1 2 1 1 1 total P0 0.587256 0.084833 +5 1 2 1 1 1 total P1 0.245120 0.041033 +6 1 2 1 1 1 total P2 0.086784 0.016255 +7 1 2 1 1 1 total P3 0.008660 0.004755 +8 2 1 1 1 1 total P0 0.622514 0.111323 +9 2 1 1 1 1 total P1 0.239376 0.042594 +10 2 1 1 1 1 total P2 0.088386 0.017200 +11 2 1 1 1 1 total P3 -0.001243 0.005639 12 2 2 1 1 1 total P0 0.613792 0.168612 13 2 2 1 1 1 total P1 0.226142 0.061856 14 2 2 1 1 1 total P2 0.086174 0.025979 @@ -97,38 +97,38 @@ mesh 1 group in group out nuclide mean std. dev. x y z 0 1 1 1 1 1 total 1.000000 0.088094 -1 1 2 1 1 1 total 1.000000 0.160891 -2 2 1 1 1 1 total 1.000000 0.126864 +1 1 2 1 1 1 total 1.000000 0.126864 +2 2 1 1 1 1 total 1.000000 0.160891 3 2 2 1 1 1 total 1.001374 0.305883 mesh 1 group in group out nuclide mean std. dev. x y z 0 1 1 1 1 1 total 0.027395 0.004680 -1 1 2 1 1 1 total 0.022914 0.006025 -2 2 1 1 1 1 total 0.019384 0.002846 +1 1 2 1 1 1 total 0.019384 0.002846 +2 2 1 1 1 1 total 0.022914 0.006025 3 2 2 1 1 1 total 0.029629 0.006292 mesh 1 group out nuclide mean std. dev. x y z 0 1 1 1 1 total 1.0 0.220956 -1 1 2 1 1 total 1.0 0.316565 -2 2 1 1 1 total 1.0 0.132140 +1 1 2 1 1 total 1.0 0.132140 +2 2 1 1 1 total 1.0 0.316565 3 2 2 1 1 total 1.0 0.181577 mesh 1 group out nuclide mean std. dev. x y z 0 1 1 1 1 total 1.0 0.222246 -1 1 2 1 1 total 1.0 0.316565 -2 2 1 1 1 total 1.0 0.132140 +1 1 2 1 1 total 1.0 0.132140 +2 2 1 1 1 total 1.0 0.316565 3 2 2 1 1 total 1.0 0.181577 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 3.610522e-07 3.169931e-08 -1 1 2 1 1 total 3.942353e-07 8.459167e-08 -2 2 1 1 1 total 3.097784e-07 5.252025e-08 +1 1 2 1 1 total 3.097784e-07 5.252025e-08 +2 2 1 1 1 total 3.942353e-07 8.459167e-08 3 2 2 1 1 total 3.799163e-07 1.806470e-07 mesh 1 group in nuclide mean std. dev. x y z 0 1 1 1 1 total 0.025920 0.002893 -1 1 2 1 1 total 0.028922 0.006394 -2 2 1 1 1 total 0.022467 0.004039 +1 1 2 1 1 total 0.022467 0.004039 +2 2 1 1 1 total 0.028922 0.006394 3 2 2 1 1 total 0.024923 0.009632 mesh 1 delayedgroup group in nuclide mean std. dev. x y z @@ -138,18 +138,18 @@ 3 1 1 1 4 1 total 0.000054 5.464055e-06 4 1 1 1 5 1 total 0.000026 2.663025e-06 5 1 1 1 6 1 total 0.000010 1.038005e-06 -6 1 2 1 1 1 total 0.000005 1.098837e-06 -7 1 2 1 2 1 total 0.000029 6.436855e-06 -8 1 2 1 3 1 total 0.000027 5.926286e-06 -9 1 2 1 4 1 total 0.000061 1.359391e-05 -10 1 2 1 5 1 total 0.000029 6.489015e-06 -11 1 2 1 6 1 total 0.000011 2.574270e-06 -12 2 1 1 1 1 total 0.000004 6.987770e-07 -13 2 1 1 2 1 total 0.000023 4.115234e-06 -14 2 1 1 3 1 total 0.000021 3.816392e-06 -15 2 1 1 4 1 total 0.000049 8.885822e-06 -16 2 1 1 5 1 total 0.000024 4.378290e-06 -17 2 1 1 6 1 total 0.000009 1.745695e-06 +6 1 2 1 1 1 total 0.000004 6.987770e-07 +7 1 2 1 2 1 total 0.000023 4.115234e-06 +8 1 2 1 3 1 total 0.000021 3.816392e-06 +9 1 2 1 4 1 total 0.000049 8.885822e-06 +10 1 2 1 5 1 total 0.000024 4.378290e-06 +11 1 2 1 6 1 total 0.000009 1.745695e-06 +12 2 1 1 1 1 total 0.000005 1.098837e-06 +13 2 1 1 2 1 total 0.000029 6.436855e-06 +14 2 1 1 3 1 total 0.000027 5.926286e-06 +15 2 1 1 4 1 total 0.000061 1.359391e-05 +16 2 1 1 5 1 total 0.000029 6.489015e-06 +17 2 1 1 6 1 total 0.000011 2.574270e-06 18 2 2 1 1 1 total 0.000004 1.660497e-06 19 2 2 1 2 1 total 0.000025 9.701974e-06 20 2 2 1 3 1 total 0.000023 9.005217e-06 @@ -190,18 +190,18 @@ 3 1 1 1 4 1 total 0.002087 0.000282 4 1 1 1 5 1 total 0.001014 0.000137 5 1 1 1 6 1 total 0.000400 0.000054 -6 1 2 1 1 1 total 0.000171 0.000039 -7 1 2 1 2 1 total 0.001003 0.000226 -8 1 2 1 3 1 total 0.000918 0.000208 -9 1 2 1 4 1 total 0.002100 0.000477 -10 1 2 1 5 1 total 0.000996 0.000228 -11 1 2 1 6 1 total 0.000394 0.000090 -12 2 1 1 1 1 total 0.000167 0.000030 -13 2 1 1 2 1 total 0.001002 0.000178 -14 2 1 1 3 1 total 0.000926 0.000165 -15 2 1 1 4 1 total 0.002149 0.000384 -16 2 1 1 5 1 total 0.001056 0.000189 -17 2 1 1 6 1 total 0.000417 0.000076 +6 1 2 1 1 1 total 0.000167 0.000030 +7 1 2 1 2 1 total 0.001002 0.000178 +8 1 2 1 3 1 total 0.000926 0.000165 +9 1 2 1 4 1 total 0.002149 0.000384 +10 1 2 1 5 1 total 0.001056 0.000189 +11 1 2 1 6 1 total 0.000417 0.000076 +12 2 1 1 1 1 total 0.000171 0.000039 +13 2 1 1 2 1 total 0.001003 0.000226 +14 2 1 1 3 1 total 0.000918 0.000208 +15 2 1 1 4 1 total 0.002100 0.000477 +16 2 1 1 5 1 total 0.000996 0.000228 +17 2 1 1 6 1 total 0.000394 0.000090 18 2 2 1 1 1 total 0.000171 0.000082 19 2 2 1 2 1 total 0.001007 0.000480 20 2 2 1 3 1 total 0.000929 0.000445 diff --git a/tests/test_quadric_surfaces/results_true.dat b/tests/test_quadric_surfaces/results_true.dat index 1f0dd54262..f7aed43e35 100644 --- a/tests/test_quadric_surfaces/results_true.dat +++ b/tests/test_quadric_surfaces/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.570770E-01 2.513234E-02 +9.921357E-01 6.763175E-03 diff --git a/tests/test_score_current/results_true.dat b/tests/test_score_current/results_true.dat index 6b3beb4be8..68dbe069cf 100644 --- a/tests/test_score_current/results_true.dat +++ b/tests/test_score_current/results_true.dat @@ -1 +1 @@ -2800fad5519917ffc985094d3263a3e0aac1abf6acb0c25416264135b36141812cc8d7dafc01585b104b8d6ad03cd44b6ce277fdb7df5a3f859fe26e61244e2a \ No newline at end of file +c2921f159dac64099862c1cd9c6d421c977991f621f954f893ec1351cfcea6794ca2c98c9c2dcc3411f1b8dac91ec83bd895788ba33179222c450a7df1d64f1e \ No newline at end of file diff --git a/tests/test_sourcepoint_restart/results_true.dat b/tests/test_sourcepoint_restart/results_true.dat index 49afeb1d52..0e83121c58 100644 --- a/tests/test_sourcepoint_restart/results_true.dat +++ b/tests/test_sourcepoint_restart/results_true.dat @@ -41,16 +41,16 @@ tally 1: 1.416293E-07 0.000000E+00 0.000000E+00 -7.000000E-03 -1.500000E-05 -3.445754E-03 -3.819507E-06 -2.124056E-03 -1.976201E-06 -1.542203E-03 -1.531669E-06 -4.135720E-03 -4.532612E-06 +2.100000E-02 +1.150000E-04 +5.280651E-03 +1.222273E-05 +5.235520E-03 +1.202448E-05 +5.064093E-03 +1.787892E-05 +1.071093E-02 +2.748613E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -59,8 +59,118 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.874391E-04 -1.725424E-07 +8.954046E-04 +2.673852E-07 +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 +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 +3.100000E-02 +2.130000E-04 +1.472240E-02 +5.500913E-05 +1.077445E-02 +2.987369E-05 +6.729425E-03 +1.249089E-05 +1.363637E-02 +4.345511E-05 +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.182717E-03 +5.268981E-07 +2.000000E-03 +2.000000E-06 +-1.367978E-03 +9.381191E-07 +4.071787E-04 +9.316064E-08 +4.394728E-04 +1.064342E-07 +2.110881E-03 +1.737594E-06 +1.000000E-03 +1.000000E-06 +9.347357E-04 +8.737309E-07 +8.105963E-04 +6.570664E-07 +6.396651E-04 +4.091714E-07 +2.938723E-04 +8.636093E-08 +2.300000E-02 +1.330000E-04 +1.081756E-02 +3.675127E-05 +2.530156E-03 +6.960955E-06 +-1.930911E-03 +4.910249E-06 +1.162826E-02 +3.490280E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.957101E-04 +4.402865E-07 +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 +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.000000E-02 +3.400000E-05 +4.086838E-03 +5.900874E-06 +1.812330E-03 +3.716159E-06 +2.138941E-03 +3.006748E-06 +5.414129E-03 +8.079335E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -71,76 +181,6 @@ tally 1: 0.000000E+00 3.079655E-04 9.484274E-08 -1.000000E-03 -1.000000E-06 -9.451745E-04 -8.933548E-07 -8.400323E-04 -7.056542E-07 -6.931788E-04 -4.804969E-07 -0.000000E+00 -0.000000E+00 -3.000000E-03 -3.000000E-06 -1.134842E-03 -1.040850E-06 -6.127525E-05 -3.988312E-07 -4.938488E-05 -2.738492E-07 -1.484493E-03 -9.722888E-07 -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 -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 -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 -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 -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 0.000000E+00 0.000000E+00 0.000000E+00 @@ -201,16 +241,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.200000E-02 -4.600000E-05 -9.302157E-04 -3.853850E-06 -1.874541E-03 -3.092623E-06 --1.511552E-03 -4.053466E-06 -5.941986E-03 -9.853873E-06 +2.700000E-02 +1.670000E-04 +1.789444E-02 +8.260005E-05 +1.049872E-02 +2.774537E-05 +5.665111E-03 +8.560197E-06 +1.100708E-02 +2.835296E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -219,60 +259,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.186549E-03 -5.291648E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 +3.079655E-04 +9.484274E-08 1.000000E-03 1.000000E-06 -9.893707E-04 -9.788543E-07 -9.682814E-04 -9.375689E-07 -9.370683E-04 -8.780970E-07 -0.000000E+00 -0.000000E+00 -8.000000E-03 -2.000000E-05 -3.721382E-03 -4.736982E-06 --1.037031E-04 -6.648392E-07 --5.996856E-04 -9.642316E-07 -3.248622E-03 -4.063214E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.938723E-04 -8.636093E-08 -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 +-2.856031E-04 +8.156913E-08 +-3.776463E-04 +1.426167E-07 +3.701637E-04 +1.370211E-07 +1.203065E-03 +7.240969E-07 +1.000000E-03 +1.000000E-06 +9.705482E-04 +9.419638E-07 +9.129457E-04 +8.334699E-07 +8.297310E-04 +6.884535E-07 0.000000E+00 0.000000E+00 +4.400000E-02 +4.320000E-04 +1.141886E-02 +4.208707E-05 +9.213446E-03 +2.259305E-05 +9.177440E-03 +2.088782E-05 +2.116869E-02 +9.629049E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -281,16 +299,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.501009E-03 +6.405023E-07 +1.000000E-03 +1.000000E-06 +5.882614E-04 +3.460515E-07 +1.907719E-05 +3.639390E-10 +-3.734703E-04 +1.394801E-07 +1.472277E-03 +9.506220E-07 2.000000E-03 2.000000E-06 -1.502634E-03 -1.146555E-06 -7.198331E-04 -3.484978E-07 --3.426513E-05 -1.342349E-07 -1.511030E-03 -1.198311E-06 +1.830192E-03 +1.679505E-06 +1.519257E-03 +1.189525E-06 +1.118506E-03 +7.332971E-07 +2.977039E-04 +8.862764E-08 +2.000000E-02 +1.080000E-04 +8.640372E-03 +1.765553E-05 +5.688468E-03 +1.038555E-05 +2.447898E-03 +4.466055E-06 +8.949668E-03 +1.935056E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -299,6 +339,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.977039E-04 +8.862764E-08 +1.000000E-03 +1.000000E-06 +-3.805163E-04 +1.447926E-07 +-2.828111E-04 +7.998210E-08 +4.330345E-04 +1.875189E-07 +2.121142E-03 +1.958355E-06 +1.000000E-03 +1.000000E-06 +9.260022E-04 +8.574800E-07 +7.862200E-04 +6.181419E-07 +5.960676E-04 +3.552966E-07 +2.938723E-04 +8.636093E-08 +1.000000E-02 +3.400000E-05 +4.840884E-03 +1.080853E-05 +3.402096E-03 +4.113972E-06 +1.374077E-03 +2.333511E-06 +4.754696E-03 +7.172310E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -307,6 +379,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.079655E-04 +9.484274E-08 +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 @@ -361,16 +441,136 @@ tally 1: 1.052422E-07 0.000000E+00 0.000000E+00 -1.500000E-02 -5.500000E-05 -2.209492E-03 -2.545503E-06 -5.991182E-03 -1.290780E-05 -1.772063E-03 -2.006265E-06 -5.944487E-03 -1.042417E-05 +2.900000E-02 +2.230000E-04 +6.260565E-03 +1.544092E-05 +7.061757E-03 +2.562385E-05 +3.982541E-03 +7.962565E-06 +1.486928E-02 +5.763902E-05 +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.915762E-04 +1.749886E-07 +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.954079E-04 +3.545105E-07 +1.000000E-03 +1.000000E-06 +9.938157E-04 +9.876697E-07 +9.815046E-04 +9.633512E-07 +9.631807E-04 +9.277170E-07 +0.000000E+00 +0.000000E+00 +2.900000E-02 +1.990000E-04 +1.237546E-02 +3.198261E-05 +8.287792E-03 +2.747313E-05 +3.254969E-03 +8.653294E-06 +1.189702E-02 +3.303341E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.033083E-04 +2.720593E-07 +3.000000E-03 +3.000000E-06 +3.649225E-04 +1.756075E-06 +1.134112E-03 +8.940601E-07 +-9.392028E-04 +5.872882E-07 +1.484188E-03 +9.721094E-07 +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 +2.500000E-02 +1.390000E-04 +1.511834E-02 +5.459835E-05 +7.753447E-03 +2.291820E-05 +6.142979E-03 +1.359405E-05 +1.043467E-02 +2.526769E-05 +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.912057E-04 +1.747704E-07 +1.000000E-03 +1.000000E-06 +-1.098110E-04 +1.205846E-08 +-4.819123E-04 +2.322395E-07 +1.614061E-04 +2.605194E-08 +8.813115E-04 +4.316252E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +1.900000E-02 +1.030000E-04 +1.035735E-02 +3.119381E-05 +6.483551E-03 +1.164471E-05 +3.924334E-03 +6.047577E-06 +9.748673E-03 +2.956634E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -389,120 +589,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.190621E-03 -8.859279E-07 -2.000000E-03 -2.000000E-06 -1.908405E-03 -1.821879E-06 -1.732819E-03 -1.508498E-06 -1.487670E-03 -1.131430E-06 -0.000000E+00 -0.000000E+00 -4.000000E-03 -4.000000E-06 -3.379122E-03 -2.880429E-06 -2.320644E-03 -1.498759E-06 -1.119131E-03 -6.212863E-07 -1.494579E-03 -6.241237E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -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 -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 -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 -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 -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 -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 -2.100000E-02 -1.150000E-04 -5.280651E-03 -1.222273E-05 -5.235520E-03 -1.202448E-05 -5.064093E-03 -1.787892E-05 -1.071093E-02 -2.748613E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.954046E-04 -2.673852E-07 +2.935668E-04 +8.618149E-08 +1.000000E-03 +1.000000E-06 +8.623139E-04 +7.435852E-07 +6.153778E-04 +3.786899E-07 +3.095388E-04 +9.581428E-08 0.000000E+00 0.000000E+00 +7.000000E-03 +1.500000E-05 +3.445754E-03 +3.819507E-06 +2.124056E-03 +1.976201E-06 +1.542203E-03 +1.531669E-06 +4.135720E-03 +4.532612E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -511,6 +619,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.874391E-04 +1.725424E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -519,6 +629,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.079655E-04 +9.484274E-08 +1.000000E-03 +1.000000E-06 +9.451745E-04 +8.933548E-07 +8.400323E-04 +7.056542E-07 +6.931788E-04 +4.804969E-07 0.000000E+00 0.000000E+00 2.600000E-02 @@ -561,6 +681,566 @@ tally 1: 5.268483E-07 0.000000E+00 0.000000E+00 +2.900000E-02 +1.950000E-04 +8.928267E-03 +2.594547E-05 +4.752762E-03 +1.522378E-05 +5.376579E-03 +1.088620E-05 +1.461149E-02 +4.367386E-05 +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.912057E-04 +1.747704E-07 +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 +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.900000E-02 +9.700000E-05 +1.046968E-02 +3.828445E-05 +6.704767E-03 +2.668260E-05 +2.659611E-03 +1.143518E-05 +1.099391E-02 +2.847330E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.655540E-03 +2.523801E-06 +3.000000E-03 +5.000000E-06 +2.960960E-03 +4.866206E-06 +2.884206E-03 +4.608867E-06 +2.772329E-03 +4.247272E-06 +2.976389E-04 +8.858892E-08 +6.000000E-03 +8.000000E-06 +2.104495E-03 +2.749678E-06 +8.451272E-04 +9.362821E-07 +5.355137E-04 +3.419837E-07 +2.683856E-03 +1.512640E-06 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +1.000000E-03 +1.000000E-06 +9.374310E-04 +8.787769E-07 +8.181653E-04 +6.693944E-07 +6.533352E-04 +4.268468E-07 +2.976389E-04 +8.858892E-08 +1.200000E-02 +4.600000E-05 +9.302157E-04 +3.853850E-06 +1.874541E-03 +3.092623E-06 +-1.511552E-03 +4.053466E-06 +5.941986E-03 +9.853873E-06 +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.186549E-03 +5.291648E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +1.000000E-03 +1.000000E-06 +9.893707E-04 +9.788543E-07 +9.682814E-04 +9.375689E-07 +9.370683E-04 +8.780970E-07 +0.000000E+00 +0.000000E+00 +2.300000E-02 +1.230000E-04 +5.099566E-03 +9.143616E-06 +4.738751E-03 +7.819254E-06 +3.929250E-03 +6.884420E-06 +1.015650E-02 +2.236950E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.977039E-04 +8.862764E-08 +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.912708E-04 +1.748091E-07 +2.000000E-03 +2.000000E-06 +1.762035E-03 +1.552542E-06 +1.328812E-03 +8.839688E-07 +7.771806E-04 +3.049398E-07 +0.000000E+00 +0.000000E+00 +3.100000E-02 +2.250000E-04 +1.389831E-02 +5.927254E-05 +9.999959E-03 +3.379365E-05 +4.584291E-03 +1.665226E-05 +1.729188E-02 +6.078654E-05 +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.792523E-03 +8.900699E-07 +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 +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.700000E-02 +7.100000E-05 +3.566805E-03 +2.049908E-05 +5.418617E-03 +7.496014E-06 +2.451897E-03 +2.115374E-06 +7.760001E-03 +1.634548E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.977039E-04 +8.862764E-08 +1.000000E-03 +1.000000E-06 +-7.119580E-04 +5.068842E-07 +2.603263E-04 +6.776977E-08 +1.657364E-04 +2.746855E-08 +8.807005E-04 +7.756334E-07 +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 +2.900000E-02 +2.030000E-04 +6.527719E-03 +1.422798E-05 +1.560049E-03 +2.934829E-06 +1.548553E-03 +8.929308E-06 +1.108618E-02 +3.019578E-05 +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.174573E-03 +8.619943E-07 +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 +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.500000E-02 +5.500000E-05 +2.209492E-03 +2.545503E-06 +5.991182E-03 +1.290780E-05 +1.772063E-03 +2.006265E-06 +5.944487E-03 +1.042417E-05 +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.079655E-04 +9.484274E-08 +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.190621E-03 +8.859279E-07 +2.000000E-03 +2.000000E-06 +1.908405E-03 +1.821879E-06 +1.732819E-03 +1.508498E-06 +1.487670E-03 +1.131430E-06 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.460000E-04 +7.818547E-03 +3.176773E-05 +5.200193E-03 +1.419001E-05 +3.947828E-03 +8.417104E-06 +9.232714E-03 +1.900222E-05 +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.186919E-03 +5.294604E-07 +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 +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 +3.600000E-02 +2.740000E-04 +9.407788E-03 +2.403566E-05 +4.480017E-03 +6.102099E-06 +5.941113E-03 +1.265337E-05 +1.462273E-02 +4.551799E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.056694E-04 +1.834704E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.807005E-04 +7.756334E-07 +1.000000E-03 +1.000000E-06 +8.905295E-04 +7.930427E-07 +6.895641E-04 +4.754986E-07 +4.297756E-04 +1.847070E-07 +0.000000E+00 +0.000000E+00 +1.200000E-02 +3.000000E-05 +4.798420E-03 +7.171924E-06 +1.417651E-03 +4.997963E-06 +2.131704E-03 +3.253030E-06 +7.754475E-03 +1.333333E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.938723E-04 +8.636093E-08 +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.484383E-03 +1.504224E-06 +3.000000E-03 +5.000000E-06 +2.760812E-03 +4.139104E-06 +2.336063E-03 +2.844690E-06 +1.817042E-03 +1.656152E-06 +0.000000E+00 +0.000000E+00 +1.900000E-02 +9.900000E-05 +7.385212E-03 +2.033270E-05 +6.336514E-03 +2.028060E-05 +3.967026E-03 +1.027239E-05 +1.066281E-02 +2.937591E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +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 +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 +3.000000E-03 +3.000000E-06 +1.134842E-03 +1.040850E-06 +6.127525E-05 +3.988312E-07 +4.938488E-05 +2.738492E-07 +1.484493E-03 +9.722888E-07 +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 +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 +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 2.300000E-02 1.650000E-04 9.507197E-03 @@ -601,6 +1281,566 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.100000E-02 +2.030000E-04 +1.194795E-02 +4.198084E-05 +8.484089E-03 +1.631808E-05 +5.880364E-03 +1.308096E-05 +1.342551E-02 +3.842917E-05 +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.915762E-04 +1.749886E-07 +1.000000E-03 +1.000000E-06 +-5.881991E-05 +3.459782E-09 +-4.948103E-04 +2.448373E-07 +8.772111E-05 +7.694993E-09 +5.871337E-04 +3.447260E-07 +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.900000E-02 +8.700000E-05 +5.469796E-03 +1.029265E-05 +4.923561E-04 +2.403244E-06 +2.579361E-03 +5.814745E-06 +8.693503E-03 +1.682274E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +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 +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 +8.000000E-03 +1.600000E-05 +5.411154E-03 +8.076329E-06 +3.145940E-03 +4.212660E-06 +2.637510E-03 +3.210372E-06 +3.866944E-03 +3.257876E-06 +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 +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.175489E-03 +1.381775E-06 +1.000000E-03 +1.000000E-06 +7.809681E-04 +6.099112E-07 +4.148668E-04 +1.721145E-07 +1.935089E-05 +3.744570E-10 +0.000000E+00 +0.000000E+00 +8.000000E-03 +2.000000E-05 +3.721382E-03 +4.736982E-06 +-1.037031E-04 +6.648392E-07 +-5.996856E-04 +9.642316E-07 +3.248622E-03 +4.063214E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.938723E-04 +8.636093E-08 +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 +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 +2.800000E-02 +1.780000E-04 +1.190615E-02 +4.434442E-05 +7.332993E-03 +2.337416E-05 +6.867008E-03 +1.321552E-05 +1.283876E-02 +3.527488E-05 +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.954079E-04 +3.545105E-07 +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 +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 +4.000000E-02 +3.880000E-04 +6.620484E-03 +3.751545E-05 +9.255367E-03 +1.963463E-05 +7.761524E-03 +1.694944E-05 +1.659048E-02 +7.200875E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +1.000000E-03 +1.000000E-06 +-5.273064E-04 +2.780520E-07 +-8.292201E-05 +6.876059E-09 +4.244131E-04 +1.801265E-07 +8.891501E-04 +4.407166E-07 +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.200000E-02 +3.400000E-05 +5.905081E-03 +1.535048E-05 +3.856089E-03 +8.589511E-06 +3.244585E-03 +5.882222E-06 +5.074321E-03 +5.793166E-06 +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 +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 +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 +4.000000E-03 +8.000000E-06 +1.520286E-03 +4.076900E-06 +2.191143E-03 +3.717004E-06 +1.161623E-03 +3.726099E-06 +3.570376E-03 +5.251427E-06 +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 +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 +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 +4.000000E-03 +4.000000E-06 +3.379122E-03 +2.880429E-06 +2.320644E-03 +1.498759E-06 +1.119131E-03 +6.212863E-07 +1.494579E-03 +6.241237E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +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 +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 +3.100000E-02 +1.950000E-04 +1.338410E-02 +5.097757E-05 +6.794436E-03 +1.428226E-05 +3.939298E-03 +9.052046E-06 +1.250316E-02 +3.147176E-05 +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.953428E-04 +1.772166E-07 +1.000000E-03 +1.000000E-06 +-5.747626E-05 +3.303520E-09 +-4.950447E-04 +2.450693E-07 +8.573970E-05 +7.351297E-09 +5.954079E-04 +3.545105E-07 +1.000000E-03 +1.000000E-06 +9.748367E-04 +9.503066E-07 +9.254598E-04 +8.564759E-07 +8.537292E-04 +7.288535E-07 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.800000E-04 +1.225587E-02 +3.757196E-05 +7.670283E-03 +2.316758E-05 +5.282346E-03 +1.407031E-05 +1.162837E-02 +3.241151E-05 +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.874391E-04 +1.725424E-07 +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 +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.900000E-02 +9.900000E-05 +7.244455E-03 +2.708286E-05 +4.601657E-03 +5.366244E-06 +-1.675270E-03 +3.867377E-06 +9.216755E-03 +2.272207E-05 +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.079655E-04 +9.484274E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.159310E-04 +3.793709E-07 +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 +6.000000E-03 +1.000000E-05 +1.316884E-03 +2.894217E-06 +2.095957E-03 +1.439521E-06 +1.013831E-04 +8.405300E-07 +2.404012E-03 +1.641294E-06 +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 +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 +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 +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 +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 +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 +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.500000E-02 6.300000E-05 5.790211E-03 @@ -641,16 +1881,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.700000E-02 -1.670000E-04 -1.789444E-02 -8.260005E-05 -1.049872E-02 -2.774537E-05 -5.665111E-03 -8.560197E-06 -1.100708E-02 -2.835296E-05 +1.900000E-02 +1.030000E-04 +3.010784E-03 +6.984061E-06 +5.243839E-03 +8.093978E-06 +-2.502286E-04 +2.564795E-06 +7.760559E-03 +1.654842E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -659,38 +1899,92 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.079655E-04 -9.484274E-08 +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 +2.935668E-04 +8.618149E-08 1.000000E-03 1.000000E-06 --2.856031E-04 -8.156913E-08 --3.776463E-04 -1.426167E-07 -3.701637E-04 -1.370211E-07 -1.203065E-03 -7.240969E-07 -1.000000E-03 -1.000000E-06 -9.705482E-04 -9.419638E-07 -9.129457E-04 -8.334699E-07 -8.297310E-04 -6.884535E-07 +9.333938E-04 +8.712239E-07 +8.068359E-04 +6.509841E-07 +6.328968E-04 +4.005583E-07 +0.000000E+00 +0.000000E+00 +1.800000E-02 +1.220000E-04 +6.860987E-03 +2.966806E-05 +4.229750E-03 +1.617998E-05 +1.295452E-03 +8.613003E-07 +7.815193E-03 +2.039363E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 -2.300000E-02 -1.230000E-04 -5.099566E-03 -9.143616E-06 -4.738751E-03 -7.819254E-06 -3.929250E-03 -6.884420E-06 -1.015650E-02 -2.236950E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -699,8 +1993,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.977039E-04 -8.862764E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -709,28 +2001,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.912708E-04 -1.748091E-07 2.000000E-03 2.000000E-06 -1.762035E-03 -1.552542E-06 -1.328812E-03 -8.839688E-07 -7.771806E-04 -3.049398E-07 -0.000000E+00 -0.000000E+00 -2.800000E-02 -1.780000E-04 -1.190615E-02 -4.434442E-05 -7.332993E-03 -2.337416E-05 -6.867008E-03 -1.321552E-05 -1.283876E-02 -3.527488E-05 +1.502634E-03 +1.146555E-06 +7.198331E-04 +3.484978E-07 +-3.426513E-05 +1.342349E-07 +1.511030E-03 +1.198311E-06 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -739,8 +2021,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.954079E-04 -3.545105E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -802,446 +2082,6 @@ tally 1: 0.000000E+00 0.000000E+00 2.900000E-02 -2.230000E-04 -6.260565E-03 -1.544092E-05 -7.061757E-03 -2.562385E-05 -3.982541E-03 -7.962565E-06 -1.486928E-02 -5.763902E-05 -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.915762E-04 -1.749886E-07 -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.954079E-04 -3.545105E-07 -1.000000E-03 -1.000000E-06 -9.938157E-04 -9.876697E-07 -9.815046E-04 -9.633512E-07 -9.631807E-04 -9.277170E-07 -0.000000E+00 -0.000000E+00 -2.600000E-02 -1.460000E-04 -7.818547E-03 -3.176773E-05 -5.200193E-03 -1.419001E-05 -3.947828E-03 -8.417104E-06 -9.232714E-03 -1.900222E-05 -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.186919E-03 -5.294604E-07 -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 -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 -3.100000E-02 -1.950000E-04 -1.338410E-02 -5.097757E-05 -6.794436E-03 -1.428226E-05 -3.939298E-03 -9.052046E-06 -1.250316E-02 -3.147176E-05 -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.953428E-04 -1.772166E-07 -1.000000E-03 -1.000000E-06 --5.747626E-05 -3.303520E-09 --4.950447E-04 -2.450693E-07 -8.573970E-05 -7.351297E-09 -5.954079E-04 -3.545105E-07 -1.000000E-03 -1.000000E-06 -9.748367E-04 -9.503066E-07 -9.254598E-04 -8.564759E-07 -8.537292E-04 -7.288535E-07 -0.000000E+00 -0.000000E+00 -1.000000E-02 -2.600000E-05 -5.875085E-04 -4.563904E-07 --9.207198E-05 -5.154496E-07 -3.674257E-05 -1.178281E-06 -5.048984E-03 -5.880390E-06 -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.079655E-04 -9.484274E-08 -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.952778E-04 -3.543557E-07 -1.000000E-03 -1.000000E-06 -9.362621E-04 -8.765867E-07 -8.148801E-04 -6.640295E-07 -6.473941E-04 -4.191191E-07 -0.000000E+00 -0.000000E+00 -3.100000E-02 -2.130000E-04 -1.472240E-02 -5.500913E-05 -1.077445E-02 -2.987369E-05 -6.729425E-03 -1.249089E-05 -1.363637E-02 -4.345511E-05 -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.182717E-03 -5.268981E-07 -2.000000E-03 -2.000000E-06 --1.367978E-03 -9.381191E-07 -4.071787E-04 -9.316064E-08 -4.394728E-04 -1.064342E-07 -2.110881E-03 -1.737594E-06 -1.000000E-03 -1.000000E-06 -9.347357E-04 -8.737309E-07 -8.105963E-04 -6.570664E-07 -6.396651E-04 -4.091714E-07 -2.938723E-04 -8.636093E-08 -2.900000E-02 -1.950000E-04 -8.928267E-03 -2.594547E-05 -4.752762E-03 -1.522378E-05 -5.376579E-03 -1.088620E-05 -1.461149E-02 -4.367386E-05 -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.912057E-04 -1.747704E-07 -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 -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 -3.100000E-02 -2.030000E-04 -1.194795E-02 -4.198084E-05 -8.484089E-03 -1.631808E-05 -5.880364E-03 -1.308096E-05 -1.342551E-02 -3.842917E-05 -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.915762E-04 -1.749886E-07 -1.000000E-03 -1.000000E-06 --5.881991E-05 -3.459782E-09 --4.948103E-04 -2.448373E-07 -8.772111E-05 -7.694993E-09 -5.871337E-04 -3.447260E-07 -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.900000E-02 -1.030000E-04 -3.010784E-03 -6.984061E-06 -5.243839E-03 -8.093978E-06 --2.502286E-04 -2.564795E-06 -7.760559E-03 -1.654842E-05 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -1.000000E-03 -1.000000E-06 -9.333938E-04 -8.712239E-07 -8.068359E-04 -6.509841E-07 -6.328968E-04 -4.005583E-07 -0.000000E+00 -0.000000E+00 -4.400000E-02 -4.320000E-04 -1.141886E-02 -4.208707E-05 -9.213446E-03 -2.259305E-05 -9.177440E-03 -2.088782E-05 -2.116869E-02 -9.629049E-05 -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.501009E-03 -6.405023E-07 -1.000000E-03 -1.000000E-06 -5.882614E-04 -3.460515E-07 -1.907719E-05 -3.639390E-10 --3.734703E-04 -1.394801E-07 -1.472277E-03 -9.506220E-07 -2.000000E-03 -2.000000E-06 -1.830192E-03 -1.679505E-06 -1.519257E-03 -1.189525E-06 -1.118506E-03 -7.332971E-07 -2.977039E-04 -8.862764E-08 -3.100000E-02 -2.250000E-04 -1.389831E-02 -5.927254E-05 -9.999959E-03 -3.379365E-05 -4.584291E-03 -1.665226E-05 -1.729188E-02 -6.078654E-05 -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.792523E-03 -8.900699E-07 -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 -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 -4.000000E-02 -3.880000E-04 -6.620484E-03 -3.751545E-05 -9.255367E-03 -1.963463E-05 -7.761524E-03 -1.694944E-05 -1.659048E-02 -7.200875E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -1.000000E-03 -1.000000E-06 --5.273064E-04 -2.780520E-07 --8.292201E-05 -6.876059E-09 -4.244131E-04 -1.801265E-07 -8.891501E-04 -4.407166E-07 -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 -2.900000E-02 1.970000E-04 4.944370E-03 2.340271E-05 @@ -1281,446 +2121,6 @@ tally 1: 3.184788E-07 0.000000E+00 0.000000E+00 -2.900000E-02 -1.990000E-04 -1.237546E-02 -3.198261E-05 -8.287792E-03 -2.747313E-05 -3.254969E-03 -8.653294E-06 -1.189702E-02 -3.303341E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.033083E-04 -2.720593E-07 -3.000000E-03 -3.000000E-06 -3.649225E-04 -1.756075E-06 -1.134112E-03 -8.940601E-07 --9.392028E-04 -5.872882E-07 -1.484188E-03 -9.721094E-07 -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 -3.600000E-02 -2.740000E-04 -9.407788E-03 -2.403566E-05 -4.480017E-03 -6.102099E-06 -5.941113E-03 -1.265337E-05 -1.462273E-02 -4.551799E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.056694E-04 -1.834704E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.807005E-04 -7.756334E-07 -1.000000E-03 -1.000000E-06 -8.905295E-04 -7.930427E-07 -6.895641E-04 -4.754986E-07 -4.297756E-04 -1.847070E-07 -0.000000E+00 -0.000000E+00 -2.600000E-02 -1.800000E-04 -1.225587E-02 -3.757196E-05 -7.670283E-03 -2.316758E-05 -5.282346E-03 -1.407031E-05 -1.162837E-02 -3.241151E-05 -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.874391E-04 -1.725424E-07 -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 -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 -2.000000E-02 -9.000000E-05 -5.358616E-03 -1.697599E-05 -3.060277E-03 -7.132281E-06 -2.485730E-03 -7.247489E-06 -9.248313E-03 -1.738407E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.991712E-04 -2.696131E-07 -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.954079E-04 -3.545105E-07 -1.000000E-03 -1.000000E-06 -9.816220E-04 -9.635817E-07 -9.453726E-04 -8.937294E-07 -8.922496E-04 -7.961093E-07 -0.000000E+00 -0.000000E+00 -2.300000E-02 -1.330000E-04 -1.081756E-02 -3.675127E-05 -2.530156E-03 -6.960955E-06 --1.930911E-03 -4.910249E-06 -1.162826E-02 -3.490280E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.957101E-04 -4.402865E-07 -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 -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.900000E-02 -9.700000E-05 -1.046968E-02 -3.828445E-05 -6.704767E-03 -2.668260E-05 -2.659611E-03 -1.143518E-05 -1.099391E-02 -2.847330E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.655540E-03 -2.523801E-06 -3.000000E-03 -5.000000E-06 -2.960960E-03 -4.866206E-06 -2.884206E-03 -4.608867E-06 -2.772329E-03 -4.247272E-06 -2.976389E-04 -8.858892E-08 -1.900000E-02 -8.700000E-05 -5.469796E-03 -1.029265E-05 -4.923561E-04 -2.403244E-06 -2.579361E-03 -5.814745E-06 -8.693503E-03 -1.682274E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -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 -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.800000E-02 -1.220000E-04 -6.860987E-03 -2.966806E-05 -4.229750E-03 -1.617998E-05 -1.295452E-03 -8.613003E-07 -7.815193E-03 -2.039363E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -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 -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 -2.000000E-02 -1.080000E-04 -8.640372E-03 -1.765553E-05 -5.688468E-03 -1.038555E-05 -2.447898E-03 -4.466055E-06 -8.949668E-03 -1.935056E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.977039E-04 -8.862764E-08 -1.000000E-03 -1.000000E-06 --3.805163E-04 -1.447926E-07 --2.828111E-04 -7.998210E-08 -4.330345E-04 -1.875189E-07 -2.121142E-03 -1.958355E-06 -1.000000E-03 -1.000000E-06 -9.260022E-04 -8.574800E-07 -7.862200E-04 -6.181419E-07 -5.960676E-04 -3.552966E-07 -2.938723E-04 -8.636093E-08 -1.700000E-02 -7.100000E-05 -3.566805E-03 -2.049908E-05 -5.418617E-03 -7.496014E-06 -2.451897E-03 -2.115374E-06 -7.760001E-03 -1.634548E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.977039E-04 -8.862764E-08 -1.000000E-03 -1.000000E-06 --7.119580E-04 -5.068842E-07 -2.603263E-04 -6.776977E-08 -1.657364E-04 -2.746855E-08 -8.807005E-04 -7.756334E-07 -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.200000E-02 -3.400000E-05 -5.905081E-03 -1.535048E-05 -3.856089E-03 -8.589511E-06 -3.244585E-03 -5.882222E-06 -5.074321E-03 -5.793166E-06 -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 -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 -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.600000E-02 5.400000E-05 7.937805E-03 @@ -1761,446 +2161,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.500000E-02 -1.390000E-04 -1.511834E-02 -5.459835E-05 -7.753447E-03 -2.291820E-05 -6.142979E-03 -1.359405E-05 -1.043467E-02 -2.526769E-05 -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.912057E-04 -1.747704E-07 -1.000000E-03 -1.000000E-06 --1.098110E-04 -1.205846E-08 --4.819123E-04 -2.322395E-07 -1.614061E-04 -2.605194E-08 -8.813115E-04 -4.316252E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -1.200000E-02 -3.000000E-05 -4.798420E-03 -7.171924E-06 -1.417651E-03 -4.997963E-06 -2.131704E-03 -3.253030E-06 -7.754475E-03 -1.333333E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.938723E-04 -8.636093E-08 -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.484383E-03 -1.504224E-06 -3.000000E-03 -5.000000E-06 -2.760812E-03 -4.139104E-06 -2.336063E-03 -2.844690E-06 -1.817042E-03 -1.656152E-06 -0.000000E+00 -0.000000E+00 -1.900000E-02 -9.900000E-05 -7.244455E-03 -2.708286E-05 -4.601657E-03 -5.366244E-06 --1.675270E-03 -3.867377E-06 -9.216755E-03 -2.272207E-05 -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.079655E-04 -9.484274E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.159310E-04 -3.793709E-07 -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 -8.000000E-03 -1.800000E-05 -4.925975E-03 -6.260377E-06 -3.176938E-03 -2.631319E-06 -2.008278E-03 -1.484516E-06 -3.844641E-03 -4.075869E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.977039E-04 -8.862764E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.238964E-04 -8.535846E-07 -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.000000E-02 -3.400000E-05 -4.086838E-03 -5.900874E-06 -1.812330E-03 -3.716159E-06 -2.138941E-03 -3.006748E-06 -5.414129E-03 -8.079335E-06 -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.079655E-04 -9.484274E-08 -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 -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 -6.000000E-03 -8.000000E-06 -2.104495E-03 -2.749678E-06 -8.451272E-04 -9.362821E-07 -5.355137E-04 -3.419837E-07 -2.683856E-03 -1.512640E-06 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -1.000000E-03 -1.000000E-06 -9.374310E-04 -8.787769E-07 -8.181653E-04 -6.693944E-07 -6.533352E-04 -4.268468E-07 -2.976389E-04 -8.858892E-08 -8.000000E-03 -1.600000E-05 -5.411154E-03 -8.076329E-06 -3.145940E-03 -4.212660E-06 -2.637510E-03 -3.210372E-06 -3.866944E-03 -3.257876E-06 -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 -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.175489E-03 -1.381775E-06 -1.000000E-03 -1.000000E-06 -7.809681E-04 -6.099112E-07 -4.148668E-04 -1.721145E-07 -1.935089E-05 -3.744570E-10 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -1.000000E-02 -3.400000E-05 -4.840884E-03 -1.080853E-05 -3.402096E-03 -4.113972E-06 -1.374077E-03 -2.333511E-06 -4.754696E-03 -7.172310E-06 -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.079655E-04 -9.484274E-08 -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 -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 -2.900000E-02 -2.030000E-04 -6.527719E-03 -1.422798E-05 -1.560049E-03 -2.934829E-06 -1.548553E-03 -8.929308E-06 -1.108618E-02 -3.019578E-05 -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.174573E-03 -8.619943E-07 -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 -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 -4.000000E-03 -8.000000E-06 -1.520286E-03 -4.076900E-06 -2.191143E-03 -3.717004E-06 -1.161623E-03 -3.726099E-06 -3.570376E-03 -5.251427E-06 -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 -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 -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 2.000000E-03 2.000000E-06 1.447007E-04 @@ -2241,16 +2201,56 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.900000E-02 -1.030000E-04 -1.035735E-02 -3.119381E-05 -6.483551E-03 -1.164471E-05 -3.924334E-03 -6.047577E-06 -9.748673E-03 -2.956634E-05 +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 +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 +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 +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.000000E-02 +2.600000E-05 +5.875085E-04 +4.563904E-07 +-9.207198E-05 +5.154496E-07 +3.674257E-05 +1.178281E-06 +5.048984E-03 +5.880390E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2269,28 +2269,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.935668E-04 -8.618149E-08 +5.952778E-04 +3.543557E-07 1.000000E-03 1.000000E-06 -8.623139E-04 -7.435852E-07 -6.153778E-04 -3.786899E-07 -3.095388E-04 -9.581428E-08 +9.362621E-04 +8.765867E-07 +8.148801E-04 +6.640295E-07 +6.473941E-04 +4.191191E-07 0.000000E+00 0.000000E+00 -1.900000E-02 -9.900000E-05 -7.385212E-03 -2.033270E-05 -6.336514E-03 -2.028060E-05 -3.967026E-03 -1.027239E-05 -1.066281E-02 -2.937591E-05 +2.000000E-02 +9.000000E-05 +5.358616E-03 +1.697599E-05 +3.060277E-03 +7.132281E-06 +2.485730E-03 +7.247489E-06 +9.248313E-03 +1.738407E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2299,8 +2299,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.976389E-04 -8.858892E-08 +8.991712E-04 +2.696131E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2309,6 +2309,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.954079E-04 +3.545105E-07 +1.000000E-03 +1.000000E-06 +9.816220E-04 +9.635817E-07 +9.453726E-04 +8.937294E-07 +8.922496E-04 +7.961093E-07 +0.000000E+00 +0.000000E+00 +8.000000E-03 +1.800000E-05 +4.925975E-03 +6.260377E-06 +3.176938E-03 +2.631319E-06 +2.008278E-03 +1.484516E-06 +3.844641E-03 +4.075869E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2317,32 +2339,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.000000E-03 -1.000000E-05 -1.316884E-03 -2.894217E-06 -2.095957E-03 -1.439521E-06 -1.013831E-04 -8.405300E-07 -2.404012E-03 -1.641294E-06 -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 -0.000000E+00 -0.000000E+00 +2.977039E-04 +8.862764E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2351,6 +2349,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +9.238964E-04 +8.535846E-07 0.000000E+00 0.000000E+00 0.000000E+00 diff --git a/tests/test_statepoint_restart/results_true.dat b/tests/test_statepoint_restart/results_true.dat index 49afeb1d52..0e83121c58 100644 --- a/tests/test_statepoint_restart/results_true.dat +++ b/tests/test_statepoint_restart/results_true.dat @@ -41,16 +41,16 @@ tally 1: 1.416293E-07 0.000000E+00 0.000000E+00 -7.000000E-03 -1.500000E-05 -3.445754E-03 -3.819507E-06 -2.124056E-03 -1.976201E-06 -1.542203E-03 -1.531669E-06 -4.135720E-03 -4.532612E-06 +2.100000E-02 +1.150000E-04 +5.280651E-03 +1.222273E-05 +5.235520E-03 +1.202448E-05 +5.064093E-03 +1.787892E-05 +1.071093E-02 +2.748613E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -59,8 +59,118 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.874391E-04 -1.725424E-07 +8.954046E-04 +2.673852E-07 +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 +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 +3.100000E-02 +2.130000E-04 +1.472240E-02 +5.500913E-05 +1.077445E-02 +2.987369E-05 +6.729425E-03 +1.249089E-05 +1.363637E-02 +4.345511E-05 +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.182717E-03 +5.268981E-07 +2.000000E-03 +2.000000E-06 +-1.367978E-03 +9.381191E-07 +4.071787E-04 +9.316064E-08 +4.394728E-04 +1.064342E-07 +2.110881E-03 +1.737594E-06 +1.000000E-03 +1.000000E-06 +9.347357E-04 +8.737309E-07 +8.105963E-04 +6.570664E-07 +6.396651E-04 +4.091714E-07 +2.938723E-04 +8.636093E-08 +2.300000E-02 +1.330000E-04 +1.081756E-02 +3.675127E-05 +2.530156E-03 +6.960955E-06 +-1.930911E-03 +4.910249E-06 +1.162826E-02 +3.490280E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.957101E-04 +4.402865E-07 +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 +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.000000E-02 +3.400000E-05 +4.086838E-03 +5.900874E-06 +1.812330E-03 +3.716159E-06 +2.138941E-03 +3.006748E-06 +5.414129E-03 +8.079335E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -71,76 +181,6 @@ tally 1: 0.000000E+00 3.079655E-04 9.484274E-08 -1.000000E-03 -1.000000E-06 -9.451745E-04 -8.933548E-07 -8.400323E-04 -7.056542E-07 -6.931788E-04 -4.804969E-07 -0.000000E+00 -0.000000E+00 -3.000000E-03 -3.000000E-06 -1.134842E-03 -1.040850E-06 -6.127525E-05 -3.988312E-07 -4.938488E-05 -2.738492E-07 -1.484493E-03 -9.722888E-07 -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 -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 -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 -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 -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 0.000000E+00 0.000000E+00 0.000000E+00 @@ -201,16 +241,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.200000E-02 -4.600000E-05 -9.302157E-04 -3.853850E-06 -1.874541E-03 -3.092623E-06 --1.511552E-03 -4.053466E-06 -5.941986E-03 -9.853873E-06 +2.700000E-02 +1.670000E-04 +1.789444E-02 +8.260005E-05 +1.049872E-02 +2.774537E-05 +5.665111E-03 +8.560197E-06 +1.100708E-02 +2.835296E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -219,60 +259,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.186549E-03 -5.291648E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 +3.079655E-04 +9.484274E-08 1.000000E-03 1.000000E-06 -9.893707E-04 -9.788543E-07 -9.682814E-04 -9.375689E-07 -9.370683E-04 -8.780970E-07 -0.000000E+00 -0.000000E+00 -8.000000E-03 -2.000000E-05 -3.721382E-03 -4.736982E-06 --1.037031E-04 -6.648392E-07 --5.996856E-04 -9.642316E-07 -3.248622E-03 -4.063214E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.938723E-04 -8.636093E-08 -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 +-2.856031E-04 +8.156913E-08 +-3.776463E-04 +1.426167E-07 +3.701637E-04 +1.370211E-07 +1.203065E-03 +7.240969E-07 +1.000000E-03 +1.000000E-06 +9.705482E-04 +9.419638E-07 +9.129457E-04 +8.334699E-07 +8.297310E-04 +6.884535E-07 0.000000E+00 0.000000E+00 +4.400000E-02 +4.320000E-04 +1.141886E-02 +4.208707E-05 +9.213446E-03 +2.259305E-05 +9.177440E-03 +2.088782E-05 +2.116869E-02 +9.629049E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -281,16 +299,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.501009E-03 +6.405023E-07 +1.000000E-03 +1.000000E-06 +5.882614E-04 +3.460515E-07 +1.907719E-05 +3.639390E-10 +-3.734703E-04 +1.394801E-07 +1.472277E-03 +9.506220E-07 2.000000E-03 2.000000E-06 -1.502634E-03 -1.146555E-06 -7.198331E-04 -3.484978E-07 --3.426513E-05 -1.342349E-07 -1.511030E-03 -1.198311E-06 +1.830192E-03 +1.679505E-06 +1.519257E-03 +1.189525E-06 +1.118506E-03 +7.332971E-07 +2.977039E-04 +8.862764E-08 +2.000000E-02 +1.080000E-04 +8.640372E-03 +1.765553E-05 +5.688468E-03 +1.038555E-05 +2.447898E-03 +4.466055E-06 +8.949668E-03 +1.935056E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -299,6 +339,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.977039E-04 +8.862764E-08 +1.000000E-03 +1.000000E-06 +-3.805163E-04 +1.447926E-07 +-2.828111E-04 +7.998210E-08 +4.330345E-04 +1.875189E-07 +2.121142E-03 +1.958355E-06 +1.000000E-03 +1.000000E-06 +9.260022E-04 +8.574800E-07 +7.862200E-04 +6.181419E-07 +5.960676E-04 +3.552966E-07 +2.938723E-04 +8.636093E-08 +1.000000E-02 +3.400000E-05 +4.840884E-03 +1.080853E-05 +3.402096E-03 +4.113972E-06 +1.374077E-03 +2.333511E-06 +4.754696E-03 +7.172310E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -307,6 +379,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.079655E-04 +9.484274E-08 +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 @@ -361,16 +441,136 @@ tally 1: 1.052422E-07 0.000000E+00 0.000000E+00 -1.500000E-02 -5.500000E-05 -2.209492E-03 -2.545503E-06 -5.991182E-03 -1.290780E-05 -1.772063E-03 -2.006265E-06 -5.944487E-03 -1.042417E-05 +2.900000E-02 +2.230000E-04 +6.260565E-03 +1.544092E-05 +7.061757E-03 +2.562385E-05 +3.982541E-03 +7.962565E-06 +1.486928E-02 +5.763902E-05 +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.915762E-04 +1.749886E-07 +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.954079E-04 +3.545105E-07 +1.000000E-03 +1.000000E-06 +9.938157E-04 +9.876697E-07 +9.815046E-04 +9.633512E-07 +9.631807E-04 +9.277170E-07 +0.000000E+00 +0.000000E+00 +2.900000E-02 +1.990000E-04 +1.237546E-02 +3.198261E-05 +8.287792E-03 +2.747313E-05 +3.254969E-03 +8.653294E-06 +1.189702E-02 +3.303341E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.033083E-04 +2.720593E-07 +3.000000E-03 +3.000000E-06 +3.649225E-04 +1.756075E-06 +1.134112E-03 +8.940601E-07 +-9.392028E-04 +5.872882E-07 +1.484188E-03 +9.721094E-07 +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 +2.500000E-02 +1.390000E-04 +1.511834E-02 +5.459835E-05 +7.753447E-03 +2.291820E-05 +6.142979E-03 +1.359405E-05 +1.043467E-02 +2.526769E-05 +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.912057E-04 +1.747704E-07 +1.000000E-03 +1.000000E-06 +-1.098110E-04 +1.205846E-08 +-4.819123E-04 +2.322395E-07 +1.614061E-04 +2.605194E-08 +8.813115E-04 +4.316252E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +1.900000E-02 +1.030000E-04 +1.035735E-02 +3.119381E-05 +6.483551E-03 +1.164471E-05 +3.924334E-03 +6.047577E-06 +9.748673E-03 +2.956634E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -389,120 +589,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.190621E-03 -8.859279E-07 -2.000000E-03 -2.000000E-06 -1.908405E-03 -1.821879E-06 -1.732819E-03 -1.508498E-06 -1.487670E-03 -1.131430E-06 -0.000000E+00 -0.000000E+00 -4.000000E-03 -4.000000E-06 -3.379122E-03 -2.880429E-06 -2.320644E-03 -1.498759E-06 -1.119131E-03 -6.212863E-07 -1.494579E-03 -6.241237E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -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 -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 -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 -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 -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 -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 -2.100000E-02 -1.150000E-04 -5.280651E-03 -1.222273E-05 -5.235520E-03 -1.202448E-05 -5.064093E-03 -1.787892E-05 -1.071093E-02 -2.748613E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.954046E-04 -2.673852E-07 +2.935668E-04 +8.618149E-08 +1.000000E-03 +1.000000E-06 +8.623139E-04 +7.435852E-07 +6.153778E-04 +3.786899E-07 +3.095388E-04 +9.581428E-08 0.000000E+00 0.000000E+00 +7.000000E-03 +1.500000E-05 +3.445754E-03 +3.819507E-06 +2.124056E-03 +1.976201E-06 +1.542203E-03 +1.531669E-06 +4.135720E-03 +4.532612E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -511,6 +619,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.874391E-04 +1.725424E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -519,6 +629,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.079655E-04 +9.484274E-08 +1.000000E-03 +1.000000E-06 +9.451745E-04 +8.933548E-07 +8.400323E-04 +7.056542E-07 +6.931788E-04 +4.804969E-07 0.000000E+00 0.000000E+00 2.600000E-02 @@ -561,6 +681,566 @@ tally 1: 5.268483E-07 0.000000E+00 0.000000E+00 +2.900000E-02 +1.950000E-04 +8.928267E-03 +2.594547E-05 +4.752762E-03 +1.522378E-05 +5.376579E-03 +1.088620E-05 +1.461149E-02 +4.367386E-05 +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.912057E-04 +1.747704E-07 +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 +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.900000E-02 +9.700000E-05 +1.046968E-02 +3.828445E-05 +6.704767E-03 +2.668260E-05 +2.659611E-03 +1.143518E-05 +1.099391E-02 +2.847330E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.655540E-03 +2.523801E-06 +3.000000E-03 +5.000000E-06 +2.960960E-03 +4.866206E-06 +2.884206E-03 +4.608867E-06 +2.772329E-03 +4.247272E-06 +2.976389E-04 +8.858892E-08 +6.000000E-03 +8.000000E-06 +2.104495E-03 +2.749678E-06 +8.451272E-04 +9.362821E-07 +5.355137E-04 +3.419837E-07 +2.683856E-03 +1.512640E-06 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +1.000000E-03 +1.000000E-06 +9.374310E-04 +8.787769E-07 +8.181653E-04 +6.693944E-07 +6.533352E-04 +4.268468E-07 +2.976389E-04 +8.858892E-08 +1.200000E-02 +4.600000E-05 +9.302157E-04 +3.853850E-06 +1.874541E-03 +3.092623E-06 +-1.511552E-03 +4.053466E-06 +5.941986E-03 +9.853873E-06 +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.186549E-03 +5.291648E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +1.000000E-03 +1.000000E-06 +9.893707E-04 +9.788543E-07 +9.682814E-04 +9.375689E-07 +9.370683E-04 +8.780970E-07 +0.000000E+00 +0.000000E+00 +2.300000E-02 +1.230000E-04 +5.099566E-03 +9.143616E-06 +4.738751E-03 +7.819254E-06 +3.929250E-03 +6.884420E-06 +1.015650E-02 +2.236950E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.977039E-04 +8.862764E-08 +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.912708E-04 +1.748091E-07 +2.000000E-03 +2.000000E-06 +1.762035E-03 +1.552542E-06 +1.328812E-03 +8.839688E-07 +7.771806E-04 +3.049398E-07 +0.000000E+00 +0.000000E+00 +3.100000E-02 +2.250000E-04 +1.389831E-02 +5.927254E-05 +9.999959E-03 +3.379365E-05 +4.584291E-03 +1.665226E-05 +1.729188E-02 +6.078654E-05 +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.792523E-03 +8.900699E-07 +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 +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.700000E-02 +7.100000E-05 +3.566805E-03 +2.049908E-05 +5.418617E-03 +7.496014E-06 +2.451897E-03 +2.115374E-06 +7.760001E-03 +1.634548E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.977039E-04 +8.862764E-08 +1.000000E-03 +1.000000E-06 +-7.119580E-04 +5.068842E-07 +2.603263E-04 +6.776977E-08 +1.657364E-04 +2.746855E-08 +8.807005E-04 +7.756334E-07 +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 +2.900000E-02 +2.030000E-04 +6.527719E-03 +1.422798E-05 +1.560049E-03 +2.934829E-06 +1.548553E-03 +8.929308E-06 +1.108618E-02 +3.019578E-05 +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.174573E-03 +8.619943E-07 +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 +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.500000E-02 +5.500000E-05 +2.209492E-03 +2.545503E-06 +5.991182E-03 +1.290780E-05 +1.772063E-03 +2.006265E-06 +5.944487E-03 +1.042417E-05 +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.079655E-04 +9.484274E-08 +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.190621E-03 +8.859279E-07 +2.000000E-03 +2.000000E-06 +1.908405E-03 +1.821879E-06 +1.732819E-03 +1.508498E-06 +1.487670E-03 +1.131430E-06 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.460000E-04 +7.818547E-03 +3.176773E-05 +5.200193E-03 +1.419001E-05 +3.947828E-03 +8.417104E-06 +9.232714E-03 +1.900222E-05 +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.186919E-03 +5.294604E-07 +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 +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 +3.600000E-02 +2.740000E-04 +9.407788E-03 +2.403566E-05 +4.480017E-03 +6.102099E-06 +5.941113E-03 +1.265337E-05 +1.462273E-02 +4.551799E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.056694E-04 +1.834704E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.807005E-04 +7.756334E-07 +1.000000E-03 +1.000000E-06 +8.905295E-04 +7.930427E-07 +6.895641E-04 +4.754986E-07 +4.297756E-04 +1.847070E-07 +0.000000E+00 +0.000000E+00 +1.200000E-02 +3.000000E-05 +4.798420E-03 +7.171924E-06 +1.417651E-03 +4.997963E-06 +2.131704E-03 +3.253030E-06 +7.754475E-03 +1.333333E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.938723E-04 +8.636093E-08 +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.484383E-03 +1.504224E-06 +3.000000E-03 +5.000000E-06 +2.760812E-03 +4.139104E-06 +2.336063E-03 +2.844690E-06 +1.817042E-03 +1.656152E-06 +0.000000E+00 +0.000000E+00 +1.900000E-02 +9.900000E-05 +7.385212E-03 +2.033270E-05 +6.336514E-03 +2.028060E-05 +3.967026E-03 +1.027239E-05 +1.066281E-02 +2.937591E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +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 +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 +3.000000E-03 +3.000000E-06 +1.134842E-03 +1.040850E-06 +6.127525E-05 +3.988312E-07 +4.938488E-05 +2.738492E-07 +1.484493E-03 +9.722888E-07 +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 +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 +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 2.300000E-02 1.650000E-04 9.507197E-03 @@ -601,6 +1281,566 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.100000E-02 +2.030000E-04 +1.194795E-02 +4.198084E-05 +8.484089E-03 +1.631808E-05 +5.880364E-03 +1.308096E-05 +1.342551E-02 +3.842917E-05 +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.915762E-04 +1.749886E-07 +1.000000E-03 +1.000000E-06 +-5.881991E-05 +3.459782E-09 +-4.948103E-04 +2.448373E-07 +8.772111E-05 +7.694993E-09 +5.871337E-04 +3.447260E-07 +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.900000E-02 +8.700000E-05 +5.469796E-03 +1.029265E-05 +4.923561E-04 +2.403244E-06 +2.579361E-03 +5.814745E-06 +8.693503E-03 +1.682274E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +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 +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 +8.000000E-03 +1.600000E-05 +5.411154E-03 +8.076329E-06 +3.145940E-03 +4.212660E-06 +2.637510E-03 +3.210372E-06 +3.866944E-03 +3.257876E-06 +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 +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.175489E-03 +1.381775E-06 +1.000000E-03 +1.000000E-06 +7.809681E-04 +6.099112E-07 +4.148668E-04 +1.721145E-07 +1.935089E-05 +3.744570E-10 +0.000000E+00 +0.000000E+00 +8.000000E-03 +2.000000E-05 +3.721382E-03 +4.736982E-06 +-1.037031E-04 +6.648392E-07 +-5.996856E-04 +9.642316E-07 +3.248622E-03 +4.063214E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.938723E-04 +8.636093E-08 +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 +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 +2.800000E-02 +1.780000E-04 +1.190615E-02 +4.434442E-05 +7.332993E-03 +2.337416E-05 +6.867008E-03 +1.321552E-05 +1.283876E-02 +3.527488E-05 +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.954079E-04 +3.545105E-07 +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 +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 +4.000000E-02 +3.880000E-04 +6.620484E-03 +3.751545E-05 +9.255367E-03 +1.963463E-05 +7.761524E-03 +1.694944E-05 +1.659048E-02 +7.200875E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +1.000000E-03 +1.000000E-06 +-5.273064E-04 +2.780520E-07 +-8.292201E-05 +6.876059E-09 +4.244131E-04 +1.801265E-07 +8.891501E-04 +4.407166E-07 +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.200000E-02 +3.400000E-05 +5.905081E-03 +1.535048E-05 +3.856089E-03 +8.589511E-06 +3.244585E-03 +5.882222E-06 +5.074321E-03 +5.793166E-06 +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 +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 +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 +4.000000E-03 +8.000000E-06 +1.520286E-03 +4.076900E-06 +2.191143E-03 +3.717004E-06 +1.161623E-03 +3.726099E-06 +3.570376E-03 +5.251427E-06 +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 +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 +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 +4.000000E-03 +4.000000E-06 +3.379122E-03 +2.880429E-06 +2.320644E-03 +1.498759E-06 +1.119131E-03 +6.212863E-07 +1.494579E-03 +6.241237E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.976389E-04 +8.858892E-08 +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 +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 +3.100000E-02 +1.950000E-04 +1.338410E-02 +5.097757E-05 +6.794436E-03 +1.428226E-05 +3.939298E-03 +9.052046E-06 +1.250316E-02 +3.147176E-05 +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.953428E-04 +1.772166E-07 +1.000000E-03 +1.000000E-06 +-5.747626E-05 +3.303520E-09 +-4.950447E-04 +2.450693E-07 +8.573970E-05 +7.351297E-09 +5.954079E-04 +3.545105E-07 +1.000000E-03 +1.000000E-06 +9.748367E-04 +9.503066E-07 +9.254598E-04 +8.564759E-07 +8.537292E-04 +7.288535E-07 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.800000E-04 +1.225587E-02 +3.757196E-05 +7.670283E-03 +2.316758E-05 +5.282346E-03 +1.407031E-05 +1.162837E-02 +3.241151E-05 +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.874391E-04 +1.725424E-07 +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 +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.900000E-02 +9.900000E-05 +7.244455E-03 +2.708286E-05 +4.601657E-03 +5.366244E-06 +-1.675270E-03 +3.867377E-06 +9.216755E-03 +2.272207E-05 +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.079655E-04 +9.484274E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.159310E-04 +3.793709E-07 +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 +6.000000E-03 +1.000000E-05 +1.316884E-03 +2.894217E-06 +2.095957E-03 +1.439521E-06 +1.013831E-04 +8.405300E-07 +2.404012E-03 +1.641294E-06 +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 +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 +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 +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 +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 +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 +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.500000E-02 6.300000E-05 5.790211E-03 @@ -641,16 +1881,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.700000E-02 -1.670000E-04 -1.789444E-02 -8.260005E-05 -1.049872E-02 -2.774537E-05 -5.665111E-03 -8.560197E-06 -1.100708E-02 -2.835296E-05 +1.900000E-02 +1.030000E-04 +3.010784E-03 +6.984061E-06 +5.243839E-03 +8.093978E-06 +-2.502286E-04 +2.564795E-06 +7.760559E-03 +1.654842E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -659,38 +1899,92 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.079655E-04 -9.484274E-08 +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 +2.935668E-04 +8.618149E-08 1.000000E-03 1.000000E-06 --2.856031E-04 -8.156913E-08 --3.776463E-04 -1.426167E-07 -3.701637E-04 -1.370211E-07 -1.203065E-03 -7.240969E-07 -1.000000E-03 -1.000000E-06 -9.705482E-04 -9.419638E-07 -9.129457E-04 -8.334699E-07 -8.297310E-04 -6.884535E-07 +9.333938E-04 +8.712239E-07 +8.068359E-04 +6.509841E-07 +6.328968E-04 +4.005583E-07 +0.000000E+00 +0.000000E+00 +1.800000E-02 +1.220000E-04 +6.860987E-03 +2.966806E-05 +4.229750E-03 +1.617998E-05 +1.295452E-03 +8.613003E-07 +7.815193E-03 +2.039363E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.935668E-04 +8.618149E-08 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 -2.300000E-02 -1.230000E-04 -5.099566E-03 -9.143616E-06 -4.738751E-03 -7.819254E-06 -3.929250E-03 -6.884420E-06 -1.015650E-02 -2.236950E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -699,8 +1993,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.977039E-04 -8.862764E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -709,28 +2001,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.912708E-04 -1.748091E-07 2.000000E-03 2.000000E-06 -1.762035E-03 -1.552542E-06 -1.328812E-03 -8.839688E-07 -7.771806E-04 -3.049398E-07 -0.000000E+00 -0.000000E+00 -2.800000E-02 -1.780000E-04 -1.190615E-02 -4.434442E-05 -7.332993E-03 -2.337416E-05 -6.867008E-03 -1.321552E-05 -1.283876E-02 -3.527488E-05 +1.502634E-03 +1.146555E-06 +7.198331E-04 +3.484978E-07 +-3.426513E-05 +1.342349E-07 +1.511030E-03 +1.198311E-06 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -739,8 +2021,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.954079E-04 -3.545105E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -802,446 +2082,6 @@ tally 1: 0.000000E+00 0.000000E+00 2.900000E-02 -2.230000E-04 -6.260565E-03 -1.544092E-05 -7.061757E-03 -2.562385E-05 -3.982541E-03 -7.962565E-06 -1.486928E-02 -5.763902E-05 -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.915762E-04 -1.749886E-07 -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.954079E-04 -3.545105E-07 -1.000000E-03 -1.000000E-06 -9.938157E-04 -9.876697E-07 -9.815046E-04 -9.633512E-07 -9.631807E-04 -9.277170E-07 -0.000000E+00 -0.000000E+00 -2.600000E-02 -1.460000E-04 -7.818547E-03 -3.176773E-05 -5.200193E-03 -1.419001E-05 -3.947828E-03 -8.417104E-06 -9.232714E-03 -1.900222E-05 -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.186919E-03 -5.294604E-07 -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 -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 -3.100000E-02 -1.950000E-04 -1.338410E-02 -5.097757E-05 -6.794436E-03 -1.428226E-05 -3.939298E-03 -9.052046E-06 -1.250316E-02 -3.147176E-05 -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.953428E-04 -1.772166E-07 -1.000000E-03 -1.000000E-06 --5.747626E-05 -3.303520E-09 --4.950447E-04 -2.450693E-07 -8.573970E-05 -7.351297E-09 -5.954079E-04 -3.545105E-07 -1.000000E-03 -1.000000E-06 -9.748367E-04 -9.503066E-07 -9.254598E-04 -8.564759E-07 -8.537292E-04 -7.288535E-07 -0.000000E+00 -0.000000E+00 -1.000000E-02 -2.600000E-05 -5.875085E-04 -4.563904E-07 --9.207198E-05 -5.154496E-07 -3.674257E-05 -1.178281E-06 -5.048984E-03 -5.880390E-06 -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.079655E-04 -9.484274E-08 -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.952778E-04 -3.543557E-07 -1.000000E-03 -1.000000E-06 -9.362621E-04 -8.765867E-07 -8.148801E-04 -6.640295E-07 -6.473941E-04 -4.191191E-07 -0.000000E+00 -0.000000E+00 -3.100000E-02 -2.130000E-04 -1.472240E-02 -5.500913E-05 -1.077445E-02 -2.987369E-05 -6.729425E-03 -1.249089E-05 -1.363637E-02 -4.345511E-05 -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.182717E-03 -5.268981E-07 -2.000000E-03 -2.000000E-06 --1.367978E-03 -9.381191E-07 -4.071787E-04 -9.316064E-08 -4.394728E-04 -1.064342E-07 -2.110881E-03 -1.737594E-06 -1.000000E-03 -1.000000E-06 -9.347357E-04 -8.737309E-07 -8.105963E-04 -6.570664E-07 -6.396651E-04 -4.091714E-07 -2.938723E-04 -8.636093E-08 -2.900000E-02 -1.950000E-04 -8.928267E-03 -2.594547E-05 -4.752762E-03 -1.522378E-05 -5.376579E-03 -1.088620E-05 -1.461149E-02 -4.367386E-05 -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.912057E-04 -1.747704E-07 -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 -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 -3.100000E-02 -2.030000E-04 -1.194795E-02 -4.198084E-05 -8.484089E-03 -1.631808E-05 -5.880364E-03 -1.308096E-05 -1.342551E-02 -3.842917E-05 -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.915762E-04 -1.749886E-07 -1.000000E-03 -1.000000E-06 --5.881991E-05 -3.459782E-09 --4.948103E-04 -2.448373E-07 -8.772111E-05 -7.694993E-09 -5.871337E-04 -3.447260E-07 -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.900000E-02 -1.030000E-04 -3.010784E-03 -6.984061E-06 -5.243839E-03 -8.093978E-06 --2.502286E-04 -2.564795E-06 -7.760559E-03 -1.654842E-05 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -1.000000E-03 -1.000000E-06 -9.333938E-04 -8.712239E-07 -8.068359E-04 -6.509841E-07 -6.328968E-04 -4.005583E-07 -0.000000E+00 -0.000000E+00 -4.400000E-02 -4.320000E-04 -1.141886E-02 -4.208707E-05 -9.213446E-03 -2.259305E-05 -9.177440E-03 -2.088782E-05 -2.116869E-02 -9.629049E-05 -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.501009E-03 -6.405023E-07 -1.000000E-03 -1.000000E-06 -5.882614E-04 -3.460515E-07 -1.907719E-05 -3.639390E-10 --3.734703E-04 -1.394801E-07 -1.472277E-03 -9.506220E-07 -2.000000E-03 -2.000000E-06 -1.830192E-03 -1.679505E-06 -1.519257E-03 -1.189525E-06 -1.118506E-03 -7.332971E-07 -2.977039E-04 -8.862764E-08 -3.100000E-02 -2.250000E-04 -1.389831E-02 -5.927254E-05 -9.999959E-03 -3.379365E-05 -4.584291E-03 -1.665226E-05 -1.729188E-02 -6.078654E-05 -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.792523E-03 -8.900699E-07 -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 -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 -4.000000E-02 -3.880000E-04 -6.620484E-03 -3.751545E-05 -9.255367E-03 -1.963463E-05 -7.761524E-03 -1.694944E-05 -1.659048E-02 -7.200875E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -1.000000E-03 -1.000000E-06 --5.273064E-04 -2.780520E-07 --8.292201E-05 -6.876059E-09 -4.244131E-04 -1.801265E-07 -8.891501E-04 -4.407166E-07 -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 -2.900000E-02 1.970000E-04 4.944370E-03 2.340271E-05 @@ -1281,446 +2121,6 @@ tally 1: 3.184788E-07 0.000000E+00 0.000000E+00 -2.900000E-02 -1.990000E-04 -1.237546E-02 -3.198261E-05 -8.287792E-03 -2.747313E-05 -3.254969E-03 -8.653294E-06 -1.189702E-02 -3.303341E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.033083E-04 -2.720593E-07 -3.000000E-03 -3.000000E-06 -3.649225E-04 -1.756075E-06 -1.134112E-03 -8.940601E-07 --9.392028E-04 -5.872882E-07 -1.484188E-03 -9.721094E-07 -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 -3.600000E-02 -2.740000E-04 -9.407788E-03 -2.403566E-05 -4.480017E-03 -6.102099E-06 -5.941113E-03 -1.265337E-05 -1.462273E-02 -4.551799E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.056694E-04 -1.834704E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.807005E-04 -7.756334E-07 -1.000000E-03 -1.000000E-06 -8.905295E-04 -7.930427E-07 -6.895641E-04 -4.754986E-07 -4.297756E-04 -1.847070E-07 -0.000000E+00 -0.000000E+00 -2.600000E-02 -1.800000E-04 -1.225587E-02 -3.757196E-05 -7.670283E-03 -2.316758E-05 -5.282346E-03 -1.407031E-05 -1.162837E-02 -3.241151E-05 -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.874391E-04 -1.725424E-07 -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 -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 -2.000000E-02 -9.000000E-05 -5.358616E-03 -1.697599E-05 -3.060277E-03 -7.132281E-06 -2.485730E-03 -7.247489E-06 -9.248313E-03 -1.738407E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.991712E-04 -2.696131E-07 -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.954079E-04 -3.545105E-07 -1.000000E-03 -1.000000E-06 -9.816220E-04 -9.635817E-07 -9.453726E-04 -8.937294E-07 -8.922496E-04 -7.961093E-07 -0.000000E+00 -0.000000E+00 -2.300000E-02 -1.330000E-04 -1.081756E-02 -3.675127E-05 -2.530156E-03 -6.960955E-06 --1.930911E-03 -4.910249E-06 -1.162826E-02 -3.490280E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.957101E-04 -4.402865E-07 -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 -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.900000E-02 -9.700000E-05 -1.046968E-02 -3.828445E-05 -6.704767E-03 -2.668260E-05 -2.659611E-03 -1.143518E-05 -1.099391E-02 -2.847330E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.655540E-03 -2.523801E-06 -3.000000E-03 -5.000000E-06 -2.960960E-03 -4.866206E-06 -2.884206E-03 -4.608867E-06 -2.772329E-03 -4.247272E-06 -2.976389E-04 -8.858892E-08 -1.900000E-02 -8.700000E-05 -5.469796E-03 -1.029265E-05 -4.923561E-04 -2.403244E-06 -2.579361E-03 -5.814745E-06 -8.693503E-03 -1.682274E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -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 -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.800000E-02 -1.220000E-04 -6.860987E-03 -2.966806E-05 -4.229750E-03 -1.617998E-05 -1.295452E-03 -8.613003E-07 -7.815193E-03 -2.039363E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -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 -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 -2.000000E-02 -1.080000E-04 -8.640372E-03 -1.765553E-05 -5.688468E-03 -1.038555E-05 -2.447898E-03 -4.466055E-06 -8.949668E-03 -1.935056E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.977039E-04 -8.862764E-08 -1.000000E-03 -1.000000E-06 --3.805163E-04 -1.447926E-07 --2.828111E-04 -7.998210E-08 -4.330345E-04 -1.875189E-07 -2.121142E-03 -1.958355E-06 -1.000000E-03 -1.000000E-06 -9.260022E-04 -8.574800E-07 -7.862200E-04 -6.181419E-07 -5.960676E-04 -3.552966E-07 -2.938723E-04 -8.636093E-08 -1.700000E-02 -7.100000E-05 -3.566805E-03 -2.049908E-05 -5.418617E-03 -7.496014E-06 -2.451897E-03 -2.115374E-06 -7.760001E-03 -1.634548E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.977039E-04 -8.862764E-08 -1.000000E-03 -1.000000E-06 --7.119580E-04 -5.068842E-07 -2.603263E-04 -6.776977E-08 -1.657364E-04 -2.746855E-08 -8.807005E-04 -7.756334E-07 -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.200000E-02 -3.400000E-05 -5.905081E-03 -1.535048E-05 -3.856089E-03 -8.589511E-06 -3.244585E-03 -5.882222E-06 -5.074321E-03 -5.793166E-06 -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 -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 -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.600000E-02 5.400000E-05 7.937805E-03 @@ -1761,446 +2161,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.500000E-02 -1.390000E-04 -1.511834E-02 -5.459835E-05 -7.753447E-03 -2.291820E-05 -6.142979E-03 -1.359405E-05 -1.043467E-02 -2.526769E-05 -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.912057E-04 -1.747704E-07 -1.000000E-03 -1.000000E-06 --1.098110E-04 -1.205846E-08 --4.819123E-04 -2.322395E-07 -1.614061E-04 -2.605194E-08 -8.813115E-04 -4.316252E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.935668E-04 -8.618149E-08 -1.200000E-02 -3.000000E-05 -4.798420E-03 -7.171924E-06 -1.417651E-03 -4.997963E-06 -2.131704E-03 -3.253030E-06 -7.754475E-03 -1.333333E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.938723E-04 -8.636093E-08 -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.484383E-03 -1.504224E-06 -3.000000E-03 -5.000000E-06 -2.760812E-03 -4.139104E-06 -2.336063E-03 -2.844690E-06 -1.817042E-03 -1.656152E-06 -0.000000E+00 -0.000000E+00 -1.900000E-02 -9.900000E-05 -7.244455E-03 -2.708286E-05 -4.601657E-03 -5.366244E-06 --1.675270E-03 -3.867377E-06 -9.216755E-03 -2.272207E-05 -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.079655E-04 -9.484274E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.159310E-04 -3.793709E-07 -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 -8.000000E-03 -1.800000E-05 -4.925975E-03 -6.260377E-06 -3.176938E-03 -2.631319E-06 -2.008278E-03 -1.484516E-06 -3.844641E-03 -4.075869E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.977039E-04 -8.862764E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.238964E-04 -8.535846E-07 -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.000000E-02 -3.400000E-05 -4.086838E-03 -5.900874E-06 -1.812330E-03 -3.716159E-06 -2.138941E-03 -3.006748E-06 -5.414129E-03 -8.079335E-06 -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.079655E-04 -9.484274E-08 -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 -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 -6.000000E-03 -8.000000E-06 -2.104495E-03 -2.749678E-06 -8.451272E-04 -9.362821E-07 -5.355137E-04 -3.419837E-07 -2.683856E-03 -1.512640E-06 -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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.976389E-04 -8.858892E-08 -1.000000E-03 -1.000000E-06 -9.374310E-04 -8.787769E-07 -8.181653E-04 -6.693944E-07 -6.533352E-04 -4.268468E-07 -2.976389E-04 -8.858892E-08 -8.000000E-03 -1.600000E-05 -5.411154E-03 -8.076329E-06 -3.145940E-03 -4.212660E-06 -2.637510E-03 -3.210372E-06 -3.866944E-03 -3.257876E-06 -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 -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.175489E-03 -1.381775E-06 -1.000000E-03 -1.000000E-06 -7.809681E-04 -6.099112E-07 -4.148668E-04 -1.721145E-07 -1.935089E-05 -3.744570E-10 -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 -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 -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 -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 -0.000000E+00 -0.000000E+00 -1.000000E-02 -3.400000E-05 -4.840884E-03 -1.080853E-05 -3.402096E-03 -4.113972E-06 -1.374077E-03 -2.333511E-06 -4.754696E-03 -7.172310E-06 -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.079655E-04 -9.484274E-08 -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 -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 -2.900000E-02 -2.030000E-04 -6.527719E-03 -1.422798E-05 -1.560049E-03 -2.934829E-06 -1.548553E-03 -8.929308E-06 -1.108618E-02 -3.019578E-05 -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.174573E-03 -8.619943E-07 -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 -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 -4.000000E-03 -8.000000E-06 -1.520286E-03 -4.076900E-06 -2.191143E-03 -3.717004E-06 -1.161623E-03 -3.726099E-06 -3.570376E-03 -5.251427E-06 -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 -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 -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 2.000000E-03 2.000000E-06 1.447007E-04 @@ -2241,16 +2201,56 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.900000E-02 -1.030000E-04 -1.035735E-02 -3.119381E-05 -6.483551E-03 -1.164471E-05 -3.924334E-03 -6.047577E-06 -9.748673E-03 -2.956634E-05 +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 +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 +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 +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.000000E-02 +2.600000E-05 +5.875085E-04 +4.563904E-07 +-9.207198E-05 +5.154496E-07 +3.674257E-05 +1.178281E-06 +5.048984E-03 +5.880390E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2269,28 +2269,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.935668E-04 -8.618149E-08 +5.952778E-04 +3.543557E-07 1.000000E-03 1.000000E-06 -8.623139E-04 -7.435852E-07 -6.153778E-04 -3.786899E-07 -3.095388E-04 -9.581428E-08 +9.362621E-04 +8.765867E-07 +8.148801E-04 +6.640295E-07 +6.473941E-04 +4.191191E-07 0.000000E+00 0.000000E+00 -1.900000E-02 -9.900000E-05 -7.385212E-03 -2.033270E-05 -6.336514E-03 -2.028060E-05 -3.967026E-03 -1.027239E-05 -1.066281E-02 -2.937591E-05 +2.000000E-02 +9.000000E-05 +5.358616E-03 +1.697599E-05 +3.060277E-03 +7.132281E-06 +2.485730E-03 +7.247489E-06 +9.248313E-03 +1.738407E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2299,8 +2299,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.976389E-04 -8.858892E-08 +8.991712E-04 +2.696131E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2309,6 +2309,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.954079E-04 +3.545105E-07 +1.000000E-03 +1.000000E-06 +9.816220E-04 +9.635817E-07 +9.453726E-04 +8.937294E-07 +8.922496E-04 +7.961093E-07 +0.000000E+00 +0.000000E+00 +8.000000E-03 +1.800000E-05 +4.925975E-03 +6.260377E-06 +3.176938E-03 +2.631319E-06 +2.008278E-03 +1.484516E-06 +3.844641E-03 +4.075869E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2317,32 +2339,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.000000E-03 -1.000000E-05 -1.316884E-03 -2.894217E-06 -2.095957E-03 -1.439521E-06 -1.013831E-04 -8.405300E-07 -2.404012E-03 -1.641294E-06 -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 -0.000000E+00 -0.000000E+00 +2.977039E-04 +8.862764E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2351,6 +2349,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +9.238964E-04 +8.535846E-07 0.000000E+00 0.000000E+00 0.000000E+00 diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index d018a65da9..108c7ee800 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -5a0f3f1ae244ada7d8c9f444d7a98c2589a9720e78174a276cf96162df6728bab6d534f136f65cb0386c3235eb7d5db47a0dd6504636ca77e7eb375e6978a84d \ No newline at end of file +a6afd2f11affce2467d77b8477881ab20091f67df4f632226ec2dd5d4cd7fabb9ac3e182563bb467ed249e4b3fe95b319cb688d653757f8ea154759b8a7f50e1 \ No newline at end of file diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 6c2d7a5193..2d995d91e0 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -840d2648f9ba782926c71baa84e5a2ad31331e156740a3d1e9d86af8f1f0d301ef8c0f69474975d365dbcf8d229a68c62d3e60286d18045e5254373f4e1010bf \ No newline at end of file +89b550950d4cb4a63647a068bbbeaefca1c459538fb9c4c91b817e7999f09623365894367f318115647614885903a5d19bbb4cc080832beb5f1794a8f89d392e \ No newline at end of file diff --git a/tests/test_tally_slice_merge/results_true.dat b/tests/test_tally_slice_merge/results_true.dat index 89d415b0d6..278d8ee108 100644 --- a/tests/test_tally_slice_merge/results_true.dat +++ b/tests/test_tally_slice_merge/results_true.dat @@ -49,19 +49,19 @@ 14 (500, 5000, 50000) 6.25e-07 2.00e+01 U238 fission 0.00e+00 0.00e+00 15 (500, 5000, 50000) 6.25e-07 2.00e+01 U238 nu-fission 0.00e+00 0.00e+00 sum(mesh) energy low [MeV] energy high [MeV] nuclide score mean std. dev. -0 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 fission 9.18e-03 1.62e-03 -1 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.24e-02 3.94e-03 -2 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.31e-08 2.08e-09 -3 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.26e-08 5.19e-09 -4 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 fission 8.40e-04 2.13e-04 -5 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 2.06e-03 5.17e-04 -6 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 fission 7.05e-04 3.42e-04 -7 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 1.99e-03 1.01e-03 -8 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 fission 8.77e-03 1.30e-03 -9 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.14e-02 3.18e-03 -10 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.24e-08 1.74e-09 -11 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.08e-08 4.33e-09 -12 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 fission 2.30e-03 6.20e-04 -13 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 5.63e-03 1.52e-03 -14 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 fission 1.45e-03 7.19e-04 -15 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 3.97e-03 1.98e-03 +0 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 fission 8.54e-03 1.30e-03 +1 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.08e-02 3.17e-03 +2 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.21e-08 1.74e-09 +3 ((1, 1, 1), (1, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.01e-08 4.34e-09 +4 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 fission 2.20e-03 6.05e-04 +5 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 5.38e-03 1.48e-03 +6 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 fission 1.40e-03 7.17e-04 +7 ((1, 1, 1), (1, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 3.84e-03 1.97e-03 +8 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 fission 9.40e-03 1.62e-03 +9 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U235 nu-fission 2.29e-02 3.95e-03 +10 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 fission 1.34e-08 2.08e-09 +11 ((2, 1, 1), (2, 2, 1)) 0.00e+00 6.25e-07 U238 nu-fission 3.33e-08 5.18e-09 +12 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 fission 9.41e-04 2.52e-04 +13 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U235 nu-fission 2.31e-03 6.13e-04 +14 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 fission 7.54e-04 3.45e-04 +15 ((2, 1, 1), (2, 2, 1)) 6.25e-07 2.00e+01 U238 nu-fission 2.12e-03 1.02e-03 diff --git a/tests/test_track_output/results_true.dat b/tests/test_track_output/results_true.dat index 6ded87a0ec..1d0ca80399 100644 --- a/tests/test_track_output/results_true.dat +++ b/tests/test_track_output/results_true.dat @@ -1,5 +1,5 @@ - + diff --git a/tests/test_triso/results_true.dat b/tests/test_triso/results_true.dat index ea7da21edf..e5fafb7f61 100644 --- a/tests/test_triso/results_true.dat +++ b/tests/test_triso/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.662675E+00 1.475968E-02 +1.662675E+00 1.475976E-02 From 9161c399d58b7e784396dd4b66f45a842c177d8c Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 16 Aug 2016 19:07:13 -0400 Subject: [PATCH 49/49] reverted failing tests to previous results --- tests/test_asymmetric_lattice/results_true.dat | 2 +- tests/test_quadric_surfaces/results_true.dat | 2 +- tests/test_tally_aggregation/results_true.dat | 2 +- tests/test_triso/results_true.dat | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_asymmetric_lattice/results_true.dat b/tests/test_asymmetric_lattice/results_true.dat index c2014a1912..a33b9c9e59 100644 --- a/tests/test_asymmetric_lattice/results_true.dat +++ b/tests/test_asymmetric_lattice/results_true.dat @@ -1 +1 @@ -280d08e4f4e6768f3100caff91a4c77d3a29ebc05353bdda47e3634f48e2ba2bd1d6a0030a00f97f2ea4c647c93155279697545cf2f951f71b58cfcd400c99de \ No newline at end of file +bc8bef8121f9b6470e4fea817a4e48eabb1ecba1f42761a4cbd77d71181bf9e1612df4a3d6ddfbcd08a3086ac873e5f3c3e560bf96b2b7c959a2f7aad7e4e08d \ No newline at end of file diff --git a/tests/test_quadric_surfaces/results_true.dat b/tests/test_quadric_surfaces/results_true.dat index f7aed43e35..1f0dd54262 100644 --- a/tests/test_quadric_surfaces/results_true.dat +++ b/tests/test_quadric_surfaces/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.921357E-01 6.763175E-03 +9.570770E-01 2.513234E-02 diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index 2d995d91e0..6c2d7a5193 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -89b550950d4cb4a63647a068bbbeaefca1c459538fb9c4c91b817e7999f09623365894367f318115647614885903a5d19bbb4cc080832beb5f1794a8f89d392e \ No newline at end of file +840d2648f9ba782926c71baa84e5a2ad31331e156740a3d1e9d86af8f1f0d301ef8c0f69474975d365dbcf8d229a68c62d3e60286d18045e5254373f4e1010bf \ No newline at end of file diff --git a/tests/test_triso/results_true.dat b/tests/test_triso/results_true.dat index e5fafb7f61..ea7da21edf 100644 --- a/tests/test_triso/results_true.dat +++ b/tests/test_triso/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.662675E+00 1.475976E-02 +1.662675E+00 1.475968E-02