diff --git a/.gitignore b/.gitignore index bfa33d856a..5634632fa4 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ data/nndc # PyCharm project configuration files .idea .idea/* + +# IPython notebook checkpoints +.ipynb_checkpoints \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bbc353f63..fd122a14ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -287,6 +287,22 @@ foreach(test ${TESTS}) WORKING_DIRECTORY ${TEST_PATH} COMMAND $ -p ${TEST_PATH}) + elseif(${test} MATCHES "test_filter_distribcell") + + # Add each case for distribcell tests + add_test(NAME ${TEST_NAME}_case-1 + WORKING_DIRECTORY ${TEST_PATH}/case-1 + COMMAND $ ${TEST_PATH}/case-1) + add_test(NAME ${TEST_NAME}_case-2 + WORKING_DIRECTORY ${TEST_PATH}/case-2 + COMMAND $ ${TEST_PATH}/case-2) + add_test(NAME ${TEST_NAME}_case-3 + WORKING_DIRECTORY ${TEST_PATH}/case-3 + COMMAND $ ${TEST_PATH}/case-3) + add_test(NAME ${TEST_NAME}_case-4 + WORKING_DIRECTORY ${TEST_PATH}/case-4 + COMMAND $ ${TEST_PATH}/case-4) + # If a restart test is encounted, need to run with -r and restart file(s) elseif(${test} MATCHES "restart") @@ -299,9 +315,9 @@ foreach(test ${TESTS}) elseif(${test} MATCHES "test_sourcepoint_restart") set(RESTART_FILE statepoint.07.h5 source.07.h5) elseif(${test} MATCHES "test_particle_restart_eigval") - set(RESTART_FILE particle_12_616.h5) + set(RESTART_FILE particle_9_555.h5) elseif(${test} MATCHES "test_particle_restart_fixed") - set(RESTART_FILE particle_7_6144.h5) + set(RESTART_FILE particle_7_928.h5) else(${test} MATCHES "test_statepoint_restart") message(FATAL_ERROR "Restart test ${test} not recognized") endif(${test} MATCHES "test_statepoint_restart") @@ -314,7 +330,7 @@ foreach(test ${TESTS}) elseif(${test} MATCHES "test_sourcepoint_restart") set(RESTART_FILE statepoint.07.binary source.07.binary) elseif(${test} MATCHES "test_particle_restart_eigval") - set(RESTART_FILE particle_12_616.binary) + set(RESTART_FILE particle_9_555.binary) elseif(${test} MATCHES "test_particle_restart_fixed") set(RESTART_FILE particle_7_6144.binary) else(${test} MATCHES "test_statepoint_restart") diff --git a/docs/source/conf.py b/docs/source/conf.py index 8af607a4b4..4a18f14de5 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -28,7 +28,8 @@ extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.pngmath', 'sphinxcontrib.tikz', - 'sphinx_numfig'] + 'sphinx_numfig', + 'notebook_sphinxext'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -51,9 +52,9 @@ copyright = u'2011-2015, Massachusetts Institute of Technology' # built documents. # # The short X.Y version. -version = "0.6" +version = "0.7" # The full version, including alpha/beta/rc tags. -release = "0.6.2" +release = "0.7.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/source/developers.rst b/docs/source/developers.rst index 56ce5e14ad..d82d89744a 100644 --- a/docs/source/developers.rst +++ b/docs/source/developers.rst @@ -11,7 +11,7 @@ Active development of the OpenMC Monte Carlo code is currently led by: * `Nick Horelik `_ * `Adam Nelson `_ * `Jon Walsh `_ -* `Sterling Harper `_ +* `Sterling Harper `_ * `Will Boyd `_ * `Benoit Forget `_ * `Kord Smith `_ diff --git a/docs/source/devguide/styleguide.rst b/docs/source/devguide/styleguide.rst index 25c58ae773..c8644e45cc 100644 --- a/docs/source/devguide/styleguide.rst +++ b/docs/source/devguide/styleguide.rst @@ -153,6 +153,8 @@ Avoid extraneous whitespace in the following situations: Yes: if (variable == 2) then No: if ( variable==2 ) then +Do not leave trailing whitespace at the end of a line. + ------ Python ------ diff --git a/docs/source/index.rst b/docs/source/index.rst index 02eb1f6d94..8dba920161 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -28,7 +28,7 @@ free to send a message to the User's Group `mailing list`_. :maxdepth: 1 quickinstall - releasenotes/index + releasenotes methods/index usersguide/index devguide/index diff --git a/docs/source/methods/physics.rst b/docs/source/methods/physics.rst index ed10b32343..d0a6a2c992 100644 --- a/docs/source/methods/physics.rst +++ b/docs/source/methods/physics.rst @@ -187,11 +187,11 @@ secondary photons from nuclear de-excitation are tracked in OpenMC. ------------------------ These types of reactions are just treated as inelastic scattering and as such -are subject to the same procedure as described in -:ref:`inelastic-scatter`. Rather than tracking multiple secondary neutrons, the -weight of the outgoing neutron is multiplied by the number of secondary -neutrons, e.g. for :math:`(n,2n)`, only one outgoing neutron is tracked but its -weight is doubled. +are subject to the same procedure as described in :ref:`inelastic-scatter`. For +reactions with integral multiplicity, e.g., :math:`(n,2n)`, an appropriate +number of secondary neutrons are created. For reactions that have a multiplicity +given as a function of the incoming neutron energy (which occasionally occurs +for MT=5), the weight of the outgoing neutron is multiplied by the multiplcity. .. _fission: diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb new file mode 100644 index 0000000000..24c5c00a02 --- /dev/null +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -0,0 +1,2467 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates how systematic analysis of tally scores is possible using Pandas dataframes. A dataframe can be automatically generated using the `Tally.get_pandas_dataframe(...)` method. Furthermore, by linking the tally data in a statepoint file with geometry and material information from a summary file, the dataframe can be shown with user-supplied labels.\n", + "\n", + "**Note:** that this Notebook was created using the latest Pandas v0.16.1. Everything in the Notebook will wun with older versions of Pandas, but the multi-indexing option in >v0.15.0 makes the tables look prettier." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import glob\n", + "from IPython.display import Image\n", + "import matplotlib.pylab as pylab\n", + "import scipy.stats\n", + "import numpy as np\n", + "\n", + "import openmc\n", + "from openmc.statepoint import StatePoint\n", + "from openmc.summary import Summary\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Input Files" + ] + }, + { + "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": true + }, + "outputs": [], + "source": [ + "# Instantiate some Nuclides\n", + "h1 = openmc.Nuclide('H-1')\n", + "b10 = openmc.Nuclide('B-10')\n", + "o16 = openmc.Nuclide('O-16')\n", + "u235 = openmc.Nuclide('U-235')\n", + "u238 = openmc.Nuclide('U-238')\n", + "zr90 = openmc.Nuclide('Zr-90')" + ] + }, + { + "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 pin." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "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 file object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a MaterialsFile, add Materials\n", + "materials_file = openmc.MaterialsFile()\n", + "materials_file.add_material(fuel)\n", + "materials_file.add_material(water)\n", + "materials_file.add_material(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, which we can use OpenMC's lattice/universe feature for. 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", + "# Use both reflective and vacuum boundaries to make life interesting\n", + "min_x = openmc.XPlane(x0=-10.71, boundary_type='reflective')\n", + "max_x = openmc.XPlane(x0=+10.71, boundary_type='vacuum')\n", + "min_y = openmc.YPlane(y0=-10.71, boundary_type='vacuum')\n", + "max_y = openmc.YPlane(y0=+10.71, boundary_type='reflective')\n", + "min_z = openmc.ZPlane(z0=-10.71, boundary_type='reflective')\n", + "max_z = openmc.ZPlane(z0=+10.71, boundary_type='reflective')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create cells that are defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create a Universe to encapsulate a fuel pin\n", + "pin_cell_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.add_surface(fuel_outer_radius, halfspace=-1)\n", + "pin_cell_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.add_surface(fuel_outer_radius, halfspace=+1)\n", + "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "pin_cell_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.add_surface(clad_outer_radius, halfspace=+1)\n", + "pin_cell_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.26cm pitch." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create fuel assembly Lattice\n", + "assembly = openmc.RectLattice(name='1.6% Fuel - 0BA')\n", + "assembly.dimension = (17, 17)\n", + "assembly.pitch = (1.26, 1.26)\n", + "assembly.lower_left = [-1.26 * 17. / 2.0] * 2\n", + "assembly.universes = [[pin_cell_universe] * 17] * 17" + ] + }, + { + "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": 8, + "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.add_surface(min_x, halfspace=+1)\n", + "root_cell.add_surface(max_x, halfspace=-1)\n", + "root_cell.add_surface(min_y, halfspace=+1)\n", + "root_cell.add_surface(max_y, halfspace=-1)\n", + "root_cell.add_surface(min_z, halfspace=+1)\n", + "root_cell.add_surface(max_z, halfspace=-1)\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, put the geometry into a geometry file, and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "geometry = openmc.Geometry()\n", + "geometry.root_universe = root_universe" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a GeometryFile\n", + "geometry_file = openmc.GeometryFile()\n", + "geometry_file.geometry = geometry\n", + "\n", + "# Export to \"geometry.xml\"\n", + "geometry_file.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 5 inactive batches and 15 minimum active batches each with 2500 particles. We also tell OpenMC to turn tally triggers on, which means it will keep running until some criterion on the uncertainty of tallies is reached." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# OpenMC simulation parameters\n", + "min_batches = 20\n", + "max_batches = 200\n", + "inactive = 5\n", + "particles = 2500\n", + "\n", + "# Instantiate a SettingsFile\n", + "settings_file = openmc.SettingsFile()\n", + "settings_file.batches = min_batches\n", + "settings_file.inactive = inactive\n", + "settings_file.particles = particles\n", + "settings_file.output = {'tallies': False, 'summary': True}\n", + "settings_file.trigger_active = True\n", + "settings_file.trigger_max_batches = max_batches\n", + "source_bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n", + "settings_file.set_source_space('box', source_bounds)\n", + "\n", + "# Export to \"settings.xml\"\n", + "settings_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us also create a plot file that we can use to verify that our pin cell geometry was created successfully." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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.width = [21.5, 21.5]\n", + "plot.pixels = [250, 250]\n", + "plot.color = 'mat'\n", + "\n", + "# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n", + "plot_file = openmc.PlotsFile()\n", + "plot_file.add_plot(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": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Run openmc in plotting mode\n", + "executor = openmc.Executor()\n", + "executor.plot_geometry(output=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAPZSURB\nVGje7Zs7buMwEIZ9iey50gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwg\nwIcgg8Cc4fCTSK5W4OeFkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7\nE08mlia+rn7VcKXP8sRszFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WB\nzfiz20hXORmP9fi/bM9EeUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4\nlXju8K3DKv9NThOZ3q2KmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3Oaf\nPX40NGgST2r+uvQkXXp6cKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcub\nlfKGt6apotG/NVx3SInWtLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJb\nf8qlPynYmpKCh7OB1fzNalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utr\nJTy8/06TXh0r/5JOa2JmYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU\n4YuBTPa/8P67l/6r44ds+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m\n/65n+S8p/itN15v0UkW3/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB\n6R3Cqn55U4rv4kfH3zaSgQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6\nbjT6rym9I/v/03/b+LHS4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv\n6h9B/Bfxr9j1Hz2eN/hO8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wX\nfP8Mvf9G37/D/ovuP8SeP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7\n+O+E8zdP/8XOf8Hnz9Dzb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589j\nz5/Y8ej9h4D+W7qQmf57efqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m\n4fwXuH+M3n+OO3++AX9clR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA4LTA4VDA5OjI2\nOjM4KzA3OjAwuRKYlgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0wOC0wOFQwOToyNjozOCswNzow\nMMhPICoAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "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 pin cells with fuel, cladding, and water! Before we run our simulation, we need to tell the code what we want to tally. The following code shows how to create a variety of tallies." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate an empty TalliesFile\n", + "tallies_file = openmc.TalliesFile()\n", + "tallies_file._tallies = []" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instantiate a fission rate mesh Tally" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a tally Mesh\n", + "mesh = openmc.Mesh(mesh_id=1)\n", + "mesh.type = 'rectangular'\n", + "mesh.dimension = [17, 17]\n", + "mesh.lower_left = [-10.71, -10.71]\n", + "mesh.width = [1.26, 1.26]\n", + "\n", + "# Instantiate tally Filter\n", + "mesh_filter = openmc.Filter()\n", + "mesh_filter.mesh = mesh\n", + "\n", + "# Instantiate energy Filter\n", + "energy_filter = openmc.Filter()\n", + "energy_filter.type = 'energy'\n", + "energy_filter.bins = np.array([0, 0.625e-6, 20.])\n", + "\n", + "# Instantiate the Tally\n", + "tally = openmc.Tally(name='mesh tally')\n", + "tally.add_filter(mesh_filter)\n", + "tally.add_filter(energy_filter)\n", + "tally.add_score('fission')\n", + "tally.add_score('nu-fission')\n", + "\n", + "# Add mesh and Tally to TalliesFile\n", + "tallies_file.add_mesh(mesh)\n", + "tallies_file.add_tally(tally)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instantiate a cell Tally with nuclides" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate tally Filter\n", + "cell_filter = openmc.Filter(type='cell', bins=[fuel_cell.id])\n", + "\n", + "# Instantiate the tally\n", + "tally = openmc.Tally(name='cell tally')\n", + "tally.add_filter(cell_filter)\n", + "tally.add_score('scatter-y2')\n", + "tally.add_nuclide(u235)\n", + "tally.add_nuclide(u238)\n", + "\n", + "# Add mesh and tally to TalliesFile\n", + "tallies_file.add_tally(tally)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a \"distribcell\" Tally. The distribcell filter allows us to tally multiple repeated instances of the same cell throughout the geometry." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate tally Filter\n", + "distribcell_filter = openmc.Filter(type='distribcell', bins=[moderator_cell.id])\n", + "\n", + "# Instantiate tally Trigger for kicks\n", + "trigger = openmc.Trigger(trigger_type='std_dev', threshold=5e-5)\n", + "trigger.add_score('absorption')\n", + "\n", + "# Instantiate the Tally\n", + "tally = openmc.Tally(name='distribcell tally')\n", + "tally.add_filter(distribcell_filter)\n", + "tally.add_score('absorption')\n", + "tally.add_score('scatter')\n", + "tally.add_trigger(trigger)\n", + "\n", + "# Add mesh and tally to TalliesFile\n", + "tallies_file.add_tally(tally)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 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": 20, + "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-2015 Massachusetts Institute of Technology\n", + " License: http://mit-crpg.github.io/openmc/license.html\n", + " Version: 0.6.2\n", + " Date/Time: 2015-08-11 13:40:43\n", + " MPI Processes: 4\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading geometry XML file...\n", + " Reading materials XML file...\n", + " Reading tallies XML file...\n", + " Building neighboring cells lists for each surface...\n", + " Loading ACE cross section table: 92238.71c\n", + " Loading ACE cross section table: 8016.71c\n", + " Loading ACE cross section table: 92235.71c\n", + " Loading ACE cross section table: 5010.71c\n", + " Loading ACE cross section table: 1001.71c\n", + " Loading ACE cross section table: 40090.71c\n", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 0.60069 \n", + " 2/1 0.62857 \n", + " 3/1 0.69431 \n", + " 4/1 0.65935 \n", + " 5/1 0.68092 \n", + " 6/1 0.64791 \n", + " 7/1 0.65859 0.65325 +/- 0.00534\n", + " 8/1 0.67381 0.66010 +/- 0.00752\n", + " 9/1 0.74149 0.68045 +/- 0.02103\n", + " 10/1 0.68244 0.68085 +/- 0.01629\n", + " 11/1 0.68068 0.68082 +/- 0.01330\n", + " 12/1 0.70394 0.68412 +/- 0.01172\n", + " 13/1 0.68624 0.68439 +/- 0.01015\n", + " 14/1 0.65667 0.68131 +/- 0.00947\n", + " 15/1 0.70080 0.68326 +/- 0.00869\n", + " 16/1 0.69639 0.68445 +/- 0.00795\n", + " 17/1 0.68786 0.68474 +/- 0.00726\n", + " 18/1 0.63698 0.68106 +/- 0.00762\n", + " 19/1 0.62785 0.67726 +/- 0.00802\n", + " 20/1 0.65759 0.67595 +/- 0.00758\n", + " Triggers unsatisfied, max unc./thresh. is 1.20713 for absorption in tally 10002\n", + " The estimated number of batches is 27\n", + " Creating state point statepoint.020.h5...\n", + " 21/1 0.68391 0.67645 +/- 0.00711\n", + " 22/1 0.69243 0.67739 +/- 0.00674\n", + " 23/1 0.65491 0.67614 +/- 0.00648\n", + " 24/1 0.64021 0.67425 +/- 0.00641\n", + " 25/1 0.72281 0.67668 +/- 0.00655\n", + " 26/1 0.71261 0.67839 +/- 0.00646\n", + " 27/1 0.69503 0.67914 +/- 0.00621\n", + " Triggers satisfied for batch 27\n", + " Creating state point statepoint.027.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 9.7300E-01 seconds\n", + " Reading cross sections = 3.0300E-01 seconds\n", + " Total time in simulation = 5.9130E+00 seconds\n", + " Time in transport only = 5.4000E+00 seconds\n", + " Time in inactive batches = 7.7300E-01 seconds\n", + " Time in active batches = 5.1400E+00 seconds\n", + " Time synchronizing fission bank = 4.4600E-01 seconds\n", + " Sampling source sites = 0.0000E+00 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 9.0000E-03 seconds\n", + " Total time for finalization = 0.0000E+00 seconds\n", + " Total time elapsed = 6.8870E+00 seconds\n", + " Calculation Rate (inactive) = 16170.8 neutrons/second\n", + " Calculation Rate (active) = 7295.72 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 0.68117 +/- 0.00597\n", + " k-effective (Track-length) = 0.67914 +/- 0.00621\n", + " k-effective (Absorption) = 0.67898 +/- 0.00471\n", + " Combined k-effective = 0.67922 +/- 0.00479\n", + " Leakage Fraction = 0.34264 +/- 0.00301\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Remove old HDF5 (summary, statepoint) files\n", + "!rm statepoint.*\n", + "\n", + "# Run OpenMC with MPI!\n", + "executor.run_simulation(mpi_procs=4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tally Data Processing" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# We do not know how many batches were needed to satisfy the \n", + "# tally trigger(s), so find the statepoint file(s)\n", + "statepoints = glob.glob('statepoint.*.h5')\n", + "\n", + "# Load the last statepoint file\n", + "sp = StatePoint(statepoints[-1])\n", + "sp.read_results()\n", + "sp.compute_stdev()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Load the summary file and link with statepoint\n", + "su = Summary('summary.h5')\n", + "sp.link_with_summary(su)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Analyze the mesh fission rate tally**" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10000\n", + "\tName =\tmesh tally\n", + "\tFilters =\t\n", + " \t\tmesh\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t['fission', 'nu-fission']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], + "source": [ + "# Find the mesh tally with the StatePoint API\n", + "tally = sp.get_tally(name='mesh tally')\n", + "\n", + "# Print a little info about the mesh tally to the screen\n", + "print(tally)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use the new Tally data retrieval API with pure NumPy" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.14583021]]\n", + "\n", + " [[ 0.07846909]]\n", + "\n", + " [[ 0.33705448]]\n", + "\n", + " [[ 0.15150059]]]\n" + ] + } + ], + "source": [ + "# Get the relative error for the thermal fission reaction \n", + "# rates in the four corner pins \n", + "data = tally.get_values(scores=['fission'], filters=['mesh', 'energy'], \\\n", + " filter_bins=[((1,1),(1,17), (17,1), (17,17)), \\\n", + " ((0., 0.625e-6),)], value='rel_err')\n", + "print(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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 1energy [MeV]scoremeanstd. dev.
xyz
bin
01110.0e+00 - 6.3e-07fission0.0002360.000034
11110.0e+00 - 6.3e-07nu-fission0.0005760.000084
21116.3e-07 - 2.0e+01fission0.0000690.000004
31116.3e-07 - 2.0e+01nu-fission0.0001830.000011
41210.0e+00 - 6.3e-07fission0.0003660.000052
51210.0e+00 - 6.3e-07nu-fission0.0008920.000127
61216.3e-07 - 2.0e+01fission0.0001090.000009
71216.3e-07 - 2.0e+01nu-fission0.0002840.000021
81310.0e+00 - 6.3e-07fission0.0005400.000058
91310.0e+00 - 6.3e-07nu-fission0.0013160.000141
101316.3e-07 - 2.0e+01fission0.0001440.000017
111316.3e-07 - 2.0e+01nu-fission0.0003760.000041
121410.0e+00 - 6.3e-07fission0.0008300.000085
131410.0e+00 - 6.3e-07nu-fission0.0020220.000207
141416.3e-07 - 2.0e+01fission0.0001680.000013
151416.3e-07 - 2.0e+01nu-fission0.0004340.000034
161510.0e+00 - 6.3e-07fission0.0007380.000043
171510.0e+00 - 6.3e-07nu-fission0.0017990.000105
181516.3e-07 - 2.0e+01fission0.0001860.000010
191516.3e-07 - 2.0e+01nu-fission0.0004860.000026
\n", + "
" + ], + "text/plain": [ + " mesh 1 energy [MeV] score mean std. dev.\n", + " x y z \n", + "bin \n", + "0 1 1 1 0.0e+00 - 6.3e-07 fission 0.000236 0.000034\n", + "1 1 1 1 0.0e+00 - 6.3e-07 nu-fission 0.000576 0.000084\n", + "2 1 1 1 6.3e-07 - 2.0e+01 fission 0.000069 0.000004\n", + "3 1 1 1 6.3e-07 - 2.0e+01 nu-fission 0.000183 0.000011\n", + "4 1 2 1 0.0e+00 - 6.3e-07 fission 0.000366 0.000052\n", + "5 1 2 1 0.0e+00 - 6.3e-07 nu-fission 0.000892 0.000127\n", + "6 1 2 1 6.3e-07 - 2.0e+01 fission 0.000109 0.000009\n", + "7 1 2 1 6.3e-07 - 2.0e+01 nu-fission 0.000284 0.000021\n", + "8 1 3 1 0.0e+00 - 6.3e-07 fission 0.000540 0.000058\n", + "9 1 3 1 0.0e+00 - 6.3e-07 nu-fission 0.001316 0.000141\n", + "10 1 3 1 6.3e-07 - 2.0e+01 fission 0.000144 0.000017\n", + "11 1 3 1 6.3e-07 - 2.0e+01 nu-fission 0.000376 0.000041\n", + "12 1 4 1 0.0e+00 - 6.3e-07 fission 0.000830 0.000085\n", + "13 1 4 1 0.0e+00 - 6.3e-07 nu-fission 0.002022 0.000207\n", + "14 1 4 1 6.3e-07 - 2.0e+01 fission 0.000168 0.000013\n", + "15 1 4 1 6.3e-07 - 2.0e+01 nu-fission 0.000434 0.000034\n", + "16 1 5 1 0.0e+00 - 6.3e-07 fission 0.000738 0.000043\n", + "17 1 5 1 0.0e+00 - 6.3e-07 nu-fission 0.001799 0.000105\n", + "18 1 5 1 6.3e-07 - 2.0e+01 fission 0.000186 0.000010\n", + "19 1 5 1 6.3e-07 - 2.0e+01 nu-fission 0.000486 0.000026" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get a pandas dataframe for the mesh tally data\n", + "df = tally.get_pandas_dataframe(nuclides=False)\n", + "\n", + "# Print the first twenty rows in the dataframe\n", + "df.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a boxplot to view the distribution of\n", + "# fission and nu-fission rates in the pins\n", + "bp = df.boxplot(column='mean', by='score')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Extract thermal nu-fission rates from pandas\n", + "fiss = df[df['score'] == 'nu-fission']\n", + "fiss = fiss[fiss['energy [MeV]'] == '0.0e+00 - 6.3e-07']\n", + "\n", + "# Extract mean and reshape as 2D NumPy arrays\n", + "mean = fiss['mean'].reshape((17,17))\n", + "\n", + "pylab.imshow(mean, interpolation='nearest')\n", + "pylab.title('fission rate')\n", + "pylab.xlabel('x')\n", + "pylab.ylabel('y')\n", + "pylab.colorbar()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Analyze the cell+nuclides scatter-y2 rate tally**" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10001\n", + "\tName =\tcell tally\n", + "\tFilters =\t\n", + " \t\tcell\t[10000]\n", + "\tNuclides =\tU-235 U-238 \n", + "\tScores =\t['scatter-Y0,0', 'scatter-Y1,-1', 'scatter-Y1,0', 'scatter-Y1,1', 'scatter-Y2,-2', 'scatter-Y2,-1', 'scatter-Y2,0', 'scatter-Y2,1', 'scatter-Y2,2']\n", + "\tEstimator =\tanalog\n", + "\n" + ] + } + ], + "source": [ + "# Find the cell Tally with the StatePoint API\n", + "tally = sp.get_tally(name='cell tally')\n", + "\n", + "# Print a little info about the cell tally to the screen\n", + "print(tally)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellnuclidescoremeanstd. dev.
bin
010000U-235scatter-Y0,00.0364530.000941
110000U-235scatter-Y1,-1-0.0007250.000261
210000U-235scatter-Y1,0-0.0000880.000408
310000U-235scatter-Y1,10.0009860.000412
410000U-235scatter-Y2,-20.0000980.000204
510000U-235scatter-Y2,-1-0.0003580.000247
610000U-235scatter-Y2,00.0001970.000140
710000U-235scatter-Y2,1-0.0000840.000196
810000U-235scatter-Y2,20.0000520.000168
910000U-238scatter-Y0,02.3256000.015545
1010000U-238scatter-Y1,-1-0.0300890.002460
1110000U-238scatter-Y1,0-0.0044510.003663
1210000U-238scatter-Y1,10.0208320.002831
1310000U-238scatter-Y2,-2-0.0041490.001530
1410000U-238scatter-Y2,-10.0007350.001729
1510000U-238scatter-Y2,00.0034310.002098
1610000U-238scatter-Y2,10.0003850.001263
1710000U-238scatter-Y2,20.0000020.001718
\n", + "
" + ], + "text/plain": [ + " cell nuclide score mean std. dev.\n", + "bin \n", + "0 10000 U-235 scatter-Y0,0 0.036453 0.000941\n", + "1 10000 U-235 scatter-Y1,-1 -0.000725 0.000261\n", + "2 10000 U-235 scatter-Y1,0 -0.000088 0.000408\n", + "3 10000 U-235 scatter-Y1,1 0.000986 0.000412\n", + "4 10000 U-235 scatter-Y2,-2 0.000098 0.000204\n", + "5 10000 U-235 scatter-Y2,-1 -0.000358 0.000247\n", + "6 10000 U-235 scatter-Y2,0 0.000197 0.000140\n", + "7 10000 U-235 scatter-Y2,1 -0.000084 0.000196\n", + "8 10000 U-235 scatter-Y2,2 0.000052 0.000168\n", + "9 10000 U-238 scatter-Y0,0 2.325600 0.015545\n", + "10 10000 U-238 scatter-Y1,-1 -0.030089 0.002460\n", + "11 10000 U-238 scatter-Y1,0 -0.004451 0.003663\n", + "12 10000 U-238 scatter-Y1,1 0.020832 0.002831\n", + "13 10000 U-238 scatter-Y2,-2 -0.004149 0.001530\n", + "14 10000 U-238 scatter-Y2,-1 0.000735 0.001729\n", + "15 10000 U-238 scatter-Y2,0 0.003431 0.002098\n", + "16 10000 U-238 scatter-Y2,1 0.000385 0.001263\n", + "17 10000 U-238 scatter-Y2,2 0.000002 0.001718" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get a pandas dataframe for the cell tally data\n", + "df = tally.get_pandas_dataframe()\n", + "\n", + "# Print the first twenty rows in the dataframe\n", + "df.head(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use the new Tally data retrieval API with pure NumPy" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.00171834 0.01554515]\n", + " [ 0.00016768 0.00094081]]]\n" + ] + } + ], + "source": [ + "# Get the standard deviations for two of the spherical harmonic\n", + "# scattering reaction rates \n", + "data = tally.get_values(scores=['scatter-Y2,2', 'scatter-Y0,0'], \n", + " nuclides=['U-238', 'U-235'], value='std_dev')\n", + "print(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Analyze the distribcell tally**" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10002\n", + "\tName =\tdistribcell tally\n", + "\tFilters =\t\n", + " \t\tdistribcell\t[10002]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t['absorption', 'scatter']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], + "source": [ + "# Find the distribcell Tally with the StatePoint API\n", + "tally = sp.get_tally(name='distribcell tally')\n", + "\n", + "# Print a little info about the distribcell tally to the screen\n", + "print(tally)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use the new Tally data retrieval API with pure NumPy" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.04682759]]\n", + "\n", + " [[ 0.03205271]]\n", + "\n", + " [[ 0.03592433]]\n", + "\n", + " [[ 0.02417979]]\n", + "\n", + " [[ 0.02524314]]\n", + "\n", + " [[ 0.02390359]]\n", + "\n", + " [[ 0.0274475 ]]\n", + "\n", + " [[ 0.02827721]]\n", + "\n", + " [[ 0.0231313 ]]\n", + "\n", + " [[ 0.01898386]]]\n" + ] + } + ], + "source": [ + "# Get the relative error for the scattering reaction rates in\n", + "# the first 30 distribcell instances \n", + "data = tally.get_values(scores=['scatter'], filters=['distribcell'],\n", + " filter_bins=[range(10)], value='rel_err')\n", + "print(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the distribcell tally dataframe **without** OpenCG info" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
distribcellscoremeanstd. dev.
bin
558279absorption0.0000950.000009
559279scatter0.0136110.000544
560280absorption0.0000960.000009
561280scatter0.0139990.000568
562281absorption0.0001170.000015
563281scatter0.0159510.000682
564282absorption0.0001040.000011
565282scatter0.0160570.000574
566283absorption0.0001170.000013
567283scatter0.0159970.000706
568284absorption0.0001080.000007
569284scatter0.0167200.000639
570285absorption0.0001160.000008
571285scatter0.0177640.000639
572286absorption0.0001110.000014
573286scatter0.0181010.000766
574287absorption0.0001150.000012
575287scatter0.0184110.000655
576288absorption0.0001380.000014
577288scatter0.0191540.000763
\n", + "
" + ], + "text/plain": [ + " distribcell score mean std. dev.\n", + "bin \n", + "558 279 absorption 0.000095 0.000009\n", + "559 279 scatter 0.013611 0.000544\n", + "560 280 absorption 0.000096 0.000009\n", + "561 280 scatter 0.013999 0.000568\n", + "562 281 absorption 0.000117 0.000015\n", + "563 281 scatter 0.015951 0.000682\n", + "564 282 absorption 0.000104 0.000011\n", + "565 282 scatter 0.016057 0.000574\n", + "566 283 absorption 0.000117 0.000013\n", + "567 283 scatter 0.015997 0.000706\n", + "568 284 absorption 0.000108 0.000007\n", + "569 284 scatter 0.016720 0.000639\n", + "570 285 absorption 0.000116 0.000008\n", + "571 285 scatter 0.017764 0.000639\n", + "572 286 absorption 0.000111 0.000014\n", + "573 286 scatter 0.018101 0.000766\n", + "574 287 absorption 0.000115 0.000012\n", + "575 287 scatter 0.018411 0.000655\n", + "576 288 absorption 0.000138 0.000014\n", + "577 288 scatter 0.019154 0.000763" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get a pandas dataframe for the distribcell tally data\n", + "df = tally.get_pandas_dataframe(nuclides=False)\n", + "\n", + "# Print the last twenty rows in the dataframe\n", + "df.tail(20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the distribcell tally dataframe **with** OpenCG info" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
level 1level 2level 3distribcellscoremeanstd. dev.
cellunivlatcelluniv
idididxyzidid
bin
01000301000100010002100000absorption0.0001220.000010
11000301000100010002100000scatter0.0185960.000871
21000301000110010002100001absorption0.0002060.000014
31000301000110010002100001scatter0.0297330.000953
41000301000120010002100002absorption0.0002800.000018
51000301000120010002100002scatter0.0384940.001383
61000301000130010002100003absorption0.0003840.000026
71000301000130010002100003scatter0.0488390.001181
81000301000140010002100004absorption0.0004570.000023
91000301000140010002100004scatter0.0580610.001466
101000301000150010002100005absorption0.0004940.000026
111000301000150010002100005scatter0.0658740.001575
121000301000160010002100006absorption0.0004900.000032
131000301000160010002100006scatter0.0724200.001988
141000301000170010002100007absorption0.0006050.000042
151000301000170010002100007scatter0.0788020.002228
161000301000180010002100008absorption0.0006270.000037
171000301000180010002100008scatter0.0836840.001936
181000301000190010002100009absorption0.0007110.000040
191000301000190010002100009scatter0.0889890.001689
\n", + "
" + ], + "text/plain": [ + " level 1 level 2 level 3 distribcell score \\\n", + " cell univ lat cell univ \n", + " id id id x y z id id \n", + "bin \n", + "0 10003 0 10001 0 0 0 10002 10000 0 absorption \n", + "1 10003 0 10001 0 0 0 10002 10000 0 scatter \n", + "2 10003 0 10001 1 0 0 10002 10000 1 absorption \n", + "3 10003 0 10001 1 0 0 10002 10000 1 scatter \n", + "4 10003 0 10001 2 0 0 10002 10000 2 absorption \n", + "5 10003 0 10001 2 0 0 10002 10000 2 scatter \n", + "6 10003 0 10001 3 0 0 10002 10000 3 absorption \n", + "7 10003 0 10001 3 0 0 10002 10000 3 scatter \n", + "8 10003 0 10001 4 0 0 10002 10000 4 absorption \n", + "9 10003 0 10001 4 0 0 10002 10000 4 scatter \n", + "10 10003 0 10001 5 0 0 10002 10000 5 absorption \n", + "11 10003 0 10001 5 0 0 10002 10000 5 scatter \n", + "12 10003 0 10001 6 0 0 10002 10000 6 absorption \n", + "13 10003 0 10001 6 0 0 10002 10000 6 scatter \n", + "14 10003 0 10001 7 0 0 10002 10000 7 absorption \n", + "15 10003 0 10001 7 0 0 10002 10000 7 scatter \n", + "16 10003 0 10001 8 0 0 10002 10000 8 absorption \n", + "17 10003 0 10001 8 0 0 10002 10000 8 scatter \n", + "18 10003 0 10001 9 0 0 10002 10000 9 absorption \n", + "19 10003 0 10001 9 0 0 10002 10000 9 scatter \n", + "\n", + " mean std. dev. \n", + " \n", + " \n", + "bin \n", + "0 0.000122 0.000010 \n", + "1 0.018596 0.000871 \n", + "2 0.000206 0.000014 \n", + "3 0.029733 0.000953 \n", + "4 0.000280 0.000018 \n", + "5 0.038494 0.001383 \n", + "6 0.000384 0.000026 \n", + "7 0.048839 0.001181 \n", + "8 0.000457 0.000023 \n", + "9 0.058061 0.001466 \n", + "10 0.000494 0.000026 \n", + "11 0.065874 0.001575 \n", + "12 0.000490 0.000032 \n", + "13 0.072420 0.001988 \n", + "14 0.000605 0.000042 \n", + "15 0.078802 0.002228 \n", + "16 0.000627 0.000037 \n", + "17 0.083684 0.001936 \n", + "18 0.000711 0.000040 \n", + "19 0.088989 0.001689 " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get a pandas dataframe for the distribcell tally data\n", + "df = tally.get_pandas_dataframe(summary=su, nuclides=False)\n", + "\n", + "# Print the last twenty rows in the dataframe\n", + "df.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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", + "
meanstd. dev.
count289.000000289.000000
mean0.0004140.000025
std0.0002410.000010
min0.0000130.000003
25%0.0002040.000017
50%0.0003870.000024
75%0.0005940.000031
max0.0009190.000060
\n", + "
" + ], + "text/plain": [ + " mean std. dev.\n", + " \n", + " \n", + "count 289.000000 289.000000\n", + "mean 0.000414 0.000025\n", + "std 0.000241 0.000010\n", + "min 0.000013 0.000003\n", + "25% 0.000204 0.000017\n", + "50% 0.000387 0.000024\n", + "75% 0.000594 0.000031\n", + "max 0.000919 0.000060" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Show summary statistics for absorption distribcell tally data\n", + "absorption = df[df['score'] == 'absorption']\n", + "absorption[['mean', 'std. dev.']].dropna().describe()\n", + "\n", + "# Note that the maximum standard deviation does indeed\n", + "# meet the 5e-4 threshold set by the tally trigger" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform a statistical test comparing the tally sample distributions for two categories of fuel pins." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mann-Whitney Test p-value: 0.378626583393\n" + ] + } + ], + "source": [ + "# Extract tally data from pins in the pins divided along y=x diagonal \n", + "multi_index = ('level 2', 'lat',)\n", + "lower = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] < 16]\n", + "upper = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] > 16]\n", + "lower = lower[lower['score'] == 'absorption']\n", + "upper = upper[upper['score'] == 'absorption']\n", + "\n", + "# Perform non-parametric Mann-Whitney U Test to see if the \n", + "# absorption rates (may) come from same sampling distribution\n", + "u, p = scipy.stats.mannwhitneyu(lower['mean'], upper['mean'])\n", + "print('Mann-Whitney Test p-value: {0}'.format(p))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the symmetry implied by the y=x diagonal ensures that the two sampling distributions are identical. Indeed, as illustrated by the test above, for any reasonable significance level (*e.g.*, $\\alpha$=0.05) one would **not reject** the null hypothesis that the two sampling distributions are identical.\n", + "\n", + "Next, perform the same test but with two groupings of pins which are not symmetrically identical to one another." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mann-Whitney Test p-value: 7.18782749267e-43\n" + ] + } + ], + "source": [ + "# Extract tally data from pins in the pins divided along y=-x diagonal\n", + "multi_index = ('level 2', 'lat',)\n", + "lower = df[df[multi_index + ('x',)] > df[multi_index + ('y',)]]\n", + "upper = df[df[multi_index + ('x',)] < df[multi_index + ('y',)]]\n", + "lower = lower[lower['score'] == 'absorption']\n", + "upper = upper[upper['score'] == 'absorption']\n", + "\n", + "# Perform non-parametric Mann-Whitney U Test to see if the \n", + "# absorption rates (may) come from same sampling distribution\n", + "u, p = scipy.stats.mannwhitneyu(lower['mean'], upper['mean'])\n", + "print('Mann-Whitney Test p-value: {0}'.format(p))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the asymmetry implied by the y=-x diagonal ensures that the two sampling distributions are *not* identical. Indeed, as illustrated by the test above, for any reasonable significance level (*e.g.*, $\\alpha$=0.05) one would **reject** the null hypothesis that the two sampling distributions are identical." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:4: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Extract the scatter tally data from pandas\n", + "scatter = df[df['score'] == 'scatter']\n", + "\n", + "scatter['rel. err.'] = scatter['std. dev.'] / scatter['mean']\n", + "\n", + "# Show a scatter plot of the mean vs. the std. dev.\n", + "scatter.plot(kind='scatter', x='mean', y='rel. err.', title='Scattering Rates')" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEZCAYAAAB4hzlwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYFOW5/vHvM8OOw+YyLAIjriCioIKKUUPiliguaGQR\nd/QoLkGJJvH8FJccY456ohiMwQ3UARdccImyuCOKCwo4CLIJKDsy7AjM8/ujis4wMNAz093V3XN/\nrquv6a6ut/qu6Zl+ut6qesvcHREREYCcqAOIiEj6UFEQEZEYFQUREYlRURARkRgVBRERiVFREBGR\nGBUFkXKY2Z/MbGjUOURSSUVBUsrMjjezj81slZmtMLOPzOyoKi7zEjP7sMy0p8zsrqos193vcfd+\nVVlGecysxMzWmtkaM/vBzB4ysxpxth1kZk8nI5eIioKkjJk1AF4HHgQaAy2AO4BNUebaGTPLTcHL\ndHD3POAE4FzgyhS8psguqShIKh0EuLs/54GN7j7W3adum8HM+plZkZmtNrNvzKxjOP2PZjar1PSz\nw+ltgUeAY8Nv3T+ZWT+gN3BzOO3VcN7mZjbKzJaa2Rwzu67U6w4ysxfN7GkzKwYuKf2N3MwKwm/3\nF5nZ92a2zMz+XKp9XTMbZmYrw/w3m9mCeH4p7j4bmAC0K7W8B81svpkVm9nnZnZ8OP004E/ABeG6\nTQ6nNzSzx83sRzNbaGZ3mVlO+NwBZvZ+uHW2zMxGVvSNk+pDRUFSaQawNezaOc3MGpd+0szOB24H\n+rp7A6A7sCJ8ehZwfDj9DuAZM8t39+nAfwET3T3P3Ru7+1DgWeDecNpZ4Qfka8BkoDnwK+D3ZnZK\nqQjdgRfcvWHYfmdjwHQlKG6/Am4zs4PD6bcDrYD9gJOBC8tpv90qh+t9CPALYFKp5yYBhxNsURUC\nL5hZLXd/C/gfYGS4bh3D+Z8Cfgb2BzoCpwBXhM/dBbzl7o0Its4e2k0uqcZUFCRl3H0NcDzBh+VQ\nYKmZvWpm+4SzXEHwQf5FOP9sd58f3n/R3ReH958HvgO6hO2snJcsPf1oYC93v9vdt7j7XOAxoGep\neT5299Hha2wsZ7l3uPsmd58CfE3wwQ1wPvA/7l7s7j8QdJGVl2ubL81sLVAEvOjuw7c94e7PuvtP\n7l7i7g8AtYFtBchKL9vM8oHTgQHuvsHdlwF/L7VuPwMFZtbC3X929493k0uqMRUFSSl3/9bdL3X3\nlkB7gm/tfw+f3heYvbN2YbfN5LB76Kew7Z4VeOnWQPNt7cNl/AnYp9Q8C+NYzuJS99cDe4T3mwOl\nu4viWVZHd98DuAC4yMxab3vCzAaG3VCrwqwNgb3KWU5roCawqNS6/RPYO3z+ZoIiMsnMppnZpXFk\nk2oqrqMdRJLB3WeY2TD+s4N1AXBA2fnCD8t/Ad0Iuok87Evf9m15Z900ZafNB+a6+0HlxdlJm4oM\nIbwIaAl8Gz5uGW9Dd3/BzM4CBgGXmtkvgD8A3dz9GwAzW0n567uAYGf9nu5espPlLyH8HZtZV2Cc\nmb3v7nPizSjVh7YUJGXM7GAzu9HMWoSPWwK9gInhLI8BA82skwUOMLNWQH2CD8LlQE74Tbd9qUUv\nAfY1s5plprUp9XgSsCbcAVzXzHLNrL3953DYnXX17K77p7TngT+ZWaNw/a6lYkXlr0AvM9sXyAO2\nAMvNrJaZ3QY0KDXvYoLuIANw90XAGOABM8szsxwz29/MToBgX024XIBVYa4diocIqChIaq0h2A/w\nadiXPhGYAtwEwX4D4C8EO1ZXAy8Bjd29CLg/nH8xQUH4qNRyxwPfAIvNbGk47XGgXdid8lL4DfoM\n4AhgDrCMYOtj24dteVsKXuZxee4k6DKaS/AB/QJBX355tluWu08D3gFuBN4KbzOBecAGgi2dbV4I\nf64ws8/D+xcBtQj2T6wM52kaPncU8ImZrQFeBa5393m7yCbVmCXrIjvht8DhBH22DvzL3R8ysybA\ncwT9oPOA37n7qqSEEImImV1N8Lf9y6iziFREMrcUNhMcDXEocAzQ34Jjyv8IjA37dseHj0Uympk1\nNbOuYdfNwQTf+F+OOpdIRSWtKLj7Ynf/Kry/FphOcIx0d2BYONsw4OxkZRBJoVoER/ysJviy8wow\nJNJEIpWQtO6j7V7ErAB4n6AveL67Nw6nG7By22MREYlW0nc0m9kewCjghvDkpRgPKlLyq5KIiMQl\nqecphIcIjgKedvdXwslLzKypuy82s2bA0p20U6EQEakEd6/IodQ7SNqWQtg19DhQ5O5/L/XUaODi\n8P7FBH2vO3D3rL2de+65kWfIhPUL/xLK3KL/29D7l7m3bF4398R8l07mlkJXgkHBpmwbyZFgWIG/\nAs+b2eWEh6QmMYOIiFRA0oqCu39E+Vsiv07W64qISOXpjOYItG3bNuoISaX1y2zZvH7ZvG6JoqIQ\ngXbt2u1+pgym9cts2bx+2bxuiaJRUkVkp8Lx9rJOnz59oo6QEInasVyWioKIlCtZHzxSNcks2Oo+\nEhGRGBUFERGJUVEQEZEYFQUREYlRURCRjFJQUMD48eNjj0eOHEmTJk344IMPyMnJIS8vj7y8PJo2\nbcqZZ57JuHHjdmhfr1692Hx5eXlcf/31qV6NtKWiICIZxcxiR98MGzaMa6+9ljfffJNWrVoBUFxc\nzJo1a5gyZQonn3wy55xzDsOGDduu/euvv86aNWtit4ceeiiSdUlHKgoiknHcnUcffZSBAwcyZswY\njjnmmB3m2Weffbj++usZNGgQt9xySwQpM5OKgohknCFDhnD77bfzzjvv0KlTp13Oe84557B06VJm\nzJgRm6bzL8qnk9dEpFLsjsScQOW3V+wD2t0ZN24c3bp1o3379rudv3nz5gCsXLky1v7ss8+mRo3/\nfPzdd999XH755RXKka1UFESkUir6YZ4oZsY///lP7rrrLq644goef/zxXc7/ww8/ANCkSZNY+1df\nfZVu3bolPWsmUveRiGSc/Px8xo8fz4cffsg111yzy3lffvll8vPzOfjgg1OULrOpKIhIRmrWrBnj\nx4/nrbfe4sYbb4xN37a/YMmSJTz88MPceeed3HPPPdu11T6F8qn7SEQyVsuWLXnnnXc44YQTWLx4\nMQCNGjXC3alfvz5HH300L774Iqeccsp27c4880xyc3Njj0855RRGjRqV0uzpSkVBRDLK3Llzt3tc\nUFDA/PnzASgsLKxwe9meuo9ERCRGRUFERGJUFEREJEZFQUREYlQUREQkRkVBRERiVBRERCRGRUFE\nRGJUFEQkq7Rv354PPvgg6hgZS0VBROKy7YpnybzFo+zlOAGeeuopfvGLXwAwbdo0TjjhhF0uY968\neeTk5FBSUlK5X0YW0zAXIlIByRxILr6iUJECsjvJGhhv69at242tlEm0pSAiWaWgoIB33nkHgEmT\nJnHUUUfRsGFDmjZtysCBAwFiWxKNGjUiLy+PTz/9FHfn7rvvpqCggPz8fC6++GJWr14dW+7w4cNp\n3bo1e+21V2y+ba8zaNAgzjvvPPr27UvDhg0ZNmwYn332GcceeyyNGzemefPmXHfddWzevDm2vJyc\nHB555BEOPPBAGjRowG233cbs2bM59thjadSoET179txu/lRRURCRjLOrb/iltyJuuOEGBgwYQHFx\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot a histogram and kernel density estimate for the scattering rates\n", + "scatter['mean'].plot(kind='hist', bins=25)\n", + "scatter['mean'].plot(kind='kde')\n", + "pylab.title('Scattering Rates')\n", + "pylab.xlabel('Mean')\n", + "pylab.legend(['KDE', 'Histogram'])" + ] + } + ], + "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.8" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/pythonapi/examples/pandas-dataframes.rst b/docs/source/pythonapi/examples/pandas-dataframes.rst new file mode 100644 index 0000000000..7eacf4d328 --- /dev/null +++ b/docs/source/pythonapi/examples/pandas-dataframes.rst @@ -0,0 +1,11 @@ +================= +Pandas Dataframes +================= + +.. only:: html + + .. notebook:: pandas-dataframes.ipynb + +.. only:: latex + + IPython notebooks must be viewed in the online HTML documentation. diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb new file mode 100644 index 0000000000..2b12052046 --- /dev/null +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -0,0 +1,1657 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook shows the how tallies can be combined (added, subtracted, multiplied, etc.) using the Python API in order to create derived tallies. Since no covariance information is obtained, it is assumed that tallies are completely independent of one another when propagating uncertainties. The target problem is a simple pin cell.\n", + "\n", + "**Note:** that this Notebook was created using the latest Pandas v0.16.1. Everything in the Notebook will wun with older versions of Pandas, but the multi-indexing option in >v0.15.0 makes the tables look prettier." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import glob\n", + "from IPython.display import Image\n", + "import numpy as np\n", + "\n", + "import openmc\n", + "from openmc.statepoint import StatePoint\n", + "from openmc.summary import Summary\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate Input Files" + ] + }, + { + "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('H-1')\n", + "b10 = openmc.Nuclide('B-10')\n", + "o16 = openmc.Nuclide('O-16')\n", + "u235 = openmc.Nuclide('U-235')\n", + "u238 = openmc.Nuclide('U-238')\n", + "zr90 = openmc.Nuclide('Zr-90')" + ] + }, + { + "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 pin." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "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 file object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a MaterialsFile, add Materials\n", + "materials_file = openmc.MaterialsFile()\n", + "materials_file.add_material(fuel)\n", + "materials_file.add_material(water)\n", + "materials_file.add_material(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. Our problem will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces -- in this case two cylinders and six reflective planes." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + "# Use both reflective and vacuum boundaries to make life interesting\n", + "min_x = openmc.XPlane(x0=-0.63, boundary_type='reflective')\n", + "max_x = openmc.XPlane(x0=+0.63, boundary_type='reflective')\n", + "min_y = openmc.YPlane(y0=-0.63, boundary_type='reflective')\n", + "max_y = openmc.YPlane(y0=+0.63, boundary_type='reflective')\n", + "min_z = openmc.ZPlane(z0=-0.63, boundary_type='reflective')\n", + "max_z = openmc.ZPlane(z0=+0.63, boundary_type='reflective')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create cells that are defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create a Universe to encapsulate a fuel pin\n", + "pin_cell_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.add_surface(fuel_outer_radius, halfspace=-1)\n", + "pin_cell_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.add_surface(fuel_outer_radius, halfspace=+1)\n", + "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "pin_cell_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.add_surface(clad_outer_radius, halfspace=+1)\n", + "pin_cell_universe.add_cell(moderator_cell)" + ] + }, + { + "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": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create root Cell\n", + "root_cell = openmc.Cell(name='root cell')\n", + "root_cell.fill = pin_cell_universe\n", + "\n", + "# Add boundary planes\n", + "root_cell.add_surface(min_x, halfspace=+1)\n", + "root_cell.add_surface(max_x, halfspace=-1)\n", + "root_cell.add_surface(min_y, halfspace=+1)\n", + "root_cell.add_surface(max_y, halfspace=-1)\n", + "root_cell.add_surface(min_z, halfspace=+1)\n", + "root_cell.add_surface(max_z, halfspace=-1)\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, put the geometry into a geometry file, and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate a GeometryFile\n", + "geometry_file = openmc.GeometryFile()\n", + "geometry_file.geometry = geometry\n", + "\n", + "# Export to \"geometry.xml\"\n", + "geometry_file.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 5 inactive batches and 15 active batches each with 2500 particles." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# OpenMC simulation parameters\n", + "batches = 20\n", + "inactive = 5\n", + "particles = 2500\n", + "\n", + "# Instantiate a SettingsFile\n", + "settings_file = openmc.SettingsFile()\n", + "settings_file.batches = batches\n", + "settings_file.inactive = inactive\n", + "settings_file.particles = particles\n", + "settings_file.output = {'tallies': True, 'summary': True}\n", + "source_bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n", + "settings_file.set_source_space('box', source_bounds)\n", + "\n", + "# Export to \"settings.xml\"\n", + "settings_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us also create a plot file that we can use to verify that our pin cell geometry was created successfully." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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.width = [1.26, 1.26]\n", + "plot.pixels = [250, 250]\n", + "plot.color = 'mat'\n", + "\n", + "# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n", + "plot_file = openmc.PlotsFile()\n", + "plot_file.add_plot(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": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Run openmc in plotting mode\n", + "executor = openmc.Executor()\n", + "executor.plot_geometry(output=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMDgtMDZUMTY6NDM6MTMrMDc6MDBtUQj+AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA4LTA2\nVDE2OjQzOjEzKzA3OjAwHAywQgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "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 pin cell with fuel, cladding, and water! Before we run our simulation, we need to tell the code what we want to tally. The following code shows how to create a variety of tallies." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate an empty TalliesFile\n", + "tallies_file = openmc.TalliesFile()\n", + "tallies_file.tallies = []" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create Tallies to compute microscopic multi-group cross-sections\n", + "\n", + "# Instantiate energy filter for multi-group cross-section Tallies\n", + "energy_filter = openmc.Filter(type='energy', bins=[0., 0.625e-6, 20.])\n", + "\n", + "# Instantiate flux Tally in moderator and fuel\n", + "tally = openmc.Tally(name='flux')\n", + "tally.add_filter(openmc.Filter(type='cell', bins=[fuel_cell.id, moderator_cell.id]))\n", + "tally.add_filter(energy_filter)\n", + "tally.add_score('flux')\n", + "tallies_file.add_tally(tally)\n", + "\n", + "# Instantiate reaction rate Tally in fuel\n", + "tally = openmc.Tally(name='fuel rxn rates')\n", + "tally.add_filter(openmc.Filter(type='cell', bins=[fuel_cell.id]))\n", + "tally.add_filter(energy_filter)\n", + "tally.add_score('nu-fission')\n", + "tally.add_score('scatter')\n", + "tally.add_nuclide(u238)\n", + "tally.add_nuclide(u235)\n", + "tallies_file.add_tally(tally)\n", + "\n", + "# Instantiate reaction rate Tally in moderator\n", + "tally = openmc.Tally(name='moderator rxn rates')\n", + "tally.add_filter(openmc.Filter(type='cell', bins=[moderator_cell.id]))\n", + "tally.add_filter(energy_filter)\n", + "tally.add_score('absorption')\n", + "tally.add_score('total')\n", + "tally.add_nuclide(o16)\n", + "tally.add_nuclide(h1)\n", + "tallies_file.add_tally(tally)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# K-Eigenvalue (infinity) tallies\n", + "fiss_rate = openmc.Tally(name='fiss. rate')\n", + "abs_rate = openmc.Tally(name='abs. rate')\n", + "fiss_rate.add_score('nu-fission')\n", + "abs_rate.add_score('absorption')\n", + "tallies_file.add_tally(fiss_rate)\n", + "tallies_file.add_tally(abs_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Resonance Escape Probability tallies\n", + "therm_abs_rate = openmc.Tally(name='therm. abs. rate')\n", + "therm_abs_rate.add_score('absorption')\n", + "therm_abs_rate.add_filter(openmc.Filter(type='energy', bins=[0., 0.625]))\n", + "tallies_file.add_tally(therm_abs_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Thermal Flux Utilization tallies\n", + "fuel_therm_abs_rate = openmc.Tally(name='fuel therm. abs. rate')\n", + "fuel_therm_abs_rate.add_score('absorption')\n", + "fuel_therm_abs_rate.add_filter(openmc.Filter(type='energy', bins=[0., 0.625]))\n", + "fuel_therm_abs_rate.add_filter(openmc.Filter(type='cell', bins=[fuel_cell.id]))\n", + "tallies_file.add_tally(fuel_therm_abs_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Fast Fission Factor tallies\n", + "therm_fiss_rate = openmc.Tally(name='therm. fiss. rate')\n", + "therm_fiss_rate.add_score('nu-fission')\n", + "therm_fiss_rate.add_filter(openmc.Filter(type='energy', bins=[0., 0.625]))\n", + "tallies_file.add_tally(therm_fiss_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate energy filter to illustrate Tally slicing\n", + "energy_filter = openmc.Filter(type='energy', bins=np.logspace(np.log10(1e-8), np.log10(20), 10))\n", + "\n", + "# Instantiate flux Tally in moderator and fuel\n", + "tally = openmc.Tally(name='need-to-slice')\n", + "tally.add_filter(openmc.Filter(type='cell', bins=[fuel_cell.id, moderator_cell.id]))\n", + "tally.add_filter(energy_filter)\n", + "tally.add_score('nu-fission')\n", + "tally.add_score('scatter')\n", + "tally.add_nuclide(h1)\n", + "tally.add_nuclide(u238)\n", + "tallies_file.add_tally(tally)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 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": 23, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "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-2015 Massachusetts Institute of Technology\n", + " License: http://mit-crpg.github.io/openmc/license.html\n", + " Version: 0.7.0\n", + " Date/Time: 2015-08-15 10:52:49\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading geometry XML file...\n", + " Reading materials XML file...\n", + " Reading tallies XML file...\n", + " Building neighboring cells lists for each surface...\n", + " Loading ACE cross section table: 92238.71c\n", + " Loading ACE cross section table: 8016.71c\n", + " Loading ACE cross section table: 92235.71c\n", + " Loading ACE cross section table: 5010.71c\n", + " Loading ACE cross section table: 1001.71c\n", + " Loading ACE cross section table: 40090.71c\n", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 1.00465 \n", + " 2/1 1.05814 \n", + " 3/1 1.05114 \n", + " 4/1 1.09189 \n", + " 5/1 1.03731 \n", + " 6/1 1.03510 \n", + " 7/1 1.09378 1.06444 +/- 0.02934\n", + " 8/1 1.04522 1.05803 +/- 0.01811\n", + " 9/1 1.06557 1.05992 +/- 0.01294\n", + " 10/1 1.05757 1.05945 +/- 0.01004\n", + " 11/1 1.04858 1.05764 +/- 0.00839\n", + " 12/1 1.01832 1.05202 +/- 0.00905\n", + " 13/1 1.05822 1.05279 +/- 0.00787\n", + " 14/1 1.07684 1.05547 +/- 0.00744\n", + " 15/1 1.00349 1.05027 +/- 0.00844\n", + " 16/1 1.06969 1.05203 +/- 0.00784\n", + " 17/1 1.06377 1.05301 +/- 0.00722\n", + " 18/1 1.02897 1.05116 +/- 0.00690\n", + " 19/1 1.00685 1.04800 +/- 0.00713\n", + " 20/1 1.02644 1.04656 +/- 0.00679\n", + " Creating state point statepoint.20.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 4.4100E-01 seconds\n", + " Reading cross sections = 1.1300E-01 seconds\n", + " Total time in simulation = 1.8418E+01 seconds\n", + " Time in transport only = 1.8403E+01 seconds\n", + " Time in inactive batches = 2.1070E+00 seconds\n", + " Time in active batches = 1.6311E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 1.8861E+01 seconds\n", + " Calculation Rate (inactive) = 5932.61 neutrons/second\n", + " Calculation Rate (active) = 2299.06 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.04599 +/- 0.00622\n", + " k-effective (Track-length) = 1.04656 +/- 0.00679\n", + " k-effective (Absorption) = 1.04614 +/- 0.00461\n", + " Combined k-effective = 1.04651 +/- 0.00368\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Remove old HDF5 (summary, statepoint) files\n", + "!rm statepoint.*\n", + "\n", + "# Run OpenMC with MPI!\n", + "executor.run_simulation()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created a statepoint file with all the tally data in it. We begin our analysis here loading the statepoint file and 'reading' the results. By default, the tally results are not read into memory because they might be large, even large enough to exceed the available memory on a computer." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Load the statepoint file\n", + "sp = StatePoint('statepoint.20.h5')\n", + "sp.read_results()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may have also noticed we instructed OpenMC to create a summary file with lots of geometry information in it. This can help to produce more sensible output from the Python API, so we will use the summary file to link against." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Load the summary file and link with statepoint\n", + "su = Summary('summary.h5')\n", + "sp.link_with_summary(su)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have a tally of the total fission rate and the total absorption rate, so we can calculate k-infinity as:\n", + "$$k_\\infty = \\frac{\\langle \\nu \\Sigma_f \\phi \\rangle}{\\langle \\Sigma_a \\phi \\rangle}$$\n", + "In this notation, $\\langle \\cdot \\rangle^a_b$ represents an OpenMC that is integrated over region $a$ and energy range $b$. If $a$ or $b$ is not reported, it means the value represents an integral over all space or all energy, respectively." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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", + "
nuclidescoremeanstd. dev.
bin
0total(nu-fission / absorption)1.0427260.008661
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "bin \n", + "0 total (nu-fission / absorption) 1.042726 0.008661" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute k-infinity using tally arithmetic\n", + "fiss_rate = sp.get_tally(name='fiss. rate')\n", + "abs_rate = sp.get_tally(name='abs. rate')\n", + "keff = fiss_rate / abs_rate\n", + "keff.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that even though the neutron production rate and absorption rate are separate tallies, we still get a first-order estimate of the uncertainty on the quotient of them automatically!\n", + "\n", + "Often in textbooks you'll see k-infinity represented using the four-factor formula $$k_\\infty = p \\epsilon f \\eta.$$ Let's analyze each of these factors, starting with the resonance escape probability which is defined as $$p=\\frac{\\langle\\Sigma_a\\phi\\rangle_T}{\\langle\\Sigma_a\\phi\\rangle}$$ where the subscript $T$ means thermal energies." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "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", + "
nuclidescoremeanstd. dev.
bin
0totalabsorption0.9588740.007146
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "bin \n", + "0 total absorption 0.958874 0.007146" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute resonance escape probability using tally arithmetic\n", + "therm_abs_rate = sp.get_tally(name='therm. abs. rate')\n", + "res_esc = therm_abs_rate / abs_rate\n", + "res_esc.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fast fission factor can be calculated as\n", + "$$\\epsilon=\\frac{\\langle\\nu\\Sigma_f\\phi\\rangle}{\\langle\\nu\\Sigma_f\\phi\\rangle_T}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "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", + "
nuclidescoremeanstd. dev.
bin
0totalnu-fission1.091860.010424
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "bin \n", + "0 total nu-fission 1.09186 0.010424" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute fast fission factor factor using tally arithmetic\n", + "therm_fiss_rate = sp.get_tally(name='therm. fiss. rate')\n", + "fast_fiss = fiss_rate / therm_fiss_rate\n", + "fast_fiss.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The thermal flux utilization is calculated as\n", + "$$f=\\frac{\\langle\\Sigma_a\\phi\\rangle^F_T}{\\langle\\Sigma_a\\phi\\rangle_T}$$\n", + "where the superscript $F$ denotes fuel." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "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", + "
energy [MeV]cellnuclidescoremeanstd. dev.
bin
00.0e+00 - 6.2e-0110000totalabsorption0.8029210.006109
\n", + "
" + ], + "text/plain": [ + " energy [MeV] cell nuclide score mean std. dev.\n", + "bin \n", + "0 0.0e+00 - 6.2e-01 10000 total absorption 0.802921 0.006109" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute thermal flux utilization factor using tally arithmetic\n", + "fuel_therm_abs_rate = sp.get_tally(name='fuel therm. abs. rate')\n", + "therm_util = fuel_therm_abs_rate / therm_abs_rate\n", + "therm_util.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The final factor is the number of fission neutrons produced per absorption in fuel, calculated as $$\\eta = \\frac{\\langle \\nu\\Sigma_f\\phi \\rangle_T}{\\langle \\Sigma_a \\phi \\rangle^F_T}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "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", + "
energy [MeV]cellnuclidescoremeanstd. dev.
bin
00.0e+00 - 6.2e-0110000total(nu-fission / absorption)1.2404210.010978
\n", + "
" + ], + "text/plain": [ + " energy [MeV] cell nuclide score mean \\\n", + "bin \n", + "0 0.0e+00 - 6.2e-01 10000 total (nu-fission / absorption) 1.240421 \n", + "\n", + " std. dev. \n", + "bin \n", + "0 0.010978 " + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute neutrons produced per absorption (eta) using tally arithmetic\n", + "eta = therm_fiss_rate / fuel_therm_abs_rate\n", + "eta.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can calculate $k_\\infty$ using the product of the factors form the four-factor formula." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "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", + "
nuclidescoremeanstd. dev.
bin
0total(((absorption * nu-fission) * absorption) * (n...1.0427260.017538
\n", + "
" + ], + "text/plain": [ + " nuclide score mean \\\n", + "bin \n", + "0 total (((absorption * nu-fission) * absorption) * (n... 1.042726 \n", + "\n", + " std. dev. \n", + "bin \n", + "0 0.017538 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "keff = res_esc * fast_fiss * therm_util * eta\n", + "keff.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that the value we've obtained here has exactly the same mean as before. However, because of the way it was calculated, the standard deviation appears to be larger.\n", + "\n", + "Let's move on to a more complicated example now. Before we set up tallies to get reaction rates in the fuel and moderator in two energy groups for two different nuclides. We can use tally arithmetic to divide each of these reaction rates by the flux to get microscopic multi-group cross sections." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Compute microscopic multi-group cross-sections\n", + "flux = sp.get_tally(name='flux')\n", + "flux = flux.get_slice(filters=['cell'], filter_bins=[(fuel_cell.id,)])\n", + "fuel_rxn_rates = sp.get_tally(name='fuel rxn rates')\n", + "mod_rxn_rates = sp.get_tally(name='moderator rxn rates')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
bin
0100000.0e+00 - 6.3e-07(U-238 / total)(nu-fission / flux)0.0000016.985151e-09
1100000.0e+00 - 6.3e-07(U-238 / total)(scatter / flux)0.2099882.206753e-03
2100000.0e+00 - 6.3e-07(U-235 / total)(nu-fission / flux)0.3552763.741612e-03
3100000.0e+00 - 6.3e-07(U-235 / total)(scatter / flux)0.0055555.842517e-05
4100006.3e-07 - 2.0e+01(U-238 / total)(nu-fission / flux)0.0072295.951357e-05
5100006.3e-07 - 2.0e+01(U-238 / total)(scatter / flux)0.2276429.496469e-04
6100006.3e-07 - 2.0e+01(U-235 / total)(nu-fission / flux)0.0080765.699123e-05
7100006.3e-07 - 2.0e+01(U-235 / total)(scatter / flux)0.0033691.369755e-05
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean \\\n", + "bin \n", + "0 10000 0.0e+00 - 6.3e-07 (U-238 / total) (nu-fission / flux) 0.000001 \n", + "1 10000 0.0e+00 - 6.3e-07 (U-238 / total) (scatter / flux) 0.209988 \n", + "2 10000 0.0e+00 - 6.3e-07 (U-235 / total) (nu-fission / flux) 0.355276 \n", + "3 10000 0.0e+00 - 6.3e-07 (U-235 / total) (scatter / flux) 0.005555 \n", + "4 10000 6.3e-07 - 2.0e+01 (U-238 / total) (nu-fission / flux) 0.007229 \n", + "5 10000 6.3e-07 - 2.0e+01 (U-238 / total) (scatter / flux) 0.227642 \n", + "6 10000 6.3e-07 - 2.0e+01 (U-235 / total) (nu-fission / flux) 0.008076 \n", + "7 10000 6.3e-07 - 2.0e+01 (U-235 / total) (scatter / flux) 0.003369 \n", + "\n", + " std. dev. \n", + "bin \n", + "0 6.985151e-09 \n", + "1 2.206753e-03 \n", + "2 3.741612e-03 \n", + "3 5.842517e-05 \n", + "4 5.951357e-05 \n", + "5 9.496469e-04 \n", + "6 5.699123e-05 \n", + "7 1.369755e-05 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fuel_xs = fuel_rxn_rates / flux\n", + "fuel_xs.get_pandas_dataframe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that when the two tallies with multiple bins were divided, the derived tally contains the outer product of the combinations. If the filters/scores are the same, no outer product is needed. The `get_values(...)` method allows us to obtain a subset of tally scores. In the following example, we obtain just the neutron production microscopic cross sections." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 6.63809296e-07]\n", + " [ 3.55275544e-01]]\n", + "\n", + " [[ 7.22895528e-03]\n", + " [ 8.07565148e-03]]]\n" + ] + } + ], + "source": [ + "# Show how to use Tally.get_values(...) with a CrossScore\n", + "nu_fiss_xs = fuel_xs.get_values(scores=['(nu-fission / flux)'])\n", + "print(nu_fiss_xs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The same idea can be used not only for scores but also for filters and nuclides." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.00555505]]\n", + "\n", + " [[ 0.0033688 ]]]\n" + ] + } + ], + "source": [ + "# Show how to use Tally.get_values(...) with a CrossScore and CrossNuclide\n", + "u235_scatter_xs = fuel_xs.get_values(nuclides=['(U-235 / total)'], \n", + " scores=['(scatter / flux)'])\n", + "print(u235_scatter_xs)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.2276418]\n", + " [ 0.0033688]]]\n" + ] + } + ], + "source": [ + "# Show how to use Tally.get_values(...) with a CrossFilter and CrossScore\n", + "fast_scatter_xs = fuel_xs.get_values(filters=['energy'], \n", + " filter_bins=[((0.625e-6, 20.),)], \n", + " scores=['(scatter / flux)'])\n", + "print(fast_scatter_xs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A more advanced method is to use `get_slice(...)` to create a new derived tally that is a subset of an existing tally. This has the benefit that we can use `get_pandas_dataframe()` to see the tallies in a more human-readable format." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
bin
0100000.0e+00 - 6.3e-07U-238nu-fission0.0000021.211808e-08
1100000.0e+00 - 6.3e-07U-235nu-fission0.8703606.496431e-03
2100006.3e-07 - 2.0e+01U-238nu-fission0.0832266.367951e-04
3100006.3e-07 - 2.0e+01U-235nu-fission0.0929745.921990e-04
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "bin \n", + "0 10000 0.0e+00 - 6.3e-07 U-238 nu-fission 0.000002 1.211808e-08\n", + "1 10000 0.0e+00 - 6.3e-07 U-235 nu-fission 0.870360 6.496431e-03\n", + "2 10000 6.3e-07 - 2.0e+01 U-238 nu-fission 0.083226 6.367951e-04\n", + "3 10000 6.3e-07 - 2.0e+01 U-235 nu-fission 0.092974 5.921990e-04" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# \"Slice\" the nu-fission data into a new derived Tally\n", + "nu_fission_rates = fuel_rxn_rates.get_slice(scores=['nu-fission'])\n", + "nu_fission_rates.get_pandas_dataframe()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
bin
0100021.0e-08 - 1.1e-07H-1scatter4.6384280.034134
1100021.1e-07 - 1.2e-06H-1scatter2.0508180.010745
2100021.2e-06 - 1.3e-05H-1scatter1.6569050.009480
3100021.3e-05 - 1.4e-04H-1scatter1.8708080.011883
4100021.4e-04 - 1.5e-03H-1scatter2.0456210.011414
5100021.5e-03 - 1.6e-02H-1scatter2.1632970.008725
6100021.6e-02 - 1.7e-01H-1scatter2.2020450.013500
7100021.7e-01 - 1.9e+00H-1scatter1.9969770.010791
8100021.9e+00 - 2.0e+01H-1scatter0.3708900.003597
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "bin \n", + "0 10002 1.0e-08 - 1.1e-07 H-1 scatter 4.638428 0.034134\n", + "1 10002 1.1e-07 - 1.2e-06 H-1 scatter 2.050818 0.010745\n", + "2 10002 1.2e-06 - 1.3e-05 H-1 scatter 1.656905 0.009480\n", + "3 10002 1.3e-05 - 1.4e-04 H-1 scatter 1.870808 0.011883\n", + "4 10002 1.4e-04 - 1.5e-03 H-1 scatter 2.045621 0.011414\n", + "5 10002 1.5e-03 - 1.6e-02 H-1 scatter 2.163297 0.008725\n", + "6 10002 1.6e-02 - 1.7e-01 H-1 scatter 2.202045 0.013500\n", + "7 10002 1.7e-01 - 1.9e+00 H-1 scatter 1.996977 0.010791\n", + "8 10002 1.9e+00 - 2.0e+01 H-1 scatter 0.370890 0.003597" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# \"Slice\" the H-1 scatter data in the moderator Cell into a new derived Tally\n", + "need_to_slice = sp.get_tally(name='need-to-slice')\n", + "slice_test = need_to_slice.get_slice(scores=['scatter'], nuclides=['H-1'],\n", + " filters=['cell'], filter_bins=[(moderator_cell.id,)])\n", + "slice_test.get_pandas_dataframe()" + ] + } + ], + "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.8" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/pythonapi/examples/tally-arithmetic.rst b/docs/source/pythonapi/examples/tally-arithmetic.rst new file mode 100644 index 0000000000..5f3cf775e1 --- /dev/null +++ b/docs/source/pythonapi/examples/tally-arithmetic.rst @@ -0,0 +1,11 @@ +================ +Tally Arithmetic +================ + +.. only:: html + + .. notebook:: tally-arithmetic.ipynb + +.. only:: latex + + IPython notebooks must be viewed in the online HTML documentation. diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index f6c26557df..8c42f2d7e2 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -4,29 +4,68 @@ Python API ========== --------- -Contents --------- +OpenMC includes a rich Python API that enables programmatic pre- and +post-processing. The easiest way to begin using the API is to take a look at the +example Jupyter_ notebooks provided. However, this assumes that you are already +familiar with Python and common third-party packages such as NumPy_. If you have +never programmed in Python before, there are many good tutorials available +online. We recommend going through the modules from Codecademy_ and/or the +`Scipy lectures`_. The full API documentation serves to provide more information +on a given module or class. + +**Handling nuclear data:** .. toctree:: :maxdepth: 1 ace + +**Creating input files:** + +.. toctree:: + :maxdepth: 1 + cmfd element - executor filter geometry material mesh nuclide opencg_compatible - particle_restart plots settings - statepoint - summary surface tallies trigger universe + +**Running OpenMC:** + +.. toctree:: + :maxdepth: 1 + + executor + +**Post-processing:** + +.. toctree:: + :maxdepth: 1 + + particle_restart + statepoint + summary + tallies + +**Example Jupyter Notebooks:** + +.. toctree:: + :maxdepth: 1 + + examples/pandas-dataframes + examples/tally-arithmetic + +.. _Jupyter: https://jupyter.org/ +.. _NumPy: http://www.numpy.org/ +.. _Codecademy: https://www.codecademy.com/tracks/python +.. _Scipy lectures: https://scipy-lectures.github.io/ diff --git a/docs/source/releasenotes.rst b/docs/source/releasenotes.rst new file mode 100644 index 0000000000..dffc17201f --- /dev/null +++ b/docs/source/releasenotes.rst @@ -0,0 +1,67 @@ +.. _releasenotes: + +============================== +Release Notes for OpenMC 0.7.0 +============================== + +------------------- +System Requirements +------------------- + +There are no special requirements for running the OpenMC code. As of this +release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Complete Python API +- Python 3 compatability for all scripts +- All scripts consistently named openmc-* and installed together +- New 'distribcell' tally filter for repeated cells +- Ability to specify outer lattice universe +- XML input validation utility (openmc-validate-xml) +- Support for hexagonal lattices +- Material union energy grid method +- Tally triggers +- Remove dependence on PETSc +- Significant OpenMP performance improvements +- Support for Fortran 2008 MPI interface +- Use of Travis CI for continuous integration +- Simplifications and improvements to test suite + +--------- +Bug Fixes +--------- + +- b5f712_: Fix bug in spherical harmonics tallies +- e6675b_: Ensure all constants are double precision +- 04e2c1_: Fix potential bug in sample_nuclide routine +- 6121d9_: Fix bugs related to particle track files +- 2f0e89_: Fixes for nuclide specification in tallies + +.. _b5f712: https://github.com/mit-crpg/openmc/commit/b5f712 +.. _e6675b: https://github.com/mit-crpg/openmc/commit/e6675b +.. _04e2c1: https://github.com/mit-crpg/openmc/commit/04e2c1 +.. _6121d9: https://github.com/mit-crpg/openmc/commit/6121d9 +.. _2f0e89: https://github.com/mit-crpg/openmc/commit/2f0e89 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Will Boyd `_ +- `Matt Ellis `_ +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Nicholas Horelik `_ +- `Colin Josey `_ +- `William Lyu `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Anthony Scopatz `_ +- `Jon Walsh `_ diff --git a/docs/source/releasenotes/index.rst b/docs/source/releasenotes/index.rst deleted file mode 100644 index 556cf518a5..0000000000 --- a/docs/source/releasenotes/index.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _releasenotes: - -============= -Release Notes -============= - -The release notes for OpenMC give a list of system requirements, new features, -bugs fixed, and known issues for each successive release. - -.. toctree:: - :maxdepth: 1 - - notes_0.6.2 - notes_0.6.1 - notes_0.6.0 - notes_0.5.4 - notes_0.5.3 - notes_0.5.2 - notes_0.5.1 - notes_0.5.0 - notes_0.4.4 - notes_0.4.3 - notes_0.4.2 - notes_0.4.1 - notes_0.4.0 diff --git a/docs/source/releasenotes/notes_0.4.0.rst b/docs/source/releasenotes/notes_0.4.0.rst deleted file mode 100644 index 3e0a444e35..0000000000 --- a/docs/source/releasenotes/notes_0.4.0.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _notes_0.4.0: - -============================== -Release Notes for OpenMC 0.4.0 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions as well as -Mac OS X. However, it has not been tested yet on any releases of Microsoft -Windows. Memory requirements will vary depending on the size of the problem at -hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- The probability table method for treatment of energy self-shielding in the - unresolved resonance range has been implemented and is now turned on by - default. -- Calculation of Shannon entropy for assessing convergence of the fission source - distribution. -- Ability to compile with the PGI Fortran compiler. -- Ability to run on IBM BlueGene/P machines. -- Completely rewrote how nested universes are handled. Geometry is now much more - robust. - ---------- -Bug Fixes ---------- - -- Many geometry errors have been fixed. The Monte Carlo performance benchmark - can now be successfully run in OpenMC. diff --git a/docs/source/releasenotes/notes_0.4.1.rst b/docs/source/releasenotes/notes_0.4.1.rst deleted file mode 100644 index 2492f23a98..0000000000 --- a/docs/source/releasenotes/notes_0.4.1.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _notes_0.4.1: - -============================== -Release Notes for OpenMC 0.4.1 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions as well as -Mac OS X. However, it has not been tested yet on any releases of Microsoft -Windows. Memory requirements will vary depending on the size of the problem at -hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- A batching method has been implemented so that statistics can be calculated - based on multiple generations instead of a single generation. This can help to - overcome problems with underpredicted variance in problems where there is - correlation between successive fission source iterations. -- Users now have the option to select a non-unionized energy grid for problems - with many nuclides where the use of a unionized grid is not feasible. -- Improved plotting capability (Nick Horelik). The plotting input is now in - ``plots.xml`` instead of ``plot.xml``. -- Added multiple estimators for k-effective and added a global tally for - leakage. -- Moved cross section-related output into cross_sections.out. -- Improved timing capabilities. -- Can now use more than 2**31 - 1 particles per generation. -- Improved fission bank synchronization method. This also necessitated changing - the source bank to be of type Bank rather than of type Particle. -- Added HDF5 output (not complete yet). -- Major changes to tally implementation. - ---------- -Bug Fixes ---------- - -- `b206a8`_: Fixed subtle error in the sampling of energy distributions. -- `800742`_: Fixed error in sampling of angle and rotating angles. -- `a07c08`_: Fixed bug in linear-linear interpolation during sampling energy. -- `a75283`_: Fixed energy and energyout tally filters to support many bins. -- `95cfac`_: Fixed error in cell neighbor searches. -- `83a803`_: Fixed bug related to probability tables. - -.. _b206a8: https://github.com/mit-crpg/openmc/commit/b206a8 -.. _800742: https://github.com/mit-crpg/openmc/commit/800742 -.. _a07c08: https://github.com/mit-crpg/openmc/commit/a07c08 -.. _a75283: https://github.com/mit-crpg/openmc/commit/a75283 -.. _95cfac: https://github.com/mit-crpg/openmc/commit/95cfac -.. _83a803: https://github.com/mit-crpg/openmc/commit/83a803 diff --git a/docs/source/releasenotes/notes_0.4.2.rst b/docs/source/releasenotes/notes_0.4.2.rst deleted file mode 100644 index 0ca5287a1c..0000000000 --- a/docs/source/releasenotes/notes_0.4.2.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _notes_0.4.2: - -============================== -Release Notes for OpenMC 0.4.2 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Ability to specify void materials. -- Option to not reduce tallies across processors at end of each batch. -- Uniform fission site method for reducing variance on local tallies. -- Reading/writing binary source files. -- Added more messages for or high verbosity. -- Estimator for diffusion coefficient. -- Ability to specify 'point' source type. -- Ability to change random number seed. -- Users can now specify units='sum' on a tag. This tells the code that - the total material density is the sum of the atom fractions listed for each - nuclide on the material. - ---------- -Bug Fixes ---------- - -- a27f8f_: Fixed runtime error bug when using Intel compiler with DEBUG on. -- afe121_: Fixed minor bug in fission bank algorithms. -- e0968e_: Force re-evaluation of cross-sections when each particle is born. -- 298db8_: Fixed bug in surface currents when using energy-in filter. -- 2f3bbe_: Fixed subtle bug in S(a,b) cross section calculation. -- 671f30_: Fixed surface currents on mesh not encompassing geometry. -- b2c40e_: Fixed bug in incoming energy filter for track-length tallies. -- 5524fd_: Mesh filter now works with track-length tallies. -- d050c7_: Added Bessel's correction to make estimate of variance unbiased. -- 2a5b9c_: Fixed regression in plotting. - -.. _a27f8f: https://github.com/mit-crpg/openmc/commit/a27f8f -.. _afe121: https://github.com/mit-crpg/openmc/commit/afe121 -.. _e0968e: https://github.com/mit-crpg/openmc/commit/e0968e -.. _298db8: https://github.com/mit-crpg/openmc/commit/298db8 -.. _2f3bbe: https://github.com/mit-crpg/openmc/commit/2f3bbe -.. _671f30: https://github.com/mit-crpg/openmc/commit/671f30 -.. _b2c40e: https://github.com/mit-crpg/openmc/commit/b2c40e -.. _5524fd: https://github.com/mit-crpg/openmc/commit/5524fd -.. _d050c7: https://github.com/mit-crpg/openmc/commit/d050c7 -.. _2a5b9c: https://github.com/mit-crpg/openmc/commit/2a5b9c diff --git a/docs/source/releasenotes/notes_0.4.3.rst b/docs/source/releasenotes/notes_0.4.3.rst deleted file mode 100644 index fce7a7da37..0000000000 --- a/docs/source/releasenotes/notes_0.4.3.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _notes_0.4.3: - -============================== -Release Notes for OpenMC 0.4.3 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Option to report confidence intervals for tally results. -- Rotation and translation for filled cells. -- Ability to explicitly specify for tallies. -- Ability to store state points and use them to restart runs. -- Fixed source calculations (no subcritical multiplication however). -- Expanded options for external source distribution. -- Ability to tally reaction rates for individual nuclides within a material. -- Reduced memory usage by removing redundant storage or some cross-sections. -- 3bd35b_: Log-log interpolation for URR probability tables. -- Support to specify labels on tallies (nelsonag_). - ---------- -Bug Fixes ---------- - -- 33f29a_: Handle negative values in probability table. -- 1c472d_: Fixed survival biasing with probability tables. -- 3c6e80_: Fixed writing tallies with no filters. -- 460ef1_: Invalid results for duplicate tallies. -- 0069d5_: Fixed bug with 0 inactive batches. -- 7af2cf_: Fixed bug in score_analog_tallies. -- 85a60e_: Pick closest angular distribution for law 61. -- 3212f5_: Fixed issue with blank line at beginning of XML files. - -.. _nelsonag: https://github.com/nelsonag -.. _33f29a: https://github.com/mit-crpg/openmc/commit/33f29a -.. _1c472d: https://github.com/mit-crpg/openmc/commit/1c472d -.. _3c6e80: https://github.com/mit-crpg/openmc/commit/3c6e80 -.. _3bd35b: https://github.com/mit-crpg/openmc/commit/3bd35b -.. _0069d5: https://github.com/mit-crpg/openmc/commit/0069d5 -.. _7af2cf: https://github.com/mit-crpg/openmc/commit/7af2cf -.. _460ef1: https://github.com/mit-crpg/openmc/commit/460ef1 -.. _85a60e: https://github.com/mit-crpg/openmc/commit/85a60e -.. _3212f5: https://github.com/mit-crpg/openmc/commit/3212f5 diff --git a/docs/source/releasenotes/notes_0.4.4.rst b/docs/source/releasenotes/notes_0.4.4.rst deleted file mode 100644 index 55a0c3f6f8..0000000000 --- a/docs/source/releasenotes/notes_0.4.4.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _notes_0.4.4: - -============================== -Release Notes for OpenMC 0.4.4 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Ability to write state points when using . -- Real-time XML validation in GNU Emacs with RELAX NG schemata. -- Writing state points every n batches with -- Suppress creation of summary.out and cross_sections.out by default with option - to turn them on with tag in settings.xml file. -- Ability to create HDF5 state points. -- Binary source file is now part of state point file by default. -- Enhanced state point usage and added state point Python scripts. -- Turning confidence intervals on affects k-effective. -- Option to specify for tally meshes. - ---------- -Bug Fixes ---------- - -- 4654ee_: Fixed plotting with void cells. -- 7ee461_: Fixed bug with multi-line input using type='word'. -- 792eb3_: Fixed degrees of freedom for confidence intervals. -- 7fd617_: Fixed bug with restart runs in parallel. -- dc4a8f_: Fixed bug with fixed source restart runs. - -.. _4654ee: https://github.com/mit-crpg/openmc/commit/4654ee -.. _7ee461: https://github.com/mit-crpg/openmc/commit/7ee461 -.. _792eb3: https://github.com/mit-crpg/openmc/commit/792eb3 -.. _7fd617: https://github.com/mit-crpg/openmc/commit/7fd617 -.. _dc4a8f: https://github.com/mit-crpg/openmc/commit/dc4a8f diff --git a/docs/source/releasenotes/notes_0.5.0.rst b/docs/source/releasenotes/notes_0.5.0.rst deleted file mode 100644 index 16be1b063b..0000000000 --- a/docs/source/releasenotes/notes_0.5.0.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _notes_0.5.0: - -============================== -Release Notes for OpenMC 0.5.0 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- All user input options that formerly accepted "off" or "on" should now be - "false" or "true" (the proper XML schema datatype). -- The element is deprecated and was replaced with . -- Added 'events' score that returns number of events that scored to a tally. -- Restructured tally filter implementation and user input. -- Source convergence acceleration via CMFD (implemented with PETSc). -- Ability to read source files in parallel when number of particles is greater - than that number of source sites. -- Cone surface types. - ---------- -Bug Fixes ---------- - -- 737b90_: Coincident surfaces from separate universes / particle traveling - tangent to a surface. -- a819b4_: Output of surface neighbors in summary.out file. -- b11696_: Reading long attribute lists in XML input. -- 2bd46a_: Search for tallying nuclides when no default_xs specified. -- 7a1f08_: Fix word wrapping when writing messages. -- c0e3ec_: Prevent underflow when compiling with MPI=yes and DEBUG=yes. -- 6f8d9d_: Set default tally labels. -- 6a3a5e_: Fix problem with corner-crossing in lattices. - -.. _737b90: https://github.com/mit-crpg/openmc/commit/737b90 -.. _a819b4: https://github.com/mit-crpg/openmc/commit/a819b4 -.. _b11696: https://github.com/mit-crpg/openmc/commit/b11696 -.. _2bd46a: https://github.com/mit-crpg/openmc/commit/2bd46a -.. _7a1f08: https://github.com/mit-crpg/openmc/commit/7a1f08 -.. _c0e3ec: https://github.com/mit-crpg/openmc/commit/c0e3ec -.. _6f8d9d: https://github.com/mit-crpg/openmc/commit/6f8d9d -.. _6a3a5e: https://github.com/mit-crpg/openmc/commit/6a3a5e - diff --git a/docs/source/releasenotes/notes_0.5.1.rst b/docs/source/releasenotes/notes_0.5.1.rst deleted file mode 100644 index 9ba85d304c..0000000000 --- a/docs/source/releasenotes/notes_0.5.1.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _notes_0.5.1: - -============================== -Release Notes for OpenMC 0.5.1 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Absorption and combined estimators for k-effective. -- Natural elements can now be specified in materials using rather than - . -- Support for multiple S(a,b) tables in a single material (e.g. BeO). -- Test suite using Python nosetests. -- Proper install capability with 'make install'. -- Lattices can now be 2 or 3 dimensions. -- New scatter-PN score type. -- New kappa-fission score type. -- Ability to tally any reaction by specifying MT. - ---------- -Bug Fixes ---------- - -- 94103e_: Two checks for outgoing energy filters. -- e77059_: Fix reaction name for MT=849. -- b0fe88_: Fix distance to surface for cones. -- 63bfd2_: Fix tracklength tallies with cell filter and universes. -- 88daf7_: Fix analog tallies with survival biasing. - -.. _94103e: https://github.com/mit-crpg/openmc/commit/94103e -.. _e77059: https://github.com/mit-crpg/openmc/commit/e77059 -.. _b0fe88: https://github.com/mit-crpg/openmc/commit/b0fe88 -.. _63bfd2: https://github.com/mit-crpg/openmc/commit/63bfd2 -.. _88daf7: https://github.com/mit-crpg/openmc/commit/88daf7 diff --git a/docs/source/releasenotes/notes_0.5.2.rst b/docs/source/releasenotes/notes_0.5.2.rst deleted file mode 100644 index d030615db7..0000000000 --- a/docs/source/releasenotes/notes_0.5.2.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _notes_0.5.2: - -============================== -Release Notes for OpenMC 0.5.2 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Python script for mesh tally plotting -- Isotopic abundances based on IUPAC 2009 when using -- Particle restart files for debugging -- Code will abort after certain number of lost particles (defaults to 10) -- Region outside lattice can be filled with material (void by default) -- 3D voxel plots -- Full HDF5/PHDF5 support (including support in statepoint.py) -- Cell overlap checking with -g command line flag (or when plotting) - ---------- -Bug Fixes ---------- - -- 7632f3_: Fixed bug in statepoint.py for multiple generations per batch. -- f85ac4_: Fix infinite loop bug in error module. -- 49c36b_: Don't convert surface ids if surface filter is for current tallies. -- 5ccc78_: Fix bug in reassignment of bins for mesh filter. -- b1f52f_: Fixed bug in plot color specification. -- eae7e5_: Fixed many memory leaks. -- 10c1cc_: Minor CMFD fixes. -- afdb50_: Add compatibility for XML comments without whitespace. -- a3c593_: Fixed bug in use of free gas scattering for H-1. -- 3a66e3_: Fixed bug in 2D mesh tally implementation. -- ab0793_: Corrected PETSC_NULL references to their correct types. -- 182ebd_: Use analog estimator with energyout filter. - -.. _7632f3: https://github.com/mit-crpg/openmc/commit/7632f3 -.. _f85ac4: https://github.com/mit-crpg/openmc/commit/f85ac4 -.. _49c36b: https://github.com/mit-crpg/openmc/commit/49c36b -.. _5ccc78: https://github.com/mit-crpg/openmc/commit/5ccc78 -.. _b1f52f: https://github.com/mit-crpg/openmc/commit/b1f52f -.. _eae7e5: https://github.com/mit-crpg/openmc/commit/eae7e5 -.. _10c1cc: https://github.com/mit-crpg/openmc/commit/10c1cc -.. _afdb50: https://github.com/mit-crpg/openmc/commit/afdb50 -.. _a3c593: https://github.com/mit-crpg/openmc/commit/a3c593 -.. _3a66e3: https://github.com/mit-crpg/openmc/commit/3a66e3 -.. _ab0793: https://github.com/mit-crpg/openmc/commit/ab0793 -.. _182ebd: https://github.com/mit-crpg/openmc/commit/182ebd diff --git a/docs/source/releasenotes/notes_0.5.3.rst b/docs/source/releasenotes/notes_0.5.3.rst deleted file mode 100644 index 6d93f9aece..0000000000 --- a/docs/source/releasenotes/notes_0.5.3.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _notes_0.5.3: - -============================== -Release Notes for OpenMC 0.5.3 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Output interface enhanced to allow multiple files handles to be opened -- Particle restart file linked to output interface -- Particle restarts and state point restarts are both identified with the -r - command line flag. -- Particle instance no longer global, passed to all physics routines -- Physics routines refactored to rely less on global memory, more arguments - passed in -- CMFD routines refactored and now can compute dominance ratio on the fly -- PETSc 3.4.2 or higher must be used and compiled with fortran datatype support -- Memory leaks fixed except for ones from xml-fortran package -- Test suite enhanced to test output with different compiler options -- Description of OpenMC development workflow added -- OpenMP shared-memory parallelism added -- Special run mode --tallies removed. - ---------- -Bug Fixes ---------- - -- 2b1e8a_: Normalize direction vector after reflecting particle. -- 5853d2_: Set blank default for cross section listing alias. -- e178c7_: Fix infinite loop with words greater than 80 characters in write_message. -- c18a6e_: Check for valid secondary mode on S(a,b) tables. -- 82c456_: Fix bug where last process could have zero particles. - -.. _2b1e8a: https://github.com/mit-crpg/openmc/commit/2b1e8a -.. _5853d2: https://github.com/mit-crpg/openmc/commit/5853d2 -.. _e178c7: https://github.com/mit-crpg/openmc/commit/e178c7 -.. _c18a6e: https://github.com/mit-crpg/openmc/commit/c18a6e -.. _82c456: https://github.com/mit-crpg/openmc/commit/82c456 diff --git a/docs/source/releasenotes/notes_0.5.4.rst b/docs/source/releasenotes/notes_0.5.4.rst deleted file mode 100644 index a69354aa0a..0000000000 --- a/docs/source/releasenotes/notes_0.5.4.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _notes_0.5.4: - -============================== -Release Notes for OpenMC 0.5.4 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Source sites outside geometry are resampled -- XML-Fortran backend replaced by FoX XML -- Ability to write particle track files -- Handle lost particles more gracefully (via particle track files) -- Multiple random number generator streams -- Mesh tally plotting utility converted to use Tkinter rather than PyQt -- Script added to download ACE data from NNDC -- Mixed ASCII/binary cross_sections.xml now allowed -- Expanded options for writing source bank -- Re-enabled ability to use source file as starting source -- S(a,b) recalculation avoided when same nuclide and S(a,b) table are accessed - ---------- -Bug Fixes ---------- - -- 32c03c_: Check for valid data in cross_sections.xml -- c71ef5_: Fix bug in statepoint.py -- 8884fb_: Check for all ZAIDs for S(a,b) tables -- b38af0_: Fix XML reading on multiple levels of input -- d28750_: Fix bug in convert_xsdir.py -- cf567c_: ENDF/B-VI data checked for compatibility -- 6b9461_: Fix p_valid sampling inside of sample_energy - -.. _32c03c: https://github.com/mit-crpg/openmc/commit/32c03c -.. _c71ef5: https://github.com/mit-crpg/openmc/commit/c71ef5 -.. _8884fb: https://github.com/mit-crpg/openmc/commit/8884fb -.. _b38af0: https://github.com/mit-crpg/openmc/commit/b38af0 -.. _d28750: https://github.com/mit-crpg/openmc/commit/d28750 -.. _cf567c: https://github.com/mit-crpg/openmc/commit/cf567c -.. _6b9461: https://github.com/mit-crpg/openmc/commit/6b9461 - ------------- -Contributors ------------- - -This release contains new contributions from the following people: - -- `Sterling Harper `_ -- `Bryan Herman `_ -- `Nick Horelik `_ -- `Adam Nelson `_ -- `Paul Romano `_ -- `Tuomas Viitanen `_ -- `Jon Walsh `_ diff --git a/docs/source/releasenotes/notes_0.6.0.rst b/docs/source/releasenotes/notes_0.6.0.rst deleted file mode 100644 index 3f98c461dd..0000000000 --- a/docs/source/releasenotes/notes_0.6.0.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _notes_0.6.0: - -============================== -Release Notes for OpenMC 0.6.0 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Legendre and spherical harmonic expansion tally scores -- CMake is now default build system -- Regression test suite based on CTests and NNDC cross sections -- FoX is now a git submodule -- Support for older cross sections (e.g. MCNP 66c) -- Progress bar for plots -- Expanded support for natural elements via in settings.xml - ---------- -Bug Fixes ---------- - -- 41f7ca_: Fixed erroneous results from survival biasing -- 038736_: Fix tallies over void materials -- 46f9e8_: Check for negative values in probability tables -- d1ca35_: Fixed sampling of angular distribution -- 0291c0_: Fixed indexing error in plotting -- d7a7d0_: Fix bug with specifying xs attribute -- 85b3cb_: Fix out-of-bounds error with OpenMP threading - -.. _41f7ca: https://github.com/mit-crpg/openmc/commit/41f7ca -.. _038736: https://github.com/mit-crpg/openmc/commit/038736 -.. _46f9e8: https://github.com/mit-crpg/openmc/commit/46f9e8 -.. _d1ca35: https://github.com/mit-crpg/openmc/commit/d1ca35 -.. _0291c0: https://github.com/mit-crpg/openmc/commit/0291c0 -.. _d7a7d0: https://github.com/mit-crpg/openmc/commit/d7a7d0 -.. _85b3cb: https://github.com/mit-crpg/openmc/commit/85b3cb - ------------- -Contributors ------------- - -This release contains new contributions from the following people: - -- `Sterling Harper `_ -- `Bryan Herman `_ -- `Nick Horelik `_ -- `Adam Nelson `_ -- `Paul Romano `_ -- `Jon Walsh `_ diff --git a/docs/source/releasenotes/notes_0.6.1.rst b/docs/source/releasenotes/notes_0.6.1.rst deleted file mode 100644 index 71852bd174..0000000000 --- a/docs/source/releasenotes/notes_0.6.1.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _notes_0.6.1: - -============================== -Release Notes for OpenMC 0.6.1 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Coarse mesh finite difference (CMFD) acceleration no longer requires PETSc -- Statepoint file numbering is now zero-padded -- Python scripts now compatible with Python 2 or 3 -- Ability to run particle restarts in fixed source calculations -- Capability to filter box source by fissionable materials -- Nuclide/element names are now case insensitive in input files -- Improved treatment of resonance scattering for heavy nuclides - ---------- -Bug Fixes ---------- - -- 03e890_: Check for energy-dependent multiplicities in ACE files -- 4439de_: Fix distance-to-surface calculation for general plane surface -- 5808ed_: Account for differences in URR band probabilities at different energies -- 2e60c0_: Allow zero atom/weight percents in materials -- 3e0870_: Don't use PWD environment variable when setting path to input files -- dc4776_: Handle probability table resampling correctly -- 01178b_: Fix metastables nuclides in NNDC cross_sections.xml file -- 62ec43_: Don't read tallies.xml when OpenMC is run in plotting mode -- 2a95ef_: Prevent segmentation fault on "current" score without mesh filter -- 93e482_: Check for negative values in probability tables - -.. _03e890: https://github.com/mit-crpg/openmc/commit/03e890 -.. _4439de: https://github.com/mit-crpg/openmc/commit/4439de -.. _5808ed: https://github.com/mit-crpg/openmc/commit/5808ed -.. _2e60c0: https://github.com/mit-crpg/openmc/commit/2e60c0 -.. _3e0870: https://github.com/mit-crpg/openmc/commit/3e0870 -.. _dc4776: https://github.com/mit-crpg/openmc/commit/dc4776 -.. _01178b: https://github.com/mit-crpg/openmc/commit/01178b -.. _62ec43: https://github.com/mit-crpg/openmc/commit/62ec43 -.. _2a95ef: https://github.com/mit-crpg/openmc/commit/2a95ef -.. _93e482: https://github.com/mit-crpg/openmc/commit/93e482 - ------------- -Contributors ------------- - -This release contains new contributions from the following people: - -- `Sterling Harper `_ -- `Bryan Herman `_ -- `Adam Nelson `_ -- `Paul Romano `_ -- `Jon Walsh `_ -- `Will Boyd `_ diff --git a/docs/source/releasenotes/notes_0.6.2.rst b/docs/source/releasenotes/notes_0.6.2.rst deleted file mode 100644 index eefc493fcf..0000000000 --- a/docs/source/releasenotes/notes_0.6.2.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _notes_0.6.2: - -============================== -Release Notes for OpenMC 0.6.2 -============================== - -------------------- -System Requirements -------------------- - -There are no special requirements for running the OpenMC code. As of this -release, OpenMC has been tested on a variety of Linux distributions, Mac OS X, -and Microsoft Windows 7. Memory requirements will vary depending on the size of -the problem at hand (mostly on the number of nuclides in the problem). - ------------- -New Features ------------- - -- Meshline plotting capability -- Support for plotting cells/materials on middle universe levels -- Ability to model cells with no surfaces -- Compatibility with PETSc 3.5 -- Compatability with OpenMPI 1.7/1.8 -- Improved overall performance via logarithmic-mapped energy grid search -- Improved multi-threaded performance with atomic operations -- Support for fixed source problems with fissionable materials - ---------- -Bug Fixes ---------- - -- 26fb93_: Fix problem with -t, --track command-line flag -- 2f07c0_: Improved evaporation spectrum algorithm -- e6abb9_: Fix segfault when tallying in a void material -- 291b45_: Handle metastable nuclides in NNDC data and multiplicities in MT=5 data - -.. _26fb93: https://github.com/mit-crpg/openmc/commit/26fb93 -.. _2f07c0: https://github.com/mit-crpg/openmc/commit/2f07c0 -.. _e6abb9: https://github.com/mit-crpg/openmc/commit/e6abb9 -.. _291b45: https://github.com/mit-crpg/openmc/commit/291b45 - ------------- -Contributors ------------- - -This release contains new contributions from the following people: - -- `Will Boyd `_ -- `Matt Ellis `_ -- `Sterling Harper `_ -- `Bryan Herman `_ -- `Nicholas Horelik `_ -- `Anton Leontiev `_ -- `Adam Nelson `_ -- `Paul Romano `_ -- `Jon Walsh `_ -- `John Xia `_ diff --git a/docs/sphinxext/LICENSE b/docs/sphinxext/LICENSE new file mode 100644 index 0000000000..2d508d2be9 --- /dev/null +++ b/docs/sphinxext/LICENSE @@ -0,0 +1,68 @@ +The file notebook_sphinxext.py was derived from code in PyNE and yt. + +PyNE has the following license: + +------------------------------------------------------------------------------- +Copyright 2011-2015, the PyNE Development Team. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE PYNE DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of the stakeholders of the PyNE project or the employers of PyNE developers. +------------------------------------------------------------------------------- + +yt has the following license: + +------------------------------------------------------------------------------- +yt is licensed under the terms of the Modified BSD License (also known as New +or Revised BSD), as follows: + +Copyright (c) 2013-, yt Development Team +Copyright (c) 2006-2013, Matthew Turk + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +Neither the name of the yt Development Team nor the names of its +contributors may be used to endorse or promote products derived from this +software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +------------------------------------------------------------------------------- diff --git a/docs/sphinxext/notebook_sphinxext.py b/docs/sphinxext/notebook_sphinxext.py new file mode 100644 index 0000000000..a9d634a351 --- /dev/null +++ b/docs/sphinxext/notebook_sphinxext.py @@ -0,0 +1,120 @@ +import sys +import os.path +import re +import time +from docutils import io, nodes, statemachine, utils +try: + from docutils.utils.error_reporting import ErrorString # the new way +except ImportError: + from docutils.error_reporting import ErrorString # the old way +from docutils.parsers.rst import Directive, convert_directive_function +from docutils.parsers.rst import directives, roles, states +from docutils.parsers.rst.roles import set_classes +from docutils.transforms import misc + +try: + from IPython.nbconver.exporters import html +except ImportError: + from IPython.nbconvert import html + + +class Notebook(Directive): + """Use nbconvert to insert a notebook into the environment. + This is based on the Raw directive in docutils + """ + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} + has_content = False + + def run(self): + # check if raw html is supported + if not self.state.document.settings.raw_enabled: + raise self.warning('"%s" directive disabled.' % self.name) + + # set up encoding + attributes = {'format': 'html'} + encoding = self.options.get( + 'encoding', self.state.document.settings.input_encoding) + e_handler = self.state.document.settings.input_encoding_error_handler + + # get path to notebook + source_dir = os.path.dirname( + os.path.abspath(self.state.document.current_source)) + nb_path = os.path.normpath(os.path.join(source_dir, + self.arguments[0])) + nb_path = utils.relative_path(None, nb_path) + + # convert notebook to html + exporter = html.HTMLExporter(template_file='full') + output, resources = exporter.from_filename(nb_path) + header = output.split('', 1)[1].split('',1)[0] + body = output.split('', 1)[1].split('',1)[0] + + # add HTML5 scoped attribute to header style tags + header = header.replace(''] + lines.append(header) + lines.append(body) + lines.append('') + text = '\n'.join(lines) + + # add dependency + self.state.document.settings.record_dependencies.add(nb_path) + attributes['source'] = nb_path + + # create notebook node + nb_node = notebook('', text, **attributes) + (nb_node.source, nb_node.line) = \ + self.state_machine.get_source_and_line(self.lineno) + + return [nb_node] + + +class notebook(nodes.raw): + pass + + +def visit_notebook_node(self, node): + self.visit_raw(node) + + +def depart_notebook_node(self, node): + self.depart_raw(node) + + +def setup(app): + app.add_node(notebook, + html=(visit_notebook_node, depart_notebook_node)) + + app.add_directive('notebook', Notebook) diff --git a/openmc/checkvalue.py b/openmc/checkvalue.py index 01613908ba..787052f5d6 100644 --- a/openmc/checkvalue.py +++ b/openmc/checkvalue.py @@ -1,3 +1,36 @@ +from collections import Iterable +from numbers import Integral, Real + +import numpy as np + +def _isinstance(value, expected_type): + """A Numpy-aware replacement for isinstance + + This function will be obsolete when Numpy v. >= 1.9 is established. + """ + + # Declare numpy numeric types. + np_ints = (np.int_, np.intc, np.intp, np.int8, np.int16, np.int32, np.int64, + np.uint8, np.uint16, np.uint32, np.uint64) + np_floats = (np.float_, np.float16, np.float32, np.float64) + + # Include numpy integers, if necessary. + if type(expected_type) is tuple: + if Integral in expected_type: + expected_type = expected_type + np_ints + elif expected_type is Integral: + expected_type = (Integral, ) + np_ints + + # Include numpy floats, if necessary. + if type(expected_type) is tuple: + if Real in expected_type: + expected_type = expected_type + np_floats + elif expected_type is Real: + expected_type = (Real, ) + np_floats + + # Now, make the instance check. + return isinstance(value, expected_type) + def check_type(name, value, expected_type, expected_iter_type=None): """Ensure that an object is of an expected type. Optionally, if the object is iterable, check that each element is of a particular type. @@ -16,20 +49,97 @@ def check_type(name, value, expected_type, expected_iter_type=None): """ - if not isinstance(value, expected_type): - msg = 'Unable to set {0} to {1} which is not of type {2}'.format( + if not _isinstance(value, expected_type): + msg = 'Unable to set "{0}" to "{1}" which is not of type "{2}"'.format( name, value, expected_type.__name__) raise ValueError(msg) if expected_iter_type: for item in value: - if not isinstance(item, expected_iter_type): - msg = 'Unable to set {0} to {1} since each item must be ' \ - 'of type {2}'.format(name, value, + if not _isinstance(item, expected_iter_type): + msg = 'Unable to set "{0}" to "{1}" since each item must be ' \ + 'of type "{2}"'.format(name, value, expected_iter_type.__name__) raise ValueError(msg) +def check_iterable_type(name, value, expected_type, min_depth=1, max_depth=1): + """Ensure that an object is an iterable containing an expected type. + + Parameters + ---------- + name : str + Description of value being checked + value : Iterable + Iterable, possibly of other iterables, that should ultimately contain + the expected type + expected_type : type + type that the iterable should contain + min_depth : int + The minimum number of layers of nested iterables there should be before + reaching the ultimately contained items + max_depth : int + The maximum number of layers of nested iterables there should be before + reaching the ultimately contained items + """ + # Initialize the tree at the very first item. + tree = [value] + index = [0] + + # Traverse the tree. + while index[0] != len(tree[0]): + # If we are done with this level of the tree, go to the next branch on + # the level above this one. + if index[-1] == len(tree[-1]): + del index[-1] + del tree[-1] + index[-1] += 1 + continue + + # Get a string representation of the current index in case we raise an + # exception. + form = '[' + '{:d}, '*(len(index)-1) + '{:d}]' + ind_str = form.format(*index) + + # What is the current item we are looking at? + current_item = tree[-1][index[-1]] + + # If this item is of the expected type, then we've reached the bottom + # level of this branch. + if _isinstance(current_item, expected_type): + # Is this deep enough? + if len(tree) < min_depth: + msg = 'Error setting "{0}": The item at {1} does not meet the '\ + 'minimum depth of {2}'.format(name, ind_str, min_depth) + raise ValueError(msg) + + # This item is okay. Move on to the next item. + index[-1] += 1 + + # If this item is not of the expected type, then it's either an error or + # another level of the tree that we need to pursue deeper. + else: + if isinstance(current_item, Iterable): + # The tree goes deeper here, let's explore it. + tree.append(current_item) + index.append(0) + + # But first, have we exceeded the max depth? + if len(tree) > max_depth: + msg = 'Error setting {0}: Found an iterable at {1}, items '\ + 'in that iterable excceed the maximum depth of {2}' \ + .format(name, ind_str, max_depth) + raise ValueError(msg) + + else: + # This item is completely unexpected. + msg = "Error setting {0}: Items must be of type '{1}', but " \ + "item at {2} is of type '{3}'"\ + .format(name, expected_type.__name__, ind_str, + type(current_item).__name__) + raise ValueError(msg) + + def check_length(name, value, length_min, length_max=None): """Ensure that a sized object has length within a given range. @@ -49,16 +159,16 @@ def check_length(name, value, length_min, length_max=None): if length_max is None: if len(value) != length_min: - msg = 'Unable to set {0} to {1} since it must be of ' \ - 'length {2}'.format(name, value, length_min) + msg = 'Unable to set "{0}" to "{1}" since it must be of ' \ + 'length "{2}"'.format(name, value, length_min) raise ValueError(msg) elif not length_min <= len(value) <= length_max: if length_min == length_max: - msg = 'Unable to set {0} to {1} since it must be of ' \ - 'length {2}'.format(name, value, length_min) + msg = 'Unable to set "{0}" to "{1}" since it must be of ' \ + 'length "{2}"'.format(name, value, length_min) else: - msg = 'Unable to set {0} to {1} since it must have length ' \ - 'between {2} and {3}'.format(name, value, length_min, + msg = 'Unable to set "{0}" to "{1}" since it must have length ' \ + 'between "{2}" and "{3}"'.format(name, value, length_min, length_max) raise ValueError(msg) @@ -78,7 +188,7 @@ def check_value(name, value, accepted_values): """ if value not in accepted_values: - msg = 'Unable to set {0} to {1} since it is not in {2}'.format( + msg = 'Unable to set "{0}" to "{1}" since it is not in "{2}"'.format( name, value, accepted_values) raise ValueError(msg) @@ -100,13 +210,13 @@ def check_less_than(name, value, maximum, equality=False): if equality: if value > maximum: - msg = 'Unable to set {0} to {1} since it is greater than ' \ - '{2}'.format(name, value, maximum) + msg = 'Unable to set "{0}" to "{1}" since it is greater than ' \ + '"{2}"'.format(name, value, maximum) raise ValueError(msg) else: if value >= maximum: - msg = 'Unable to set {0} to {1} since it is greater than ' \ - 'or equal to {2}'.format(name, value, maximum) + msg = 'Unable to set "{0}" to "{1}" since it is greater than ' \ + 'or equal to "{2}"'.format(name, value, maximum) raise ValueError(msg) def check_greater_than(name, value, minimum, equality=False): @@ -127,11 +237,11 @@ def check_greater_than(name, value, minimum, equality=False): if equality: if value < minimum: - msg = 'Unable to set {0} to {1} since it is less than ' \ - '{2}'.format(name, value, minimum) + msg = 'Unable to set "{0}" to "{1}" since it is less than ' \ + '"{2}"'.format(name, value, minimum) raise ValueError(msg) else: if value <= minimum: - msg = 'Unable to set {0} to {1} since it is less than ' \ - 'or equal to {2}'.format(name, value, minimum) + msg = 'Unable to set "{0}" to "{1}" since it is less than ' \ + 'or equal to "{2}"'.format(name, value, minimum) raise ValueError(msg) diff --git a/openmc/clean_xml.py b/openmc/clean_xml.py index 619475fa07..2bb3f39f1b 100644 --- a/openmc/clean_xml.py +++ b/openmc/clean_xml.py @@ -82,11 +82,11 @@ def clean_xml_indentation(element, level=0): if not element.tail or not element.tail.strip(): element.tail = i - for element in element: - clean_xml_indentation(element, level+1) + for sub_element in element: + clean_xml_indentation(sub_element, level+1) - if not element.tail or not element.tail.strip(): - element.tail = i + if not sub_element.tail or not sub_element.tail.strip(): + sub_element.tail = i else: if level and (not element.tail or not element.tail.strip()): diff --git a/openmc/cross.py b/openmc/cross.py new file mode 100644 index 0000000000..735bb4cd26 --- /dev/null +++ b/openmc/cross.py @@ -0,0 +1,340 @@ +from openmc import Filter, Nuclide + + +class CrossScore(object): + """A special-purpose tally score used to encapsulate all combinations of two + tally's scores as a outer product for tally arithmetic. + + Parameters + ---------- + left_score : str or CrossScore + The left score in the outer product + right_score : str or CrossScore + The right score in the outer product + binary_op : str + The tally arithmetic binary operator (e.g., '+', '-', etc.) used to + combine two tally's scores with this CrossNuclide + + Attributes + ---------- + left_score : str or CrossScore + The left score in the outer product + right_score : str or CrossScore + The right score in the outer product + binary_op : str + The tally arithmetic binary operator (e.g., '+', '-', etc.) used to + combine two tally's scores with this CrossNuclide + + """ + + def __init__(self, left_score=None, right_score=None, binary_op=None): + + self._left_score = None + self._right_score = None + self._binary_op = None + + if left_score is not None: + self.left_score = left_score + if right_score is not None: + self.right_score = right_score + if binary_op is not None: + self.binary_op = binary_op + + @property + def left_score(self): + return self._left_score + + @property + def right_score(self): + return self._right_score + + @property + def binary_op(self): + return self._binary_op + + @left_score.setter + def left_score(self, left_score): + self._left_score = left_score + + @right_score.setter + def right_score(self, right_score): + self._right_score = right_score + + @binary_op.setter + def binary_op(self, binary_op): + self._binary_op = binary_op + + def __eq__(self, other): + return str(other) == str(self) + + def __repr__(self): + string = '({0} {1} {2})'.format(self.left_score, + self.binary_op, self.right_score) + return string + + +class CrossNuclide(object): + """A special-purpose nuclide used to encapsulate all combinations of two + tally's nuclides as a outer product for tally arithmetic. + + Parameters + ---------- + left_nuclide : Nuclide or CrossNuclide + The left nuclide in the outer product + right_nuclide : Nuclide or CrossNuclide + The right nuclide in the outer product + binary_op : str + The tally arithmetic binary operator (e.g., '+', '-', etc.) used to + combine two tally's nuclides with this CrossNuclide + + Attributes + ---------- + left_nuclide : Nuclide or CrossNuclide + The left nuclide in the outer product + right_nuclide : Nuclide or CrossNuclide + The right nuclide in the outer product + binary_op : str + The tally arithmetic binary operator (e.g., '+', '-', etc.) used to + combine two tally's nuclides with this CrossNuclide + + """ + + def __init__(self, left_nuclide=None, right_nuclide=None, binary_op=None): + + self._left_nuclide = None + self._right_nuclide = None + self._binary_op = None + + if left_nuclide is not None: + self.left_nuclide = left_nuclide + if right_nuclide is not None: + self.right_nuclide = right_nuclide + if binary_op is not None: + self.binary_op = binary_op + + @property + def left_nuclide(self): + return self._left_nuclide + + @property + def right_nuclide(self): + return self._right_nuclide + + @property + def binary_op(self): + return self._binary_op + + @left_nuclide.setter + def left_nuclide(self, left_nuclide): + self._left_nuclide = left_nuclide + + @right_nuclide.setter + def right_nuclide(self, right_nuclide): + self._right_nuclide = right_nuclide + + @binary_op.setter + def binary_op(self, binary_op): + self._binary_op = binary_op + + def __eq__(self, other): + return str(other) == str(self) + + def __repr__(self): + + string = '' + + # If the Summary was linked, the left nuclide is a Nuclide object + if isinstance(self.left_nuclide, Nuclide): + string += '(' + self.left_nuclide.name + # If the Summary was not linked, the left nuclide is the ZAID + else: + string += '(' + str(self.left_nuclide) + + string += ' ' + self.binary_op + ' ' + + # If the Summary was linked, the right nuclide is a Nuclide object + if isinstance(self.right_nuclide, Nuclide): + string += self.right_nuclide.name + ')' + # If the Summary was not linked, the right nuclide is the ZAID + else: + string += str(self.right_nuclide) + ')' + + return string + + +class CrossFilter(object): + """A special-purpose filter used to encapsulate all combinations of two + tally's filter bins as a outer product for tally arithmetic. + + Parameters + ---------- + left_filter : Filter or CrossFilter + The left filter in the outer product + right_filter : Filter or CrossFilter + The right filter in the outer product + binary_op : str + The tally arithmetic binary operator (e.g., '+', '-', etc.) used to + combine two tally's filter bins with this CrossFilter + + Attributes + ---------- + left_filter : Filter or CrossFilter + The left filter in the outer product + right_filter : Filter or CrossFilter + The right filter in the outer product + binary_op : str + The tally arithmetic binary operator (e.g., '+', '-', etc.) used to + combine two tally's filter bins with this CrossFilter + + """ + + def __init__(self, left_filter=None, right_filter=None, binary_op=None): + + left_type = left_filter.type + right_type = right_filter.type + self.type = '({0} {1} {2})'.format(left_type, binary_op, right_type) + + self._bins = {} + self._bins['left'] = left_filter.bins + self._bins['right'] = right_filter.bins + self._num_bins = left_filter.num_bins * right_filter.num_bins + + self._left_filter = None + self._right_filter = None + self._binary_op = None + + if left_filter is not None: + self.left_filter = left_filter + if right_filter is not None: + self.right_filter = right_filter + if binary_op is not None: + self.binary_op = binary_op + + def __hash__(self): + return hash((self.type, self.bins)) + + 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)) + clone._left_filter = self.left_filter + clone._right_filter = self.right_filter + clone._type = self.type + clone._bins = self.bins + clone._num_bins = self.num_bins + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + @property + def left_filter(self): + return self._left_filter + + @property + def right_filter(self): + return self._right_filter + + @property + def binary_op(self): + return self._binary_op + + @property + def type(self): + return self._type + + @property + def bins(self): + return (self._bins['left'], self._bins['right']) + + @property + def num_bins(self): + return self._num_bins + + @property + def stride(self): + return self.left_filter.stride * self.right_filter.stride + + @type.setter + def type(self, filter_type): + self._type = filter_type + + @left_filter.setter + def left_filter(self, left_filter): + self._left_filter = left_filter + + @right_filter.setter + def right_filter(self, right_filter): + self._right_filter = right_filter + + @binary_op.setter + def binary_op(self, binary_op): + self._binary_op = binary_op + + def __eq__(self, other): + return str(other) == str(self) + + def split_filters(self): + + split_filters = [] + + # If left Filter is not a CrossFilter, simply append to list + if isinstance(self.left_filter, Filter): + split_filters.append(self.left_filter) + # Recursively descend CrossFilter tree to collect all Filters + else: + split_filters.extend(self.left_filter.split_filters()) + + # If right Filter is not a CrossFilter, simply append to list + if isinstance(self.right_filter, Filter): + split_filters.append(self.right_filter) + # Recursively descend CrossFilter tree to collect all Filters + else: + split_filters.extend(self.right_filter.split_filters()) + + return split_filters + + def get_bin_index(self, filter_bin): + """Returns the index in the CrossFilter for some bin. + + Parameters + ---------- + filter_bin : 2-tuple + A 2-tuple where each value corresponds to the bin of interest + in the left and right filter, respectively. A bin is the integer + ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' + Filters. The bin is an integer for the cell instance ID for + 'distribcell' Filters. The bin is a 2-tuple of floats for 'energy' + and 'energyout' filters corresponding to the energy boundaries of + the bin of interest. The bin is a (x,y,z) 3-tuple for 'mesh' + filters corresponding to the mesh cell of interest. + + Returns + ------- + filter_index : int + The index in the Tally data array for this filter bin. + + """ + + left_index = self.left_filter.get_bin_index(filter_bin[0]) + right_index = self.right_filter.get_bin_index(filter_bin[0]) + filter_index = left_index * self.right_filter.num_bins + right_index + return filter_index + + def __repr__(self): + + string = 'CrossFilter\n' + filter_type = '({0} {1} {2})'.format(self.left_filter.type, + self.binary_op, + self.right_filter.type) + filter_bins = '({0} {1} {2})'.format(self.left_filter.bins, + self.binary_op, + self.right_filter.bins) + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', filter_type) + string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', filter_bins) + return string diff --git a/openmc/executor.py b/openmc/executor.py index 6dfb3566c6..54c8a64c1a 100644 --- a/openmc/executor.py +++ b/openmc/executor.py @@ -50,7 +50,7 @@ class Executor(object): check_type("Executor's working directory", working_directory, basestring) if not os.path.isdir(working_directory): - msg = 'Unable to set Executor\'s working directory to {0} ' \ + msg = 'Unable to set Executor\'s working directory to "{0}" ' \ 'which does not exist'.format(working_directory) raise ValueError(msg) diff --git a/openmc/filter.py b/openmc/filter.py index 09928e235a..5a81906762 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -6,7 +6,8 @@ import numpy as np from openmc import Mesh from openmc.constants import * -from openmc.checkvalue import check_type +from openmc.checkvalue import check_type, check_iterable_type, \ + check_greater_than class Filter(object): """A filter used to constrain a tally to a specific criterion, e.g. only tally @@ -42,15 +43,15 @@ class Filter(object): def __eq__(self, filter2): # Check type - if self._type != filter2._type: + if self.type != filter2.type: return False # Check number of bins - elif len(self._bins) != len(filter2._bins): + elif len(self.bins) != len(filter2.bins): return False # Check bin edges - elif not np.allclose(self._bins, filter2._bins): + elif not np.allclose(self.bins, filter2.bins): return False else: @@ -65,12 +66,12 @@ class Filter(object): # 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)) - clone._type = self._type - clone._bins = copy.deepcopy(self._bins, memo) - clone._num_bins = self._num_bins - clone._mesh = copy.deepcopy(self._mesh, memo) - clone._offset = self._offset - clone._stride = self._stride + clone._type = self.type + clone._bins = copy.deepcopy(self.bins, memo) + clone._num_bins = self.num_bins + clone._mesh = copy.deepcopy(self.mesh, memo) + clone._offset = self.offset + clone._stride = self.stride memo[id(self)] = clone @@ -132,36 +133,30 @@ class Filter(object): else: bins = list(bins) - if self._type in ['cell', 'cellborn', 'surface', 'material', + if self.type in ['cell', 'cellborn', 'surface', 'material', 'universe', 'distribcell']: + check_iterable_type('filter bins', bins, Integral) for edge in bins: - if not isinstance(edge, Integral): - msg = 'Unable to add bin "{0}" to a {1} Filter since ' \ - 'it is not an integer'.format(edge, self._type) - raise ValueError(msg) - elif edge < 0: - msg = 'Unable to add bin "{0}" to a {1} Filter since ' \ - 'it is negative'.format(edge, self._type) - raise ValueError(msg) + check_greater_than('filter bin', edge, 0, equality=True) elif self._type in ['energy', 'energyout']: for edge in bins: if not isinstance(edge, Real): - msg = 'Unable to add bin edge "{0}" to a {1} Filter ' \ + msg = 'Unable to add bin edge "{0}" to a "{1}" Filter ' \ 'since it is a non-integer or floating point ' \ - 'value'.format(edge, self._type) + 'value'.format(edge, self.type) raise ValueError(msg) elif edge < 0.: - msg = 'Unable to add bin edge "{0}" to a {1} Filter ' \ - 'since it is a negative value'.format(edge, self._type) + msg = 'Unable to add bin edge "{0}" to a "{1}" Filter ' \ + 'since it is a negative value'.format(edge, self.type) raise ValueError(msg) # Check that bin edges are monotonically increasing for index in range(len(bins)): if index > 0 and bins[index] < bins[index-1]: - msg = 'Unable to add bin edges "{0}" to a {1} Filter ' \ + msg = 'Unable to add bin edges "{0}" to a "{1}" Filter ' \ 'since they are not monotonically ' \ - 'increasing'.format(bins, self._type) + 'increasing'.format(bins, self.type) raise ValueError(msg) # mesh filters @@ -180,17 +175,13 @@ class Filter(object): raise ValueError(msg) # If all error checks passed, add bin edges - self._bins = bins + self._bins = np.array(bins) # FIXME @num_bins.setter def num_bins(self, num_bins): - if not isinstance(num_bins, Integral) or num_bins < 0: - msg = 'Unable to set the number of bins "{0}" for a {1} Filter ' \ - 'since it is not a positive ' \ - 'integer'.format(num_bins, self._type) - raise ValueError(msg) - + check_type('filter num_bins', num_bins, Integral) + check_greater_than('filter num_bins', num_bins, 0, equality=True) self._num_bins = num_bins @mesh.setter @@ -199,7 +190,7 @@ class Filter(object): self._mesh = mesh self.type = 'mesh' - self.bins = self._mesh._id + self.bins = self.mesh.id @offset.setter def offset(self, offset): @@ -210,8 +201,8 @@ class Filter(object): def stride(self, stride): check_type('filter stride', stride, Integral) if stride < 0: - msg = 'Unable to set stride "{0}" for a {1} Filter since it is a ' \ - 'negative value'.format(stride, self._type) + msg = 'Unable to set stride "{0}" for a "{1}" Filter since it ' \ + 'is a negative value'.format(stride, self.type) raise ValueError(msg) self._stride = stride @@ -269,14 +260,15 @@ class Filter(object): """ if not self.can_merge(filter): - msg = 'Unable to merge {0} with {1} filters'.format(self._type, filter._type) + msg = 'Unable to merge "{0}" with "{1}" ' \ + 'filters'.format(self.type, filter.type) raise ValueError(msg) # Create deep copy of filter to return as merged filter merged_filter = copy.deepcopy(self) # Merge unique filter bins - merged_bins = list(set(self._bins + filter._bins)) + merged_bins = list(set(self.bins + filter.bins)) merged_filter.bins = merged_bins merged_filter.num_bins = len(merged_bins) @@ -322,17 +314,17 @@ class Filter(object): # Use lower energy bound to find index for energy Filters elif self.type in ['energy', 'energyout']: - val = self.bins.index(filter_bin[0]) + val = np.where(self.bins == filter_bin[0])[0][0] filter_index = val # Filter bins for distribcell are the "IDs" of each unique placement # of the Cell in the Geometry (integers starting at 0) - elif self._type == 'distribcell': + elif self.type == 'distribcell': filter_index = filter_bin # Use ID for all other Filters (e.g., material, cell, etc.) else: - val = self.bins.index(filter_bin) + val = np.where(self.bins == filter_bin)[0][0] filter_index = val except ValueError: @@ -344,7 +336,7 @@ class Filter(object): def __repr__(self): string = 'Filter\n' - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._type) - string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', self._bins) - string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self._offset) + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.type) + string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', self.bins) + string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self.offset) return string diff --git a/openmc/geometry.py b/openmc/geometry.py index 2ea9705fa4..18fa698b50 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -34,8 +34,8 @@ class Geometry(object): def root_universe(self, root_universe): check_type('root universe', root_universe, openmc.Universe) if root_universe._id != 0: - msg = 'Unable to add root Universe {0} to Geometry since ' \ - 'it has ID={1} instead of ' \ + msg = 'Unable to add root Universe "{0}" to Geometry since ' \ + 'it has ID="{1}" instead of ' \ 'ID=0'.format(root_universe, root_universe._id) raise ValueError(msg) diff --git a/openmc/material.py b/openmc/material.py index 41ec586bb5..8f514f37ce 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -26,7 +26,7 @@ def reset_auto_material_id(): # Units for density supported by OpenMC -DENSITY_UNITS = ['g/cm3', 'g/cc', 'kg/cm3', 'at/b-cm', 'at/cm3', 'sum'] +DENSITY_UNITS = ['g/cm3', 'g/cc', 'kg/cm3', 'atom/b-cm', 'atom/cm3', 'sum'] # Constant for density when not needed NO_DENSITY = 99999. @@ -122,7 +122,7 @@ class Material(object): else: check_type('material ID', material_id, Integral) if material_id in MATERIAL_IDS: - msg = 'Unable to set Material ID to {0} since a Material with ' \ + msg = 'Unable to set Material ID to "{0}" since a Material with ' \ 'this ID was already initialized'.format(material_id) raise ValueError(msg) check_greater_than('material ID', material_id, 0) @@ -132,7 +132,7 @@ class Material(object): @name.setter def name(self, name): - check_type('name for Material ID={0}'.format(self._id), + check_type('name for Material ID="{0}"'.format(self._id), name, basestring) self._name = name @@ -149,12 +149,12 @@ class Material(object): """ - check_type('the density for Material ID={0}'.format(self._id), + check_type('the density for Material ID="{0}"'.format(self._id), density, Real) check_value('density units', units, DENSITY_UNITS) if density == NO_DENSITY and units is not 'sum': - msg = 'Unable to set the density Material ID={0} ' \ + msg = 'Unable to set the density Material ID="{0}" ' \ 'because a density must be set when not using ' \ 'sum unit'.format(self._id) raise ValueError(msg) @@ -169,8 +169,8 @@ class Material(object): 'version of openmc') if not isinstance(filename, basestring) and filename is not None: - msg = 'Unable to add OTF material file to Material ID={0} with a ' \ - 'non-string name {1}'.format(self._id, filename) + msg = 'Unable to add OTF material file to Material ID="{0}" with a ' \ + 'non-string name "{1}"'.format(self._id, filename) raise ValueError(msg) self._distrib_otf_file = filename @@ -198,18 +198,18 @@ class Material(object): """ if not isinstance(nuclide, (openmc.Nuclide, str)): - msg = 'Unable to add a Nuclide to Material ID={0} with a ' \ - 'non-Nuclide value {1}'.format(self._id, nuclide) + msg = 'Unable to add a Nuclide to Material ID="{0}" with a ' \ + 'non-Nuclide value "{1}"'.format(self._id, nuclide) raise ValueError(msg) elif not isinstance(percent, Real): - msg = 'Unable to add a Nuclide to Material ID={0} with a ' \ - 'non-floating point value {1}'.format(self._id, percent) + msg = 'Unable to add a Nuclide to Material ID="{0}" with a ' \ + 'non-floating point value "{1}"'.format(self._id, percent) raise ValueError(msg) elif percent_type not in ['ao', 'wo', 'at/g-cm']: - msg = 'Unable to add a Nuclide to Material ID={0} with a ' \ - 'percent type {1}'.format(self._id, percent_type) + msg = 'Unable to add a Nuclide to Material ID="{0}" with a ' \ + 'percent type "{1}"'.format(self._id, percent_type) raise ValueError(msg) if isinstance(nuclide, openmc.Nuclide): @@ -232,7 +232,7 @@ class Material(object): """ if not isinstance(nuclide, openmc.Nuclide): - msg = 'Unable to remove a Nuclide {0} in Material ID={1} ' \ + msg = 'Unable to remove a Nuclide "{0}" in Material ID="{1}" ' \ 'since it is not a Nuclide'.format(self._id, nuclide) raise ValueError(msg) @@ -255,18 +255,18 @@ class Material(object): """ if not isinstance(element, openmc.Element): - msg = 'Unable to add an Element to Material ID={0} with a ' \ - 'non-Element value {1}'.format(self._id, element) + msg = 'Unable to add an Element to Material ID="{0}" with a ' \ + 'non-Element value "{1}"'.format(self._id, element) raise ValueError(msg) if not isinstance(percent, Real): - msg = 'Unable to add an Element to Material ID={0} with a ' \ - 'non-floating point value {1}'.format(self._id, percent) + msg = 'Unable to add an Element to Material ID="{0}" with a ' \ + 'non-floating point value "{1}"'.format(self._id, percent) raise ValueError(msg) if percent_type not in ['ao', 'wo']: - msg = 'Unable to add an Element to Material ID={0} with a ' \ - 'percent type {1}'.format(self._id, percent_type) + msg = 'Unable to add an Element to Material ID="{0}" with a ' \ + 'percent type "{1}"'.format(self._id, percent_type) raise ValueError(msg) # Copy this Element to separate it from same Element in other Materials @@ -301,13 +301,13 @@ class Material(object): """ if not isinstance(name, basestring): - msg = 'Unable to add an S(a,b) table to Material ID={0} with a ' \ - 'non-string table name {1}'.format(self._id, name) + msg = 'Unable to add an S(a,b) table to Material ID="{0}" with a ' \ + 'non-string table name "{1}"'.format(self._id, name) raise ValueError(msg) if not isinstance(xs, basestring): - msg = 'Unable to add an S(a,b) table to Material ID={0} with a ' \ - 'non-string cross-section identifier {1}'.format(self._id, xs) + msg = 'Unable to add an S(a,b) table to Material ID="{0}" with a ' \ + 'non-string cross-section identifier "{1}"'.format(self._id, xs) raise ValueError(msg) self._sab.append((name, xs)) @@ -336,7 +336,7 @@ class Material(object): return nuclides - def _repr__(self): + def __repr__(self): string = 'Material\n' string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) @@ -529,7 +529,7 @@ class MaterialsFile(object): """ if not isinstance(material, Material): - msg = 'Unable to add a non-Material {0} to the ' \ + msg = 'Unable to add a non-Material "{0}" to the ' \ 'MaterialsFile'.format(material) raise ValueError(msg) @@ -546,7 +546,7 @@ class MaterialsFile(object): """ if not isinstance(materials, Iterable): - msg = 'Unable to create OpenMC materials.xml file from {0} which ' \ + msg = 'Unable to create OpenMC materials.xml file from "{0}" which ' \ 'is not iterable'.format(materials) raise ValueError(msg) @@ -564,7 +564,7 @@ class MaterialsFile(object): """ if not isinstance(material, Material): - msg = 'Unable to remove a non-Material {0} from the ' \ + msg = 'Unable to remove a non-Material "{0}" from the ' \ 'MaterialsFile'.format(material) raise ValueError(msg) diff --git a/openmc/mesh.py b/openmc/mesh.py index 1ba0f28a5b..7e907aaa57 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -148,14 +148,14 @@ class Mesh(object): @name.setter def name(self, name): - check_type('name for mesh ID={0}'.format(self._id), name, basestring) + check_type('name for mesh ID="{0}"'.format(self._id), name, basestring) self._name = name @type.setter def type(self, meshtype): - check_type('type for mesh ID={0}'.format(self._id), + check_type('type for mesh ID="{0}"'.format(self._id), meshtype, basestring) - check_value('type for mesh ID={0}'.format(self._id), + check_value('type for mesh ID="{0}"'.format(self._id), meshtype, ['rectangular', 'hexagonal']) self._type = meshtype diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 70e6ec306e..65e980c003 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -78,7 +78,7 @@ def get_opencg_material(openmc_material): """ if not isinstance(openmc_material, openmc.Material): - msg = 'Unable to create an OpenCG Material from {0} ' \ + msg = 'Unable to create an OpenCG Material from "{0}" ' \ 'which is not an OpenMC Material'.format(openmc_material) raise ValueError(msg) @@ -118,7 +118,7 @@ def get_openmc_material(opencg_material): """ if not isinstance(opencg_material, opencg.Material): - msg = 'Unable to create an OpenMC Material from {0} ' \ + msg = 'Unable to create an OpenMC Material from "{0}" ' \ 'which is not an OpenCG Material'.format(opencg_material) raise ValueError(msg) @@ -165,7 +165,7 @@ def is_opencg_surface_compatible(opencg_surface): if not isinstance(opencg_surface, opencg.Surface): msg = 'Unable to check if OpenCG Surface is compatible' \ - 'since {0} is not a Surface'.format(opencg_surface) + 'since "{0}" is not a Surface'.format(opencg_surface) raise ValueError(msg) if opencg_surface._type in ['x-squareprism', @@ -191,7 +191,7 @@ def get_opencg_surface(openmc_surface): """ if not isinstance(openmc_surface, openmc.Surface): - msg = 'Unable to create an OpenCG Surface from {0} ' \ + msg = 'Unable to create an OpenCG Surface from "{0}" ' \ 'which is not an OpenMC Surface'.format(openmc_surface) raise ValueError(msg) @@ -277,7 +277,7 @@ def get_openmc_surface(opencg_surface): """ if not isinstance(opencg_surface, opencg.Surface): - msg = 'Unable to create an OpenMC Surface from {0} which ' \ + msg = 'Unable to create an OpenMC Surface from "{0}" which ' \ 'is not an OpenCG Surface'.format(opencg_surface) raise ValueError(msg) @@ -335,7 +335,7 @@ def get_openmc_surface(opencg_surface): else: msg = 'Unable to create an OpenMC Surface from an OpenCG ' \ - 'Surface of type {0} since it is not a compatible ' \ + 'Surface of type "{0}" since it is not a compatible ' \ 'Surface type in OpenMC'.format(opencg_surface._type) raise ValueError(msg) @@ -368,7 +368,7 @@ def get_compatible_opencg_surfaces(opencg_surface): """ if not isinstance(opencg_surface, opencg.Surface): - msg = 'Unable to create an OpenMC Surface from {0} which ' \ + msg = 'Unable to create an OpenMC Surface from "{0}" which ' \ 'is not an OpenCG Surface'.format(opencg_surface) raise ValueError(msg) @@ -421,7 +421,7 @@ def get_compatible_opencg_surfaces(opencg_surface): else: msg = 'Unable to create a compatible OpenMC Surface an OpenCG ' \ - 'Surface of type {0} since it already a compatible ' \ + 'Surface of type "{0}" since it already a compatible ' \ 'Surface type in OpenMC'.format(opencg_surface._type) raise ValueError(msg) @@ -450,7 +450,7 @@ def get_opencg_cell(openmc_cell): """ if not isinstance(openmc_cell, openmc.Cell): - msg = 'Unable to create an OpenCG Cell from {0} which ' \ + msg = 'Unable to create an OpenCG Cell from "{0}" which ' \ 'is not an OpenMC Cell'.format(openmc_cell) raise ValueError(msg) @@ -518,17 +518,17 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace): """ if not isinstance(opencg_cell, opencg.Cell): - msg = 'Unable to create compatible OpenMC Cell from {0} which ' \ + msg = 'Unable to create compatible OpenMC Cell from "{0}" which ' \ 'is not an OpenCG Cell'.format(opencg_cell) raise ValueError(msg) elif not isinstance(opencg_surface, opencg.Surface): - msg = 'Unable to create compatible OpenMC Cell since {0} is ' \ + msg = 'Unable to create compatible OpenMC Cell since "{0}" is ' \ 'not an OpenCG Surface'.format(opencg_surface) raise ValueError(msg) elif halfspace not in [-1, +1]: - msg = 'Unable to create compatible Cell since {0}' \ + msg = 'Unable to create compatible Cell since "{0}"' \ 'is not a +/-1 halfspace'.format(halfspace) raise ValueError(msg) @@ -626,7 +626,7 @@ def make_opencg_cells_compatible(opencg_universe): """ if not isinstance(opencg_universe, opencg.Universe): - msg = 'Unable to make compatible OpenCG Cells for {0} which ' \ + msg = 'Unable to make compatible OpenCG Cells for "{0}" which ' \ 'is not an OpenCG Universe'.format(opencg_universe) raise ValueError(msg) @@ -685,7 +685,7 @@ def get_openmc_cell(opencg_cell): """ if not isinstance(opencg_cell, opencg.Cell): - msg = 'Unable to create an OpenMC Cell from {0} which ' \ + msg = 'Unable to create an OpenMC Cell from "{0}" which ' \ 'is not an OpenCG Cell'.format(opencg_cell) raise ValueError(msg) @@ -749,7 +749,7 @@ def get_opencg_universe(openmc_universe): """ if not isinstance(openmc_universe, openmc.Universe): - msg = 'Unable to create an OpenCG Universe from {0} which ' \ + msg = 'Unable to create an OpenCG Universe from "{0}" which ' \ 'is not an OpenMC Universe'.format(openmc_universe) raise ValueError(msg) @@ -796,7 +796,7 @@ def get_openmc_universe(opencg_universe): """ if not isinstance(opencg_universe, opencg.Universe): - msg = 'Unable to create an OpenMC Universe from {0} which ' \ + msg = 'Unable to create an OpenMC Universe from "{0}" which ' \ 'is not an OpenCG Universe'.format(opencg_universe) raise ValueError(msg) @@ -846,7 +846,7 @@ def get_opencg_lattice(openmc_lattice): """ if not isinstance(openmc_lattice, openmc.Lattice): - msg = 'Unable to create an OpenCG Lattice from {0} which ' \ + msg = 'Unable to create an OpenCG Lattice from "{0}" which ' \ 'is not an OpenMC Lattice'.format(openmc_lattice) raise ValueError(msg) @@ -926,7 +926,7 @@ def get_openmc_lattice(opencg_lattice): """ if not isinstance(opencg_lattice, opencg.Lattice): - msg = 'Unable to create an OpenMC Lattice from {0} which ' \ + msg = 'Unable to create an OpenMC Lattice from "{0}" which ' \ 'is not an OpenCG Lattice'.format(opencg_lattice) raise ValueError(msg) @@ -997,7 +997,7 @@ def get_opencg_geometry(openmc_geometry): """ if not isinstance(openmc_geometry, openmc.Geometry): - msg = 'Unable to get OpenCG geometry from {0} which is ' \ + msg = 'Unable to get OpenCG geometry from "{0}" which is ' \ 'not an OpenMC Geometry object'.format(openmc_geometry) raise ValueError(msg) @@ -1037,7 +1037,7 @@ def get_openmc_geometry(opencg_geometry): """ if not isinstance(opencg_geometry, opencg.Geometry): - msg = 'Unable to get OpenMC geometry from {0} which is ' \ + msg = 'Unable to get OpenMC geometry from "{0}" which is ' \ 'not an OpenCG Geometry object'.format(opencg_geometry) raise ValueError(msg) diff --git a/openmc/plots.py b/openmc/plots.py index 44dde153ab..66419a6ffc 100644 --- a/openmc/plots.py +++ b/openmc/plots.py @@ -210,18 +210,18 @@ class Plot(object): for key in col_spec: if key < 0: - msg = 'Unable to create Plot ID={0} with col_spec ID {1} ' \ + msg = 'Unable to create Plot ID="{0}" with col_spec ID "{1}" ' \ 'which is less than 0'.format(self._id, key) raise ValueError(msg) elif not isinstance(col_spec[key], Iterable): - msg = 'Unable to create Plot ID={0} with col_spec RGB values' \ - ' {1} which is not iterable'.format(self._id, col_spec[key]) + msg = 'Unable to create Plot ID="{0}" with col_spec RGB values' \ + ' "{1}" which is not iterable'.format(self._id, col_spec[key]) raise ValueError(msg) elif len(col_spec[key]) != 3: - msg = 'Unable to create Plot ID={0} with col_spec RGB ' \ - 'values of length {1} since 3 values must be ' \ + msg = 'Unable to create Plot ID="{0}" with col_spec RGB ' \ + 'values of length "{1}" since 3 values must be ' \ 'input'.format(self._id, len(col_spec[key])) raise ValueError(msg) @@ -332,7 +332,7 @@ class PlotsFile(object): """ if not isinstance(plot, Plot): - msg = 'Unable to add a non-Plot {0} to the PlotsFile'.format(plot) + msg = 'Unable to add a non-Plot "{0}" to the PlotsFile'.format(plot) raise ValueError(msg) self._plots.append(plot) diff --git a/openmc/settings.py b/openmc/settings.py index 60c74ab7af..981166af51 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -426,28 +426,28 @@ class SettingsFile(object): @keff_trigger.setter def keff_trigger(self, keff_trigger): if not isinstance(keff_trigger, dict): - msg = 'Unable to set a trigger on keff from {0} which ' \ + msg = 'Unable to set a trigger on keff from "{0}" which ' \ 'is not a Python dictionary'.format(keff_trigger) raise ValueError(msg) elif 'type' not in keff_trigger: - msg = 'Unable to set a trigger on keff from {0} which ' \ + msg = 'Unable to set a trigger on keff from "{0}" which ' \ 'does not have a "type" key'.format(keff_trigger) raise ValueError(msg) elif keff_trigger['type'] not in ['variance', 'std_dev', 'rel_err']: msg = 'Unable to set a trigger on keff with ' \ - 'type {0}'.format(keff_trigger['type']) + 'type "{0}"'.format(keff_trigger['type']) raise ValueError(msg) elif 'threshold' not in keff_trigger: - msg = 'Unable to set a trigger on keff from {0} which ' \ + msg = 'Unable to set a trigger on keff from "{0}" which ' \ 'does not have a "threshold" key'.format(keff_trigger) raise ValueError(msg) elif not isinstance(keff_trigger['threshold'], Real): msg = 'Unable to set a trigger on keff with ' \ - 'threshold {0}'.format(keff_trigger['threshold']) + 'threshold "{0}"'.format(keff_trigger['threshold']) raise ValueError(msg) self._keff_trigger = keff_trigger @@ -574,20 +574,20 @@ class SettingsFile(object): @output.setter def output(self, output): if not isinstance(output, dict): - msg = 'Unable to set output to {0} which is not a Python ' \ + msg = 'Unable to set output to "{0}" which is not a Python ' \ 'dictionary of string keys and boolean values'.format(output) raise ValueError(msg) for element in output: keys = ['summary', 'cross_sections', 'tallies', 'distribmats'] if element not in keys: - msg = 'Unable to set output to {0} which is unsupported by ' \ + msg = 'Unable to set output to "{0}" which is unsupported by ' \ 'OpenMC'.format(element) raise ValueError(msg) if not isinstance(output[element], (bool, np.bool)): - msg = 'Unable to set output for {0} to a non-boolean ' \ - 'value {1}'.format(element, output[element]) + msg = 'Unable to set output for "{0}" to a non-boolean ' \ + 'value "{1}"'.format(element, output[element]) raise ValueError(msg) self._output = output @@ -753,7 +753,7 @@ class SettingsFile(object): def track(self, track): check_type('track', track, Iterable, Integral) if len(track) % 3 != 0: - msg = 'Unable to set the track to {0} since its length is ' \ + msg = 'Unable to set the track to "{0}" since its length is ' \ 'not a multiple of 3'.format(track) raise ValueError(msg) for t in zip(track[::3], track[1::3], track[2::3]): @@ -832,7 +832,7 @@ class SettingsFile(object): len_nodemap = np.prod(self._dd_mesh_dimension) if len(nodemap) < len_nodemap or len(nodemap) > len_nodemap: - msg = 'Unable to set DD nodemap with length {0} which ' \ + msg = 'Unable to set DD nodemap with length "{0}" which ' \ 'does not have the same dimensionality as the domain ' \ 'mesh'.format(len(nodemap)) raise ValueError(msg) diff --git a/openmc/statepoint.py b/openmc/statepoint.py index e0ef003d6e..6a4713e91d 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -372,7 +372,7 @@ class StatePoint(object): path='{0}{1}/n_bins'.format(subbase, j))[0] if n_bins <= 0: - msg = 'Unable to create Filter {0} for Tally ID={2} ' \ + msg = 'Unable to create Filter "{0}" for Tally ID="{1}" ' \ 'since no bins were specified'.format(j, tally_key) raise ValueError(msg) @@ -748,7 +748,7 @@ class StatePoint(object): """ if not isinstance(summary, openmc.summary.Summary): - msg = 'Unable to link statepoint with {0} which ' \ + msg = 'Unable to link statepoint with "{0}" which ' \ 'is not a Summary object'.format(summary) raise ValueError(msg) diff --git a/openmc/summary.py b/openmc/summary.py index c0673ef233..7f9d5387e9 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -411,16 +411,70 @@ class Summary(object): if outer != -22: lattice.outer = self.universes[outer] - # Build array of Universe pointers for the Lattice - universes = \ - np.ndarray(tuple(universe_ids.shape), dtype=openmc.Universe) + # Build array of Universe pointers for the Lattice. Note that + # we need to convert between the HDF5's square array of + # (x, alpha, z) to the Python API's format of a ragged nested + # list of (z, ring, theta). + universes = [] + for z in range(lattice.num_axial): + # Add a list for this axial level. + universes.append([]) + x = lattice.num_rings - 1 + a = 2*lattice.num_rings - 2 + for r in range(lattice.num_rings - 1, 0, -1): + # Add a list for this ring. + universes[-1].append([]) - for i in range(universe_ids.shape[0]): - for j in range(universe_ids.shape[1]): - for k in range(universe_ids.shape[2]): - if universe_ids[i, j, k] != -1: - universes[i, j, k] = self.get_universe_by_id( - universe_ids[i, j, k]) + # Climb down the top-right. + for i in range(r): + universes[-1][-1].append(universe_ids[z, a, x]) + x += 1 + a -= 1 + + # Climb down the right. + for i in range(r): + universes[-1][-1].append(universe_ids[z, a, x]) + a -= 1 + + # Climb down the bottom-right. + for i in range(r): + universes[-1][-1].append(universe_ids[z, a, x]) + x -= 1 + + # Climb up the bottom-left. + for i in range(r): + universes[-1][-1].append(universe_ids[z, a, x]) + x -= 1 + a += 1 + + # Climb up the left. + for i in range(r): + universes[-1][-1].append(universe_ids[z, a, x]) + a += 1 + + # Climb up the top-left. + for i in range(r): + universes[-1][-1].append(universe_ids[z, a, x]) + x += 1 + + # Move down to the next ring. + a -= 1 + + # Convert the ids into Universe objects. + universes[-1][-1] = [self.get_universe_by_id(u_id) + for u_id in universes[-1][-1]] + + # Handle the degenerate center ring separately. + u_id = universe_ids[z, a, x] + universes[-1].append([self.get_universe_by_id(u_id)]) + + # Add the universes to the lattice. + if len(pitch) == 2: + # Lattice is 3D + lattice.universes = universes + else: + # Lattice is 2D; extract the only axial level + lattice.universes = universes[0] if offset_size > 0: lattice.offsets = offsets diff --git a/openmc/tallies.py b/openmc/tallies.py index a7605fbcc3..003acd9435 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -3,13 +3,14 @@ import copy import os import pickle import itertools -from numbers import Integral +from numbers import Integral, Real from xml.etree import ElementTree as ET import sys import numpy as np from openmc import Mesh, Filter, Trigger, Nuclide +from openmc.cross import CrossScore, CrossNuclide, CrossFilter from openmc.summary import Summary from openmc.checkvalue import check_type, check_value, check_greater_than from openmc.clean_xml import * @@ -99,6 +100,8 @@ class Tally(object): self._sum_sq = None self._mean = None self._std_dev = None + self._with_batch_statistics = False + self._derived = False def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -115,20 +118,23 @@ class Tally(object): clone._sum_sq = copy.deepcopy(self.sum_sq, memo) clone._mean = copy.deepcopy(self.mean, memo) clone._std_dev = copy.deepcopy(self.std_dev, memo) + clone._with_summary = self.with_summary + clone._with_batch_statistics = self.with_batch_statistics + clone._derived = self.derived - clone.filters = [] + clone._filters = [] for filter in self.filters: clone.add_filter(copy.deepcopy(filter, memo)) - clone.nuclides = [] + clone._nuclides = [] for nuclide in self.nuclides: clone.add_nuclide(copy.deepcopy(nuclide, memo)) - clone.scores = [] + clone._scores = [] for score in self.scores: clone.add_score(score) - clone.triggers = [] + clone._triggers = [] for trigger in self.triggers: clone.add_trigger(trigger) @@ -187,14 +193,6 @@ class Tally(object): return hash(tuple(hashable)) - def __add__(self, other): - # FIXME: Error checking: must check that results has been - # set and that # bins is the same - - new_tally = Tally() - new_tally._mean = self._mean + other._mean - new_tally._std_dev = np.sqrt(self.std_dev**2 + other.std_dev**2) - @property def id(self): return self._id @@ -281,6 +279,14 @@ class Tally(object): self.compute_std_dev() return self._std_dev + @property + def with_batch_statistics(self): + return self._with_batch_statistics + + @property + def derived(self): + return self._derived + @estimator.setter def estimator(self, estimator): check_value('estimator', estimator, ['analog', 'tracklength']) @@ -297,7 +303,7 @@ class Tally(object): """ if not isinstance(trigger, Trigger): - msg = 'Unable to add a tally trigger for Tally ID={0} to ' \ + msg = 'Unable to add a tally trigger for Tally ID="{0}" to ' \ 'since "{1}" is not a Trigger'.format(self.id, trigger) raise ValueError(msg) @@ -329,8 +335,8 @@ class Tally(object): """ - if not isinstance(filter, Filter): - msg = 'Unable to add Filter "{0}" to Tally ID={1} since it is ' \ + if not isinstance(filter, (Filter, CrossFilter)): + msg = 'Unable to add Filter "{0}" to Tally ID="{1}" since it is ' \ 'not a Filter object'.format(filter, self.id) raise ValueError(msg) @@ -358,8 +364,8 @@ class Tally(object): """ - if not isinstance(score, basestring): - msg = 'Unable to add score "{0}" to Tally ID={1} since it is ' \ + if not isinstance(score, (basestring, CrossScore)): + msg = 'Unable to add score "{0}" to Tally ID="{1}" since it is ' \ 'not a string'.format(score, self.id) raise ValueError(msg) @@ -384,6 +390,11 @@ class Tally(object): check_type('with_summary', with_summary, bool) self._with_summary = with_summary + @with_batch_statistics.setter + def with_batch_statistics(self, with_batch_statistics): + check_type('with_batch_statistics', with_batch_statistics, bool) + self._with_batch_statistics = with_batch_statistics + @sum.setter def sum(self, sum): check_type('sum', sum, Iterable) @@ -405,8 +416,8 @@ class Tally(object): """ if score not in self.scores: - msg = 'Unable to remove score "{0}" from Tally ID={1} since the ' \ - 'Tally does not contain this score'.format(score, self.id) + msg = 'Unable to remove score "{0}" from Tally ID="{1}" since ' \ + 'the Tally does not contain this score'.format(score, self.id) ValueError(msg) self._scores.remove(score) @@ -422,7 +433,7 @@ class Tally(object): """ if filter not in self.filters: - msg = 'Unable to remove filter "{0}" from Tally ID={1} since the ' \ + msg = 'Unable to remove filter "{0}" from Tally ID="{1}" since the ' \ 'Tally does not contain this filter'.format(filter, self.id) ValueError(msg) @@ -439,7 +450,7 @@ class Tally(object): """ if nuclide not in self.nuclides: - msg = 'Unable to remove nuclide "{0}" from Tally ID={1} since the ' \ + msg = 'Unable to remove nuclide "{0}" from Tally ID="{1}" since the ' \ 'Tally does not contain this nuclide'.format(nuclide, self.id) ValueError(msg) @@ -467,13 +478,14 @@ class Tally(object): self._std_dev = np.sqrt((self.sum_sq / self.num_realizations - self.mean**2) / (self.num_realizations - 1)) self._std_dev *= t_value + self.with_batch_statistics = True def __repr__(self): string = 'Tally\n' string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self.id) string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self.name) - string += '{0: <16}\n'.format('\tFilters') + string += '{0: <16}{1}\n'.format('\tFilters', '=\t') for filter in self.filters: string += '{0: <16}\t\t{1}\t{2}\n'.format('', filter.type, @@ -555,7 +567,7 @@ class Tally(object): """ if not self.can_merge(tally): - msg = 'Unable to merge tally ID={0} with {1}'.format(tally.id, self.id) + msg = 'Unable to merge tally ID="{0}" with "{1}"'.format(tally.id, self.id) raise ValueError(msg) # Create deep copy of tally to return as merged tally @@ -627,7 +639,7 @@ class Tally(object): # Scores if len(self.scores) == 0: - msg = 'Unable to get XML for Tally ID={0} since it does not ' \ + msg = 'Unable to get XML for Tally ID="{0}" since it does not ' \ 'contain any scores'.format(self.id) raise ValueError(msg) @@ -682,7 +694,7 @@ class Tally(object): # If we did not find the Filter, throw an Exception if filter is None: msg = 'Unable to find filter type "{0}" in ' \ - 'Tally ID={1}'.format(filter_type, self.id) + 'Tally ID="{1}"'.format(filter_type, self.id) raise ValueError(msg) return filter @@ -706,7 +718,7 @@ class Tally(object): Returns ------- - The index in the Tally data array for this filter bin. + The index in the Tally data array for this filter bin """ @@ -797,9 +809,9 @@ class Tally(object): nuclides=[], value='mean'): """Returns a tally score value given a list of filters to satisfy. - This routine constructs a 3D NumPy array for the requested Tally data - indexed by filter bin, nuclide bin, and score index. The routine will - order the data in the array + This method constructs a 3D NumPy array for the requested Tally data + indexed by filter bin, nuclide bin, and score index. The method will + order the data in the array as specified in the parameter lists Parameters ---------- @@ -811,10 +823,10 @@ class Tally(object): A list of filter type strings (e.g., ['mesh', 'energy']; default is []) - filter_bins : list + filter_bins : list of Iterables A list of the filter bins corresponding to the filter_types - parameter (e.g., [1, (0., 0.625e-6)]; default is []). Each bin in - the list is the integer ID for 'material', 'surface', 'cell', + parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin + in the list is the integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer for the cell instance ID for 'distribcell Filters. Each bin is a 2-tuple of floats for 'energy' and 'energyout' filters corresponding to the @@ -840,23 +852,24 @@ class Tally(object): Raises ------ ValueError - When this routine is called before the Tally is populated with data - by the StatePoint.read_results() routine. ValueError is also thrown + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. ValueError is also thrown if the input parameters do not correspond to the Tally's attributes, e.g., if the score(s) do not match those in the Tally. """ # Ensure that StatePoint.read_results() was called first - if self._sum is None or self._sum_sq is None: - msg = 'The Tally ID={0} has no data to return. Call the ' \ - 'StatePoint.read_results() routine before using ' \ + if (value == 'mean' and self.mean is None) or \ + (value == 'std_dev' and self.std_dev is None) or \ + (value == 'rel_err' and self.mean is None) or \ + (value == 'sum' and self.sum is None) or \ + (value == 'sum_sq' and self.sum_sq is None): + msg = 'The Tally ID="{0}" has no data to return. Call the ' \ + 'StatePoint.read_results() method before using ' \ 'Tally.get_values(...)'.format(self.id) raise ValueError(msg) - # Compute batch statistics if not yet computed - self.compute_std_dev() - ############################ FILTERS ######################### # Determine the score indices from any of the requested scores if filters: @@ -865,9 +878,6 @@ class Tally(object): # Loop over all of the Tally's Filters for i, filter in enumerate(self.filters): - # Initialize empty list of indices for this Filter's bins - filter_indices.append([]) - user_filter = False # If a user-requested Filter, get the user-requested bins @@ -888,19 +898,26 @@ class Tally(object): # Create list of 2-tuples for energy boundary bins elif filter.type in ['energy', 'energyout']: bins = [] - for i in range(filter.num_bins): - bins.append((filter.bins[i], filter.bins[i+1])) + for k in range(filter.num_bins): + bins.append((filter.bins[k], filter.bins[k+1])) # Create list of IDs for bins for all other Filter types else: bins = filter.bins - # Add indices for each bin in this Filter to the list - for bin in bins: - filter_indices[i].append( - self.get_filter_index(filter.type, bin)) + # Initialize a NumPy array for the Filter bin indices + filter_indices.append(np.zeros(len(bins), dtype=np.int)) - # Apply cross-product sum between all filter bin indices + # Add indices for each bin in this Filter to the list + for j, bin in enumerate(bins): + filter_index = self.get_filter_index(filter.type, bin) + filter_indices[i][j] = filter_index + + # Account for stride in each of the previous filters + for indices in filter_indices[:i]: + indices *= filter.num_bins + + # Apply outer product sum between all filter bin indices filter_indices = list(map(sum, itertools.product(*filter_indices))) # If user did not specify any specific Filters, use them all @@ -929,7 +946,7 @@ class Tally(object): else: score_indices = np.arange(self.num_scores) - # Construct cross-product of all three index types with each other + # Construct outer product of all three index types with each other indices = np.ix_(filter_indices, nuclide_indices, score_indices) # Return the desired result from Tally @@ -944,22 +961,22 @@ class Tally(object): elif value == 'sum_sq': data = self.sum_sq[indices] else: - msg = 'Unable to return results from Tally ID={0} since the ' \ + msg = 'Unable to return results from Tally ID="{0}" since the ' \ 'the requested value "{1}" is not \'mean\', \'std_dev\', ' \ '\rel_err\', \'sum\', or \'sum_sq\''.format(self.id, value) raise LookupError(msg) - return data.squeeze() + return data def get_pandas_dataframe(self, filters=True, nuclides=True, scores=True, summary=None): """Build a Pandas DataFrame for the Tally data. - This routine constructs a Pandas DataFrame object for the Tally data + This method constructs a Pandas DataFrame object for the Tally data with columns annotated by filter, nuclide and score bin information. - This capability has been tested for Pandas >=v0.13.1. However, if p + This capability has been tested for Pandas >=v0.13.1. However, if possible, it is recommended to use the v0.16 or newer versions of - Pandas since this this routine uses the Multi-index Pandas feature. + Pandas since this this method uses the Multi-index Pandas feature. Parameters ---------- @@ -976,8 +993,8 @@ class Tally(object): An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric information in the Summary object is embedded into a Multi-index - column with a geometric "path" to each distribcell intance. NOTE: - This option requires the OpenCG Python package. + column with a geometric "path" to each distribcell intance. + NOTE: This option requires the OpenCG Python package. Returns ------- @@ -989,22 +1006,22 @@ class Tally(object): Raises ------ KeyError - When this routine is called before the Tally is populated with data - by the StatePoint.read_results() routine. + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. """ # Ensure that StatePoint.read_results() was called first - if self._sum is None or self._sum_sq is None: - msg = 'The Tally ID={0} has no data to return. Call the ' \ - 'StatePoint.read_results() routine before using ' \ + if self.mean is None or self.std_dev is None: + msg = 'The Tally ID="{0}" has no data to return. Call the ' \ + 'StatePoint.read_results() method before using ' \ 'Tally.get_pandas_dataframe(...)'.format(self.id) raise KeyError(msg) # If using Summary, ensure StatePoint.link_with_summary(...) was called if summary and not self.with_summary: - msg = 'The Tally ID={0} has not been linked with the Summary. ' \ - 'Call the StatePoint.link_with_summary(...) routine ' \ + msg = 'The Tally ID="{0}" has not been linked with the Summary. ' \ + 'Call the StatePoint.link_with_summary(...) method ' \ 'before using Tally.get_pandas_dataframe(...) with ' \ 'Summary info'.format(self.id) raise KeyError(msg) @@ -1016,18 +1033,25 @@ class Tally(object): msg = 'The pandas Python package must be installed on your system' raise ImportError(msg) - # Compute batch statistics if not yet computed - self.compute_std_dev() - # Initialize a pandas dataframe for the tally data df = pd.DataFrame() # Find the total length of the tally data array - data_size = self.sum.size + data_size = self.mean.size + + # Split CrossFilters into separate filters + split_filters = [] + for filter in self.filters: + if isinstance(filter, CrossFilter): + split_filters.extend(filter.split_filters()) + else: + split_filters.append(filter) # Build DataFrame columns for filters if user requested them if filters: - for filter in self.filters: + + for filter in split_filters: + # mesh filters if filter.type == 'mesh': @@ -1285,37 +1309,37 @@ class Tally(object): Raises ------ KeyError - When this routine is called before the Tally is populated with data - by the StatePoint.read_results() routine. + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. """ # Ensure that StatePoint.read_results() was called first if self._sum is None or self._sum_sq is None: - msg = 'The Tally ID={0} has no data to export. Call the ' \ + msg = 'The Tally ID="{0}" has no data to export. Call the ' \ 'StatePoint.read_results() routine before using ' \ 'Tally.export_results(...)'.format(self.id) raise KeyError(msg) if not isinstance(filename, basestring): - msg = 'Unable to export the results for Tally ID={0} to ' \ + msg = 'Unable to export the results for Tally ID="{0}" to ' \ 'filename="{1}" since it is not a ' \ 'string'.format(self.id, filename) raise ValueError(msg) elif not isinstance(directory, basestring): - msg = 'Unable to export the results for Tally ID={0} to ' \ + msg = 'Unable to export the results for Tally ID="{0}" to ' \ 'directory="{1}" since it is not a ' \ 'string'.format(self.id, directory) raise ValueError(msg) elif format not in ['hdf5', 'pkl', 'csv']: - msg = 'Unable to export the results for Tally ID={0} to format ' \ + msg = 'Unable to export the results for Tally ID="{0}" to format ' \ '"{1}" since it is not supported'.format(self.id, format) raise ValueError(msg) elif not isinstance(append, bool): - msg = 'Unable to export the results for Tally ID={0} since the ' \ + msg = 'Unable to export the results for Tally ID="{0}" since the ' \ 'append parameter is not True/False'.format(self.id, append) raise ValueError(msg) @@ -1410,6 +1434,772 @@ class Tally(object): # Pickle the Tally results to a file pickle.dump(tally_results, open(filename, 'wb')) + def _outer_product(self, other, binary_op): + """Combines filters, scores and nuclides with another tally. + + This is a helper method for the tally arithmetic methods. The filters, + scores and nuclides from both tallies are enumerated into all possible + combinations and expressed as CrossFilter, CrossScore and + CrossNuclide objects in the new derived tally. + + Parameters + ---------- + other : Tally + The tally on the right hand side of the outer product + binary_op : {'+', '-', '*', '/', '^'} + The binary operation in the outer product + + Returns + ------- + Tally + A new Tally outer that is the outer product with this one. + + Raises + ------ + ValueError + When this method is called before the other tally is populated + with data by the StatePoint.read_results() method. + + """ + + # Check that results have been read + if not other.derived and other.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(other.id) + raise ValueError(msg) + + new_name = '({0} {1} {2})'.format(self.name, binary_op, other.name) + new_tally = Tally(name=new_name) + new_tally.with_batch_statistics = True + new_tally._derived = True + + data = self._align_tally_data(other) + + if binary_op == '+': + new_tally._mean = data['self']['mean'] + data['other']['mean'] + new_tally._std_dev = np.sqrt(data['self']['std. dev.']**2 + + data['other']['std. dev.']**2) + elif binary_op == '-': + data = self._align_tally_data(other) + new_tally._mean = data['self']['mean'] - data['other']['mean'] + new_tally._std_dev = np.sqrt(data['self']['std. dev.']**2 + + data['other']['std. dev.']**2) + elif binary_op == '*': + data = self._align_tally_data(other) + self_rel_err = data['self']['std. dev.'] / data['self']['mean'] + other_rel_err = data['other']['std. dev.'] / data['other']['mean'] + new_tally._mean = data['self']['mean'] * data['other']['mean'] + new_tally._std_dev = np.abs(new_tally.mean) * \ + np.sqrt(self_rel_err**2 + other_rel_err**2) + elif binary_op == '/': + data = self._align_tally_data(other) + self_rel_err = data['self']['std. dev.'] / data['self']['mean'] + other_rel_err = data['other']['std. dev.'] / data['other']['mean'] + new_tally._mean = data['self']['mean'] / data['other']['mean'] + new_tally._std_dev = np.abs(new_tally.mean) * \ + np.sqrt(self_rel_err**2 + other_rel_err**2) + elif binary_op == '^': + data = self._align_tally_data(other) + mean_ratio = data['other']['mean'] / data['self']['mean'] + first_term = mean_ratio * data['self']['std. dev.'] + second_term = \ + np.log(data['self']['mean']) * data['other']['std. dev.'] + new_tally._mean = data['self']['mean'] ** data['other']['mean'] + new_tally._std_dev = np.abs(new_tally.mean) * \ + np.sqrt(first_term**2 + second_term**2) + + if self.estimator == other.estimator: + new_tally.estimator = self.estimator + if self.with_summary and other.with_summary: + new_tally.with_summary = self.with_summary + if self.num_realizations == other.num_realizations: + new_tally.num_realizations = self.num_realizations + new_tally.num_score_bins = self.num_score_bins * other.num_score_bins + + # Generate filter "outer products" + if self.filters == other.filters: + for self_filter in self.filters: + new_tally.add_filter(self_filter) + else: + all_filters = [self.filters, other.filters] + for self_filter, other_filter in itertools.product(*all_filters): + new_filter = CrossFilter(self_filter, other_filter, binary_op) + new_tally.add_filter(new_filter) + + # Generate score "outer products" + if self.scores == other.scores: + for self_score in self.scores: + new_tally.add_score(self_score) + else: + all_scores = [self.scores, other.scores] + for self_score, other_score in itertools.product(*all_scores): + new_score = CrossScore(self_score, other_score, binary_op) + new_tally.add_score(new_score) + + # Generate nuclide "outer products" + if self.nuclides == other.nuclides: + for self_nuclide in self.nuclides: + new_tally.nuclides.append(self_nuclide) + else: + all_nuclides = [self.nuclides, other.nuclides] + for self_nuclide, other_nuclide in itertools.product(*all_nuclides): + new_nuclide = CrossNuclide(self_nuclide, other_nuclide, binary_op) + new_tally.add_nuclide(new_nuclide) + + return new_tally + + def _align_tally_data(self, other): + """Aligns data from two tallies for tally arithmetic. + + This is a helper method to construct a dict of dicts of the "aligned" + data arrays from each tally for tally arithmetic. The method analyzes + the filters, scores and nuclides in both tally's and determines how to + appropriately align the data for vectorized arithmetic. For example, + if the two tallies have different filters, this method will use NumPy + 'tile' and 'repeat' operations to the new data arrays such that all + possible combinations of the data in each tally's bins will be made + when the arithmetic operation is applied to the arrays. + + Parameters + ---------- + other : Tally + The tally to outer product with this tally + + Returns + ------- + dict + A dictionary of dictionaries to "aligned" 'mean' and 'std. dev' + NumPy arrays for each tally's data. + + + """ + + self_mean = copy.deepcopy(self.mean) + self_std_dev = copy.deepcopy(self.std_dev) + other_mean = copy.deepcopy(other.mean) + other_std_dev = copy.deepcopy(other.std_dev) + + if self.filters != other.filters: + + # Determine the number of paired combinations of filter bins + # between the two tallies and repeat arrays along filter axes + self_repeat_factor = other.num_filter_bins + other_tile_factor = self.num_filter_bins + + # Replicate the data + self_mean = np.repeat(self_mean, self_repeat_factor, axis=0) + other_mean = np.tile(other_mean, (other_tile_factor, 1, 1)) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=0) + other_std_dev = np.tile(other_std_dev, (other_tile_factor, 1, 1)) + + if self.nuclides != other.nuclides: + + # Determine the number of paired combinations of nuclides + # between the two tallies and repeat arrays along nuclide axes + self_repeat_factor = other.num_nuclides + other_tile_factor = self.num_nuclides + + # Replicate the data + self_mean = np.repeat(self_mean, self_repeat_factor, axis=1) + other_mean = np.tile(other_mean, (1, other_tile_factor, 1)) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1) + other_std_dev = np.tile(other_std_dev, (1, other_tile_factor, 1)) + + if self.scores != other.scores: + + # Determine the number of paired combinations of score bins + # between the two tallies and repeat arrays along score axes + self_repeat_factor = other.num_score_bins + other_tile_factor = self.num_score_bins + + # Replicate the data + self_mean = np.repeat(self_mean, self_repeat_factor, axis=2) + other_mean = np.tile(other_mean, (1, 1, other_tile_factor)) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2) + other_std_dev = np.tile(other_std_dev, (1, 1, other_tile_factor)) + + data = {} + data['self'] = {} + data['other'] = {} + data['self']['mean'] = self_mean + data['other']['mean'] = other_mean + data['self']['std. dev.'] = self_std_dev + data['other']['std. dev.'] = other_std_dev + return data + + def __add__(self, other): + """Adds this tally to another tally or scalar value. + + This method builds a new tally with data that is the sum of this + tally's data and that from the other tally or scalar value. If the + filters, scores and nuclides in the two tallies are not the same, then + they are combined in all possible ways in the new derived tally. + + Uncertainty propagation is used to compute the standard deviation + for the new tally's data. It is important to note that this makes + the assumption that the tally data is independently distributed. + In most use cases, this is *not* true and may lead to under-prediction + of the uncertainty. The uncertainty propagation model is from the + following source: + + https://en.wikipedia.org/wiki/Propagation_of_uncertainty + + Parameters + ---------- + other : Tally or Real + The tally or scalar value to add to this tally + + Returns + ------- + Tally + A new derived tally which is the sum of this tally and the other + tally or scalar value in the addition. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. + + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + if isinstance(other, Tally): + new_tally = self._outer_product(other, binary_op='+') + + elif isinstance(other, Real): + new_tally = Tally(name='derived') + new_tally._derived = True + new_tally.with_batch_statistics = True + new_tally.name = self.name + new_tally._mean = self._mean + other + new_tally._std_dev = self._std_dev + new_tally.estimator = self.estimator + new_tally.with_summary = self.with_summary + new_tally.num_realization = self.num_realizations + new_tally.num_score_bins = self.num_score_bins + + for filter in self.filters: + new_tally.add_filter(filter) + for nuclide in self.nuclides: + new_tally.add_nuclide(nuclide) + for score in self.scores: + new_tally.add_score(score) + + else: + msg = 'Unable to add "{0}" to Tally ID="{1}"'.format(other, self.id) + raise ValueError(msg) + + return new_tally + + def __sub__(self, other): + """Subtracts another tally or scalar value from this tally. + + This method builds a new tally with data that is the difference of + this tally's data and that from the other tally or scalar value. If the + filters, scores and nuclides in the two tallies are not the same, then + they are combined in all possible ways in the new derived tally. + + Uncertainty propagation is used to compute the standard deviation + for the new tally's data. It is important to note that this makes + the assumption that the tally data is independently distributed. + In most use cases, this is *not* true and may lead to under-prediction + of the uncertainty. The uncertainty propagation model is from the + following source: + + https://en.wikipedia.org/wiki/Propagation_of_uncertainty + + Parameters + ---------- + other : Tally or Real + The tally or scalar value to subtract from this tally + + Returns + ------- + Tally + A new derived tally which is the difference of this tally and the + other tally or scalar value in the subtraction. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. + + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + if isinstance(other, Tally): + new_tally = self._outer_product(other, binary_op='-') + + elif isinstance(other, Real): + new_tally = Tally(name='derived') + new_tally._derived = True + new_tally.name = self.name + new_tally._mean = self._mean - other + new_tally._std_dev = self._std_dev + new_tally.estimator = self.estimator + new_tally.with_summary = self.with_summary + new_tally.num_realization = self.num_realizations + new_tally.num_score_bins = self.num_score_bins + + for filter in self.filters: + new_tally.add_filter(filter) + for nuclide in self.nuclides: + new_tally.add_nuclide(nuclide) + for score in self.scores: + new_tally.add_score(score) + + else: + msg = 'Unable to subtract "{0}" from Tally ' \ + 'ID="{1}"'.format(other, self.id) + raise ValueError(msg) + + return new_tally + + def __mul__(self, other): + """Multiplies this tally with another tally or scalar value. + + This method builds a new tally with data that is the product of + this tally's data and that from the other tally or scalar value. If the + filters, scores and nuclides in the two tallies are not the same, then + they are combined in all possible ways in the new derived tally. + + Uncertainty propagation is used to compute the standard deviation + for the new tally's data. It is important to note that this makes + the assumption that the tally data is independently distributed. + In most use cases, this is *not* true and may lead to under-prediction + of the uncertainty. The uncertainty propagation model is from the + following source: + + https://en.wikipedia.org/wiki/Propagation_of_uncertainty + + Parameters + ---------- + other : Tally or Real + The tally or scalar value to multiply with this tally + + Returns + ------- + Tally + A new derived tally which is the product of this tally and the + other tally or scalar value in the multiplication. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. + + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + if isinstance(other, Tally): + new_tally = self._outer_product(other, binary_op='*') + + elif isinstance(other, Real): + new_tally = Tally(name='derived') + new_tally._derived = True + new_tally.name = self.name + new_tally._mean = self._mean * other + new_tally._std_dev = self._std_dev * np.abs(other) + new_tally.estimator = self.estimator + new_tally.with_summary = self.with_summary + new_tally.num_realization = self.num_realizations + new_tally.num_score_bins = self.num_score_bins + + for filter in self.filters: + new_tally.add_filter(filter) + for nuclide in self.nuclides: + new_tally.add_nuclide(nuclide) + for score in self.scores: + new_tally.add_score(score) + + else: + msg = 'Unable to multiply Tally ID="{0}" ' \ + 'by "{1}"'.format(self.id, other) + raise ValueError(msg) + + return new_tally + + def __div__(self, other): + """Divides this tally by another tally or scalar value. + + This method builds a new tally with data that is the dividend of + this tally's data and that from the other tally or scalar value. If the + filters, scores and nuclides in the two tallies are not the same, then + they are combined in all possible ways in the new derived tally. + + Uncertainty propagation is used to compute the standard deviation + for the new tally's data. It is important to note that this makes + the assumption that the tally data is independently distributed. + In most use cases, this is *not* true and may lead to under-prediction + of the uncertainty. The uncertainty propagation model is from the + following source: + + https://en.wikipedia.org/wiki/Propagation_of_uncertainty + + Parameters + ---------- + other : Tally or Real + The tally or scalar value to divide this tally by + + Returns + ------- + Tally + A new derived tally which is the dividend of this tally and the + other tally or scalar value in the division. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. + + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + if isinstance(other, Tally): + new_tally = self._outer_product(other, binary_op='/') + + elif isinstance(other, Real): + new_tally = Tally(name='derived') + new_tally._derived = True + new_tally.name = self.name + new_tally._mean = self._mean / other + new_tally._std_dev = self._std_dev * np.abs(1. / other) + new_tally.estimator = self.estimator + new_tally.with_summary = self.with_summary + new_tally.num_realization = self.num_realizations + new_tally.num_score_bins = self.num_score_bins + + for filter in self.filters: + new_tally.add_filter(filter) + for nuclide in self.nuclides: + new_tally.add_nuclide(nuclide) + for score in self.scores: + new_tally.add_score(score) + + else: + msg = 'Unable to divide Tally ID="{0}" ' \ + 'by "{1}"'.format(self.id, other) + raise ValueError(msg) + + return new_tally + + def __pow__(self, power): + """Raises this tally to another tally or scalar value power. + + This method builds a new tally with data that is the power of + this tally's data to that from the other tally or scalar value. If the + filters, scores and nuclides in the two tallies are not the same, then + they are combined in all possible ways in the new derived tally. + + Uncertainty propagation is used to compute the standard deviation + for the new tally's data. It is important to note that this makes + the assumption that the tally data is independently distributed. + In most use cases, this is *not* true and may lead to under-prediction + of the uncertainty. The uncertainty propagation model is from the + following source: + + https://en.wikipedia.org/wiki/Propagation_of_uncertainty + + Parameters + ---------- + power : Tally or Real + The tally or scalar value exponent + + Returns + ------- + Tally + A new derived tally which is this tally raised to the power of the + other tally or scalar value in the exponentiation. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. + + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + if isinstance(power, Tally): + new_tally = self._outer_product(power, binary_op='^') + + elif isinstance(power, Real): + new_tally = Tally(name='derived') + new_tally._derived = True + new_tally.name = self.name + new_tally._mean = self._mean ** power + self_rel_err = self.std_dev / self.mean + new_tally._std_dev = np.abs(new_tally._mean * power * self_rel_err) + new_tally.estimator = self.estimator + new_tally.with_summary = self.with_summary + new_tally.num_realization = self.num_realizations + new_tally.num_score_bins = self.num_score_bins + + for filter in self.filters: + new_tally.add_filter(filter) + for nuclide in self.nuclides: + new_tally.add_nuclide(nuclide) + for score in self.scores: + new_tally.add_score(score) + + else: + msg = 'Unable to raise Tally ID="{0}" to ' \ + 'power "{1}"'.format(self.id, power) + raise ValueError(msg) + + return new_tally + + def __radd__(self, other): + """Right addition with a scalar value. + + This reverses the operands and calls the __add__ method. + + Parameters + ---------- + other : Integer or Real + The scalar value to add to this tally + + Returns + ------- + Tally + A new derived tally of this tally added with the scalar value. + + """ + + return self + other + + def __rsub__(self, other): + """Right subtraction from a scalar value. + + This reverses the operands and calls the __sub__ method. + + Parameters + ---------- + other : Integer or Real + The scalar value to subtract this tally from + + Returns + ------- + Tally + A new derived tally of this tally subtracted from the scalar value. + + """ + + return -1. * self + other + + def __rmul__(self, other): + """Right multiplication with a scalar value. + + This reverses the operands and calls the __mul__ method. + + Parameters + ---------- + other : Integer or Real + The scalar value to multiply with this tally + + Returns + ------- + Tally + A new derived tally of this tally multiplied by the scalar value. + + """ + + return self * other + + def __rdiv__(self, other): + """Right division with a scalar value. + + This reverses the operands and calls the __div__ method. + + Parameters + ---------- + other : Integer or Real + The scalar value to divide by this tally + + Returns + ------- + Tally + A new derived tally of the scalar value divided by this tally. + + """ + + return other * self**-1 + + def __pos__(self): + """The absolute value of this tally. + + Returns + ------- + Tally + A new derived tally which is the absolute value of this tally. + + """ + + new_tally = copy.deepcopy(self) + new_tally._mean = np.abs(new_tally.mean) + return new_tally + + def __neg__(self): + """The negated value of this tally. + + Returns + ------- + Tally + A new derived tally which is the negated value of this tally. + + """ + + new_tally = self * -1 + return new_tally + + def get_slice(self, scores=[], filters=[], filter_bins=[], nuclides=[]): + """Build a sliced tally for the specified filters, scores and nuclides. + + This method constructs a new tally to encapsulate a subset of the data + represented by this tally. The subset of data to included in the tally + slice is determined by the scores, filters and nuclides specified in + the input parameters. + + Parameters + ---------- + scores : list + A list of one or more score strings + (e.g., ['absorption', 'nu-fission']; default is []) + + filters : list + A list of filter type strings + (e.g., ['mesh', 'energy']; default is []) + + filter_bins : list of Iterables + A list of the filter bins corresponding to the filter_types + parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin + in the list is the integer ID for 'material', 'surface', 'cell', + 'cellborn', and 'universe' Filters. Each bin is an integer for the + cell instance ID for 'distribcell Filters. Each bin is a 2-tuple of + floats for 'energy' and 'energyout' filters corresponding to the + energy boundaries of the bin of interest. The bin is a (x,y,z) + 3-tuple for 'mesh' filters corresponding to the mesh cell of + interest. The order of the bins in the list must correspond of the + filter_types parameter. + + nuclides : list + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is []) + + Returns + ------- + Tally + A new tally which encapsulates the subset of data requested in the + order each filter, nuclide and score is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. + + """ + + # Ensure that StatePoint.read_results() was called first + if self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + new_tally = copy.deepcopy(self) + new_sum = self.get_values(scores, filters, filter_bins, + nuclides, 'sum') + new_sum_sq = self.get_values(scores, filters, filter_bins, + nuclides, 'sum_sq') + + new_tally.sum = new_sum + new_tally.sum_sq = new_sum_sq + new_tally._mean = None + new_tally._std_dev = None + + # SCORES + if scores: + score_indices = [] + + # Determine the score indices from any of the requested scores + for score in self.scores: + if score not in scores: + score_index = self.get_score_index(score) + score_indices.append(score_index) + + # Loop over indices in reverse to remove excluded scores + for score_index in reversed(score_indices): + new_tally.remove_score(self.scores[score_index]) + new_tally.num_score_bins -= 1 + + # NUCLIDES + if nuclides: + nuclide_indices = [] + + # Determine the nuclide indices from any of the requested nuclides + for nuclide in self.nuclides: + if nuclide.name not in nuclides: + nuclide_index = self.get_nuclide_index(nuclide.name) + nuclide_indices.append(nuclide_index) + + # Loop over indices in reverse to remove excluded Nuclides + for nuclide_index in reversed(nuclide_indices): + new_tally.remove_nuclide(self.nuclides[nuclide_index]) + + # FILTERS + if filters: + + # Determine the filter indices from any of the requested filters + for i, filter_type in enumerate(filters): + filter = new_tally.find_filter(filter_type) + + # Remove and/or reorder filter bins to user specifications + bin_indices = [] + + for filter_bin in filter_bins[i]: + bin_index = filter.get_bin_index(filter_bin) + bin_indices.append(bin_index) + + new_bins = filter.bins[bin_indices] + filter.bins = new_bins + + # Correct each Filter's stride + stride = new_tally.num_nuclides * new_tally.num_score_bins + for filter in reversed(new_tally.filters): + filter.stride = stride + stride *= filter.num_bins + + return new_tally + class TalliesFile(object): """Tallies file used for an OpenMC simulation. Corresponds directly to the @@ -1437,7 +2227,7 @@ class TalliesFile(object): """ if not isinstance(tally, Tally): - msg = 'Unable to add a non-Tally {0} to the TalliesFile'.format(tally) + msg = 'Unable to add a non-Tally "{0}" to the TalliesFile'.format(tally) raise ValueError(msg) if merge: @@ -1508,7 +2298,7 @@ class TalliesFile(object): """ if not isinstance(mesh, Mesh): - msg = 'Unable to add a non-Mesh {0} to the TalliesFile'.format(mesh) + msg = 'Unable to add a non-Mesh "{0}" to the TalliesFile'.format(mesh) raise ValueError(msg) self._meshes.append(mesh) diff --git a/openmc/temp.py b/openmc/temp.py new file mode 100644 index 0000000000..91f6082996 --- /dev/null +++ b/openmc/temp.py @@ -0,0 +1,12 @@ +from checkvalue import * +from checkvalue import _isinstance + +import numpy as np + +zs = np.zeros((2,)) + +print _isinstance(zs[0], Integral) +print _isinstance(zs[0], Real) +print _isinstance(zs[0], (Integral, Real)) + +print check_iterable_type('thing', zs, (Real, Integral)) diff --git a/openmc/universe.py b/openmc/universe.py index 84ce3696ee..bab10f5df7 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -7,7 +7,7 @@ import sys import numpy as np import openmc -from openmc.checkvalue import check_type, check_length, check_greater_than +import openmc.checkvalue as cv if sys.version_info[0] >= 3: basestring = str @@ -111,13 +111,13 @@ class Cell(object): self._id = AUTO_CELL_ID AUTO_CELL_ID += 1 else: - check_type('cell ID', cell_id, Integral) - check_greater_than('cell ID', cell_id, 0) + cv.check_type('cell ID', cell_id, Integral) + cv.check_greater_than('cell ID', cell_id, 0) self._id = cell_id @name.setter def name(self, name): - check_type('cell name', name, basestring) + cv.check_type('cell name', name, basestring) self._name = name @fill.setter @@ -126,8 +126,8 @@ class Cell(object): if fill.strip().lower() == 'void': self._type = 'void' else: - msg = 'Unable to set Cell ID={0} to use a non-Material or ' \ - 'Universe fill {1}'.format(self._id, fill) + msg = 'Unable to set Cell ID="{0}" to use a non-Material or ' \ + 'Universe fill "{1}"'.format(self._id, fill) raise ValueError(msg) elif isinstance(fill, openmc.Material): @@ -140,27 +140,27 @@ class Cell(object): self._type = 'lattice' else: - msg = 'Unable to set Cell ID={0} to use a non-Material or ' \ - 'Universe fill {1}'.format(self._id, fill) + msg = 'Unable to set Cell ID="{0}" to use a non-Material or ' \ + 'Universe fill "{1}"'.format(self._id, fill) raise ValueError(msg) self._fill = fill @rotation.setter def rotation(self, rotation): - check_type('cell rotation', rotation, Iterable, Real) - check_length('cell rotation', rotation, 3) + cv.check_type('cell rotation', rotation, Iterable, Real) + cv.check_length('cell rotation', rotation, 3) self._rotation = rotation @translation.setter def translation(self, translation): - check_type('cell translation', translation, Iterable, Real) - check_length('cell translation', translation, 3) + cv.check_type('cell translation', translation, Iterable, Real) + cv.check_length('cell translation', translation, 3) self._translation = translation @offsets.setter def offsets(self, offsets): - check_type('cell offsets', offsets, Iterable) + cv.check_type('cell offsets', offsets, Iterable) self._offsets = offsets def add_surface(self, surface, halfspace): @@ -177,13 +177,13 @@ class Cell(object): """ if not isinstance(surface, openmc.Surface): - msg = 'Unable to add Surface {0} to Cell ID={1} since it is ' \ + msg = 'Unable to add Surface "{0}" to Cell ID="{1}" since it is ' \ 'not a Surface object'.format(surface, self._id) raise ValueError(msg) if halfspace not in [-1, +1]: - msg = 'Unable to add Surface {0} to Cell ID={1} with halfspace ' \ - '{2} since it is not +/-1'.format(surface, self._id, halfspace) + msg = 'Unable to add Surface "{0}" to Cell ID="{1}" with halfspace ' \ + '"{2}" since it is not +/-1'.format(surface, self._id, halfspace) raise ValueError(msg) # If the Cell does not already contain the Surface, add it @@ -201,7 +201,7 @@ class Cell(object): """ if not isinstance(surface, openmc.Surface): - msg = 'Unable to remove Surface {0} from Cell ID={1} since it is ' \ + msg = 'Unable to remove Surface "{0}" from Cell ID="{1}" since it is ' \ 'not a Surface object'.format(surface, self._id) raise ValueError(msg) @@ -432,13 +432,13 @@ class Universe(object): self._id = AUTO_UNIVERSE_ID AUTO_UNIVERSE_ID += 1 else: - check_type('universe ID', universe_id, Integral) - check_greater_than('universe ID', universe_id, 0, True) + cv.check_type('universe ID', universe_id, Integral) + cv.check_greater_than('universe ID', universe_id, 0, True) self._id = universe_id @name.setter def name(self, name): - check_type('universe name', name, basestring) + cv.check_type('universe name', name, basestring) self._name = name def add_cell(self, cell): @@ -452,7 +452,7 @@ class Universe(object): """ if not isinstance(cell, Cell): - msg = 'Unable to add a Cell to Universe ID={0} since {1} is not ' \ + msg = 'Unable to add a Cell to Universe ID="{0}" since "{1}" is not ' \ 'a Cell'.format(self._id, cell) raise ValueError(msg) @@ -472,7 +472,7 @@ class Universe(object): """ if not isinstance(cells, Iterable): - msg = 'Unable to add Cells to Universe ID={0} since {1} is not ' \ + msg = 'Unable to add Cells to Universe ID="{0}" since "{1}" is not ' \ 'iterable'.format(self._id, cells) raise ValueError(msg) @@ -490,7 +490,7 @@ class Universe(object): """ if not isinstance(cell, Cell): - msg = 'Unable to remove a Cell from Universe ID={0} since {1} is ' \ + msg = 'Unable to remove a Cell from Universe ID="{0}" since "{1}" is ' \ 'not a Cell'.format(self._id, cell) raise ValueError(msg) @@ -671,24 +671,25 @@ class Lattice(object): self._id = AUTO_UNIVERSE_ID AUTO_UNIVERSE_ID += 1 else: - check_type('lattice ID', lattice_id, Integral) - check_greater_than('lattice ID', lattice_id, 0) + cv.check_type('lattice ID', lattice_id, Integral) + cv.check_greater_than('lattice ID', lattice_id, 0) self._id = lattice_id @name.setter def name(self, name): - check_type('lattice name', name, basestring) + cv.check_type('lattice name', name, basestring) self._name = name @outer.setter def outer(self, outer): - check_type('outer universe', outer, Universe) + cv.check_type('outer universe', outer, Universe) self._outer = outer @universes.setter def universes(self, universes): - check_type('lattice universes', universes, Iterable) - self._universes = np.asarray(universes, dtype=Universe) + cv.check_iterable_type('lattice universes', universes, Universe, + min_depth=2, max_depth=3) + self._universes = universes def get_unique_universes(self): """Determine all unique universes in the lattice @@ -701,13 +702,22 @@ class Lattice(object): """ - unique_universes = np.unique(self._universes.ravel()) - universes = {} + univs = dict() + for k in range(len(self._universes)): + for j in range(len(self._universes[k])): + if isinstance(self._universes[k][j], Universe): + u = self._universes[k][j] + univs[u._id] = u + else: + for i in range(len(self._universes[k][j])): + u = self._universes[k][j][i] + assert isinstance(u, Universe) + univs[u._id] = u - for universe in unique_universes: - universes[universe._id] = universe + if self.outer is not None: + univs[self.outer._id] = self.outer - return universes + return univs def get_all_nuclides(self): """Return all nuclides contained in the lattice @@ -825,29 +835,29 @@ class RectLattice(Lattice): @dimension.setter def dimension(self, dimension): - check_type('lattice dimension', dimension, Iterable, Integral) - check_length('lattice dimension', dimension, 2, 3) + cv.check_type('lattice dimension', dimension, Iterable, Integral) + cv.check_length('lattice dimension', dimension, 2, 3) for dim in dimension: - check_greater_than('lattice dimension', dim, 0) + cv.check_greater_than('lattice dimension', dim, 0) self._dimension = dimension @lower_left.setter def lower_left(self, lower_left): - check_type('lattice lower left corner', lower_left, Iterable, Real) - check_length('lattice lower left corner', lower_left, 2, 3) + cv.check_type('lattice lower left corner', lower_left, Iterable, Real) + cv.check_length('lattice lower left corner', lower_left, 2, 3) self._lower_left = lower_left @offsets.setter def offsets(self, offsets): - check_type('lattice offsets', offsets, Iterable) + cv.check_type('lattice offsets', offsets, Iterable) self._offsets = offsets @Lattice.pitch.setter def pitch(self, pitch): - check_type('lattice pitch', pitch, Iterable, Real) - check_length('lattice pitch', pitch, 2, 3) + cv.check_type('lattice pitch', pitch, Iterable, Real) + cv.check_length('lattice pitch', pitch, 2, 3) for dim in pitch: - check_greater_than('lattice pitch', dim, 0.0) + cv.check_greater_than('lattice pitch', dim, 0.0) self._pitch = pitch def get_offset(self, path, filter_offset): @@ -1041,28 +1051,28 @@ class HexLattice(Lattice): @num_rings.setter def num_rings(self, num_rings): - check_type('number of rings', num_rings, Integral) - check_greater_than('number of rings', num_rings, 0) + cv.check_type('number of rings', num_rings, Integral) + cv.check_greater_than('number of rings', num_rings, 0) self._num_rings = num_rings @num_axial.setter def num_axial(self, num_axial): - check_type('number of axial', num_axial, Integral) - check_greater_than('number of axial', num_axial, 0) + cv.check_type('number of axial', num_axial, Integral) + cv.check_greater_than('number of axial', num_axial, 0) self._num_axial = num_axial @center.setter def center(self, center): - check_type('lattice center', center, Iterable, Real) - check_length('lattice center', center, 2, 3) + cv.check_type('lattice center', center, Iterable, Real) + cv.check_length('lattice center', center, 2, 3) self._center = center @Lattice.pitch.setter def pitch(self, pitch): - check_type('lattice pitch', pitch, Iterable, Real) - check_length('lattice pitch', pitch, 1, 2) + cv.check_type('lattice pitch', pitch, Iterable, Real) + cv.check_length('lattice pitch', pitch, 1, 2) for dim in pitch: - check_greater_than('lattice pitch', dim, 0) + cv.check_greater_than('lattice pitch', dim, 0) self._pitch = pitch @Lattice.universes.setter @@ -1091,14 +1101,14 @@ class HexLattice(Lattice): # Set the number of axial positions. if n_dims == 3: - self.num_axial = self._universes.shape[0] + self.num_axial = len(self._universes) else: self._num_axial = None # Set the number of rings and make sure this number is consistent for # all axial positions. if n_dims == 3: - self.num_rings = len(self._universes[0]) + self.num_rings = len(self._universes) for rings in self._universes: if len(rings) != self._num_rings: msg = 'HexLattice ID={0:d} has an inconsistent number of ' \ @@ -1106,7 +1116,7 @@ class HexLattice(Lattice): raise ValueError(msg) else: - self.num_rings = self._universes.shape[0] + self.num_rings = len(self._universes) # Make sure there are the correct number of elements in each ring. if n_dims == 3: diff --git a/scripts/openmc-plot-mesh-tally b/scripts/openmc-plot-mesh-tally index 5c46d927c0..f925b413a3 100755 --- a/scripts/openmc-plot-mesh-tally +++ b/scripts/openmc-plot-mesh-tally @@ -133,7 +133,11 @@ class MeshPlotter(tk.Frame): self.mesh = selectedTally.filters_by_name['mesh'].mesh # Get mesh dimensions - self.nx, self.ny, self.nz = self.mesh.dimension + if len(self.mesh.dimension) == 2: + self.nx, self.ny = self.mesh.dimension + self.nz = 1 + else: + self.nx, self.ny, self.nz = self.mesh.dimension # Repopulate comboboxes baesd on current basis selection text = self.basisBox.get() @@ -210,7 +214,7 @@ class MeshPlotter(tk.Frame): mesh_filter = f continue index = self.filterBoxes[f.type].current() - spec_list.append((f, index)) + spec_list.append((f.type, (index,))) text = self.basisBox.get() if text == 'xy': @@ -229,11 +233,11 @@ class MeshPlotter(tk.Frame): else: meshtuple = (i + 1, axial_level, j + 1) filters, filter_bins = zip(*spec_list + [ - (mesh_filter, meshtuple)]) - mean = selectedTally.get_value( - self.scoreBox.get(), filters, filter_bins) - stdev = selectedTally.get_value( - self.scoreBox.get(), filters, filter_bins, + (mesh_filter.type, (meshtuple,))]) + mean = selectedTally.get_values( + [self.scoreBox.get()], filters, filter_bins) + stdev = selectedTally.get_values( + [self.scoreBox.get()], filters, filter_bins, value='std_dev') if mbvalue == 'Mean': matrix[i, j] = mean diff --git a/scripts/openmc-statepoint-3d b/scripts/openmc-statepoint-3d index 30205c7692..e667ad0bbd 100755 --- a/scripts/openmc-statepoint-3d +++ b/scripts/openmc-statepoint-3d @@ -219,7 +219,7 @@ def main(file_, o): for y in range(1,ny+1): for z in range(1,nz+1): filterspec[0][1] = (x,y,z) - val = sp.get_value(tally.id-1, filterspec, sid)[o.valerr] + val = sp.get_values(tally.id-1, filterspec, sid)[o.valerr] if o.vtk: # vtk cells go z, y, x, so we store it now and enter it later i = (z-1)*nx*ny + (y-1)*nx + x-1 diff --git a/scripts/openmc-track-to-vtk b/scripts/openmc-track-to-vtk index 8db57e2a3f..f44b3871ac 100755 --- a/scripts/openmc-track-to-vtk +++ b/scripts/openmc-track-to-vtk @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python """Convert binary particle track to VTK poly data. Usage information can be obtained by running 'track.py --help': @@ -64,26 +64,43 @@ def main(): for fname in args.input: # Write coordinate values to points array. if fname.endswith('.binary'): - track = open(fname, 'rb').read() - coords = [struct.unpack("ddd", track[24*i : 24*(i+1)]) - for i in range(len(track)/24)] - n_points = len(coords) - for triplet in coords: - points.InsertNextPoint(triplet) + track = open(fname, 'rb') + + # Determine number of particles and tracks/particle + n_particles = struct.unpack('i', track.read(4))[0] + n_coords = struct.unpack('i'*n_particles, track.read(4*n_particles)) + + coords = [] + for i in range(n_particles): + # Read coordinates for each particle + coords.append([struct.unpack('ddd', track.read(24)) + for j in range(n_coords[i])]) + + # Add coordinates to points data + for triplet in coords[i]: + points.InsertNextPoint(triplet) + else: - coords = h5py.File(fname).get('coordinates') - n_points = coords.shape[0] - for i in range(n_points): - points.InsertNextPoint(coords[i, :]) + track = h5py.File(fname) + n_particles = track['n_particles'].value[0] + n_coords = track['n_coords'] + coords = [] + for i in range(n_particles): + coords.append(track['coordinates_' + str(i + 1)].value) + for j in range(n_coords[i]): + points.InsertNextPoint(coords[i][j,:]) - # Create VTK line and assign points to line. - line = vtk.vtkPolyLine() - line.GetPointIds().SetNumberOfIds(n_points) - for i in range(n_points): - line.GetPointIds().SetId(i, point_offset+i) + for i in range(n_particles): + # Create VTK line and assign points to line. + line = vtk.vtkPolyLine() + line.GetPointIds().SetNumberOfIds(n_coords[i]) + for j in range(n_coords[i]): + line.GetPointIds().SetId(j, point_offset + j) + + # Add line to cell array + cells.InsertNextCell(line) + point_offset += n_coords[i] - cells.InsertNextCell(line) - point_offset += n_points data = vtk.vtkPolyData() data.SetPoints(points) data.SetLines(cells) diff --git a/setup.py b/setup.py index b86582dd04..655e38e3a4 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ except ImportError: have_setuptools = False kwargs = {'name': 'openmc', - 'version': '0.6.2', + 'version': '0.7.0', 'packages': ['openmc'], 'scripts': glob.glob('scripts/openmc-*'), diff --git a/src/ace.F90 b/src/ace.F90 index c1845fffb4..0dd92ea2c7 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -88,16 +88,16 @@ contains nuclides(i_nuclide) % resonant = .true. nuclides(i_nuclide) % name_0K = nuclides_0K(n) % name_0K nuclides(i_nuclide) % name_0K = trim(nuclides(i_nuclide) % & - & name_0K) + & name_0K) nuclides(i_nuclide) % scheme = nuclides_0K(n) % scheme nuclides(i_nuclide) % scheme = trim(nuclides(i_nuclide) % & - & scheme) + & scheme) nuclides(i_nuclide) % E_min = nuclides_0K(n) % E_min nuclides(i_nuclide) % E_max = nuclides_0K(n) % E_max if (.not. already_read % contains(nuclides(i_nuclide) % & - & name_0K)) then + & name_0K)) then i_listing = xs_listing_dict % get_key(nuclides(i_nuclide) % & - & name_0K) + & name_0K) call read_ace_table(i_nuclide, i_listing) end if exit @@ -446,9 +446,10 @@ contains if (nuc % elastic_0K(i) < ZERO) nuc % elastic_0K(i) = ZERO ! build xs cdf - xs_cdf_sum = xs_cdf_sum + (sqrt(nuc % energy_0K(i)) * nuc % elastic_0K(i) & - & + sqrt(nuc % energy_0K(i+1)) * nuc % elastic_0K(i+1)) / TWO & - & * (nuc % energy_0K(i+1) - nuc % energy_0K(i)) + xs_cdf_sum = xs_cdf_sum & + + (sqrt(nuc % energy_0K(i)) * nuc % elastic_0K(i) & + + sqrt(nuc % energy_0K(i+1)) * nuc % elastic_0K(i+1)) / TWO & + * (nuc % energy_0K(i+1) - nuc % energy_0K(i)) nuc % xs_cdf(i) = xs_cdf_sum end do @@ -752,31 +753,31 @@ contains ! Set flag and allocate space for Tab1 to store yield rxn % multiplicity_with_E = .true. allocate(rxn % multiplicity_E) - + XSS_index = JXS(11) + rxn % multiplicity - 101 NR = nint(XSS(XSS_index)) rxn % multiplicity_E % n_regions = NR - + ! allocate space for ENDF interpolation parameters if (NR > 0) then allocate(rxn % multiplicity_E % nbt(NR)) allocate(rxn % multiplicity_E % int(NR)) end if - + ! read ENDF interpolation parameters XSS_index = XSS_index + 1 if (NR > 0) then rxn % multiplicity_E % nbt = get_int(NR) rxn % multiplicity_E % int = get_int(NR) end if - + ! allocate space for yield data XSS_index = XSS_index + 2*NR NE = nint(XSS(XSS_index)) rxn % multiplicity_E % n_pairs = NE allocate(rxn % multiplicity_E % x(NE)) allocate(rxn % multiplicity_E % y(NE)) - + ! read yield data XSS_index = XSS_index + 1 rxn % multiplicity_E % x = get_real(NE) @@ -1480,7 +1481,7 @@ contains table % inelastic_data(i) % e_out_pdf(j) = XSS(XSS_index + 2) table % inelastic_data(i) % e_out_cdf(j) = XSS(XSS_index + 3) table % inelastic_data(i) % mu(:, j) = & - XSS(XSS_index + 4: XSS_index + 4 + NMU - 1) + XSS(XSS_index + 4: XSS_index + 4 + NMU - 1) XSS_index = XSS_index + 4 + NMU - 1 end do end do diff --git a/src/cmfd_data.F90 b/src/cmfd_data.F90 index 70a18bac78..2b17784196 100644 --- a/src/cmfd_data.F90 +++ b/src/cmfd_data.F90 @@ -104,23 +104,23 @@ contains cmfd % keff_bal = ZERO - ! Begin loop around tallies - TAL: do ital = 1, n_cmfd_tallies + ! Begin loop around tallies + TAL: do ital = 1, n_cmfd_tallies - ! Associate tallies and mesh - t => cmfd_tallies(ital) - i_mesh = t % filters(t % find_filter(FILTER_MESH)) % int_bins(1) - m => meshes(i_mesh) + ! Associate tallies and mesh + t => cmfd_tallies(ital) + i_mesh = t % filters(t % find_filter(FILTER_MESH)) % int_bins(1) + m => meshes(i_mesh) - i_filter_mesh = t % find_filter(FILTER_MESH) - i_filter_ein = t % find_filter(FILTER_ENERGYIN) - i_filter_eout = t % find_filter(FILTER_ENERGYOUT) - i_filter_surf = t % find_filter(FILTER_SURFACE) + i_filter_mesh = t % find_filter(FILTER_MESH) + i_filter_ein = t % find_filter(FILTER_ENERGYIN) + i_filter_eout = t % find_filter(FILTER_ENERGYOUT) + i_filter_surf = t % find_filter(FILTER_SURFACE) - ! Begin loop around space - ZLOOP: do k = 1,nz + ! Begin loop around space + ZLOOP: do k = 1,nz - YLOOP: do j = 1,ny + YLOOP: do j = 1,ny XLOOP: do i = 1,nx @@ -600,7 +600,7 @@ contains dtilde = (2*cell_dc*neig_dc)/(neig_hxyz(xyz_idx)*cell_dc + & cell_hxyz(xyz_idx)*neig_dc) - end if + end if end if @@ -797,7 +797,7 @@ contains ! Calculate albedo if ((shift_idx == 1 .and. current(2*l ) < 1.0e-10_8) .or. & - (shift_idx == -1 .and. current(2*l-1) < 1.0e-10_8)) then + (shift_idx == -1 .and. current(2*l-1) < 1.0e-10_8)) then albedo = ONE else albedo = (current(2*l-1)/current(2*l))**(shift_idx) diff --git a/src/cmfd_execute.F90 b/src/cmfd_execute.F90 index e620c1be38..c55d206cbc 100644 --- a/src/cmfd_execute.F90 +++ b/src/cmfd_execute.F90 @@ -121,7 +121,7 @@ contains ! Allocate cmfd source if not already allocated and allocate buffer if (.not. allocated(cmfd % cmfd_src)) & - allocate(cmfd % cmfd_src(ng,nx,ny,nz)) + allocate(cmfd % cmfd_src(ng,nx,ny,nz)) ! Reset cmfd source to 0 cmfd % cmfd_src = ZERO diff --git a/src/cmfd_header.F90 b/src/cmfd_header.F90 index c9bc0f32af..e743cc928e 100644 --- a/src/cmfd_header.F90 +++ b/src/cmfd_header.F90 @@ -1,4 +1,4 @@ -module cmfd_header +module cmfd_header use constants, only: CMFD_NOACCEL, ZERO, ONE @@ -17,7 +17,7 @@ module cmfd_header ! Core overlay map integer, allocatable :: coremap(:,:,:) integer, allocatable :: indexmap(:,:) - integer :: mat_dim = CMFD_NOACCEL + integer :: mat_dim = CMFD_NOACCEL ! Energy grid real(8), allocatable :: egrid(:) @@ -51,7 +51,7 @@ module cmfd_header ! Source sites in each mesh box real(8), allocatable :: sourcecounts(:,:,:,:) - ! Weight adjustment factors + ! Weight adjustment factors real(8), allocatable :: weightfactors(:,:,:,:) ! Eigenvector/eigenvalue from cmfd run @@ -118,7 +118,7 @@ contains if (.not. allocated(this % nfissxs)) allocate(this % nfissxs(ng,ng,nx,ny,nz)) if (.not. allocated(this % diffcof)) allocate(this % diffcof(ng,nx,ny,nz)) - ! Allocate dtilde and dhat + ! Allocate dtilde and dhat if (.not. allocated(this % dtilde)) allocate(this % dtilde(6,ng,nx,ny,nz)) if (.not. allocated(this % dhat)) allocate(this % dhat(6,ng,nx,ny,nz)) @@ -167,7 +167,7 @@ contains end subroutine allocate_cmfd !=============================================================================== -! DEALLOCATE_CMFD frees all memory of cmfd type +! DEALLOCATE_CMFD frees all memory of cmfd type !=============================================================================== subroutine deallocate_cmfd(this) diff --git a/src/cmfd_input.F90 b/src/cmfd_input.F90 index 169c763957..2d44d3e9bc 100644 --- a/src/cmfd_input.F90 +++ b/src/cmfd_input.F90 @@ -120,7 +120,7 @@ contains allocate(cmfd % coremap(cmfd % indices(1), cmfd % indices(2), & cmfd % indices(3))) if (get_arraysize_integer(node_mesh, "map") /= & - product(cmfd % indices(1:3))) then + product(cmfd % indices(1:3))) then call fatal_error('CMFD coremap not to correct dimensions') end if allocate(iarray(get_arraysize_integer(node_mesh, "map"))) @@ -156,7 +156,7 @@ contains call get_node_value(doc, "dhat_reset", temp_str) temp_str = to_lower(temp_str) if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') & - dhat_reset = .true. + dhat_reset = .true. end if ! Set monitoring @@ -180,7 +180,7 @@ contains call get_node_value(doc, "run_adjoint", temp_str) temp_str = to_lower(temp_str) if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') & - cmfd_run_adjoint = .true. + cmfd_run_adjoint = .true. end if ! Batch to begin cmfd @@ -289,7 +289,7 @@ contains ! Determine number of dimensions for mesh n = get_arraysize_integer(node_mesh, "dimension") if (n /= 2 .and. n /= 3) then - call fatal_error("Mesh must be two or three dimensions.") + call fatal_error("Mesh must be two or three dimensions.") end if m % n_dimension = n @@ -318,14 +318,14 @@ contains ! Make sure both upper-right or width were specified if (check_for_node(node_mesh, "upper_right") .and. & - check_for_node(node_mesh, "width")) then + check_for_node(node_mesh, "width")) then call fatal_error("Cannot specify both and on a & &tally mesh.") end if ! Make sure either upper-right or width was specified if (.not.check_for_node(node_mesh, "upper_right") .and. & - .not.check_for_node(node_mesh, "width")) then + .not.check_for_node(node_mesh, "width")) then call fatal_error("Must specify either and on a & &tally mesh.") end if @@ -333,7 +333,7 @@ contains if (check_for_node(node_mesh, "width")) then ! Check to ensure width has same dimensions if (get_arraysize_double(node_mesh, "width") /= & - get_arraysize_double(node_mesh, "lower_left")) then + get_arraysize_double(node_mesh, "lower_left")) then call fatal_error("Number of entries on must be the same as the & &number of entries on .") end if @@ -351,7 +351,7 @@ contains elseif (check_for_node(node_mesh, "upper_right")) then ! Check to ensure width has same dimensions if (get_arraysize_double(node_mesh, "upper_right") /= & - get_arraysize_double(node_mesh, "lower_left")) then + get_arraysize_double(node_mesh, "lower_left")) then call fatal_error("Number of entries on must be the same & &as the number of entries on .") end if @@ -548,7 +548,7 @@ contains ! Deallocate filter bins deallocate(filters(1) % int_bins) if (check_for_node(node_mesh, "energy")) & - deallocate(filters(2) % real_bins) + deallocate(filters(2) % real_bins) end do diff --git a/src/cmfd_loss_operator.F90 b/src/cmfd_loss_operator.F90 index b89f0f5772..7dfeed1dbd 100644 --- a/src/cmfd_loss_operator.F90 +++ b/src/cmfd_loss_operator.F90 @@ -54,7 +54,7 @@ contains n_e = 4*(nx - 2) + 4*(ny - 2) + 4*(nz - 2) ! define # of edges n_s = 2*(nx - 2)*(ny - 2) + 2*(nx - 2)*(nz - 2) & + 2*(ny - 2)*(nz - 2) ! define # of sides - n_i = nx*ny*nz - (n_c + n_e + n_s) ! define # of interiors + n_i = nx*ny*nz - (n_c + n_e + n_s) ! define # of interiors nz_c = ng*n_c*(4 + ng - 1) ! define # nonzero corners nz_e = ng*n_e*(5 + ng - 1) ! define # nonzero edges nz_s = ng*n_s*(6 + ng - 1) ! define # nonzero sides @@ -131,7 +131,7 @@ contains ! Check for global boundary if (bound(l) /= nxyz(xyz_idx,dir_idx)) then - ! Check for coremap + ! Check for coremap if (cmfd_coremap) then ! Check for neighbor that is non-acceleartred @@ -139,11 +139,11 @@ contains CMFD_NOACCEL) then ! Get neighbor matrix index - call indices_to_matrix(g,neig_idx(1), neig_idx(2), & + call indices_to_matrix(g,neig_idx(1), neig_idx(2), & neig_idx(3), neig_mat_idx, ng, nx, ny) ! Record nonzero - nnz = nnz + 1 + nnz = nnz + 1 end if @@ -218,11 +218,11 @@ contains real(8) :: jn ! direction dependent leakage coeff to neig real(8) :: jo(6) ! leakage coeff in front of cell flux real(8) :: jnet ! net leakage from jo - real(8) :: val ! temporary variable before saving to + real(8) :: val ! temporary variable before saving to ! Check for adjoint adjoint_calc = .false. - if (present(adjoint)) adjoint_calc = adjoint + if (present(adjoint)) adjoint_calc = adjoint ! Get maximum number of cells in each direction nx = cmfd%indices(1) @@ -257,11 +257,11 @@ contains dhat = ZERO end if - ! Create boundary vector + ! Create boundary vector bound = (/i,i,j,j,k,k/) ! Begin loop over leakages - ! 1=-x, 2=+x, 3=-y, 4=+y, 5=-z, 6=+z + ! 1=-x, 2=+x, 3=-y, 4=+y, 5=-z, 6=+z LEAK: do l = 1,6 ! Define (x,y,z) and (-,+) indices @@ -350,7 +350,7 @@ contains scattxshg = cmfd%scattxs(h, g, i, j, k) end if - ! Negate the scattering xs + ! Negate the scattering xs val = -scattxshg ! Record value in matrix @@ -358,7 +358,7 @@ contains end do SCATTR - end do ROWS + end do ROWS ! CSR requires n+1 row call loss_matrix % new_row() diff --git a/src/cmfd_prod_operator.F90 b/src/cmfd_prod_operator.F90 index e6d055ced8..7779c24551 100644 --- a/src/cmfd_prod_operator.F90 +++ b/src/cmfd_prod_operator.F90 @@ -97,7 +97,7 @@ contains end if - ! loop around all other groups + ! loop around all other groups NFISS: do h = 1, ng @@ -122,7 +122,7 @@ contains end do NFISS - end do ROWS + end do ROWS ! CSR requires n+1 row call prod_matrix % new_row() diff --git a/src/cmfd_solver.F90 b/src/cmfd_solver.F90 index ee5127a374..84f0016d3d 100644 --- a/src/cmfd_solver.F90 +++ b/src/cmfd_solver.F90 @@ -65,7 +65,7 @@ contains ! Check for physical adjoint if (adjoint_calc .and. trim(cmfd_adjoint_type) == 'physical') & - physical_adjoint = .true. + physical_adjoint = .true. ! Start timer for build call time_cmfdbuild % start() @@ -75,7 +75,7 @@ contains ! Check for mathematical adjoint calculation if (adjoint_calc .and. trim(cmfd_adjoint_type) == 'math') & - call compute_adjoint() + call compute_adjoint() ! Stop timer for build call time_cmfdbuild % stop() @@ -286,7 +286,7 @@ contains ROWS: do irow = 1, loss % n COLS: do icol = loss % get_row(irow), loss % get_row(irow + 1) - 1 if (loss % get_col(icol) == prod % get_col(jcol) .and. & - jcol < prod % get_row(irow + 1)) then + jcol < prod % get_row(irow + 1)) then loss % val(icol) = loss % val(icol) - ONE/k_s*prod % val(jcol) jcol = jcol + 1 end if diff --git a/src/constants.F90 b/src/constants.F90 index b1af171ef1..38bedf0224 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -7,8 +7,8 @@ module constants ! OpenMC major, minor, and release numbers integer, parameter :: VERSION_MAJOR = 0 - integer, parameter :: VERSION_MINOR = 6 - integer, parameter :: VERSION_RELEASE = 2 + integer, parameter :: VERSION_MINOR = 7 + integer, parameter :: VERSION_RELEASE = 0 ! Revision numbers for binary files integer, parameter :: REVISION_STATEPOINT = 13 @@ -44,6 +44,9 @@ module constants integer, parameter :: MAX_EVENTS = 10000 integer, parameter :: MAX_SAMPLE = 100000 + ! Maximum number of secondary particles created + integer, parameter :: MAX_SECONDARY = 1000 + ! Maximum number of words in a single line, length of line, and length of ! single word integer, parameter :: MAX_WORDS = 500 diff --git a/src/cross_section.F90 b/src/cross_section.F90 index c8a567938e..b937b03a15 100644 --- a/src/cross_section.F90 +++ b/src/cross_section.F90 @@ -446,7 +446,7 @@ contains ! Calculate elastic cross section/factor elastic = ZERO if (urr % prob(i_energy, URR_ELASTIC, i_low) > ZERO .and. & - urr % prob(i_energy + 1, URR_ELASTIC, i_up) > ZERO) then + urr % prob(i_energy + 1, URR_ELASTIC, i_up) > ZERO) then elastic = exp((ONE - f) * log(urr % prob(i_energy, URR_ELASTIC, & i_low)) + f * log(urr % prob(i_energy + 1, URR_ELASTIC, & i_up))) @@ -455,7 +455,7 @@ contains ! Calculate fission cross section/factor fission = ZERO if (urr % prob(i_energy, URR_FISSION, i_low) > ZERO .and. & - urr % prob(i_energy + 1, URR_FISSION, i_up) > ZERO) then + urr % prob(i_energy + 1, URR_FISSION, i_up) > ZERO) then fission = exp((ONE - f) * log(urr % prob(i_energy, URR_FISSION, & i_low)) + f * log(urr % prob(i_energy + 1, URR_FISSION, & i_up))) @@ -464,7 +464,7 @@ contains ! Calculate capture cross section/factor capture = ZERO if (urr % prob(i_energy, URR_N_GAMMA, i_low) > ZERO .and. & - urr % prob(i_energy + 1, URR_N_GAMMA, i_up) > ZERO) then + urr % prob(i_energy + 1, URR_N_GAMMA, i_up) > ZERO) then capture = exp((ONE - f) * log(urr % prob(i_energy, URR_N_GAMMA, & i_low)) + f * log(urr % prob(i_energy + 1, URR_N_GAMMA, & i_up))) @@ -571,11 +571,11 @@ contains ! calculate interpolation factor f = (E - nuc % energy_0K(i_grid)) & - & / (nuc % energy_0K(i_grid + 1) - nuc % energy_0K(i_grid)) + & / (nuc % energy_0K(i_grid + 1) - nuc % energy_0K(i_grid)) ! Calculate microscopic nuclide elastic cross section xs_out = (ONE - f) * nuc % elastic_0K(i_grid) & - & + f * nuc % elastic_0K(i_grid + 1) + & + f * nuc % elastic_0K(i_grid + 1) end function elastic_xs_0K diff --git a/src/dict_header.F90 b/src/dict_header.F90 index 7da2015fd3..ffe488d525 100644 --- a/src/dict_header.F90 +++ b/src/dict_header.F90 @@ -56,7 +56,7 @@ module dict_header !=============================================================================== ! DICT* is a dictionary of (key,value) pairs with convenience methods as ! type-bound procedures. DictCharInt has character(*) keys and integer values, -! and DictIntInt has integer keys and values. +! and DictIntInt has integer keys and values. !=============================================================================== type, public :: DictCharInt @@ -105,7 +105,7 @@ contains if (associated(elem)) then elem % value = value else - ! Get hash + ! Get hash hash = dict_hash_key_ci(key) ! Create new element @@ -135,7 +135,7 @@ contains if (associated(elem)) then elem % value = value else - ! Get hash + ! Get hash hash = dict_hash_key_ii(key) ! Create new element @@ -156,13 +156,13 @@ contains !=============================================================================== function dict_get_elem_ci(this, key) result(elem) - + class(DictCharInt) :: this character(*), intent(in) :: key type(ElemKeyValueCI), pointer :: elem integer :: hash - + ! Check for dictionary not being allocated if (.not. associated(this % table)) then allocate(this % table(HASH_SIZE)) @@ -178,13 +178,13 @@ contains end function dict_get_elem_ci function dict_get_elem_ii(this, key) result(elem) - + class(DictIntInt) :: this integer, intent(in) :: key type(ElemKeyValueII), pointer :: elem integer :: hash - + ! Check for dictionary not being allocated if (.not. associated(this % table)) then allocate(this % table(HASH_SIZE)) @@ -279,7 +279,7 @@ contains character(*), intent(in) :: key integer :: val - + integer :: i val = 0 @@ -298,7 +298,7 @@ contains integer, intent(in) :: key integer :: val - + val = 0 ! Added the absolute val on val-1 since the sum in the do loop is @@ -420,7 +420,7 @@ contains integer :: i type(ElemKeyValueII), pointer :: current type(ElemKeyValueII), pointer :: next - + if (associated(this % table)) then do i = 1, size(this % table) current => this % table(i) % list @@ -440,5 +440,5 @@ contains end if end subroutine dict_clear_ii - + end module dict_header diff --git a/src/doppler.F90 b/src/doppler.F90 index e888eb2b18..85ab6da3c0 100644 --- a/src/doppler.F90 +++ b/src/doppler.F90 @@ -52,62 +52,115 @@ contains ! Loop over incoming neutron energies ENERGY_NEUTRON: do i = 1, n - sigma = ZERO - y = x(i) - y_sq = y*y - y_inv = ONE / y - y_inv_sq = y_inv / y + sigma = ZERO + y = x(i) + y_sq = y*y + y_inv = ONE / y + y_inv_sq = y_inv / y - ! ======================================================================= - ! EVALUATE FIRST TERM FROM x(k) - y = 0 to -4 + ! ======================================================================= + ! EVALUATE FIRST TERM FROM x(k) - y = 0 to -4 - k = i - a = ZERO - call calculate_F(F_a, a) + k = i + a = ZERO + call calculate_F(F_a, a) - do while (a >= -4.0 .and. k > 1) - ! Move to next point - F_b = F_a - k = k - 1 - a = x(k) - y + do while (a >= -4.0 .and. k > 1) + ! Move to next point + F_b = F_a + k = k - 1 + a = x(k) - y - ! Calculate F and H functions - call calculate_F(F_a, a) - H = F_a - F_b + ! Calculate F and H functions + call calculate_F(F_a, a) + H = F_a - F_b - ! Calculate A(k), B(k), and slope terms - Ak = y_inv_sq*H(2) + 2.0*y_inv*H(1) + H(0) - Bk = y_inv_sq*H(4) + 4.0*y_inv*H(3) + 6.0*H(2) + 4.0*y*H(1) + y_sq*H(0) - slope = (xs(k+1) - xs(k)) / (x(k+1)**2 - x(k)**2) + ! Calculate A(k), B(k), and slope terms + Ak = y_inv_sq*H(2) + 2.0*y_inv*H(1) + H(0) + Bk = y_inv_sq*H(4) + 4.0*y_inv*H(3) + 6.0*H(2) + 4.0*y*H(1) + y_sq*H(0) + slope = (xs(k+1) - xs(k)) / (x(k+1)**2 - x(k)**2) - ! Add contribution to broadened cross section - sigma = sigma + Ak*(xs(k) - slope*x(k)**2) + slope*Bk - end do + ! Add contribution to broadened cross section + sigma = sigma + Ak*(xs(k) - slope*x(k)**2) + slope*Bk + end do - ! ======================================================================= - ! EXTEND CROSS SECTION TO 0 ASSUMING 1/V SHAPE + ! ======================================================================= + ! EXTEND CROSS SECTION TO 0 ASSUMING 1/V SHAPE - if (k == 1 .and. a >= -4.0) then - ! Since x = 0, this implies that a = -y - F_b = F_a - a = -y + if (k == 1 .and. a >= -4.0) then + ! Since x = 0, this implies that a = -y + F_b = F_a + a = -y - ! Calculate F and H functions - call calculate_F(F_a, a) - H = F_a - F_b + ! Calculate F and H functions + call calculate_F(F_a, a) + H = F_a - F_b - ! Add contribution to broadened cross section - sigma = sigma + xs(k)*x(k)*(y_inv_sq*H(1) + y_inv*H(0)) - end if + ! Add contribution to broadened cross section + sigma = sigma + xs(k)*x(k)*(y_inv_sq*H(1) + y_inv*H(0)) + end if - ! ======================================================================= - ! EVALUATE FIRST TERM FROM x(k) - y = 0 to 4 + ! ======================================================================= + ! EVALUATE FIRST TERM FROM x(k) - y = 0 to 4 - k = i - b = ZERO - call calculate_F(F_b, b) + k = i + b = ZERO + call calculate_F(F_b, b) - do while (b <= 4.0 .and. k < n) + do while (b <= 4.0 .and. k < n) + ! Move to next point + F_a = F_b + k = k + 1 + b = x(k) - y + + ! Calculate F and H functions + call calculate_F(F_b, b) + H = F_a - F_b + + ! Calculate A(k), B(k), and slope terms + Ak = y_inv_sq*H(2) + 2.0*y_inv*H(1) + H(0) + Bk = y_inv_sq*H(4) + 4.0*y_inv*H(3) + 6.0*H(2) + 4.0*y*H(1) + y_sq*H(0) + slope = (xs(k) - xs(k-1)) / (x(k)**2 - x(k-1)**2) + + ! Add contribution to broadened cross section + sigma = sigma + Ak*(xs(k) - slope*x(k)**2) + slope*Bk + end do + + ! ======================================================================= + ! EXTEND CROSS SECTION TO INFINITY ASSUMING CONSTANT SHAPE + + if (k == n .and. b <= 4.0) then + ! Calculate F function at last energy point + a = x(k) - y + call calculate_F(F_a, a) + + ! Add contribution to broadened cross section + sigma = sigma + xs(k) * (y_inv_sq*F_a(2) + 2.0*y_inv*F_a(1) + F_a(0)) + end if + + ! ======================================================================= + ! EVALUATE SECOND TERM FROM x(k) + y = 0 to +4 + + if (y <= 4.0) then + ! Swap signs on y + y = -y + y_inv = -y_inv + k = 1 + + ! Calculate a and b based on 0 and x(1) + a = -y + b = x(k) - y + + ! Calculate F and H functions + call calculate_F(F_a, a) + call calculate_F(F_b, b) + H = F_a - F_b + + ! Add contribution to broadened cross section + sigma = sigma - xs(k) * x(k) * (y_inv_sq*H(1) + y_inv*H(0)) + + ! Now progress forward doing the remainder of the second term + do while (b <= 4.0) ! Move to next point F_a = F_b k = k + 1 @@ -119,69 +172,17 @@ contains ! Calculate A(k), B(k), and slope terms Ak = y_inv_sq*H(2) + 2.0*y_inv*H(1) + H(0) - Bk = y_inv_sq*H(4) + 4.0*y_inv*H(3) + 6.0*H(2) + 4.0*y*H(1) + y_sq*H(0) + Bk = y_inv_sq*H(4) + 4.0*y_inv*H(3) + 6.0*H(2) + 4.0*y*H(1) & + + y_sq*H(0) slope = (xs(k) - xs(k-1)) / (x(k)**2 - x(k-1)**2) ! Add contribution to broadened cross section - sigma = sigma + Ak*(xs(k) - slope*x(k)**2) + slope*Bk - end do + sigma = sigma - Ak*(xs(k) - slope*x(k)**2) - slope*Bk + end do + end if - ! ======================================================================= - ! EXTEND CROSS SECTION TO INFINITY ASSUMING CONSTANT SHAPE - - if (k == n .and. b <= 4.0) then - ! Calculate F function at last energy point - a = x(k) - y - call calculate_F(F_a, a) - - ! Add contribution to broadened cross section - sigma = sigma + xs(k) * (y_inv_sq*F_a(2) + 2.0*y_inv*F_a(1) + F_a(0)) - end if - - ! ======================================================================= - ! EVALUATE SECOND TERM FROM x(k) + y = 0 to +4 - - if (y <= 4.0) then - ! Swap signs on y - y = -y - y_inv = -y_inv - k = 1 - - ! Calculate a and b based on 0 and x(1) - a = -y - b = x(k) - y - - ! Calculate F and H functions - call calculate_F(F_a, a) - call calculate_F(F_b, b) - H = F_a - F_b - - ! Add contribution to broadened cross section - sigma = sigma - xs(k) * x(k) * (y_inv_sq*H(1) + y_inv*H(0)) - - ! Now progress forward doing the remainder of the second term - do while (b <= 4.0) - ! Move to next point - F_a = F_b - k = k + 1 - b = x(k) - y - - ! Calculate F and H functions - call calculate_F(F_b, b) - H = F_a - F_b - - ! Calculate A(k), B(k), and slope terms - Ak = y_inv_sq*H(2) + 2.0*y_inv*H(1) + H(0) - Bk = y_inv_sq*H(4) + 4.0*y_inv*H(3) + 6.0*H(2) + 4.0*y*H(1) + y_sq*H(0) - slope = (xs(k) - xs(k-1)) / (x(k)**2 - x(k-1)**2) - - ! Add contribution to broadened cross section - sigma = sigma - Ak*(xs(k) - slope*x(k)**2) - slope*Bk - end do - end if - - ! Set broadened cross section - sigmaNew(i) = sigma + ! Set broadened cross section + sigmaNew(i) = sigma end do ENERGY_NEUTRON diff --git a/src/eigenvalue.F90 b/src/eigenvalue.F90 index aefb597d0e..33d63b7cc9 100644 --- a/src/eigenvalue.F90 +++ b/src/eigenvalue.F90 @@ -4,273 +4,24 @@ module eigenvalue use message_passing #endif - use cmfd_execute, only: cmfd_init_batch, execute_cmfd use constants, only: ZERO use error, only: fatal_error, warning use global use math, only: t_percentile use mesh, only: count_bank_sites use mesh_header, only: StructuredMesh - use output, only: write_message, header, print_columns, & - print_batch_keff, print_generation use particle_header, only: Particle use random_lcg, only: prn, set_particle_seed, prn_skip use search, only: binary_search - use source, only: get_source_particle - use state_point, only: write_state_point, write_source_point use string, only: to_str - use tally, only: synchronize_tallies, setup_active_usertallies, & - reset_result - use trigger, only: check_triggers - use tracking, only: transport implicit none - private - public :: run_eigenvalue - real(8) :: keff_generation ! Single-generation k on each - ! processor - real(8) :: k_sum(2) = ZERO ! Used to reduce sum and sum_sq + real(8) :: keff_generation ! Single-generation k on each processor + real(8) :: k_sum(2) = ZERO ! Used to reduce sum and sum_sq contains -!=============================================================================== -! RUN_EIGENVALUE encompasses all the main logic where iterations are performed -! over the batches, generations, and histories in a k-eigenvalue calculation. -!=============================================================================== - - subroutine run_eigenvalue() - - type(Particle) :: p - integer(8) :: i_work - - if (master) call header("K EIGENVALUE SIMULATION", level=1) - - ! Display column titles - if(master) call print_columns() - - ! Turn on inactive timer - call time_inactive % start() - - ! ========================================================================== - ! LOOP OVER BATCHES - BATCH_LOOP: do current_batch = 1, n_max_batches - - call initialize_batch() - - ! Handle restart runs - if (restart_run .and. current_batch <= restart_batch) then - call replay_batch_history() - cycle BATCH_LOOP - end if - - ! ======================================================================= - ! LOOP OVER GENERATIONS - GENERATION_LOOP: do current_gen = 1, gen_per_batch - - call initialize_generation() - - ! Start timer for transport - call time_transport % start() - - ! ==================================================================== - ! LOOP OVER PARTICLES -!$omp parallel do schedule(static) firstprivate(p) - PARTICLE_LOOP: do i_work = 1, work - current_work = i_work - - ! grab source particle from bank - call get_source_particle(p, current_work) - - ! transport particle - call transport(p) - - end do PARTICLE_LOOP -!$omp end parallel do - - ! Accumulate time for transport - call time_transport % stop() - - call finalize_generation() - - end do GENERATION_LOOP - - call finalize_batch() - - if (satisfy_triggers) exit BATCH_LOOP - - end do BATCH_LOOP - - call time_active % stop() - - ! ========================================================================== - ! END OF RUN WRAPUP - - if (master) call header("SIMULATION FINISHED", level=1) - - ! Clear particle - call p % clear() - - end subroutine run_eigenvalue - -!=============================================================================== -! INITIALIZE_BATCH -!=============================================================================== - - subroutine initialize_batch() - - call write_message("Simulating batch " // trim(to_str(current_batch)) & - &// "...", 8) - - ! Reset total starting particle weight used for normalizing tallies - total_weight = ZERO - - if (current_batch == n_inactive + 1) then - ! Switch from inactive batch timer to active batch timer - call time_inactive % stop() - call time_active % start() - - ! Enable active batches (and tallies_on if it hasn't been enabled) - active_batches = .true. - tallies_on = .true. - - ! Add user tallies to active tallies list -!$omp parallel - call setup_active_usertallies() -!$omp end parallel - end if - - ! check CMFD initialize batch - if (cmfd_run) call cmfd_init_batch() - - end subroutine initialize_batch - -!=============================================================================== -! INITIALIZE_GENERATION -!=============================================================================== - - subroutine initialize_generation() - - ! set overall generation number - overall_gen = gen_per_batch*(current_batch - 1) + current_gen - - ! Reset number of fission bank sites - n_bank = 0 - - ! Count source sites if using uniform fission source weighting - if (ufs) call count_source_for_ufs() - - ! Store current value of tracklength k - keff_generation = global_tallies(K_TRACKLENGTH) % value - - end subroutine initialize_generation - -!=============================================================================== -! FINALIZE_GENERATION -!=============================================================================== - - subroutine finalize_generation() - - ! Update global tallies with the omp private accumulation variables -!$omp parallel -!$omp critical - global_tallies(K_TRACKLENGTH) % value = & - global_tallies(K_TRACKLENGTH) % value + global_tally_tracklength - global_tallies(K_COLLISION) % value = & - global_tallies(K_COLLISION) % value + global_tally_collision - global_tallies(LEAKAGE) % value = & - global_tallies(LEAKAGE) % value + global_tally_leakage - global_tallies(K_ABSORPTION) % value = & - global_tallies(K_ABSORPTION) % value + global_tally_absorption -!$omp end critical - - ! reset private tallies - global_tally_tracklength = 0 - global_tally_collision = 0 - global_tally_leakage = 0 - global_tally_absorption = 0 -!$omp end parallel - -#ifdef _OPENMP - ! Join the fission bank from each thread into one global fission bank - call join_bank_from_threads() -#endif - - ! Distribute fission bank across processors evenly - call time_bank % start() - call synchronize_bank() - call time_bank % stop() - - ! Calculate shannon entropy - if (entropy_on) call shannon_entropy() - - ! Collect results and statistics - call calculate_generation_keff() - call calculate_average_keff() - - ! Write generation output - if (master .and. current_gen /= gen_per_batch) call print_generation() - - end subroutine finalize_generation - -!=============================================================================== -! FINALIZE_BATCH handles synchronization and accumulation of tallies, -! calculation of Shannon entropy, getting single-batch estimate of keff, and -! turning on tallies when appropriate -!=============================================================================== - - subroutine finalize_batch() - - ! Collect tallies - call time_tallies % start() - call synchronize_tallies() - call time_tallies % stop() - - ! Reset global tally results - if (.not. active_batches) then - call reset_result(global_tallies) - n_realizations = 0 - end if - - ! Perform CMFD calculation if on - if (cmfd_on) call execute_cmfd() - - ! Display output - if (master) call print_batch_keff() - - ! Calculate combined estimate of k-effective - if (master) call calculate_combined_keff() - - ! Check_triggers - if (master) call check_triggers() -#ifdef MPI - call MPI_BCAST(satisfy_triggers, 1, MPI_LOGICAL, 0, & - MPI_COMM_WORLD, mpi_err) -#endif - if (satisfy_triggers .or. & - (trigger_on .and. current_batch == n_max_batches)) then - call statepoint_batch % add(current_batch) - end if - - ! Write out state point if it's been specified for this batch - if (statepoint_batch % contains(current_batch)) then - call write_state_point() - end if - - ! Write out source point if it's been specified for this batch - if ((sourcepoint_batch % contains(current_batch) .or. source_latest) .and. & - source_write) then - call write_source_point() - end if - - if (master .and. current_batch == n_max_batches) then - ! Make sure combined estimate of k-effective is calculated at the last - ! batch in case no state point is written - call calculate_combined_keff() - end if - - end subroutine finalize_batch - !=============================================================================== ! SYNCHRONIZE_BANK samples source sites from the fission sites that were ! accumulated during the generation. This routine is what allows this Monte @@ -830,40 +581,11 @@ contains end subroutine count_source_for_ufs -!=============================================================================== -! REPLAY_BATCH_HISTORY displays keff and entropy for each generation within a -! batch using data read from a state point file -!=============================================================================== - - subroutine replay_batch_history - - ! Write message at beginning - if (current_batch == 1) then - call write_message("Replaying history from state point...", 1) - end if - - do current_gen = 1, gen_per_batch - overall_gen = overall_gen + 1 - call calculate_average_keff() - - ! print out batch keff - if (current_gen < gen_per_batch) then - if (master) call print_generation() - else - if (master) call print_batch_keff() - end if - end do - - ! Write message at end - if (current_batch == restart_batch) then - call write_message("Resuming simulation...", 1) - end if - - end subroutine replay_batch_history - #ifdef _OPENMP !=============================================================================== -! JOIN_BANK_FROM_THREADS +! JOIN_BANK_FROM_THREADS joins threadprivate fission banks into a single fission +! bank that can be sampled. Note that this operation is necessarily sequential +! to preserve the order of the bank when using varying numbers of threads. !=============================================================================== subroutine join_bank_from_threads() @@ -880,8 +602,8 @@ contains !$omp do ordered schedule(static) do i = 1, n_threads !$omp ordered - master_fission_bank(total+1:total+n_bank) = fission_bank(1:n_bank) - total = total + n_bank + master_fission_bank(total+1:total+n_bank) = fission_bank(1:n_bank) + total = total + n_bank !$omp end ordered end do !$omp end do @@ -891,10 +613,10 @@ contains ! Now copy the shared fission bank sites back to the master thread's copy. if (thread_id == 0) then - n_bank = total - fission_bank(1:n_bank) = master_fission_bank(1:n_bank) + n_bank = total + fission_bank(1:n_bank) = master_fission_bank(1:n_bank) else - n_bank = 0 + n_bank = 0 end if !$omp end parallel diff --git a/src/endf_header.F90 b/src/endf_header.F90 index a2e8b10de4..54af0f7383 100644 --- a/src/endf_header.F90 +++ b/src/endf_header.F90 @@ -3,7 +3,7 @@ module endf_header implicit none !=============================================================================== -! TAB1 represents a one-dimensional interpolable function +! TAB1 represents a one-dimensional interpolable function !=============================================================================== type Tab1 @@ -13,28 +13,28 @@ module endf_header integer :: n_pairs ! # of pairs of (x,y) values real(8), allocatable :: x(:) ! values of abscissa real(8), allocatable :: y(:) ! values of ordinate - + ! Type-Bound procedures contains procedure :: clear => tab1_clear ! deallocates a Tab1 Object. end type Tab1 - + contains - + !=============================================================================== ! TAB1_CLEAR deallocates the items in Tab1 !=============================================================================== subroutine tab1_clear(this) - + class(Tab1), intent(inout) :: this ! The Tab1 to clear - + if (allocated(this % nbt)) & deallocate(this % nbt, this % int) - + if (allocated(this % x)) & deallocate(this % x, this % y) - + end subroutine tab1_clear end module endf_header diff --git a/src/fixed_source.F90 b/src/fixed_source.F90 deleted file mode 100644 index 9e2d34600b..0000000000 --- a/src/fixed_source.F90 +++ /dev/null @@ -1,165 +0,0 @@ -module fixed_source - -#ifdef MPI - use message_passing -#endif - - use constants, only: ZERO, MAX_LINE_LEN - use global - use output, only: write_message, header - use particle_header, only: Particle - use random_lcg, only: set_particle_seed - use source, only: sample_external_source, copy_source_attributes - use state_point, only: write_state_point - use string, only: to_str - use tally, only: synchronize_tallies, setup_active_usertallies - use trigger, only: check_triggers - use tracking, only: transport - - implicit none - -contains - - subroutine run_fixedsource() - - integer(8) :: i ! index over histories in single cycle - type(Particle) :: p - - if (master) call header("FIXED SOURCE TRANSPORT SIMULATION", level=1) - - ! Allocate particle and dummy source site -!$omp parallel - allocate(source_site) -!$omp end parallel - - ! Turn timer and tallies on - tallies_on = .true. -!$omp parallel - call setup_active_usertallies() -!$omp end parallel - call time_active % start() - - ! ========================================================================== - ! LOOP OVER BATCHES - BATCH_LOOP: do current_batch = 1, n_max_batches - - ! In a restart run, skip any batches that have already been simulated - if (restart_run .and. current_batch <= restart_batch) then - if (current_batch > n_inactive) n_realizations = n_realizations + 1 - cycle BATCH_LOOP - end if - - call initialize_batch() - - ! Start timer for transport - call time_transport % start() - - ! ======================================================================= - ! LOOP OVER PARTICLES -!$omp parallel do schedule(static) firstprivate(p) - PARTICLE_LOOP: do i = 1, work - - ! Set unique particle ID - p % id = (current_batch - 1)*n_particles + work_index(rank) + i - - ! set particle trace - trace = .false. - if (current_batch == trace_batch .and. current_gen == trace_gen .and. & - work_index(rank) + i == trace_particle) trace = .true. - - ! set random number seed - call set_particle_seed(p % id) - - ! grab source particle from bank - call sample_source_particle(p) - - ! transport particle - call transport(p) - - end do PARTICLE_LOOP -!$omp end parallel do - - ! Accumulate time for transport - call time_transport % stop() - - call finalize_batch() - - if (satisfy_triggers) exit BATCH_LOOP - - end do BATCH_LOOP - - call time_active % stop() - - ! ========================================================================== - ! END OF RUN WRAPUP - - if (master) call header("SIMULATION FINISHED", level=1) - - end subroutine run_fixedsource - -!=============================================================================== -! INITIALIZE_BATCH -!=============================================================================== - - subroutine initialize_batch() - - call write_message("Simulating batch " // trim(to_str(current_batch)) & - &// "...", 1) - - ! Reset total starting particle weight used for normalizing tallies - total_weight = ZERO - - end subroutine initialize_batch - -!=============================================================================== -! FINALIZE_BATCH -!=============================================================================== - - subroutine finalize_batch() - - ! Collect and accumulate tallies - call time_tallies % start() - call synchronize_tallies() - call time_tallies % stop() - - ! Check_triggers - if (master) call check_triggers() -#ifdef MPI - call MPI_BCAST(satisfy_triggers, 1, MPI_LOGICAL, 0, & - MPI_COMM_WORLD, mpi_err) -#endif - if (satisfy_triggers .or. & - (trigger_on .and. current_batch == n_max_batches)) then - call statepoint_batch % add(current_batch) - end if - - ! Write out state point if it's been specified for this batch - if (statepoint_batch % contains(current_batch)) then - call write_state_point() - end if - - end subroutine finalize_batch - -!=============================================================================== -! SAMPLE_SOURCE_PARTICLE -!=============================================================================== - - subroutine sample_source_particle(p) - - type(Particle), intent(inout) :: p - - ! Set particle - call p % initialize() - - ! Sample the external source distribution - call sample_external_source(source_site) - - ! Copy source attributes to the particle - call copy_source_attributes(p, source_site) - - ! Determine whether to create track file - if (write_all_tracks) p % write_track = .true. - - end subroutine sample_source_particle - -end module fixed_source diff --git a/src/geometry_header.F90 b/src/geometry_header.F90 index 9a5778c173..93e5dd1fdb 100644 --- a/src/geometry_header.F90 +++ b/src/geometry_header.F90 @@ -9,13 +9,13 @@ module geometry_header !=============================================================================== type Universe - integer :: id ! Unique ID - integer :: type ! Type - integer :: n_cells ! # of cells within - integer, allocatable :: cells(:) ! List of cells within - real(8) :: x0 ! Translation in x-coordinate - real(8) :: y0 ! Translation in y-coordinate - real(8) :: z0 ! Translation in z-coordinate + integer :: id ! Unique ID + integer :: type ! Type + integer :: n_cells ! # of cells within + integer, allocatable :: cells(:) ! List of cells within + real(8) :: x0 ! Translation in x-coordinate + real(8) :: y0 ! Translation in y-coordinate + real(8) :: z0 ! Translation in z-coordinate end type Universe !=============================================================================== @@ -119,14 +119,14 @@ module geometry_header !=============================================================================== type Surface - integer :: id ! Unique ID - character(len=52) :: name = "" ! User-defined name - integer :: type ! Type of surface - real(8), allocatable :: coeffs(:) ! Definition of surface - integer, allocatable :: & - neighbor_pos(:), & ! List of cells on positive side - neighbor_neg(:) ! List of cells on negative side - integer :: bc ! Boundary condition + integer :: id ! Unique ID + character(len=52) :: name = "" ! User-defined name + integer :: type ! Type of surface + real(8), allocatable :: coeffs(:) ! Definition of surface + integer, allocatable :: & + neighbor_pos(:), & ! List of cells on positive side + neighbor_neg(:) ! List of cells on negative side + integer :: bc ! Boundary condition end type Surface !=============================================================================== @@ -134,24 +134,29 @@ module geometry_header !=============================================================================== type Cell - integer :: id ! Unique ID - character(len=52) :: name = "" ! User-defined name - integer :: type ! Type of cell (normal, universe, lattice) - integer :: universe ! universe # this cell is in - integer :: fill ! universe # filling this cell - integer :: instances ! number of instances of this cell in the geom - integer :: material ! Material within cell (0 for universe) - integer :: n_surfaces ! Number of surfaces within - integer, allocatable :: offset (:) ! Distribcell offset for tally counter - integer, allocatable :: & - & surfaces(:) ! List of surfaces bounding cell -- note that - ! parentheses, union, etc operators will be listed - ! here too + integer :: id ! Unique ID + character(len=52) :: name = "" ! User-defined name + integer :: type ! Type of cell (normal, universe, + ! lattice) + integer :: universe ! universe # this cell is in + integer :: fill ! universe # filling this cell + integer :: instances ! number of instances of this cell in + ! the geom + integer :: material ! Material within cell (0 for + ! universe) + integer :: n_surfaces ! Number of surfaces within + integer, allocatable :: offset (:) ! Distribcell offset for tally + ! counter + integer, allocatable :: & + & surfaces(:) ! List of surfaces bounding cell + ! -- note that parentheses, union, + ! etc operators will be listed here + ! too - ! Rotation matrix and translation vector - real(8), allocatable :: translation(:) - real(8), allocatable :: rotation(:) - real(8), allocatable :: rotation_matrix(:,:) + ! Rotation matrix and translation vector + real(8), allocatable :: translation(:) + real(8), allocatable :: rotation(:) + real(8), allocatable :: rotation_matrix(:,:) end type Cell ! array index of universe 0 diff --git a/src/global.F90 b/src/global.F90 index f7d9f184e1..564fcda843 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -283,10 +283,6 @@ module global ! Mode to run in (fixed source, eigenvalue, plotting, etc) integer :: run_mode = NONE - ! Fixed source particle bank - type(Bank), pointer :: source_site => null() -!$omp threadprivate(source_site) - ! Restart run logical :: restart_run = .false. integer :: restart_batch @@ -529,9 +525,9 @@ contains ! Deallocate entropy mesh if (associated(entropy_mesh)) then if (allocated(entropy_mesh % lower_left)) & - deallocate(entropy_mesh % lower_left) + deallocate(entropy_mesh % lower_left) if (allocated(entropy_mesh % upper_right)) & - deallocate(entropy_mesh % upper_right) + deallocate(entropy_mesh % upper_right) if (allocated(entropy_mesh % width)) deallocate(entropy_mesh % width) deallocate(entropy_mesh) end if @@ -541,7 +537,7 @@ contains if (associated(ufs_mesh)) then if (allocated(ufs_mesh % lower_left)) deallocate(ufs_mesh % lower_left) if (allocated(ufs_mesh % upper_right)) & - deallocate(ufs_mesh % upper_right) + deallocate(ufs_mesh % upper_right) if (allocated(ufs_mesh % width)) deallocate(ufs_mesh % width) deallocate(ufs_mesh) end if diff --git a/src/hdf5_interface.F90 b/src/hdf5_interface.F90 index c3e5b44ba8..34b72196ee 100644 --- a/src/hdf5_interface.F90 +++ b/src/hdf5_interface.F90 @@ -7,7 +7,7 @@ module hdf5_interface use, intrinsic :: ISO_C_BINDING #ifdef MPI - use message_passing, only: MPI_COMM_WORLD, MPI_INFO_NULL + use message_passing, only: MPI_COMM_WORLD, MPI_INFO_NULL #endif implicit none diff --git a/src/hdf5_summary.F90 b/src/hdf5_summary.F90 index 161246f1c9..375ab74601 100644 --- a/src/hdf5_summary.F90 +++ b/src/hdf5_summary.F90 @@ -186,7 +186,7 @@ contains call su % write_data("lattice", "fill_type", & group="geometry/cells/cell " // trim(to_str(c % id))) call su % write_data(lattices(c % fill) % obj % id, "lattice", & - group="geometry/cells/cell " // trim(to_str(c % id))) + group="geometry/cells/cell " // trim(to_str(c % id))) end select ! Write list of bounding surfaces @@ -373,7 +373,7 @@ contains ! Write lattice universes. allocate(lattice_universes(lat % n_cells(1), lat % n_cells(2), & - &lat % n_cells(3))) + &lat % n_cells(3))) do j = 1, lat % n_cells(1) do k = 1, lat % n_cells(2) do m = 1, lat % n_cells(3) @@ -394,23 +394,23 @@ contains ! Write number of lattice cells. call su % write_data(lat % n_rings, "n_rings", & group="geometry/lattices/lattice " // trim(to_str(lat % id))) - call su % write_data(lat % n_rings, "n_axial", & + call su % write_data(lat % n_axial, "n_axial", & group="geometry/lattices/lattice " // trim(to_str(lat % id))) ! Write lattice center, pitch and outer universe. if (lat % is_3d) then - call su % write_data(lat % center, "center", length=3, & + call su % write_data(lat % center, "center", length=3, & group="geometry/lattices/lattice " // trim(to_str(lat % id))) else - call su % write_data(lat % center, "center", length=2, & + call su % write_data(lat % center, "center", length=2, & group="geometry/lattices/lattice " // trim(to_str(lat % id))) end if - + if (lat % is_3d) then - call su % write_data(lat % pitch, "pitch", length=3, & + call su % write_data(lat % pitch, "pitch", length=2, & group="geometry/lattices/lattice " // trim(to_str(lat % id))) else - call su % write_data(lat % pitch, "pitch", length=2, & + call su % write_data(lat % pitch, "pitch", length=1, & group="geometry/lattices/lattice " // trim(to_str(lat % id))) end if @@ -429,7 +429,7 @@ contains ! Write lattice universes. allocate(lattice_universes(2*lat % n_rings - 1, 2*lat % n_rings - 1, & - &lat % n_axial)) + &lat % n_axial)) do m = 1, lat % n_axial do k = 1, 2*lat % n_rings - 1 do j = 1, 2*lat % n_rings - 1 @@ -447,7 +447,7 @@ contains end do end do call su % write_data(lattice_universes, "universes", & - &length=(/lat % n_axial, 2*lat % n_rings-1, 2*lat % n_rings-1/), & + &length=(/2*lat % n_rings-1, 2*lat % n_rings-1, lat % n_axial/), & &group="geometry/lattices/lattice " // trim(to_str(lat % id))) deallocate(lattice_universes) end select @@ -647,12 +647,12 @@ contains // "/filter " // trim(to_str(j))) case(FILTER_ENERGYIN) call su % write_data("energy", "type_name", & - group="tallies/tally " // trim(to_str(t % id)) & - // "/filter " // trim(to_str(j))) + group="tallies/tally " // trim(to_str(t % id)) & + // "/filter " // trim(to_str(j))) case(FILTER_ENERGYOUT) call su % write_data("energyout", "type_name", & - group="tallies/tally " // trim(to_str(t % id)) & - // "/filter " // trim(to_str(j))) + group="tallies/tally " // trim(to_str(t % id)) & + // "/filter " // trim(to_str(j))) end select end do FILTER_LOOP diff --git a/src/initialize.F90 b/src/initialize.F90 index 99a66e2ce8..b944b6677b 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -20,7 +20,6 @@ module initialize write_message use output_interface use random_lcg, only: initialize_prng - use source, only: initialize_source use state_point, only: load_state_point use string, only: to_str, str_to_int, starts_with, ends_with use tally_header, only: TallyObject, TallyResult, TallyFilter @@ -141,13 +140,9 @@ contains ! Determine how much work each processor should do call calculate_work() - ! Allocate banks and create source particles -- for a fixed source - ! calculation, the external source distribution is sampled during the - ! run, not at initialization - if (run_mode == MODE_EIGENVALUE) then - call allocate_banks() - if (.not. restart_run) call initialize_source() - end if + ! Allocate source bank, and for eigenvalue simulations also allocate the + ! fission bank + call allocate_banks() ! If this is a restart run, load the state point data and binary source ! file @@ -904,31 +899,33 @@ contains call fatal_error("Failed to allocate source bank.") end if + if (run_mode == MODE_EIGENVALUE) then #ifdef _OPENMP - ! If OpenMP is being used, each thread needs its own private fission - ! bank. Since the private fission banks need to be combined at the end of a - ! generation, there is also a 'master_fission_bank' that is used to collect - ! the sites from each thread. + ! If OpenMP is being used, each thread needs its own private fission + ! bank. Since the private fission banks need to be combined at the end of + ! a generation, there is also a 'master_fission_bank' that is used to + ! collect the sites from each thread. - n_threads = omp_get_max_threads() + n_threads = omp_get_max_threads() !$omp parallel - thread_id = omp_get_thread_num() + thread_id = omp_get_thread_num() - if (thread_id == 0) then - allocate(fission_bank(3*work)) - else - allocate(fission_bank(3*work/n_threads)) - end if + if (thread_id == 0) then + allocate(fission_bank(3*work)) + else + allocate(fission_bank(3*work/n_threads)) + end if !$omp end parallel - allocate(master_fission_bank(3*work), STAT=alloc_err) + allocate(master_fission_bank(3*work), STAT=alloc_err) #else - allocate(fission_bank(3*work), STAT=alloc_err) + allocate(fission_bank(3*work), STAT=alloc_err) #endif - ! Check for allocation errors - if (alloc_err /= 0) then - call fatal_error("Failed to allocate fission bank.") + ! Check for allocation errors + if (alloc_err /= 0) then + call fatal_error("Failed to allocate fission bank.") + end if end if end subroutine allocate_banks diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 07ecd01c22..8f02267d89 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -472,7 +472,7 @@ contains ! Check for type of energy distribution type = '' if (check_for_node(node_dist, "type")) & - call get_node_value(node_dist, "type", type) + call get_node_value(node_dist, "type", type) select case (to_lower(type)) case ('monoenergetic') external_source % type_energy = SRC_ENERGY_MONO @@ -798,7 +798,7 @@ contains if (.not. source_separate) then do i = 1, n_source_points if (.not. statepoint_batch % contains(sourcepoint_batch % & - get_item(i))) then + get_item(i))) then call fatal_error('Sourcepoint batches are not a subset& & of statepoint batches.') end if @@ -811,7 +811,7 @@ contains call get_node_value(doc, "no_reduce", temp_str) temp_str = to_lower(temp_str) if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') & - reduce_tallies = .false. + reduce_tallies = .false. end if ! Check if the user has specified to use confidence intervals for @@ -884,11 +884,11 @@ contains &// trim(to_str(i)) // " in settings.xml file!") end if call get_node_value(node_scatterer, "nuclide", & - nuclides_0K(i) % nuclide) + nuclides_0K(i) % nuclide) if (check_for_node(node_scatterer, "method")) then call get_node_value(node_scatterer, "method", & - nuclides_0K(i) % scheme) + nuclides_0K(i) % scheme) end if ! check to make sure xs name for which method is applied is given @@ -898,7 +898,7 @@ contains &// " given in cross_sections.xml") end if call get_node_value(node_scatterer, "xs_label", & - nuclides_0K(i) % name) + nuclides_0K(i) % name) ! check to make sure 0K xs name for which method is applied is given if (.not. check_for_node(node_scatterer, "xs_label_0K")) then @@ -906,11 +906,11 @@ contains &// trim(to_str(i)) // " given in cross_sections.xml") end if call get_node_value(node_scatterer, "xs_label_0K", & - nuclides_0K(i) % name_0K) + nuclides_0K(i) % name_0K) if (check_for_node(node_scatterer, "E_min")) then call get_node_value(node_scatterer, "E_min", & - nuclides_0K(i) % E_min) + nuclides_0K(i) % E_min) end if ! check that E_min is non-negative @@ -921,7 +921,7 @@ contains if (check_for_node(node_scatterer, "E_max")) then call get_node_value(node_scatterer, "E_max", & - nuclides_0K(i) % E_max) + nuclides_0K(i) % E_max) end if ! check that E_max is not less than E_min @@ -1081,7 +1081,7 @@ contains ! Read material word = '' if (check_for_node(node_cell, "material")) & - call get_node_value(node_cell, "material", word) + call get_node_value(node_cell, "material", word) select case(to_lower(word)) case ('void') c % material = MATERIAL_VOID @@ -1248,7 +1248,7 @@ contains ! Copy and interpret surface type word = '' if (check_for_node(node_surf, "type")) & - call get_node_value(node_surf, "type", word) + call get_node_value(node_surf, "type", word) select case(to_lower(word)) case ('x-plane') s % type = SURF_PX @@ -1306,7 +1306,7 @@ contains ! Boundary conditions word = '' if (check_for_node(node_surf, "boundary")) & - call get_node_value(node_surf, "boundary", word) + call get_node_value(node_surf, "boundary", word) select case (to_lower(word)) case ('transmission', 'transmit', '') s % bc = BC_TRANSMIT @@ -1447,7 +1447,7 @@ contains do k = 0, n_y - 1 do j = 1, n_x lat % universes(j, n_y - k, m) = & - &temp_int_array(j + n_x*k + n_x*n_y*(m-1)) + &temp_int_array(j + n_x*k + n_x*n_y*(m-1)) end do end do end do @@ -1714,7 +1714,7 @@ contains ! Copy default cross section if present if (check_for_node(doc, "default_xs")) & - call get_node_value(doc, "default_xs", default_xs) + call get_node_value(doc, "default_xs", default_xs) ! Get pointer to list of XML call get_node_list(doc, "material", node_mat_list) @@ -1860,7 +1860,7 @@ contains ! store full name call get_node_value(node_nuc, "name", temp_str) if (check_for_node(node_nuc, "xs")) & - call get_node_value(node_nuc, "xs", name) + call get_node_value(node_nuc, "xs", name) name = trim(temp_str) // "." // trim(name) ! save name and density to list @@ -1869,7 +1869,7 @@ contains ! Check if no atom/weight percents were specified or if both atom and ! weight percents were specified if (.not.check_for_node(node_nuc, "ao") .and. & - .not.check_for_node(node_nuc, "wo")) then + .not.check_for_node(node_nuc, "wo")) then call fatal_error("No atom or weight percent specified for nuclide " & &// trim(name)) elseif (check_for_node(node_nuc, "ao") .and. & @@ -1919,7 +1919,7 @@ contains ! Check if no atom/weight percents were specified or if both atom and ! weight percents were specified if (.not.check_for_node(node_ele, "ao") .and. & - .not.check_for_node(node_ele, "wo")) then + .not.check_for_node(node_ele, "wo")) then call fatal_error("No atom or weight percent specified for element " & &// trim(name)) elseif (check_for_node(node_ele, "ao") .and. & @@ -2036,7 +2036,7 @@ contains ! Determine name of S(a,b) table if (.not.check_for_node(node_sab, "name") .or. & - .not.check_for_node(node_sab, "xs")) then + .not.check_for_node(node_sab, "xs")) then call fatal_error("Need to specify and for S(a,b) & &table.") end if @@ -2183,7 +2183,7 @@ contains call get_node_value(doc, "assume_separate", temp_str) temp_str = to_lower(temp_str) if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') & - assume_separate = .true. + assume_separate = .true. end if ! ========================================================================== @@ -2211,7 +2211,7 @@ contains ! Read mesh type temp_str = '' if (check_for_node(node_mesh, "type")) & - call get_node_value(node_mesh, "type", temp_str) + call get_node_value(node_mesh, "type", temp_str) select case (to_lower(temp_str)) case ('rect', 'rectangle', 'rectangular') m % type = LATTICE_RECT @@ -2253,14 +2253,14 @@ contains ! Make sure both upper-right or width were specified if (check_for_node(node_mesh, "upper_right") .and. & - check_for_node(node_mesh, "width")) then + check_for_node(node_mesh, "width")) then call fatal_error("Cannot specify both and on a & &tally mesh.") end if ! Make sure either upper-right or width was specified if (.not.check_for_node(node_mesh, "upper_right") .and. & - .not.check_for_node(node_mesh, "width")) then + .not.check_for_node(node_mesh, "width")) then call fatal_error("Must specify either and on a & &tally mesh.") end if @@ -2268,7 +2268,7 @@ contains if (check_for_node(node_mesh, "width")) then ! Check to ensure width has same dimensions if (get_arraysize_double(node_mesh, "width") /= & - get_arraysize_double(node_mesh, "lower_left")) then + get_arraysize_double(node_mesh, "lower_left")) then call fatal_error("Number of entries on must be the same as & &the number of entries on .") end if @@ -2286,7 +2286,7 @@ contains elseif (check_for_node(node_mesh, "upper_right")) then ! Check to ensure width has same dimensions if (get_arraysize_double(node_mesh, "upper_right") /= & - get_arraysize_double(node_mesh, "lower_left")) then + get_arraysize_double(node_mesh, "lower_left")) then call fatal_error("Number of entries on must be the & &same as the number of entries on .") end if @@ -2349,7 +2349,7 @@ contains ! Copy tally name if (check_for_node(node_tal, "name")) & - call get_node_value(node_tal, "name", t % name) + call get_node_value(node_tal, "name", t % name) ! ======================================================================= ! READ DATA FOR FILTERS @@ -2371,13 +2371,13 @@ contains ! Convert filter type to lower case temp_str = '' if (check_for_node(node_filt, "type")) & - call get_node_value(node_filt, "type", temp_str) + call get_node_value(node_filt, "type", temp_str) temp_str = to_lower(temp_str) ! Determine number of bins if (check_for_node(node_filt, "bins")) then if (trim(temp_str) == 'energy' .or. & - trim(temp_str) == 'energyout') then + trim(temp_str) == 'energyout') then n_words = get_arraysize_double(node_filt, "bins") else n_words = get_arraysize_integer(node_filt, "bins") @@ -2644,7 +2644,7 @@ contains if (starts_with(score_name,trim(MOMENT_STRS(imomstr)))) then n_order_pos = scan(score_name,'0123456789') n_order = int(str_to_int( & - score_name(n_order_pos:(len_trim(score_name)))),4) + score_name(n_order_pos:(len_trim(score_name)))),4) if (n_order > MAX_ANG_ORDER) then ! User requested too many orders; throw a warning and set to the ! maximum order. @@ -2687,7 +2687,7 @@ contains if (starts_with(score_name,trim(MOMENT_STRS(imomstr)))) then n_order_pos = scan(score_name,'0123456789') n_order = int(str_to_int( & - score_name(n_order_pos:(len_trim(score_name)))),4) + score_name(n_order_pos:(len_trim(score_name)))),4) if (n_order > MAX_ANG_ORDER) then ! User requested too many orders; throw a warning and set to the ! maximum order. @@ -2710,7 +2710,7 @@ contains if (starts_with(score_name,trim(MOMENT_N_STRS(imomstr)))) then n_order_pos = scan(score_name,'0123456789') n_order = int(str_to_int( & - score_name(n_order_pos:(len_trim(score_name)))),4) + score_name(n_order_pos:(len_trim(score_name)))),4) if (n_order > MAX_ANG_ORDER) then ! User requested too many orders; throw a warning and set to the ! maximum order. @@ -3032,7 +3032,7 @@ contains ! Get the trigger type - "variance", "std_dev" or "rel_err" if (check_for_node(node_trigger, "type")) then call get_node_value(node_trigger, "type", temp_str) - temp_str = to_lower(temp_str) + temp_str = to_lower(temp_str) else call fatal_error("Must specify trigger type for tally " // & trim(to_str(t % id)) // " in tally XML file.") @@ -3131,7 +3131,7 @@ contains ! Increment the overall trigger index trig_ind = trig_ind + 1 - end if + end if end do SCORE_LOOP ! Deallocate the list of tally scores used to create triggers @@ -3249,7 +3249,7 @@ contains ! Copy plot type temp_str = 'slice' if (check_for_node(node_plot, "type")) & - call get_node_value(node_plot, "type", temp_str) + call get_node_value(node_plot, "type", temp_str) temp_str = to_lower(temp_str) select case (trim(temp_str)) case ("slice") @@ -3264,7 +3264,7 @@ contains ! Set output file path filename = trim(to_str(pl % id)) // "_plot" if (check_for_node(node_plot, "filename")) & - call get_node_value(node_plot, "filename", filename) + call get_node_value(node_plot, "filename", filename) select case (pl % type) case (PLOT_TYPE_SLICE) pl % path_plot = trim(path_input) // trim(filename) // ".ppm" @@ -3309,7 +3309,7 @@ contains if (pl % type == PLOT_TYPE_SLICE) then temp_str = 'xy' if (check_for_node(node_plot, "basis")) & - call get_node_value(node_plot, "basis", temp_str) + call get_node_value(node_plot, "basis", temp_str) temp_str = to_lower(temp_str) select case (trim(temp_str)) case ("xy") @@ -3364,7 +3364,7 @@ contains ! Copy plot color type and initialize all colors randomly temp_str = "cell" if (check_for_node(node_plot, "color")) & - call get_node_value(node_plot, "color", temp_str) + call get_node_value(node_plot, "color", temp_str) temp_str = to_lower(temp_str) select case (trim(temp_str)) case ("cell") @@ -3478,7 +3478,7 @@ contains ! Ensure that there is a linewidth for this meshlines specification if (check_for_node(node_meshlines, "linewidth")) then call get_node_value(node_meshlines, "linewidth", & - pl % meshlines_width) + pl % meshlines_width) else call fatal_error("Must specify a linewidth for meshlines & &specification in plot " // trim(to_str(pl % id))) @@ -3494,7 +3494,7 @@ contains end if call get_node_array(node_meshlines, "color", & - pl % meshlines_color % rgb) + pl % meshlines_color % rgb) else pl % meshlines_color % rgb = (/ 0, 0, 0 /) @@ -3520,8 +3520,8 @@ contains end if i_mesh = cmfd_tallies(1) % & - filters(cmfd_tallies(1) % find_filter(FILTER_MESH)) % & - int_bins(1) + filters(cmfd_tallies(1) % find_filter(FILTER_MESH)) % & + int_bins(1) pl % meshlines_mesh => meshes(i_mesh) case ('entropy') @@ -3680,9 +3680,9 @@ contains ! Check if cross_sections.xml exists inquire(FILE=path_cross_sections, EXIST=file_exists) if (.not. file_exists) then - ! Could not find cross_sections.xml file - call fatal_error("Cross sections XML file '" & - &// trim(path_cross_sections) // "' does not exist!") + ! Could not find cross_sections.xml file + call fatal_error("Cross sections XML file '" & + &// trim(path_cross_sections) // "' does not exist!") end if call write_message("Reading cross sections XML file...", 5) @@ -3691,28 +3691,28 @@ contains call open_xmldoc(doc, path_cross_sections) if (check_for_node(doc, "directory")) then - ! Copy directory information if present - call get_node_value(doc, "directory", directory) + ! Copy directory information if present + call get_node_value(doc, "directory", directory) else - ! If no directory is listed in cross_sections.xml, by default select the - ! directory in which the cross_sections.xml file resides - i = index(path_cross_sections, "/", BACK=.true.) - directory = path_cross_sections(1:i) + ! If no directory is listed in cross_sections.xml, by default select the + ! directory in which the cross_sections.xml file resides + i = index(path_cross_sections, "/", BACK=.true.) + directory = path_cross_sections(1:i) end if ! determine whether binary/ascii temp_str = '' if (check_for_node(doc, "filetype")) & - call get_node_value(doc, "filetype", temp_str) + call get_node_value(doc, "filetype", temp_str) if (trim(temp_str) == 'ascii') then - filetype = ASCII + filetype = ASCII elseif (trim(temp_str) == 'binary') then - filetype = BINARY + filetype = BINARY elseif (len_trim(temp_str) == 0) then - filetype = ASCII + filetype = ASCII else - call fatal_error("Unknown filetype in cross_sections.xml: " & - &// trim(temp_str)) + call fatal_error("Unknown filetype in cross_sections.xml: " & + &// trim(temp_str)) end if ! copy default record length and entries for binary files @@ -3727,83 +3727,83 @@ contains ! Allocate xs_listings array if (n_listings == 0) then - call fatal_error("No ACE table listings present in cross_sections.xml & - &file!") + call fatal_error("No ACE table listings present in cross_sections.xml & + &file!") else - allocate(xs_listings(n_listings)) + allocate(xs_listings(n_listings)) end if do i = 1, n_listings - listing => xs_listings(i) + listing => xs_listings(i) - ! Get pointer to ace table XML node - call get_list_item(node_ace_list, i, node_ace) + ! Get pointer to ace table XML node + call get_list_item(node_ace_list, i, node_ace) - ! copy a number of attributes - call get_node_value(node_ace, "name", listing % name) - if (check_for_node(node_ace, "alias")) & - call get_node_value(node_ace, "alias", listing % alias) - call get_node_value(node_ace, "zaid", listing % zaid) - call get_node_value(node_ace, "awr", listing % awr) - if (check_for_node(node_ace, "temperature")) & - call get_node_value(node_ace, "temperature", listing % kT) - call get_node_value(node_ace, "location", listing % location) + ! copy a number of attributes + call get_node_value(node_ace, "name", listing % name) + if (check_for_node(node_ace, "alias")) & + call get_node_value(node_ace, "alias", listing % alias) + call get_node_value(node_ace, "zaid", listing % zaid) + call get_node_value(node_ace, "awr", listing % awr) + if (check_for_node(node_ace, "temperature")) & + call get_node_value(node_ace, "temperature", listing % kT) + call get_node_value(node_ace, "location", listing % location) - ! determine type of cross section - if (ends_with(listing % name, 'c')) then - listing % type = ACE_NEUTRON - elseif (ends_with(listing % name, 't')) then - listing % type = ACE_THERMAL - end if + ! determine type of cross section + if (ends_with(listing % name, 'c')) then + listing % type = ACE_NEUTRON + elseif (ends_with(listing % name, 't')) then + listing % type = ACE_THERMAL + end if - ! set filetype, record length, and number of entries - if (check_for_node(node_ace, "filetype")) then - temp_str = '' - call get_node_value(node_ace, "filetype", temp_str) - if (temp_str == 'ascii') then - listing % filetype = ASCII - else if (temp_str == 'binary') then - listing % filetype = BINARY - end if - else - listing % filetype = filetype - end if + ! set filetype, record length, and number of entries + if (check_for_node(node_ace, "filetype")) then + temp_str = '' + call get_node_value(node_ace, "filetype", temp_str) + if (temp_str == 'ascii') then + listing % filetype = ASCII + else if (temp_str == 'binary') then + listing % filetype = BINARY + end if + else + listing % filetype = filetype + end if - ! Set record length and entries for binary files - if (filetype == BINARY) then - listing % recl = recl - listing % entries = entries - end if + ! Set record length and entries for binary files + if (filetype == BINARY) then + listing % recl = recl + listing % entries = entries + end if - ! determine metastable state - if (.not.check_for_node(node_ace, "metastable")) then - listing % metastable = .false. - else - listing % metastable = .true. - end if + ! determine metastable state + if (.not.check_for_node(node_ace, "metastable")) then + listing % metastable = .false. + else + listing % metastable = .true. + end if - ! determine path of cross section table - if (check_for_node(node_ace, "path")) then - call get_node_value(node_ace, "path", temp_str) - else - call fatal_error("Path missing for isotope " // listing % name) - end if + ! determine path of cross section table + if (check_for_node(node_ace, "path")) then + call get_node_value(node_ace, "path", temp_str) + else + call fatal_error("Path missing for isotope " // listing % name) + end if - if (starts_with(temp_str, '/')) then - listing % path = trim(temp_str) - else - if (ends_with(directory,'/')) then - listing % path = trim(directory) // trim(temp_str) - else - listing % path = trim(directory) // '/' // trim(temp_str) - end if - end if + if (starts_with(temp_str, '/')) then + listing % path = trim(temp_str) + else + if (ends_with(directory,'/')) then + listing % path = trim(directory) // trim(temp_str) + else + listing % path = trim(directory) // '/' // trim(temp_str) + end if + end if - ! create dictionary entry for both name and alias - call xs_listing_dict % add_key(to_lower(listing % name), i) - if (check_for_node(node_ace, "alias")) then - call xs_listing_dict % add_key(to_lower(listing % alias), i) - end if + ! create dictionary entry for both name and alias + call xs_listing_dict % add_key(to_lower(listing % name), i) + if (check_for_node(node_ace, "alias")) then + call xs_listing_dict % add_key(to_lower(listing % alias), i) + end if end do ! Check that 0K nuclides are listed in the cross_sections.xml file diff --git a/src/list_header.F90 b/src/list_header.F90 index 9d6c13b2ca..27721a7a67 100644 --- a/src/list_header.F90 +++ b/src/list_header.F90 @@ -46,7 +46,7 @@ module list_header private integer :: count = 0 ! Number of elements in list - ! Used in get_item for fast sequential lookups + ! Used in get_item for fast sequential lookups integer :: last_index = huge(0) type(ListElemInt), pointer :: last_elem => null() @@ -68,7 +68,7 @@ module list_header private integer :: count = 0 ! Number of elements in list - ! Used in get_item for fast sequential lookups + ! Used in get_item for fast sequential lookups integer :: last_index = huge(0) type(ListElemReal), pointer :: last_elem => null() @@ -90,7 +90,7 @@ module list_header private integer :: count = 0 ! Number of elements in list - ! Used in get_item for fast sequential lookups + ! Used in get_item for fast sequential lookups integer :: last_index = huge(0) type(ListElemChar), pointer :: last_elem => null() @@ -199,7 +199,7 @@ contains type(ListElemInt), pointer :: current => null() type(ListElemInt), pointer :: next => null() - + if (this % count > 0) then current => this % head do while (associated(current)) @@ -225,7 +225,7 @@ contains type(ListElemReal), pointer :: current => null() type(ListElemReal), pointer :: next => null() - + if (this % count > 0) then current => this % head do while (associated(current)) @@ -251,7 +251,7 @@ contains type(ListElemChar), pointer :: current => null() type(ListElemChar), pointer :: next => null() - + if (this % count > 0) then current => this % head do while (associated(current)) @@ -519,7 +519,7 @@ contains ! Allocate new element allocate(new_elem) new_elem % data = data - + ! Put it before the i-th element new_elem % prev => elem % prev new_elem % next => elem @@ -574,7 +574,7 @@ contains ! Allocate new element allocate(new_elem) new_elem % data = data - + ! Put it before the i-th element new_elem % prev => elem % prev new_elem % next => elem @@ -629,7 +629,7 @@ contains ! Allocate new element allocate(new_elem) new_elem % data = data - + ! Put it before the i-th element new_elem % prev => elem % prev new_elem % next => elem diff --git a/src/main.F90 b/src/main.F90 index e4a33f0096..aff1e21146 100644 --- a/src/main.F90 +++ b/src/main.F90 @@ -1,13 +1,12 @@ program main use constants - use eigenvalue, only: run_eigenvalue use finalize, only: finalize_run - use fixed_source, only: run_fixedsource use global use initialize, only: initialize_run use particle_restart, only: run_particle_restart use plot, only: run_plot + use simulation, only: run_simulation implicit none @@ -16,10 +15,8 @@ program main ! start problem based on mode select case (run_mode) - case (MODE_FIXEDSOURCE) - call run_fixedsource() - case (MODE_EIGENVALUE) - call run_eigenvalue() + case (MODE_FIXEDSOURCE, MODE_EIGENVALUE) + call run_simulation() case (MODE_PLOTTING) call run_plot() case (MODE_PARTICLE) diff --git a/src/math.F90 b/src/math.F90 index 58406bda18..826172fa24 100644 --- a/src/math.F90 +++ b/src/math.F90 @@ -143,20 +143,20 @@ contains pnx = 7.875_8 * (x ** 5) - 8.75_8 * x * x * x + 1.875 * x case(6) pnx = 14.4375_8 * (x ** 6) - 19.6875_8 * (x ** 4) + & - 6.5625_8 * x * x - 0.3125_8 + 6.5625_8 * x * x - 0.3125_8 case(7) pnx = 26.8125_8 * (x ** 7) - 43.3125_8 * (x ** 5) + & - 19.6875_8 * x * x * x - 2.1875_8 * x + 19.6875_8 * x * x * x - 2.1875_8 * x case(8) pnx = 50.2734375_8 * (x ** 8) - 93.84375_8 * (x ** 6) + & - 54.140625 * (x ** 4) - 9.84375_8 * x * x + 0.2734375_8 + 54.140625 * (x ** 4) - 9.84375_8 * x * x + 0.2734375_8 case(9) pnx = 94.9609375_8 * (x ** 9) - 201.09375_8 * (x ** 7) + & - 140.765625_8 * (x ** 5) - 36.09375_8 * x * x * x + 2.4609375_8 * x + 140.765625_8 * (x ** 5) - 36.09375_8 * x * x * x + 2.4609375_8 * x case(10) pnx = 180.42578125_8 * (x ** 10) - 427.32421875_8 * (x ** 8) + & - 351.9140625_8 * (x ** 6) - 117.3046875_8 * (x ** 4) + & - 13.53515625_8 * x * x - 0.24609375_8 + 351.9140625_8 * (x ** 6) - 117.3046875_8 * (x ** 4) + & + 13.53515625_8 * x * x - 0.24609375_8 case default pnx = ONE ! correct for case(0), incorrect for the rest end select @@ -215,12 +215,12 @@ contains rn(2) = 1.93649167310371_8 * w*(w2m1) * sin(TWO*phi) ! l = 3, m = -1 rn(3) = 0.408248290463863_8*sqrt(w2m1)*((15.0_8/TWO)*w**2 - THREE/TWO) * & - sin(phi) + sin(phi) ! l = 3, m = 0 rn(4) = 2.5_8 * w**3 - 1.5_8 * w ! l = 3, m = 1 rn(5) = 0.408248290463863_8*sqrt(w2m1)*((15.0_8/TWO)*w**2 - THREE/TWO) * & - cos(phi) + cos(phi) ! l = 3, m = 2 rn(6) = 1.93649167310371_8 * w*(w2m1) * cos(TWO*phi) ! l = 3, m = 3 @@ -232,18 +232,18 @@ contains rn(2) = 2.09165006633519_8 * w*(w2m1)**(THREE/TWO) * sin(THREE* phi) ! l = 4, m = -2 rn(3) = 0.074535599249993_8 * (w2m1)*((105.0_8/TWO)*w**2 - 15.0_8/TWO) * & - sin(TWO*phi) + sin(TWO*phi) ! l = 4, m = -1 - rn(4) = 0.316227766016838_8*sqrt(w2m1)*((35.0_8/TWO)*w**3 - 15.0_8/TWO*w) * & - sin(phi) + rn(4) = 0.316227766016838_8*sqrt(w2m1)*((35.0_8/TWO)*w**3 - 15.0_8/TWO*w)& + * sin(phi) ! l = 4, m = 0 rn(5) = 4.375_8 * w**4 - 3.75_8 * w**2 + 0.375_8 ! l = 4, m = 1 - rn(6) = 0.316227766016838_8*sqrt(w2m1)*((35.0_8/TWO)*w**3 - 15.0_8/TWO*w) * & - cos(phi) + rn(6) = 0.316227766016838_8*sqrt(w2m1)*((35.0_8/TWO)*w**3 - 15.0_8/TWO*w)& + * cos(phi) ! l = 4, m = 2 rn(7) = 0.074535599249993_8 * (w2m1)*((105.0_8/TWO)*w**2 - 15.0_8/TWO) * & - cos(TWO*phi) + cos(TWO*phi) ! l = 4, m = 3 rn(8) = 2.09165006633519_8 * w*(w2m1)**(THREE/TWO) * cos(THREE* phi) ! l = 4, m = 4 @@ -255,24 +255,26 @@ contains rn(2) = 2.21852991866236_8 * w*(w2m1)**2 * sin(4.0_8*phi) ! l = 5, m = -3 rn(3) = 0.00996023841111995_8 * (w2m1)**(THREE/TWO)* & - ((945.0_8 /TWO)*w**2 - 105.0_8/TWO) * sin(THREE*phi) + ((945.0_8 /TWO)*w**2 - 105.0_8/TWO) * sin(THREE*phi) ! l = 5, m = -2 - rn(4) = 0.0487950036474267_8 * (w2m1)*((315.0_8/TWO)*w**3 - 105.0_8/TWO*w) * & - sin(TWO*phi) + rn(4) = 0.0487950036474267_8 * (w2m1) & + * ((315.0_8/TWO)*w**3 - 105.0_8/TWO*w) * sin(TWO*phi) ! l = 5, m = -1 rn(5) = 0.258198889747161_8*sqrt(w2m1)* & - ((315.0_8/8.0_8)*w**4 - 105.0_8/4.0_8 * w**2 + 15.0_8/8.0_8) * sin(phi) + ((315.0_8/8.0_8)*w**4 - 105.0_8/4.0_8 * w**2 + 15.0_8/8.0_8) & + * sin(phi) ! l = 5, m = 0 rn(6) = 7.875_8 * w**5 - 8.75_8 * w**3 + 1.875_8 * w ! l = 5, m = 1 rn(7) = 0.258198889747161_8*sqrt(w2m1)* & - ((315.0_8/8.0_8)*w**4 - 105.0_8/4.0_8 * w**2 + 15.0_8/8.0_8) * cos(phi) + ((315.0_8/8.0_8)*w**4 - 105.0_8/4.0_8 * w**2 + 15.0_8/8.0_8) & + * cos(phi) ! l = 5, m = 2 rn(8) = 0.0487950036474267_8 * (w2m1)* & - ((315.0_8/TWO)*w**3 - 105.0_8/TWO*w) * cos(TWO*phi) + ((315.0_8/TWO)*w**3 - 105.0_8/TWO*w) * cos(TWO*phi) ! l = 5, m = 3 rn(9) = 0.00996023841111995_8 * (w2m1)**(THREE/TWO)* & - ((945.0_8 /TWO)*w**2 - 105.0_8/TWO) * cos(THREE*phi) + ((945.0_8 /TWO)*w**2 - 105.0_8/TWO) * cos(THREE*phi) ! l = 5, m = 4 rn(10) = 2.21852991866236_8 * w*(w2m1)**2 * cos(4.0_8*phi) ! l = 5, m = 5 @@ -284,30 +286,34 @@ contains rn(2) = 2.32681380862329_8 * w*(w2m1)**(5.0_8/TWO) * sin(5.0_8*phi) ! l = 6, m = -4 rn(3) = 0.00104990131391452_8 * (w2m1)**2 * & - ((10395.0_8/TWO)*w**2 - 945.0_8/TWO) * sin(4.0_8*phi) + ((10395.0_8/TWO)*w**2 - 945.0_8/TWO) * sin(4.0_8*phi) ! l = 6, m = -3 rn(4) = 0.00575054632785295_8 * (w2m1)**(THREE/TWO) * & - ((3465.0_8/TWO)*w**3 - 945.0_8/TWO*w) * sin(THREE*phi) + ((3465.0_8/TWO)*w**3 - 945.0_8/TWO*w) * sin(THREE*phi) ! l = 6, m = -2 rn(5) = 0.0345032779671177_8 * (w2m1) * & - ((3465.0_8/8.0_8)*w**4 - 945.0_8/4.0_8 * w**2 + 105.0_8/8.0_8) * sin(TWO*phi) + ((3465.0_8/8.0_8)*w**4 - 945.0_8/4.0_8 * w**2 + 105.0_8/8.0_8) & + * sin(TWO*phi) ! l = 6, m = -1 rn(6) = 0.218217890235992_8*sqrt(w2m1) * & - ((693.0_8/8.0_8)*w**5- 315.0_8/4.0_8 * w**3 + (105.0_8/8.0_8)*w) * sin(phi) + ((693.0_8/8.0_8)*w**5- 315.0_8/4.0_8 * w**3 + (105.0_8/8.0_8)*w) & + * sin(phi) ! l = 6, m = 0 rn(7) = 14.4375_8 * w**6 - 19.6875_8 * w**4 + 6.5625_8 * w**2 - 0.3125_8 ! l = 6, m = 1 rn(8) = 0.218217890235992_8*sqrt(w2m1) * & - ((693.0_8/8.0_8)*w**5- 315.0_8/4.0_8 * w**3 + (105.0_8/8.0_8)*w) * cos(phi) + ((693.0_8/8.0_8)*w**5- 315.0_8/4.0_8 * w**3 + (105.0_8/8.0_8)*w) & + * cos(phi) ! l = 6, m = 2 rn(9) = 0.0345032779671177_8 * (w2m1) * & - ((3465.0_8/8.0_8)*w**4 -945.0_8/4.0_8 * w**2 + 105.0_8/8.0_8) * cos(TWO*phi) + ((3465.0_8/8.0_8)*w**4 -945.0_8/4.0_8 * w**2 + 105.0_8/8.0_8) & + * cos(TWO*phi) ! l = 6, m = 3 rn(10) = 0.00575054632785295_8 * (w2m1)**(THREE/TWO) * & - ((3465.0_8/TWO)*w**3 - 945.0_8/TWO*w) * cos(THREE*phi) + ((3465.0_8/TWO)*w**3 - 945.0_8/TWO*w) * cos(THREE*phi) ! l = 6, m = 4 rn(11) = 0.00104990131391452_8 * (w2m1)**2 * & - ((10395.0_8/TWO)*w**2 - 945.0_8/TWO) * cos(4.0_8*phi) + ((10395.0_8/TWO)*w**2 - 945.0_8/TWO) * cos(4.0_8*phi) ! l = 6, m = 5 rn(12) = 2.32681380862329_8 * w*(w2m1)**(5.0_8/TWO) * cos(5.0_8*phi) ! l = 6, m = 6 @@ -319,42 +325,43 @@ contains rn(2) = 2.42182459624969_8 * w*(w2m1)**3 * sin(6.0_8*phi) ! l = 7, m = -5 rn(3) = 9.13821798555235d-5*(w2m1)**(5.0_8/TWO)* & - ((135135.0_8/TWO)*w**2 - 10395.0_8/TWO) * sin(5.0_8*phi) + ((135135.0_8/TWO)*w**2 - 10395.0_8/TWO) * sin(5.0_8*phi) ! l = 7, m = -4 rn(4) = 0.000548293079133141_8 * (w2m1)**2* & - ((45045.0_8/TWO)*w**3 - 10395.0_8/TWO*w) * sin(4.0_8*phi) + ((45045.0_8/TWO)*w**3 - 10395.0_8/TWO*w) * sin(4.0_8*phi) ! l = 7, m = -3 rn(5) = 0.00363696483726654_8 * (w2m1)**(THREE/TWO)* & - ((45045.0_8/8.0_8)*w**4 - 10395.0_8/4.0_8 * w**2 + 945.0_8/8.0_8)* & - sin(THREE*phi) + ((45045.0_8/8.0_8)*w**4 - 10395.0_8/4.0_8 * w**2 + 945.0_8/8.0_8)* & + sin(THREE*phi) ! l = 7, m = -2 rn(6) = 0.025717224993682_8 * (w2m1)* & - ((9009.0_8/8.0_8)*w**5 -3465.0_8/4.0_8 * w**3 + (945.0_8/8.0_8)*w)* & - sin(TWO*phi) + ((9009.0_8/8.0_8)*w**5 -3465.0_8/4.0_8 * w**3 + (945.0_8/8.0_8)*w)* & + sin(TWO*phi) ! l = 7, m = -1 rn(7) = 0.188982236504614_8*sqrt(w2m1)* & - ((3003.0_8/16.0_8)*w**6 - 3465.0_8/16.0_8 * w**4 + & - (945.0_8/16.0_8)*w**2 - 35.0_8/16.0_8) * sin(phi) + ((3003.0_8/16.0_8)*w**6 - 3465.0_8/16.0_8 * w**4 + & + (945.0_8/16.0_8)*w**2 - 35.0_8/16.0_8) * sin(phi) ! l = 7, m = 0 - rn(8) = 26.8125_8 * w**7 - 43.3125_8 * w**5 + 19.6875_8 * w**3 -2.1875_8 * w + rn(8) = 26.8125_8 * w**7 - 43.3125_8 * w**5 + 19.6875_8 * w**3 -2.1875_8 & + * w ! l = 7, m = 1 rn(9) = 0.188982236504614_8*sqrt(w2m1)* & - ((3003.0_8/16.0_8)*w**6 - 3465.0_8/16.0_8 * w**4 + & - (945.0_8/16.0_8)*w**2 - 35.0_8/16.0_8) * cos(phi) + ((3003.0_8/16.0_8)*w**6 - 3465.0_8/16.0_8 * w**4 + & + (945.0_8/16.0_8)*w**2 - 35.0_8/16.0_8) * cos(phi) ! l = 7, m = 2 rn(10) = 0.025717224993682_8 * (w2m1)* & - ((9009.0_8/8.0_8)*w**5 -3465.0_8/4.0_8 * w**3 + (945.0_8/8.0_8)*w)* & - cos(TWO*phi) + ((9009.0_8/8.0_8)*w**5 -3465.0_8/4.0_8 * w**3 + (945.0_8/8.0_8)*w)* & + cos(TWO*phi) ! l = 7, m = 3 rn(11) = 0.00363696483726654_8 * (w2m1)**(THREE/TWO)* & - ((45045.0_8/8.0_8)*w**4 - 10395.0_8/4.0_8 * w**2 + 945.0_8/8.0_8)* & - cos(THREE*phi) + ((45045.0_8/8.0_8)*w**4 - 10395.0_8/4.0_8 * w**2 + 945.0_8/8.0_8)* & + cos(THREE*phi) ! l = 7, m = 4 rn(12) = 0.000548293079133141_8 * (w2m1)**2 * & - ((45045.0_8/TWO)*w**3 - 10395.0_8/TWO*w) * cos(4.0_8*phi) + ((45045.0_8/TWO)*w**3 - 10395.0_8/TWO*w) * cos(4.0_8*phi) ! l = 7, m = 5 rn(13) = 9.13821798555235d-5*(w2m1)**(5.0_8/TWO)* & - ((135135.0_8/TWO)*w**2 - 10395.0_8/TWO) * cos(5.0_8*phi) + ((135135.0_8/TWO)*w**2 - 10395.0_8/TWO) * cos(5.0_8*phi) ! l = 7, m = 6 rn(14) = 2.42182459624969_8 * w*(w2m1)**3 * cos(6.0_8*phi) ! l = 7, m = 7 @@ -366,48 +373,50 @@ contains rn(2) = 2.50682661696018_8 * w*(w2m1)**(7.0_8/TWO) * sin(7.0_8*phi) ! l = 8, m = -6 rn(3) = 6.77369783729086d-6*(w2m1)**3* & - ((2027025.0_8/TWO)*w**2 - 135135.0_8/TWO) * sin(6.0_8*phi) + ((2027025.0_8/TWO)*w**2 - 135135.0_8/TWO) * sin(6.0_8*phi) ! l = 8, m = -5 rn(4) = 4.38985792528482d-5*(w2m1)**(5.0_8/TWO)* & - ((675675.0_8/TWO)*w**3 - 135135.0_8/TWO*w) * sin(5.0_8*phi) + ((675675.0_8/TWO)*w**3 - 135135.0_8/TWO*w) * sin(5.0_8*phi) ! l = 8, m = -4 rn(5) = 0.000316557156832328_8 * (w2m1)**2* & - ((675675.0_8/8.0_8)*w**4 - 135135.0_8/4.0_8 * w**2 + 10395.0_8/8.0_8) * sin(4.0_8*phi) + ((675675.0_8/8.0_8)*w**4 - 135135.0_8/4.0_8 * w**2 & + + 10395.0_8/8.0_8) * sin(4.0_8*phi) ! l = 8, m = -3 rn(6) = 0.00245204119306875_8 * (w2m1)**(THREE/TWO)* & - ((135135.0_8/8.0_8)*w**5 - 45045.0_8/4.0_8 * w**3 + (10395.0_8/8.0_8)*w) * sin(THREE*phi) + ((135135.0_8/8.0_8)*w**5 - 45045.0_8/4.0_8 * w**3 & + + (10395.0_8/8.0_8)*w) * sin(THREE*phi) ! l = 8, m = -2 rn(7) = 0.0199204768222399_8 * (w2m1)* & - ((45045.0_8/16.0_8)*w**6- 45045.0_8/16.0_8 * w**4 + & - (10395.0_8/16.0_8)*w**2 - 315.0_8/16.0_8) * sin(TWO*phi) + ((45045.0_8/16.0_8)*w**6- 45045.0_8/16.0_8 * w**4 + & + (10395.0_8/16.0_8)*w**2 - 315.0_8/16.0_8) * sin(TWO*phi) ! l = 8, m = -1 rn(8) = 0.166666666666667_8*sqrt(w2m1)* & - ((6435.0_8/16.0_8)*w**7 - 9009.0_8/16.0_8 * w**5 + & - (3465.0_8/16.0_8)*w**3 - 315.0_8/16.0_8 * w) * sin(phi) + ((6435.0_8/16.0_8)*w**7 - 9009.0_8/16.0_8 * w**5 + & + (3465.0_8/16.0_8)*w**3 - 315.0_8/16.0_8 * w) * sin(phi) ! l = 8, m = 0 rn(9) = 50.2734375_8 * w**8 - 93.84375_8 * w**6 + 54.140625_8 * w**4 -& - 9.84375_8 * w**2 + 0.2734375_8 + 9.84375_8 * w**2 + 0.2734375_8 ! l = 8, m = 1 rn(10) = 0.166666666666667_8*sqrt(w2m1)* & - ((6435.0_8/16.0_8)*w**7 - 9009.0_8/16.0_8 * w**5 + & - (3465.0_8/16.0_8)*w**3 - 315.0_8/16.0_8 * w) * cos(phi) + ((6435.0_8/16.0_8)*w**7 - 9009.0_8/16.0_8 * w**5 + & + (3465.0_8/16.0_8)*w**3 - 315.0_8/16.0_8 * w) * cos(phi) ! l = 8, m = 2 rn(11) = 0.0199204768222399_8 * (w2m1)*((45045.0_8/16.0_8)*w**6- & - 45045.0_8/16.0_8 * w**4 + (10395.0_8/16.0_8)*w**2 - & - 315.0_8/16.0_8) * cos(TWO*phi) + 45045.0_8/16.0_8 * w**4 + (10395.0_8/16.0_8)*w**2 - & + 315.0_8/16.0_8) * cos(TWO*phi) ! l = 8, m = 3 rn(12) = 0.00245204119306875_8 * (w2m1)**(THREE/TWO)* & - ((135135.0_8/8.0_8)*w**5 - 45045.0_8/4.0_8 * w**3 + & - (10395.0_8/8.0_8)*w) * cos(THREE*phi) + ((135135.0_8/8.0_8)*w**5 - 45045.0_8/4.0_8 * w**3 + & + (10395.0_8/8.0_8)*w) * cos(THREE*phi) ! l = 8, m = 4 rn(13) = 0.000316557156832328_8 * (w2m1)**2*((675675.0_8/8.0_8)*w**4 - & - 135135.0_8/4.0_8 * w**2 + 10395.0_8/8.0_8) * cos(4.0_8*phi) + 135135.0_8/4.0_8 * w**2 + 10395.0_8/8.0_8) * cos(4.0_8*phi) ! l = 8, m = 5 - rn(14) = 4.38985792528482d-5*(w2m1)**(5.0_8/TWO)*((675675.0_8/TWO)*w**3 - & - 135135.0_8/TWO*w) * cos(5.0_8*phi) + rn(14) = 4.38985792528482d-5*(w2m1)**(5.0_8/TWO)*((675675.0_8/TWO)*w**3 -& + 135135.0_8/TWO*w) * cos(5.0_8*phi) ! l = 8, m = 6 rn(15) = 6.77369783729086d-6*(w2m1)**3*((2027025.0_8/TWO)*w**2 - & - 135135.0_8/TWO) * cos(6.0_8*phi) + 135135.0_8/TWO) * cos(6.0_8*phi) ! l = 8, m = 7 rn(16) = 2.50682661696018_8 * w*(w2m1)**(7.0_8/TWO) * cos(7.0_8*phi) ! l = 8, m = 8 @@ -419,54 +428,56 @@ contains rn(2) = 2.58397773170915_8 * w*(w2m1)**4 * sin(8.0_8*phi) ! l = 9, m = -7 rn(3) = 4.37240315267812d-7*(w2m1)**(7.0_8/TWO)* & - ((34459425.0_8/TWO)*w**2 - 2027025.0_8/TWO) * sin(7.0_8*phi) + ((34459425.0_8/TWO)*w**2 - 2027025.0_8/TWO) * sin(7.0_8*phi) ! l = 9, m = -6 rn(4) = 3.02928976464514d-6*(w2m1)**3* & - ((11486475.0_8/TWO)*w**3 - 2027025.0_8/TWO*w) * sin(6.0_8*phi) + ((11486475.0_8/TWO)*w**3 - 2027025.0_8/TWO*w) * sin(6.0_8*phi) ! l = 9, m = -5 rn(5) = 2.34647776186144d-5*(w2m1)**(5.0_8/TWO)* & - ((11486475.0_8/8.0_8)*w**4 - 2027025.0_8/4.0_8 * w**2 + & - 135135.0_8/8.0_8) * sin(5.0_8*phi) + ((11486475.0_8/8.0_8)*w**4 - 2027025.0_8/4.0_8 * w**2 + & + 135135.0_8/8.0_8) * sin(5.0_8*phi) ! l = 9, m = -4 rn(6) = 0.000196320414650061_8 * (w2m1)**2*((2297295.0_8/8.0_8)*w**5 - & - 675675.0_8/4.0_8 * w**3 + (135135.0_8/8.0_8)*w) * sin(4.0_8*phi) + 675675.0_8/4.0_8 * w**3 + (135135.0_8/8.0_8)*w) * sin(4.0_8*phi) ! l = 9, m = -3 rn(7) = 0.00173385495536766_8 * (w2m1)**(THREE/TWO)* & - ((765765.0_8/16.0_8)*w**6 - 675675.0_8/16.0_8 * w**4 + & - (135135.0_8/16.0_8)*w**2 - 3465.0_8/16.0_8) * sin(THREE*phi) + ((765765.0_8/16.0_8)*w**6 - 675675.0_8/16.0_8 * w**4 + & + (135135.0_8/16.0_8)*w**2 - 3465.0_8/16.0_8) * sin(THREE*phi) ! l = 9, m = -2 rn(8) = 0.0158910431540932_8 * (w2m1)*((109395.0_8/16.0_8)*w**7- & - 135135.0_8/16.0_8 * w**5 + (45045.0_8/16.0_8)*w**3 - 3465.0_8/16.0_8 * w)* & - sin(TWO*phi) + 135135.0_8/16.0_8 * w**5 + (45045.0_8/16.0_8)*w**3 & + - 3465.0_8/16.0_8 * w) * sin(TWO*phi) ! l = 9, m = -1 rn(9) = 0.149071198499986_8*sqrt(w2m1)*((109395.0_8/128.0_8)*w**8 - & - 45045.0_8/32.0_8 * w**6 + (45045.0_8/64.0_8)*w**4 - 3465.0_8/32.0_8 * w**2 + 315.0_8/128.0_8) * sin(phi) + 45045.0_8/32.0_8 * w**6 + (45045.0_8/64.0_8)*w**4 - 3465.0_8/32.0_8 & + * w**2 + 315.0_8/128.0_8) * sin(phi) ! l = 9, m = 0 rn(10) = 94.9609375_8 * w**9 - 201.09375_8 * w**7 + 140.765625_8 * w**5- & - 36.09375_8 * w**3 + 2.4609375_8 * w + 36.09375_8 * w**3 + 2.4609375_8 * w ! l = 9, m = 1 rn(11) = 0.149071198499986_8*sqrt(w2m1)*((109395.0_8/128.0_8)*w**8 - & - 45045.0_8/32.0_8 * w**6 + (45045.0_8/64.0_8)*w**4 -3465.0_8/32.0_8 * w**2 + 315.0_8/128.0_8) * cos(phi) + 45045.0_8/32.0_8 * w**6 + (45045.0_8/64.0_8)*w**4 -3465.0_8/32.0_8 & + * w**2 + 315.0_8/128.0_8) * cos(phi) ! l = 9, m = 2 rn(12) = 0.0158910431540932_8 * (w2m1)*((109395.0_8/16.0_8)*w**7 - & - 135135.0_8/16.0_8 * w**5 + (45045.0_8/16.0_8)*w**3 - 3465.0_8/ 16.0_8 * w) * & - cos(TWO*phi) + 135135.0_8/16.0_8 * w**5 + (45045.0_8/16.0_8)*w**3 & + - 3465.0_8/ 16.0_8 * w) * cos(TWO*phi) ! l = 9, m = 3 - rn(13) = 0.00173385495536766_8 * (w2m1)**(THREE/TWO)*((765765.0_8/16.0_8)*w**6 - & - 675675.0_8/16.0_8 * w**4 + (135135.0_8/16.0_8)*w**2 - 3465.0_8/16.0_8)* & - cos(THREE*phi) + rn(13) = 0.00173385495536766_8 * (w2m1)**(THREE/TWO)*((765765.0_8/16.0_8)& + *w**6 - 675675.0_8/16.0_8 * w**4 + (135135.0_8/16.0_8)*w**2 & + - 3465.0_8/16.0_8)* cos(THREE*phi) ! l = 9, m = 4 rn(14) = 0.000196320414650061_8 * (w2m1)**2*((2297295.0_8/8.0_8)*w**5 - & - 675675.0_8/4.0_8 * w**3 + (135135.0_8/8.0_8)*w) * cos(4.0_8*phi) + 675675.0_8/4.0_8 * w**3 + (135135.0_8/8.0_8)*w) * cos(4.0_8*phi) ! l = 9, m = 5 rn(15) = 2.34647776186144d-5*(w2m1)**(5.0_8/TWO)*((11486475.0_8/8.0_8)* & - w**4 - 2027025.0_8/4.0_8 * w**2 + 135135.0_8/8.0_8) * cos(5.0_8*phi) + w**4 - 2027025.0_8/4.0_8 * w**2 + 135135.0_8/8.0_8) * cos(5.0_8*phi) ! l = 9, m = 6 rn(16) = 3.02928976464514d-6*(w2m1)**3*((11486475.0_8/TWO)*w**3 - & - 2027025.0_8/TWO*w) * cos(6.0_8*phi) + 2027025.0_8/TWO*w) * cos(6.0_8*phi) ! l = 9, m = 7 rn(17) = 4.37240315267812d-7*(w2m1)**(7.0_8/TWO)* & - ((34459425.0_8/TWO)*w**2 - 2027025.0_8/TWO) * cos(7.0_8*phi) + ((34459425.0_8/TWO)*w**2 - 2027025.0_8/TWO) * cos(7.0_8*phi) ! l = 9, m = 8 rn(18) = 2.58397773170915_8 * w*(w2m1)**4 * cos(8.0_8*phi) ! l = 9, m = 9 @@ -478,65 +489,65 @@ contains rn(2) = 2.65478475211798_8 * w*(w2m1)**(9.0_8/TWO) * sin(9.0_8*phi) ! l = 10, m = -8 rn(3) = 2.49953651452314d-8*(w2m1)**4*((654729075.0_8/TWO)*w**2 - & - 34459425.0_8/TWO) * sin(8.0_8*phi) + 34459425.0_8/TWO) * sin(8.0_8*phi) ! l = 10, m = -7 rn(4) = 1.83677671621093d-7*(w2m1)**(7.0_8/TWO)* & - ((218243025.0_8/TWO)*w**3 - 34459425.0_8/TWO*w) * sin(7.0_8*phi) + ((218243025.0_8/TWO)*w**3 - 34459425.0_8/TWO*w) * sin(7.0_8*phi) ! l = 10, m = -6 rn(5) = 1.51464488232257d-6*(w2m1)**3*((218243025.0_8/8.0_8)*w**4 - & - 34459425.0_8/4.0_8 * w**2 + 2027025.0_8/8.0_8) * sin(6.0_8*phi) + 34459425.0_8/4.0_8 * w**2 + 2027025.0_8/8.0_8) * sin(6.0_8*phi) ! l = 10, m = -5 rn(6) = 1.35473956745817d-5*(w2m1)**(5.0_8/TWO)* & - ((43648605.0_8/8.0_8)*w**5 - 11486475.0_8/4.0_8 * w**3 + & - (2027025.0_8/8.0_8)*w) * sin(5.0_8*phi) + ((43648605.0_8/8.0_8)*w**5 - 11486475.0_8/4.0_8 * w**3 + & + (2027025.0_8/8.0_8)*w) * sin(5.0_8*phi) ! l = 10, m = -4 rn(7) = 0.000128521880085575_8 * (w2m1)**2*((14549535.0_8/16.0_8)*w**6 - & - 11486475.0_8/16.0_8 * w**4 + (2027025.0_8/16.0_8)*w**2 - & - 45045.0_8/16.0_8) * sin(4.0_8*phi) + 11486475.0_8/16.0_8 * w**4 + (2027025.0_8/16.0_8)*w**2 - & + 45045.0_8/16.0_8) * sin(4.0_8*phi) ! l = 10, m = -3 rn(8) = 0.00127230170115096_8 * (w2m1)**(THREE/TWO)* & - ((2078505.0_8/16.0_8)*w**7 - 2297295.0_8/16.0_8 * w**5 + & - (675675.0_8/16.0_8)*w**3 - 45045.0_8/16.0_8 * w) * sin(THREE*phi) + ((2078505.0_8/16.0_8)*w**7 - 2297295.0_8/16.0_8 * w**5 + & + (675675.0_8/16.0_8)*w**3 - 45045.0_8/16.0_8 * w) * sin(THREE*phi) ! l = 10, m = -2 rn(9) = 0.012974982402692_8 * (w2m1)*((2078505.0_8/128.0_8)*w**8 - & - 765765.0_8/32.0_8 * w**6 + (675675.0_8/64.0_8)*w**4 - & - 45045.0_8/32.0_8 * w**2 + 3465.0_8/128.0_8) * sin(TWO*phi) + 765765.0_8/32.0_8 * w**6 + (675675.0_8/64.0_8)*w**4 - & + 45045.0_8/32.0_8 * w**2 + 3465.0_8/128.0_8) * sin(TWO*phi) ! l = 10, m = -1 rn(10) = 0.134839972492648_8*sqrt(w2m1)*((230945.0_8/128.0_8)*w**9 - & - 109395.0_8/32.0_8 * w**7 + (135135.0_8/64.0_8)*w**5 - & - 15015.0_8/32.0_8 * w**3 + (3465.0_8/128.0_8)*w) * sin(phi) + 109395.0_8/32.0_8 * w**7 + (135135.0_8/64.0_8)*w**5 - & + 15015.0_8/32.0_8 * w**3 + (3465.0_8/128.0_8)*w) * sin(phi) ! l = 10, m = 0 - rn(11) = 180.42578125_8 * w**10 - 427.32421875_8 * w**8 +351.9140625_8 * w**6 - & - 117.3046875_8 * w**4 + 13.53515625_8 * w**2 -0.24609375_8 + rn(11) = 180.42578125_8 * w**10 - 427.32421875_8 * w**8 +351.9140625_8 & + * w**6 - 117.3046875_8 * w**4 + 13.53515625_8 * w**2 -0.24609375_8 ! l = 10, m = 1 rn(12) = 0.134839972492648_8*sqrt(w2m1)*((230945.0_8/128.0_8)*w**9 - & - 109395.0_8/32.0_8 * w**7 + (135135.0_8/64.0_8)*w**5 -15015.0_8/ & - 32.0_8 * w**3 + (3465.0_8/128.0_8)*w) * cos(phi) + 109395.0_8/32.0_8 * w**7 + (135135.0_8/64.0_8)*w**5 -15015.0_8/ & + 32.0_8 * w**3 + (3465.0_8/128.0_8)*w) * cos(phi) ! l = 10, m = 2 rn(13) = 0.012974982402692_8 * (w2m1)*((2078505.0_8/128.0_8)*w**8 - & - 765765.0_8/32.0_8 * w**6 + (675675.0_8/64.0_8)*w**4 -& - 45045.0_8/32.0_8 * w**2 + 3465.0_8/128.0_8) * cos(TWO*phi) + 765765.0_8/32.0_8 * w**6 + (675675.0_8/64.0_8)*w**4 -& + 45045.0_8/32.0_8 * w**2 + 3465.0_8/128.0_8) * cos(TWO*phi) ! l = 10, m = 3 rn(14) = 0.00127230170115096_8 * (w2m1)**(THREE/TWO)* & - ((2078505.0_8/16.0_8)*w**7 - 2297295.0_8/16.0_8 * w**5 + & - (675675.0_8/16.0_8)*w**3 - 45045.0_8/16.0_8 * w) * cos(THREE*phi) + ((2078505.0_8/16.0_8)*w**7 - 2297295.0_8/16.0_8 * w**5 + & + (675675.0_8/16.0_8)*w**3 - 45045.0_8/16.0_8 * w) * cos(THREE*phi) ! l = 10, m = 4 - rn(15) = 0.000128521880085575_8 * (w2m1)**2*((14549535.0_8/16.0_8)*w**6 - & - 11486475.0_8/16.0_8 * w**4 + (2027025.0_8/16.0_8)*w**2 - & - 45045.0_8/16.0_8) * cos(4.0_8*phi) + rn(15) = 0.000128521880085575_8 * (w2m1)**2*((14549535.0_8/16.0_8)*w**6 -& + 11486475.0_8/16.0_8 * w**4 + (2027025.0_8/16.0_8)*w**2 - & + 45045.0_8/16.0_8) * cos(4.0_8*phi) ! l = 10, m = 5 rn(16) = 1.35473956745817d-5*(w2m1)**(5.0_8/TWO)* & - ((43648605.0_8/8.0_8)*w**5 - 11486475.0_8/4.0_8 * w**3 + & - (2027025.0_8/8.0_8)*w) * cos(5.0_8*phi) + ((43648605.0_8/8.0_8)*w**5 - 11486475.0_8/4.0_8 * w**3 + & + (2027025.0_8/8.0_8)*w) * cos(5.0_8*phi) ! l = 10, m = 6 rn(17) = 1.51464488232257d-6*(w2m1)**3*((218243025.0_8/8.0_8)*w**4 - & - 34459425.0_8/4.0_8 * w**2 + 2027025.0_8/8.0_8) * cos(6.0_8*phi) + 34459425.0_8/4.0_8 * w**2 + 2027025.0_8/8.0_8) * cos(6.0_8*phi) ! l = 10, m = 7 rn(18) = 1.83677671621093d-7*(w2m1)**(7.0_8/TWO)* & - ((218243025.0_8/TWO)*w**3 - 34459425.0_8/TWO*w) * cos(7.0_8*phi) + ((218243025.0_8/TWO)*w**3 - 34459425.0_8/TWO*w) * cos(7.0_8*phi) ! l = 10, m = 8 rn(19) = 2.49953651452314d-8*(w2m1)**4* & - ((654729075.0_8/TWO)*w**2 - 34459425.0_8/TWO) * cos(8.0_8*phi) + ((654729075.0_8/TWO)*w**2 - 34459425.0_8/TWO) * cos(8.0_8*phi) ! l = 10, m = 9 rn(20) = 2.65478475211798_8 * w*(w2m1)**(9.0_8/TWO) * cos(9.0_8*phi) ! l = 10, m = 10 diff --git a/src/matrix_header.F90 b/src/matrix_header.F90 index 116b6a962e..b2cd3b1291 100644 --- a/src/matrix_header.F90 +++ b/src/matrix_header.F90 @@ -11,19 +11,19 @@ module matrix_header integer, allocatable :: row(:) ! csr row vector integer, allocatable :: col(:) ! column vector real(8), allocatable :: val(:) ! matrix value vector - contains - procedure :: create => matrix_create - procedure :: destroy => matrix_destroy - procedure :: add_value => matrix_add_value - procedure :: new_row => matrix_new_row - procedure :: assemble => matrix_assemble - procedure :: get_row => matrix_get_row - procedure :: get_col => matrix_get_col - procedure :: vector_multiply => matrix_vector_multiply - procedure :: search_indices => matrix_search_indices - procedure :: write => matrix_write - procedure :: copy => matrix_copy - procedure :: transpose => matrix_transpose + contains + procedure :: create => matrix_create + procedure :: destroy => matrix_destroy + procedure :: add_value => matrix_add_value + procedure :: new_row => matrix_new_row + procedure :: assemble => matrix_assemble + procedure :: get_row => matrix_get_row + procedure :: get_col => matrix_get_col + procedure :: vector_multiply => matrix_vector_multiply + procedure :: search_indices => matrix_search_indices + procedure :: write => matrix_write + procedure :: copy => matrix_copy + procedure :: transpose => matrix_transpose end type matrix contains diff --git a/src/mpiio_interface.F90 b/src/mpiio_interface.F90 index cae01a68e9..b9652c8ae4 100644 --- a/src/mpiio_interface.F90 +++ b/src/mpiio_interface.F90 @@ -129,13 +129,13 @@ contains integer, intent(inout) :: buffer ! read data to here logical, intent(in) :: collect ! collective I/O - if (collect) then - call MPI_FILE_READ_ALL(fh, buffer, 1, MPI_INTEGER, & - MPI_STATUS_IGNORE, mpiio_err) - else - call MPI_FILE_READ(fh, buffer, 1, MPI_INTEGER, & - MPI_STATUS_IGNORE, mpiio_err) - end if + if (collect) then + call MPI_FILE_READ_ALL(fh, buffer, 1, MPI_INTEGER, & + MPI_STATUS_IGNORE, mpiio_err) + else + call MPI_FILE_READ(fh, buffer, 1, MPI_INTEGER, & + MPI_STATUS_IGNORE, mpiio_err) + end if end subroutine mpi_read_integer @@ -341,13 +341,13 @@ contains real(8), intent(inout) :: buffer ! read data to here logical, intent(in) :: collect ! collective I/O - if (collect) then - call MPI_FILE_READ_ALL(fh, buffer, 1, MPI_REAL8, & - MPI_STATUS_IGNORE, mpiio_err) - else - call MPI_FILE_READ(fh, buffer, 1, MPI_REAL8, & - MPI_STATUS_IGNORE, mpiio_err) - end if + if (collect) then + call MPI_FILE_READ_ALL(fh, buffer, 1, MPI_REAL8, & + MPI_STATUS_IGNORE, mpiio_err) + else + call MPI_FILE_READ(fh, buffer, 1, MPI_REAL8, & + MPI_STATUS_IGNORE, mpiio_err) + end if end subroutine mpi_read_double diff --git a/src/output.F90 b/src/output.F90 index 49908fed6c..d1d4ec72aa 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -7,7 +7,7 @@ module output use endf, only: reaction_name use error, only: fatal_error, warning use geometry_header, only: Cell, Universe, Surface, Lattice, RectLattice, & - &HexLattice, BASE_UNIVERSE + HexLattice, BASE_UNIVERSE use global use math, only: t_percentile use mesh_header, only: StructuredMesh @@ -1372,7 +1372,7 @@ contains if (cmfd_run) then write(UNIT=ou, FMT='(A8,3X)', ADVANCE='NO') "========" if (cmfd_display /= '') & - write(UNIT=ou, FMT='(A8,3X)', ADVANCE='NO') "========" + write(UNIT=ou, FMT='(A8,3X)', ADVANCE='NO') "========" end if write(UNIT=ou, FMT=*) @@ -1432,20 +1432,20 @@ contains ! write out cmfd keff if it is active and other display info if (cmfd_on) then write(UNIT=OUTPUT_UNIT, FMT='(3X, F8.5)', ADVANCE='NO') & - cmfd % k_cmfd(current_batch) + cmfd % k_cmfd(current_batch) select case(trim(cmfd_display)) case('entropy') write(UNIT=OUTPUT_UNIT, FMT='(3X, F8.5)', ADVANCE='NO') & - cmfd % entropy(current_batch) + cmfd % entropy(current_batch) case('balance') write(UNIT=OUTPUT_UNIT, FMT='(3X, F8.5)', ADVANCE='NO') & - cmfd % balance(current_batch) + cmfd % balance(current_batch) case('source') write(UNIT=OUTPUT_UNIT, FMT='(3X, F8.5)', ADVANCE='NO') & - cmfd % src_cmp(current_batch) + cmfd % src_cmp(current_batch) case('dominance') write(UNIT=OUTPUT_UNIT, FMT='(3X, F8.5)', ADVANCE='NO') & - cmfd % dom(current_batch) + cmfd % dom(current_batch) end select end if @@ -1547,11 +1547,15 @@ contains write(ou,100) "Total time in simulation", time_inactive % elapsed + & time_active % elapsed write(ou,100) " Time in transport only", time_transport % elapsed - write(ou,100) " Time in inactive batches", time_inactive % elapsed + if (run_mode == MODE_EIGENVALUE) then + write(ou,100) " Time in inactive batches", time_inactive % elapsed + end if write(ou,100) " Time in active batches", time_active % elapsed - write(ou,100) " Time synchronizing fission bank", time_bank % elapsed - write(ou,100) " Sampling source sites", time_bank_sample % elapsed - write(ou,100) " SEND/RECV source sites", time_bank_sendrecv % elapsed + if (run_mode == MODE_EIGENVALUE) then + write(ou,100) " Time synchronizing fission bank", time_bank % elapsed + write(ou,100) " Sampling source sites", time_bank_sample % elapsed + write(ou,100) " SEND/RECV source sites", time_bank_sendrecv % elapsed + end if write(ou,100) " Time accumulating tallies", time_tallies % elapsed if (cmfd_run) write(ou,100) " Time in CMFD", time_cmfd % elapsed if (cmfd_run) write(ou,100) " Building matrices", & @@ -1567,7 +1571,7 @@ contains speed_inactive = real(n_particles * (n_inactive - restart_batch) * & gen_per_batch) / time_inactive % elapsed speed_active = real(n_particles * n_active * gen_per_batch) / & - time_active % elapsed + time_active % elapsed else speed_inactive = ZERO speed_active = real(n_particles * (n_batches - restart_batch) * & @@ -1884,21 +1888,22 @@ contains select case(t % score_bins(k)) case (SCORE_SCATTER_N, SCORE_NU_SCATTER_N) score_name = 'P' // trim(to_str(t % moment_order(k))) // " " // & - score_names(abs(t % score_bins(k))) + score_names(abs(t % score_bins(k))) write(UNIT=UNIT_TALLY, FMT='(1X,2A,1X,A,"+/- ",A)') & - repeat(" ", indent), score_name, & - to_str(t % results(score_index,filter_index) % sum), & - trim(to_str(t % results(score_index,filter_index) % sum_sq)) + repeat(" ", indent), score_name, & + to_str(t % results(score_index,filter_index) % sum), & + trim(to_str(t % results(score_index,filter_index) % sum_sq)) case (SCORE_SCATTER_PN, SCORE_NU_SCATTER_PN) score_index = score_index - 1 do n_order = 0, t % moment_order(k) score_index = score_index + 1 score_name = 'P' // trim(to_str(n_order)) // " " //& - score_names(abs(t % score_bins(k))) + score_names(abs(t % score_bins(k))) write(UNIT=UNIT_TALLY, FMT='(1X,2A,1X,A,"+/- ",A)') & - repeat(" ", indent), score_name, & - to_str(t % results(score_index,filter_index) % sum), & - trim(to_str(t % results(score_index,filter_index) % sum_sq)) + repeat(" ", indent), score_name, & + to_str(t % results(score_index,filter_index) % sum), & + trim(to_str(t % results(score_index,filter_index) & + % sum_sq)) end do k = k + t % moment_order(k) case (SCORE_SCATTER_YN, SCORE_NU_SCATTER_YN, SCORE_FLUX_YN, & @@ -1908,11 +1913,13 @@ contains do nm_order = -n_order, n_order score_index = score_index + 1 score_name = 'Y' // trim(to_str(n_order)) // ',' // & - trim(to_str(nm_order)) // " " // score_names(abs(t % score_bins(k))) + trim(to_str(nm_order)) // " " & + // score_names(abs(t % score_bins(k))) write(UNIT=UNIT_TALLY, FMT='(1X,2A,1X,A,"+/- ",A)') & - repeat(" ", indent), score_name, & - to_str(t % results(score_index,filter_index) % sum), & - trim(to_str(t % results(score_index,filter_index) % sum_sq)) + repeat(" ", indent), score_name, & + to_str(t % results(score_index,filter_index) % sum), & + trim(to_str(t % results(score_index,filter_index)& + % sum_sq)) end do end do k = k + (t % moment_order(k) + 1)**2 - 1 @@ -1923,9 +1930,9 @@ contains score_name = score_names(abs(t % score_bins(k))) end if write(UNIT=UNIT_TALLY, FMT='(1X,2A,1X,A,"+/- ",A)') & - repeat(" ", indent), score_name, & - to_str(t % results(score_index,filter_index) % sum), & - trim(to_str(t % results(score_index,filter_index) % sum_sq)) + repeat(" ", indent), score_name, & + to_str(t % results(score_index,filter_index) % sum), & + trim(to_str(t % results(score_index,filter_index) % sum_sq)) end select end do indent = indent - 2 @@ -2334,8 +2341,8 @@ contains ! Loop over lattice coordinates do k = 1, n_x - do l = 1, n_y - do m = 1, n_z + do l = 1, n_y + do m = 1, n_z if (final >= lat % offset(map, k, l, m) + offset) then if (k == n_x .and. l == n_y .and. m == n_z) then diff --git a/src/output_interface.F90 b/src/output_interface.F90 index 9a4341135b..05fcd0010b 100644 --- a/src/output_interface.F90 +++ b/src/output_interface.F90 @@ -31,7 +31,7 @@ module output_interface #endif #endif logical :: serial ! Serial I/O when using MPI/PHDF5 - contains + contains generic, public :: write_data => write_double, & write_double_1Darray, & write_double_2Darray, & @@ -111,7 +111,7 @@ contains self % serial = serial else self % serial = .true. - end if + end if #ifdef HDF5 # ifdef MPI @@ -153,7 +153,7 @@ contains self % serial = serial else self % serial = .true. - end if + end if #ifdef HDF5 # ifdef MPI @@ -201,18 +201,18 @@ contains #ifdef HDF5 # ifdef MPI - call hdf5_file_close(self % hdf5_fh) + call hdf5_file_close(self % hdf5_fh) # else - call hdf5_file_close(self % hdf5_fh) + call hdf5_file_close(self % hdf5_fh) # endif #elif MPI - if (self % serial) then - close(UNIT=self % unit_fh) - else - call mpi_close_file(self % mpi_fh) - end if + if (self % serial) then + close(UNIT=self % unit_fh) + else + call mpi_close_file(self % mpi_fh) + end if #else - close(UNIT=self % unit_fh) + close(UNIT=self % unit_fh) #endif end subroutine file_close @@ -475,7 +475,7 @@ contains call hdf5_read_double_1Darray(self % hdf5_grp, name_, buffer, length) else call hdf5_read_double_1Darray_parallel(self % hdf5_grp, name_, buffer, & - length, collect_) + length, collect_) end if # else call hdf5_read_double_1Darray(self % hdf5_grp, name_, buffer, length) @@ -663,8 +663,8 @@ contains if (self % serial) then call hdf5_write_double_3Darray(self % hdf5_grp, name_, buffer, length) else - call hdf5_write_double_3Darray_parallel(self % hdf5_grp, name_, buffer, length, & - collect_) + call hdf5_write_double_3Darray_parallel(self % hdf5_grp, name_, buffer, & + length, collect_) end if # else call hdf5_write_double_3Darray(self % hdf5_grp, name_, buffer, length) diff --git a/src/particle_header.F90 b/src/particle_header.F90 index 7c2586c3e2..66df6b6e5d 100644 --- a/src/particle_header.F90 +++ b/src/particle_header.F90 @@ -1,6 +1,8 @@ module particle_header - use constants, only: NEUTRON, ONE, NONE, ZERO + use bank_header, only: Bank + use constants, only: NEUTRON, ONE, NONE, ZERO, MAX_SECONDARY + use error, only: fatal_error use geometry_header, only: BASE_UNIVERSE implicit none @@ -79,9 +81,15 @@ module particle_header ! Track output logical :: write_track = .false. + ! Secondary particles created + integer :: n_secondary = 0 + type(Bank) :: secondary_bank(MAX_SECONDARY) + contains procedure :: initialize => initialize_particle procedure :: clear => clear_particle + procedure :: initialize_from_source + procedure :: create_secondary end type Particle contains @@ -122,7 +130,7 @@ contains end subroutine initialize_particle !=============================================================================== -! CLEAR_PARTICLE +! CLEAR_PARTICLE resets all coordinate levels for the particle !=============================================================================== subroutine clear_particle(this) @@ -138,7 +146,7 @@ contains end subroutine clear_particle !=============================================================================== -! RESET_COORD +! RESET_COORD clears data from a single coordinate level !=============================================================================== elemental subroutine reset_coord(this) @@ -154,4 +162,56 @@ contains end subroutine reset_coord +!=============================================================================== +! INITIALIZE_FROM_SOURCE initializes a particle from data stored in a source +! site. The source site may have been produced from an external source, from +! fission, or simply as a secondary particle. +!=============================================================================== + + subroutine initialize_from_source(this, src) + class(Particle), intent(inout) :: this + type(Bank), intent(in) :: src + + ! set defaults + call this % initialize() + + ! copy attributes from source bank site + this % wgt = src % wgt + this % last_wgt = src % wgt + this % coord(1) % xyz = src % xyz + this % coord(1) % uvw = src % uvw + this % last_xyz = src % xyz + this % last_uvw = src % uvw + this % E = src % E + this % last_E = src % E + + end subroutine initialize_from_source + +!=============================================================================== +! CREATE_SECONDARY stores the current phase space attributes of the particle in +! the secondary bank and increments the number of sites in the secondary bank. +!=============================================================================== + + subroutine create_secondary(this, uvw, type) + class(Particle), intent(inout) :: this + real(8), intent(in) :: uvw(3) + integer, intent(in) :: type + + integer :: n + + ! Check to make sure that the hard-limit on secondary particles is not + ! exceeded. + if (this % n_secondary == MAX_SECONDARY) then + call fatal_error("Too many secondary particles created.") + end if + + n = this % n_secondary + 1 + this % secondary_bank(n) % wgt = this % wgt + this % secondary_bank(n) % xyz(:) = this % coord(1) % xyz + this % secondary_bank(n) % uvw(:) = uvw + this % secondary_bank(n) % E = this % E + this % n_secondary = n + + end subroutine create_secondary + end module particle_header diff --git a/src/particle_restart_write.F90 b/src/particle_restart_write.F90 index 0ac55bd273..f138a67403 100644 --- a/src/particle_restart_write.F90 +++ b/src/particle_restart_write.F90 @@ -43,12 +43,7 @@ contains call pr % file_create(filename) ! Get information about source particle - select case (run_mode) - case (MODE_EIGENVALUE) - src => source_bank(current_work) - case (MODE_FIXEDSOURCE) - src => source_site - end select + src => source_bank(current_work) ! Write data to file call pr % write_data(FILETYPE_PARTICLE_RESTART, 'filetype') diff --git a/src/physics.F90 b/src/physics.F90 index de1a1ff411..01e5f410a5 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -387,8 +387,7 @@ contains end do ! Perform collision physics for inelastic scattering - call inelastic_scatter(nuc, rxn, p % E, p % coord(1) % uvw, & - p % mu, p % wgt, materials(p % material) % p0(i_nuc_mat)) + call inelastic_scatter(nuc, rxn, p, materials(p % material) % p0(i_nuc_mat)) p % event_MT = rxn % MT end if @@ -439,7 +438,7 @@ contains ! Sample velocity of target nucleus if (.not. micro_xs(i_nuclide) % use_ptable) then call sample_target_velocity(nuc, v_t, E, uvw, v_n, wgt, & - & micro_xs(i_nuclide) % elastic) + & micro_xs(i_nuclide) % elastic) else v_t = ZERO end if @@ -605,7 +604,7 @@ contains ! accompanying PDF and CDF is utilized) if ((sab % secondary_mode == SAB_SECONDARY_EQUAL) .or. & - (sab % secondary_mode == SAB_SECONDARY_SKEWED)) then + (sab % secondary_mode == SAB_SECONDARY_SKEWED)) then if (sab % secondary_mode == SAB_SECONDARY_EQUAL) then ! All bins equally likely @@ -877,16 +876,16 @@ contains ! interpolate xs since we're not exactly at the energy indices xs_low = nuc % elastic_0K(i_E_low) m = (nuc % elastic_0K(i_E_low + 1) - xs_low) & - & / (nuc % energy_0K(i_E_low + 1) - nuc % energy_0K(i_E_low)) + & / (nuc % energy_0K(i_E_low + 1) - nuc % energy_0K(i_E_low)) xs_low = xs_low + m * (E_low - nuc % energy_0K(i_E_low)) xs_up = nuc % elastic_0K(i_E_up) m = (nuc % elastic_0K(i_E_up + 1) - xs_up) & - & / (nuc % energy_0K(i_E_up + 1) - nuc % energy_0K(i_E_up)) + & / (nuc % energy_0K(i_E_up + 1) - nuc % energy_0K(i_E_up)) xs_up = xs_up + m * (E_up - nuc % energy_0K(i_E_up)) ! get max 0K xs value over range of practical relative energies xs_max = max(xs_low, & - & maxval(nuc % elastic_0K(i_E_low + 1 : i_E_up - 1)), xs_up) + & maxval(nuc % elastic_0K(i_E_low + 1 : i_E_up - 1)), xs_up) reject = .true. @@ -932,26 +931,26 @@ contains ! cdf value at lower bound attainable energy if (i_E_low > 1) then m = (nuc % xs_cdf(i_E_low) - nuc % xs_cdf(i_E_low - 1)) & - & / (nuc % energy_0K(i_E_low + 1) - nuc % energy_0K(i_E_low)) + & / (nuc % energy_0K(i_E_low + 1) - nuc % energy_0K(i_E_low)) cdf_low = nuc % xs_cdf(i_E_low - 1) & - & + m * (E_low - nuc % energy_0K(i_E_low)) + & + m * (E_low - nuc % energy_0K(i_E_low)) else m = nuc % xs_cdf(i_E_low) & - & / (nuc % energy_0K(i_E_low + 1) - nuc % energy_0K(i_E_low)) + & / (nuc % energy_0K(i_E_low + 1) - nuc % energy_0K(i_E_low)) cdf_low = m * (E_low - nuc % energy_0K(i_E_low)) if (E_low <= nuc % energy_0K(1)) cdf_low = ZERO end if ! cdf value at upper bound attainable energy m = (nuc % xs_cdf(i_E_up) - nuc % xs_cdf(i_E_up - 1)) & - & / (nuc % energy_0K(i_E_up + 1) - nuc % energy_0K(i_E_up)) + & / (nuc % energy_0K(i_E_up + 1) - nuc % energy_0K(i_E_up)) cdf_up = nuc % xs_cdf(i_E_up - 1) & - & + m * (E_up - nuc % energy_0K(i_E_up)) + & + m * (E_up - nuc % energy_0K(i_E_up)) ! values used to sample the Maxwellian E_mode = kT p_mode = TWO * sqrt(E_mode / pi) * sqrt((ONE / kT)**3) & - & * exp(-E_mode / kT) + & * exp(-E_mode / kT) E_t_max = 16.0_8 * E_mode reject = .true. @@ -961,7 +960,7 @@ contains ! perform Maxwellian rejection sampling E_t = E_t_max * prn()**2 p_t = TWO * sqrt(E_t / pi) * sqrt((ONE / kT)**3) & - & * exp(-E_t / kT) + & * exp(-E_t / kT) R_speed = p_t / p_mode if (prn() < R_speed) then @@ -969,12 +968,12 @@ contains ! sample a relative energy using the xs cdf cdf_rel = cdf_low + prn() * (cdf_up - cdf_low) i_E_rel = binary_search(nuc % xs_cdf(i_E_low-1:i_E_up), & - & i_E_up - i_E_low + 2, cdf_rel) + & i_E_up - i_E_low + 2, cdf_rel) E_rel = nuc % energy_0K(i_E_low + i_E_rel - 1) m = (nuc % xs_cdf(i_E_low + i_E_rel - 1) & - & - nuc % xs_cdf(i_E_low + i_E_rel - 2)) & - & / (nuc % energy_0K(i_E_low + i_E_rel) & - & - nuc % energy_0K(i_E_low + i_E_rel - 1)) + & - nuc % xs_cdf(i_E_low + i_E_rel - 2)) & + & / (nuc % energy_0K(i_E_low + i_E_rel) & + & - nuc % energy_0K(i_E_low + i_E_rel - 1)) E_rel = E_rel + (cdf_rel - nuc % xs_cdf(i_E_low + i_E_rel - 2)) / m ! perform rejection sampling on cosine between @@ -1060,7 +1059,7 @@ contains ! Determine rejection probability accept_prob = sqrt(beta_vn*beta_vn + beta_vt_sq - 2*beta_vn*beta_vt*mu) & - /(beta_vn + beta_vt) + /(beta_vn + beta_vt) ! Perform rejection sampling on vt and mu if (prn() < accept_prob) exit @@ -1302,18 +1301,18 @@ contains ! than fission), i.e. level scattering, (n,np), (n,na), etc. !=============================================================================== - subroutine inelastic_scatter(nuc, rxn, E, uvw, mu, wgt, iso_lab) + subroutine inelastic_scatter(nuc, rxn, p, iso_lab) type(Nuclide), pointer :: nuc type(Reaction), pointer :: rxn - real(8), intent(inout) :: E ! energy in lab (incoming/outgoing) - real(8), intent(inout) :: uvw(3) ! directional cosines - real(8), intent(out) :: mu ! cosine of scattering angle in lab - real(8), intent(inout) :: wgt ! particle weight + type(Particle), intent(inout) :: p logical, intent(in) :: iso_lab + integer :: i ! loop index integer :: law ! secondary energy distribution law + real(8) :: mu ! cosine of scattering angle in lab real(8) :: A ! atomic weight ratio of nuclide + real(8) :: E ! energy in lab (incoming/outgoing) real(8) :: E_in ! incoming energy real(8) :: E_cm ! outgoing energy in center-of-mass real(8) :: Q ! Q-value of reaction @@ -1322,8 +1321,8 @@ contains real(8) :: phi ! azimuthal angle ! copy energy, direction of neutron - E_in = E - uvw_in(:) = uvw(:) + E_in = p % E + uvw_in(:) = p % coord(1) % uvw(:) ! determine A and Q A = nuc % awr @@ -1360,22 +1359,29 @@ contains ! compute cosine of scattering angle in LAB frame by taking dot product of ! neutron's pre- and post-collision unit vectors if (iso_lab) then - uvw(1) = TWO * prn() - ONE + p % coord(1) % uvw(1) = TWO * prn() - ONE phi = TWO * PI * prn() - uvw(2) = cos(phi) * sqrt(ONE - uvw(1)*uvw(1)) - uvw(3) = sin(phi) * sqrt(ONE - uvw(1)*uvw(1)) - mu = dot_product(uvw_in, uvw) + p % coord(1) % uvw(2) = cos(phi) * sqrt(ONE - uvw_in(1) * uvw_in(1)) + p % coord(1) % uvw(3) = sin(phi) * sqrt(ONE - uvw_in(1) * uvw_in(1)) + mu = dot_product(uvw_in, p % coord(1) % uvw) else - uvw = rotate_angle(uvw_in, mu) + ! Set outgoing energy and scattering angle + p % E = E + p % mu = mu + + ! change direction of particle + p % coord(1) % uvw = rotate_angle(p % coord(1) % uvw, mu) end if ! change weight of particle based on yield if (rxn % multiplicity_with_E) then yield = interpolate_tab1(rxn % multiplicity_E, E_in) + p % wgt = yield * p % wgt else - yield = rxn % multiplicity + do i = 1, rxn % multiplicity - 1 + call p % create_secondary(p % coord(1) % uvw, NEUTRON) + end do end if - wgt = yield * wgt end subroutine inelastic_scatter diff --git a/src/plot.F90 b/src/plot.F90 index c6341e3a9b..e507b6093b 100644 --- a/src/plot.F90 +++ b/src/plot.F90 @@ -250,7 +250,7 @@ contains do j = ijk_ll(inner), ijk_ur(inner) ! check if we're in the mesh for this ijk if (i > 0 .and. i <= m % dimension(outer) .and. & - j > 0 .and. j <= m % dimension(inner)) then + j > 0 .and. j <= m % dimension(inner)) then ! get xyz's of lower left and upper right of this mesh cell xyz_ll(outer) = m % lower_left(outer) + m % width(outer) * (i - 1) diff --git a/src/plot_header.F90 b/src/plot_header.F90 index 7ce0aa4500..8dc725d9d4 100644 --- a/src/plot_header.F90 +++ b/src/plot_header.F90 @@ -24,7 +24,7 @@ module plot_header integer :: color_by ! quantity to color regions by real(8) :: origin(3) ! xyz center of plot location real(8) :: width(3) ! xyz widths of plot - integer :: basis ! direction of plot slice + integer :: basis ! direction of plot slice integer :: pixels(3) ! pixel width/height of plot slice integer :: meshlines_width ! pixel width of meshlines integer :: level ! universe depth to plot the cells of @@ -37,7 +37,7 @@ module plot_header ! Plot type integer, parameter :: PLOT_TYPE_SLICE = 1 integer, parameter :: PLOT_TYPE_VOXEL = 2 - + ! Plot level integer, parameter :: PLOT_LEVEL_LOWEST = -1 diff --git a/src/ppmlib.F90 b/src/ppmlib.F90 index b9df00e1ca..ebd8105bef 100644 --- a/src/ppmlib.F90 +++ b/src/ppmlib.F90 @@ -1,7 +1,7 @@ module ppmlib implicit none - + !=============================================================================== ! Image holds RGB information for output PPM image !=============================================================================== @@ -12,7 +12,7 @@ module ppmlib end type Image contains - + !=============================================================================== ! INIT_IMAGE initializes the Image derived type !=============================================================================== @@ -55,7 +55,7 @@ contains !=============================================================================== ! DEALLOCATE_IMAGE !=============================================================================== - + subroutine deallocate_image(img) type(Image) :: img @@ -70,7 +70,7 @@ contains ! INSIDE_IMAGE determines whether a point (x,y) is inside the image !=============================================================================== - + function inside_image(img, x, y) result(inside) type(Image), intent(in) :: img @@ -83,7 +83,7 @@ contains (x >= 0) .and. (y >= 0)) inside = .true. end function inside_image - + !=============================================================================== ! VALID_IMAGE checks whether the image has a width and height and if its color ! arrays are allocated @@ -123,5 +123,5 @@ contains end if end subroutine set_pixel - + end module ppmlib diff --git a/src/progress_header.F90 b/src/progress_header.F90 index d0ee7563a5..5f462e0fac 100644 --- a/src/progress_header.F90 +++ b/src/progress_header.F90 @@ -22,12 +22,12 @@ module progress_header private character(len=72) :: bar="???% | " // & " |" - contains - procedure :: set_value => bar_set_value + contains + procedure :: set_value => bar_set_value end type ProgressBar contains - + !=============================================================================== ! IS_TERMINAL checks if output is currently being output to a terminal. Relies ! on a POSIX implementation of isatty, and defaults to false if that is not @@ -46,7 +46,7 @@ contains #endif end function is_terminal - + !=============================================================================== ! BAR_SET_VALUE prints the progress bar without advancing. The value is ! specified as percent completion, from 0 to 100. If the value is ever set to @@ -57,7 +57,7 @@ contains class(ProgressBar), intent(inout) :: self real(8), intent(in) :: val - + integer :: i if (.not. is_terminal()) return @@ -84,19 +84,19 @@ contains write(OUTPUT_UNIT, '(A1,A1,A72)', ADVANCE='no') '+', char(13), self % bar flush(OUTPUT_UNIT) - + if (val >= 100.) then - + ! make new line write(OUTPUT_UNIT, "(A)") "" flush(OUTPUT_UNIT) - + ! reset the bar in case we want to use this instance again self % bar = "???% | " // & " |" - + end if - + end subroutine bar_set_value end module progress_header diff --git a/src/random_lcg.F90 b/src/random_lcg.F90 index e6a28587df..1ebe651d3c 100644 --- a/src/random_lcg.F90 +++ b/src/random_lcg.F90 @@ -93,7 +93,7 @@ contains end do end subroutine set_particle_seed - + !=============================================================================== ! PRN_SKIP advances the random number seed 'n' times from the current seed !=============================================================================== diff --git a/src/search.F90 b/src/search.F90 index 8de05a955b..dab7fa67ca 100644 --- a/src/search.F90 +++ b/src/search.F90 @@ -62,7 +62,7 @@ contains n_iteration = n_iteration + 1 if (n_iteration == MAX_ITERATION) then call fatal_error("Reached maximum number of iterations on binary & - &search.") + &search.") end if end do @@ -114,7 +114,7 @@ contains n_iteration = n_iteration + 1 if (n_iteration == MAX_ITERATION) then call fatal_error("Reached maximum number of iterations on binary & - &search.") + &search.") end if end do @@ -166,7 +166,7 @@ contains n_iteration = n_iteration + 1 if (n_iteration == MAX_ITERATION) then call fatal_error("Reached maximum number of iterations on binary & - &search.") + &search.") end if end do diff --git a/src/simulation.F90 b/src/simulation.F90 new file mode 100644 index 0000000000..cc230d645b --- /dev/null +++ b/src/simulation.F90 @@ -0,0 +1,371 @@ +module simulation + +#ifdef MPI + use mpi +#endif + + use cmfd_execute, only: cmfd_init_batch, execute_cmfd + use constants, only: ZERO + use eigenvalue, only: count_source_for_ufs, calculate_average_keff, & + calculate_combined_keff, calculate_generation_keff, & + shannon_entropy, synchronize_bank, keff_generation +#ifdef _OPENMP + use eigenvalue, only: join_bank_from_threads +#endif + use global + use output, only: write_message, header, print_columns, & + print_batch_keff, print_generation + use particle_header, only: Particle + use random_lcg, only: set_particle_seed + use source, only: initialize_source + use state_point, only: write_state_point, write_source_point + use string, only: to_str + use tally, only: synchronize_tallies, setup_active_usertallies, & + reset_result + use trigger, only: check_triggers + use tracking, only: transport + + implicit none + private + public :: run_simulation + +contains + +!=============================================================================== +! RUN_SIMULATION encompasses all the main logic where iterations are performed +! over the batches, generations, and histories in a fixed source or k-eigenvalue +! calculation. +!=============================================================================== + + subroutine run_simulation() + + type(Particle) :: p + integer(8) :: i_work + + if (.not. restart_run) call initialize_source() + + ! Display header + if (master) then + if (run_mode == MODE_FIXEDSOURCE) then + call header("FIXED SOURCE TRANSPORT SIMULATION", level=1) + elseif (run_mode == MODE_EIGENVALUE) then + call header("K EIGENVALUE SIMULATION", level=1) + call print_columns() + end if + end if + + ! Turn on inactive timer + call time_inactive % start() + + ! ========================================================================== + ! LOOP OVER BATCHES + BATCH_LOOP: do current_batch = 1, n_max_batches + + call initialize_batch() + + ! Handle restart runs + if (restart_run .and. current_batch <= restart_batch) then + call replay_batch_history() + cycle BATCH_LOOP + end if + + ! ======================================================================= + ! LOOP OVER GENERATIONS + GENERATION_LOOP: do current_gen = 1, gen_per_batch + + call initialize_generation() + + ! Start timer for transport + call time_transport % start() + + ! ==================================================================== + ! LOOP OVER PARTICLES +!$omp parallel do schedule(static) firstprivate(p) + PARTICLE_LOOP: do i_work = 1, work + current_work = i_work + + ! grab source particle from bank + call initialize_history(p, current_work) + + ! transport particle + call transport(p) + + end do PARTICLE_LOOP +!$omp end parallel do + + ! Accumulate time for transport + call time_transport % stop() + + call finalize_generation() + + end do GENERATION_LOOP + + call finalize_batch() + + if (satisfy_triggers) exit BATCH_LOOP + + end do BATCH_LOOP + + call time_active % stop() + + ! ========================================================================== + ! END OF RUN WRAPUP + + if (master) call header("SIMULATION FINISHED", level=1) + + ! Clear particle + call p % clear() + + end subroutine run_simulation + +!=============================================================================== +! INITIALIZE_HISTORY +!=============================================================================== + + subroutine initialize_history(p, index_source) + + type(Particle), intent(inout) :: p + integer(8), intent(in) :: index_source + + integer(8) :: particle_seed ! unique index for particle + integer :: i + + ! set defaults + call p % initialize_from_source(source_bank(index_source)) + + ! set identifier for particle + p % id = work_index(rank) + index_source + + ! set random number seed + particle_seed = (overall_gen - 1)*n_particles + p % id + call set_particle_seed(particle_seed) + + ! set particle trace + trace = .false. + if (current_batch == trace_batch .and. current_gen == trace_gen .and. & + p % id == trace_particle) trace = .true. + + ! Set particle track. + p % write_track = .false. + if (write_all_tracks) then + p % write_track = .true. + else if (allocated(track_identifiers)) then + do i=1, size(track_identifiers(1,:)) + if (current_batch == track_identifiers(1,i) .and. & + ¤t_gen == track_identifiers(2,i) .and. & + &p % id == track_identifiers(3,i)) then + p % write_track = .true. + exit + end if + end do + end if + + end subroutine initialize_history + +!=============================================================================== +! INITIALIZE_BATCH +!=============================================================================== + + subroutine initialize_batch() + + if (run_mode == MODE_FIXEDSOURCE) then + call write_message("Simulating batch " // trim(to_str(current_batch)) & + // "...", 1) + end if + + ! Reset total starting particle weight used for normalizing tallies + total_weight = ZERO + + if (current_batch == n_inactive + 1) then + ! Switch from inactive batch timer to active batch timer + call time_inactive % stop() + call time_active % start() + + ! Enable active batches (and tallies_on if it hasn't been enabled) + active_batches = .true. + tallies_on = .true. + + ! Add user tallies to active tallies list +!$omp parallel + call setup_active_usertallies() +!$omp end parallel + end if + + ! check CMFD initialize batch + if (run_mode == MODE_EIGENVALUE) then + if (cmfd_run) call cmfd_init_batch() + end if + + end subroutine initialize_batch + +!=============================================================================== +! INITIALIZE_GENERATION +!=============================================================================== + + subroutine initialize_generation() + + ! set overall generation number + overall_gen = gen_per_batch*(current_batch - 1) + current_gen + + if (run_mode == MODE_EIGENVALUE) then + ! Reset number of fission bank sites + n_bank = 0 + + ! Count source sites if using uniform fission source weighting + if (ufs) call count_source_for_ufs() + + ! Store current value of tracklength k + keff_generation = global_tallies(K_TRACKLENGTH) % value + end if + + end subroutine initialize_generation + +!=============================================================================== +! FINALIZE_GENERATION +!=============================================================================== + + subroutine finalize_generation() + + ! Update global tallies with the omp private accumulation variables +!$omp parallel +!$omp critical + if (run_mode == MODE_EIGENVALUE) then + global_tallies(K_COLLISION) % value = & + global_tallies(K_COLLISION) % value + global_tally_collision + global_tallies(K_ABSORPTION) % value = & + global_tallies(K_ABSORPTION) % value + global_tally_absorption + global_tallies(K_TRACKLENGTH) % value = & + global_tallies(K_TRACKLENGTH) % value + global_tally_tracklength + end if + global_tallies(LEAKAGE) % value = & + global_tallies(LEAKAGE) % value + global_tally_leakage +!$omp end critical + + ! reset private tallies + if (run_mode == MODE_EIGENVALUE) then + global_tally_collision = 0 + global_tally_absorption = 0 + global_tally_tracklength = 0 + end if + global_tally_leakage = 0 +!$omp end parallel + + if (run_mode == MODE_EIGENVALUE) then +#ifdef _OPENMP + ! Join the fission bank from each thread into one global fission bank + call join_bank_from_threads() +#endif + + ! Distribute fission bank across processors evenly + call time_bank % start() + call synchronize_bank() + call time_bank % stop() + + ! Calculate shannon entropy + if (entropy_on) call shannon_entropy() + + ! Collect results and statistics + call calculate_generation_keff() + call calculate_average_keff() + + ! Write generation output + if (master .and. current_gen /= gen_per_batch) call print_generation() + end if + + end subroutine finalize_generation + +!=============================================================================== +! FINALIZE_BATCH handles synchronization and accumulation of tallies, +! calculation of Shannon entropy, getting single-batch estimate of keff, and +! turning on tallies when appropriate +!=============================================================================== + + subroutine finalize_batch() + + ! Collect tallies + call time_tallies % start() + call synchronize_tallies() + call time_tallies % stop() + + ! Reset global tally results + if (.not. active_batches) then + call reset_result(global_tallies) + n_realizations = 0 + end if + + if (run_mode == MODE_EIGENVALUE) then + ! Perform CMFD calculation if on + if (cmfd_on) call execute_cmfd() + + ! Display output + if (master) call print_batch_keff() + + ! Calculate combined estimate of k-effective + if (master) call calculate_combined_keff() + end if + + ! Check_triggers + if (master) call check_triggers() +#ifdef MPI + call MPI_BCAST(satisfy_triggers, 1, MPI_LOGICAL, 0, & + MPI_COMM_WORLD, mpi_err) +#endif + if (satisfy_triggers .or. & + (trigger_on .and. current_batch == n_max_batches)) then + call statepoint_batch % add(current_batch) + end if + + ! Write out state point if it's been specified for this batch + if (statepoint_batch % contains(current_batch)) then + call write_state_point() + end if + + ! Write out source point if it's been specified for this batch + if ((sourcepoint_batch % contains(current_batch) .or. source_latest) .and. & + source_write) then + call write_source_point() + end if + + if (master .and. current_batch == n_max_batches .and. & + run_mode == MODE_EIGENVALUE) then + ! Make sure combined estimate of k-effective is calculated at the last + ! batch in case no state point is written + call calculate_combined_keff() + end if + + end subroutine finalize_batch + +!=============================================================================== +! REPLAY_BATCH_HISTORY displays keff and entropy for each generation within a +! batch using data read from a state point file +!=============================================================================== + + subroutine replay_batch_history + + ! Write message at beginning + if (current_batch == 1) then + call write_message("Replaying history from state point...", 1) + end if + + if (run_mode == MODE_EIGENVALUE) then + do current_gen = 1, gen_per_batch + overall_gen = overall_gen + 1 + call calculate_average_keff() + + ! print out batch keff + if (current_gen < gen_per_batch) then + if (master) call print_generation() + else + if (master) call print_batch_keff() + end if + end do + end if + + ! Write message at end + if (current_batch == restart_batch) then + call write_message("Resuming simulation...", 1) + end if + + end subroutine replay_batch_history + +end module simulation diff --git a/src/source.F90 b/src/source.F90 index 7cfdcf655c..e824829154 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -78,7 +78,7 @@ contains ! Write out initial source if (write_initial_source) then - call write_message('Writing out initial source guess...', 1) + call write_message('Writing out initial source...', 1) #ifdef HDF5 filename = trim(path_output) // 'initial_source.h5' #else @@ -92,7 +92,8 @@ contains end subroutine initialize_source !=============================================================================== -! SAMPLE_EXTERNAL_SOURCE +! SAMPLE_EXTERNAL_SOURCE samples the user-specified external source and stores +! the position, angle, and energy in a Bank type. !=============================================================================== subroutine sample_external_source(site) @@ -245,74 +246,4 @@ contains end subroutine sample_external_source -!=============================================================================== -! GET_SOURCE_PARTICLE returns the next source particle -!=============================================================================== - - subroutine get_source_particle(p, index_source) - - type(Particle), intent(inout) :: p - integer(8), intent(in) :: index_source - - integer(8) :: particle_seed ! unique index for particle - integer :: i - type(Bank), pointer :: src - - ! set defaults - call p % initialize() - - ! Copy attributes from source to particle - src => source_bank(index_source) - call copy_source_attributes(p, src) - - ! set identifier for particle - p % id = work_index(rank) + index_source - - ! set random number seed - particle_seed = (overall_gen - 1)*n_particles + p % id - call set_particle_seed(particle_seed) - - ! set particle trace - trace = .false. - if (current_batch == trace_batch .and. current_gen == trace_gen .and. & - p % id == trace_particle) trace = .true. - - ! Set particle track. - p % write_track = .false. - if (write_all_tracks) then - p % write_track = .true. - else if (allocated(track_identifiers)) then - do i=1, size(track_identifiers(1,:)) - if (current_batch == track_identifiers(1,i) .and. & - ¤t_gen == track_identifiers(2,i) .and. & - &p % id == track_identifiers(3,i)) then - p % write_track = .true. - exit - end if - end do - end if - - end subroutine get_source_particle - -!=============================================================================== -! COPY_SOURCE_ATTRIBUTES -!=============================================================================== - - subroutine copy_source_attributes(p, src) - - type(Particle), intent(inout) :: p - type(Bank), pointer :: src - - ! copy attributes from source bank site - p % wgt = src % wgt - p % last_wgt = src % wgt - p % coord(1) % xyz = src % xyz - p % coord(1) % uvw = src % uvw - p % last_xyz = src % xyz - p % last_uvw = src % uvw - p % E = src % E - p % last_E = src % E - - end subroutine copy_source_attributes - end module source diff --git a/src/state_point.F90 b/src/state_point.F90 index 0ba0931767..6b983231f6 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -52,7 +52,7 @@ contains ! Set filename for state point filename = trim(path_output) // 'statepoint.' // & - & zero_padded(current_batch, count_digits(n_max_batches)) + & zero_padded(current_batch, count_digits(n_max_batches)) ! Append appropriate extension #ifdef HDF5 @@ -256,7 +256,7 @@ contains group="tallies/tally " // trim(to_str(tally % id)) // & "/filter " // to_str(j)) if (tally % filters(j) % type == FILTER_ENERGYIN .or. & - tally % filters(j) % type == FILTER_ENERGYOUT) then + tally % filters(j) % type == FILTER_ENERGYOUT) then call sp % write_data(tally % filters(j) % real_bins, "bins", & group="tallies/tally " // trim(to_str(tally % id)) // & "/filter " // to_str(j), & @@ -309,8 +309,8 @@ contains do n_order = 0, tally % moment_order(k) moment_name = 'P' // trim(to_str(n_order)) call sp % write_data(moment_name, "order" // trim(to_str(k)), & - group="tallies/tally " // trim(to_str(tally % id)) // & - "/moments") + group="tallies/tally " // trim(to_str(tally % id)) // & + "/moments") k = k + 1 end do case (SCORE_SCATTER_YN, SCORE_NU_SCATTER_YN, SCORE_FLUX_YN, & @@ -318,7 +318,7 @@ contains do n_order = 0, tally % moment_order(k) do nm_order = -n_order, n_order moment_name = 'Y' // trim(to_str(n_order)) // ',' // & - trim(to_str(nm_order)) + trim(to_str(nm_order)) call sp % write_data(moment_name, "order" // & trim(to_str(k)), & group="tallies/tally " // trim(to_str(tally % id)) // & @@ -412,7 +412,7 @@ contains ! Set filename filename = trim(path_output) // 'source.' // & - & zero_padded(current_batch, count_digits(n_max_batches)) + & zero_padded(current_batch, count_digits(n_max_batches)) #ifdef HDF5 filename = trim(filename) // '.h5' @@ -434,7 +434,7 @@ contains ! Set filename for state point filename = trim(path_output) // 'statepoint.' // & - & zero_padded(current_batch, count_digits(n_max_batches)) + & zero_padded(current_batch, count_digits(n_max_batches)) #ifdef HDF5 filename = trim(filename) // '.h5' #else @@ -607,12 +607,12 @@ contains tally % results(:,:) % sum_sq = tally_temp(2,:,:) end if - ! Put in temporary tally result - allocate(tallyresult_temp(m,n)) - tallyresult_temp(:,:) % sum = tally_temp(1,:,:) - tallyresult_temp(:,:) % sum_sq = tally_temp(2,:,:) + ! Put in temporary tally result + allocate(tallyresult_temp(m,n)) + tallyresult_temp(:,:) % sum = tally_temp(1,:,:) + tallyresult_temp(:,:) % sum_sq = tally_temp(2,:,:) - ! Write reduced tally results to file + ! Write reduced tally results to file call sp % write_tally_result(tally % results, "results", & group="tallies/tally " // trim(to_str(tally % id)), n1=m, n2=n) @@ -687,7 +687,7 @@ contains call sp % read_data(int_array(2), "version_minor") call sp % read_data(int_array(3), "version_release") if (int_array(1) /= VERSION_MAJOR .or. int_array(2) /= VERSION_MINOR & - .or. int_array(3) /= VERSION_RELEASE) then + .or. int_array(3) /= VERSION_RELEASE) then if (master) call warning("State point file was created with a different & &version of OpenMC.") end if @@ -843,7 +843,7 @@ contains group="tallies/tally " // trim(to_str(curr_key)) // & "/filter " // to_str(j)) if (tally % filters(j) % type == FILTER_ENERGYIN .or. & - tally % filters(j) % type == FILTER_ENERGYOUT) then + tally % filters(j) % type == FILTER_ENERGYOUT) then call sp % read_data(tally % filters(j) % real_bins, "bins", & group="tallies/tally " // trim(to_str(curr_key)) // & "/filter " // to_str(j), & diff --git a/src/string.F90 b/src/string.F90 index ebe2310f24..5f57bb3855 100644 --- a/src/string.F90 +++ b/src/string.F90 @@ -7,7 +7,7 @@ module string implicit none interface to_str - module procedure int4_to_str, int8_to_str, real_to_str + module procedure int4_to_str, int8_to_str, real_to_str end interface contains @@ -50,7 +50,7 @@ contains n = n + 1 if (i_end - i_start + 1 > len(words(n))) then if (master) call warning("The word '" // string(i_start:i_end) & - &// "' is longer than the space allocated for it.") + &// "' is longer than the space allocated for it.") end if words(n) = string(i_start:i_end) ! reset indices diff --git a/src/tally_header.F90 b/src/tally_header.F90 index 43ec868c54..d20c3fea20 100644 --- a/src/tally_header.F90 +++ b/src/tally_header.F90 @@ -124,7 +124,7 @@ module tally_header ! Number of realizations of tally random variables integer :: n_realizations = 0 - + ! Tally precision triggers integer :: n_triggers = 0 ! # of triggers type(TriggerObject), allocatable :: triggers(:) ! Array of triggers @@ -197,10 +197,10 @@ module tally_header this % reset = .false. this % n_realizations = 0 - + if (allocated(this % triggers)) & deallocate (this % triggers) - + this % n_triggers = 0 end subroutine tallyobject_clear diff --git a/src/timer_header.F90 b/src/timer_header.F90 index 0dde85d0c2..0bf1b7aef5 100644 --- a/src/timer_header.F90 +++ b/src/timer_header.F90 @@ -15,11 +15,11 @@ module timer_header logical :: running = .false. ! is timer running? integer :: start_counts = 0 ! counts when started real(8), public :: elapsed = ZERO ! total time elapsed in seconds - contains - procedure :: start => timer_start - procedure :: get_value => timer_get_value - procedure :: stop => timer_stop - procedure :: reset => timer_reset + contains + procedure :: start => timer_start + procedure :: get_value => timer_get_value + procedure :: stop => timer_stop + procedure :: reset => timer_reset end type Timer contains @@ -83,7 +83,7 @@ contains !=============================================================================== subroutine timer_reset(self) - + class(Timer), intent(inout) :: self self % running = .false. diff --git a/src/track_output.F90 b/src/track_output.F90 index fba699e8ef..6ab514cdb8 100644 --- a/src/track_output.F90 +++ b/src/track_output.F90 @@ -12,18 +12,22 @@ module track_output implicit none - integer, private :: n_tracks ! total number of tracks - real(8), private, allocatable :: coords(:,:) ! track coordinates -!$omp threadprivate(n_tracks, coords) + type, private :: TrackCoordinates + real(8), allocatable :: coords(:,:) + end type TrackCoordinates + + type(TrackCoordinates), private, allocatable :: tracks(:) +!$omp threadprivate(tracks) contains !=============================================================================== -! INITIALIZE_PARTICLE_TRACK +! INITIALIZE_PARTICLE_TRACK allocates the array to store particle track +! information !=============================================================================== subroutine initialize_particle_track() - n_tracks = 0 + allocate(tracks(1)) end subroutine initialize_particle_track !=============================================================================== @@ -32,23 +36,50 @@ contains subroutine write_particle_track(p) type(Particle), intent(in) :: p - real(8), allocatable :: new_coords(:, :) + integer :: i + integer :: n_tracks + ! Add another column to coords - n_tracks = n_tracks + 1 - if (allocated(coords)) then - allocate(new_coords(3, n_tracks)) - new_coords(:, 1:n_tracks-1) = coords - call move_alloc(FROM=new_coords, TO=coords) + i = size(tracks) + if (allocated(tracks(i) % coords)) then + n_tracks = size(tracks(i) % coords, 2) + allocate(new_coords(3, n_tracks + 1)) + new_coords(:, 1:n_tracks) = tracks(i) % coords + call move_alloc(FROM=new_coords, TO=tracks(i) % coords) else - allocate(coords(3,1)) + n_tracks = 0 + allocate(tracks(i) % coords(3, 1)) end if ! Write current coordinates into the newest column. - coords(:, n_tracks) = p % coord(1) % xyz + n_tracks = n_tracks + 1 + tracks(i) % coords(:, n_tracks) = p % coord(1) % xyz end subroutine write_particle_track +!=============================================================================== +! ADD_PARTICLE_TRACK creates a new entry in the track coordinates for a +! secondary particle +!=============================================================================== + + subroutine add_particle_track() + type(TrackCoordinates), allocatable :: new_tracks(:) + + integer :: i + + ! Determine current number of particle tracks + i = size(tracks) + + ! Create array one larger than current + allocate(new_tracks(i + 1)) + + ! Copy memory and move allocation + new_tracks(1:i) = tracks(i) + call move_alloc(FROM=new_tracks, TO=tracks) + + end subroutine add_particle_track + !=============================================================================== ! FINALIZE_PARTICLE_TRACK writes the particle track array to disk. !=============================================================================== @@ -60,6 +91,10 @@ contains character(MAX_FILE_LEN) :: fname type(BinaryOutput) :: binout + integer :: i + integer, allocatable :: n_coords(:) + integer :: n_particle_tracks + #ifdef HDF5 fname = trim(path_output) // 'track_' // trim(to_str(current_batch)) & // '_' // trim(to_str(current_gen)) // '_' // trim(to_str(p % id)) & @@ -69,13 +104,26 @@ contains // '_' // trim(to_str(current_gen)) // '_' // trim(to_str(p % id)) & // '.binary' #endif + + ! Determine total number of particles and number of coordinates for each + n_particle_tracks = size(tracks) + allocate(n_coords(n_particle_tracks)) + do i = 1, n_particle_tracks + n_coords(i) = size(tracks(i) % coords, 2) + end do + !$omp critical (FinalizeParticleTrack) call binout % file_create(fname) - length = [3, n_tracks] - call binout % write_data(coords, 'coordinates', length=length) + call binout % write_data(n_particle_tracks, 'n_particles') + call binout % write_data(n_coords, 'n_coords', length=n_particle_tracks) + do i = 1, n_particle_tracks + length(:) = [3, n_coords(i)] + call binout % write_data(tracks(i) % coords, 'coordinates_' // & + trim(to_str(i)), length=length) + end do call binout % file_close() !$omp end critical (FinalizeParticleTrack) - deallocate(coords) + deallocate(tracks) end subroutine finalize_particle_track end module track_output diff --git a/src/tracking.F90 b/src/tracking.F90 index e5faeb209d..173babd2f5 100644 --- a/src/tracking.F90 +++ b/src/tracking.F90 @@ -15,7 +15,7 @@ module tracking use tally, only: score_analog_tally, score_tracklength_tally, & score_surface_current use track_output, only: initialize_particle_track, write_particle_track, & - finalize_particle_track + add_particle_track, finalize_particle_track implicit none @@ -45,20 +45,6 @@ contains call write_message("Simulating Particle " // trim(to_str(p % id))) end if - ! If the cell hasn't been determined based on the particle's location, - ! initiate a search for the current cell - if (p % coord(p % n_coord) % cell == NONE) then - call find_cell(p, found_cell) - - ! Particle couldn't be located - if (.not. found_cell) then - call fatal_error("Could not locate particle " // trim(to_str(p % id))) - end if - - ! set birth cell attribute - p % cell_born = p % coord(p % n_coord) % cell - end if - ! Initialize number of events to zero n_event = 0 @@ -74,7 +60,19 @@ contains call initialize_particle_track() endif - do while (p % alive) + EVENT_LOOP: do + ! If the cell hasn't been determined based on the particle's location, + ! initiate a search for the current cell. This generally happens at the + ! beginning of the history and again for any secondary particles + if (p % coord(p % n_coord) % cell == NONE) then + call find_cell(p, found_cell) + if (.not. found_cell) then + call fatal_error("Could not locate particle " // trim(to_str(p % id))) + end if + + ! set birth cell attribute + if (p % cell_born == NONE) p % cell_born = p % coord(p % n_coord) % cell + end if ! Write particle track. if (p % write_track) call write_particle_track(p) @@ -197,7 +195,19 @@ contains p % alive = .false. end if - end do + ! Check for secondary particles if this particle is dead + if (.not. p % alive) then + if (p % n_secondary > 0) then + call p % initialize_from_source(p % secondary_bank(p % n_secondary)) + p % n_secondary = p % n_secondary - 1 + + ! Enter new particle in particle track file + if (p % write_track) call add_particle_track() + else + exit EVENT_LOOP + end if + end if + end do EVENT_LOOP ! Finish particle track output. if (p % write_track) then diff --git a/src/trigger.F90 b/src/trigger.F90 index 6909598db2..4a16cd5cab 100644 --- a/src/trigger.F90 +++ b/src/trigger.F90 @@ -43,7 +43,7 @@ contains ! When trigger threshold is reached, write information if (satisfy_triggers) then call write_message("Triggers satisfied for batch " // & - trim(to_str(current_batch))) + trim(to_str(current_batch))) ! When trigger is not reached write convergence info for user elseif (name == "eigenvalue") then @@ -83,7 +83,7 @@ contains ! and finds the maximum uncertainty/threshold ratio for all triggers !=============================================================================== - subroutine check_tally_triggers(max_ratio, tally_id, name) + subroutine check_tally_triggers(max_ratio, tally_id, name) ! Variables to reflect distance to trigger convergence criteria real(8), intent(inout) :: max_ratio ! max uncertainty/thresh ratio @@ -299,7 +299,7 @@ contains ! precision trigger(s). !=============================================================================== - subroutine compute_tally_current(t, trigger) + subroutine compute_tally_current(t, trigger) integer :: i ! mesh index for x integer :: j ! mesh index for y diff --git a/src/trigger_header.F90 b/src/trigger_header.F90 index 8289ca6154..e137829bd0 100644 --- a/src/trigger_header.F90 +++ b/src/trigger_header.F90 @@ -14,16 +14,16 @@ module trigger_header character(len=52) :: score_name ! the name of the score integer :: score_index ! the index of the score real(8) :: variance=0.0 ! temp variance container - real(8) :: std_dev =0.0 ! temp std. dev. container + real(8) :: std_dev =0.0 ! temp std. dev. container real(8) :: rel_err =0.0 ! temp rel. err. container end type TriggerObject - + !=============================================================================== ! KTRIGGER describes a user-specified precision trigger for k-effective !=============================================================================== type KTrigger integer :: trigger_type = 0 - real(8) :: threshold = 0 + real(8) :: threshold = 0 end type KTrigger end module trigger_header diff --git a/src/vector_header.F90 b/src/vector_header.F90 index 424aedd686..1ada0fba74 100644 --- a/src/vector_header.F90 +++ b/src/vector_header.F90 @@ -9,12 +9,12 @@ module vector_header integer :: n ! number of rows/cols in matrix real(8), allocatable :: data(:) ! where vector data is stored real(8), pointer :: val(:) ! pointer to vector data - contains - procedure :: create => vector_create - procedure :: destroy => vector_destroy - procedure :: add_value => vector_add_value - procedure :: copy => vector_copy - ! TODO: procedure :: write => vector_write + contains + procedure :: create => vector_create + procedure :: destroy => vector_destroy + procedure :: add_value => vector_add_value + procedure :: copy => vector_copy + ! TODO: procedure :: write => vector_write end type Vector contains diff --git a/src/xml_interface.F90 b/src/xml_interface.F90 index 1a24bc14b3..4ae05ee281 100644 --- a/src/xml_interface.F90 +++ b/src/xml_interface.F90 @@ -92,7 +92,7 @@ contains ! Check if node exists if (associated(temp_ptr)) return - ! Check for a sub-element + ! Check for a sub-element elem_list => getChildrenByTagName(ptr, trim(node_name)) ! Get the length of the list @@ -122,7 +122,7 @@ contains ! Set found to false found_ = .false. - ! Check for a sub-element + ! Check for a sub-element elem_list => getChildrenByTagName(in_ptr, trim(node_name)) ! Get the length of the list @@ -147,7 +147,7 @@ contains type(Node), pointer, intent(in) :: in_ptr type(NodeList), pointer, intent(out) :: out_ptr - ! Check for a sub-element + ! Check for a sub-element out_ptr => getChildrenByTagName(in_ptr, trim(node_name)) end subroutine get_node_list @@ -176,7 +176,7 @@ contains type(NodeList), pointer, intent(in) :: in_ptr type(Node), pointer, intent(out) :: out_ptr - ! Check for a sub-element + ! Check for a sub-element out_ptr => item(in_ptr, idx - 1) end subroutine get_list_item @@ -199,7 +199,7 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " & &// getNodeName(ptr) // ".") end if @@ -210,7 +210,7 @@ contains else call extractDataContent(temp_ptr, result_int) end if - + end subroutine get_node_value_integer !=============================================================================== @@ -231,18 +231,18 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " & &// getNodeName(ptr) // ".") end if - + ! Extract value if (node_type == ATTR_NODE) then call extractDataAttribute(ptr, node_name, result_long) else call extractDataContent(temp_ptr, result_long) end if - + end subroutine get_node_value_long !=============================================================================== @@ -263,18 +263,18 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " & &// getNodeName(ptr) // ".") end if - + ! Extract value if (node_type == ATTR_NODE) then call extractDataAttribute(ptr, node_name, result_double) else call extractDataContent(temp_ptr, result_double) end if - + end subroutine get_node_value_double !=============================================================================== @@ -295,18 +295,18 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " & &// getNodeName(ptr) // ".") end if - + ! Extract value if (node_type == ATTR_NODE) then call extractDataAttribute(ptr, node_name, result_int) else call extractDataContent(temp_ptr, result_int) end if - + end subroutine get_node_array_integer !=============================================================================== @@ -327,18 +327,18 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " & &// getNodeName(ptr) // ".") end if - + ! Extract value if (node_type == ATTR_NODE) then call extractDataAttribute(ptr, node_name, result_double) else call extractDataContent(temp_ptr, result_double) end if - + end subroutine get_node_array_double !=============================================================================== @@ -359,18 +359,18 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " & &// getNodeName(ptr) // ".") end if - + ! Extract value if (node_type == ATTR_NODE) then call extractDataAttribute(ptr, node_name, result_string) else call extractDataContent(temp_ptr, result_string) end if - + end subroutine get_node_array_string !=============================================================================== @@ -391,18 +391,18 @@ contains call get_node(ptr, node_name, temp_ptr, node_type, found) ! Leave if it was not found - if (.not. found) then + if (.not. found) then call fatal_error("Node " // node_name // " not part of Node " // & getNodeName(ptr) // ".") end if - + ! Extract value if (node_type == ATTR_NODE) then call extractDataAttribute(ptr, node_name, result_str) else call extractDataContent(temp_ptr, result_str) end if - + end subroutine get_node_value_string !=============================================================================== @@ -513,7 +513,7 @@ contains ! Check if node exists if (associated(out_ptr)) return - ! Check for a sub-element + ! Check for a sub-element elem_list => getChildrenByTagName(in_ptr, trim(node_name)) ! Get the length of the list diff --git a/tests/check_source.py b/tests/check_source.py new file mode 100755 index 0000000000..3a79d44c28 --- /dev/null +++ b/tests/check_source.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python + +from __future__ import print_function + +import glob +from string import whitespace +from sys import exit +from textwrap import TextWrapper + + +################################################################################ +# Fortran reading/parsing backend. +################################################################################ + + +class LineOfCode(object): + """Contains and provides basic info about a line of Fortran 90 code.""" + def __init__(self, number, content, is_continuation=False, + string_terminator=None): + # Initialize member variables. + self.number = number + self.content = content + self.is_continuation = is_continuation + self.is_continued = False + assert (string_terminator is None or + string_terminator == "'" or + string_terminator == '"') + self.initial_string_terminator = string_terminator + self.final_string_terminator = None + self.is_comment_only = False + + # Parse the string. + self.parse() + + def __repr__(self): + rep = 'LineOfCode: line number = {0:d}\n'.format(self.number) + rep += '\tis_continuation = ' + str(self.is_continuation) + '\n' + rep += '\tis_continued = ' + str(self.is_continued) + '\n' + rep += ('\tinitial_string_terminator = ' + + str(self.initial_string_terminator) + '\n') + rep += ('\tfinal_string_terminator = ' + + str(self.final_string_terminator) + '\n') + rep += '\tis_comment_only = ' + str(self.is_comment_only) + '\n' + rep += '\tContent:\n' + self.content + return rep + + def __str__(self): + return repr(self) + + def parse(self): + # Initialize the string variables. + if self.initial_string_terminator == "'": + in_a_single_quote = True + in_a_double_quote = False + elif self.initial_string_terminator == '"': + in_a_single_quote = False + in_a_double_quote = True + else: + in_a_single_quote = False + in_a_double_quote = False + + # Initialize other variables. + in_a_comment = False + ends_with_ampersand = False + has_real_content = False + + # Parse through the line. + for char in self.content: + # Check for the start or end of strings. + if char == "'" and in_a_single_quote: + in_a_single_quote = False + elif char == "'" and not in_a_double_quote: + in_a_single_quote = True + elif char == '"' and in_a_double_quote: + in_a_double_quote = False + elif char == '"' and not in_a_single_quote: + in_a_double_quote = True + + # Check for the start of a comment. + if (char == "!" and not in_a_single_quote + and not in_a_double_quote): + in_a_comment = True + break # Don't care about anything in a comment. + + # Check for a continuation ampersand. + if char == "&": + ends_with_ampersand = True + elif all([char != w for w in whitespace]): + ends_with_ampersand = False + + # Check to see if there is any real content (non-whitespace, not in + # a comment) + if (not in_a_comment) and all([char != w for w in whitespace]): + has_real_content = True + + # Make sure nothing went terribly wrong. + assert not (in_a_single_quote and in_a_double_quote) + assert not (in_a_single_quote and in_a_comment) + assert not (in_a_double_quote and in_a_comment) + + # Is this line continued onto the next? + if ends_with_ampersand: + self.is_continued = True + + # Is a multiline string continued on the next line? + if in_a_single_quote: + assert self.is_continued + self.final_string_terminator = "'" + if in_a_double_quote: + assert self.is_continued + self.final_string_terminator = '"' + + # Is this line a comment-only line? + if (not has_real_content) and in_a_comment: + self.is_comment_only = True + + def get_indent(self): + """Return the number of indentation spaces prefixing this line.""" + return len(self.content) - len(self.content.lstrip(' ')) + + def contains_whitespace_only(self): + """Return True/False if all characters in the line are whitespace.""" + if len(self.content.strip('\n')) == 0: return False + is_ws = [ any([char == ws for ws in whitespace]) + for char in self.content.strip('\n') ] + return all(is_ws) + + def has_trailing_whitespace(self): + """Return True/False if this line ends with a whitespace character.""" + stripped = self.content.strip('\n') + if len(stripped) == 0: return False + return any([stripped[-1] == ws for ws in whitespace]) + + def contains_tab(self): + """Return True/False if a tab character appears in the line.""" + return '\t' in self.content + + +def read_lines_of_code(fname): + line_num = 0 + cont = False + str_term = None + with open(fname) as fin: + for line in fin: + loc = LineOfCode(line_num, line, is_continuation=cont, + string_terminator=str_term) + cont = loc.is_continued + str_term = loc.final_string_terminator + line_num += 1 + yield loc + + +################################################################################ +# Error checking. +################################################################################ + + +def print_error(fname, line_number, err_msg): + header = "Error in file {0}, line {1}:".format(fname, line_number + 1) + + tw = TextWrapper(width=80, initial_indent=' '*4, subsequent_indent=' '*4) + body = '\n'.join(tw.wrap(err_msg)) + + print(header + '\n' + body + '\n') + + +def check_source(fname): + """Make sure the given Fortran source file meets OpenMC standards. + + If errors are found, messages will be printed to the screen describing the + error. The function will return True if no errors were found or False + otherwise. + """ + good_code = True + base_indent = 0 + + for loc in read_lines_of_code(fname): + # Check for extra whitespace errors. + if loc.contains_whitespace_only(): + good_code = False + print_error(fname, loc.number, "Line contains whitespace " + "characters but no content. Please remove whitespace.") + elif loc.has_trailing_whitespace(): + good_code = False + print_error(fname, loc.number, "Line has trailing whitespace after" + " the content. Please remove trailing whitespace.") + if loc.contains_tab(): + good_code = False + print_error(fname, loc.number, "Line contains a tab character. " + "Please replace with single whitespace characters.") + + # Check indentation. + current_indent = loc.get_indent() + if ((not loc.is_continuation) and (not loc.is_comment_only) and + (not loc.contains_whitespace_only()) and current_indent % 2 != 0): + good_code = False + print_error(fname, loc.number, "Line is indented an odd number of " + "spaces. All non-continuation lines should be indented an " + "even number of spaces.") + if loc.is_continuation and current_indent < base_indent + 5: + good_code = False + print_error(fname, loc.number, "Continuation lines must be " + "indented by at least 5 spaces, but this line is indented {0}" + " spaces.".format(current_indent - base_indent)) + + # Set base indentation for next lines. + if not loc.is_continuation: + base_indent = current_indent + + return good_code + + +################################################################################ +# Main loop. +################################################################################ + + +if __name__ == '__main__': + # Get a list of the F90 source files. + f90_files = glob.glob('../src/*.F90') + + # Make sure we found the source files. + assert len(f90_files) != 0, 'No .F90 source files found.' + + # Make sure all the F90 source files meet our standards. + good_code = [check_source(fname) for fname in f90_files] + if not all(good_code): + print("ERROR: The Fortran source code does not meet OpenMC's standards") + exit(-1) + else: + print("SUCCESS! Looks like the Fortran source meets our standards") + exit(0) diff --git a/tests/test_basic/results_true.dat b/tests/test_basic/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_basic/results_true.dat +++ b/tests/test_basic/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_cmfd_feed/results_true.dat b/tests/test_cmfd_feed/results_true.dat index a1dd0d815e..26380d403f 100644 --- a/tests/test_cmfd_feed/results_true.dat +++ b/tests/test_cmfd_feed/results_true.dat @@ -1,128 +1,128 @@ k-combined: -1.177396E+00 4.883437E-03 +1.172666E+00 8.502438E-03 tally 1: -1.107335E+01 -1.235221E+01 -2.002676E+01 -4.017045E+01 -2.844184E+01 -8.111731E+01 -3.428492E+01 -1.177848E+02 -3.735839E+01 -1.397523E+02 -3.894180E+01 -1.517824E+02 -3.528006E+01 -1.246308E+02 -2.863448E+01 -8.222321E+01 -2.125384E+01 -4.535192E+01 -1.112124E+01 -1.241089E+01 +1.170812E+01 +1.376785E+01 +2.179886E+01 +4.765478E+01 +2.945614E+01 +8.709999E+01 +3.527293E+01 +1.245879E+02 +3.829349E+01 +1.470691E+02 +3.709040E+01 +1.379455E+02 +3.380335E+01 +1.145311E+02 +2.801351E+01 +7.871047E+01 +2.029625E+01 +4.131602E+01 +1.084302E+01 +1.180329E+01 tally 2: -2.243113E+01 -2.535057E+01 -1.557550E+01 -1.222813E+01 -2.164704E+00 -2.389690E-01 -4.049814E+01 -8.218116E+01 -2.854669E+01 -4.085264E+01 -3.934452E+00 -7.833208E-01 -5.706024E+01 -1.633739E+02 -4.049737E+01 -8.234850E+01 -5.231368E+00 -1.386110E+00 -6.798682E+01 -2.320807E+02 -4.819178E+01 -1.166820E+02 -6.247056E+00 -1.968990E+00 -7.449317E+01 -2.782374E+02 -5.315156E+01 -1.417287E+02 -6.667584E+00 -2.250879E+00 -7.530107E+01 -2.849330E+02 -5.378916E+01 -1.454619E+02 -7.071012E+00 -2.522919E+00 -6.820303E+01 -2.335083E+02 -4.850330E+01 -1.181013E+02 -6.241747E+00 -1.973368E+00 -5.831373E+01 -1.704779E+02 -4.149124E+01 -8.633656E+01 -5.385636E+00 -1.468642E+00 -4.184350E+01 -8.792430E+01 -2.971699E+01 -4.435896E+01 -3.784806E+00 -7.343249E-01 -2.202673E+01 -2.444732E+01 -1.531988E+01 -1.183160E+01 -2.073873E+00 -2.272561E-01 +2.270565E+01 +2.599927E+01 +1.590852E+01 +1.276260E+01 +2.252857E+00 +2.614120E-01 +4.313167E+01 +9.326539E+01 +3.044479E+01 +4.648169E+01 +4.023051E+00 +8.172006E-01 +5.859113E+01 +1.725665E+02 +4.171599E+01 +8.755981E+01 +5.512216E+00 +1.531207E+00 +6.892516E+01 +2.383198E+02 +4.904413E+01 +1.207096E+02 +6.542718E+00 +2.155749E+00 +7.421495E+01 +2.764539E+02 +5.288881E+01 +1.405388E+02 +6.811354E+00 +2.358827E+00 +7.278191E+01 +2.661597E+02 +5.169924E+01 +1.343999E+02 +6.516967E+00 +2.148745E+00 +6.655238E+01 +2.222812E+02 +4.729758E+01 +1.123214E+02 +6.102046E+00 +1.890147E+00 +5.708495E+01 +1.636585E+02 +4.068603E+01 +8.317681E+01 +5.394757E+00 +1.465413E+00 +4.136562E+01 +8.598520E+01 +2.958591E+01 +4.402226E+01 +3.765802E+00 +7.200302E-01 +2.275517E+01 +2.614738E+01 +1.589295E+01 +1.276624E+01 +2.232715E+00 +2.558645E-01 tally 3: -1.500439E+01 -1.135466E+01 -9.942586E-01 -5.051831E-02 -2.744453E+01 -3.776958E+01 -1.781992E+00 -1.612021E-01 -3.901013E+01 -7.642401E+01 -2.472924E+00 -3.077607E-01 -4.642527E+01 -1.082730E+02 -2.924369E+00 -4.335819E-01 -5.109083E+01 -1.309660E+02 -3.325865E+00 -5.592642E-01 -5.182512E+01 -1.350762E+02 -3.259912E+00 -5.350517E-01 -4.672480E+01 -1.095974E+02 -3.097309E+00 -4.854729E-01 -3.997405E+01 -8.014326E+01 -2.589176E+00 -3.374615E-01 -2.861624E+01 -4.114210E+01 -1.806237E+00 -1.656944E-01 -1.474531E+01 -1.096355E+01 -9.807860E-01 -4.934364E-02 +1.529144E+01 +1.179942E+01 +1.023883E+00 +5.386625E-02 +2.936854E+01 +4.326483E+01 +1.881629E+00 +1.788063E-01 +4.015056E+01 +8.114284E+01 +2.594958E+00 +3.407980E-01 +4.720593E+01 +1.118311E+02 +3.161769E+00 +5.053887E-01 +5.095790E+01 +1.304930E+02 +3.308202E+00 +5.528151E-01 +4.979520E+01 +1.246892E+02 +3.163884E+00 +5.062497E-01 +4.554330E+01 +1.041770E+02 +3.019145E+00 +4.618487E-01 +3.921119E+01 +7.727273E+01 +2.472070E+00 +3.099171E-01 +2.843166E+01 +4.067093E+01 +1.823607E+00 +1.688171E-01 +1.530477E+01 +1.184246E+01 +1.047996E+00 +5.549017E-02 tally 4: 0.000000E+00 0.000000E+00 @@ -160,8 +160,8 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -3.050887E+00 -4.698799E-01 +3.111592E+00 +4.883699E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -208,10 +208,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -5.388951E+00 -1.456464E+00 -2.664528E+00 -3.577345E-01 +5.536088E+00 +1.540676E+00 +2.727975E+00 +3.757452E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -256,10 +256,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -7.165280E+00 -2.573230E+00 -4.930263E+00 -1.218988E+00 +7.518115E+00 +2.840502E+00 +5.271874E+00 +1.398895E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -304,10 +304,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -8.550278E+00 -3.668687E+00 -6.985934E+00 -2.450395E+00 +8.764240E+00 +3.855378E+00 +7.176540E+00 +2.591613E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -352,10 +352,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -9.236725E+00 -4.281659E+00 -8.429932E+00 -3.565265E+00 +9.381092E+00 +4.414024E+00 +8.597689E+00 +3.710217E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -400,10 +400,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -9.396613E+00 -4.431004E+00 -9.307625E+00 -4.351276E+00 +9.158655E+00 +4.215178E+00 +9.188880E+00 +4.244766E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -448,10 +448,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -8.721885E+00 -3.821463E+00 -9.438995E+00 -4.479948E+00 +8.362511E+00 +3.509173E+00 +9.159213E+00 +4.209143E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -496,10 +496,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -7.096946E+00 -2.525113E+00 -8.605114E+00 -3.710134E+00 +7.029505E+00 +2.479106E+00 +8.613258E+00 +3.719199E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -544,10 +544,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -5.222832E+00 -1.373166E+00 -7.480684E+00 -2.804650E+00 +5.119892E+00 +1.320586E+00 +7.401001E+00 +2.749355E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -592,10 +592,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -2.726690E+00 -3.773397E-01 -5.470375E+00 -1.504111E+00 +2.765680E+00 +3.903229E-01 +5.461998E+00 +1.501206E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -642,8 +642,8 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -3.026290E+00 -4.597502E-01 +3.044921E+00 +4.656739E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -662,114 +662,114 @@ k cmfd 0.000000E+00 0.000000E+00 0.000000E+00 -1.150583E+00 -1.159578E+00 -1.162798E+00 -1.171003E+00 -1.162732E+00 -1.165591E+00 -1.166032E+00 -1.165387E+00 -1.165451E+00 -1.170726E+00 -1.170820E+00 -1.167945E+00 -1.166050E+00 -1.165757E+00 -1.167631E+00 -1.168366E+00 +1.177990E+00 +1.160010E+00 +1.155990E+00 +1.160167E+00 +1.162166E+00 +1.161566E+00 +1.164454E+00 +1.166269E+00 +1.168529E+00 +1.168622E+00 +1.170296E+00 +1.168644E+00 +1.172975E+00 +1.176543E+00 +1.173389E+00 +1.178422E+00 cmfd entropy 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.215201E+00 -3.212850E+00 -3.214094E+00 -3.208054E+00 -3.212891E+00 -3.213349E+00 -3.208290E+00 -3.206895E+00 -3.208786E+00 -3.209630E+00 -3.212321E+00 -3.211750E+00 -3.212453E+00 -3.213370E+00 -3.211791E+00 -3.212685E+00 +3.214145E+00 +3.225292E+00 +3.229509E+00 +3.228530E+00 +3.224203E+00 +3.225547E+00 +3.224720E+00 +3.224546E+00 +3.224527E+00 +3.223579E+00 +3.224380E+00 +3.223483E+00 +3.222819E+00 +3.223067E+00 +3.224007E+00 +3.220616E+00 cmfd balance 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -6.348026E-03 -5.102747E-03 -4.043947E-03 -3.952742E-03 -2.533934E-03 -2.215030E-03 -2.945032E-03 -2.597862E-03 -2.300873E-03 -1.991974E-03 -1.679430E-03 -1.636923E-03 -1.581336E-03 -1.431472E-03 -1.419168E-03 -1.256242E-03 +4.801684E-03 +2.802571E-03 +1.828029E-03 +2.220542E-03 +1.709900E-03 +2.008246E-03 +2.578373E-03 +2.000076E-03 +1.645365E-03 +1.462882E-03 +1.208273E-03 +1.146126E-03 +1.214196E-03 +1.082376E-03 +8.967163E-04 +1.154433E-03 cmfd dominance ratio 0.000E+00 0.000E+00 0.000E+00 0.000E+00 - 5.524E-01 - 5.476E-01 + 5.472E-01 + 5.521E-01 + 5.445E-01 + 5.527E-01 + 5.488E-01 + 5.078E-01 5.474E-01 - 5.419E-01 - 5.443E-01 - 5.448E-01 - 5.408E-01 - 5.391E-01 - 5.400E-01 - 5.396E-01 - 5.408E-01 - 5.398E-01 - 5.398E-01 - 5.399E-01 - 5.388E-01 - 5.389E-01 + 5.475E-01 + 5.473E-01 + 5.469E-01 + 5.461E-01 + 5.455E-01 + 5.454E-01 + 5.459E-01 + 5.460E-01 + 5.432E-01 cmfd openmc source comparison 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -8.388554E-03 -7.868057E-03 -6.387209E-03 -6.979018E-03 -5.634468E-03 -5.579466E-03 -5.647779E-03 -5.289856E-03 -4.550547E-03 -4.373716E-03 -4.042350E-03 -3.813510E-03 -3.749151E-03 -3.358126E-03 -3.562360E-03 -3.904942E-03 +9.186654E-03 +6.033650E-03 +3.920380E-03 +4.218939E-03 +4.591972E-03 +4.042772E-03 +4.100500E-03 +3.664495E-03 +3.266803E-03 +3.164213E-03 +3.310474E-03 +3.165822E-03 +3.849586E-03 +2.718170E-03 +2.431480E-03 +3.322902E-03 cmfd source -4.142294E-02 -7.484382E-02 -1.050784E-01 -1.256771E-01 -1.444717E-01 -1.420230E-01 -1.350735E-01 -1.118744E-01 -7.755343E-02 -4.198177E-02 +4.296288E-02 +7.964357E-02 +1.107722E-01 +1.359821E-01 +1.425321E-01 +1.356719E-01 +1.285829E-01 +1.040603E-01 +7.630230E-02 +4.348975E-02 diff --git a/tests/test_cmfd_nofeed/results_true.dat b/tests/test_cmfd_nofeed/results_true.dat index da9b802e7e..e70287bf77 100644 --- a/tests/test_cmfd_nofeed/results_true.dat +++ b/tests/test_cmfd_nofeed/results_true.dat @@ -1,128 +1,128 @@ k-combined: -1.170519E+00 8.422960E-03 +1.171115E+00 6.173328E-03 tally 1: -1.078122E+01 -1.170828E+01 -1.999878E+01 -4.018561E+01 -2.812898E+01 -7.936860E+01 -3.362276E+01 -1.133841E+02 -3.714459E+01 -1.382628E+02 -3.828125E+01 -1.470408E+02 -3.599263E+01 -1.299451E+02 -3.090749E+01 -9.596105E+01 -2.144103E+01 -4.630323E+01 -1.143002E+01 -1.314355E+01 +1.151618E+01 +1.331859E+01 +2.120660E+01 +4.514836E+01 +2.759616E+01 +7.639131E+01 +3.216668E+01 +1.036501E+02 +3.664720E+01 +1.345450E+02 +3.771246E+01 +1.424209E+02 +3.523750E+01 +1.245225E+02 +2.973298E+01 +8.860064E+01 +2.152108E+01 +4.647187E+01 +1.169538E+01 +1.375047E+01 tally 2: -2.247115E+01 -2.548076E+01 -1.574700E+01 -1.251937E+01 -2.119907E+00 -2.284737E-01 -4.160187E+01 -8.733627E+01 -2.945600E+01 -4.383448E+01 -4.027136E+00 -8.279807E-01 -5.722117E+01 -1.643758E+02 -4.057100E+01 -8.267151E+01 -5.388803E+00 -1.465180E+00 -6.769175E+01 -2.300722E+02 -4.800300E+01 -1.157663E+02 -6.213554E+00 -1.946061E+00 -7.376629E+01 -2.729166E+02 -5.253400E+01 -1.385018E+02 -6.438590E+00 -2.103693E+00 -7.454128E+01 -2.790080E+02 -5.311800E+01 -1.417584E+02 -6.784745E+00 -2.328936E+00 -6.907125E+01 -2.397912E+02 -4.912000E+01 -1.213330E+02 -6.405754E+00 -2.075535E+00 -6.012056E+01 -1.815248E+02 -4.280600E+01 -9.207864E+01 -5.534450E+00 -1.555396E+00 -4.229808E+01 -8.999380E+01 -3.003200E+01 -4.541718E+01 -3.844618E+00 -7.537006E-01 -2.272774E+01 -2.597695E+01 -1.577800E+01 -1.252728E+01 -2.221451E+00 -2.528223E-01 +2.274639E+01 +2.606952E+01 +1.588200E+01 +1.270445E+01 +2.140989E+00 +2.357207E-01 +4.205792E+01 +8.880940E+01 +2.970000E+01 +4.427086E+01 +3.919645E+00 +7.773724E-01 +5.560960E+01 +1.559764E+02 +3.947900E+01 +7.872700E+01 +5.238942E+00 +1.400918E+00 +6.492259E+01 +2.117369E+02 +4.612200E+01 +1.069035E+02 +5.989449E+00 +1.813201E+00 +7.217377E+01 +2.608499E+02 +5.148500E+01 +1.327923E+02 +6.607336E+00 +2.205529E+00 +7.305896E+01 +2.681514E+02 +5.187500E+01 +1.352457E+02 +6.722921E+00 +2.290262E+00 +6.884269E+01 +2.380550E+02 +4.904800E+01 +1.208314E+02 +6.177320E+00 +1.927173E+00 +5.902100E+01 +1.748370E+02 +4.201000E+01 +8.858460E+01 +5.542381E+00 +1.549108E+00 +4.268091E+01 +9.151405E+01 +3.029500E+01 +4.614050E+01 +3.822093E+00 +7.420139E-01 +2.362279E+01 +2.812041E+01 +1.653100E+01 +1.377737E+01 +2.336090E+00 +2.851840E-01 tally 3: -1.517200E+01 -1.162361E+01 -9.172562E-01 -4.342120E-02 -2.835000E+01 -4.061736E+01 -1.868192E+00 -1.761390E-01 -3.911800E+01 -7.686442E+01 -2.478956E+00 -3.088180E-01 -4.617600E+01 -1.071239E+02 -2.980518E+00 -4.488545E-01 -5.059100E+01 -1.284662E+02 -3.257651E+00 -5.341674E-01 -5.115000E+01 -1.314866E+02 -3.365441E+00 -5.729274E-01 -4.732100E+01 -1.126317E+02 -3.051596E+00 -4.705140E-01 -4.120700E+01 -8.535705E+01 -2.704451E+00 -3.705800E-01 -2.900900E+01 -4.238065E+01 -1.872660E+00 -1.780668E-01 -1.520000E+01 -1.162785E+01 -1.007084E+00 -5.171907E-02 +1.523800E+01 +1.170551E+01 +1.071050E+00 +5.839198E-02 +2.862100E+01 +4.111143E+01 +1.892774E+00 +1.812712E-01 +3.804200E+01 +7.314552E+01 +2.423654E+00 +2.968521E-01 +4.433500E+01 +9.878201E+01 +2.823929E+00 +4.033633E-01 +4.954300E+01 +1.229796E+02 +3.226029E+00 +5.265680E-01 +4.999000E+01 +1.256279E+02 +3.232464E+00 +5.286388E-01 +4.723500E+01 +1.120638E+02 +3.015553E+00 +4.606928E-01 +4.050800E+01 +8.237529E+01 +2.592073E+00 +3.412174E-01 +2.911800E+01 +4.263022E+01 +1.875109E+00 +1.785438E-01 +1.592800E+01 +1.279461E+01 +1.038638E+00 +5.538157E-02 tally 4: 0.000000E+00 0.000000E+00 @@ -160,8 +160,8 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -3.017000E+00 -4.575810E-01 +3.065000E+00 +4.742170E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -208,10 +208,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -5.447000E+00 -1.491865E+00 -2.697000E+00 -3.709330E-01 +5.420000E+00 +1.474674E+00 +2.693000E+00 +3.667090E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -256,10 +256,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -7.403000E+00 -2.751813E+00 -5.151000E+00 -1.334701E+00 +7.243000E+00 +2.637431E+00 +5.092000E+00 +1.305200E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -304,10 +304,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -8.635000E+00 -3.741143E+00 -7.048000E+00 -2.495310E+00 +8.280000E+00 +3.445670E+00 +6.765000E+00 +2.307253E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -352,10 +352,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -9.381000E+00 -4.415619E+00 -8.456000E+00 -3.587840E+00 +8.980000E+00 +4.046484E+00 +8.108000E+00 +3.299338E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -400,10 +400,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -9.297000E+00 -4.334551E+00 -9.198000E+00 -4.240540E+00 +9.016000E+00 +4.079320E+00 +8.962000E+00 +4.034032E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -448,10 +448,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -8.737000E+00 -3.843559E+00 -9.508000E+00 -4.553256E+00 +8.465000E+00 +3.595665E+00 +9.296000E+00 +4.340524E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -496,10 +496,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -7.338000E+00 -2.709162E+00 -8.888000E+00 -3.969398E+00 +7.247000E+00 +2.638527E+00 +8.865000E+00 +3.946315E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -544,10 +544,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -5.354000E+00 -1.442386E+00 -7.584000E+00 -2.887298E+00 +5.179000E+00 +1.353661E+00 +7.492000E+00 +2.817588E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -592,10 +592,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -2.707000E+00 -3.709270E-01 -5.507000E+00 -1.522587E+00 +2.821000E+00 +4.067990E-01 +5.617000E+00 +1.587757E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -642,8 +642,8 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -3.112000E+00 -4.868600E-01 +3.134000E+00 +4.937920E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -662,114 +662,114 @@ k cmfd 0.000000E+00 0.000000E+00 0.000000E+00 -1.150583E+00 -1.160876E+00 -1.160893E+00 -1.157393E+00 -1.157826E+00 -1.163206E+00 -1.169286E+00 -1.169322E+00 -1.169866E+00 -1.177576E+00 -1.183172E+00 -1.184784E+00 -1.186581E+00 -1.183233E+00 -1.181032E+00 -1.180107E+00 +1.177990E+00 +1.160491E+00 +1.145875E+00 +1.148719E+00 +1.140676E+00 +1.141509E+00 +1.143597E+00 +1.141954E+00 +1.150311E+00 +1.155088E+00 +1.155464E+00 +1.152786E+00 +1.156950E+00 +1.159040E+00 +1.160571E+00 +1.161251E+00 cmfd entropy 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.215201E+00 -3.214833E+00 -3.211409E+00 -3.218241E+00 -3.220068E+00 -3.217667E+00 -3.214425E+00 -3.215427E+00 -3.214339E+00 -3.212343E+00 -3.211075E+00 -3.211281E+00 -3.209704E+00 -3.210597E+00 -3.213481E+00 -3.213943E+00 +3.214145E+00 +3.222082E+00 +3.225870E+00 +3.230292E+00 +3.228784E+00 +3.228863E+00 +3.228331E+00 +3.230222E+00 +3.231212E+00 +3.230979E+00 +3.229831E+00 +3.229258E+00 +3.228559E+00 +3.227915E+00 +3.227427E+00 +3.229561E+00 cmfd balance 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -6.348026E-03 -4.651411E-03 -3.551519E-03 -2.893286E-03 -2.930836E-03 -2.342081E-03 -2.443793E-03 -2.380658E-03 -2.091259E-03 -2.144887E-03 -2.055334E-03 -1.907704E-03 -1.879350E-03 -1.598308E-03 -1.247988E-03 -1.179680E-03 +4.801684E-03 +3.228380E-03 +2.568997E-03 +2.195796E-03 +2.248884E-03 +3.405416E-03 +2.332198E-03 +2.576061E-03 +2.326651E-03 +2.324425E-03 +2.205364E-03 +2.112702E-03 +1.864656E-03 +1.804877E-03 +1.557106E-03 +1.312058E-03 cmfd dominance ratio 0.000E+00 0.000E+00 0.000E+00 0.000E+00 - 5.524E-01 - 5.492E-01 - 5.459E-01 - 5.486E-01 - 5.475E-01 - 5.455E-01 - 5.433E-01 - 5.425E-01 - 5.412E-01 - 5.404E-01 - 5.399E-01 - 5.400E-01 - 5.401E-01 - 5.414E-01 - 5.433E-01 - 5.437E-01 + 5.472E-01 + 5.510E-01 + 5.519E-01 + 5.535E-01 + 5.535E-01 + 5.505E-01 + 5.488E-01 + 5.505E-01 + 5.510E-01 + 5.513E-01 + 5.510E-01 + 5.508E-01 + 5.487E-01 + 5.489E-01 + 5.481E-01 + 5.499E-01 cmfd openmc source comparison 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -8.388554E-03 -6.525044E-03 -5.810856E-03 -3.651620E-03 -3.448625E-03 -3.805838E-03 -4.064235E-03 -3.244723E-03 -3.963513E-03 -4.186768E-03 -3.785555E-03 -2.732731E-03 -2.308430E-03 -2.074797E-03 -1.581512E-03 -1.729988E-03 +9.186654E-03 +5.964812E-03 +4.465905E-03 +4.119425E-03 +4.973577E-03 +4.092492E-03 +4.063342E-03 +2.804589E-03 +3.632667E-03 +5.005042E-03 +3.428575E-03 +3.007070E-03 +3.091465E-03 +3.030625E-03 +2.751739E-03 +1.762364E-03 cmfd source -3.816410E-02 -7.860013E-02 -1.050204E-01 -1.270331E-01 -1.389768E-01 -1.438216E-01 -1.304530E-01 -1.155470E-01 -7.975741E-02 -4.262650E-02 +4.538792E-02 +8.103354E-02 +1.045198E-01 +1.221411E-01 +1.398214E-01 +1.401011E-01 +1.305055E-01 +1.120110E-01 +8.032924E-02 +4.414939E-02 diff --git a/tests/test_density_atombcm/results_true.dat b/tests/test_density_atombcm/results_true.dat index 384fb593eb..2956b53888 100644 --- a/tests/test_density_atombcm/results_true.dat +++ b/tests/test_density_atombcm/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.760126E+00 1.038820E-02 +1.752274E+00 4.032481E-02 diff --git a/tests/test_density_atomcm3/results_true.dat b/tests/test_density_atomcm3/results_true.dat index 3feb35ba1e..0bd16fc4de 100644 --- a/tests/test_density_atomcm3/results_true.dat +++ b/tests/test_density_atomcm3/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.092203E+00 1.990176E-02 +1.092376E+00 1.759788E-02 diff --git a/tests/test_density_kgm3/results_true.dat b/tests/test_density_kgm3/results_true.dat index c5942e1a23..6b008101fb 100644 --- a/tests/test_density_kgm3/results_true.dat +++ b/tests/test_density_kgm3/results_true.dat @@ -1,2 +1,2 @@ k-combined: -8.085745E-01 9.674599E-03 +7.994522E-01 1.065745E-02 diff --git a/tests/test_density_sum/results_true.dat b/tests/test_density_sum/results_true.dat index 418331925d..9b16f2d988 100644 --- a/tests/test_density_sum/results_true.dat +++ b/tests/test_density_sum/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.319139E-01 1.688777E-02 +3.231215E-01 6.421320E-03 diff --git a/tests/test_eigenvalue_genperbatch/results_true.dat b/tests/test_eigenvalue_genperbatch/results_true.dat index d6aac0453a..9e87c901d9 100644 --- a/tests/test_eigenvalue_genperbatch/results_true.dat +++ b/tests/test_eigenvalue_genperbatch/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.012381E-01 1.890480E-03 +3.015627E-01 5.978844E-03 diff --git a/tests/test_eigenvalue_no_inactive/results_true.dat b/tests/test_eigenvalue_no_inactive/results_true.dat index d7575db1fe..fbbe84cc37 100644 --- a/tests/test_eigenvalue_no_inactive/results_true.dat +++ b/tests/test_eigenvalue_no_inactive/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.066374E-01 7.794575E-03 +3.130246E-01 6.960311E-03 diff --git a/tests/test_energy_grid/results_true.dat b/tests/test_energy_grid/results_true.dat index 05cda2e980..9556a981bc 100644 --- a/tests/test_energy_grid/results_true.dat +++ b/tests/test_energy_grid/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.215828E-01 2.966835E-03 +3.155788E-01 7.559348E-03 diff --git a/tests/test_entropy/results_true.dat b/tests/test_entropy/results_true.dat index a3515ba2bb..8b37789c32 100644 --- a/tests/test_entropy/results_true.dat +++ b/tests/test_entropy/results_true.dat @@ -1,13 +1,13 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 entropy: 7.608094E+00 8.167702E+00 8.273634E+00 -8.238974E+00 -8.307173E+00 -8.239618E+00 -8.230443E+00 -8.201657E+00 -8.289158E+00 -8.364683E+00 +8.239452E+00 +8.234598E+00 +8.278421E+00 +8.260773E+00 +8.351860E+00 +8.303719E+00 +8.271058E+00 diff --git a/tests/test_filter_cell/results_true.dat b/tests/test_filter_cell/results_true.dat index 0838e7baed..f3aa5d89b1 100644 --- a/tests/test_filter_cell/results_true.dat +++ b/tests/test_filter_cell/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -1.517577E+01 -4.747271E+01 -3.151504E+00 -2.051857E+00 -4.536316E+01 -4.258781E+02 +1.423676E+01 +4.330937E+01 +2.914798E+00 +1.831649E+00 +4.088282E+01 +3.662539E+02 diff --git a/tests/test_filter_cellborn/results_true.dat b/tests/test_filter_cellborn/results_true.dat index d2fa7f7004..36dcf40d06 100644 --- a/tests/test_filter_cellborn/results_true.dat +++ b/tests/test_filter_cellborn/results_true.dat @@ -1,10 +1,10 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -7.449502E+01 -1.145793E+03 +7.007584E+01 +1.050827E+03 0.000000E+00 0.000000E+00 0.000000E+00 diff --git a/tests/test_filter_energy/results_true.dat b/tests/test_filter_energy/results_true.dat index 9e3ab7965b..e3f6cff98d 100644 --- a/tests/test_filter_energy/results_true.dat +++ b/tests/test_filter_energy/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -2.687671E+01 -1.475192E+02 -4.148025E+01 -3.443331E+02 -5.223662E+01 -5.466362E+02 -1.050254E+01 -2.218108E+01 +2.770022E+01 +1.559167E+02 +4.285040E+01 +3.679177E+02 +5.288354E+01 +5.619308E+02 +1.134904E+01 +2.579927E+01 diff --git a/tests/test_filter_energyout/results_true.dat b/tests/test_filter_energyout/results_true.dat index fa0bfa6466..649f4d7259 100644 --- a/tests/test_filter_energyout/results_true.dat +++ b/tests/test_filter_energyout/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -2.740000E+01 -1.516786E+02 -4.163000E+01 -3.469463E+02 -5.041000E+01 -5.097599E+02 -6.990000E+00 -9.850700E+00 +2.835000E+01 +1.631463E+02 +4.252000E+01 +3.622146E+02 +5.192000E+01 +5.401444E+02 +7.390000E+00 +1.097710E+01 diff --git a/tests/test_filter_group_transfer/results_true.dat b/tests/test_filter_group_transfer/results_true.dat index 2222558273..f2d5faa991 100644 --- a/tests/test_filter_group_transfer/results_true.dat +++ b/tests/test_filter_group_transfer/results_true.dat @@ -1,54 +1,54 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -2.470000E+01 -1.233286E+02 +2.571000E+01 +1.344145E+02 0.000000E+00 0.000000E+00 -7.000000E-02 -2.100000E-03 +2.000000E-02 +2.000000E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -8.590851E-01 -1.552999E-01 +8.909862E-01 +1.660072E-01 0.000000E+00 0.000000E+00 -2.474615E+00 -1.227479E+00 -2.700000E+00 -1.469800E+00 +2.269580E+00 +1.046926E+00 +2.640000E+00 +1.397800E+00 0.000000E+00 0.000000E+00 -3.712000E+01 -2.758636E+02 +3.799000E+01 +2.892451E+02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.370712E-01 -2.596756E-02 +3.267964E-01 +2.170374E-02 0.000000E+00 0.000000E+00 -9.771334E-01 -1.963983E-01 +8.811378E-01 +1.642094E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.440000E+00 -3.947400E+00 +4.510000E+00 +4.068900E+00 0.000000E+00 0.000000E+00 -4.688000E+01 -4.409726E+02 -2.867366E-02 -2.783031E-04 +4.842000E+01 +4.700146E+02 +6.079426E-02 +8.532151E-04 0.000000E+00 0.000000E+00 -1.080794E-01 -2.580055E-03 +1.182446E-01 +3.979568E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -57,11 +57,11 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.530000E+00 -2.494900E+00 -1.572766E-01 -5.137814E-03 -6.990000E+00 -9.850700E+00 -3.134136E-01 -2.138680E-02 +3.500000E+00 +2.455800E+00 +1.158638E-01 +2.993934E-03 +7.390000E+00 +1.097710E+01 +3.126942E-01 +2.185793E-02 diff --git a/tests/test_filter_material/results_true.dat b/tests/test_filter_material/results_true.dat index 3d15ea4322..86e1e943ce 100644 --- a/tests/test_filter_material/results_true.dat +++ b/tests/test_filter_material/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -2.819256E+01 -1.591068E+02 -6.599750E+00 -8.721650E+00 -5.383171E+01 -5.950793E+02 -4.140672E+01 -3.649396E+02 +2.923791E+01 +1.711686E+02 +6.753642E+00 +9.145065E+00 +4.921142E+01 +5.186991E+02 +4.731999E+01 +4.905260E+02 diff --git a/tests/test_filter_mesh_2d/results_true.dat b/tests/test_filter_mesh_2d/results_true.dat index 01aea5afe2..21946086b9 100644 --- a/tests/test_filter_mesh_2d/results_true.dat +++ b/tests/test_filter_mesh_2d/results_true.dat @@ -1,5 +1,5 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 @@ -45,8 +45,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.751430E-01 -7.658753E-01 +3.228098E-02 +1.042062E-03 +3.222708E-01 +1.038585E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -73,14 +75,26 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.182335E-01 +3.748630E-01 +2.711997E-01 +5.338821E-02 +3.359680E-01 +5.168399E-02 0.000000E+00 0.000000E+00 -1.287286E-01 -1.657106E-02 -7.512292E-01 -1.499955E-01 -2.231206E+00 -1.531548E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.706070E-01 +1.373496E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -95,120 +109,106 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -6.855163E-02 -4.699326E-03 -6.967594E-02 -4.854737E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.993440E-02 -9.986884E-03 -1.978123E-01 -3.912972E-02 -8.758664E-02 -7.671419E-03 -4.204632E-01 -7.722514E-02 -2.486465E+00 -1.923132E+00 -1.697091E-01 -1.631523E-02 -0.000000E+00 -0.000000E+00 +3.931419E-01 +9.002841E-02 +1.092722E+00 +3.733055E-01 +2.384227E+00 +1.926937E+00 +9.101131E-01 +3.634496E-01 +3.284661E-01 +1.078900E-01 0.000000E+00 0.000000E+00 6.885295E-02 4.740728E-03 0.000000E+00 0.000000E+00 -6.175782E-01 -2.022672E-01 -1.204200E-02 -8.137904E-05 -2.136417E-01 -1.678274E-02 -2.932366E-01 -4.285227E-02 -6.387464E-01 -1.526040E-01 +2.419633E-02 +5.854622E-04 +9.286912E-02 +7.247209E-03 +5.629729E-01 +9.281109E-02 +7.345786E-01 +1.755550E-01 +1.219449E-01 +1.487057E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.062751E+00 -3.899247E-01 -1.264401E+00 -5.654864E-01 -1.615537E+00 -5.605431E-01 -4.267750E-01 -1.013728E-01 -2.024264E+00 -9.373843E-01 -1.122195E-01 -7.011342E-03 -8.223839E-01 -2.170405E-01 -1.239203E+00 -4.165595E-01 -1.169828E+00 -4.406334E-01 -1.373464E+00 -6.398480E-01 -2.824398E+00 -2.991665E+00 -6.158518E-01 -1.951901E-01 -7.188149E-01 -1.091668E-01 -7.595527E-01 -2.108412E-01 -5.784902E-01 -1.362812E-01 -7.167515E-01 -3.225769E-01 -2.081496E-02 -4.332627E-04 -9.212853E-01 -2.277306E-01 -1.266470E+00 -6.777774E-01 +1.983303E-01 +3.797884E-02 +4.840974E-02 +1.266547E-03 +1.183485E+00 +4.184814E-01 +3.027254E-01 +8.598449E-02 +9.889868E-01 +4.608531E-01 +8.698103E-01 +4.598559E-01 +1.332831E+00 +4.809984E-01 +1.564949E+00 +5.782651E-01 +1.143572E+00 +4.399439E-01 +1.326651E+00 +6.376565E-01 +1.716813E+00 +1.314280E+00 +7.673229E-01 +2.364966E-01 +2.539284E+00 +1.945563E+00 +1.263219E+00 +4.919339E-01 +5.430042E-01 +1.300266E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.553587E-01 +1.738170E-01 +2.048487E+00 +1.239856E+00 3.761862E-01 8.452912E-02 -1.350273E-02 -1.823238E-04 -3.348203E-01 -6.603737E-02 -2.382593E-01 -2.884302E-02 -1.548117E+00 -7.256982E-01 -9.635803E-01 -4.452538E-01 -1.030188E+00 -3.496685E-01 -7.053043E-01 -2.814424E-01 -1.260458E-01 -8.365754E-03 -1.484515E+00 -7.183840E-01 -1.887042E+00 -1.143800E+00 -3.798783E+00 -4.487065E+00 -2.274180E+00 -1.991784E+00 -1.903719E-01 -3.237886E-02 -0.000000E+00 -0.000000E+00 0.000000E+00 0.000000E+00 +9.675232E-02 +9.361012E-03 +2.319594E-01 +2.331698E-02 +1.573495E+00 +6.394722E-01 +4.432570E-01 +1.005943E-01 +9.353148E-01 +3.125416E-01 +8.359366E-01 +2.985072E-01 +1.657665E+00 +9.207020E-01 +3.737550E+00 +3.558505E+00 +1.742376E+00 +8.732217E-01 +5.153816E+00 +6.543973E+00 +1.653035E+00 +1.061068E+00 +9.963191E-01 +3.716347E-01 +2.282805E-01 +2.383414E-02 +8.749983E-01 +2.714666E-01 1.728411E-01 1.190218E-02 9.250054E-02 @@ -219,28 +219,28 @@ tally 1: 1.711154E-02 3.218800E-01 7.906855E-02 -9.721141E-01 -3.463278E-01 -8.364857E-01 -2.612988E-01 -6.317454E-01 -1.837078E-01 -2.134394E-01 -1.710045E-02 -3.743814E-02 -1.401614E-03 -1.314651E+00 -7.700853E-01 -7.389940E-01 -2.322340E-01 -6.147456E-01 -1.001719E-01 -3.157573E+00 -2.794673E+00 -6.671644E-01 -1.996570E-01 -0.000000E+00 -0.000000E+00 +1.057036E+00 +3.778638E-01 +9.231639E-01 +2.991795E-01 +3.375678E-01 +1.041383E-01 +1.181686E-01 +8.023920E-03 +4.912969E-01 +2.073894E-01 +9.395786E-01 +4.653730E-01 +6.998437E-01 +2.917085E-01 +3.074214E+00 +2.819088E+00 +2.570673E+00 +1.358321E+00 +1.108912E+00 +3.843307E-01 +4.950896E-02 +2.451137E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -255,24 +255,24 @@ tally 1: 7.670183E-03 0.000000E+00 0.000000E+00 -9.451595E-01 -2.560533E-01 -2.255990E+00 -1.237092E+00 -9.318430E-01 -2.664794E-01 -5.320317E-01 -2.267827E-01 -9.971891E-01 -5.070904E-01 -7.088786E-02 -5.025089E-03 -3.601108E-02 -1.296798E-03 -3.683352E+00 -3.243246E+00 -3.708141E+00 -3.629996E+00 +6.469411E-01 +1.789549E-01 +7.829878E-01 +2.033989E-01 +8.994770E-01 +2.351438E-01 +4.712797E-01 +7.213659E-02 +2.133532E+00 +9.765422E-01 +4.533607E-01 +1.511497E-01 +1.878729E+00 +2.099266E+00 +4.287190E+00 +4.748691E+00 +1.961229E+00 +1.085868E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -285,28 +285,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.238471E-01 -1.533812E-02 -2.580606E+00 -1.878196E+00 -2.843921E+00 -1.997749E+00 -1.145124E+00 -4.571704E-01 -1.135664E+00 -4.319756E-01 +1.061692E-01 +1.127190E-02 +1.912282E-01 +3.656822E-02 +3.289827E-01 +1.075283E-01 +1.750908E+00 +8.092384E-01 +2.156426E+00 +9.498067E-01 +1.480596E+00 +6.002164E-01 +3.249216E-01 +1.005106E-01 8.875810E-02 7.878000E-03 -7.494206E-02 -5.616313E-03 -1.007353E+00 -3.619658E-01 -1.649444E+00 -7.918743E-01 +2.458176E-01 +4.377921E-02 +2.766784E+00 +2.677426E+00 +2.703501E+00 +2.548083E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -319,28 +319,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.286351E-01 -1.805028E-01 -1.595058E+00 -6.351621E-01 -1.568755E+00 -6.468874E-01 -2.301331E+00 -1.845232E+00 -4.577930E-01 -1.589685E-01 +1.981880E-01 +3.927848E-02 +2.789456E-01 +5.304261E-02 +3.897689E-01 +9.413685E-02 +9.140885E-01 +2.822974E-01 +1.887726E+00 +7.592780E-01 +1.841624E+00 +1.680236E+00 +4.059938E-01 +1.562853E-01 2.897077E-01 8.393057E-02 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -1.772980E-01 -3.143459E-02 +2.445051E-01 +5.978276E-02 +2.234657E-01 +2.716625E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -353,24 +353,24 @@ tally 1: 0.000000E+00 4.783335E-02 2.288029E-03 -8.744336E-01 -2.611835E-01 -1.754522E+00 -1.459573E+00 -3.549403E-01 -6.365363E-02 -1.843261E+00 -9.517219E-01 -1.009556E+00 -4.611770E-01 -1.540221E+00 -7.611324E-01 -8.030427E-01 -2.255596E-01 +5.606011E-01 +1.607491E-01 +1.908325E+00 +1.505641E+00 +1.255795E-01 +1.541635E-02 +7.395548E-01 +2.274416E-01 +5.986733E-01 +9.576988E-02 +1.095026E+00 +4.872910E-01 +1.043470E+00 +3.153965E-01 1.004973E+00 6.046910E-01 -1.664911E-01 -2.771927E-02 +1.724071E-01 +2.775427E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -385,114 +385,114 @@ tally 1: 0.000000E+00 5.470039E-01 2.992133E-01 -4.902613E-01 -1.163360E-01 +4.313918E-01 +1.128703E-01 1.088037E+00 6.007745E-01 1.013469E+00 5.646900E-01 -5.529904E-01 -2.308161E-01 -3.523818E-01 -1.241729E-01 -2.031343E-01 -4.126355E-02 -2.664927E+00 -2.323850E+00 -2.601166E+00 -1.593528E+00 -1.726764E+00 -6.491827E-01 -7.083106E-02 -3.090181E-03 +4.738741E-01 +2.245567E-01 +6.086518E-02 +3.704570E-03 +1.126662E+00 +4.675322E-01 +1.008459E+00 +4.616352E-01 +1.309592E+00 +5.665211E-01 +1.334050E+00 +5.264819E-01 +7.324996E-01 +2.577124E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +3.227736E-01 +1.041828E-01 +9.218244E-01 +2.000301E-01 +2.119900E+00 +1.123846E+00 +4.366404E-02 +1.015133E-03 0.000000E+00 0.000000E+00 -2.213571E-01 -2.455759E-02 -1.471329E+00 -7.001977E-01 -6.348345E-01 -1.603344E-01 -0.000000E+00 -0.000000E+00 -7.240936E-01 -1.701659E-01 -1.280272E+00 -3.624213E-01 -9.794833E-01 -4.411714E-01 +2.309730E-01 +2.570742E-02 +1.270911E+00 +4.617932E-01 +1.107069E+00 +4.574496E-01 1.269137E-01 1.610709E-02 -1.120245E-01 -1.254949E-02 +2.207099E-01 +4.871286E-02 +9.075694E-02 +8.236821E-03 +1.046380E-01 +7.875036E-03 +2.836364E-01 +3.508209E-02 +4.509177E-01 +7.393615E-02 +1.077505E+00 +3.209541E-01 +1.204982E-02 +1.451982E-04 0.000000E+00 0.000000E+00 -8.072240E-01 -2.272369E-01 -3.032594E-01 -5.076695E-02 -7.265258E-01 -1.893670E-01 -2.902123E-01 -3.514713E-02 +0.000000E+00 +0.000000E+00 +2.502937E-01 +5.035125E-02 +1.367234E+00 +5.128884E-01 +5.563575E-01 +2.510519E-01 +3.174809E-01 +1.007941E-01 +9.152129E-01 +2.609325E-01 +9.040668E-01 +2.263595E-01 +7.868812E-01 +2.436310E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -8.608891E-02 -4.586038E-03 -1.319691E+00 -5.856361E-01 -7.752262E-01 -3.101466E-01 -2.606443E-01 -6.793546E-02 -3.686503E-01 -6.346661E-02 -6.935008E-01 -1.992259E-01 -1.591064E+00 -6.804860E-01 -2.418186E-01 -5.847626E-02 0.000000E+00 0.000000E+00 -5.946272E-02 -3.535814E-03 -3.120645E-02 -9.738427E-04 -7.515014E-02 -5.647544E-03 -8.673868E-01 -3.013632E-01 -2.427216E-01 -2.798481E-02 +3.390904E-01 +4.907887E-02 +6.577001E-01 +2.346964E-01 +1.023735E-01 +8.287220E-03 1.499600E-02 2.248801E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -3.079687E-01 -5.125039E-02 -1.649743E+00 -9.187008E-01 -8.924207E-01 -2.872456E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.137844E-02 -5.984482E-03 +1.395650E-01 +1.947839E-02 +1.040555E+00 +3.043523E-01 +1.426976E+00 +6.218295E-01 +8.342758E-01 +2.539692E-01 +3.101170E-01 +9.617255E-02 +6.319919E-02 +3.629541E-03 +1.292774E-01 +8.674372E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -515,14 +515,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.400001E-01 -3.766524E-01 -2.709865E+00 -1.701203E+00 -2.332406E-01 -4.591958E-02 -9.579949E-02 -9.177542E-03 +9.587357E-01 +4.992769E-01 +1.756477E+00 +7.884472E-01 +2.541705E-01 +4.325743E-02 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -551,10 +551,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.366480E-01 -8.328374E-02 -7.405305E-01 -5.483854E-01 +2.422913E-01 +5.870510E-02 +0.000000E+00 +0.000000E+00 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 a67c77c034..239a9f01a6 100644 --- a/tests/test_filter_mesh_3d/results_true.dat +++ b/tests/test_filter_mesh_3d/results_true.dat @@ -1,5 +1,5 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 @@ -753,12 +753,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.228098E-02 +1.042062E-03 0.000000E+00 0.000000E+00 -4.083602E-01 -1.667580E-01 -4.667828E-01 -2.178862E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -789,6 +787,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.222708E-01 +1.038585E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1261,14 +1261,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.009463E-01 +4.037943E-02 +1.741795E-01 +3.033850E-02 +4.431077E-01 +1.023945E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.287286E-01 -1.657106E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1295,14 +1299,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.269274E-02 -5.149605E-04 -9.624622E-02 -9.263335E-03 -1.387020E-01 -1.620196E-02 -4.935882E-01 -8.865346E-02 +1.699856E-01 +1.749182E-02 +1.012141E-01 +1.024430E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1329,14 +1329,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.467757E+00 -6.282919E-01 -3.159457E-01 -4.516223E-02 -2.050369E-01 -3.908542E-02 -2.424662E-01 -5.878987E-02 +2.427282E-01 +4.346756E-02 +8.576175E-02 +6.594648E-03 +7.478060E-03 +5.592138E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1581,6 +1579,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.645869E-02 +4.416757E-03 +3.041483E-01 +9.250621E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1655,8 +1657,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.855163E-02 -4.699326E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1687,10 +1687,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.206687E-02 -1.769622E-03 -2.760907E-02 -7.622607E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1777,8 +1773,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.993440E-02 -9.986884E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1809,10 +1803,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.032141E-03 -6.451529E-05 -1.897802E-01 -3.601652E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1843,8 +1833,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.758664E-02 -7.671419E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1855,6 +1843,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.931419E-01 +9.002841E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1875,12 +1865,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.797399E-03 -4.620463E-05 -1.681205E-01 -1.033597E-02 -2.455452E-01 -4.194938E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1891,6 +1875,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.775906E-01 +3.153842E-02 +8.691809E-01 +2.255229E-01 +4.595089E-02 +2.111485E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1907,12 +1897,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.983445E-01 -1.408489E-02 -3.095279E-01 -4.471018E-02 -1.669298E+00 -8.584140E-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.073032E-01 +5.796376E-03 +6.104378E-01 +1.438907E-01 +1.357192E+00 +7.800106E-01 3.092946E-01 4.828943E-02 0.000000E+00 @@ -1943,14 +1943,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.234167E-01 -1.523167E-02 -4.629242E-02 -1.083563E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +5.051275E-01 +9.608655E-02 +4.049856E-01 +1.640133E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2005,6 +2001,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.816781E-02 +3.300694E-04 +3.102983E-01 +9.628505E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2115,16 +2115,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.728847E-01 -2.988911E-02 -3.848345E-01 -1.480976E-01 -5.985907E-02 -3.583109E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.419633E-02 +5.854622E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2149,8 +2145,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.914572E-03 -1.532387E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2163,12 +2157,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.098236E-02 +1.206123E-04 +5.047052E-02 +2.547273E-03 0.000000E+00 0.000000E+00 -8.127433E-03 -6.605517E-05 0.000000E+00 0.000000E+00 +1.065577E-02 +7.244766E-05 +2.076046E-02 +4.309969E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2185,30 +2185,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.026040E-02 -4.104838E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.065355E-02 -1.134982E-04 -2.799724E-03 -7.838457E-06 -0.000000E+00 -0.000000E+00 -1.799280E-01 -1.619126E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +1.209931E-01 +7.784762E-03 +1.059137E-01 +1.121770E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +1.883880E-01 +1.626283E-02 +1.476781E-01 +2.180883E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2231,10 +2225,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.464783E-03 +2.986386E-05 +4.827060E-01 +1.236578E-01 +2.938269E-02 +8.633425E-04 1.103939E-01 1.218681E-02 -1.828427E-01 -1.294521E-02 +1.066312E-01 +7.137023E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2265,10 +2265,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.028489E-01 -8.403390E-02 -3.358975E-01 -5.596699E-02 +6.448951E-03 +4.158897E-05 +1.154960E-01 +1.333932E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2353,10 +2353,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.843200E-01 -4.652895E-02 -7.784310E-01 -2.074140E-01 +1.230857E-01 +1.515010E-02 +7.524451E-02 +5.162294E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2387,10 +2387,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.580039E-01 -1.495118E-02 -1.106397E+00 -4.900888E-01 +5.738188E-03 +3.292680E-05 +1.158207E-02 +1.341443E-04 +3.108948E-02 +9.665557E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2419,14 +2421,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.670560E-01 +3.010896E-01 +2.777708E-01 +4.851013E-02 +3.865801E-02 +1.326182E-03 0.000000E+00 0.000000E+00 -6.311586E-01 -1.452469E-01 -8.935124E-01 -2.041594E-01 -9.086642E-02 -7.846733E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2453,8 +2455,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.240497E-01 -1.538832E-02 9.205825E-02 8.474722E-03 2.106671E-01 @@ -2487,12 +2487,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.706461E-01 -1.626955E-01 -9.690652E-01 -2.037373E-01 -1.260082E-01 -1.587806E-02 +2.518202E-01 +6.341342E-02 +3.500938E-01 +5.019217E-02 +1.285282E-01 +1.588441E-02 2.585446E-01 6.684532E-02 0.000000E+00 @@ -2523,8 +2523,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.960309E-02 -3.842813E-04 +3.653135E-01 +1.287514E-01 +2.216045E-03 +4.910856E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2543,10 +2545,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -9.261638E-02 -4.454613E-03 +5.022807E-01 +1.147015E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2577,12 +2577,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.905316E-02 -6.249402E-03 -6.679360E-01 -1.650894E-01 -7.539474E-02 -5.684366E-03 +0.000000E+00 +0.000000E+00 +1.172250E+00 +3.690965E-01 +1.605816E-01 +1.294116E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2613,10 +2613,10 @@ tally 1: 0.000000E+00 5.892971E-02 3.472710E-03 -1.107212E+00 -3.413570E-01 -7.306165E-02 -5.338004E-03 +1.338644E+00 +4.668912E-01 +1.673747E-01 +1.423295E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2627,8 +2627,8 @@ tally 1: 0.000000E+00 1.452260E-01 2.109060E-02 -6.184555E-01 -1.333723E-01 +5.921989E-01 +1.326829E-01 3.816328E-02 1.456436E-03 9.153520E-02 @@ -2663,8 +2663,8 @@ tally 1: 6.125553E-04 7.610286E-01 2.001560E-01 -4.985084E-01 -1.084317E-01 +4.516947E-01 +1.062402E-01 8.917764E-02 4.968510E-03 0.000000E+00 @@ -2693,24 +2693,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.736533E-01 -3.015548E-02 -1.425017E+00 -8.058899E-01 -9.850395E-01 -5.477477E-01 0.000000E+00 0.000000E+00 +1.101299E+00 +7.922298E-01 +4.529165E-02 +2.051333E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +5.702227E-01 +1.629185E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -2.406884E-01 -5.793092E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2727,28 +2725,26 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.047508E-02 -4.966737E-03 -7.482142E-02 -5.598244E-03 -1.212516E-02 -1.470196E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -2.428465E-01 -5.897443E-02 0.000000E+00 0.000000E+00 -2.031988E-01 -4.128976E-02 -1.238475E-02 -1.533819E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.749741E-01 +3.841679E-02 +1.876567E-01 +2.180115E-02 +4.802267E-02 +2.306177E-03 +2.219757E-01 +2.083367E-02 +3.469381E-02 +1.203661E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2763,26 +2759,26 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.198784E-01 -1.437083E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.380516E-01 -4.157334E-02 -7.271496E-02 -5.287466E-03 -1.248706E-01 -9.290399E-03 -6.329934E-02 -4.006806E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +9.220451E-03 +8.501673E-05 +2.421186E-01 +2.296140E-02 +5.301518E-01 +1.266721E-01 +1.676517E+00 +1.032348E+00 +8.127651E-02 +4.329985E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2805,12 +2801,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.932483E-01 -3.411782E-02 -7.125726E-02 -5.077597E-03 -1.721584E-01 -1.580114E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.516265E-01 +6.305270E-02 +3.999873E-02 +1.599899E-03 +5.487047E-01 +1.292105E-01 3.228887E-01 1.042571E-01 0.000000E+00 @@ -2839,12 +2839,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.935296E-02 -3.745370E-04 -4.914514E-02 -2.415245E-03 -3.076980E-01 -3.868177E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.407100E-01 +4.223910E-02 2.022942E-01 4.092294E-02 0.000000E+00 @@ -2875,10 +2875,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.698116E-02 -5.106926E-03 -6.397704E-01 -2.487693E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2901,10 +2897,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.219865E-02 -1.488072E-04 -8.616309E-03 -7.424078E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2931,12 +2923,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.457861E-01 -1.063058E-02 -7.360906E-01 -1.562063E-01 -3.940865E-02 -1.553041E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2947,6 +2933,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +7.553587E-01 +1.738170E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2965,12 +2953,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.452849E-02 -4.309152E-03 -3.655566E-01 -3.753615E-02 -8.473380E-02 -7.179817E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2981,6 +2963,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +0.000000E+00 +0.000000E+00 +6.145563E-02 +3.776795E-03 +2.005189E-01 +2.429212E-02 +5.673596E-01 +1.649938E-01 +4.875014E-01 +2.376576E-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 7.157679E-01 3.770273E-01 1.588325E-02 @@ -3031,8 +3031,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.350273E-02 -1.823238E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3065,8 +3063,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.380680E-01 -5.667635E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3121,10 +3121,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.227568E-02 -6.769287E-03 -2.170015E-02 -4.708966E-04 +0.000000E+00 +0.000000E+00 +9.767592E-02 +5.284927E-03 1.342835E-01 1.803205E-02 0.000000E+00 @@ -3155,12 +3155,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.298723E-01 -8.434738E-03 -1.192701E+00 -5.059301E-01 -5.555691E-02 -3.086570E-03 +6.575074E-02 +4.323159E-03 +1.123042E+00 +4.745625E-01 +2.147144E-01 +2.841768E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3169,10 +3169,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.271892E-02 -5.288041E-03 -6.134910E-01 -2.517865E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.138141E-01 +1.295364E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3189,12 +3191,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -2.698309E-01 -5.659690E-02 -7.539545E-03 -5.684475E-05 +2.478967E-01 +2.397512E-02 +8.154628E-02 +5.533841E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3203,12 +3203,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.063682E-01 -2.953689E-02 -7.099357E-01 -1.432662E-01 -2.190760E-02 -4.799429E-04 +1.673829E-01 +2.801704E-02 +6.238670E-01 +1.323614E-01 +1.087831E-01 +8.027300E-03 3.528173E-02 1.244801E-03 0.000000E+00 @@ -3221,8 +3221,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.669518E-02 -3.214344E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3239,10 +3239,10 @@ tally 1: 0.000000E+00 3.125593E-03 9.769332E-06 -5.487602E-01 -2.355803E-01 -7.840909E-02 -6.147986E-03 +5.982046E-01 +2.380250E-01 +1.595969E-01 +1.273945E-02 7.500945E-02 5.626417E-03 0.000000E+00 @@ -3273,22 +3273,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.849728E-02 -2.351986E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.004455E-02 +4.017842E-04 +1.241994E+00 +5.276343E-01 +3.956269E-01 +6.857794E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -6.355630E-02 -4.039404E-03 -1.399218E-02 -1.957812E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3313,18 +3313,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.567716E-02 -2.424343E-03 -3.815100E-01 -7.061468E-02 -1.998464E-01 -3.993860E-02 -2.952749E-01 -4.970731E-02 -3.559995E-01 -4.240327E-02 -4.275883E-02 -1.828318E-03 +2.517820E-01 +4.088147E-02 +5.984204E-01 +1.119676E-01 +1.600304E+00 +1.060307E+00 +6.251595E-01 +1.631053E-01 +5.084364E-01 +8.750385E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3349,18 +3347,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.056649E-01 -2.528092E-02 -2.212242E-01 -4.870093E-02 -8.268043E-01 -2.499121E-01 -5.858178E-01 -1.482815E-01 -4.753061E-02 -2.259158E-03 0.000000E+00 0.000000E+00 +1.482851E-01 +2.198847E-02 +8.661057E-02 +3.979426E-03 +5.328694E-01 +1.185445E-01 +9.819716E-02 +6.261752E-03 +1.971175E-01 +3.885531E-02 +5.055466E-01 +1.332461E-01 +1.737497E-01 +3.018896E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3381,22 +3383,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.448612E-01 +3.179981E-02 +1.336292E+00 +6.509631E-01 +1.788953E+00 +9.402141E-01 +6.484030E-01 +1.952075E-01 +1.239995E-01 +9.457065E-03 +5.379761E-01 +9.948097E-02 +3.422476E-01 +3.688467E-02 +1.310833E-01 +9.116867E-03 0.000000E+00 0.000000E+00 -1.275494E-01 -1.626884E-02 -8.930936E-01 -4.412573E-01 -1.069465E+00 -3.083849E-01 -5.312952E-01 -1.686403E-01 -3.756270E-01 -7.982176E-02 -6.071797E-01 -1.008227E-01 -1.945731E-01 -2.288397E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3415,24 +3419,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -2.147490E-02 -4.611712E-04 -3.020948E-01 -4.980152E-02 -6.199369E-01 -1.339903E-01 -6.953972E-01 -2.667255E-01 -5.032688E-01 -1.089400E-01 -8.876085E-02 -2.663780E-03 +1.452794E-01 +7.962998E-03 +4.950124E-01 +1.019817E-01 +5.154252E-01 +1.349222E-01 +2.369650E-01 +5.615241E-02 +3.458235E-02 +1.195939E-03 1.129905E-02 1.276685E-04 -3.194782E-02 -1.020663E-03 +2.144713E-01 +2.715780E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3453,18 +3453,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.936255E-03 -2.436661E-05 -1.854356E-01 -3.062993E-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 @@ -3475,6 +3463,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.439196E-02 +4.146324E-03 +9.319271E-01 +3.289332E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3483,6 +3475,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.887911E-02 +4.077886E-03 +1.394014E-01 +1.214028E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3513,6 +3509,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.093347E-01 +4.640925E-02 +5.656636E-01 +1.123158E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3735,10 +3735,10 @@ tally 1: 0.000000E+00 1.203590E-02 1.448628E-04 -9.089783E-01 -3.025426E-01 -4.101062E-02 -1.363081E-03 +8.166865E-01 +2.864876E-01 +2.182247E-01 +3.276791E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3769,10 +3769,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.394140E-02 -5.731908E-04 -2.225881E-01 -4.954545E-02 +3.880416E-02 +7.940924E-04 +2.944035E-01 +5.470290E-02 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3781,8 +3783,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.901226E-02 -3.614661E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3797,10 +3797,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.232218E-03 -2.737611E-05 -2.699331E-01 -7.286389E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3833,8 +3833,8 @@ tally 1: 0.000000E+00 3.625873E-02 1.314696E-03 -9.527085E-02 -9.076535E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3859,14 +3859,14 @@ 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 +1.282000E-01 +1.643523E-02 +8.992357E-04 +8.086249E-07 +4.549792E-02 +2.070061E-03 +2.792616E-01 +7.798705E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3891,16 +3891,16 @@ tally 1: 2.325049E-04 0.000000E+00 0.000000E+00 -5.591708E-01 -3.126720E-01 -3.457017E-02 -1.195097E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.186688E-01 +4.781605E-02 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3929,18 +3929,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.005099E-01 -4.873543E-02 -2.482142E-01 -4.941861E-02 -1.464043E-02 -2.143420E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.799587E-02 +7.837689E-04 0.000000E+00 0.000000E+00 +2.165781E-01 +4.136640E-02 +1.206583E-01 +1.455843E-02 +3.350979E-02 +1.122906E-03 +1.254721E-01 +1.574324E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3957,6 +3961,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.255610E-02 +1.576557E-04 +2.059029E-01 +2.931063E-02 +9.625207E-02 +9.264462E-03 +4.926052E-01 +1.231087E-01 +3.607423E-01 +6.495313E-02 +2.101048E-01 +2.385810E-02 +7.843494E-01 +1.955825E-01 +9.077784E-01 +3.297447E-01 +3.922359E-03 +1.538490E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3965,18 +3987,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.139114E-01 -1.297580E-02 -1.219324E-01 -1.125290E-02 -6.096339E-02 -3.716535E-03 -2.370045E-02 -5.617113E-04 -2.338106E-01 -2.733856E-02 -6.042735E-02 -3.651465E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3987,8 +3997,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.913074E-02 +1.799353E-03 +1.249107E-02 +1.560268E-04 0.000000E+00 0.000000E+00 +1.115404E+00 +4.366528E-01 +3.732357E-01 +4.158215E-02 +3.846227E-01 +8.126419E-02 +6.157885E-01 +1.590298E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3997,22 +4019,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.026371E-02 -4.106181E-04 -1.407747E-01 -1.661272E-02 -2.901913E-01 -8.421099E-02 -1.716410E+00 -1.502067E+00 -2.139592E-01 -1.215205E-02 -3.926381E-01 -8.132843E-02 -2.213252E-01 -2.664541E-02 -1.620099E-01 -2.624722E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4031,22 +4037,14 @@ 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 -6.163882E-01 -1.978213E-01 -4.192042E-02 -1.757322E-03 -0.000000E+00 -0.000000E+00 -8.855834E-03 -7.842579E-05 -0.000000E+00 -0.000000E+00 +5.663121E-01 +1.953137E-01 +4.644811E-01 +1.590726E-01 +5.000400E-02 +1.273713E-03 +2.811483E-02 +7.904436E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4055,6 +4053,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +4.950896E-02 +2.451137E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4339,10 +4339,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.248694E-01 -4.178173E-02 -2.015109E-01 -2.180554E-02 +0.000000E+00 +0.000000E+00 +1.281618E-01 +1.642545E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4373,12 +4373,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.775166E-01 -3.538689E-01 -1.077083E+00 -2.861243E-01 -3.389587E-01 -8.732863E-02 +1.429077E-02 +2.042262E-04 +5.105813E-01 +9.939542E-02 +1.956841E-01 +3.829226E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4407,14 +4407,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.278622E-01 -9.618710E-03 -4.878786E-01 -1.035002E-01 -2.623630E-01 -2.385512E-02 -5.373920E-02 -2.887901E-03 +2.524256E-01 +3.390159E-02 +5.341258E-01 +7.612387E-02 +1.129256E-01 +5.367542E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4439,16 +4439,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -7.796193E-03 -6.078062E-05 -2.370024E-01 -5.617015E-02 -2.378547E-01 -5.657486E-02 -0.000000E+00 -0.000000E+00 +1.789538E-02 +3.202447E-04 +1.070161E-01 +1.145246E-02 +2.004171E-01 +4.016700E-02 +9.277615E-02 +4.350522E-03 +3.796585E-03 +1.441406E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4475,10 +4475,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.812701E-02 +7.911289E-04 0.000000E+00 0.000000E+00 -4.102160E-02 -1.682772E-03 +7.255598E-01 +2.637695E-01 +4.236781E-01 +1.206021E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4507,10 +4511,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.088786E-02 -5.025089E-03 0.000000E+00 0.000000E+00 +3.455666E-01 +1.088929E-01 +1.077941E-01 +5.813092E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4535,8 +4541,22 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.759532E-03 +7.672939E-05 +3.873698E-01 +1.500554E-01 +3.320720E-02 +5.664804E-04 +9.751133E-01 +4.762440E-01 +3.549373E-01 +1.259805E-01 0.000000E+00 0.000000E+00 +4.558589E-03 +2.078073E-05 +1.147837E-01 +1.317530E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4551,12 +4571,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.601108E-02 -1.296798E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +1.491942E-01 +1.942842E-02 +1.215608E-02 +7.465030E-05 +9.749153E-01 +3.525441E-01 +1.238276E+00 +4.724746E-01 +7.559328E-01 +1.539006E-01 +7.550630E-01 +2.671451E-01 +4.016529E-01 +1.049033E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4577,24 +4609,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.772849E-01 -3.142995E-02 -1.629085E+00 -7.553358E-01 -5.130574E-01 -1.026482E-01 -5.456703E-01 -1.139540E-01 -5.551969E-01 -1.452833E-01 -2.630569E-01 -2.654789E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +1.915923E-01 +1.106962E-02 +1.039274E+00 +3.820648E-01 +6.748249E-01 +1.513006E-01 +5.553735E-02 +3.084397E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4611,18 +4639,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.711181E-02 -7.588468E-03 -2.593229E-01 -4.929782E-02 -2.365670E-01 -1.635697E-02 -1.481640E+00 -5.785514E-01 -1.000401E+00 -2.814448E-01 -6.430985E-01 -1.924484E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4817,6 +4833,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.061692E-01 +1.127190E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4849,6 +4867,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.912282E-01 +3.656822E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4899,6 +4919,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.289827E-01 +1.075283E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4919,10 +4941,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.624881E-02 -2.640238E-04 -1.075983E-01 -1.157740E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4935,6 +4953,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.320797E+00 +4.972727E-01 +4.301105E-01 +6.331514E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4949,16 +4971,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.629487E-02 -3.169112E-03 -8.055202E-02 -6.488629E-03 -1.251664E+00 -7.810326E-01 -1.181564E+00 -3.437055E-01 -1.053167E-02 -1.109161E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4971,6 +4983,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +4.915487E-02 +2.416202E-03 +9.120705E-02 +8.318727E-03 +1.320105E+00 +4.411682E-01 +6.959590E-01 +2.389648E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4983,26 +5003,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.454179E-02 -2.652959E-03 -5.029692E-01 -1.783517E-01 -1.339070E+00 -4.343746E-01 -8.199937E-01 -2.745378E-01 -1.173457E-01 -1.377002E-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 -4.736827E-02 -2.243753E-03 5.662623E-02 3.206529E-03 0.000000E+00 @@ -5017,16 +5017,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.166586E-02 +1.360923E-04 +1.891160E-02 +3.576487E-04 +1.256901E+00 +4.792247E-01 +1.364915E-01 +1.696517E-02 0.000000E+00 0.000000E+00 -1.927614E-01 -2.918695E-02 -7.330554E-01 -1.766129E-01 -1.008246E-01 -7.669486E-03 -1.448854E-02 -2.099179E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5055,12 +5055,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.565334E-01 -2.186541E-01 -5.729858E-02 -3.283127E-03 -9.691043E-02 -9.391631E-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 @@ -5123,14 +5123,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.925951E-02 +4.796880E-03 +1.765581E-01 +2.014257E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -7.494206E-02 -5.616313E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5155,18 +5157,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.724677E-02 -3.277192E-03 -1.383438E-01 -1.452928E-02 -2.848872E-02 -8.116069E-04 -3.524549E-01 -5.552654E-02 -4.295071E-01 -9.355140E-02 -1.311425E-03 -1.719836E-06 +1.007236E-01 +1.014525E-02 +3.069376E-01 +6.982061E-02 +1.339942E+00 +5.632235E-01 +8.027545E-01 +2.263816E-01 +1.881835E-01 +3.541303E-02 +2.824222E-02 +7.976228E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5189,26 +5191,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.834417E-02 -2.211153E-03 -1.613421E-01 -2.257097E-02 -1.472879E-01 -2.169372E-02 -4.810374E-01 -8.988575E-02 -6.467051E-01 -1.822459E-01 -1.547275E-01 -2.394060E-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 +6.475515E-01 +1.949499E-01 +8.916929E-01 +2.187649E-01 +9.737449E-01 +4.547148E-01 +1.905118E-01 +3.629474E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5419,6 +5411,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.851330E-02 +8.130086E-04 +1.696747E-01 +2.878950E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5449,6 +5445,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.753509E-02 +7.581810E-04 +2.514105E-01 +5.075004E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5495,12 +5495,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.687121E-01 -2.627261E-02 -1.004106E-01 -1.008228E-02 -3.964673E-02 -1.571863E-03 +0.000000E+00 +0.000000E+00 +6.990313E-02 +4.886448E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5527,14 +5527,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.594872E-01 -9.743264E-02 -8.625384E-01 -2.783049E-01 -3.514218E-03 -1.234973E-05 -1.894941E-01 -2.742554E-02 +6.620581E-01 +1.938858E-01 +4.607570E-02 +1.247203E-03 +0.000000E+00 +0.000000E+00 +2.593018E-02 +6.723742E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5545,8 +5545,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.861976E-01 -3.466955E-02 +3.904410E-02 +1.524442E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5561,12 +5561,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.293501E-01 -5.455683E-02 -2.937497E-01 -8.628891E-02 -6.693709E-01 -1.892115E-01 +3.389223E-01 +5.464846E-02 +1.061647E-01 +1.127094E-02 +1.313508E+00 +4.346493E-01 4.161910E-02 1.732150E-03 0.000000E+00 @@ -5579,8 +5579,8 @@ tally 1: 0.000000E+00 4.016283E-01 1.613053E-01 -4.606785E-01 -1.064675E-01 +5.599819E-01 +9.812234E-02 5.139185E-01 1.322866E-01 2.373992E-01 @@ -5597,10 +5597,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.911517E-01 -3.262245E-02 -3.678584E-01 -7.759535E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5631,8 +5631,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.179923E-02 -2.683160E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5735,6 +5735,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.532915E-01 +2.349830E-02 +0.000000E+00 +0.000000E+00 +2.637807E-03 +6.958026E-06 +9.521605E-03 +9.066095E-05 +7.905417E-02 +6.249562E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5763,20 +5773,10 @@ 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 -1.772980E-01 -3.143459E-02 -0.000000E+00 -0.000000E+00 +5.147382E-02 +2.649554E-03 +1.719918E-01 +1.490049E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5989,12 +5989,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.231433E-01 -5.413470E-02 -3.993293E-01 -6.467221E-02 -1.519610E-01 -1.155574E-02 +1.305564E-01 +1.704497E-02 +3.518664E-01 +6.212556E-02 +7.817833E-02 +6.111852E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6025,10 +6025,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.649249E-01 -3.073604E-02 -8.553717E-01 -3.211418E-01 +4.740424E-01 +8.028915E-02 +8.000570E-01 +3.176809E-01 5.666391E-01 2.831913E-01 1.643713E-02 @@ -6073,10 +6073,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.186326E-01 -1.190957E-02 -1.107282E-01 -1.226074E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6095,6 +6091,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +9.873816E-02 +9.749225E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 6.179053E-03 @@ -6105,12 +6105,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.475983E-02 -2.178526E-04 -1.747711E+00 -8.535011E-01 -7.461108E-02 -5.566814E-03 +1.154173E-01 +1.332115E-02 +5.192203E-01 +1.359491E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6123,28 +6121,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.833423E-01 -3.201970E-02 -1.016493E-02 -1.033258E-04 -3.086254E-01 -9.524964E-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 -4.668929E-02 -7.417426E-04 -1.031629E-01 -8.133494E-03 -2.133233E-01 -4.550684E-02 +3.643669E-01 +3.773661E-02 +1.333650E-01 +1.778623E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6157,28 +6139,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.950700E-01 -3.542385E-02 -1.821781E-01 -3.288596E-02 -2.994706E-01 -3.126060E-02 -3.853993E-01 -1.485326E-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 -5.946618E-02 -3.536227E-03 -6.995394E-02 -4.893554E-03 -3.103240E-01 -5.643704E-02 +3.057922E-02 +4.821714E-04 +2.611439E-02 +4.539126E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6189,16 +6153,52 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.934409E-02 -3.268161E-03 -2.618772E-02 -6.857965E-04 0.000000E+00 0.000000E+00 -1.910915E-01 -1.213214E-02 -5.264194E-01 -1.438040E-01 +0.000000E+00 +0.000000E+00 +4.328371E-01 +6.083581E-02 +3.822069E-02 +1.398374E-03 +1.903328E-01 +2.231214E-02 +3.952764E-01 +1.486302E-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 +1.256222E-02 +1.578095E-04 +9.794148E-02 +9.592534E-03 +1.849303E-01 +1.553794E-02 +7.480357E-01 +1.929178E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6529,8 +6529,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.886952E-02 -3.465621E-03 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6653,8 +6653,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.911625E-02 -6.259380E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6669,14 +6667,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.747648E-02 -1.404486E-03 -9.038474E-02 -8.169402E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +6.086518E-02 +3.704570E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6685,10 +6681,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.907522E-01 -3.638640E-02 -3.376837E-02 -1.140303E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6703,10 +6695,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.260430E-02 -1.063040E-03 -4.728569E-02 -2.235937E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6715,14 +6703,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +4.249148E-02 +1.805526E-03 +1.045383E+00 +4.214718E-01 +3.878770E-02 +1.504486E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -8.942084E-02 -7.996086E-03 -3.382348E-02 -1.144027E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6737,10 +6727,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.663872E-01 -5.237415E-01 -1.495861E+00 -7.117933E-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 +2.784801E-02 +7.755114E-04 +6.779315E-01 +3.352682E-01 3.026790E-01 9.161460E-02 0.000000E+00 @@ -6767,16 +6767,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.127783E-01 -2.689445E-01 -6.677764E-01 -2.034903E-01 +1.879990E-01 +2.203070E-02 0.000000E+00 0.000000E+00 -1.272042E+00 -5.287947E-01 -4.856872E-02 -2.358920E-03 +0.000000E+00 +0.000000E+00 +9.811002E-01 +4.685901E-01 +1.404927E-01 +1.080893E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6801,12 +6801,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.244965E-01 -1.453503E-01 -7.596171E-01 -1.897008E-01 -1.137881E-01 -1.294772E-02 +7.572692E-01 +2.087347E-01 +2.362405E-01 +4.910426E-02 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 1.965530E-01 @@ -6835,12 +6835,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -3.595460E-02 -1.292733E-03 -1.651469E-02 -2.727349E-04 +1.751268E-03 +3.066940E-06 +1.553462E-01 +2.413243E-02 +1.672350E-01 +2.796753E-02 0.000000E+00 0.000000E+00 1.836178E-02 @@ -6941,6 +6941,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.696487E-02 +1.366401E-03 +2.858087E-01 +8.168661E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6969,14 +6973,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.052881E-01 -1.108559E-02 -0.000000E+00 -0.000000E+00 +1.258698E-01 +1.150919E-02 +6.798857E-01 +1.661025E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7007,12 +7007,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.003097E-01 -2.774596E-01 -5.697479E-01 -1.238519E-01 -1.088816E-02 -1.185520E-04 +1.008727E+00 +3.651038E-01 +9.120679E-01 +2.558101E-01 +8.721740E-03 +7.606874E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7039,16 +7039,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.182615E-02 -2.685950E-03 -2.603394E-01 -5.501423E-02 -2.189565E-01 -1.689961E-02 -1.037124E-01 -1.075626E-02 0.000000E+00 0.000000E+00 +2.739345E-02 +7.504010E-04 +1.627060E-02 +2.647323E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7107,12 +7103,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.145166E-01 -1.639307E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.309730E-01 +2.570742E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7141,8 +7137,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.237360E+00 -3.492227E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.115905E+00 +4.082126E-01 2.502204E-02 6.261023E-04 0.000000E+00 @@ -7247,12 +7247,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.753553E-02 -9.513180E-03 -1.448897E-02 -2.099304E-04 0.000000E+00 0.000000E+00 +2.207099E-01 +4.871286E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7285,6 +7283,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +9.075694E-02 +8.236821E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7315,10 +7315,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.767451E-02 +3.123882E-04 +8.696348E-02 +7.562648E-03 0.000000E+00 0.000000E+00 -8.072240E-01 -2.272369E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7345,16 +7347,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.679628E-02 -1.915958E-04 -2.060666E-01 -4.246344E-02 -9.954401E-04 -9.909010E-07 -7.940105E-02 -6.304526E-03 0.000000E+00 0.000000E+00 +1.690390E-01 +2.753878E-02 +1.145975E-01 +7.543314E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7379,14 +7377,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.430716E-01 -3.335909E-02 -4.349688E-01 -6.259047E-02 -4.848533E-02 -1.782050E-03 0.000000E+00 0.000000E+00 +2.712297E-01 +3.081804E-02 +1.728614E-01 +2.076746E-02 +6.826625E-03 +4.660281E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7415,10 +7413,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.242016E-02 -5.026638E-04 -2.677921E-01 -2.943321E-02 +2.649622E-02 +7.020499E-04 +4.161446E-01 +8.806248E-02 +6.348647E-01 +9.989011E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7451,6 +7451,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.204982E-02 +1.451982E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7551,12 +7553,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.608891E-02 -4.586038E-03 +2.282300E-01 +4.986445E-02 +2.206365E-02 +4.868048E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7587,10 +7587,10 @@ tally 1: 0.000000E+00 1.875562E-01 3.517735E-02 -5.878488E-01 -1.352380E-01 -5.442859E-01 -1.595781E-01 +7.738485E-01 +2.045432E-01 +4.058292E-01 +8.243188E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7623,16 +7623,18 @@ tally 1: 0.000000E+00 4.994213E-01 2.494217E-01 +2.744213E-02 +7.530707E-04 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +2.949405E-02 +7.018464E-04 0.000000E+00 0.000000E+00 -2.758048E-01 -6.072497E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7659,14 +7661,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.459022E-03 +7.155505E-05 +3.090219E-01 +9.549453E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -2.606443E-01 -6.793546E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7681,12 +7685,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +7.226097E-01 +1.395661E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.686503E-01 -6.346661E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7715,14 +7719,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.316493E-01 +1.591047E-02 +6.576990E-01 +1.877309E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.533157E-01 -1.071208E-02 -5.401851E-01 -1.739213E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7749,14 +7753,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +4.546941E-01 +7.107193E-02 +3.321871E-01 +6.515778E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.221279E+00 -4.624743E-01 -3.697846E-01 -6.689364E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7787,10 +7791,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.040339E-01 -4.162983E-02 -3.778476E-02 -1.427688E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7861,8 +7861,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.946272E-02 -3.535814E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7895,8 +7893,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.120645E-02 -9.738427E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7931,6 +7927,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.249399E-02 +4.667888E-03 +1.814462E-01 +3.292273E-02 7.515014E-02 5.647544E-03 0.000000E+00 @@ -7957,14 +7957,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.638111E-01 -6.959629E-02 +0.000000E+00 +0.000000E+00 3.109046E-01 8.622176E-02 -2.304832E-01 -3.175419E-02 -6.218789E-02 -3.867333E-03 +2.380422E-01 +3.181133E-02 +1.087532E-01 +6.035666E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7995,8 +7995,8 @@ tally 1: 0.000000E+00 5.246408E-03 2.752480E-05 -1.779567E-01 -2.094888E-02 +3.760855E-02 +1.251291E-03 5.951856E-02 3.037461E-03 0.000000E+00 @@ -8141,6 +8141,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.395650E-01 +1.947839E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8163,18 +8165,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.822292E-01 +4.829456E-02 +6.080756E-02 +3.418907E-03 0.000000E+00 0.000000E+00 -7.333695E-02 -4.658577E-03 -2.790184E-02 -6.568068E-04 -0.000000E+00 -0.000000E+00 -1.525932E-01 -2.328469E-02 +1.804108E-01 +2.405851E-02 5.413665E-02 2.930777E-03 +4.041026E-01 +8.374291E-02 +5.886833E-02 +3.465481E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8197,20 +8201,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 +7.093664E-02 +5.032006E-03 5.703113E-02 3.252549E-03 -8.140441E-01 -2.724079E-01 -5.579561E-01 -2.869147E-01 -2.207115E-01 -4.871356E-02 +7.402747E-01 +2.678271E-01 +2.389658E-02 +5.209213E-04 +5.348373E-01 +8.455667E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8239,10 +8239,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.039206E-01 -1.196352E-01 -3.885001E-01 -7.594576E-02 +5.453284E-01 +1.497004E-01 +1.851055E-01 +1.721223E-02 +1.038418E-01 +1.078313E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8261,6 +8263,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.010211E-02 +3.612264E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8293,6 +8297,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.319919E-02 +3.629541E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8325,14 +8331,8 @@ 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 -8.137844E-02 -5.984482E-03 +1.292774E-01 +8.674372E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8747,14 +8747,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.235904E-01 -1.794288E-01 -2.296533E-01 -2.653997E-02 -1.867564E-01 -3.487796E-02 0.000000E+00 0.000000E+00 +4.601224E-01 +1.283387E-01 +4.851011E-01 +1.238875E-01 +1.351214E-02 +1.825779E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8781,12 +8781,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.285152E-02 -5.700776E-03 -1.646014E+00 -6.255979E-01 -9.809995E-01 -3.058040E-01 +7.746478E-03 +6.000792E-05 +1.551243E+00 +5.797918E-01 +1.974875E-01 +1.837196E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8817,10 +8817,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.189281E-01 -4.001687E-02 -1.431247E-02 -2.048469E-04 +2.541705E-01 +4.325743E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8851,8 +8853,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.579949E-02 -9.177542E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -9359,12 +9359,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.668786E-02 +2.784846E-04 +2.256035E-01 +5.089693E-02 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 -2.836882E-01 -8.047901E-02 -5.295973E-02 -2.804733E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -9395,8 +9397,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.405305E-01 -5.483854E-01 0.000000E+00 0.000000E+00 0.000000E+00 diff --git a/tests/test_filter_universe/results_true.dat b/tests/test_filter_universe/results_true.dat index c63da0083d..856d97d593 100644 --- a/tests/test_filter_universe/results_true.dat +++ b/tests/test_filter_universe/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -6.369043E+01 -8.385422E+02 -7.330762E+00 -1.137874E+01 -5.011385E+01 -5.251276E+02 -5.132453E+00 -5.801019E+00 +5.803437E+01 +7.324822E+02 +7.168085E+00 +1.101286E+01 +5.815302E+01 +7.373019E+02 +5.778029E+00 +7.558661E+00 diff --git a/tests/test_fixed_source/results_true.dat b/tests/test_fixed_source/results_true.dat index 2ec2d00b8e..0940301886 100644 --- a/tests/test_fixed_source/results_true.dat +++ b/tests/test_fixed_source/results_true.dat @@ -1,3 +1,6 @@ tally 1: -4.483337E+02 -2.017057E+04 +4.538791E+02 +2.073271E+04 +leakage: +9.830000E+00 +9.663900E+00 diff --git a/tests/test_fixed_source/test_fixed_source.py b/tests/test_fixed_source/test_fixed_source.py index 1f4382c08f..e96a3ad8fe 100644 --- a/tests/test_fixed_source/test_fixed_source.py +++ b/tests/test_fixed_source/test_fixed_source.py @@ -28,6 +28,10 @@ class FixedSourceTestHarness(TestHarness): outstr += '\n'.join(results) + '\n' tally_num += 1 + outstr += 'leakage:\n' + outstr += '{0:12.6E}'.format(sp._global_tallies[3][0]) + '\n' + outstr += '{0:12.6E}'.format(sp._global_tallies[3][1]) + '\n' + return outstr diff --git a/tests/test_infinite_cell/results_true.dat b/tests/test_infinite_cell/results_true.dat index 45eaa4f917..0b8d929518 100644 --- a/tests/test_infinite_cell/results_true.dat +++ b/tests/test_infinite_cell/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.998895E-02 2.846817E-04 +9.788797E-02 1.378250E-03 diff --git a/tests/test_lattice_mixed/results_true.dat b/tests/test_lattice_mixed/results_true.dat index d23feb91f0..7cea76ba00 100644 --- a/tests/test_lattice_mixed/results_true.dat +++ b/tests/test_lattice_mixed/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.605085E-01 8.180822E-03 +9.922449E-01 1.281824E-02 diff --git a/tests/test_lattice_multiple/results_true.dat b/tests/test_lattice_multiple/results_true.dat index f2e3d93c93..6caffdd953 100644 --- a/tests/test_lattice_multiple/results_true.dat +++ b/tests/test_lattice_multiple/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 diff --git a/tests/test_many_scores/results_true.dat b/tests/test_many_scores/results_true.dat index 191122f13e..ab1c43254f 100644 --- a/tests/test_many_scores/results_true.dat +++ b/tests/test_many_scores/results_true.dat @@ -1,111 +1,111 @@ k-combined: 0.000000E+00 0.000000E+00 tally 1: -2.254760E+01 -1.695439E+02 -1.017400E+01 -3.450623E+01 -8.690000E+00 -2.517771E+01 -8.696000E+00 -2.521248E+01 -5.224881E-01 -9.127522E-02 -8.690000E+00 -2.517771E+01 -9.665236E-01 -3.121401E-01 -5.224881E-01 -9.127522E-02 -5.199964E-01 -9.041516E-02 -8.696000E+00 -2.521248E+01 -9.666447E-01 -3.122176E-01 -5.199964E-01 -9.041516E-02 -9.262308E+00 -2.859762E+01 -8.684000E+00 -2.514296E+01 -1.484000E+00 -7.346160E-01 -1.804688E+00 -1.089100E+00 -1.334833E+02 -5.960573E+03 -2.254760E+01 -1.695439E+02 --6.230152E-02 -1.023784E-02 --2.696818E-01 -8.525477E-02 --1.670294E-01 -4.366614E-02 -1.331953E-02 -8.064039E-05 --2.490295E-01 -2.511425E-02 -8.289978E-02 -2.753446E-03 --1.390686E-01 -1.592673E-02 -1.600203E-01 -1.344513E-02 -1.017400E+01 -3.450623E+01 --6.564301E-02 -2.564587E-03 --1.245391E-01 -1.143479E-02 --5.550309E-02 -9.334547E-03 -4.671277E-02 -1.795787E-03 --9.901000E-02 -4.609654E-03 -2.619012E-02 -3.011793E-04 --7.090362E-02 -2.450750E-03 -4.059073E-02 -8.841300E-04 -8.690000E+00 -2.517771E+01 --2.685052E-02 -2.769798E-04 -4.047919E-03 -3.384947E-03 --1.325869E-01 -8.610169E-03 --1.594962E-02 -5.528670E-04 --1.320550E-02 -1.856248E-04 -1.185337E-02 -3.428536E-04 -2.622196E-02 -3.774884E-04 -2.938463E-02 -6.660370E-04 -8.696000E+00 -2.521248E+01 --2.634867E-02 -2.718345E-04 -4.042613E-03 -3.367272E-03 --1.328903E-01 -8.576852E-03 --1.632965E-02 -5.577169E-04 --1.408565E-02 -1.815109E-04 -1.202519E-02 -3.685250E-04 -2.634054E-02 -3.730853E-04 -2.941341E-02 -6.479457E-04 +2.247257E+01 +1.683779E+02 1.014000E+01 -3.427460E+01 +3.427342E+01 +8.628000E+00 +2.481430E+01 +8.628000E+00 +2.481430E+01 +5.102293E-01 +8.710841E-02 +8.628000E+00 +2.481430E+01 +9.329009E-01 +2.902534E-01 +5.102293E-01 +8.710841E-02 +5.102293E-01 +8.710841E-02 +8.628000E+00 +2.481430E+01 +9.329009E-01 +2.902534E-01 +5.102293E-01 +8.710841E-02 +9.212024E+00 +2.829472E+01 +8.628000E+00 +2.481430E+01 +1.512000E+00 +7.620560E-01 +1.816851E+00 +1.102658E+00 +1.338067E+02 +5.986137E+03 +2.247257E+01 +1.683779E+02 +-1.512960E-01 +2.623972E-02 +-3.775020E-01 +1.055377E-01 +-1.916133E-01 +4.680798E-02 +2.754367E-02 +3.320008E-04 +-2.028374E-02 +1.319357E-02 +8.974271E-03 +1.681081E-03 +-1.658978E-01 +1.520448E-02 +2.878360E-01 +5.645480E-02 +1.014000E+01 +3.427342E+01 +-4.798897E-02 +1.551226E-03 +-1.818770E-01 +1.492633E-02 +-6.340651E-02 +9.011305E-03 +3.395308E-02 +4.612818E-04 +-2.640250E-02 +6.434787E-04 +-8.242639E-03 +9.516540E-04 +-8.378601E-02 +2.645988E-03 +9.567484E-02 +7.262477E-03 +8.628000E+00 +2.481430E+01 +-4.712248E-02 +1.140942E-03 +-6.431930E-02 +4.290580E-03 +-9.251642E-02 +8.134201E-03 +1.020119E-04 +1.154184E-04 +-2.994164E-02 +3.079076E-04 +2.128844E-02 +2.046549E-04 +1.637972E-02 +1.459209E-04 +4.629047E-02 +7.823267E-04 +8.628000E+00 +2.481430E+01 +-4.712248E-02 +1.140942E-03 +-6.431930E-02 +4.290580E-03 +-9.251642E-02 +8.134201E-03 +1.020119E-04 +1.154184E-04 +-2.994164E-02 +3.079076E-04 +2.128844E-02 +2.046549E-04 +1.637972E-02 +1.459209E-04 +4.629047E-02 +7.823267E-04 +1.014000E+01 +3.427342E+01 diff --git a/tests/test_natural_element/results_true.dat b/tests/test_natural_element/results_true.dat index 4b132ea37d..1c8668e128 100644 --- a/tests/test_natural_element/results_true.dat +++ b/tests/test_natural_element/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.053229E+00 9.241274E-02 +1.013112E+00 2.551515E-02 diff --git a/tests/test_output/results_true.dat b/tests/test_output/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_output/results_true.dat +++ b/tests/test_output/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_particle_restart_eigval/results_true.dat b/tests/test_particle_restart_eigval/results_true.dat index a93cbb27b2..bbc23fb6ef 100644 --- a/tests/test_particle_restart_eigval/results_true.dat +++ b/tests/test_particle_restart_eigval/results_true.dat @@ -1,16 +1,16 @@ current batch: -1.200000E+01 +9.000000E+00 current gen: 1.000000E+00 particle id: -6.160000E+02 +5.550000E+02 run mode: 2.000000E+00 particle weight: 1.000000E+00 particle energy: -3.545295E-01 +2.831611E-01 particle xyz: -3.516323E+01 -5.400148E+01 -1.588825E+01 +4.973847E+01 6.971699E+00 -5.201827E+01 particle uvw: -4.129799E-01 7.649720E-01 4.942322E-01 +6.945105E-01 6.295355E-01 -3.483393E-01 diff --git a/tests/test_particle_restart_eigval/test_particle_restart_eigval.py b/tests/test_particle_restart_eigval/test_particle_restart_eigval.py index 64123b2e09..a9f4563d0a 100644 --- a/tests/test_particle_restart_eigval/test_particle_restart_eigval.py +++ b/tests/test_particle_restart_eigval/test_particle_restart_eigval.py @@ -6,5 +6,5 @@ from testing_harness import ParticleRestartTestHarness if __name__ == '__main__': - harness = ParticleRestartTestHarness('particle_12_616.*') + harness = ParticleRestartTestHarness('particle_9_555.*') harness.main() diff --git a/tests/test_particle_restart_fixed/results_true.dat b/tests/test_particle_restart_fixed/results_true.dat index ffe7d2cae5..701c3e1333 100644 --- a/tests/test_particle_restart_fixed/results_true.dat +++ b/tests/test_particle_restart_fixed/results_true.dat @@ -1,16 +1,16 @@ current batch: 7.000000E+00 current gen: -0.000000E+00 +1.000000E+00 particle id: -6.144000E+03 +9.280000E+02 run mode: 1.000000E+00 particle weight: 1.000000E+00 particle energy: -5.749729E+00 +4.412022E+00 particle xyz: -8.754675E+00 2.551620E+00 4.394350E-01 +5.572639E+00 -9.139472E+00 -1.974824E+00 particle uvw: --5.971721E-01 -4.845709E-01 6.391999E-01 +1.410422E-01 5.330426E-01 -8.342498E-01 diff --git a/tests/test_particle_restart_fixed/test_particle_restart_fixed.py b/tests/test_particle_restart_fixed/test_particle_restart_fixed.py index 05dcf76a68..385a429407 100644 --- a/tests/test_particle_restart_fixed/test_particle_restart_fixed.py +++ b/tests/test_particle_restart_fixed/test_particle_restart_fixed.py @@ -6,5 +6,5 @@ from testing_harness import ParticleRestartTestHarness if __name__ == '__main__': - harness = ParticleRestartTestHarness('particle_7_6144.*') + harness = ParticleRestartTestHarness('particle_7_928.*') harness.main() diff --git a/tests/test_ptables_off/results_true.dat b/tests/test_ptables_off/results_true.dat index 17d6e91453..2d6511cd25 100644 --- a/tests/test_ptables_off/results_true.dat +++ b/tests/test_ptables_off/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.984064E-01 3.464413E-03 +2.998034E-01 5.227986E-03 diff --git a/tests/test_reflective_cone/results_true.dat b/tests/test_reflective_cone/results_true.dat index 60b34bf66b..c8b833bff4 100644 --- a/tests/test_reflective_cone/results_true.dat +++ b/tests/test_reflective_cone/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.281477E+00 5.206704E-03 +2.269987E+00 4.469683E-03 diff --git a/tests/test_reflective_cylinder/results_true.dat b/tests/test_reflective_cylinder/results_true.dat index f98c517889..0a11f3ef31 100644 --- a/tests/test_reflective_cylinder/results_true.dat +++ b/tests/test_reflective_cylinder/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.276055E+00 3.186526E-03 +2.272436E+00 7.831006E-04 diff --git a/tests/test_reflective_plane/results_true.dat b/tests/test_reflective_plane/results_true.dat index 049d45606c..c5ba8e63fb 100644 --- a/tests/test_reflective_plane/results_true.dat +++ b/tests/test_reflective_plane/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.281505E+00 3.254688E-03 +2.276127E+00 4.678320E-03 diff --git a/tests/test_reflective_sphere/results_true.dat b/tests/test_reflective_sphere/results_true.dat index 47aa5c763e..f25a72dc95 100644 --- a/tests/test_reflective_sphere/results_true.dat +++ b/tests/test_reflective_sphere/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.280812E+00 5.087968E-03 +2.271012E+00 3.466350E-03 diff --git a/tests/test_resonance_scattering/results_true.dat b/tests/test_resonance_scattering/results_true.dat index 62b0ac2239..0dda991cac 100644 --- a/tests/test_resonance_scattering/results_true.dat +++ b/tests/test_resonance_scattering/results_true.dat @@ -1,2 +1,2 @@ k-combined: -6.452021E-02 1.738736E-03 +6.842112E-02 8.480934E-04 diff --git a/tests/test_rotation/results_true.dat b/tests/test_rotation/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_rotation/results_true.dat +++ b/tests/test_rotation/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_salphabeta/results_true.dat b/tests/test_salphabeta/results_true.dat index c2cd683bed..a04ee8fc89 100644 --- a/tests/test_salphabeta/results_true.dat +++ b/tests/test_salphabeta/results_true.dat @@ -1,2 +1,2 @@ k-combined: -8.418898E-01 5.633536E-03 +8.538165E-01 6.355606E-03 diff --git a/tests/test_salphabeta_multiple/results_true.dat b/tests/test_salphabeta_multiple/results_true.dat index 57e620610a..593c5adc74 100644 --- a/tests/test_salphabeta_multiple/results_true.dat +++ b/tests/test_salphabeta_multiple/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.686128E-01 5.056987E-02 +9.141547E-01 2.728809E-02 diff --git a/tests/test_score_MT/results_true.dat b/tests/test_score_MT/results_true.dat index 03b91f89fa..248f6657d0 100644 --- a/tests/test_score_MT/results_true.dat +++ b/tests/test_score_MT/results_true.dat @@ -1,5 +1,5 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 @@ -9,27 +9,27 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.107640E-02 -4.232516E-05 -1.107640E-02 -4.232516E-05 -3.509526E-01 -2.565440E-02 -1.171523E+00 -2.824070E-01 -5.592851E-04 -1.423656E-07 -5.592851E-04 -1.423656E-07 -3.027322E-02 -1.983924E-04 -1.477313E-02 -4.495633E-05 +6.261679E-03 +2.310296E-05 +6.261679E-03 +2.310296E-05 +3.434524E-01 +2.482946E-02 +1.059004E+00 +2.432555E-01 +3.828838E-04 +9.365499E-08 +3.828838E-04 +9.365499E-08 +3.226036E-02 +2.229037E-04 +1.450446E-02 +4.382852E-05 8.650696E-08 7.483455E-15 8.650696E-08 7.483455E-15 -1.097403E-04 -3.424171E-09 -6.866942E-02 -9.952916E-04 +7.312640E-05 +2.080857E-09 +6.101318E-02 +8.452067E-04 diff --git a/tests/test_score_absorption/results_true.dat b/tests/test_score_absorption/results_true.dat index dfdadbae7a..bacbf26a37 100644 --- a/tests/test_score_absorption/results_true.dat +++ b/tests/test_score_absorption/results_true.dat @@ -1,20 +1,20 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -2.267589E+00 -1.054691E+00 -1.476133E-02 -4.485759E-05 -3.306896E-01 -2.302248E-02 +2.006479E+00 +8.808050E-01 +1.444838E-02 +4.349668E-05 +2.926865E-01 +1.944083E-02 tally 2: 0.000000E+00 0.000000E+00 -2.290000E+00 -1.070700E+00 +2.030000E+00 +8.879000E-01 0.000000E+00 0.000000E+00 -3.800000E-01 -3.820000E-02 +4.000000E-01 +4.240000E-02 diff --git a/tests/test_score_current/results_true.dat b/tests/test_score_current/results_true.dat index 09d9a8ecf6..936e2d04bc 100644 --- a/tests/test_score_current/results_true.dat +++ b/tests/test_score_current/results_true.dat @@ -1 +1 @@ -8f7125c9686a94f0fdbd76b1667f84b9dab60c068e23d4f2b0105ce058fa533a8a4a221355614add10d54f3b18c14af41891e0fd0593154c73894e5dcb6fe5c2 \ No newline at end of file +1e6945632c55491d4584f4976cc6f5c7340874703cfaf739dd956b7124b4260955efb5b6ba041b32536f9a74572d071e0293dced55a41ea305223f698b734c2a \ No newline at end of file diff --git a/tests/test_score_events/results_true.dat b/tests/test_score_events/results_true.dat index fd18a5aba1..35ae33eb86 100644 --- a/tests/test_score_events/results_true.dat +++ b/tests/test_score_events/results_true.dat @@ -1,12 +1,12 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -5.627000E+01 -6.565251E+02 -4.892000E+01 -5.009100E+02 +5.328000E+01 +6.082750E+02 +5.594000E+01 +6.836068E+02 tally 2: -1.458000E+01 -4.391620E+01 -1.269000E+01 -3.363670E+01 +1.372000E+01 +4.018980E+01 +1.474000E+01 +4.802520E+01 diff --git a/tests/test_score_fission/results_true.dat b/tests/test_score_fission/results_true.dat index 1a3d333838..904c0d8895 100644 --- a/tests/test_score_fission/results_true.dat +++ b/tests/test_score_fission/results_true.dat @@ -1,20 +1,20 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.089685E+00 -2.438289E-01 +9.432574E-01 +1.970463E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -9.094323E-01 -1.773090E-01 +1.039280E+00 +2.345809E-01 tally 2: -1.081920E+00 -2.404883E-01 +8.953531E-01 +1.798609E-01 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -9.945760E-01 -2.073005E-01 +9.923196E-01 +2.067216E-01 diff --git a/tests/test_score_flux/results_true.dat b/tests/test_score_flux/results_true.dat index 9c21a0f3d8..31e1d92926 100644 --- a/tests/test_score_flux/results_true.dat +++ b/tests/test_score_flux/results_true.dat @@ -1,15 +1,15 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -3.403102E+01 -2.393236E+02 -1.143060E+01 -2.704386E+01 -5.691243E+01 -6.685581E+02 -2.924945E+01 -1.782032E+02 -9.965051E+00 -2.067319E+01 -4.931805E+01 -5.050490E+02 +3.224218E+01 +2.217821E+02 +1.079687E+01 +2.494701E+01 +5.252579E+01 +5.951604E+02 +3.325822E+01 +2.414028E+02 +1.145800E+01 +2.880575E+01 +5.605671E+01 +6.804062E+02 diff --git a/tests/test_score_flux_yn/results_true.dat b/tests/test_score_flux_yn/results_true.dat index 8c04c7c898..2e5df97cf4 100644 --- a/tests/test_score_flux_yn/results_true.dat +++ b/tests/test_score_flux_yn/results_true.dat @@ -1,448 +1,448 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -3.403102E+01 -2.393236E+02 -1.143060E+01 -2.704386E+01 -5.691243E+01 -6.685581E+02 -2.924945E+01 -1.782032E+02 -9.965051E+00 -2.067319E+01 -4.931805E+01 -5.050490E+02 +3.224218E+01 +2.217821E+02 +1.079687E+01 +2.494701E+01 +5.252579E+01 +5.951604E+02 +3.325822E+01 +2.414028E+02 +1.145800E+01 +2.880575E+01 +5.605671E+01 +6.804062E+02 tally 2: -3.403102E+01 -2.393236E+02 --3.055588E-01 -3.594044E-02 -3.171128E-01 -3.805380E-01 --7.374877E-01 -2.391349E-01 --1.621986E-01 -5.578051E-02 -4.710459E-01 -1.850595E-01 --4.839599E-01 -2.440735E-01 -1.124798E-01 -8.640649E-02 --4.976706E-01 -8.943606E-02 -1.323704E-01 -6.713903E-02 --6.954103E-02 -7.876989E-02 -1.343675E-01 -2.569171E-02 --5.205013E-01 -7.985579E-02 -2.037295E-01 -1.501360E-01 --1.290735E-01 -5.069422E-02 --2.045060E-01 -2.197889E-01 -1.307602E-01 -5.938649E-02 --3.317004E-01 -1.359233E-01 --4.347480E-01 -7.528253E-02 -7.685982E-02 -4.559715E-02 --4.668784E-02 -4.065614E-02 -1.447872E-01 -5.538956E-02 --2.027337E-01 -7.095051E-02 --4.673353E-01 -1.235371E-01 --3.321732E-01 -6.905624E-02 --3.028859E-01 -3.382353E-02 --2.320613E-01 -2.845904E-02 -8.038034E-02 -3.466746E-02 -1.766484E-01 -9.996559E-02 -3.385184E-02 -5.510769E-02 -6.952638E-02 -2.741119E-02 -3.630715E-01 -5.336447E-02 -2.876222E-01 -9.938256E-02 --3.473240E-02 -1.031412E-01 -1.280013E-01 -2.331384E-02 -1.550774E-01 -3.881493E-02 -1.143060E+01 -2.704386E+01 --1.955516E-01 -9.789273E-03 -4.070149E-02 -3.530892E-02 --1.446334E-01 -3.374966E-02 --4.072014E-02 -1.407320E-02 -1.056190E-01 -2.144988E-02 --1.491728E-01 -1.699068E-02 -3.130540E-02 -4.945783E-03 --1.706770E-01 -6.943395E-03 -6.278466E-02 -4.522701E-03 --6.491915E-02 -1.218265E-02 --6.226375E-02 -8.920919E-03 --2.647477E-01 -2.028918E-02 --9.179913E-03 -1.186941E-02 --8.959288E-02 -9.826050E-03 --4.800079E-02 -3.500548E-02 -9.919028E-02 -1.278789E-02 --1.274511E-01 -9.357943E-03 --9.037073E-02 -4.686665E-03 --7.895199E-03 -8.526809E-03 --2.071827E-02 -5.844891E-03 --1.422877E-02 -2.008170E-03 --7.787500E-02 -9.642362E-03 --6.105504E-02 -7.600775E-03 --1.249117E-01 -1.314509E-02 --9.183605E-02 -7.513215E-03 --9.171222E-02 -4.220465E-03 -8.798390E-02 -5.037483E-03 -4.366496E-02 -8.411743E-03 -1.605678E-02 -6.994511E-03 --2.179875E-02 -1.352098E-03 -1.116755E-01 -7.354424E-03 -9.995739E-02 -9.710026E-03 -3.010324E-02 -1.179938E-02 -2.175815E-02 -1.281441E-03 -2.374886E-02 -6.943432E-03 -5.691243E+01 -6.685581E+02 --7.130295E-01 -1.971869E-01 -1.138602E+00 -1.071873E+00 --1.436194E+00 -7.200870E-01 --2.384966E-01 -1.129688E-01 -8.003085E-01 -5.809429E-01 --3.499868E-01 -3.310435E-01 -2.580763E-01 -2.238385E-01 --3.576056E-01 -1.437071E-01 -2.560747E-01 -4.492224E-02 --4.006295E-01 -2.456809E-01 -8.176054E-02 -3.924768E-01 --8.105689E-01 -2.397175E-01 -3.777117E-01 -4.811523E-01 --4.932440E-01 -1.789106E-01 --3.705746E-02 -5.517840E-01 -7.049764E-01 -4.243943E-01 --4.833188E-01 -2.014189E-01 --5.420278E-01 -1.201572E-01 -7.606099E-02 -1.451071E-01 -2.244026E-01 -7.628680E-02 -2.495758E-01 -1.882655E-01 --1.373888E-01 -1.958724E-01 --3.799191E-01 -2.258678E-01 --5.909624E-01 -2.940322E-01 --6.336238E-01 -1.272552E-01 --5.544697E-01 -9.027652E-02 -4.161023E-01 -1.084744E-01 -5.550548E-01 -1.838427E-01 -3.060033E-01 -8.542356E-02 -3.623817E-01 -4.245612E-02 -4.779023E-01 -8.081477E-02 -1.089872E-01 -1.402042E-01 --1.107440E-01 -3.140479E-01 -2.333168E-01 -1.035674E-01 --5.959476E-02 -2.482914E-01 -2.924945E+01 -1.782032E+02 -5.986908E-01 -4.163713E-01 -3.376452E-01 -1.744277E-01 -1.272993E-01 -1.526084E-01 --2.551267E-01 -7.284601E-02 -4.755790E-02 -6.832796E-02 --3.425133E-01 -7.756266E-02 -3.823240E-01 -1.789133E-01 --3.767347E-01 -1.676013E-01 -1.655399E-01 -1.153056E-01 -1.432265E-01 -2.956364E-02 --2.989439E-01 -5.066565E-02 --3.226047E-02 -5.960686E-02 --9.968550E-02 -4.039270E-02 --1.235291E-02 -2.805714E-01 --7.494860E-02 -2.838999E-02 -3.042503E-02 -7.425538E-02 --1.849034E-01 -8.599532E-02 --5.209242E-01 -1.174277E-01 --2.314402E-01 -4.065974E-02 --4.179560E-01 -1.382716E-01 -1.026654E-01 -1.611177E-02 --2.270386E-01 -5.157513E-02 -7.884296E-02 -2.677093E-02 -7.284620E-01 -1.871262E-01 -1.360134E-01 -9.437335E-03 --3.088199E-01 -2.292832E-02 --2.543226E-01 -1.264440E-01 -6.256788E-02 -7.604299E-02 --3.478518E-01 -6.632508E-02 -2.842847E-01 -4.906462E-02 -1.546241E-01 -3.362908E-02 --2.247690E-01 -1.912574E-02 --3.459210E-02 -1.248892E-01 --2.204075E-01 -4.281299E-02 -2.145675E-01 -5.593188E-02 -9.965051E+00 -2.067319E+01 -2.381967E-01 -4.786935E-02 --1.924308E-02 -4.029344E-02 -3.179175E-02 -2.098033E-02 --1.652308E-02 -9.391525E-03 --5.733039E-02 -1.788395E-02 -4.942155E-02 -1.206623E-03 -1.874861E-02 -1.917059E-02 --1.179838E-01 -2.185564E-02 --9.270508E-03 -1.659002E-02 -7.496511E-02 -6.849931E-03 --1.004441E-01 -4.570271E-03 --9.899601E-02 -1.027435E-02 --9.963860E-02 -4.686519E-03 --1.740638E-02 -3.936514E-02 -2.520349E-02 -5.900520E-03 -1.227791E-03 -6.173783E-03 --3.068441E-02 -6.867402E-03 --7.765654E-02 -1.399383E-02 -7.333551E-02 -4.139444E-03 --3.508914E-02 -1.421599E-02 -4.334120E-02 -4.918888E-03 --1.106116E-01 -1.143785E-02 -7.254477E-03 -1.337965E-03 -2.365948E-01 -2.473485E-02 -5.176646E-02 -1.514750E-03 --8.723610E-02 -2.395100E-03 --1.010207E-01 -1.081070E-02 --5.113298E-02 -6.053279E-03 --1.601115E-01 -8.304230E-03 --5.105345E-03 -5.079654E-03 --8.894549E-02 -2.505026E-03 --1.023874E-01 -4.311776E-03 -7.972837E-02 -1.178305E-02 --2.560942E-02 -4.101793E-03 -2.312203E-02 -3.036209E-03 -4.931805E+01 -5.050490E+02 -1.513494E+00 -1.676567E+00 -6.650656E-01 -1.400732E+00 -4.934620E-01 -7.673322E-01 --2.964442E-02 -2.262500E-01 --2.225956E-01 -4.872938E-01 -2.498269E-01 -9.442256E-02 --1.454141E-01 -2.683171E-01 --3.720260E-01 -2.266316E-01 -2.473591E-01 -3.624408E-01 -2.096941E-01 -6.664835E-02 --4.700220E-01 -9.789465E-02 --1.626165E-01 -1.315362E-01 -3.519966E-01 -1.140516E-01 --1.185342E-01 -5.708362E-01 --1.333083E-01 -1.352294E-01 -1.375803E-01 -1.572243E-01 --6.099544E-02 -2.042264E-01 --3.664336E-01 -1.762506E-01 --1.717957E-01 -5.864778E-02 --5.153204E-01 -2.484316E-01 --2.258513E-01 -8.839687E-02 --9.307565E-01 -4.802462E-01 -1.108577E-01 -4.451363E-02 -1.118965E+00 -5.173979E-01 -4.314600E-01 -5.176751E-02 --2.864059E-01 -9.159895E-02 --4.471918E-01 -1.743046E-01 --7.850808E-02 -1.317732E-01 --7.445394E-01 -1.479808E-01 -7.480873E-01 -2.696289E-01 -1.731449E-01 -5.301367E-02 --3.663464E-01 -3.430563E-02 -3.553351E-01 -2.051544E-01 --4.312304E-01 -2.164291E-01 -2.436515E-01 -8.025128E-02 +3.224218E+01 +2.217821E+02 +-4.524803E-01 +1.326110E-01 +-2.725152E-01 +4.845463E-01 +-4.030063E-01 +1.825349E-01 +-2.145346E-01 +7.197305E-02 +2.488985E-01 +4.295894E-02 +-6.797085E-01 +2.125889E-01 +1.698034E-01 +3.750580E-02 +-6.596628E-02 +6.507545E-02 +4.519597E-02 +1.432412E-02 +6.227959E-01 +1.066624E-01 +2.328135E-01 +8.583522E-02 +-8.899482E-01 +1.982834E-01 +3.269468E-01 +5.392549E-02 +1.684792E-01 +1.461138E-01 +-2.026161E-01 +1.992812E-01 +2.599678E-01 +7.704699E-02 +-3.329837E-01 +8.761827E-02 +-5.287177E-01 +9.089410E-02 +3.666982E-01 +4.451200E-02 +2.096594E-01 +4.539545E-02 +2.091762E-01 +4.861771E-02 +1.476292E-01 +2.837569E-02 +-4.091772E-01 +1.141307E-01 +-1.652694E-01 +5.552090E-02 +8.207679E-02 +1.659512E-02 +-1.203575E-01 +6.408952E-02 +-8.219791E-03 +9.915873E-02 +-3.768675E-02 +8.535079E-02 +1.305167E-01 +1.917693E-02 +1.823050E-01 +1.945159E-02 +2.999655E-01 +4.587948E-02 +3.687435E-01 +1.382795E-01 +1.220376E-01 +6.297901E-02 +3.899923E-01 +5.894393E-02 +-1.878957E-02 +1.159448E-01 +1.079687E+01 +2.494701E+01 +-1.067271E-01 +9.075462E-03 +-2.571244E-02 +4.402172E-02 +-3.646387E-02 +2.948533E-02 +-1.043828E-01 +1.600528E-02 +4.361032E-02 +3.875958E-03 +-3.096545E-01 +3.184604E-02 +8.723730E-02 +4.599654E-03 +6.541966E-03 +9.605866E-03 +5.837907E-02 +3.026784E-03 +1.523399E-01 +7.846764E-03 +2.778305E-02 +8.106935E-03 +-2.895648E-01 +1.983532E-02 +4.866247E-02 +1.048055E-02 +2.600097E-02 +1.465465E-02 +-6.958338E-02 +3.287519E-02 +1.690742E-01 +1.204714E-02 +-1.127534E-01 +7.881362E-03 +-1.662306E-01 +9.412057E-03 +1.674047E-01 +6.690449E-03 +-4.370664E-02 +5.828314E-03 +9.323095E-02 +4.400433E-03 +1.353164E-02 +1.389416E-03 +-1.062009E-01 +1.297730E-02 +-5.331064E-02 +5.321055E-03 +7.698466E-02 +3.247975E-03 +-2.095250E-02 +4.788058E-03 +-8.861817E-03 +7.657174E-03 +1.769365E-02 +1.144058E-03 +1.788678E-02 +2.746804E-03 +4.403056E-03 +6.918351E-04 +1.059091E-01 +1.394217E-02 +1.442934E-01 +1.318500E-02 +2.199047E-02 +5.838245E-03 +8.175546E-02 +3.242012E-03 +7.359786E-03 +1.673277E-02 +5.252579E+01 +5.951604E+02 +-8.293789E-01 +2.900775E-01 +6.285324E-01 +1.487344E+00 +-4.765860E-01 +8.058451E-01 +-3.101266E-01 +1.597231E-01 +3.333449E-01 +1.162003E-01 +-1.314742E+00 +4.565068E-01 +4.726655E-01 +1.161194E-01 +2.824987E-01 +8.732802E-02 +1.025468E-01 +4.935830E-02 +4.216767E-01 +1.225700E-01 +-4.022783E-02 +1.178843E-01 +-7.967853E-01 +2.698001E-01 +3.741686E-01 +2.849501E-01 +3.377745E-01 +3.722806E-01 +9.234355E-02 +4.498496E-01 +8.019475E-01 +3.404218E-01 +-3.086622E-01 +1.857604E-01 +-8.474654E-01 +1.733363E-01 +8.124627E-01 +1.415201E-01 +-3.075481E-01 +3.345921E-02 +7.126178E-01 +2.478330E-01 +2.983972E-01 +2.913106E-02 +-6.759256E-01 +4.245338E-01 +-3.491214E-01 +1.017784E-01 +1.637602E-01 +7.414687E-02 +-3.344942E-01 +1.165491E-01 +-6.038784E-02 +1.791698E-01 +2.645086E-01 +8.129446E-02 +-2.738265E-01 +6.616303E-02 +1.135151E-02 +4.140154E-02 +4.679883E-01 +1.914750E-01 +2.876984E-01 +1.355086E-01 +-2.741613E-01 +1.060457E-01 +5.972204E-01 +2.144153E-01 +-9.215131E-02 +4.815135E-01 +3.325822E+01 +2.414028E+02 +-3.072951E-02 +3.385901E-01 +9.729550E-01 +3.745599E-01 +-5.237870E-01 +3.101477E-01 +-5.994810E-01 +1.696123E-01 +-3.402784E-01 +1.910685E-01 +-3.779571E-01 +2.598004E-01 +-4.804007E-01 +1.417261E-01 +-5.444032E-01 +1.756801E-01 +-9.921809E-02 +6.889191E-02 +-3.768065E-01 +8.931168E-02 +5.814513E-02 +1.660714E-02 +-1.263664E-01 +2.650287E-01 +1.951860E-01 +2.090892E-01 +3.576168E-01 +2.511782E-01 +-9.547988E-02 +7.900044E-03 +5.460746E-01 +1.319868E-01 +-1.577655E-01 +8.575762E-02 +2.938792E-02 +7.941653E-02 +-7.505627E-01 +2.530444E-01 +-2.399786E-01 +1.105633E-01 +2.035740E-01 +2.442135E-02 +1.190368E-01 +8.652216E-02 +5.753449E-01 +9.353813E-02 +4.911025E-01 +6.795258E-02 +-2.967023E-03 +7.063512E-03 +-2.158307E-01 +4.680921E-02 +-1.811238E-01 +7.008450E-02 +1.809785E-01 +3.414843E-02 +-1.380825E-01 +3.469381E-02 +3.722241E-01 +3.956589E-02 +2.064516E-01 +2.676312E-02 +-3.889056E-01 +6.737109E-02 +1.625815E-01 +1.356347E-02 +-5.278455E-01 +1.297993E-01 +-1.269304E-02 +1.253029E-02 +1.145800E+01 +2.880575E+01 +6.201234E-02 +4.410457E-02 +2.694694E-01 +6.262339E-02 +-1.173739E-01 +4.727885E-02 +-1.785056E-01 +1.745391E-02 +-4.744392E-02 +2.117667E-02 +3.998416E-02 +6.058339E-02 +-1.927536E-01 +1.710512E-02 +-1.800560E-01 +2.420071E-02 +-1.136912E-01 +1.049357E-02 +-1.104415E-01 +1.181394E-02 +3.486245E-02 +3.673104E-03 +-8.343502E-02 +2.270299E-02 +-3.064437E-02 +1.197968E-02 +1.912081E-01 +2.808487E-02 +2.601014E-02 +1.311244E-03 +1.295023E-01 +1.108983E-02 +-1.158397E-01 +1.033182E-02 +8.316701E-02 +2.061897E-02 +-1.136796E-01 +3.133021E-02 +-1.722931E-02 +2.168654E-02 +1.464014E-01 +8.570818E-03 +5.859338E-02 +6.076029E-03 +1.776223E-01 +1.345571E-02 +1.582455E-01 +9.719314E-03 +9.088118E-03 +1.681557E-03 +-6.298727E-02 +5.287397E-03 +5.793395E-03 +6.397495E-03 +-1.835123E-02 +4.506573E-03 +-7.558061E-02 +4.462082E-03 +3.136371E-02 +3.181332E-03 +-2.787527E-02 +1.765822E-03 +-9.878307E-02 +3.381183E-03 +1.279690E-01 +4.386067E-03 +-1.043523E-01 +5.381331E-03 +1.000162E-02 +6.707280E-04 +5.605671E+01 +6.804062E+02 +1.431465E-01 +1.700768E+00 +2.010680E+00 +2.307036E+00 +-5.276592E-01 +1.006050E+00 +-9.123132E-01 +4.824313E-01 +-3.276490E-01 +5.842232E-01 +6.749445E-02 +6.049661E-01 +-1.317515E+00 +4.738014E-01 +-9.470910E-01 +4.937085E-01 +-3.338536E-01 +2.196164E-01 +-3.032729E-01 +1.241029E-01 +-3.285269E-01 +5.276607E-02 +-4.107012E-01 +6.402858E-01 +3.357626E-01 +2.672801E-01 +1.000507E+00 +5.263322E-01 +-1.834202E-01 +9.495434E-02 +8.133484E-01 +3.011488E-01 +-4.083516E-01 +2.428630E-01 +4.032934E-01 +1.825835E-01 +-8.291267E-01 +6.773284E-01 +-2.401557E-01 +2.280331E-01 +4.325658E-01 +1.163540E-01 +6.671759E-02 +2.181769E-01 +6.984462E-01 +1.716985E-01 +7.108347E-01 +1.386394E-01 +1.709795E-01 +5.320122E-02 +-2.354809E-01 +7.105363E-02 +1.600239E-01 +9.179874E-02 +2.802111E-02 +6.149546E-02 +-4.005049E-01 +2.195356E-01 +7.914623E-01 +2.273026E-01 +3.392453E-01 +1.101813E-01 +-7.821576E-01 +1.637944E-01 +4.736782E-01 +1.531480E-01 +-5.253391E-01 +1.093913E-01 +2.235961E-01 +5.449263E-02 diff --git a/tests/test_score_kappafission/results_true.dat b/tests/test_score_kappafission/results_true.dat index f9f4c44b9a..dadcdd281b 100644 --- a/tests/test_score_kappafission/results_true.dat +++ b/tests/test_score_kappafission/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -2.135627E+02 -9.364189E+03 +1.848110E+02 +7.563211E+03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.782510E+02 -6.811324E+03 +2.035912E+02 +8.999693E+03 diff --git a/tests/test_score_nufission/results_true.dat b/tests/test_score_nufission/results_true.dat index 21d6586b68..5d0b44662e 100644 --- a/tests/test_score_nufission/results_true.dat +++ b/tests/test_score_nufission/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -2.879098E+00 -1.700626E+00 +2.486342E+00 +1.368793E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -2.401881E+00 -1.235627E+00 +2.733038E+00 +1.616903E+00 diff --git a/tests/test_score_nuscatter/results_true.dat b/tests/test_score_nuscatter/results_true.dat index e2be939c75..df695d8a87 100644 --- a/tests/test_score_nuscatter/results_true.dat +++ b/tests/test_score_nuscatter/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -1.239000E+01 -3.172630E+01 -3.570000E+00 -2.668900E+00 -4.450000E+01 -4.100412E+02 +1.169000E+01 +2.915330E+01 +3.200000E+00 +2.342600E+00 +4.064000E+01 +3.595168E+02 diff --git a/tests/test_score_nuscatter_n/results_true.dat b/tests/test_score_nuscatter_n/results_true.dat index 9b84b70786..b46a1e184d 100644 --- a/tests/test_score_nuscatter_n/results_true.dat +++ b/tests/test_score_nuscatter_n/results_true.dat @@ -1,33 +1,33 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.239000E+01 -3.172630E+01 -1.431689E+00 -4.209133E-01 -6.192790E-01 -1.440589E-01 -4.143123E-01 -5.479770E-02 -2.942906E-01 -3.458523E-02 -3.570000E+00 -2.668900E+00 -3.298388E-01 -4.816449E-02 -3.308381E-01 -3.018261E-02 -5.366444E-02 -7.235974E-03 --7.363858E-02 -7.113489E-03 -4.450000E+01 -4.100412E+02 -2.317316E+01 -1.102855E+02 -8.679054E+00 -1.538963E+01 -7.128469E-01 -1.440027E-01 --1.172445E+00 -3.514659E-01 +1.169000E+01 +2.915330E+01 +1.247253E+00 +3.767436E-01 +5.330812E-01 +1.385083E-01 +2.987823E-01 +5.699361E-02 +2.645512E-01 +2.905381E-02 +3.200000E+00 +2.342600E+00 +3.809941E-01 +2.965326E-02 +4.319242E-01 +3.738822E-02 +9.261909E-02 +6.711328E-03 +-6.052442E-02 +7.087230E-03 +4.064000E+01 +3.595168E+02 +2.096700E+01 +9.516606E+01 +7.560566E+00 +1.248694E+01 +2.093348E-01 +4.278510E-02 +-1.449929E+00 +4.356371E-01 diff --git a/tests/test_score_nuscatter_pn/results_true.dat b/tests/test_score_nuscatter_pn/results_true.dat index 18a93153ed..3c34895d90 100644 --- a/tests/test_score_nuscatter_pn/results_true.dat +++ b/tests/test_score_nuscatter_pn/results_true.dat @@ -1,24 +1,24 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.239000E+01 -3.172630E+01 -1.431689E+00 -4.209133E-01 -6.192790E-01 -1.440589E-01 -4.143123E-01 -5.479770E-02 -2.942906E-01 -3.458523E-02 +1.169000E+01 +2.915330E+01 +1.247253E+00 +3.767436E-01 +5.330812E-01 +1.385083E-01 +2.987823E-01 +5.699361E-02 +2.645512E-01 +2.905381E-02 tally 2: -1.239000E+01 -3.172630E+01 -1.431689E+00 -4.209133E-01 -6.192790E-01 -1.440589E-01 -4.143123E-01 -5.479770E-02 -2.942906E-01 -3.458523E-02 +1.169000E+01 +2.915330E+01 +1.247253E+00 +3.767436E-01 +5.330812E-01 +1.385083E-01 +2.987823E-01 +5.699361E-02 +2.645512E-01 +2.905381E-02 diff --git a/tests/test_score_nuscatter_yn/results_true.dat b/tests/test_score_nuscatter_yn/results_true.dat index e6ca67827c..1e8e143ef4 100644 --- a/tests/test_score_nuscatter_yn/results_true.dat +++ b/tests/test_score_nuscatter_yn/results_true.dat @@ -1,38 +1,38 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.239000E+01 -3.172630E+01 +1.169000E+01 +2.915330E+01 tally 2: -1.239000E+01 -3.172630E+01 --1.558408E-01 -1.069360E-02 --4.768057E-02 -2.298561E-02 -7.015981E-02 -1.366523E-02 --2.449791E-02 -5.899048E-03 -9.535825E-02 -6.335188E-03 --9.915129E-03 -2.116965E-03 --2.535001E-03 -2.410993E-03 -1.030312E-01 -1.128648E-02 --4.471182E-02 -6.335010E-03 -4.744793E-02 -2.215754E-03 -6.507318E-02 -2.747856E-03 --8.724368E-02 -3.500811E-03 -5.479971E-03 -2.059588E-04 --1.345855E-01 -5.547202E-03 -8.586379E-02 -3.537507E-03 +1.169000E+01 +2.915330E+01 +-2.198379E-01 +2.828670E-02 +-1.317276E-01 +9.568596E-03 +8.309792E-02 +1.155410E-02 +-2.288506E-02 +3.710542E-03 +-2.720674E-02 +1.789163E-03 +-1.323964E-02 +1.819112E-04 +8.941597E-02 +4.265616E-03 +1.516805E-01 +1.332526E-02 +-1.832782E-02 +6.611171E-03 +1.311371E-02 +2.840648E-03 +3.728365E-02 +2.866806E-03 +-5.100587E-02 +2.957146E-03 +3.388028E-02 +2.481570E-03 +-7.766921E-02 +3.129377E-03 +1.666131E-02 +3.828290E-03 diff --git a/tests/test_score_scatter/results_true.dat b/tests/test_score_scatter/results_true.dat index 9619e0f49d..5f0ae8b1dd 100644 --- a/tests/test_score_scatter/results_true.dat +++ b/tests/test_score_scatter/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -1.290818E+01 -3.438677E+01 -3.136743E+00 -2.032819E+00 -4.503247E+01 -4.196453E+02 +1.223028E+01 +3.185078E+01 +2.900350E+00 +1.814004E+00 +4.059013E+01 +3.609499E+02 diff --git a/tests/test_score_scatter_n/results_true.dat b/tests/test_score_scatter_n/results_true.dat index 418eabad78..b46a1e184d 100644 --- a/tests/test_score_scatter_n/results_true.dat +++ b/tests/test_score_scatter_n/results_true.dat @@ -1,33 +1,33 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.238000E+01 -3.168320E+01 -1.437080E+00 -4.234943E-01 -6.199204E-01 -1.441510E-01 -4.101424E-01 -5.414561E-02 -2.977431E-01 -3.433685E-02 -3.570000E+00 -2.668900E+00 -3.298388E-01 -4.816449E-02 -3.308381E-01 -3.018261E-02 -5.366444E-02 -7.235974E-03 --7.363858E-02 -7.113489E-03 -4.450000E+01 -4.100412E+02 -2.317316E+01 -1.102855E+02 -8.679054E+00 -1.538963E+01 -7.128469E-01 -1.440027E-01 --1.172445E+00 -3.514659E-01 +1.169000E+01 +2.915330E+01 +1.247253E+00 +3.767436E-01 +5.330812E-01 +1.385083E-01 +2.987823E-01 +5.699361E-02 +2.645512E-01 +2.905381E-02 +3.200000E+00 +2.342600E+00 +3.809941E-01 +2.965326E-02 +4.319242E-01 +3.738822E-02 +9.261909E-02 +6.711328E-03 +-6.052442E-02 +7.087230E-03 +4.064000E+01 +3.595168E+02 +2.096700E+01 +9.516606E+01 +7.560566E+00 +1.248694E+01 +2.093348E-01 +4.278510E-02 +-1.449929E+00 +4.356371E-01 diff --git a/tests/test_score_scatter_pn/results_true.dat b/tests/test_score_scatter_pn/results_true.dat index d6767ea031..3c34895d90 100644 --- a/tests/test_score_scatter_pn/results_true.dat +++ b/tests/test_score_scatter_pn/results_true.dat @@ -1,24 +1,24 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.238000E+01 -3.168320E+01 -1.437080E+00 -4.234943E-01 -6.199204E-01 -1.441510E-01 -4.101424E-01 -5.414561E-02 -2.977431E-01 -3.433685E-02 +1.169000E+01 +2.915330E+01 +1.247253E+00 +3.767436E-01 +5.330812E-01 +1.385083E-01 +2.987823E-01 +5.699361E-02 +2.645512E-01 +2.905381E-02 tally 2: -1.238000E+01 -3.168320E+01 -1.437080E+00 -4.234943E-01 -6.199204E-01 -1.441510E-01 -4.101424E-01 -5.414561E-02 -2.977431E-01 -3.433685E-02 +1.169000E+01 +2.915330E+01 +1.247253E+00 +3.767436E-01 +5.330812E-01 +1.385083E-01 +2.987823E-01 +5.699361E-02 +2.645512E-01 +2.905381E-02 diff --git a/tests/test_score_scatter_yn/results_true.dat b/tests/test_score_scatter_yn/results_true.dat index 23f56743bd..9df7ea42a7 100644 --- a/tests/test_score_scatter_yn/results_true.dat +++ b/tests/test_score_scatter_yn/results_true.dat @@ -1,56 +1,56 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.238000E+01 -3.168320E+01 +1.169000E+01 +2.915330E+01 tally 2: -1.238000E+01 -3.168320E+01 --1.570048E-01 -1.067590E-02 --4.730723E-02 -2.307294E-02 -6.490976E-02 -1.426908E-02 --2.426427E-02 -5.909294E-03 -9.534163E-02 -6.333588E-03 --1.023123E-02 -2.132217E-03 --2.609941E-03 -2.406916E-03 -1.035322E-01 -1.128320E-02 --4.271935E-02 -6.478440E-03 -4.721270E-02 -2.212864E-03 -6.453502E-02 -2.750693E-03 --8.681394E-02 -3.493602E-03 -3.052598E-03 -1.842182E-04 --1.350899E-01 -5.564227E-03 -8.846033E-02 -3.537258E-03 -5.729362E-02 -2.064207E-03 -1.780469E-02 -2.838072E-03 --4.570340E-02 -2.812380E-03 -2.213430E-02 -5.564728E-04 --3.159434E-03 -3.500419E-03 --1.547339E-02 -1.929157E-03 -6.653362E-02 -1.421509E-03 -1.226039E-02 -1.144939E-03 -5.785933E-03 -4.218074E-04 +1.169000E+01 +2.915330E+01 +-2.198379E-01 +2.828670E-02 +-1.317276E-01 +9.568596E-03 +8.309792E-02 +1.155410E-02 +-2.288506E-02 +3.710542E-03 +-2.720674E-02 +1.789163E-03 +-1.323964E-02 +1.819112E-04 +8.941597E-02 +4.265616E-03 +1.516805E-01 +1.332526E-02 +-1.832782E-02 +6.611171E-03 +1.311371E-02 +2.840648E-03 +3.728365E-02 +2.866806E-03 +-5.100587E-02 +2.957146E-03 +3.388028E-02 +2.481570E-03 +-7.766921E-02 +3.129377E-03 +1.666131E-02 +3.828290E-03 +8.102553E-02 +2.118169E-03 +6.303084E-03 +7.156173E-04 +-2.083478E-03 +2.683340E-03 +6.794806E-03 +3.912783E-04 +1.005390E-01 +2.920205E-03 +-5.332517E-02 +2.205372E-03 +-1.584725E-02 +8.984498E-04 +3.486904E-02 +6.448722E-04 +-2.420912E-02 +6.352276E-04 diff --git a/tests/test_score_total/results_true.dat b/tests/test_score_total/results_true.dat index 0838e7baed..f3aa5d89b1 100644 --- a/tests/test_score_total/results_true.dat +++ b/tests/test_score_total/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -1.517577E+01 -4.747271E+01 -3.151504E+00 -2.051857E+00 -4.536316E+01 -4.258781E+02 +1.423676E+01 +4.330937E+01 +2.914798E+00 +1.831649E+00 +4.088282E+01 +3.662539E+02 diff --git a/tests/test_score_total_yn/results_true.dat b/tests/test_score_total_yn/results_true.dat index b2dcd39e12..bcfdb9080f 100644 --- a/tests/test_score_total_yn/results_true.dat +++ b/tests/test_score_total_yn/results_true.dat @@ -1,14 +1,14 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: 0.000000E+00 0.000000E+00 -1.517577E+01 -4.747271E+01 -3.151504E+00 -2.051857E+00 -4.536316E+01 -4.258781E+02 +1.423676E+01 +4.330937E+01 +2.914798E+00 +1.831649E+00 +4.088282E+01 +3.662539E+02 tally 2: 0.000000E+00 0.000000E+00 @@ -110,106 +110,106 @@ tally 2: 0.000000E+00 0.000000E+00 0.000000E+00 -8.795501E-01 -1.600341E-01 --1.530661E-02 -5.215322E-04 -1.571095E-02 -9.166057E-04 -7.226990E-03 -3.683499E-04 --2.456165E-02 -1.571441E-04 -1.387449E-02 -5.600648E-04 --2.186870E-02 -2.081164E-04 --1.106814E-02 -1.065144E-04 --4.579593E-03 -2.008225E-04 -7.573253E-03 -2.493075E-04 --1.505016E-02 -1.451400E-04 -1.503792E-02 -9.539029E-05 --1.183668E-02 -1.741393E-04 -4.060912E-03 -5.890591E-05 -1.789747E-02 -8.239749E-05 --2.168438E-02 -1.555757E-04 --1.045826E-02 -8.108402E-05 -1.227413E-02 -2.502871E-04 --2.806122E-02 -1.886120E-04 --4.918718E-03 -2.129038E-04 --1.014729E-02 -6.914145E-05 --5.873760E-03 -2.229738E-04 -6.666511E-03 -1.394147E-04 --3.245528E-03 -1.550876E-04 --1.037659E-02 -2.163837E-04 -1.517577E+01 -4.747271E+01 --2.463504E-01 -2.376091E-02 -7.930151E-02 -3.516796E-02 --1.611736E-01 -2.658129E-02 --9.124923E-02 -1.181443E-02 -2.766258E-01 -2.310767E-02 --2.269608E-01 -3.593659E-02 --5.345296E-02 -1.169733E-02 --1.838169E-01 -1.625334E-02 --7.883035E-02 -8.514293E-03 --4.922148E-02 -7.767910E-03 -1.144559E-01 -4.638553E-03 --2.027207E-01 -2.158672E-02 -5.449222E-02 -1.287150E-02 -5.384229E-02 -6.688120E-03 --8.231311E-02 -2.743044E-02 -1.172790E-02 -1.089457E-02 --1.545389E-01 -2.655167E-02 --2.290221E-01 -1.443721E-02 -2.773254E-02 -1.070478E-02 --2.522703E-02 -1.136507E-02 --1.287564E-02 -4.969443E-03 -3.471629E-02 -7.559603E-03 --2.261509E-01 -2.383142E-02 --1.463402E-01 -1.526988E-02 +7.812543E-01 +1.349265E-01 +-7.005988E-03 +2.198486E-04 +3.237937E-02 +7.569491E-04 +-3.865436E-04 +4.048167E-04 +-1.003877E-02 +3.195619E-04 +3.738815E-03 +3.506174E-04 +-2.549288E-02 +3.086810E-04 +1.693002E-02 +1.255885E-04 +3.059341E-03 +1.971678E-04 +9.247344E-03 +2.402855E-04 +6.618469E-04 +1.639025E-04 +1.992953E-02 +1.365376E-04 +3.262256E-03 +1.341040E-05 +2.864166E-03 +4.394787E-05 +1.494351E-03 +1.001007E-04 +-1.091424E-02 +1.221030E-04 +9.875992E-03 +1.141979E-04 +1.263647E-02 +2.400023E-04 +-2.944398E-03 +1.246417E-04 +1.970051E-03 +1.600160E-04 +6.148931E-03 +4.774182E-05 +1.107728E-02 +1.095420E-04 +1.382599E-02 +1.537793E-04 +-1.296297E-02 +1.392028E-04 +-1.479385E-02 +1.650074E-04 +1.423676E+01 +4.330937E+01 +-2.802155E-01 +3.016146E-02 +-8.009314E-02 +4.251899E-02 +-7.383773E-02 +1.547362E-02 +-1.274422E-01 +2.290306E-02 +1.370426E-01 +1.002935E-02 +-2.607280E-01 +3.414307E-02 +1.497421E-02 +2.944540E-03 +-2.866477E-02 +9.113662E-03 +-3.949118E-02 +4.437767E-03 +2.283116E-01 +1.792907E-02 +1.334103E-01 +1.587762E-02 +-3.139096E-01 +2.330713E-02 +1.025884E-03 +5.754195E-03 +1.099489E-01 +1.861634E-02 +-7.863729E-02 +2.276108E-02 +1.219111E-01 +1.363203E-02 +-1.261893E-01 +1.937908E-02 +-1.995428E-01 +1.383344E-02 +8.803472E-02 +3.742219E-03 +1.501143E-01 +1.288322E-02 +4.522115E-02 +8.283014E-03 +1.113588E-01 +8.523967E-03 +-1.820582E-01 +1.648932E-02 +-1.121108E-01 +1.059879E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -260,56 +260,56 @@ tally 2: 0.000000E+00 0.000000E+00 0.000000E+00 -3.151504E+00 -2.051857E+00 --4.923938E-02 -1.416150E-03 --1.041702E-02 -8.114498E-04 --3.212977E-02 -2.419393E-03 -2.557299E-02 -1.124488E-03 -4.083178E-02 -1.351219E-03 --3.910818E-02 -8.908208E-04 -5.659008E-03 -4.488733E-04 --1.625829E-02 -2.325228E-04 -2.554220E-02 -7.666018E-04 --2.251672E-02 -7.703442E-04 --8.302474E-03 -2.748216E-04 --7.692439E-02 -2.167893E-03 -7.267774E-03 -7.781907E-04 -6.821338E-03 -9.518920E-04 --2.203951E-02 -2.214610E-03 -2.052514E-02 -3.756195E-04 --4.158575E-02 -9.330262E-04 --3.000932E-02 -4.584914E-04 --2.247072E-02 -2.519845E-04 -1.589401E-02 -2.302726E-04 --7.793787E-04 -1.588955E-04 --4.634907E-03 -5.395803E-04 --1.193817E-02 -1.674419E-04 --1.682320E-02 -8.389254E-04 +2.914798E+00 +1.831649E+00 +-3.213884E-02 +1.391026E-03 +-1.124311E-02 +2.059984E-03 +-1.372399E-02 +2.990198E-03 +-6.931800E-03 +1.073303E-03 +-5.448993E-03 +3.542504E-04 +-7.264172E-02 +1.742045E-03 +1.526380E-02 +5.962297E-04 +1.576474E-02 +5.335071E-04 +2.028206E-02 +2.915489E-04 +4.014298E-02 +4.285950E-04 +8.228146E-03 +6.388002E-04 +-8.183952E-02 +2.031634E-03 +1.014523E-02 +1.159653E-03 +9.321030E-03 +7.480844E-04 +-3.156017E-02 +2.064357E-03 +3.606483E-02 +4.060244E-04 +-3.866234E-02 +1.046100E-03 +-5.723297E-02 +1.042437E-03 +2.894838E-02 +2.922848E-04 +-1.529225E-03 +2.472179E-04 +9.484410E-03 +4.172637E-04 +-4.442548E-04 +2.518508E-04 +-3.065480E-02 +3.571846E-04 +-6.519117E-03 +1.779322E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -360,53 +360,53 @@ tally 2: 0.000000E+00 0.000000E+00 0.000000E+00 -4.536316E+01 -4.258781E+02 --6.747275E-01 -3.006113E-01 -5.302096E-01 -4.167797E-01 --4.347270E-01 -3.702158E-01 --7.344613E-02 -5.940699E-02 -1.081217E+00 -4.070812E-01 --3.172368E-02 -3.124338E-02 -2.656115E-01 -8.561866E-02 --1.286933E-01 -8.347414E-02 -1.258195E-01 -3.329577E-02 --3.751107E-01 -9.007513E-02 -4.283879E-01 -1.067035E-01 --3.467870E-01 -6.788988E-02 -4.218567E-02 -4.465188E-02 -6.876561E-02 -5.655954E-02 --1.116047E-01 -1.073179E-01 -4.077067E-01 -1.148942E-01 --3.218725E-01 -4.739201E-02 --4.297438E-01 -9.739104E-02 -2.199014E-01 -2.328443E-02 -6.007636E-01 -1.194137E-01 --2.194826E-01 -5.017106E-02 -2.266133E-01 -1.131899E-01 -7.161662E-04 -3.345992E-02 --1.987041E-01 -1.381432E-01 +4.088282E+01 +3.662539E+02 +-9.859591E-01 +2.743013E-01 +2.392244E-01 +3.795971E-01 +-3.389717E-01 +7.054539E-01 +-1.673679E-01 +1.081377E-01 +2.918680E-01 +7.161035E-02 +-5.627453E-01 +9.124299E-02 +7.185542E-01 +2.062140E-01 +8.533956E-02 +3.649126E-02 +7.630639E-02 +1.623523E-02 +3.785290E-02 +4.181389E-02 +1.388919E-01 +1.307834E-01 +-2.682812E-01 +6.653584E-02 +7.151084E-02 +3.466772E-02 +6.941393E-02 +2.821800E-02 +2.392050E-02 +1.132504E-01 +3.749985E-01 +8.337209E-02 +-2.998887E-01 +6.767226E-02 +-3.629285E-01 +7.246083E-02 +3.989685E-01 +4.378581E-02 +1.330115E-01 +2.634398E-02 +2.649739E-01 +4.300042E-02 +5.793351E-01 +7.399884E-02 +-2.236528E-01 +3.130205E-02 +-3.695818E-01 +4.703480E-02 diff --git a/tests/test_seed/results_true.dat b/tests/test_seed/results_true.dat index 860e9e9af6..df79ce1ced 100644 --- a/tests/test_seed/results_true.dat +++ b/tests/test_seed/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.984828E-01 5.293550E-03 +2.951164E-01 2.504580E-03 diff --git a/tests/test_source_angle_mono/results_true.dat b/tests/test_source_angle_mono/results_true.dat index 1aca9a5057..42e948758a 100644 --- a/tests/test_source_angle_mono/results_true.dat +++ b/tests/test_source_angle_mono/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.034005E-01 5.499077E-03 +2.964943E-01 1.201478E-02 diff --git a/tests/test_source_energy_maxwell/results_true.dat b/tests/test_source_energy_maxwell/results_true.dat index 349c65ef9c..37b8b36b99 100644 --- a/tests/test_source_energy_maxwell/results_true.dat +++ b/tests/test_source_energy_maxwell/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.008495E-01 6.113736E-03 +2.886671E-01 7.534631E-03 diff --git a/tests/test_source_energy_mono/results_true.dat b/tests/test_source_energy_mono/results_true.dat index b7af42bcae..029376bf37 100644 --- a/tests/test_source_energy_mono/results_true.dat +++ b/tests/test_source_energy_mono/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.964207E-01 7.263112E-03 +3.002731E-01 7.561170E-03 diff --git a/tests/test_source_file/results_true.dat b/tests/test_source_file/results_true.dat index 738a15c584..fee61dda26 100644 --- a/tests/test_source_file/results_true.dat +++ b/tests/test_source_file/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.031470E-01 4.441814E-03 +2.962911E-01 4.073420E-03 diff --git a/tests/test_source_point/results_true.dat b/tests/test_source_point/results_true.dat index 040f4e188f..fe9a0d78d4 100644 --- a/tests/test_source_point/results_true.dat +++ b/tests/test_source_point/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.025384E-01 4.682677E-03 +3.041148E-01 4.558319E-03 diff --git a/tests/test_sourcepoint_latest/results_true.dat b/tests/test_sourcepoint_latest/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_sourcepoint_latest/results_true.dat +++ b/tests/test_sourcepoint_latest/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_sourcepoint_restart/results_true.dat b/tests/test_sourcepoint_restart/results_true.dat index 917fc0cdfb..0e4eef9a9d 100644 --- a/tests/test_sourcepoint_restart/results_true.dat +++ b/tests/test_sourcepoint_restart/results_true.dat @@ -1,16 +1,116 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 tally 1: -1.200000E-02 -4.000000E-05 -8.118392E-03 -1.773579E-05 -3.683496E-03 -4.911153E-06 -1.507354E-03 -2.420229E-06 -6.245016E-03 -9.775028E-06 +7.000000E-03 +2.100000E-05 +1.127639E-03 +7.464355E-07 +-1.264355E-03 +1.192757E-06 +8.769846E-04 +1.117508E-06 +3.359153E-03 +4.366438E-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 +6.107648E-04 +3.730336E-07 +1.000000E-03 +1.000000E-06 +6.713061E-04 +4.506518E-07 +1.759778E-04 +3.096817E-08 +-2.506458E-04 +6.282332E-08 +6.069794E-04 +3.684240E-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 +7.000000E-03 +1.500000E-05 +4.398928E-03 +8.198908E-06 +1.784486E-03 +3.422315E-06 +8.494423E-04 +9.262242E-07 +4.566637E-03 +5.646039E-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 +6.069794E-04 +3.684240E-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.000000E-03 +3.000000E-06 +-1.419189E-03 +9.791601E-07 +-3.125982E-05 +5.086129E-07 +3.291570E-04 +1.943609E-07 +1.525426E-03 +8.346311E-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 @@ -23,34 +123,254 @@ tally 1: 0.000000E+00 1.000000E-03 1.000000E-06 --6.834146E-04 -4.670555E-07 -2.005832E-04 -4.023363E-08 -2.271406E-04 -5.159283E-08 -1.822902E-03 -3.322972E-06 -3.000000E-03 -9.000000E-06 -2.089393E-03 -4.365565E-06 -1.135864E-03 -1.290186E-06 -8.092128E-04 -6.548254E-07 +-1.542107E-05 +2.378095E-10 +-4.996433E-04 +2.496434E-07 +2.312244E-05 +5.346472E-10 +3.053824E-04 +9.325841E-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 +2.000000E-02 +8.600000E-05 +3.995253E-03 +1.648172E-05 +3.349403E-03 +1.166653E-05 +4.208940E-03 +7.077664E-06 +1.033905E-02 +2.197265E-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.029991E-04 +1.818050E-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.600000E-02 +1.620000E-04 +7.996640E-03 +1.882484E-05 +3.921034E-03 +1.157453E-05 +1.644629E-03 +3.217857E-06 +1.159182E-02 +3.534975E-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 +1.100000E-02 +2.500000E-05 +4.691861E-03 +7.999548E-06 +1.771537E-03 +3.385525E-06 +7.888659E-04 +1.911759E-06 +4.561602E-03 +4.337486E-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 +6.107648E-04 +3.730336E-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-03 +1.000000E-06 +-3.878617E-04 +1.504367E-07 +-2.743449E-04 +7.526515E-08 +4.359210E-04 +1.900271E-07 +3.034897E-04 +9.210600E-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 +1.600000E-02 +5.600000E-05 +4.563082E-03 +6.119552E-06 +1.839038E-03 +1.089339E-06 +1.944879E-03 +2.372975E-06 +8.524215E-03 +1.874218E-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.015373E-04 +3.618471E-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.300000E-02 -5.100000E-05 -4.806354E-03 -1.638996E-05 -2.497355E-03 -3.759321E-06 -2.012128E-03 -2.901025E-06 -6.823095E-03 -1.298557E-05 +5.300000E-05 +6.763364E-03 +1.445064E-05 +2.970216E-03 +3.071874E-06 +2.622002E-03 +3.547897E-06 +5.177618E-03 +8.040228E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -59,8 +379,688 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.993246E-04 -1.796295E-07 +3.007686E-04 +9.046177E-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 +3.102008E-04 +9.622454E-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 +8.000000E-03 +1.400000E-05 +1.172941E-04 +1.212454E-06 +4.110442E-04 +5.740547E-06 +1.788140E-03 +9.775061E-07 +3.946448E-03 +3.956113E-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 +6.109694E-04 +1.866863E-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-03 +1.000000E-06 +9.168648E-04 +8.406410E-07 +7.609615E-04 +5.790624E-07 +5.515881E-04 +3.042494E-07 +3.102008E-04 +9.622454E-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 +3.102008E-04 +9.622454E-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-02 +2.020000E-04 +1.305502E-02 +4.343057E-05 +8.214305E-03 +2.001202E-05 +3.511762E-03 +1.412559E-05 +1.401995E-02 +4.269615E-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 +2.400000E-02 +1.320000E-04 +5.207205E-03 +9.311400E-06 +3.232372E-03 +3.475980E-06 +2.062884E-03 +4.773104E-06 +1.039066E-02 +2.611825E-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.171802E-04 +4.646485E-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 +1.221939E-03 +7.467452E-07 +1.000000E-03 +1.000000E-06 +9.910929E-04 +9.822652E-07 +9.733978E-04 +9.475032E-07 +9.471508E-04 +8.970946E-07 +0.000000E+00 +0.000000E+00 +1.200000E-02 +5.000000E-05 +2.602864E-03 +4.471106E-06 +4.677566E-03 +1.033338E-05 +3.640584E-03 +3.605122E-06 +4.845169E-03 +8.244364E-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.100000E-02 +3.700000E-05 +3.786358E-03 +5.908272E-06 +3.416266E-03 +7.032934E-06 +3.353945E-03 +5.140933E-06 +4.261660E-03 +4.981501E-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 +6.136905E-04 +1.883305E-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.700000E-02 +2.090000E-04 +7.046302E-03 +1.594429E-05 +6.489218E-03 +1.057182E-05 +5.057204E-03 +8.269888E-06 +1.274541E-02 +3.591083E-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.503843E-03 +2.261544E-06 +3.000000E-03 +5.000000E-06 +3.434984E-04 +2.731822E-07 +-1.911976E-04 +2.018778E-08 +-5.635206E-04 +2.075189E-07 +2.764973E-03 +3.917274E-06 +2.000000E-03 +2.000000E-06 +1.802029E-03 +1.623906E-06 +1.435858E-03 +1.032682E-06 +9.559957E-04 +4.622600E-07 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.540000E-04 +1.210267E-02 +4.180540E-05 +5.431699E-03 +2.284317E-05 +6.108638E-03 +1.136078E-05 +1.309420E-02 +3.810504E-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.124312E-04 +1.875678E-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 +6.044609E-04 +3.653729E-07 +1.000000E-03 +1.000000E-06 +9.341546E-04 +8.726448E-07 +8.089673E-04 +6.544280E-07 +6.367311E-04 +4.054265E-07 +3.022304E-04 +9.134324E-08 +2.100000E-02 +9.900000E-05 +1.206996E-02 +4.033646E-05 +6.345510E-03 +1.603169E-05 +1.976558E-03 +4.386164E-06 +1.001209E-02 +2.316074E-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.007686E-04 +9.046177E-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.815901E-03 +1.829916E-06 +2.000000E-03 +2.000000E-06 +1.977802E-03 +1.955858E-06 +1.933788E-03 +1.869841E-06 +1.868714E-03 +1.746332E-06 +0.000000E+00 +0.000000E+00 +1.100000E-02 +3.900000E-05 +2.604154E-03 +9.668124E-06 +1.503936E-04 +1.170450E-06 +5.645599E-04 +1.841604E-06 +5.455481E-03 +1.116233E-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 +6.015373E-04 +3.618471E-07 +1.000000E-03 +1.000000E-06 +9.936377E-04 +9.873159E-07 +9.809739E-04 +9.623097E-07 +9.621293E-04 +9.256927E-07 +0.000000E+00 +0.000000E+00 +4.100000E-02 +3.610000E-04 +1.275568E-02 +3.756672E-05 +7.436840E-03 +1.784918E-05 +6.238119E-03 +1.114039E-05 +1.706095E-02 +6.393171E-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.510747E-03 +8.216143E-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.500000E-02 +1.570000E-04 +4.743361E-03 +1.500512E-05 +2.243747E-03 +1.216909E-05 +6.504387E-04 +5.012686E-06 +1.369930E-02 +4.220232E-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.124312E-04 +1.875678E-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 +1.205998E-03 +7.272200E-07 +2.000000E-03 +2.000000E-06 +1.935082E-03 +1.872342E-06 +1.808514E-03 +1.635965E-06 +1.626644E-03 +1.325172E-06 +0.000000E+00 +0.000000E+00 +1.800000E-02 +1.180000E-04 +6.144587E-03 +1.810176E-05 +3.517233E-03 +7.894223E-06 +5.434668E-03 +1.689927E-05 +7.002945E-03 +1.633731E-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.111025E-04 +2.767076E-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 +6.000000E-03 +1.400000E-05 +2.937841E-03 +3.083257E-06 +1.316488E-03 +1.378720E-06 +1.917209E-03 +1.388887E-06 +2.434865E-03 +1.665821E-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.102008E-04 +9.622454E-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 +4.100000E-02 +4.290000E-04 +1.555575E-02 +6.845536E-05 +1.492622E-02 +7.523417E-05 +4.779064E-03 +1.568962E-05 +1.858109E-02 +9.770216E-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.007686E-04 +9.046177E-08 +1.000000E-03 +1.000000E-06 +-7.961895E-04 +6.339178E-07 +4.508767E-04 +2.032898E-07 +-6.751245E-05 +4.557931E-09 +2.105380E-03 +4.432627E-06 +1.000000E-03 +1.000000E-06 +7.706275E-04 +5.938667E-07 +3.908001E-04 +1.527247E-07 +-1.181620E-05 +1.396226E-10 +0.000000E+00 +0.000000E+00 +2.300000E-02 +1.870000E-04 +8.530317E-03 +2.513821E-05 +2.769866E-03 +1.832987E-06 +3.367000E-03 +3.408158E-06 +1.029151E-02 +3.475479E-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.007686E-04 +9.046177E-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.300000E-02 +1.110000E-04 +1.493458E-02 +4.520237E-05 +8.130453E-03 +1.434362E-05 +5.917132E-03 +7.829616E-06 +1.005025E-02 +2.033292E-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.007686E-04 +9.046177E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -83,14 +1083,14 @@ tally 1: 0.000000E+00 7.000000E-03 1.100000E-05 --2.517807E-05 -3.415722E-06 -1.479050E-03 -1.509604E-06 --4.624719E-04 -1.787423E-06 -3.839667E-03 -3.396077E-06 +2.102923E-03 +3.237003E-06 +5.338761E-04 +1.665334E-06 +2.177563E-03 +1.210407E-06 +3.049393E-03 +2.236660E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -99,18 +1099,78 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.038170E-04 -9.230477E-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 +3.300000E-02 +2.470000E-04 +1.392809E-02 +4.644694E-05 +6.658849E-03 +2.448402E-05 +2.971606E-03 +4.596585E-06 +1.583003E-02 +5.281056E-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.146617E-04 +4.615975E-07 1.000000E-03 1.000000E-06 -2.553692E-04 -6.521341E-08 --4.021799E-04 -1.617487E-07 --3.414200E-04 -1.165676E-07 -2.962222E-04 -8.774759E-08 +5.742336E-04 +3.297442E-07 +-5.383652E-06 +2.898371E-11 +-3.879749E-04 +1.505245E-07 +1.213130E-03 +5.521442E-07 +2.000000E-03 +2.000000E-06 +1.895662E-03 +1.796999E-06 +1.695499E-03 +1.439233E-06 +1.415735E-03 +1.008516E-06 +3.007686E-04 +9.046177E-08 +4.000000E-02 +3.460000E-04 +1.325054E-02 +4.611581E-05 +4.279513E-03 +1.445432E-05 +5.681074E-03 +8.701686E-06 +1.883326E-02 +7.820565E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -119,62 +1179,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.962222E-04 -8.774759E-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 -2.200000E-02 -1.140000E-04 -1.358164E-03 -1.242643E-05 -1.986239E-05 -5.467378E-06 -1.233135E-03 -7.603089E-06 -9.455567E-03 -1.937818E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +9.052295E-04 +4.558347E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -183,8 +1189,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.525429E-03 +8.388512E-07 +3.000000E-03 +3.000000E-06 +2.694249E-03 +2.442268E-06 +2.163402E-03 +1.718872E-06 +1.541834E-03 +1.227757E-06 0.000000E+00 0.000000E+00 +2.000000E-02 +1.000000E-04 +5.928221E-03 +9.217060E-06 +5.152240E-03 +1.183310E-05 +2.057268E-03 +2.929338E-06 +9.478909E-03 +2.313196E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -193,6 +1219,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.057201E-04 +1.834492E-07 +1.000000E-03 +1.000000E-06 +9.405199E-04 +8.845778E-07 +8.268666E-04 +6.837084E-07 +6.691277E-04 +4.477318E-07 +6.124312E-04 +1.875678E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -201,16 +1239,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +6.124312E-04 +1.875678E-07 1.400000E-02 5.200000E-05 -4.571175E-03 -9.190534E-06 -4.041031E-03 -5.995154E-06 -2.577281E-04 -1.101532E-06 -8.329519E-03 -1.844018E-05 +6.537971E-03 +1.724690E-05 +3.839523E-03 +8.693753E-06 +4.048043E-03 +5.450370E-06 +7.581656E-03 +1.459334E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -229,68 +1269,208 @@ 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.000000E-03 -1.000000E-05 -4.520960E-04 -2.298902E-06 -4.635765E-04 -2.661361E-07 --3.704326E-04 -7.038297E-08 -2.349751E-03 -4.331174E-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.215268E-03 -1.476876E-06 +6.069794E-04 +3.684240E-07 1.000000E-03 1.000000E-06 -9.835700E-04 -9.674099E-07 -9.511149E-04 -9.046195E-07 -9.034334E-04 -8.161919E-07 +5.703488E-04 +3.252978E-07 +-1.205336E-05 +1.452836E-10 +-3.916902E-04 +1.534212E-07 0.000000E+00 0.000000E+00 +3.200000E-02 +2.340000E-04 +1.368605E-02 +4.005184E-05 +6.894848E-03 +1.073483E-05 +5.553663E-03 +7.001843E-06 +1.492310E-02 +4.851599E-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.224455E-03 +5.613642E-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.800000E-02 +1.860000E-04 +1.044511E-02 +6.915901E-05 +6.444951E-03 +3.586496E-05 +5.196826E-03 +1.312451E-05 +1.156517E-02 +3.164422E-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.057201E-04 +1.834492E-07 1.000000E-03 1.000000E-06 -9.302087E-04 -8.652883E-07 -7.979324E-04 -6.366961E-07 -6.169336E-04 -3.806071E-07 -5.774597E-04 -3.334597E-07 +-6.535773E-04 +4.271632E-07 +1.407448E-04 +1.980911E-08 +2.824055E-04 +7.975284E-08 +1.822205E-03 +1.106831E-06 +2.000000E-03 +2.000000E-06 +1.954998E-03 +1.911525E-06 +1.867287E-03 +1.747820E-06 +1.741309E-03 +1.532659E-06 +0.000000E+00 +0.000000E+00 +1.900000E-02 +1.010000E-04 +1.062788E-02 +3.182295E-05 +6.707513E-03 +1.259151E-05 +6.889024E-03 +1.429877E-05 +8.202036E-03 +2.430378E-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.306024E-04 +8.660208E-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 +9.306024E-04 +8.660208E-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 +3.102008E-04 +9.622454E-08 +1.500000E-02 +4.500000E-05 +3.192578E-03 +7.201112E-06 +4.457942E-03 +6.346144E-06 +3.572536E-03 +4.921318E-06 +7.292620E-03 +1.123722E-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.111025E-04 +2.767076E-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 +6.069794E-04 +3.684240E-07 +1.000000E-03 +1.000000E-06 +9.537549E-04 +9.096483E-07 +8.644725E-04 +7.473127E-07 +7.383215E-04 +5.451186E-07 +0.000000E+00 +0.000000E+00 +2.300000E-02 +1.310000E-04 +7.696543E-03 +2.602323E-05 +5.553275E-03 +1.677303E-05 +3.110421E-03 +1.605284E-05 +1.157943E-02 +3.065139E-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.102008E-04 +9.622454E-08 +1.000000E-03 +1.000000E-06 +-1.849356E-05 +3.420117E-10 +-4.994870E-04 +2.494872E-07 +2.772452E-05 +7.686492E-10 +9.104691E-04 +8.289540E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -301,6 +1481,466 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +2.600000E-02 +1.460000E-04 +1.097600E-02 +2.696995E-05 +8.425033E-03 +2.480653E-05 +3.259803E-03 +4.519527E-06 +1.278442E-02 +3.571130E-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.102008E-04 +9.622454E-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.600000E-02 +6.000000E-05 +2.471171E-03 +8.220215E-06 +2.563821E-04 +8.785791E-07 +1.300883E-03 +3.079168E-06 +7.314002E-03 +1.134821E-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.022304E-04 +9.134324E-08 +1.000000E-03 +1.000000E-06 +-5.657444E-04 +3.200667E-07 +-1.989995E-05 +3.960081E-10 +3.959267E-04 +1.567580E-07 +3.007686E-04 +9.046177E-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 +8.000000E-03 +1.800000E-05 +5.436075E-03 +7.868978E-06 +2.425522E-03 +1.963607E-06 +7.168734E-04 +1.273978E-06 +4.589694E-03 +5.548791E-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.100000E-02 +1.070000E-04 +7.539735E-03 +2.068189E-05 +3.936810E-03 +7.972494E-06 +2.420366E-04 +1.148364E-06 +9.428594E-03 +2.131421E-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.053824E-04 +9.325841E-08 +2.000000E-03 +2.000000E-06 +1.606787E-04 +1.589809E-06 +1.384713E-03 +1.050316E-06 +7.117279E-04 +6.789060E-07 +9.257840E-04 +4.781566E-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 +4.600000E-02 +5.100000E-04 +1.468472E-02 +4.705766E-05 +8.285657E-03 +2.501121E-05 +5.066048E-03 +7.892505E-06 +1.769628E-02 +7.226941E-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.216485E-03 +5.564829E-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.300000E-02 +1.130000E-04 +9.030313E-03 +2.036594E-05 +5.561323E-03 +2.088769E-05 +3.949070E-03 +5.399490E-06 +1.065996E-02 +2.405722E-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.124312E-04 +1.875678E-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 +6.044609E-04 +3.653729E-07 +1.000000E-03 +1.000000E-06 +9.969425E-04 +9.938944E-07 +9.908416E-04 +9.817670E-07 +9.817251E-04 +9.637842E-07 +0.000000E+00 +0.000000E+00 +1.300000E-02 +4.300000E-05 +1.119189E-03 +4.668647E-06 +-1.976393E-04 +4.632517E-06 +2.358914E-03 +3.047107E-06 +6.688330E-03 +1.125860E-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.102008E-04 +9.622454E-08 +1.000000E-03 +1.000000E-06 +-3.353539E-04 +1.124622E-07 +-3.313067E-04 +1.097641E-07 +4.087442E-04 +1.670718E-07 +9.161472E-04 +8.393257E-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.600000E-02 +1.980000E-04 +1.024848E-02 +3.100622E-05 +-1.145555E-04 +2.521646E-06 +1.453177E-03 +1.505423E-06 +1.124135E-02 +3.412415E-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.029991E-04 +1.818050E-07 +1.000000E-03 +1.000000E-06 +-2.499079E-04 +6.245395E-08 +-4.063191E-04 +1.650952E-07 +3.358425E-04 +1.127902E-07 +6.044609E-04 +3.653729E-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 +6.743817E-03 +2.313239E-05 +1.353852E-03 +7.358462E-06 +3.054381E-03 +5.051576E-06 +7.932519E-03 +1.438883E-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.102008E-04 +9.622454E-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 +9.000000E-05 +4.678519E-03 +8.162854E-06 +2.588181E-03 +7.958110E-06 +2.322176E-03 +3.426024E-06 +8.534070E-03 +1.767419E-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.029991E-04 +1.818050E-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.100000E-02 +3.300000E-05 +7.244624E-03 +1.778235E-05 +2.926133E-03 +9.287629E-06 +9.851866E-04 +6.097573E-06 +3.660351E-03 +3.716102E-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.034897E-04 +9.210600E-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 +3.053824E-04 +9.325841E-08 +1.000000E-03 +1.000000E-06 +1.744930E-04 +3.044781E-08 +-4.543283E-04 +2.064142E-07 +-2.484572E-04 +6.173098E-08 +0.000000E+00 +0.000000E+00 +1.000000E-02 +2.600000E-05 +3.641369E-03 +6.818931E-06 +2.110606E-03 +2.176630E-06 +1.892973E-03 +1.812944E-06 +5.777456E-03 +9.494012E-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.034897E-04 +9.210600E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -322,15 +1962,15 @@ tally 1: 0.000000E+00 0.000000E+00 1.300000E-02 -4.700000E-05 -6.197649E-03 -1.101082E-05 -5.066781E-03 -9.709157E-06 -2.134240E-03 -1.351796E-06 -5.604113E-03 -8.598750E-06 +3.900000E-05 +1.682557E-03 +1.846926E-06 +4.172846E-04 +1.892148E-06 +7.276646E-04 +1.085417E-06 +6.092709E-03 +8.907893E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -339,48 +1979,8 @@ 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 -6.000000E-03 -1.000000E-05 --9.379228E-05 -1.179295E-06 -1.623379E-03 -1.703479E-06 --8.659077E-05 -7.366687E-07 -2.943759E-03 -2.593311E-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.962222E-04 -8.774759E-08 +3.053824E-04 +9.325841E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -403,14 +2003,14 @@ tally 1: 0.000000E+00 5.000000E-03 7.000000E-06 -2.431919E-03 -1.726875E-06 --5.793826E-04 -1.604970E-07 --1.845208E-03 -8.995877E-07 -1.788227E-03 -8.910514E-07 +1.580450E-03 +1.753085E-06 +3.349602E-04 +3.639488E-07 +2.690006E-04 +2.374932E-07 +1.830811E-03 +9.321096E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -419,6 +2019,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.102008E-04 +9.622454E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -447,6 +2049,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.034897E-04 +9.210600E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -477,380 +2081,56 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.900000E-02 +1.250000E-04 +2.138118E-03 +8.791773E-06 +2.868574E-03 +9.339641E-06 +5.807501E-04 +1.660344E-06 +8.165982E-03 +2.226036E-05 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.000000E-02 -1.940000E-04 -9.461264E-03 -1.947969E-05 -3.587007E-03 -6.174074E-06 -4.090547E-03 -7.913444E-06 -1.296390E-02 -3.766012E-05 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +3.102008E-04 +9.622454E-08 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -8.793837E-04 -2.578025E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.044609E-04 +3.653729E-07 1.000000E-03 1.000000E-06 --8.123463E-04 -6.599064E-07 -4.898597E-04 -2.399625E-07 --1.216619E-04 -1.480163E-08 -3.038170E-04 -9.230477E-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 -1.500000E-02 -6.500000E-05 -3.611706E-03 -1.040980E-05 -9.737058E-04 -4.485811E-06 --7.198322E-05 -1.665155E-06 -7.644305E-03 -1.681345E-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.962222E-04 -8.774759E-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.962222E-04 -8.774759E-08 -1.000000E-03 -1.000000E-06 -9.957690E-04 -9.915560E-07 -9.873340E-04 -9.748284E-07 -9.747484E-04 -9.501344E-07 -0.000000E+00 -0.000000E+00 -1.300000E-02 -4.500000E-05 -3.079966E-03 -9.332877E-06 -1.443410E-03 -2.514831E-06 -1.111923E-03 -1.429512E-06 -6.483010E-03 -9.477194E-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 -8.937562E-04 -2.663195E-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 -9.114510E-04 -8.307430E-07 -1.000000E-03 -1.000000E-06 -8.370200E-04 -7.006024E-07 -5.509036E-04 -3.034948E-07 -2.105156E-04 -4.431682E-08 -3.038170E-04 -9.230477E-08 -9.000000E-03 -1.900000E-05 --2.021899E-04 -8.445484E-06 -2.148061E-03 -2.701015E-06 -1.264629E-03 -5.949953E-07 -4.409634E-03 -5.032698E-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.962222E-04 -8.774759E-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.076340E-04 -3.692191E-07 -1.000000E-03 -1.000000E-06 -9.987845E-04 -9.975704E-07 -9.963556E-04 -9.927245E-07 -9.927178E-04 -9.854887E-07 -0.000000E+00 -0.000000E+00 -3.300000E-02 -2.270000E-04 -1.837920E-02 -7.801676E-05 -1.150357E-02 -2.715434E-05 -5.741625E-03 -6.838179E-06 -1.540397E-02 -4.998202E-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.038170E-04 -9.230477E-08 -1.000000E-03 -1.000000E-06 -5.247170E-04 -2.753280E-07 --8.700807E-05 -7.570404E-09 --4.259024E-04 -1.813928E-07 -1.196497E-03 -7.159790E-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.430000E-04 -8.404687E-03 -2.505155E-05 -6.898191E-03 -1.367706E-05 -3.899114E-03 -3.607028E-06 -1.271358E-02 -3.382031E-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.955076E-04 -8.732472E-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-02 -1.940000E-04 -1.736738E-02 -7.398587E-05 -7.729434E-03 -1.773562E-05 -4.523718E-03 -5.898914E-06 -1.567397E-02 -5.134448E-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.993246E-04 -1.796295E-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 -9.000000E-03 -2.300000E-05 --7.007722E-04 -2.822943E-06 --5.777080E-04 -9.868563E-07 -1.257117E-03 -3.672741E-07 -5.315767E-03 -6.276521E-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.400000E-02 -1.220000E-04 -1.229985E-02 -3.184724E-05 -1.060332E-02 -2.381543E-05 -7.803741E-03 -1.463189E-05 -1.117224E-02 -2.961846E-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.480499E-03 -6.139848E-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 -1.822902E-03 -3.322972E-06 -2.000000E-03 -4.000000E-06 -1.879286E-03 -3.531714E-06 -1.649674E-03 -2.721425E-06 -1.333434E-03 -1.778047E-06 +2.312419E-04 +5.347280E-08 +-4.197908E-04 +1.762243E-07 +-3.159499E-04 +9.982435E-08 0.000000E+00 0.000000E+00 2.100000E-02 -1.010000E-04 -8.226424E-03 -1.799176E-05 -6.115955E-03 -1.432832E-05 -5.108113E-03 -8.009589E-06 -1.030852E-02 -2.790767E-05 +1.070000E-04 +2.216472E-03 +6.388960E-06 +4.896969E-03 +6.428816E-06 +2.155707E-03 +2.884510E-06 +1.038058E-02 +2.477423E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -859,38 +2139,38 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.861614E-04 -2.617623E-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.661896E-04 -7.502844E-07 +3.007686E-04 +9.046177E-08 1.000000E-03 1.000000E-06 -8.824739E-04 -7.787602E-07 -6.681402E-04 -4.464114E-07 -3.943779E-04 -1.555340E-07 -2.887299E-04 -8.336493E-08 -2.400000E-02 -1.340000E-04 -5.157290E-03 -7.361769E-06 -3.873191E-03 -7.075290E-06 -8.178477E-04 -5.349982E-06 -1.151979E-02 -2.707490E-05 +7.019813E-04 +4.927778E-07 +2.391667E-04 +5.720072E-08 +-1.881699E-04 +3.540793E-08 +2.131373E-03 +2.696833E-06 +1.000000E-03 +1.000000E-06 +9.937981E-04 +9.876347E-07 +9.814521E-04 +9.632483E-07 +9.630767E-04 +9.275168E-07 +0.000000E+00 +0.000000E+00 +6.000000E-03 +1.000000E-05 +2.774441E-03 +2.455060E-06 +-4.125360E-04 +1.557128E-06 +-9.369606E-04 +2.349382E-06 +3.666415E-03 +4.871762E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -899,8 +2179,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.880544E-04 -2.629944E-07 +6.057201E-04 +1.834492E-07 +1.000000E-03 +1.000000E-06 +8.429685E-04 +7.105959E-07 +5.658938E-04 +3.202358E-07 +2.330721E-04 +5.432261E-08 +6.015373E-04 +3.618471E-07 +0.000000E+00 +0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -909,28 +2201,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.362820E-03 -2.089719E-06 3.000000E-03 -3.000000E-06 -2.788384E-03 -2.594798E-06 -2.392197E-03 -1.932048E-06 -1.861371E-03 -1.235196E-06 +5.000000E-06 +1.596397E-03 +1.275630E-06 +4.822532E-04 +1.627925E-07 +2.983020E-04 +9.401537E-08 +1.221939E-03 +7.467452E-07 0.000000E+00 0.000000E+00 -1.000000E-02 -3.600000E-05 -1.316990E-03 -3.149836E-06 --3.200310E-04 -2.746500E-07 --1.360513E-03 -1.090571E-06 -4.126370E-03 -6.612189E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -939,8 +2221,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.038170E-04 -9.230477E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -961,296 +2241,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.700000E-02 -1.810000E-04 -9.818267E-03 -4.983755E-05 -3.336597E-03 -8.390727E-06 -2.160979E-03 -5.064669E-06 -1.384908E-02 -4.570937E-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.925469E-04 -1.756697E-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.832949E-04 -7.802099E-07 -1.000000E-03 -1.000000E-06 -2.811985E-04 -7.907261E-08 --3.813911E-04 -1.454592E-07 --3.662100E-04 -1.341098E-07 -0.000000E+00 -0.000000E+00 -3.100000E-02 -2.130000E-04 -1.202681E-02 -3.022795E-05 -7.515466E-03 -1.650504E-05 -5.404032E-03 -1.127927E-05 -1.330371E-02 -4.078117E-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.038170E-04 -9.230477E-08 -3.000000E-03 -3.000000E-06 -2.638441E-04 -1.166669E-06 -2.500034E-04 -9.610467E-07 -1.533129E-03 -8.706796E-07 -1.174177E-03 -5.193538E-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.800000E-02 -2.980000E-04 -1.429526E-02 -5.478450E-05 -1.510549E-03 -2.039833E-05 -5.571300E-03 -7.961775E-06 -1.713980E-02 -6.035252E-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.804596E-04 -2.584372E-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.774597E-04 -3.334597E-07 -2.000000E-03 -4.000000E-06 -1.885369E-03 -3.554618E-06 -1.668235E-03 -2.783008E-06 -1.371259E-03 -1.880351E-06 -2.887299E-04 -8.336493E-08 -1.800000E-02 -7.600000E-05 -1.188269E-02 -3.305188E-05 -6.397672E-03 -1.039477E-05 -5.195583E-03 -8.228666E-06 -6.541819E-03 -1.138522E-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.955076E-04 -8.732472E-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.920000E-04 -9.138883E-03 -2.389639E-05 -8.073407E-03 -1.777984E-05 -4.397066E-03 -1.246700E-05 -1.396848E-02 -4.880190E-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.184277E-03 -3.507420E-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.888633E-04 -3.467599E-07 -1.000000E-03 -1.000000E-06 -9.872275E-04 -9.746182E-07 -9.619273E-04 -9.253040E-07 -9.245834E-04 -8.548545E-07 -0.000000E+00 -0.000000E+00 -2.800000E-02 -1.960000E-04 -9.225605E-03 -2.308636E-05 -5.671475E-03 -8.733020E-06 -2.978790E-03 -7.550647E-06 -1.623921E-02 -6.654244E-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 -1.000000E-03 -1.000000E-06 --2.171929E-04 -4.717275E-08 --4.292409E-04 -1.842477E-07 -3.001754E-04 -9.010526E-08 -5.982486E-04 -1.789948E-07 -1.000000E-03 -1.000000E-06 -9.264912E-04 -8.583859E-07 -7.875789E-04 -6.202805E-07 -5.984807E-04 -3.581791E-07 -0.000000E+00 -0.000000E+00 -4.000000E-02 -3.760000E-04 -1.836389E-02 -1.034063E-04 -1.618617E-02 -7.468163E-05 -1.265008E-02 -4.683455E-05 -1.680380E-02 -6.300115E-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.481316E-03 -7.904264E-07 -1.000000E-03 -1.000000E-06 --7.356303E-04 -5.411519E-07 -3.117279E-04 -9.717427E-08 -1.082261E-04 -1.171288E-08 -5.888633E-04 -3.467599E-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 -2.200000E-05 -1.034121E-03 -5.652456E-07 --8.248086E-04 -1.478042E-06 --7.162554E-04 -2.662167E-07 -4.452971E-03 -6.246366E-06 +4.000000E-05 +-7.915490E-05 +1.150292E-07 +2.293529E-03 +2.932682E-06 +1.356149E-03 +9.471925E-07 +4.579650E-03 +7.918475E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1259,8 +2259,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.899392E-04 -1.740147E-07 +3.022304E-04 +9.134324E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1281,296 +2281,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.700000E-02 -1.650000E-04 -1.022719E-02 -3.691933E-05 -8.344427E-03 -2.163687E-05 -2.493470E-03 -3.777443E-06 -1.562097E-02 -5.500554E-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.865227E-04 -7.859225E-07 -1.000000E-03 -1.000000E-06 --2.406040E-04 -5.789029E-08 --4.131646E-04 -1.707050E-07 -3.260844E-04 -1.063311E-07 -2.628743E-03 -4.454101E-06 -1.000000E-03 -1.000000E-06 -8.584065E-04 -7.368618E-07 -6.052926E-04 -3.663792E-07 -2.937076E-04 -8.626413E-08 -2.887299E-04 -8.336493E-08 -2.400000E-02 -1.460000E-04 -1.482825E-02 -6.559075E-05 -7.894674E-03 -1.733357E-05 -4.942543E-03 -5.919157E-06 -9.954930E-03 -2.766286E-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.887299E-04 -8.336493E-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.114510E-04 -8.307430E-07 -1.000000E-03 -1.000000E-06 -9.637579E-04 -9.288293E-07 -8.932439E-04 -7.978848E-07 -7.922796E-04 -6.277069E-07 -0.000000E+00 -0.000000E+00 -2.800000E-02 -2.080000E-04 -9.690534E-03 -3.443096E-05 -4.888498E-03 -1.094678E-05 -2.994444E-03 -6.032009E-06 -1.236682E-02 -3.585861E-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.191871E-03 -5.399087E-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.832949E-04 -7.802099E-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 -9.000000E-03 -3.100000E-05 -6.119200E-03 -1.291899E-05 -5.129096E-03 -1.114323E-05 -4.761296E-03 -9.710486E-06 -3.829174E-03 -6.324914E-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.944316E-04 -8.668999E-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.774597E-04 -3.334597E-07 -1.000000E-03 -1.000000E-06 -9.885814E-04 -9.772933E-07 -9.659399E-04 -9.330399E-07 -9.324628E-04 -8.694869E-07 -0.000000E+00 -0.000000E+00 -2.300000E-02 -1.270000E-04 -5.315630E-03 -1.185056E-05 -2.837051E-03 -6.724635E-06 -2.570238E-03 -6.855367E-06 -1.266746E-02 -3.785511E-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.038170E-04 -9.230477E-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.031416E-04 -4.565438E-07 -1.000000E-03 -1.000000E-06 -9.914618E-04 -9.829965E-07 -9.744947E-04 -9.496400E-07 -9.493160E-04 -9.012008E-07 -0.000000E+00 -0.000000E+00 -9.000000E-03 -2.900000E-05 -2.008698E-03 -7.210242E-06 -1.288698E-03 -6.087002E-07 --5.193923E-04 -4.491465E-07 -3.876462E-03 -4.440238E-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.038170E-04 -9.230477E-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.700000E-02 -2.030000E-04 -1.013137E-02 -3.117050E-05 -3.372227E-03 -8.195716E-06 -3.788344E-03 -6.816175E-06 -1.323056E-02 -4.179593E-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.183098E-03 -8.764183E-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 -9.114510E-04 -8.307430E-07 -1.000000E-03 -1.000000E-06 -8.500688E-04 -7.226169E-07 -5.839254E-04 -3.409689E-07 -2.605821E-04 -6.790302E-08 -0.000000E+00 -0.000000E+00 1.100000E-02 -2.700000E-05 -7.820374E-03 -1.524804E-05 -4.579486E-03 -8.746643E-06 -3.441507E-03 -5.197609E-06 -4.452744E-03 -4.715167E-06 +3.300000E-05 +5.093647E-03 +1.217545E-05 +1.852586E-03 +4.478970E-06 +9.768799E-04 +1.395189E-06 +4.578572E-03 +5.491453E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1579,8 +2299,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.887299E-04 -8.336493E-08 +3.102008E-04 +9.622454E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1589,388 +2309,28 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.774597E-04 -3.334597E-07 +3.053824E-04 +9.325841E-08 1.000000E-03 1.000000E-06 -9.729463E-04 -9.466245E-07 -9.199368E-04 -8.462837E-07 -8.431176E-04 -7.108474E-07 -0.000000E+00 -0.000000E+00 -3.800000E-02 -3.240000E-04 -1.253787E-02 -4.293627E-05 -1.235024E-02 -4.427860E-05 -1.055055E-02 -3.831635E-05 -1.944951E-02 -9.030483E-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.944316E-04 -8.668999E-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.600000E-02 -1.500000E-04 -5.912427E-03 -8.576381E-06 -6.340156E-03 -2.278116E-05 -1.617551E-03 -6.023906E-06 -1.264835E-02 -3.597963E-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.804596E-04 -2.584372E-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.300000E-02 -1.230000E-04 -4.119009E-03 -9.246641E-06 -5.235271E-03 -1.144493E-05 --4.185262E-04 -5.960141E-06 -1.208764E-02 -3.425774E-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.955076E-04 -8.732472E-08 -1.000000E-03 -1.000000E-06 -8.637115E-04 -7.459975E-07 -6.189963E-04 -3.831564E-07 -3.152494E-04 -9.938217E-08 -0.000000E+00 -0.000000E+00 -1.500000E-02 -5.700000E-05 --1.957197E-03 -1.258480E-05 -2.792528E-03 -9.542338E-06 --3.511546E-04 -3.064697E-06 -6.238135E-03 -9.183145E-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.200000E-02 -1.080000E-04 -9.763854E-03 -2.367740E-05 -4.590661E-03 -6.936237E-06 -2.901204E-03 -1.887464E-06 -1.005417E-02 -2.274048E-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.865227E-04 -7.859225E-07 -1.000000E-03 -1.000000E-06 --2.499079E-04 -6.245395E-08 --4.063191E-04 -1.650952E-07 -3.358425E-04 -1.127902E-07 -1.185094E-03 -7.026788E-07 -1.000000E-03 -1.000000E-06 -9.786988E-04 -9.578514E-07 -9.367771E-04 -8.775513E-07 -8.755719E-04 -7.666261E-07 -3.038170E-04 -9.230477E-08 -2.000000E-02 -9.800000E-05 -7.857549E-03 -1.428798E-05 -5.459113E-03 -9.636925E-06 -1.887884E-03 -1.537243E-06 -1.001700E-02 -2.607271E-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.962222E-04 -8.774759E-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 -8.200000E-05 -8.495126E-03 -2.651261E-05 -4.998924E-03 -1.299981E-05 -3.448762E-03 -4.943207E-06 -8.610805E-03 -1.917491E-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.038562E-04 -4.569667E-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 -6.000000E-03 -1.200000E-05 -3.227340E-03 -4.394334E-06 -2.414906E-03 -2.934558E-06 -3.208300E-03 -3.506847E-06 -3.262105E-03 -4.123831E-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.200000E-02 -5.400000E-05 -4.005144E-03 -5.369960E-06 -4.643787E-03 -9.269182E-06 -2.657135E-03 -3.511892E-06 -4.987572E-03 -8.363876E-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 +9.817451E-04 +9.638234E-07 +9.457351E-04 +8.944149E-07 +8.929546E-04 +7.973680E-07 0.000000E+00 0.000000E+00 4.000000E-03 -6.000000E-06 -1.406973E-03 -2.042054E-06 -1.350269E-03 -1.571414E-06 -1.514228E-03 -1.025767E-06 -1.776109E-03 -1.051978E-06 +4.000000E-06 +-1.284380E-03 +9.356368E-07 +-5.965448E-04 +6.643272E-07 +3.352677E-04 +2.956621E-07 +1.526686E-03 +6.527074E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2003,374 +2363,14 @@ tally 1: 0.000000E+00 1.000000E-03 1.000000E-06 --9.859558E-04 -9.721088E-07 -9.581632E-04 -9.180766E-07 --9.172070E-04 -8.412686E-07 -1.487277E-03 -7.925940E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.000000E-03 -1.300000E-05 -1.259188E-03 -2.542709E-06 -1.153212E-03 -5.113126E-07 -1.180102E-03 -1.512230E-06 -2.952791E-03 -2.256416E-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 -9.000000E-03 -2.900000E-05 -3.658677E-03 -5.084397E-06 -1.342768E-03 -7.844439E-07 -1.434698E-03 -1.591990E-06 -4.727265E-03 -6.802376E-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 -6.000000E-06 --3.169496E-04 -4.640012E-07 -3.870584E-04 -1.106745E-06 -2.229627E-03 -2.248204E-06 -2.384967E-03 -3.528132E-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.887299E-04 -8.336493E-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-03 -2.000000E-06 -1.104635E-03 -1.006490E-06 -5.097352E-04 -1.218176E-06 -8.274440E-04 -9.952021E-07 -8.879520E-04 -4.383151E-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 -1.400000E-02 -4.200000E-05 -3.129225E-03 -5.993671E-06 -4.628419E-03 -5.138563E-06 -2.799257E-03 -6.824571E-06 -6.214149E-03 -8.661850E-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.962222E-04 -8.774759E-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.200000E-02 -3.800000E-05 -4.480587E-03 -8.674795E-06 -3.647946E-03 -4.377407E-06 -3.360220E-03 -5.133585E-06 -7.650887E-03 -1.640283E-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.955076E-04 -8.732472E-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 -9.000000E-03 -3.100000E-05 -4.975831E-03 -8.184805E-06 -2.183561E-03 -2.575450E-06 -2.014752E-03 -5.318808E-06 -3.529684E-03 -5.223931E-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 -8.832949E-04 -7.802099E-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.965739E-04 +1.572709E-07 +-2.640937E-04 +6.974547E-08 +4.389371E-04 +1.926657E-07 +3.053824E-04 +9.325841E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2402,11 +2402,11 @@ tally 1: 0.000000E+00 0.000000E+00 tally 2: -5.604521E-01 -6.286639E-02 -6.095321E-01 -7.435628E-02 -3.539776E+00 -2.507806E+00 -3.963740E+01 -3.144698E+02 +5.720364E-01 +6.548043E-02 +6.217988E-01 +7.736906E-02 +3.624477E+00 +2.628737E+00 +4.047526E+01 +3.278231E+02 diff --git a/tests/test_statepoint_batch/results_true.dat b/tests/test_statepoint_batch/results_true.dat index 786fd55461..95b536997e 100644 --- a/tests/test_statepoint_batch/results_true.dat +++ b/tests/test_statepoint_batch/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.109090E-01 5.807935E-03 +3.051173E-01 6.930168E-04 diff --git a/tests/test_statepoint_interval/results_true.dat b/tests/test_statepoint_interval/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_statepoint_interval/results_true.dat +++ b/tests/test_statepoint_interval/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_statepoint_restart/results_true.dat b/tests/test_statepoint_restart/results_true.dat index 378d07639f..7fb39ef0ac 100644 --- a/tests/test_statepoint_restart/results_true.dat +++ b/tests/test_statepoint_restart/results_true.dat @@ -1,16 +1,36 @@ k-combined: 0.000000E+00 0.000000E+00 tally 1: -6.000000E-03 -2.600000E-05 -3.531902E-03 -1.021953E-05 -9.975346E-04 -1.809348E-06 -1.606025E-04 -5.146498E-07 -3.612566E-03 -7.304701E-06 +1.000000E-03 +1.000000E-06 +6.655302E-04 +4.429305E-07 +1.643958E-04 +2.702597E-08 +-2.613362E-04 +6.829663E-08 +9.306024E-04 +8.660208E-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 @@ -23,2034 +43,174 @@ tally 1: 0.000000E+00 1.000000E-03 1.000000E-06 --6.834146E-04 -4.670555E-07 -2.005832E-04 -4.023363E-08 -2.271406E-04 -5.159283E-08 -1.822902E-03 -3.322972E-06 -3.000000E-03 -9.000000E-06 -2.089393E-03 -4.365565E-06 -1.135864E-03 -1.290186E-06 -8.092128E-04 -6.548254E-07 +3.222834E-05 +1.038666E-09 +-4.984420E-04 +2.484444E-07 +-4.825883E-05 +2.328915E-09 +1.221939E-03 +7.467452E-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 +1.000000E-03 +1.000000E-06 +-5.510082E-04 +3.036101E-07 +-4.458491E-05 +1.987814E-09 +4.082832E-04 +1.666952E-07 +3.102008E-04 +9.622454E-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 +0.000000E+00 +0.000000E+00 +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 +2.000000E-05 +-1.959329E-04 +1.780222E-06 +-1.481510E-03 +1.429609E-06 +2.196341E-04 +1.036368E-06 +3.355616E-03 +5.662237E-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.007686E-04 +9.046177E-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 9.000000E-03 4.100000E-05 -5.652386E-03 -1.597604E-05 -2.688047E-03 -3.713200E-06 -2.194373E-03 -2.457094E-06 -4.490780E-03 -1.011172E-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.993246E-04 -1.796295E-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.000000E-03 -5.000000E-06 -2.287185E-05 -1.868964E-06 -1.070450E-03 -8.923889E-07 -6.823621E-04 -7.961600E-07 -1.494157E-03 -1.155142E-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.038170E-04 -9.230477E-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 -9.000000E-03 -4.500000E-05 --5.457243E-04 -9.054533E-06 --4.642719E-04 -6.489071E-07 -4.050968E-04 -1.775928E-06 -3.579329E-03 -7.065658E-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 -7.000000E-03 -2.500000E-05 -3.948480E-03 -7.932459E-06 -1.825370E-03 -1.929280E-06 -9.348098E-04 -5.448323E-07 -4.195272E-03 -8.801845E-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 -1.215268E-03 -1.476876E-06 -1.000000E-03 -1.000000E-06 -9.835700E-04 -9.674099E-07 -9.511149E-04 -9.046195E-07 -9.034334E-04 -8.161919E-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 -6.000000E-03 -2.000000E-05 -2.837861E-03 -4.029451E-06 -2.881422E-03 -5.264923E-06 -6.079138E-04 -2.481989E-07 -2.380679E-03 -3.512909E-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.000000E-03 -1.000000E-06 --3.562118E-04 -1.268868E-07 --3.096697E-04 -9.589534E-08 -4.213212E-04 -1.775116E-07 -3.038170E-04 -9.230477E-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 -3.000000E-03 -5.000000E-06 -1.625863E-03 -1.397973E-06 --7.273518E-05 -2.624738E-08 --9.756535E-04 -5.212160E-07 -9.031416E-04 -4.565438E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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 -5.200000E-05 -3.200356E-03 -6.305597E-06 -4.448554E-04 -8.305799E-07 --1.337748E-04 -7.137799E-07 -4.794597E-03 -1.149629E-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 -1.000000E-03 -1.000000E-06 --8.123463E-04 -6.599064E-07 -4.898597E-04 -2.399625E-07 --1.216619E-04 -1.480163E-08 -3.038170E-04 -9.230477E-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 -6.000000E-03 -3.600000E-05 -2.521971E-03 -6.360336E-06 -2.020703E-03 -4.083242E-06 -4.407398E-04 -1.942515E-07 -2.955076E-03 -8.732472E-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 -7.000000E-03 -2.500000E-05 -3.210520E-03 -7.168481E-06 -5.465390E-04 -2.109809E-06 -2.437003E-04 -7.534680E-07 -2.397298E-03 -2.874072E-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 -5.993246E-04 -1.796295E-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 -9.114510E-04 -8.307430E-07 -1.000000E-03 -1.000000E-06 -8.370200E-04 -7.006024E-07 -5.509036E-04 -3.034948E-07 -2.105156E-04 -4.431682E-08 -3.038170E-04 -9.230477E-08 -3.000000E-03 -5.000000E-06 --5.652293E-04 -2.826536E-07 --4.965795E-04 -1.814108E-07 -4.241721E-04 -1.785027E-07 -1.494157E-03 -1.155142E-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 -6.076340E-04 -3.692191E-07 -1.000000E-03 -1.000000E-06 -9.987845E-04 -9.975704E-07 -9.963556E-04 -9.927245E-07 -9.927178E-04 -9.854887E-07 -0.000000E+00 -0.000000E+00 -1.500000E-02 -1.130000E-04 -6.948075E-03 -3.012964E-05 -4.659628E-03 -1.149973E-05 -2.300471E-03 -2.760542E-06 -6.009865E-03 -1.888067E-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.038170E-04 -9.230477E-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.076340E-04 -3.692191E-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.300000E-02 -8.900000E-05 -3.756467E-03 -7.490548E-06 -3.458886E-03 -8.908312E-06 -1.955536E-03 -1.939721E-06 -5.672810E-03 -1.709769E-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.955076E-04 -8.732472E-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.500000E-02 -1.170000E-04 -1.030992E-02 -5.340950E-05 -5.378168E-03 -1.477216E-05 -2.698876E-03 -3.931578E-06 -7.470784E-03 -2.887854E-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.993246E-04 -1.796295E-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.000000E-03 -5.000000E-06 -1.127335E-03 -1.646568E-06 -2.677722E-05 -4.627248E-07 -4.736469E-04 -1.133017E-07 -2.085172E-03 -2.552337E-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 -7.000000E-03 -2.500000E-05 -4.643996E-03 -1.123518E-05 -5.365579E-03 -1.452653E-05 -3.188541E-03 -5.332163E-06 -2.397298E-03 -2.874072E-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 -5.993246E-04 -1.796295E-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 -1.822902E-03 -3.322972E-06 -2.000000E-03 -4.000000E-06 -1.879286E-03 -3.531714E-06 -1.649674E-03 -2.721425E-06 -1.333434E-03 -1.778047E-06 -0.000000E+00 -0.000000E+00 -5.000000E-03 -1.300000E-05 -2.119503E-03 -2.510375E-06 -2.082062E-03 -2.331440E-06 -3.351745E-04 -2.838723E-07 -1.510776E-03 -1.564201E-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.955076E-04 -8.732472E-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.100000E-02 -7.300000E-05 -3.488060E-03 -6.088204E-06 -4.865073E-04 -2.426361E-07 --1.552382E-03 -3.383588E-06 -3.899764E-03 -7.666624E-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 -5.993246E-04 -1.796295E-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 -6.076340E-04 -3.692191E-07 -1.000000E-03 -1.000000E-06 -8.964005E-04 -8.035339E-07 -7.053009E-04 -4.974493E-07 -4.561198E-04 -2.080453E-07 -0.000000E+00 -0.000000E+00 -2.000000E-03 -2.000000E-06 -1.915339E-04 -2.525471E-07 --6.211793E-04 -2.122635E-07 --1.146914E-04 -3.101272E-07 -2.955076E-04 -8.732472E-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 -3.038170E-04 -9.230477E-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 -2.600000E-05 --4.219550E-04 -1.772971E-07 --5.155325E-04 -1.340113E-07 --6.251664E-04 -1.343175E-06 -3.620876E-03 -8.262609E-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.038170E-04 -9.230477E-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 -3.400000E-05 -5.071850E-03 -1.313386E-05 -2.724384E-03 -7.394944E-06 -2.290869E-03 -6.048295E-06 -3.620876E-03 -8.262609E-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.038170E-04 -9.230477E-08 -1.000000E-03 -1.000000E-06 -9.548992E-04 -9.118325E-07 -8.677487E-04 -7.529878E-07 -7.444215E-04 -5.541633E-07 -5.910151E-04 -3.492989E-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.300000E-02 -8.500000E-05 -9.564268E-03 -4.579281E-05 -5.459886E-03 -1.501050E-05 -2.874517E-03 -4.642749E-06 -6.592570E-03 -2.173517E-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.955076E-04 -8.732472E-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 -2.000000E-05 -4.435015E-03 -1.032581E-05 -2.521759E-03 -3.179660E-06 -1.353941E-03 -9.392372E-07 -2.422227E-03 -4.610259E-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.955076E-04 -8.732472E-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.300000E-02 -1.090000E-04 -1.100864E-03 -1.263113E-06 -2.894751E-03 -6.130418E-06 --1.408599E-04 -4.071904E-07 -7.537259E-03 -3.418566E-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.993246E-04 -1.796295E-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.600000E-02 -1.460000E-04 -4.074270E-03 -1.077055E-05 -2.219886E-03 -2.502730E-06 -1.500629E-03 -1.970345E-06 -8.940012E-03 -4.598689E-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 -1.000000E-03 -1.000000E-06 --2.171929E-04 -4.717275E-08 --4.292409E-04 -1.842477E-07 -3.001754E-04 -9.010526E-08 -3.038170E-04 -9.230477E-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 -1.600000E-02 -1.460000E-04 -4.558047E-03 -2.458088E-05 -4.224970E-03 -1.162419E-05 -3.278961E-03 -7.369638E-06 -7.462474E-03 -2.983182E-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.076340E-04 -3.692191E-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-03 -4.000000E-06 --7.774760E-05 -6.044689E-09 --9.888880E-04 -9.778994E-07 -1.150490E-04 -1.323627E-08 -1.510776E-03 -1.564201E-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.955076E-04 -8.732472E-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 -1.800000E-05 -1.830475E-03 -4.175502E-06 -5.295634E-04 -6.803525E-07 --6.336822E-04 -3.621057E-07 -3.883146E-03 -7.896401E-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 -8.865227E-04 -7.859225E-07 -1.000000E-03 -1.000000E-06 --2.406040E-04 -5.789029E-08 --4.131646E-04 -1.707050E-07 -3.260844E-04 -1.063311E-07 -6.076340E-04 -3.692191E-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 -7.000000E-03 -3.700000E-05 -3.454215E-03 -1.675190E-05 -1.858250E-03 -3.338471E-06 -1.085475E-03 -6.518317E-07 -2.372370E-03 -4.371216E-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 -9.114510E-04 -8.307430E-07 -1.000000E-03 -1.000000E-06 -9.637579E-04 -9.288293E-07 -8.932439E-04 -7.978848E-07 -7.922796E-04 -6.277069E-07 -0.000000E+00 -0.000000E+00 -1.000000E-02 -5.000000E-05 -1.718655E-03 -5.820327E-06 -1.009025E-03 -1.093834E-06 -7.699062E-05 -4.576237E-09 -3.587638E-03 -6.586531E-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 -9.031416E-04 -4.565438E-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-03 -1.000000E-06 -8.821806E-04 -7.782426E-07 -6.673640E-04 -4.453746E-07 -3.931055E-04 -1.545319E-07 -3.038170E-04 -9.230477E-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 -6.000000E-03 -2.600000E-05 -1.227695E-03 -5.443406E-06 -2.043844E-04 -8.931431E-07 --1.326053E-03 -9.027914E-07 -2.709425E-03 -4.108894E-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.038170E-04 -9.230477E-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.031416E-04 -4.565438E-07 -1.000000E-03 -1.000000E-06 -9.914618E-04 -9.829965E-07 -9.744947E-04 -9.496400E-07 -9.493160E-04 -9.012008E-07 -0.000000E+00 -0.000000E+00 -6.000000E-03 -2.600000E-05 -2.958450E-03 -5.562605E-06 -3.172420E-04 -6.855086E-08 -2.704203E-05 -6.951536E-08 -2.413917E-03 -3.672271E-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.038170E-04 -9.230477E-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 -5.000000E-03 -1.700000E-05 -1.519186E-03 -1.241308E-06 --2.611610E-04 -2.188069E-06 -3.469316E-04 -8.929955E-07 -3.562710E-03 -9.101691E-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 -9.114510E-04 -8.307430E-07 -1.000000E-03 -1.000000E-06 -8.500688E-04 -7.226169E-07 -5.839254E-04 -3.409689E-07 -2.605821E-04 -6.790302E-08 -0.000000E+00 -0.000000E+00 -4.000000E-03 -1.000000E-05 -3.088118E-03 -7.629969E-06 -1.972096E-03 -5.348162E-06 -1.349791E-03 -3.293530E-06 -1.814593E-03 -2.394944E-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.000000E-02 -5.000000E-05 -5.974452E-03 -2.318079E-05 -3.480849E-03 -1.552533E-05 -3.253745E-03 -8.999790E-06 -4.777978E-03 -1.205544E-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 -9.000000E-03 -4.500000E-05 -2.829108E-03 -4.741955E-06 -4.557223E-03 -1.257560E-05 -1.915865E-03 -3.032559E-06 -4.465851E-03 -1.204317E-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.955076E-04 -8.732472E-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 -3.400000E-05 -9.777793E-04 -5.838760E-07 -3.108961E-03 -5.045918E-06 -9.790439E-04 -2.045088E-06 -5.377302E-03 -1.508923E-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.955076E-04 -8.732472E-08 -1.000000E-03 -1.000000E-06 -8.637115E-04 -7.459975E-07 -6.189963E-04 -3.831564E-07 -3.152494E-04 -9.938217E-08 -0.000000E+00 -0.000000E+00 -8.000000E-03 -4.000000E-05 --2.016521E-03 -3.282699E-06 --2.864647E-04 -5.009517E-06 --1.038509E-03 -9.421948E-07 -3.013242E-03 -5.308856E-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 -8.000000E-03 -3.400000E-05 -3.498315E-03 -7.919249E-06 -8.129080E-04 -1.259805E-06 -1.181971E-03 -7.715331E-07 -2.996623E-03 -4.490737E-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 -8.865227E-04 -7.859225E-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 -6.076340E-04 -3.692191E-07 -1.000000E-03 -1.000000E-06 -9.786988E-04 -9.578514E-07 -9.367771E-04 -8.775513E-07 -8.755719E-04 -7.666261E-07 -3.038170E-04 -9.230477E-08 -8.000000E-03 -5.000000E-05 -2.793720E-03 -4.229256E-06 -2.872177E-03 -4.544501E-06 -1.077428E-03 -9.288883E-07 -3.849908E-03 -1.266706E-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 -1.000000E-02 -5.800000E-05 -4.954781E-03 -1.712892E-05 -4.126960E-03 -1.107068E-05 -2.518231E-03 -4.154059E-06 -4.819525E-03 -1.335200E-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.076340E-04 -3.692191E-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-03 -2.000000E-06 -6.612504E-04 -8.898055E-07 -3.347082E-04 -7.163327E-07 -8.531489E-04 -3.808616E-07 -1.190340E-03 -8.782273E-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 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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 -5.000000E-06 -4.625274E-04 -1.150077E-06 -5.123029E-04 -8.692268E-07 -8.248357E-04 -5.505055E-07 -1.198649E-03 -7.185180E-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 -1.000000E-03 -1.000000E-06 --9.859558E-04 -9.721088E-07 -9.581632E-04 -9.180766E-07 --9.172070E-04 -8.412686E-07 -8.948321E-04 -4.416037E-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 +5.210818E-03 +1.357783E-05 +1.394382E-03 +9.898987E-07 +2.796067E-04 +6.984712E-07 +3.684681E-03 +7.605759E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2083,14 +243,14 @@ tally 1: 0.000000E+00 4.000000E-03 8.000000E-06 --2.701471E-04 -1.370723E-06 -6.964728E-04 -2.988117E-07 -8.616833E-04 -1.449401E-06 -1.494157E-03 -1.155142E-06 +1.019723E-03 +2.941013E-06 +3.796068E-04 +1.213513E-06 +6.991567E-04 +2.907192E-07 +2.133677E-03 +2.313409E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2121,16 +281,6 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.000000E-03 -1.600000E-05 -6.207788E-04 -3.853663E-07 -1.877009E-04 -3.523162E-08 -9.779406E-04 -9.563678E-07 -2.676187E-03 -4.648130E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2161,16 +311,266 @@ 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 +8.000000E-03 +3.200000E-05 +7.394988E-04 +4.098659E-07 +4.040769E-04 +3.143715E-07 +1.784935E-04 +3.163907E-07 +2.744646E-03 +3.801137E-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 +6.015373E-04 +3.618471E-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 +9.000000E-03 +4.500000E-05 +4.871111E-03 +1.225810E-05 +2.381697E-03 +2.840243E-06 +2.498800E-03 +3.161161E-06 +3.656384E-03 +6.838240E-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.007686E-04 +9.046177E-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 +3.102008E-04 +9.622454E-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 +3.000000E-03 +5.000000E-06 +9.405302E-04 +8.589283E-07 +2.623590E-03 +3.990114E-06 +6.768145E-04 +3.652890E-07 +1.212507E-03 +9.103805E-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 +6.109694E-04 +1.866863E-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-03 +1.000000E-06 +9.168648E-04 +8.406410E-07 +7.609615E-04 +5.790624E-07 +5.515881E-04 +3.042494E-07 +3.102008E-04 +9.622454E-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 +3.102008E-04 +9.622454E-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.200000E-02 +8.000000E-05 +6.636635E-03 +2.425315E-05 +4.338045E-03 +1.464490E-05 +3.621511E-03 +1.385488E-05 +7.040297E-03 +2.530812E-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 +1.000000E-02 +5.800000E-05 +1.624971E-03 +3.694766E-06 +1.160491E-03 +1.280447E-06 +-8.692024E-05 +3.035696E-06 +4.305083E-03 +1.106984E-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.102008E-04 +9.622454E-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.221939E-03 +7.467452E-07 +1.000000E-03 +1.000000E-06 +9.910929E-04 +9.822652E-07 +9.733978E-04 +9.475032E-07 +9.471508E-04 +8.970946E-07 +0.000000E+00 +0.000000E+00 2.000000E-03 4.000000E-06 -4.298228E-04 -1.847476E-07 -9.681780E-04 -9.373686E-07 -1.370924E-03 -1.879433E-06 -6.076340E-04 -3.692191E-07 +3.249184E-04 +1.055720E-07 +9.928009E-04 +9.856536E-07 +1.088489E-03 +1.184808E-06 +9.023059E-04 +8.141559E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2203,14 +603,1294 @@ tally 1: 0.000000E+00 1.000000E-03 1.000000E-06 -9.975034E-04 -9.950130E-07 -9.925195E-04 -9.850950E-07 -9.850671E-04 -9.703571E-07 -2.955076E-04 -8.732472E-08 +9.686373E-04 +9.382582E-07 +9.073874E-04 +8.233518E-07 +8.191239E-04 +6.709640E-07 +6.204016E-04 +3.848982E-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 +3.102008E-04 +9.622454E-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.500000E-02 +1.530000E-04 +1.597072E-03 +3.005651E-06 +2.949088E-03 +4.679665E-06 +3.631393E-03 +7.090560E-06 +5.460996E-03 +1.769365E-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.503843E-03 +2.261544E-06 +2.000000E-03 +4.000000E-06 +-1.555019E-04 +2.418085E-08 +-6.469952E-05 +4.186027E-09 +-1.256495E-04 +1.578779E-08 +2.462742E-03 +3.825930E-06 +2.000000E-03 +2.000000E-06 +1.802029E-03 +1.623906E-06 +1.435858E-03 +1.032682E-06 +9.559957E-04 +4.622600E-07 +0.000000E+00 +0.000000E+00 +1.400000E-02 +1.060000E-04 +3.845354E-03 +1.771893E-05 +7.969986E-04 +1.251583E-05 +2.663540E-03 +3.580311E-06 +7.322201E-03 +2.693121E-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.102008E-04 +9.622454E-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.000000E-02 +5.800000E-05 +7.529857E-03 +3.304826E-05 +4.385729E-03 +1.180121E-05 +2.219847E-03 +3.711400E-06 +4.549258E-03 +1.248547E-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.007686E-04 +9.046177E-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 +5.000000E-06 +1.328181E-03 +8.967072E-07 +-4.616880E-04 +2.148940E-07 +-1.029769E-03 +5.645716E-07 +1.522708E-03 +1.199054E-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 +6.015373E-04 +3.618471E-07 +1.000000E-03 +1.000000E-06 +9.936377E-04 +9.873159E-07 +9.809739E-04 +9.623097E-07 +9.621293E-04 +9.256927E-07 +0.000000E+00 +0.000000E+00 +2.000000E-02 +2.000000E-04 +7.111929E-03 +2.528978E-05 +1.084601E-03 +1.073353E-06 +1.275976E-03 +2.215783E-06 +7.350498E-03 +2.790619E-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.015373E-04 +3.618471E-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 +7.000000E-03 +2.500000E-05 +1.990597E-03 +2.484498E-06 +-4.860874E-04 +2.969876E-07 +6.661989E-04 +2.268944E-07 +4.577555E-03 +1.050456E-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.102008E-04 +9.622454E-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.015373E-04 +3.618471E-07 +1.000000E-03 +1.000000E-06 +9.615527E-04 +9.245836E-07 +8.868754E-04 +7.865479E-07 +7.802605E-04 +6.088065E-07 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +-3.730183E-04 +1.391426E-07 +-2.912860E-04 +8.484756E-08 +4.297706E-04 +1.847027E-07 +9.306024E-04 +8.660208E-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 +3.000000E-03 +5.000000E-06 +2.287183E-03 +2.659902E-06 +1.571504E-03 +1.313687E-06 +1.459898E-03 +1.179754E-06 +9.117381E-04 +4.580716E-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 +3.102008E-04 +9.622454E-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.200000E-02 +2.600000E-04 +6.732483E-03 +2.695948E-05 +5.717821E-03 +2.889220E-05 +-2.356418E-04 +7.546819E-07 +8.892069E-03 +4.212262E-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.007686E-04 +9.046177E-08 +1.000000E-03 +1.000000E-06 +-7.961895E-04 +6.339178E-07 +4.508767E-04 +2.032898E-07 +-6.751245E-05 +4.557931E-09 +2.105380E-03 +4.432627E-06 +1.000000E-03 +1.000000E-06 +7.706275E-04 +5.938667E-07 +3.908001E-04 +1.527247E-07 +-1.181620E-05 +1.396226E-10 +0.000000E+00 +0.000000E+00 +1.300000E-02 +1.450000E-04 +5.254317E-03 +2.007625E-05 +1.153872E-03 +6.667482E-07 +1.643586E-03 +1.926972E-06 +5.733468E-03 +2.652835E-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.007686E-04 +9.046177E-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.100000E-02 +6.100000E-05 +6.423451E-03 +2.063127E-05 +3.306770E-03 +5.779309E-06 +2.784620E-03 +3.970295E-06 +3.976017E-03 +7.971626E-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.007686E-04 +9.046177E-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 +4.000000E-03 +8.000000E-06 +6.140550E-04 +1.773047E-06 +-1.620585E-04 +8.222999E-07 +1.423762E-03 +1.013556E-06 +1.832908E-03 +1.680177E-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.500000E-02 +1.250000E-04 +4.942916E-03 +1.235885E-05 +1.021964E-03 +5.222106E-07 +9.236822E-04 +1.479238E-06 +7.322201E-03 +2.693121E-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.102008E-04 +9.622454E-08 +1.000000E-03 +1.000000E-06 +5.742336E-04 +3.297442E-07 +-5.383652E-06 +2.898371E-11 +-3.879749E-04 +1.505245E-07 +3.007686E-04 +9.046177E-08 +1.000000E-03 +1.000000E-06 +9.585989E-04 +9.189118E-07 +8.783677E-04 +7.715298E-07 +7.642712E-04 +5.841105E-07 +3.007686E-04 +9.046177E-08 +1.300000E-02 +8.900000E-05 +5.419508E-03 +1.767227E-05 +2.993901E-03 +4.531596E-06 +2.675067E-03 +3.968688E-06 +5.780629E-03 +1.774150E-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.007686E-04 +9.046177E-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.221939E-03 +7.467452E-07 +2.000000E-03 +2.000000E-06 +1.775152E-03 +1.597527E-06 +1.396291E-03 +1.130413E-06 +9.794822E-04 +9.115176E-07 +0.000000E+00 +0.000000E+00 +8.000000E-03 +5.000000E-05 +2.406686E-03 +4.825540E-06 +4.960582E-04 +1.033420E-06 +1.240589E-03 +2.480639E-06 +5.226253E-03 +1.611788E-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 +1.000000E-03 +1.000000E-06 +9.405199E-04 +8.845778E-07 +8.268666E-04 +6.837084E-07 +6.691277E-04 +4.477318E-07 +3.102008E-04 +9.622454E-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 +3.102008E-04 +9.622454E-08 +6.000000E-03 +2.600000E-05 +8.982135E-05 +2.560934E-07 +-7.114096E-04 +2.713326E-07 +8.252336E-04 +1.794332E-06 +2.716350E-03 +5.885778E-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.300000E-02 +8.900000E-05 +6.195490E-03 +1.953479E-05 +2.111239E-03 +2.311139E-06 +2.268320E-03 +3.353244E-06 +5.808926E-03 +1.694986E-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.102008E-04 +9.622454E-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 +9.000000E-03 +4.100000E-05 +-8.217874E-04 +4.663323E-07 +7.383083E-04 +5.193896E-06 +8.200240E-04 +3.424935E-07 +3.976017E-03 +7.971626E-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 +2.748347E-03 +4.220881E-06 +2.045316E-03 +2.683544E-06 +2.280529E-03 +2.612273E-06 +6.015373E-04 +3.618471E-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 +9.306024E-04 +8.660208E-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 +9.306024E-04 +8.660208E-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 +3.102008E-04 +9.622454E-08 +6.000000E-03 +1.800000E-05 +2.626871E-03 +3.665081E-06 +1.681981E-03 +1.510257E-06 +1.862830E-03 +2.103749E-06 +2.735214E-03 +4.122645E-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.100000E-02 +6.500000E-05 +6.880553E-03 +2.448726E-05 +3.974657E-03 +9.611600E-06 +3.058908E-03 +1.181515E-05 +4.295650E-03 +1.005573E-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.102008E-04 +9.622454E-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.200000E-02 +7.200000E-05 +6.025175E-03 +1.856579E-05 +5.884402E-03 +2.141913E-05 +1.752856E-03 +2.842294E-06 +6.401031E-03 +2.082068E-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.102008E-04 +9.622454E-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 +5.000000E-03 +1.700000E-05 +3.189581E-03 +6.250530E-06 +1.000837E-03 +5.036982E-07 +-3.117653E-04 +2.901990E-07 +2.754079E-03 +3.853002E-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 +1.000000E-03 +1.000000E-06 +-5.657444E-04 +3.200667E-07 +-1.989995E-05 +3.960081E-10 +3.959267E-04 +1.567580E-07 +3.007686E-04 +9.046177E-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 +3.000000E-03 +9.000000E-06 +1.797289E-03 +3.230248E-06 +7.121477E-04 +5.071544E-07 +4.492929E-04 +2.018641E-07 +1.551004E-03 +2.405613E-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.100000E-02 +6.500000E-05 +6.283851E-03 +1.995229E-05 +1.355416E-03 +1.756870E-06 +-4.317669E-04 +7.579610E-07 +4.267354E-03 +9.253637E-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 +1.000000E-03 +1.000000E-06 +9.682863E-04 +9.375784E-07 +9.063676E-04 +8.215023E-07 +8.171815E-04 +6.677855E-07 +6.204016E-04 +3.848982E-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.800000E-02 +1.640000E-04 +7.069243E-03 +2.506156E-05 +4.321329E-03 +1.796567E-05 +2.557673E-03 +3.894493E-06 +6.438760E-03 +2.205150E-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 +1.200000E-02 +7.200000E-05 +4.666186E-03 +1.284828E-05 +2.641891E-03 +1.762435E-05 +9.754238E-04 +2.039232E-06 +5.498725E-03 +1.512159E-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.102008E-04 +9.622454E-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 +4.000000E-03 +8.000000E-06 +1.714892E-04 +9.981511E-07 +-4.305094E-04 +9.268480E-08 +-2.287903E-04 +5.786188E-08 +2.443878E-03 +2.986981E-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.102008E-04 +9.622454E-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.100000E-02 +8.500000E-05 +4.472745E-03 +1.447325E-05 +6.072016E-04 +5.846134E-07 +9.336487E-04 +9.381432E-07 +5.169660E-03 +1.440996E-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.007686E-04 +9.046177E-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 +3.400000E-05 +3.030014E-03 +1.297316E-05 +1.879812E-03 +5.805316E-06 +2.471474E-03 +4.341265E-06 +3.374480E-03 +6.162391E-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.102008E-04 +9.622454E-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 +7.000000E-03 +2.900000E-05 +-7.617232E-05 +3.053607E-08 +1.791545E-04 +5.297145E-08 +1.386068E-03 +1.737839E-06 +3.054847E-03 +4.667158E-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.007686E-04 +9.046177E-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-03 +4.000000E-06 +1.083160E-03 +1.173236E-06 +-4.570050E-05 +2.088536E-09 +-6.290949E-04 +3.957604E-07 +6.204016E-04 +3.848982E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2243,14 +1923,14 @@ tally 1: 0.000000E+00 6.000000E-03 2.000000E-05 --2.695842E-04 -1.341496E-06 -1.562492E-03 -1.831644E-06 --7.471975E-04 -2.484564E-06 -2.388989E-03 -3.013861E-06 +2.716180E-03 +5.893679E-06 +1.554292E-03 +1.376524E-06 +7.264867E-04 +1.331497E-06 +3.045415E-03 +4.796216E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2281,16 +1961,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.000000E-03 -4.000000E-06 -1.468316E-03 -2.155952E-06 -6.405092E-04 -4.102520E-07 --1.375320E-04 -1.891505E-08 -1.198649E-03 -7.185180E-07 +7.000000E-03 +2.500000E-05 +9.648146E-04 +5.981145E-07 +4.634865E-05 +7.955048E-07 +-1.328560E-04 +3.379815E-07 +3.355616E-03 +5.662237E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2299,8 +1979,328 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.955076E-04 -8.732472E-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 +3.000000E-03 +5.000000E-06 +1.289998E-03 +8.380263E-07 +-3.762753E-05 +1.288533E-07 +-2.613682E-04 +4.197617E-08 +1.221939E-03 +7.467452E-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 +3.102008E-04 +9.622454E-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 +1.100000E-02 +8.500000E-05 +3.095504E-03 +7.078598E-06 +-9.175432E-04 +6.837255E-07 +-7.570383E-04 +4.237745E-07 +4.530394E-03 +1.567294E-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.102008E-04 +9.622454E-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.100000E-02 +7.300000E-05 +3.067467E-03 +5.676919E-06 +2.403624E-03 +2.913670E-06 +1.402382E-03 +1.691430E-06 +5.216821E-03 +1.489979E-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.007686E-04 +9.046177E-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 +5.000000E-06 +1.008832E-03 +8.754929E-07 +-8.318856E-04 +3.573666E-07 +-9.886180E-04 +7.790297E-07 +1.851773E-03 +2.496075E-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 +1.000000E-03 +1.000000E-06 +8.429685E-04 +7.105959E-07 +5.658938E-04 +3.202358E-07 +2.330721E-04 +5.432261E-08 +6.015373E-04 +3.618471E-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.000000E-03 +5.000000E-06 +1.596397E-03 +1.275630E-06 +4.822532E-04 +1.627925E-07 +2.983020E-04 +9.401537E-08 +1.221939E-03 +7.467452E-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 +6.204016E-04 +3.848982E-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 +3.000000E-03 +9.000000E-06 +2.576209E-03 +6.636855E-06 +1.844839E-03 +3.403429E-06 +9.997002E-04 +9.994005E-07 +1.240803E-03 +1.539593E-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.102008E-04 +9.622454E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2323,14 +2323,14 @@ tally 1: 0.000000E+00 1.000000E-03 1.000000E-06 -9.489856E-04 -9.005736E-07 -8.508605E-04 -7.239635E-07 -7.131001E-04 -5.085118E-07 -2.955076E-04 -8.732472E-08 +1.590395E-04 +2.529356E-08 +-4.620597E-04 +2.134991E-07 +-2.285026E-04 +5.221342E-08 +3.102008E-04 +9.622454E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2402,11 +2402,11 @@ tally 1: 0.000000E+00 0.000000E+00 tally 2: -2.181843E-01 -2.381339E-02 -2.370439E-01 -2.810520E-02 -1.375356E+00 -9.460863E-01 -1.543948E+01 -1.192513E+02 +2.288800E-01 +2.621372E-02 +2.489848E-01 +3.102301E-02 +1.451035E+00 +1.053707E+00 +1.618797E+01 +1.311489E+02 diff --git a/tests/test_statepoint_sourcesep/results_true.dat b/tests/test_statepoint_sourcesep/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_statepoint_sourcesep/results_true.dat +++ b/tests/test_statepoint_sourcesep/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_survival_biasing/results_true.dat b/tests/test_survival_biasing/results_true.dat index 0f3509e448..a97654cfa2 100644 --- a/tests/test_survival_biasing/results_true.dat +++ b/tests/test_survival_biasing/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.025211E+00 1.372397E-02 +9.997733E-01 2.995572E-02 diff --git a/tests/test_tally_assumesep/results_true.dat b/tests/test_tally_assumesep/results_true.dat index a2f3586ae4..4835227f24 100644 --- a/tests/test_tally_assumesep/results_true.dat +++ b/tests/test_tally_assumesep/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.093844E+00 1.626801E-02 +1.005983E+00 2.248579E-02 tally 1: -1.517577E+01 -4.747271E+01 +1.423676E+01 +4.330937E+01 tally 2: -3.151504E+00 -2.051857E+00 +2.914798E+00 +1.831649E+00 tally 3: -4.536316E+01 -4.258781E+02 +4.088282E+01 +3.662539E+02 diff --git a/tests/test_trace/results_true.dat b/tests/test_trace/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_trace/results_true.dat +++ b/tests/test_trace/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_translation/results_true.dat b/tests/test_translation/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_translation/results_true.dat +++ b/tests/test_translation/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_trigger_batch_interval/results_true.dat b/tests/test_trigger_batch_interval/results_true.dat index 65fa51bb4f..c901e1e54d 100644 --- a/tests/test_trigger_batch_interval/results_true.dat +++ b/tests/test_trigger_batch_interval/results_true.dat @@ -1,28 +1,28 @@ k-combined: -9.851940E-01 4.283950E-03 +9.875001E-01 3.961945E-03 tally 1: -1.972289E+01 -2.779778E+01 -4.489781E+00 -1.440247E+00 -4.356175E+00 -1.355797E+00 -1.523311E+01 -1.658397E+01 -1.972289E+01 -2.779778E+01 -4.489781E+00 -1.440247E+00 -4.356175E+00 -1.355797E+00 -1.523311E+01 -1.658397E+01 +2.128147E+01 +3.021699E+01 +4.842434E+00 +1.563989E+00 +4.695086E+00 +1.470132E+00 +1.643904E+01 +1.803258E+01 +2.128147E+01 +3.021699E+01 +4.842434E+00 +1.563989E+00 +4.695086E+00 +1.470132E+00 +1.643904E+01 +1.803258E+01 tally 2: -1.972289E+01 -2.779778E+01 -4.489781E+00 -1.440247E+00 -4.356175E+00 -1.355797E+00 -1.523311E+01 -1.658397E+01 +2.128147E+01 +3.021699E+01 +4.842434E+00 +1.563989E+00 +4.695086E+00 +1.470132E+00 +1.643904E+01 +1.803258E+01 diff --git a/tests/test_trigger_batch_interval/settings.xml b/tests/test_trigger_batch_interval/settings.xml index d7afd9231d..b8e1e9c96a 100644 --- a/tests/test_trigger_batch_interval/settings.xml +++ b/tests/test_trigger_batch_interval/settings.xml @@ -1,15 +1,15 @@ - 10 + 15 5 1000 std_dev - 0.00445 + 0.004 - + true 30 diff --git a/tests/test_trigger_batch_interval/test_trigger_batch_interval.py b/tests/test_trigger_batch_interval/test_trigger_batch_interval.py index d5e176fea9..e5c5b54b6b 100644 --- a/tests/test_trigger_batch_interval/test_trigger_batch_interval.py +++ b/tests/test_trigger_batch_interval/test_trigger_batch_interval.py @@ -6,5 +6,5 @@ from testing_harness import TestHarness if __name__ == '__main__': - harness = TestHarness('statepoint.19.*', True) + harness = TestHarness('statepoint.20.*', True) harness.main() diff --git a/tests/test_trigger_no_batch_interval/results_true.dat b/tests/test_trigger_no_batch_interval/results_true.dat index 65fa51bb4f..d06a91646c 100644 --- a/tests/test_trigger_no_batch_interval/results_true.dat +++ b/tests/test_trigger_no_batch_interval/results_true.dat @@ -1,28 +1,28 @@ k-combined: -9.851940E-01 4.283950E-03 +9.853099E-01 3.825057E-03 tally 1: -1.972289E+01 -2.779778E+01 -4.489781E+00 -1.440247E+00 -4.356175E+00 -1.355797E+00 -1.523311E+01 -1.658397E+01 -1.972289E+01 -2.779778E+01 -4.489781E+00 -1.440247E+00 -4.356175E+00 -1.355797E+00 -1.523311E+01 -1.658397E+01 +2.409492E+01 +3.417475E+01 +5.477076E+00 +1.765385E+00 +5.309347E+00 +1.658803E+00 +1.861784E+01 +2.040621E+01 +2.409492E+01 +3.417475E+01 +5.477076E+00 +1.765385E+00 +5.309347E+00 +1.658803E+00 +1.861784E+01 +2.040621E+01 tally 2: -1.972289E+01 -2.779778E+01 -4.489781E+00 -1.440247E+00 -4.356175E+00 -1.355797E+00 -1.523311E+01 -1.658397E+01 +2.409492E+01 +3.417475E+01 +5.477076E+00 +1.765385E+00 +5.309347E+00 +1.658803E+00 +1.861784E+01 +2.040621E+01 diff --git a/tests/test_trigger_no_batch_interval/settings.xml b/tests/test_trigger_no_batch_interval/settings.xml index 5ceff1082b..5412af35f9 100644 --- a/tests/test_trigger_no_batch_interval/settings.xml +++ b/tests/test_trigger_no_batch_interval/settings.xml @@ -1,15 +1,15 @@ - 10 + 15 5 1000 std_dev - 0.00445 + 0.004 - + true 30 diff --git a/tests/test_trigger_no_batch_interval/test_trigger_no_batch_interval.py b/tests/test_trigger_no_batch_interval/test_trigger_no_batch_interval.py index d5e176fea9..ff19e3d08d 100644 --- a/tests/test_trigger_no_batch_interval/test_trigger_no_batch_interval.py +++ b/tests/test_trigger_no_batch_interval/test_trigger_no_batch_interval.py @@ -6,5 +6,5 @@ from testing_harness import TestHarness if __name__ == '__main__': - harness = TestHarness('statepoint.19.*', True) + harness = TestHarness('statepoint.22.*', True) harness.main() diff --git a/tests/test_trigger_no_status/results_true.dat b/tests/test_trigger_no_status/results_true.dat index b9dc78dd03..0b541099b9 100644 --- a/tests/test_trigger_no_status/results_true.dat +++ b/tests/test_trigger_no_status/results_true.dat @@ -1,28 +1,28 @@ k-combined: -9.809303E-01 7.264435E-03 +9.906276E-01 1.800527E-03 tally 1: -7.031241E+00 -9.892232E+00 -1.599216E+00 -5.115987E-01 -1.550710E+00 -4.810241E-01 -5.432025E+00 -5.904811E+00 -7.031241E+00 -9.892232E+00 -1.599216E+00 -5.115987E-01 -1.550710E+00 -4.810241E-01 -5.432025E+00 -5.904811E+00 +7.043320E+00 +9.922203E+00 +1.610208E+00 +5.185662E-01 +1.564118E+00 +4.893096E-01 +5.433111E+00 +5.904259E+00 +7.043320E+00 +9.922203E+00 +1.610208E+00 +5.185662E-01 +1.564118E+00 +4.893096E-01 +5.433111E+00 +5.904259E+00 tally 2: -7.031241E+00 -9.892232E+00 -1.599216E+00 -5.115987E-01 -1.550710E+00 -4.810241E-01 -5.432025E+00 -5.904811E+00 +7.043320E+00 +9.922203E+00 +1.610208E+00 +5.185662E-01 +1.564118E+00 +4.893096E-01 +5.433111E+00 +5.904259E+00 diff --git a/tests/test_trigger_tallies/results_true.dat b/tests/test_trigger_tallies/results_true.dat index 86b1c14d5c..0519260ddc 100644 --- a/tests/test_trigger_tallies/results_true.dat +++ b/tests/test_trigger_tallies/results_true.dat @@ -1,28 +1,28 @@ k-combined: -9.824135E-01 6.844127E-03 +9.875396E-01 4.095985E-03 tally 1: -1.408810E+01 -1.985836E+01 -3.199600E+00 -1.024050E+00 -3.102648E+00 -9.629173E-01 -1.088850E+01 -1.186391E+01 -1.408810E+01 -1.985836E+01 -3.199600E+00 -1.024050E+00 -3.102648E+00 -9.629173E-01 -1.088850E+01 -1.186391E+01 +1.415943E+01 +2.006888E+01 +3.225529E+00 +1.040975E+00 +3.128858E+00 +9.794019E-01 +1.093390E+01 +1.196901E+01 +1.415943E+01 +2.006888E+01 +3.225529E+00 +1.040975E+00 +3.128858E+00 +9.794019E-01 +1.093390E+01 +1.196901E+01 tally 2: -1.408810E+01 -1.985836E+01 -3.199600E+00 -1.024050E+00 -3.102648E+00 -9.629173E-01 -1.088850E+01 -1.186391E+01 +1.415943E+01 +2.006888E+01 +3.225529E+00 +1.040975E+00 +3.128858E+00 +9.794019E-01 +1.093390E+01 +1.196901E+01 diff --git a/tests/test_trigger_tallies/settings.xml b/tests/test_trigger_tallies/settings.xml index c6d986ce85..895c0ee72c 100644 --- a/tests/test_trigger_tallies/settings.xml +++ b/tests/test_trigger_tallies/settings.xml @@ -6,10 +6,10 @@ 1000 std_dev - 0.02 + 0.001 - + true 15 diff --git a/tests/test_uniform_fs/results_true.dat b/tests/test_uniform_fs/results_true.dat index eb3d0e715e..a29a363b25 100644 --- a/tests/test_uniform_fs/results_true.dat +++ b/tests/test_uniform_fs/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.623468E-01 4.795863E-03 +3.546115E-01 2.982307E-03 diff --git a/tests/test_union_energy_grids/results_true.dat b/tests/test_union_energy_grids/results_true.dat index 05cda2e980..9556a981bc 100644 --- a/tests/test_union_energy_grids/results_true.dat +++ b/tests/test_union_energy_grids/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.215828E-01 2.966835E-03 +3.155788E-01 7.559348E-03 diff --git a/tests/test_universe/results_true.dat b/tests/test_universe/results_true.dat index f2dfdeca14..5263a6b7fd 100644 --- a/tests/test_universe/results_true.dat +++ b/tests/test_universe/results_true.dat @@ -1,2 +1,2 @@ k-combined: -3.011726E-01 1.841644E-03 +3.021779E-01 3.813358E-03 diff --git a/tests/test_void/results_true.dat b/tests/test_void/results_true.dat index 921d07692f..4e99b86760 100644 --- a/tests/test_void/results_true.dat +++ b/tests/test_void/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.069802E+00 2.223092E-02 +1.045350E+00 2.750547E-02 diff --git a/tests/travis.sh b/tests/travis.sh index d591428686..fac8d793a6 100755 --- a/tests/travis.sh +++ b/tests/travis.sh @@ -3,6 +3,7 @@ set -ev # Run all debug tests +./check_source.py if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./run_tests.py -C "^basic-debug$|^hdf5-debug$|^mpi-omp-debug$|^phdf5-omp-debug$" -j 2 -s else