OpenMC/docs/source/pythonapi/examples/pandas-dataframes.ipynb

2151 lines
126 KiB
Text
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
2017-03-06 19:54:23 -06:00
"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."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import glob\n",
"\n",
"from IPython.display import Image\n",
2016-05-05 15:14:26 -06:00
"import matplotlib.pyplot as plt\n",
"import scipy.stats\n",
"import numpy as np\n",
2016-07-25 06:33:37 -05:00
"import pandas as pd\n",
"\n",
2017-03-06 19:54:23 -06:00
"import openmc\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate Input Files"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2017-03-06 19:54:23 -06:00
"First we need to define materials that will be used in the problem. We will create three materials for the fuel, water, and cladding of the fuel pin."
]
},
{
"cell_type": "code",
"execution_count": 2,
"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",
2017-03-06 19:54:23 -06:00
"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",
2017-03-06 19:54:23 -06:00
"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",
2017-03-06 19:54:23 -06:00
"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",
2017-03-06 19:54:23 -06:00
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Instantiate a Materials collection\n",
"materials_file = openmc.Materials((fuel, water, zircaloy))\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 for which we can use OpenMC's lattice/universe feature. The basic universe will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces for fuel and clad, as well as the outer bounding surfaces of the problem."
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 4,
"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 construct a fuel pin cell from cells that are defined by intersections of half-spaces created by the surfaces."
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create fuel Cell\n",
2017-03-06 19:54:23 -06:00
"fuel_cell = openmc.Cell(name='1.6% Fuel', fill=fuel,\n",
" region=-fuel_outer_radius)\n",
"\n",
"# Create a clad Cell\n",
2017-03-06 19:54:23 -06:00
"clad_cell = openmc.Cell(name='1.6% Clad', fill=zircaloy)\n",
"clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n",
"\n",
"# Create a moderator Cell\n",
2017-03-06 19:54:23 -06:00
"moderator_cell = openmc.Cell(name='1.6% Moderator', fill=water,\n",
" region=+clad_outer_radius)\n",
"\n",
"# Create a Universe to encapsulate a fuel pin\n",
"pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin', cells=[\n",
" fuel_cell, clad_cell, moderator_cell\n",
"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the pin cell universe, we can construct a 17x17 rectangular lattice with a 1.26 cm pitch."
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create fuel assembly Lattice\n",
"assembly = openmc.RectLattice(name='1.6% Fuel - 0BA')\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",
2017-03-06 19:54:23 -06:00
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create root Cell\n",
2017-03-06 19:54:23 -06:00
"root_cell = openmc.Cell(name='root cell', fill=assembly)\n",
"\n",
"# Add boundary planes\n",
"root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n",
"\n",
"# Create root Universe\n",
2017-03-06 19:54:23 -06:00
"root_universe = openmc.Universe(name='root universe')\n",
"root_universe.add_cell(root_cell)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-04-25 10:44:20 -05:00
"We now must create a geometry that is assigned a root universe and export it to XML."
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
2017-03-06 19:54:23 -06:00
"# Create Geometry and export to \"geometry.xml\"\n",
"geometry = openmc.Geometry(root_universe)\n",
2016-04-25 10:44:20 -05:00
"geometry.export_to_xml()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the geometry and materials finished, we now just need to define simulation parameters. In this case, we will use 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",
2017-03-06 19:54:23 -06:00
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# OpenMC simulation parameters\n",
"min_batches = 20\n",
"max_batches = 200\n",
"inactive = 5\n",
"particles = 2500\n",
"\n",
2016-04-25 10:44:20 -05:00
"# Instantiate a Settings object\n",
2017-03-06 19:54:23 -06:00
"settings = openmc.Settings()\n",
"settings.batches = min_batches\n",
"settings.inactive = inactive\n",
"settings.particles = particles\n",
"settings.output = {'tallies': False}\n",
"settings.trigger_active = True\n",
"settings.trigger_max_batches = max_batches\n",
2016-04-08 12:26:02 -04:00
"\n",
"# Create an initial uniform spatial source distribution over fissionable zones\n",
"bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n",
"uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n",
2017-03-06 19:54:23 -06:00
"settings.source = openmc.source.Source(space=uniform_dist)\n",
"\n",
"# Export to \"settings.xml\"\n",
2017-03-06 19:54:23 -06:00
"settings.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",
2017-03-06 19:54:23 -06:00
"execution_count": 10,
"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 Plots collection and export to \"plots.xml\"\n",
"plot_file = openmc.Plots([plot])\n",
"plot_file.export_to_xml()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the plots.xml file, we can now generate and view the plot. OpenMC outputs plots in .ppm format, which can be converted into a compressed format like .png with the convert utility."
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Run openmc in plotting mode\n",
2016-04-25 10:44:20 -05:00
"openmc.plot_geometry(output=False)"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
2017-03-06 19:54:23 -06:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+EDBwEuOZ57y/0AAAPZSURBVGje7Zs7buMwEIZ9iey5\n0gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwgwIcgg8Cc4fCTSK5W4OeF\nkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7E08mlia+rn7VcKXP8sRs\nzFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WBzfiz20hXORmP9fi/bM9E\neUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4lXju8K3DKv9NThOZ3q2K\nmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3OafPX40NGgST2r+uvQkXXp6\ncKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcublfKGt6apotG/NVx3SInW\ntLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJbf8qlPynYmpKCh7OB1fzN\nalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utrJTy8/06TXh0r/5JOa2Jm\nYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU4YuBTPa/8P67l/6r44ds\n+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m/65n+S8p/itN15v0UkW3\n/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB6R3Cqn55U4rv4kfH3zaS\ngQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6bjT6rym9I/v/03/b+LHS\n4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv6h9B/Bfxr9j1Hz2eN/hO\n8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wXfP8Mvf9G37/D/ovuP8Se\nP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7+O+E8zdP/8XOf8Hnz9Dz\nb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589jz5/Y8ej9h4D+W7qQmf57\nefqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m4fwXuH+M3n+OO3++AX9c\nlR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTAzLTA2VDE5OjQ2OjU3LTA2OjAwNk/qsgAA\nACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wMy0wNlQxOTo0Njo1Ny0wNjowMEcSUg4AAAAASUVORK5C\nYII=\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 12,
"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",
2017-03-06 19:54:23 -06:00
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
2016-04-25 10:44:20 -05:00
"# Instantiate an empty Tallies object\n",
2017-03-06 19:54:23 -06:00
"tallies = openmc.Tallies()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Instantiate a fission rate mesh Tally"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Instantiate a tally Mesh\n",
"mesh = openmc.Mesh(mesh_id=1)\n",
"mesh.type = 'regular'\n",
"mesh.dimension = [17, 17]\n",
"mesh.lower_left = [-10.71, -10.71]\n",
"mesh.width = [1.26, 1.26]\n",
"\n",
"# Instantiate tally Filter\n",
2016-09-30 00:01:10 -04:00
"mesh_filter = openmc.MeshFilter(mesh)\n",
"\n",
"# Instantiate energy Filter\n",
"energy_filter = openmc.EnergyFilter([0, 0.625, 20.0e6])\n",
"\n",
"# Instantiate the Tally\n",
"tally = openmc.Tally(name='mesh tally')\n",
"tally.filters = [mesh_filter, energy_filter]\n",
"tally.scores = ['fission', 'nu-fission']\n",
"\n",
2016-04-25 10:44:20 -05:00
"# Add mesh and Tally to Tallies\n",
2017-03-06 19:54:23 -06:00
"tallies.append(tally)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Instantiate a cell Tally with nuclides"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Instantiate tally Filter\n",
2016-09-22 03:00:49 -04:00
"cell_filter = openmc.CellFilter(fuel_cell.id)\n",
"\n",
"# Instantiate the tally\n",
"tally = openmc.Tally(name='cell tally')\n",
"tally.filters = [cell_filter]\n",
"tally.scores = ['scatter-y2']\n",
2017-03-06 19:54:23 -06:00
"tally.nuclides = ['U235', 'U238']\n",
"\n",
2016-04-25 10:44:20 -05:00
"# Add mesh and tally to Tallies\n",
2017-03-06 19:54:23 -06:00
"tallies.append(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",
2017-03-06 19:54:23 -06:00
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Instantiate tally Filter\n",
2016-09-22 03:00:49 -04:00
"distribcell_filter = openmc.DistribcellFilter(moderator_cell.id)\n",
"\n",
"# Instantiate tally Trigger for kicks\n",
"trigger = openmc.Trigger(trigger_type='std_dev', threshold=5e-5)\n",
"trigger.scores = ['absorption']\n",
"\n",
"# Instantiate the Tally\n",
"tally = openmc.Tally(name='distribcell tally')\n",
"tally.filters = [distribcell_filter]\n",
"tally.scores = ['absorption', 'scatter']\n",
"tally.triggers = [trigger]\n",
"\n",
2016-04-25 10:44:20 -05:00
"# Add mesh and tally to Tallies\n",
2017-03-06 19:54:23 -06:00
"tallies.append(tally)"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Export to \"tallies.xml\"\n",
2017-03-06 19:54:23 -06:00
"tallies.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",
2017-03-06 19:54:23 -06:00
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
2016-08-31 10:59:21 -05:00
" %%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" ############### %%%%%%%%%%%%%%%%%%%%%%%%\n",
" ################## %%%%%%%%%%%%%%%%%%%%%%%\n",
" ################### %%%%%%%%%%%%%%%%%%%%%%%\n",
" #################### %%%%%%%%%%%%%%%%%%%%%%\n",
" ##################### %%%%%%%%%%%%%%%%%%%%%\n",
" ###################### %%%%%%%%%%%%%%%%%%%%\n",
" ####################### %%%%%%%%%%%%%%%%%%\n",
" ####################### %%%%%%%%%%%%%%%%%\n",
" ###################### %%%%%%%%%%%%%%%%%\n",
" #################### %%%%%%%%%%%%%%%%%\n",
" ################# %%%%%%%%%%%%%%%%%\n",
" ############### %%%%%%%%%%%%%%%%\n",
" ############ %%%%%%%%%%%%%%%\n",
" ######## %%%%%%%%%%%%%%\n",
" %%%%%%%%%%%\n",
"\n",
2016-08-31 10:59:21 -05:00
" | The OpenMC Monte Carlo Code\n",
2017-03-06 19:54:23 -06:00
" Copyright | 2011-2017 Massachusetts Institute of Technology\n",
2016-08-31 10:59:21 -05:00
" License | http://openmc.readthedocs.io/en/latest/license.html\n",
" Version | 0.8.0\n",
2017-03-06 19:54:23 -06:00
" Git SHA1 | 2d1897a051baaca9fd65ff851bc803512889a06f\n",
" Date/Time | 2017-03-06 19:46:57\n",
" OpenMP Threads | 4\n",
"\n",
" Reading settings XML file...\n",
" Reading geometry XML file...\n",
" Reading materials XML file...\n",
" Reading cross sections XML file...\n",
" Reading U235 from /home/romano/openmc/scripts/nndc_hdf5/U235.h5\n",
" Reading U238 from /home/romano/openmc/scripts/nndc_hdf5/U238.h5\n",
" Reading O16 from /home/romano/openmc/scripts/nndc_hdf5/O16.h5\n",
" Reading H1 from /home/romano/openmc/scripts/nndc_hdf5/H1.h5\n",
" Reading B10 from /home/romano/openmc/scripts/nndc_hdf5/B10.h5\n",
" Reading Zr90 from /home/romano/openmc/scripts/nndc_hdf5/Zr90.h5\n",
" Maximum neutron transport energy: 2.00000E+07 eV for U235\n",
" Reading tallies XML file...\n",
" Building neighboring cells lists for each surface...\n",
" Initializing source particles...\n",
"\n",
" ====================> K EIGENVALUE SIMULATION <====================\n",
"\n",
" Bat./Gen. k Average k \n",
" ========= ======== ==================== \n",
" 1/1 0.55921 \n",
" 2/1 0.63816 \n",
" 3/1 0.68834 \n",
" 4/1 0.71192 \n",
" 5/1 0.67935 \n",
2017-03-06 19:54:23 -06:00
" 6/1 0.68254 \n",
" 7/1 0.65804 0.67029 +/- 0.01225\n",
" 8/1 0.66225 0.66761 +/- 0.00756\n",
" 9/1 0.66336 0.66655 +/- 0.00545\n",
" 10/1 0.68037 0.66931 +/- 0.00505\n",
" 11/1 0.71728 0.67731 +/- 0.00899\n",
" 12/1 0.66098 0.67498 +/- 0.00795\n",
" 13/1 0.69969 0.67806 +/- 0.00755\n",
" 14/1 0.70998 0.68161 +/- 0.00754\n",
" 15/1 0.70092 0.68354 +/- 0.00702\n",
" 16/1 0.71586 0.68648 +/- 0.00699\n",
" 17/1 0.65949 0.68423 +/- 0.00677\n",
" 18/1 0.67696 0.68367 +/- 0.00625\n",
" 19/1 0.65444 0.68158 +/- 0.00615\n",
" 20/1 0.69766 0.68266 +/- 0.00583\n",
" Triggers unsatisfied, max unc./thresh. is 1.17617 for absorption in tally 10002\n",
" The estimated number of batches is 26\n",
" Creating state point statepoint.020.h5...\n",
2017-03-06 19:54:23 -06:00
" 21/1 0.64126 0.68007 +/- 0.00603\n",
" 22/1 0.69287 0.68082 +/- 0.00572\n",
" 23/1 0.70254 0.68203 +/- 0.00552\n",
" 24/1 0.68198 0.68203 +/- 0.00523\n",
" 25/1 0.67214 0.68153 +/- 0.00498\n",
" 26/1 0.68171 0.68154 +/- 0.00474\n",
" Triggers satisfied for batch 26\n",
" Creating state point statepoint.026.h5...\n",
"\n",
" =======================> TIMING STATISTICS <=======================\n",
"\n",
2017-03-06 19:54:23 -06:00
" Total time for initialization = 4.8645E-01 seconds\n",
" Reading cross sections = 4.1789E-01 seconds\n",
" Total time in simulation = 4.6732E+00 seconds\n",
" Time in transport only = 4.5503E+00 seconds\n",
" Time in inactive batches = 5.6790E-01 seconds\n",
" Time in active batches = 4.1053E+00 seconds\n",
" Time synchronizing fission bank = 1.7410E-03 seconds\n",
" Sampling source sites = 1.2602E-03 seconds\n",
" SEND/RECV source sites = 4.4969E-04 seconds\n",
" Time accumulating tallies = 8.8049E-04 seconds\n",
" Total time for finalization = 4.3874E-05 seconds\n",
" Total time elapsed = 5.1725E+00 seconds\n",
" Calculation Rate (inactive) = 22010.8 neutrons/second\n",
" Calculation Rate (active) = 9134.46 neutrons/second\n",
"\n",
" ============================> RESULTS <============================\n",
"\n",
2017-03-06 19:54:23 -06:00
" k-effective (Collision) = 0.67976 +/- 0.00436\n",
" k-effective (Track-length) = 0.68154 +/- 0.00474\n",
" k-effective (Absorption) = 0.68320 +/- 0.00518\n",
" Combined k-effective = 0.68122 +/- 0.00432\n",
" Leakage Fraction = 0.34011 +/- 0.00283\n",
"\n"
]
},
{
"data": {
"text/plain": [
"0"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Remove old HDF5 (summary, statepoint) files\n",
"!rm statepoint.*\n",
"\n",
2016-04-25 10:44:20 -05:00
"# Run OpenMC!\n",
"openmc.run()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tally Data Processing"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 19,
"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",
2016-04-08 12:26:02 -04:00
"sp = openmc.StatePoint(statepoints[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Analyze the mesh fission rate tally**"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tally\n",
"\tID =\t10000\n",
"\tName =\tmesh tally\n",
2017-03-06 19:54:23 -06:00
"\tFilters =\tMeshFilter, EnergyFilter\n",
"\tNuclides =\ttotal \n",
2016-07-25 06:33:37 -05:00
"\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",
2017-03-06 19:54:23 -06:00
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2017-03-06 19:54:23 -06:00
"[[[ 0.17581417]]\n",
"\n",
2017-03-06 19:54:23 -06:00
" [[ 0.30578219]]\n",
"\n",
2017-03-06 19:54:23 -06:00
" [[ 0.06842901]]\n",
2016-08-31 10:59:21 -05:00
"\n",
2017-03-06 19:54:23 -06:00
" [[ 0.12436752]]]\n"
]
}
],
"source": [
"# Get the relative error for the thermal fission reaction \n",
"# rates in the four corner pins \n",
2016-09-22 03:00:49 -04:00
"data = tally.get_values(scores=['fission'],\n",
" filters=[openmc.MeshFilter, openmc.EnergyFilter], \\\n",
" filter_bins=[((1,1),(1,17), (17,1), (17,17)), \\\n",
" ((0., 0.625),)], value='rel_err')\n",
"print(data)"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"3\" halign=\"left\">mesh 1</th>\n",
" <th>energy low [eV]</th>\n",
" <th>energy high [eV]</th>\n",
" <th>score</th>\n",
" <th>mean</th>\n",
" <th>std. dev.</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>z</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.24e-04</td>\n",
" <td>3.94e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>5.46e-04</td>\n",
" <td>9.59e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>8.42e-05</td>\n",
" <td>6.79e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.22e-04</td>\n",
" <td>1.65e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.85e-04</td>\n",
" <td>2.70e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>4.52e-04</td>\n",
" <td>6.58e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>6.82e-05</td>\n",
" <td>5.29e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.81e-04</td>\n",
" <td>1.35e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.05e-04</td>\n",
" <td>2.25e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>5.00e-04</td>\n",
" <td>5.49e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>7.53e-05</td>\n",
" <td>7.06e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.99e-04</td>\n",
" <td>1.81e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.06e-04</td>\n",
" <td>2.79e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>5.03e-04</td>\n",
" <td>6.80e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>6.65e-05</td>\n",
" <td>3.91e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.75e-04</td>\n",
" <td>1.04e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.03e-04</td>\n",
" <td>2.78e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
2016-02-07 16:06:33 -05:00
" <td>0.00e+00</td>\n",
" <td>6.25e-01</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>4.94e-04</td>\n",
" <td>6.78e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>6.26e-05</td>\n",
" <td>5.71e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>6.25e-01</td>\n",
" <td>2.00e+07</td>\n",
" <td>nu-fission</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.64e-04</td>\n",
" <td>1.53e-05</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mesh 1 energy low [eV] energy high [eV] score mean \\\n",
" x y z \n",
2017-03-06 19:54:23 -06:00
"0 1 1 1 0.00e+00 6.25e-01 fission 2.24e-04 \n",
"1 1 1 1 0.00e+00 6.25e-01 nu-fission 5.46e-04 \n",
"2 1 1 1 6.25e-01 2.00e+07 fission 8.42e-05 \n",
"3 1 1 1 6.25e-01 2.00e+07 nu-fission 2.22e-04 \n",
"4 1 2 1 0.00e+00 6.25e-01 fission 1.85e-04 \n",
"5 1 2 1 0.00e+00 6.25e-01 nu-fission 4.52e-04 \n",
"6 1 2 1 6.25e-01 2.00e+07 fission 6.82e-05 \n",
"7 1 2 1 6.25e-01 2.00e+07 nu-fission 1.81e-04 \n",
"8 1 3 1 0.00e+00 6.25e-01 fission 2.05e-04 \n",
"9 1 3 1 0.00e+00 6.25e-01 nu-fission 5.00e-04 \n",
"10 1 3 1 6.25e-01 2.00e+07 fission 7.53e-05 \n",
"11 1 3 1 6.25e-01 2.00e+07 nu-fission 1.99e-04 \n",
"12 1 4 1 0.00e+00 6.25e-01 fission 2.06e-04 \n",
"13 1 4 1 0.00e+00 6.25e-01 nu-fission 5.03e-04 \n",
"14 1 4 1 6.25e-01 2.00e+07 fission 6.65e-05 \n",
"15 1 4 1 6.25e-01 2.00e+07 nu-fission 1.75e-04 \n",
"16 1 5 1 0.00e+00 6.25e-01 fission 2.03e-04 \n",
"17 1 5 1 0.00e+00 6.25e-01 nu-fission 4.94e-04 \n",
"18 1 5 1 6.25e-01 2.00e+07 fission 6.26e-05 \n",
"19 1 5 1 6.25e-01 2.00e+07 nu-fission 1.64e-04 \n",
"\n",
" std. dev. \n",
" \n",
2017-03-06 19:54:23 -06:00
"0 3.94e-05 \n",
"1 9.59e-05 \n",
"2 6.79e-06 \n",
"3 1.65e-05 \n",
"4 2.70e-05 \n",
"5 6.58e-05 \n",
"6 5.29e-06 \n",
"7 1.35e-05 \n",
"8 2.25e-05 \n",
"9 5.49e-05 \n",
"10 7.06e-06 \n",
"11 1.81e-05 \n",
"12 2.79e-05 \n",
"13 6.80e-05 \n",
"14 3.91e-06 \n",
"15 1.04e-05 \n",
"16 2.78e-05 \n",
"17 6.78e-05 \n",
"18 5.71e-06 \n",
"19 1.53e-05 "
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 22,
"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",
2016-02-07 16:06:33 -05:00
"# Set the Pandas float display settings\n",
2016-07-25 06:33:37 -05:00
"pd.options.display.float_format = '{:.2e}'.format\n",
2016-02-07 16:06:33 -05:00
"\n",
"# Print the first twenty rows in the dataframe\n",
"df.head(20)"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
2017-03-06 19:54:23 -06:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEcCAYAAAA/aDgKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHTpJREFUeJzt3X+cVnWd9/HXuwEdA1dUkhAIKKkYFzJ20vaxa/fgr4RK\ndi1Xsc1kvWMxpTY1gtg7190o02573BLILRsqW2rutq7cgUklk1lZYKj4e1nDQEkzFR2g4sfn/uN8\nxz1cDTPXF2bmYmbez8fjPLiuc77fc77nzOG8r/M95zqXIgIzM7Mcr6t1A8zMrOdxeJiZWTaHh5mZ\nZXN4mJlZNoeHmZllc3iYmVk2h4cd8CTdKOnztW5HrbW3HSSdL+ne7m6T9V0OD6uapA2StktqkfSS\npOWSRtS6XWWSQtIxtW6HWW/n8LBcH4iIgcBQ4Dlgfo3b02VU8P+RTiaprtZtsP3n/xi2TyLit8C/\nAQ2t4yQdJmmppF9LelrS37cefCVdJ+lbpbJfkvT9dIBukrRJ0mclvZDOcD68t2VL+pik9ZJelLRM\n0tFp/D2pyIPp7OjsNurWSfrfaTm/kHRxOlvpl6Y3S5on6UfANuDNko5Oy3kxLfdjpfnt0ZXUui6l\n9xskzZH0aDpbu0FSfWn6+yU9IOllST+WNL407Z2Sfi7pVUnfBF6rt/dNo69K2iLpcUknp5FnSbq/\nouAlku7Yy0zOl/RUWu4vyn+LtO0fS9MelTQhjR+btt3Lkh6RdEbFNrpO0gpJW4GJkg6W9GVJv5T0\nnKRFkg7pYP3sQBIRHjxUNQAbgFPS69cDNwFLS9OXAncAhwKjgCeBC0rlnwTOB04EXgCGp2lNwE7g\nGuBg4H8AW4G3pek3Ap9Pr09KdSeksvOBe0ptCOCYdtZhBvAoMBw4HPheqtMvTW8GfgkcC/QD+gP3\nAAspDt7HAb8GTqpsW2ldNlVss4eBEcARwI9K6/JO4HngBKAO+GgqfzBwEPA08KnUhg8BO8rLqliv\n89M2bC1/NrAlLfNg4EVgbKn8WuCDbcxnAPBKadsPBY5Nr88CngHeBQg4BhiZlrce+Gxq90nAqxV/\nvy3An1F8YK0HvgIsS+07FPh/wBdrvY97yDge1LoBHnrOkA5sLcDL6UD2LDAuTasDfg80lMr/LdBc\nen9COog9DUwtjW9KB74BpXG3Af8rvX7tAA18DbiqVG5gasuo9L6j8Lgb+NvS+1P4w/D4x9L0EcAu\n4NDSuC8CN1a2rbQuleExo/R+MvBf6fV1wD9VtO8JivB8T9q+Kk37Me2HR2X5nwEfKS1rXnp9LPAS\ncHAb8xmQ/r4fBA6pmHYX8Mk26pwI/Ap4XWncLcA/lLZR+UOGKD4cvKU07k+BX9R6H/dQ/eBuK8v1\nFxExiOLT48XADyS9ERhM8Qn06VLZp4FhrW8i4qfAUxQHj9sq5vtSRGytqHt0G8s/uryMiGgBflNe\nTgeOBjaW3m9so0x53NHAixHxakXbql1e5fzK6zUSuDR19bws6WWKsDo6Dc9EOrKW6ranrfKty7oJ\nOFeSgI8At0XE7ypnkP4GZ1OcoW1ON0W8PU0eAfxXG8s9GtgYEbsrll3eRuVt8AaKM9H7S+v9nTTe\negiHh+2TiNgVEf9O8an8zym6knZQHBBbvYmimwMASRdRdKE8C8yqmOXhkgZU1H22jUU/W15GqnNk\neTkd2EzRZdWqrbvFygfgZ4EjJB1a0bbW5W2lOBC2emMb8ysvo7xeGynOBgaVhtdHxC2pncPSwb5c\ntz1tlX8WICLuozgzPBE4F/iXvc0kIu6KiFMpuqweBxaX2vuWNqo8C4youLlgj789e27TF4DtFN1h\nret9WBQ3YlgP4fCwfZIudE+huG7wWETsojibmCfpUEkjgUuAr6fybwU+D/w1xSffWZKOq5jtFZIO\nknQi8H7gX9tY9C3ANEnHSToY+ALw04jYkKY/B7y5nabfBnxS0jBJg4DPtLeeEbGRorvoi5Lq0wXt\nC1rXC3gAmCzpiHQG9ndtzOYiScMlHQHMBb6Zxi8GZkg6IW3PAZLel4LqJxRdeZ+Q1F/SmcDx7bUV\nOKpU/ixgLLCiNH0p8FVgR0S0+Z0QSUMkTUmh/DuKbsrWM4p/Bi6T9Cepvcekv/NPKW4umJWW3QR8\nALi1rWWkM5TFwFckHZWWO0zSeztYPzuQ1LrfzEPPGSj677dTHFBepbgQ/OHS9MMpDqq/pviU+jmK\nDyj9KPrfZ5fKXgisozgTaQI2URxYX6C4YP2RUtkb2fO6wgyK7pMXgW+TLryXpm2m6Lf/qzbWoR/F\nxdrfAL+guMC8g3StgOKax/+sqDM8LefFtNzyNYx6ijB4BXgoza/ymscciov0L1N0H72+NP10YHWa\ntpkiMA9N0xopLmy/mpbxTdq/5vEjinDYQnFzwmkVZd5EEQRXtPM3Hgr8IM3j5bQ9Giq27xNpH3gY\neGcaf2yp3qPAX+7t71fabl+g6MZ8BXgM+ESt93EP1Q81b4AHD1RcZO7mZU8Cnm5n+gbg0ykYtlJc\nsB8C3JkO6t8DDk9l301xlvIy8GBarw0UF+WnpQPkq+mAWb5o30QRnpdS3H21GZjWBet6SFr+mFr/\nzT30/MHdVtanSDpE0mRJ/SQNAy4Hbu+g2geBU4G3UnTH3ElxW+obKM6sPpHmtZyia+4I4DLgW/x3\n1/DzFF1xf0QRJF9p/Y5E8kbgMIqLzBcACyQdvp+rW+lCYHVE/Gcnz9f6oH61boBZNxNwBUUX0HaK\nA/7nOqgzPyKeA5D0Q+D5iFib3t8OnExxLWdFRLReY/iupDUU30chIpaX5vcDSSspLl7/PI3bQXGL\n8E5ghaQW4G3Affuzsq0kbaBY97/ojPmZOTys5iKimT3vgOrKZW2j+JJbjudKr7e38X4gxR1gZ0n6\nQGlaf4rvcXxP0iSKs5y3UpyNvJ7imk+r36TgaLUtzbdTRMSozpqXGTg8zDrLRuBfIuJjlRPSXWHf\nAs4D7oiIHZL+g+JMwKxH8jUPs87xdeADkt6r4vlZ9SqeczWc4pEdB1PchbYznYWcVsvGmu0vh4dZ\nJ4ji+yBTKC6kt96q/GmKR3a8CnyC4jsmL1F8SW9ZjZpq1ila7203MzOrms88zMwsm8PDzMyyOTzM\nzCybw8PMzLI5PMzMLFuP+pLg4MGDY9SoUbVuRq+zdetWBgwY0HFBswOE99muc//9978QER3+MFeP\nCo9Ro0axZs2aWjej12lubqapqanWzTCrmvfZriOpo1+sBNxtZWZm+8DhYWZm2RweZmaWzeFhZmbZ\nHB5mZpbN4WFmPcbMmTOpr69n4sSJ1NfXM3PmzFo3qc/qUbfqmlnfNXPmTBYsWMDrXld85t25cycL\nFiwAYP78+bVsWp/kMw8z6xEWLlyIJK666iruvPNOrrrqKiSxcOHCWjetT3J4mFmPsHv3bubNm8cl\nl1xCfX09l1xyCfPmzWP37t21blqf5PAwM7NsvuZhZj1CXV0dc+fO5aCDDqKhoYFrrrmGuXPnUldX\nV+um9UkODzPrES688EIWLFjArFmz2LVrF3V1dUQEH//4x2vdtD7J3VZm1iPMnz+fU0899bVrHLt3\n7+bUU0/1nVY14vAwsx7hlltuYe3atYwcORJJjBw5krVr13LLLbfUuml9UlXhIel0SU9IWi9pdhvT\nJenaNP0hSRMy6l4qKSQN3r9VMbPebNasWdTV1bFkyRJWrlzJkiVLqKurY9asWbVuWp/UYXhIqgMW\nAJOABmCqpIaKYpOAMWmYDlxXTV1JI4DTgF/u95qYWa+2adMmli5dysSJE+nXrx8TJ05k6dKlbNq0\nqdZN65OqOfM4HlgfEU9FxO+BW4EpFWWmAEujcB8wSNLQKup+BZgFxP6uiJmZdZ9q7rYaBmwsvd8E\nnFBFmWHt1ZU0BXgmIh6UtNeFS5pOcTbDkCFDaG5urqLJlqOlpcXb1Q54gwcP5swzz2TAgAE8//zz\nHHXUUWzdupXBgwd7/62
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.figure.Figure at 0x7f7befa9ecc0>"
]
},
"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",
2017-03-06 19:54:23 -06:00
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.colorbar.Colorbar at 0x7f7bec6d7b00>"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2017-03-06 19:54:23 -06:00
"image/png": "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\nnpfSj793f3rdUvtED/e
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.figure.Figure at 0x7f7becbf1390>"
]
},
"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 low [eV]'] == 0.0]\n",
"\n",
"# Extract mean and reshape as 2D NumPy arrays\n",
2017-03-06 19:54:23 -06:00
"mean = fiss['mean'].values.reshape((17,17))\n",
"\n",
2016-05-05 15:14:26 -06:00
"plt.imshow(mean, interpolation='nearest')\n",
"plt.title('fission rate')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"plt.colorbar()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Analyze the cell+nuclides scatter-y2 rate tally**"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tally\n",
"\tID =\t10001\n",
"\tName =\tcell tally\n",
2017-03-06 19:54:23 -06:00
"\tFilters =\tCellFilter\n",
2016-07-25 06:33:37 -05:00
"\tNuclides =\tU235 U238 \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",
2017-03-06 19:54:23 -06:00
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cell</th>\n",
" <th>nuclide</th>\n",
" <th>score</th>\n",
" <th>mean</th>\n",
" <th>std. dev.</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y0,0</td>\n",
2017-03-06 19:54:23 -06:00
" <td>3.86e-02</td>\n",
" <td>6.85e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y1,-1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>6.95e-04</td>\n",
" <td>3.15e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y1,0</td>\n",
2017-03-06 19:54:23 -06:00
" <td>-1.06e-04</td>\n",
" <td>3.79e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y1,1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>-3.63e-04</td>\n",
" <td>3.18e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y2,-2</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.20e-04</td>\n",
" <td>1.59e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y2,-1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>3.93e-05</td>\n",
" <td>1.86e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y2,0</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.81e-04</td>\n",
" <td>1.85e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y2,1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.24e-04</td>\n",
" <td>1.81e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U235</td>\n",
" <td>scatter-Y2,2</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.06e-04</td>\n",
" <td>2.26e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y0,0</td>\n",
2016-07-25 06:33:37 -05:00
" <td>2.33e+00</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.10e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y1,-1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>2.90e-02</td>\n",
" <td>2.33e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y1,0</td>\n",
2017-03-06 19:54:23 -06:00
" <td>3.45e-03</td>\n",
" <td>2.38e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y1,1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>-2.72e-02</td>\n",
" <td>2.76e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y2,-2</td>\n",
2017-03-06 19:54:23 -06:00
" <td>-2.02e-03</td>\n",
" <td>1.44e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y2,-1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>8.07e-06</td>\n",
" <td>1.49e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y2,0</td>\n",
2017-03-06 19:54:23 -06:00
" <td>-3.74e-07</td>\n",
" <td>1.79e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y2,1</td>\n",
2017-03-06 19:54:23 -06:00
" <td>6.54e-04</td>\n",
" <td>1.49e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>10000</td>\n",
2016-07-25 06:33:37 -05:00
" <td>U238</td>\n",
" <td>scatter-Y2,2</td>\n",
2017-03-06 19:54:23 -06:00
" <td>-1.93e-03</td>\n",
" <td>1.36e-03</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cell nuclide score mean std. dev.\n",
2017-03-06 19:54:23 -06:00
"0 10000 U235 scatter-Y0,0 3.86e-02 6.85e-04\n",
"1 10000 U235 scatter-Y1,-1 6.95e-04 3.15e-04\n",
"2 10000 U235 scatter-Y1,0 -1.06e-04 3.79e-04\n",
"3 10000 U235 scatter-Y1,1 -3.63e-04 3.18e-04\n",
"4 10000 U235 scatter-Y2,-2 1.20e-04 1.59e-04\n",
"5 10000 U235 scatter-Y2,-1 3.93e-05 1.86e-04\n",
"6 10000 U235 scatter-Y2,0 1.81e-04 1.85e-04\n",
"7 10000 U235 scatter-Y2,1 1.24e-04 1.81e-04\n",
"8 10000 U235 scatter-Y2,2 2.06e-04 2.26e-04\n",
"9 10000 U238 scatter-Y0,0 2.33e+00 1.10e-02\n",
"10 10000 U238 scatter-Y1,-1 2.90e-02 2.33e-03\n",
"11 10000 U238 scatter-Y1,0 3.45e-03 2.38e-03\n",
"12 10000 U238 scatter-Y1,1 -2.72e-02 2.76e-03\n",
"13 10000 U238 scatter-Y2,-2 -2.02e-03 1.44e-03\n",
"14 10000 U238 scatter-Y2,-1 8.07e-06 1.49e-03\n",
"15 10000 U238 scatter-Y2,0 -3.74e-07 1.79e-03\n",
"16 10000 U238 scatter-Y2,1 6.54e-04 1.49e-03\n",
"17 10000 U238 scatter-Y2,2 -1.93e-03 1.36e-03"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 26,
"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",
2017-03-06 19:54:23 -06:00
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2017-03-06 19:54:23 -06:00
"[[[ 0.00136183 0.01104314]\n",
" [ 0.00022601 0.00068479]]]\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",
2016-07-25 06:33:37 -05:00
" nuclides=['U238', 'U235'], value='std_dev')\n",
"print(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Analyze the distribcell tally**"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tally\n",
"\tID =\t10002\n",
"\tName =\tdistribcell tally\n",
2017-03-06 19:54:23 -06:00
"\tFilters =\tDistribcellFilter\n",
"\tNuclides =\ttotal \n",
2016-07-25 06:33:37 -05:00
"\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",
2017-03-06 19:54:23 -06:00
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2017-03-06 19:54:23 -06:00
"[[[ 0.03500496]]]\n"
]
}
],
"source": [
"# Get the relative error for the scattering reaction rates in\n",
2016-04-08 12:26:02 -04:00
"# the first 10 distribcell instances \n",
2016-09-22 03:00:49 -04:00
"data = tally.get_values(scores=['scatter'], filters=[openmc.DistribcellFilter],\n",
" filter_bins=[(i,) for i in range(10)], value='rel_err')\n",
"print(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2016-05-09 12:53:12 -04:00
"Print the distribcell tally dataframe"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"2\" halign=\"left\">level 1</th>\n",
2017-03-06 19:54:23 -06:00
" <th colspan=\"3\" halign=\"left\">level 2</th>\n",
" <th colspan=\"2\" halign=\"left\">level 3</th>\n",
" <th>distribcell</th>\n",
" <th>score</th>\n",
" <th>mean</th>\n",
" <th>std. dev.</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>univ</th>\n",
" <th>cell</th>\n",
2017-03-06 19:54:23 -06:00
" <th colspan=\"3\" halign=\"left\">lat</th>\n",
" <th>univ</th>\n",
" <th>cell</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>558</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
" <td>16</td>\n",
" <td>7</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>279</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>7.77e-05</td>\n",
" <td>7.87e-06</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>559</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
" <td>16</td>\n",
" <td>7</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>279</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.28e-02</td>\n",
" <td>5.09e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>560</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>8</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>280</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>8.92e-05</td>\n",
" <td>7.32e-06</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>561</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>8</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>280</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.37e-02</td>\n",
" <td>4.99e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>562</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>9</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>281</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>9.50e-05</td>\n",
" <td>7.80e-06</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>563</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>9</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>281</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.49e-02</td>\n",
" <td>4.74e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>564</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>10</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>282</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.15e-04</td>\n",
" <td>1.00e-05</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>565</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>10</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>282</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.58e-02</td>\n",
" <td>6.18e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>566</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>11</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>283</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.13e-04</td>\n",
" <td>1.01e-05</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>567</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>11</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>283</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.75e-02</td>\n",
" <td>5.66e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>568</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>12</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>284</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.08e-04</td>\n",
" <td>9.66e-06</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>569</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>12</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>284</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.73e-02</td>\n",
" <td>5.40e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>570</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>13</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>285</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.16e-04</td>\n",
" <td>1.44e-05</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>571</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>13</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>285</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.70e-02</td>\n",
" <td>6.90e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>572</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>14</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>286</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.16e-04</td>\n",
" <td>1.02e-05</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>573</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>14</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>286</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.77e-02</td>\n",
" <td>6.80e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>574</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>15</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>287</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.20e-04</td>\n",
" <td>1.36e-05</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>575</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>15</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>287</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.80e-02</td>\n",
" <td>7.80e-04</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>576</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>16</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>288</td>\n",
" <td>absorption</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.32e-04</td>\n",
" <td>1.30e-05</td>\n",
" </tr>\n",
" <tr>\n",
2016-04-08 12:26:02 -04:00
" <th>577</th>\n",
2017-03-06 19:54:23 -06:00
" <td>10002</td>\n",
" <td>10003</td>\n",
" <td>10001</td>\n",
2016-04-08 12:26:02 -04:00
" <td>16</td>\n",
" <td>16</td>\n",
" <td>10000</td>\n",
" <td>10002</td>\n",
2016-04-08 12:26:02 -04:00
" <td>288</td>\n",
" <td>scatter</td>\n",
2017-03-06 19:54:23 -06:00
" <td>1.86e-02</td>\n",
" <td>7.12e-04</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2017-03-06 19:54:23 -06:00
" level 1 level 2 level 3 distribcell score \\\n",
" univ cell lat univ cell \n",
" id id id x y id id \n",
"558 10002 10003 10001 16 7 10000 10002 279 absorption \n",
"559 10002 10003 10001 16 7 10000 10002 279 scatter \n",
"560 10002 10003 10001 16 8 10000 10002 280 absorption \n",
"561 10002 10003 10001 16 8 10000 10002 280 scatter \n",
"562 10002 10003 10001 16 9 10000 10002 281 absorption \n",
"563 10002 10003 10001 16 9 10000 10002 281 scatter \n",
"564 10002 10003 10001 16 10 10000 10002 282 absorption \n",
"565 10002 10003 10001 16 10 10000 10002 282 scatter \n",
"566 10002 10003 10001 16 11 10000 10002 283 absorption \n",
"567 10002 10003 10001 16 11 10000 10002 283 scatter \n",
"568 10002 10003 10001 16 12 10000 10002 284 absorption \n",
"569 10002 10003 10001 16 12 10000 10002 284 scatter \n",
"570 10002 10003 10001 16 13 10000 10002 285 absorption \n",
"571 10002 10003 10001 16 13 10000 10002 285 scatter \n",
"572 10002 10003 10001 16 14 10000 10002 286 absorption \n",
"573 10002 10003 10001 16 14 10000 10002 286 scatter \n",
"574 10002 10003 10001 16 15 10000 10002 287 absorption \n",
"575 10002 10003 10001 16 15 10000 10002 287 scatter \n",
"576 10002 10003 10001 16 16 10000 10002 288 absorption \n",
"577 10002 10003 10001 16 16 10000 10002 288 scatter \n",
"\n",
2016-04-08 12:26:02 -04:00
" mean std. dev. \n",
" \n",
" \n",
2017-03-06 19:54:23 -06:00
"558 7.77e-05 7.87e-06 \n",
"559 1.28e-02 5.09e-04 \n",
"560 8.92e-05 7.32e-06 \n",
"561 1.37e-02 4.99e-04 \n",
"562 9.50e-05 7.80e-06 \n",
"563 1.49e-02 4.74e-04 \n",
"564 1.15e-04 1.00e-05 \n",
"565 1.58e-02 6.18e-04 \n",
"566 1.13e-04 1.01e-05 \n",
"567 1.75e-02 5.66e-04 \n",
"568 1.08e-04 9.66e-06 \n",
"569 1.73e-02 5.40e-04 \n",
"570 1.16e-04 1.44e-05 \n",
"571 1.70e-02 6.90e-04 \n",
"572 1.16e-04 1.02e-05 \n",
"573 1.77e-02 6.80e-04 \n",
"574 1.20e-04 1.36e-05 \n",
"575 1.80e-02 7.80e-04 \n",
"576 1.32e-04 1.30e-05 \n",
"577 1.86e-02 7.12e-04 "
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 30,
"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",
2016-04-08 12:26:02 -04:00
"df.tail(20)"
]
},
{
"cell_type": "code",
2017-03-06 19:54:23 -06:00
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th>mean</th>\n",
" <th>std. dev.</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>2.89e+02</td>\n",
" <td>2.89e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
2017-03-06 19:54:23 -06:00
" <td>4.17e-04</td>\n",
" <td>2.05e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
2017-03-06 19:54:23 -06:00
" <td>2.42e-04</td>\n",
" <td>8.32e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
2017-03-06 19:54:23 -06:00
" <td>2.27e-05</td>\n",
" <td>4.04e-06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
2017-03-06 19:54:23 -06:00
" <td>2.01e-04</td>\n",
" <td>1.40e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
2017-03-06 19:54:23 -06:00
" <td>4.00e-04</td>\n",
" <td>2.05e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
2017-03-06 19:54:23 -06:00
" <td>6.08e-04</td>\n",
" <td>2.60e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
2017-03-06 19:54:23 -06:00
" <td>9.38e-04</td>\n",
" <td>4.27e-05</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" mean std. dev.\n",
" \n",
" \n",
"count 2.89e+02 2.89e+02\n",
2017-03-06 19:54:23 -06:00
"mean 4.17e-04 2.05e-05\n",
"std 2.42e-04 8.32e-06\n",
"min 2.27e-05 4.04e-06\n",
"25% 2.01e-04 1.40e-05\n",
"50% 4.00e-04 2.05e-05\n",
"75% 6.08e-04 2.60e-05\n",
"max 9.38e-04 4.27e-05"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 31,
"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",
2017-03-06 19:54:23 -06:00
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2017-03-06 19:54:23 -06:00
"Mann-Whitney Test p-value: 0.3933685843661936\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",
2017-03-06 19:54:23 -06:00
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2017-03-06 19:54:23 -06:00
"Mann-Whitney Test p-value: 7.927841393301949e-42\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",
2017-03-06 19:54:23 -06:00
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2017-03-06 19:54:23 -06:00
"/home/romano/miniconda3/envs/python3/lib/python3.5/site-packages/ipykernel/__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 caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
]
},
{
"data": {
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.axes._subplots.AxesSubplot at 0x7f7bec63e9b0>"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2017-03-06 19:54:23 -06:00
"image/png": "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\nY0XkGNwg8EngwsAxS4D
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.figure.Figure at 0x7f7bec673630>"
]
},
"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",
2017-03-06 19:54:23 -06:00
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.legend.Legend at 0x7f7bec60f358>"
]
},
2017-03-06 19:54:23 -06:00
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2017-03-06 19:54:23 -06:00
"image/png": "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\nPP300wDbxldk7dq17LH
"text/plain": [
2017-03-06 19:54:23 -06:00
"<matplotlib.figure.Figure at 0x7f7bec611a20>"
]
},
"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",
2016-05-05 15:14:26 -06:00
"plt.title('Scattering Rates')\n",
"plt.xlabel('Mean')\n",
"plt.legend(['KDE', 'Histogram'])"
]
}
],
"metadata": {
2017-03-06 19:54:23 -06:00
"anaconda-cloud": {},
"kernelspec": {
2017-03-06 19:54:23 -06:00
"display_name": "Python [default]",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2016-07-25 06:33:37 -05:00
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}