{ "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": "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\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 }