From 582effdcd54e630fa82040800391a4145c9c80b0 Mon Sep 17 00:00:00 2001 From: April Novak Date: Thu, 28 Mar 2024 12:57:45 -0500 Subject: [PATCH] notebooks --- Pincell-solution.ipynb | 2375 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 2358 insertions(+), 17 deletions(-) diff --git a/Pincell-solution.ipynb b/Pincell-solution.ipynb index a9de383226..ecaed6abc6 100644 --- a/Pincell-solution.ipynb +++ b/Pincell-solution.ipynb @@ -753,12 +753,12 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 184, "metadata": {}, "outputs": [], "source": [ "# Add nuclides to uo2\n", - "uo2 = openmc.Material()\n", + "uo2 = openmc.Material(name=\"uo2\")\n", "uo2.add_element('U', 1.0, enrichment=3.5)\n", "uo2.add_nuclide('O16', 2.0)\n", "uo2.set_density('g/cm3', 10.0)" @@ -777,7 +777,7 @@ "metadata": {}, "outputs": [], "source": [ - "water = openmc.Material()\n", + "water = openmc.Material(name=\"water\")\n", "water.add_element('H', 2.0)\n", "water.add_nuclide('O16', 1.0)\n", "water.set_density('g/cm3', 1.0)" @@ -1143,11 +1143,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 185, "metadata": {}, "outputs": [], "source": [ - "new_fuel = openmc.Material()\n", + "new_fuel = openmc.Material(name=\"new_fuel\")\n", "new_fuel.add_nuclide('Pu239', 1.0)\n", "new_fuel.add_nuclide('Si28', 2.0)\n", "new_fuel.set_density('g/cm3', 9.0)" @@ -1594,6 +1594,24 @@ "clad_region = +clad_inner_radius & -clad_outer_radius" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will also create two z-planes in order to bound the geometry in the axial direction." + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [], + "source": [ + "top = openmc.ZPlane(z0=150.0, boundary_type='vacuum')\n", + "bot = openmc.ZPlane(z0=-150.0, boundary_type='vacuum')\n", + "layer = +bot & -top" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1603,20 +1621,20 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "fuel = openmc.Cell()\n", "fuel.fill = uo2\n", - "fuel.region = fuel_region\n", + "fuel.region = fuel_region & layer\n", "\n", "gap = openmc.Cell()\n", - "gap.region = gap_region\n", + "gap.region = gap_region & layer\n", "\n", "clad = openmc.Cell()\n", "clad.fill = zirconium\n", - "clad.region = clad_region" + "clad.region = clad_region & layer" ] }, { @@ -1628,15 +1646,15 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 155, "metadata": {}, "outputs": [], "source": [ "pitch = 1.44270\n", "left = openmc.XPlane(-pitch/2, boundary_type='reflective')\n", "right = openmc.XPlane(pitch/2, boundary_type='reflective')\n", - "bottom = openmc.YPlane(-pitch/2, boundary_type='reflective')\n", - "top = openmc.YPlane(pitch/2, boundary_type='reflective')" + "front = openmc.YPlane(-pitch/2, boundary_type='reflective')\n", + "back = openmc.YPlane(pitch/2, boundary_type='reflective')" ] }, { @@ -1648,11 +1666,11 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 156, "metadata": {}, "outputs": [], "source": [ - "water_region = +left & -right & +bottom & -top & +clad_outer_radius\n", + "water_region = +left & -right & +front & -back & +clad_outer_radius & layer\n", "\n", "moderator = openmc.Cell()\n", "moderator.fill = water\n", @@ -1668,7 +1686,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 157, "metadata": {}, "outputs": [], "source": [ @@ -1678,7 +1696,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 158, "metadata": {}, "outputs": [ { @@ -1687,7 +1705,7 @@ "" ] }, - "execution_count": 48, + "execution_count": 158, "metadata": {}, "output_type": "execute_result" }, @@ -2136,6 +2154,2329 @@ "from IPython.display import Image\n", "Image(\"pinplot.png\")" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tallies\n", + "\n", + "In this section, we'll be looking at how to extract custom information from an OpenMC simulation in what is known as a \"tally.\" A tally accumulates statistical information during the simulation about particles when they eneter regions of phase space specified on the tally. The limits of these regions are set by \"filters\" applied to the tally. Scores and nuclides can also be applied to tallies to indicate what type of information is kept about the particle (e.g. reaction types, flux, heat, etc.).\n", + "\n", + "Any tally in OpenMC can be described with the following form:\n", + "\n", + "$$ \n", + " X = \\underbrace{\\int d\\mathbf{r} \\int d\\mathbf{\\Omega} \\int\n", + " dE}_{\\text{filters}} \\underbrace{f(\\mathbf{r}, \\mathbf{\\Omega},\n", + " E)}_{\\text{scores}} \\underbrace{\\psi (\\mathbf{r}, \\mathbf{\\Omega}, E)}_{\\text{angular flux}}\n", + "$$\n", + "\n", + "where filters set the limits of the integrals and the scoring function is convolved with particle information (e.g. reaction type, current material, etc.). For example, if you wanted to calculate the fission reaction rate caused by fast neutrons in cell 3, your tally becomes\n", + "\n", + "$$ \n", + " X = \\int_\\text{cell 3} d\\mathbf{r} \\int_{4\\pi} d\\mathbf{\\Omega} \\int_{1 MeV}^{20 MeV}\n", + " dE \\ \\ \\Sigma_f(\\mathbf{r}, \\mathbf{\\Omega},\n", + " E) \\psi (\\mathbf{r}, \\mathbf{\\Omega}, E)\n", + "$$\n", + "\n", + "
\n", + "A full list of scores and their meanings can be found here.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this exercise we'll be adding tallies to perform a few different tasks:\n", + "\n", + "\n", + " **1. Determine the energy and heat produced per fission** \\\n", + " **2. Plot the flux spectrum of the pincell** \\\n", + " **3. Plot reaction types based on material**\n", + " \n", + "First, to determine the recoverable energy produced per fission we'll create a tally without filters to gather information on the fission reaction rate (\"`fission`\") and recoverable fission energy (\"`kappa-fission`\"). Because we want this information talllied throughout the model, a \"global\" tally, no filters need to be applied." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Task 1: Energy released per fission" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t1\n", + "\tName =\t\n", + "\tFilters =\t\n", + "\tNuclides =\t\n", + "\tScores =\t['fission', 'kappa-fission']\n", + "\tEstimator =\tNone\n", + "\tMultiply dens. =\tTrue\n" + ] + } + ], + "source": [ + "tally1 = openmc.Tally()\n", + "tally1.scores = ['fission', 'kappa-fission']\n", + "print(fission_tally)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "model.tallies = openmc.Tallies([tally1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can simply re-run our model with this additional tally." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", + "\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2024 MIT, UChicago Argonne LLC, and contributors\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.14.1-dev\n", + " Git SHA1 | 14ce3cec4b388ae8b7ec5b28db57dbcbff06f147\n", + " Date/Time | 2024-03-28 08:38:59\n", + " MPI Processes | 1\n", + " OpenMP Threads | 8\n", + "\n", + " Reading model XML file 'model.xml' ...\n", + " WARNING: Other XML file input(s) are present. These files may be ignored in\n", + " favor of the model.xml file.\n", + " Reading cross sections XML file...\n", + " Reading Zr90 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr90.h5\n", + " Reading Zr91 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr91.h5\n", + " Reading Zr92 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr92.h5\n", + " Reading Zr94 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr94.h5\n", + " Reading Zr96 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr96.h5\n", + " Reading U234 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U234.h5\n", + " Reading U235 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U235.h5\n", + " Reading U238 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U238.h5\n", + " Reading U236 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U236.h5\n", + " Reading O16 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O16.h5\n", + " Reading H1 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H1.h5\n", + " Reading H2 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H2.h5\n", + " Reading O17 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O17.h5\n", + " Reading Pu239 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Pu239.h5\n", + " Reading Si28 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Si28.h5\n", + " Reading c_H_in_H2O from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/c_H_in_H2O.h5\n", + " Minimum neutron data temperature: 250 K\n", + " Maximum neutron data temperature: 2500 K\n", + " Preparing distributed cell instances...\n", + " Writing summary.h5 file...\n", + " Maximum neutron transport energy: 20000000 eV for Zr90\n", + " Initializing source particles...\n", + "\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + "\n", + " Bat./Gen. k Average k\n", + " ========= ======== ====================\n", + " 1/1 1.50315\n", + " 2/1 1.44086\n", + " 3/1 1.46540\n", + " 4/1 1.37107\n", + " 5/1 1.33015\n", + " 6/1 1.48464\n", + " 7/1 1.47998\n", + " 8/1 1.28684\n", + " 9/1 1.45556\n", + " 10/1 1.40944\n", + " 11/1 1.39122\n", + " 12/1 1.32307 1.35714 +/- 0.03407\n", + " 13/1 1.52588 1.41339 +/- 0.05959\n", + " 14/1 1.46026 1.42511 +/- 0.04373\n", + " 15/1 1.41125 1.42233 +/- 0.03399\n", + " 16/1 1.45798 1.42827 +/- 0.02838\n", + " 17/1 1.46100 1.43295 +/- 0.02444\n", + " 18/1 1.42515 1.43197 +/- 0.02119\n", + " 19/1 1.54914 1.44499 +/- 0.02277\n", + " 20/1 1.43623 1.44412 +/- 0.02039\n", + " 21/1 1.40115 1.44021 +/- 0.01885\n", + " 22/1 1.43731 1.43997 +/- 0.01721\n", + " 23/1 1.41573 1.43811 +/- 0.01594\n", + " 24/1 1.46697 1.44017 +/- 0.01490\n", + " 25/1 1.45526 1.44117 +/- 0.01391\n", + " 26/1 1.33933 1.43481 +/- 0.01448\n", + " 27/1 1.42147 1.43402 +/- 0.01363\n", + " 28/1 1.36027 1.42993 +/- 0.01349\n", + " 29/1 1.46546 1.43180 +/- 0.01289\n", + " 30/1 1.45108 1.43276 +/- 0.01227\n", + " 31/1 1.43818 1.43302 +/- 0.01167\n", + " 32/1 1.38295 1.43074 +/- 0.01136\n", + " 33/1 1.42458 1.43048 +/- 0.01086\n", + " 34/1 1.38767 1.42869 +/- 0.01055\n", + " 35/1 1.46454 1.43013 +/- 0.01022\n", + " 36/1 1.45980 1.43127 +/- 0.00988\n", + " 37/1 1.38205 1.42944 +/- 0.00968\n", + " 38/1 1.53672 1.43328 +/- 0.01009\n", + " 39/1 1.47527 1.43472 +/- 0.00984\n", + " 40/1 1.43555 1.43475 +/- 0.00951\n", + " 41/1 1.44548 1.43510 +/- 0.00920\n", + " 42/1 1.44951 1.43555 +/- 0.00892\n", + " 43/1 1.41298 1.43486 +/- 0.00867\n", + " 44/1 1.43609 1.43490 +/- 0.00841\n", + " 45/1 1.41570 1.43435 +/- 0.00819\n", + " 46/1 1.43178 1.43428 +/- 0.00796\n", + " 47/1 1.45867 1.43494 +/- 0.00777\n", + " 48/1 1.44260 1.43514 +/- 0.00756\n", + " 49/1 1.42229 1.43481 +/- 0.00737\n", + " 50/1 1.38440 1.43355 +/- 0.00730\n", + " 51/1 1.38517 1.43237 +/- 0.00721\n", + " 52/1 1.42319 1.43215 +/- 0.00704\n", + " 53/1 1.43385 1.43219 +/- 0.00688\n", + " 54/1 1.43942 1.43236 +/- 0.00672\n", + " 55/1 1.45598 1.43288 +/- 0.00659\n", + " 56/1 1.50437 1.43444 +/- 0.00663\n", + " 57/1 1.52213 1.43630 +/- 0.00675\n", + " 58/1 1.44465 1.43647 +/- 0.00661\n", + " 59/1 1.37110 1.43514 +/- 0.00661\n", + " 60/1 1.38867 1.43421 +/- 0.00654\n", + " 61/1 1.45708 1.43466 +/- 0.00643\n", + " 62/1 1.48771 1.43568 +/- 0.00639\n", + " 63/1 1.32654 1.43362 +/- 0.00660\n", + " 64/1 1.48374 1.43455 +/- 0.00654\n", + " 65/1 1.36924 1.43336 +/- 0.00653\n", + " 66/1 1.43809 1.43345 +/- 0.00641\n", + " 67/1 1.45191 1.43377 +/- 0.00631\n", + " 68/1 1.40404 1.43326 +/- 0.00622\n", + " 69/1 1.36879 1.43216 +/- 0.00621\n", + " 70/1 1.45560 1.43256 +/- 0.00612\n", + " 71/1 1.46420 1.43307 +/- 0.00604\n", + " 72/1 1.31191 1.43112 +/- 0.00625\n", + " 73/1 1.40955 1.43078 +/- 0.00616\n", + " 74/1 1.39632 1.43024 +/- 0.00609\n", + " 75/1 1.47145 1.43087 +/- 0.00603\n", + " 76/1 1.43759 1.43097 +/- 0.00594\n", + " 77/1 1.50169 1.43203 +/- 0.00594\n", + " 78/1 1.36304 1.43102 +/- 0.00594\n", + " 79/1 1.46648 1.43153 +/- 0.00588\n", + " 80/1 1.46316 1.43198 +/- 0.00581\n", + " 81/1 1.44568 1.43217 +/- 0.00573\n", + " 82/1 1.47623 1.43279 +/- 0.00568\n", + " 83/1 1.40690 1.43243 +/- 0.00562\n", + " 84/1 1.43895 1.43252 +/- 0.00554\n", + " 85/1 1.42947 1.43248 +/- 0.00547\n", + " 86/1 1.35926 1.43152 +/- 0.00548\n", + " 87/1 1.41580 1.43131 +/- 0.00541\n", + " 88/1 1.40517 1.43098 +/- 0.00535\n", + " 89/1 1.40848 1.43069 +/- 0.00529\n", + " 90/1 1.50568 1.43163 +/- 0.00531\n", + " 91/1 1.49946 1.43247 +/- 0.00531\n", + " 92/1 1.41449 1.43225 +/- 0.00525\n", + " 93/1 1.50841 1.43317 +/- 0.00527\n", + " 94/1 1.48296 1.43376 +/- 0.00524\n", + " 95/1 1.43579 1.43378 +/- 0.00517\n", + " 96/1 1.37100 1.43305 +/- 0.00517\n", + " 97/1 1.53292 1.43420 +/- 0.00523\n", + " 98/1 1.47074 1.43461 +/- 0.00519\n", + " 99/1 1.38857 1.43410 +/- 0.00516\n", + " 100/1 1.35518 1.43322 +/- 0.00517\n", + " Creating state point statepoint.100.h5...\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 3.5794e+00 seconds\n", + " Reading cross sections = 3.4540e+00 seconds\n", + " Total time in simulation = 1.4620e+00 seconds\n", + " Time in transport only = 1.4332e+00 seconds\n", + " Time in inactive batches = 1.5215e-01 seconds\n", + " Time in active batches = 1.3098e+00 seconds\n", + " Time synchronizing fission bank = 8.7840e-03 seconds\n", + " Sampling source sites = 5.3407e-03 seconds\n", + " SEND/RECV source sites = 8.4401e-04 seconds\n", + " Time accumulating tallies = 4.6549e-03 seconds\n", + " Time writing statepoints = 1.1438e-02 seconds\n", + " Total time for finalization = 2.5647e-04 seconds\n", + " Total time elapsed = 5.0519e+00 seconds\n", + " Calculation Rate (inactive) = 65725.8 particles/second\n", + " Calculation Rate (active) = 68711.2 particles/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.42977 +/- 0.00417\n", + " k-effective (Track-length) = 1.43322 +/- 0.00517\n", + " k-effective (Absorption) = 1.42387 +/- 0.00288\n", + " Combined k-effective = 1.42566 +/- 0.00277\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + } + ], + "source": [ + "statepoint = model.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we list our current directory, we see that several new files have been created as a result of this run: `summary.h5`, `tallies.out`, and `statepoint.50.h5`. The `tallies.out` file contains a text output of all user-specified tallies for the simulation. The summary file contains information about the simulation's setup (geometry, materials, meshes, etc.) in an HDF5 format." + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ============================> TALLY 2 <============================\r\n", + "\r\n", + " Total Material\r\n", + " Fission Rate 0.583959 +/- 0.00211703\r\n", + " Kappa-Fission Rate 1.13055e+08 +/- 409549\r\n" + ] + } + ], + "source": [ + "!cat tallies.out" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This can be useful to quickly look at simple tally results, but isn't a great format to post-process simulation data. For that we'll look to the statepoint file. The statepoint file contains information about simulation results including tally specifications and data." + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/anovak/projects/openmc/statepoint.100.h5\n" + ] + } + ], + "source": [ + "print(statepoint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To extract information from the statepoint file we'll create an `openmc.StatePoint` object. The `statepoint.get_tally` function will search for tallies by scores, filters, nuclides, ids, and return the closest match. Exact matches can be speficied as well." + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t2\n", + "\tName =\t\n", + "\tFilters =\t\n", + "\tNuclides =\ttotal\n", + "\tScores =\t['fission', 'kappa-fission']\n", + "\tEstimator =\ttracklength\n", + "\tMultiply dens. =\tTrue\n", + "Tally\n", + "\tID =\t2\n", + "\tName =\t\n", + "\tFilters =\t\n", + "\tNuclides =\ttotal\n", + "\tScores =\t['fission', 'kappa-fission']\n", + "\tEstimator =\ttracklength\n", + "\tMultiply dens. =\tTrue\n" + ] + } + ], + "source": [ + "with openmc.StatePoint(statepoint) as sp:\n", + " my_tally = sp.get_tally(scores=['fission', 'kappa-fission'])\n", + " print(my_tally)\n", + " \n", + " my_tally = sp.get_tally(id=tally1.id)\n", + " print(my_tally)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "A quick aside on how statepoint objects interact with summary files:\n", + "\n", + "\n", + "The `openmc.statepoint` object will read information from the `summary.h5` file if one is present, keeping that file open in the Python interpreter. The open `summary.h5` file can interfere with the initialization of subsequent OpenMC simulations. It is recommended that information be extracted from statepoints within a [context manager](https://book.pythontips.com/en/latest/context_managers.html) as we do here. Alternatively, making sure to call the `openmc.StatePoint.close` method will work also. For more details please look to the [relevant section in the user's guide](https://docs.openmc.org/en/stable/usersguide/troubleshoot.html#runtimeerror-failed-to-open-hdf5-file-with-mode-w-summary-h5). \n", + "
\n", + "\n", + "To compute the energy released per fission event, we can simply take the tallied energy released per fission and divide it by the fission rate." + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [], + "source": [ + "#my_tally.get_values" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MeV per fission: 193.60140510889929\n" + ] + } + ], + "source": [ + "fission_rate = my_tally.get_values(scores=['fission']).flatten()[0]\n", + "kappa_fission_rate = my_tally.get_values(scores=['kappa-fission']).flatten()[0]\n", + "ev_per_fission = kappa_fission_rate / fission_rate\n", + "mev_per_fission = ev_per_fission * 1e-6\n", + "print('MeV per fission: ', mev_per_fission)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MeV per fission: 193.601405+/-0.992210\n" + ] + } + ], + "source": [ + "fission_rate_std_dev = my_tally.get_values(scores=['fission'], value='std_dev').flatten()[0]\n", + "kappa_fission_rate_std_dev = my_tally.get_values(scores=['kappa-fission'],value='std_dev').flatten()[0]\n", + "\n", + "from uncertainties import ufloat\n", + "f = ufloat(fission_rate, fission_rate_std_dev) \n", + "kf = ufloat(kappa_fission_rate, kappa_fission_rate_std_dev) \n", + "\n", + "print('MeV per fission: {:.6f}'.format(kf / f * 1e-6))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As with most values coming out of an MC code, these values are per source-particle. In this case these units cancel out, but this will not be the case in our next example." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Task 2: Plot the neutron flux spectrum\n", + "\n", + "To perform this task, we'll be applying a tally with an energy filter and a score. OpenMC's data module contains different group structures. For this problem we'll use the CASMO-70 group structure. An energy filter can easily be created from a pre-defined group structure in OpenMC as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['CASMO-2', 'CASMO-4', 'CASMO-8', 'CASMO-16', 'CASMO-25', 'CASMO-40', 'VITAMIN-J-42', 'SCALE-44', 'MPACT-51', 'MPACT-60', 'MPACT-69', 'CASMO-70', 'XMAS-172', 'VITAMIN-J-175', 'SCALE-252', 'TRIPOLI-315', 'SHEM-361', 'CCFE-709', 'UKAEA-1102', 'ECCO-1968'])\n" + ] + } + ], + "source": [ + "print(openmc.mgxs.GROUP_STRUCTURES.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "energy_filter = openmc.EnergyFilter.from_group_structure('CASMO-70')\n", + "len(energy_filter.bins)" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [], + "source": [ + "spectrum_tally = openmc.Tally()\n", + "spectrum_tally.filters = [energy_filter]\n", + "spectrum_tally.scores = ['flux']" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", + "\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2024 MIT, UChicago Argonne LLC, and contributors\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.14.1-dev\n", + " Git SHA1 | 14ce3cec4b388ae8b7ec5b28db57dbcbff06f147\n", + " Date/Time | 2024-03-28 08:54:57\n", + " MPI Processes | 1\n", + " OpenMP Threads | 8\n", + "\n", + " Reading model XML file 'model.xml' ...\n", + " WARNING: Other XML file input(s) are present. These files may be ignored in\n", + " favor of the model.xml file.\n", + " Reading cross sections XML file...\n", + " Reading Zr90 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr90.h5\n", + " Reading Zr91 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr91.h5\n", + " Reading Zr92 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr92.h5\n", + " Reading Zr94 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr94.h5\n", + " Reading Zr96 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr96.h5\n", + " Reading U234 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U234.h5\n", + " Reading U235 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U235.h5\n", + " Reading U238 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U238.h5\n", + " Reading U236 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U236.h5\n", + " Reading O16 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O16.h5\n", + " Reading H1 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H1.h5\n", + " Reading H2 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H2.h5\n", + " Reading O17 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O17.h5\n", + " Reading Pu239 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Pu239.h5\n", + " Reading Si28 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Si28.h5\n", + " Reading c_H_in_H2O from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/c_H_in_H2O.h5\n", + " Minimum neutron data temperature: 250 K\n", + " Maximum neutron data temperature: 2500 K\n", + " Preparing distributed cell instances...\n", + " Writing summary.h5 file...\n", + " Maximum neutron transport energy: 20000000 eV for Zr90\n", + " Initializing source particles...\n", + "\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + "\n", + " Bat./Gen. k Average k\n", + " ========= ======== ====================\n", + " 1/1 1.50315\n", + " 2/1 1.44086\n", + " 3/1 1.46540\n", + " 4/1 1.37107\n", + " 5/1 1.33015\n", + " 6/1 1.48464\n", + " 7/1 1.47998\n", + " 8/1 1.28684\n", + " 9/1 1.45556\n", + " 10/1 1.40944\n", + " 11/1 1.39122\n", + " 12/1 1.32307 1.35714 +/- 0.03407\n", + " 13/1 1.52588 1.41339 +/- 0.05959\n", + " 14/1 1.46026 1.42511 +/- 0.04373\n", + " 15/1 1.41125 1.42233 +/- 0.03399\n", + " 16/1 1.45798 1.42827 +/- 0.02838\n", + " 17/1 1.46100 1.43295 +/- 0.02444\n", + " 18/1 1.42515 1.43197 +/- 0.02119\n", + " 19/1 1.54914 1.44499 +/- 0.02277\n", + " 20/1 1.43623 1.44412 +/- 0.02039\n", + " 21/1 1.40115 1.44021 +/- 0.01885\n", + " 22/1 1.43731 1.43997 +/- 0.01721\n", + " 23/1 1.41573 1.43811 +/- 0.01594\n", + " 24/1 1.46697 1.44017 +/- 0.01490\n", + " 25/1 1.45526 1.44117 +/- 0.01391\n", + " 26/1 1.33933 1.43481 +/- 0.01448\n", + " 27/1 1.42147 1.43402 +/- 0.01363\n", + " 28/1 1.36027 1.42993 +/- 0.01349\n", + " 29/1 1.46546 1.43180 +/- 0.01289\n", + " 30/1 1.45108 1.43276 +/- 0.01227\n", + " 31/1 1.43818 1.43302 +/- 0.01167\n", + " 32/1 1.38295 1.43074 +/- 0.01136\n", + " 33/1 1.42458 1.43048 +/- 0.01086\n", + " 34/1 1.38767 1.42869 +/- 0.01055\n", + " 35/1 1.46454 1.43013 +/- 0.01022\n", + " 36/1 1.45980 1.43127 +/- 0.00988\n", + " 37/1 1.38205 1.42944 +/- 0.00968\n", + " 38/1 1.53672 1.43328 +/- 0.01009\n", + " 39/1 1.47527 1.43472 +/- 0.00984\n", + " 40/1 1.43555 1.43475 +/- 0.00951\n", + " 41/1 1.44548 1.43510 +/- 0.00920\n", + " 42/1 1.44951 1.43555 +/- 0.00892\n", + " 43/1 1.41298 1.43486 +/- 0.00867\n", + " 44/1 1.43609 1.43490 +/- 0.00841\n", + " 45/1 1.41570 1.43435 +/- 0.00819\n", + " 46/1 1.43178 1.43428 +/- 0.00796\n", + " 47/1 1.45867 1.43494 +/- 0.00777\n", + " 48/1 1.44260 1.43514 +/- 0.00756\n", + " 49/1 1.42229 1.43481 +/- 0.00737\n", + " 50/1 1.38440 1.43355 +/- 0.00730\n", + " 51/1 1.38517 1.43237 +/- 0.00721\n", + " 52/1 1.42319 1.43215 +/- 0.00704\n", + " 53/1 1.43385 1.43219 +/- 0.00688\n", + " 54/1 1.43942 1.43236 +/- 0.00672\n", + " 55/1 1.45598 1.43288 +/- 0.00659\n", + " 56/1 1.50437 1.43444 +/- 0.00663\n", + " 57/1 1.52213 1.43630 +/- 0.00675\n", + " 58/1 1.44465 1.43647 +/- 0.00661\n", + " 59/1 1.37110 1.43514 +/- 0.00661\n", + " 60/1 1.38867 1.43421 +/- 0.00654\n", + " 61/1 1.45708 1.43466 +/- 0.00643\n", + " 62/1 1.48771 1.43568 +/- 0.00639\n", + " 63/1 1.32654 1.43362 +/- 0.00660\n", + " 64/1 1.48374 1.43455 +/- 0.00654\n", + " 65/1 1.36924 1.43336 +/- 0.00653\n", + " 66/1 1.43809 1.43345 +/- 0.00641\n", + " 67/1 1.45191 1.43377 +/- 0.00631\n", + " 68/1 1.40404 1.43326 +/- 0.00622\n", + " 69/1 1.36879 1.43216 +/- 0.00621\n", + " 70/1 1.45560 1.43256 +/- 0.00612\n", + " 71/1 1.46420 1.43307 +/- 0.00604\n", + " 72/1 1.31191 1.43112 +/- 0.00625\n", + " 73/1 1.40955 1.43078 +/- 0.00616\n", + " 74/1 1.39632 1.43024 +/- 0.00609\n", + " 75/1 1.47145 1.43087 +/- 0.00603\n", + " 76/1 1.43759 1.43097 +/- 0.00594\n", + " 77/1 1.50169 1.43203 +/- 0.00594\n", + " 78/1 1.36304 1.43102 +/- 0.00594\n", + " 79/1 1.46648 1.43153 +/- 0.00588\n", + " 80/1 1.46316 1.43198 +/- 0.00581\n", + " 81/1 1.44568 1.43217 +/- 0.00573\n", + " 82/1 1.47623 1.43279 +/- 0.00568\n", + " 83/1 1.40690 1.43243 +/- 0.00562\n", + " 84/1 1.43895 1.43252 +/- 0.00554\n", + " 85/1 1.42947 1.43248 +/- 0.00547\n", + " 86/1 1.35926 1.43152 +/- 0.00548\n", + " 87/1 1.41580 1.43131 +/- 0.00541\n", + " 88/1 1.40517 1.43098 +/- 0.00535\n", + " 89/1 1.40848 1.43069 +/- 0.00529\n", + " 90/1 1.50568 1.43163 +/- 0.00531\n", + " 91/1 1.49946 1.43247 +/- 0.00531\n", + " 92/1 1.41449 1.43225 +/- 0.00525\n", + " 93/1 1.50841 1.43317 +/- 0.00527\n", + " 94/1 1.48296 1.43376 +/- 0.00524\n", + " 95/1 1.43579 1.43378 +/- 0.00517\n", + " 96/1 1.37100 1.43305 +/- 0.00517\n", + " 97/1 1.53292 1.43420 +/- 0.00523\n", + " 98/1 1.47074 1.43461 +/- 0.00519\n", + " 99/1 1.38857 1.43410 +/- 0.00516\n", + " 100/1 1.35518 1.43322 +/- 0.00517\n", + " Creating state point statepoint.100.h5...\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 3.6484e+00 seconds\n", + " Reading cross sections = 3.5290e+00 seconds\n", + " Total time in simulation = 1.8423e+00 seconds\n", + " Time in transport only = 1.8148e+00 seconds\n", + " Time in inactive batches = 1.5020e-01 seconds\n", + " Time in active batches = 1.6921e+00 seconds\n", + " Time synchronizing fission bank = 6.6158e-03 seconds\n", + " Sampling source sites = 5.1956e-03 seconds\n", + " SEND/RECV source sites = 5.7826e-04 seconds\n", + " Time accumulating tallies = 9.0792e-03 seconds\n", + " Time writing statepoints = 7.7347e-03 seconds\n", + " Total time for finalization = 5.8276e-04 seconds\n", + " Total time elapsed = 5.5023e+00 seconds\n", + " Calculation Rate (inactive) = 66578.2 particles/second\n", + " Calculation Rate (active) = 53189.2 particles/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.42977 +/- 0.00417\n", + " k-effective (Track-length) = 1.43322 +/- 0.00517\n", + " k-effective (Absorption) = 1.42387 +/- 0.00288\n", + " Combined k-effective = 1.42566 +/- 0.00277\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + } + ], + "source": [ + "model.tallies += [spectrum_tally]\n", + "statepoint = model.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ============================> TALLY 2 <============================\r\n", + "\r\n", + " Total Material\r\n", + " Fission Rate 0.583959 +/- 0.00211703\r\n", + " Kappa-Fission Rate 1.13055e+08 +/- 409549\r\n", + " ============================> TALLY 3 <============================\r\n", + "\r\n", + " Incoming Energy [0, 0.005)\r\n", + " Total Material\r\n", + " Flux 0.0457132 +/- 0.000665709\r\n", + " Incoming Energy [0.005, 0.01)\r\n", + " Total Material\r\n", + " Flux 0.121345 +/- 0.00151265\r\n", + " Incoming Energy [0.01, 0.015)\r\n", + " Total Material\r\n", + " Flux 0.176171 +/- 0.00166044\r\n", + " Incoming Energy [0.015, 0.02)\r\n", + " Total Material\r\n", + " Flux 0.215397 +/- 0.00181564\r\n", + " Incoming Energy [0.02, 0.025)\r\n", + " Total Material\r\n", + " Flux 0.238796 +/- 0.00196328\r\n", + " Incoming Energy [0.025, 0.03)\r\n", + " Total Material\r\n", + " Flux 0.255138 +/- 0.00239468\r\n", + " Incoming Energy [0.03, 0.035)\r\n", + " Total Material\r\n", + " Flux 0.260194 +/- 0.00240036\r\n", + " Incoming Energy [0.035, 0.042)\r\n", + " Total Material\r\n", + " Flux 0.357447 +/- 0.00283636\r\n", + " Incoming Energy [0.042, 0.05)\r\n", + " Total Material\r\n", + " Flux 0.386343 +/- 0.0028299\r\n", + " Incoming Energy [0.05, 0.058)\r\n", + " Total Material\r\n", + " Flux 0.351923 +/- 0.00286945\r\n", + " Incoming Energy [0.058, 0.067)\r\n", + " Total Material\r\n", + " Flux 0.355783 +/- 0.00311098\r\n", + " Incoming Energy [0.067, 0.08)\r\n", + " Total Material\r\n", + " Flux 0.435068 +/- 0.00329774\r\n", + " Incoming Energy [0.08, 0.1)\r\n", + " Total Material\r\n", + " Flux 0.504332 +/- 0.00435987\r\n", + " Incoming Energy [0.1, 0.14)\r\n", + " Total Material\r\n", + " Flux 0.624721 +/- 0.00480502\r\n", + " Incoming Energy [0.14, 0.18)\r\n", + " Total Material\r\n", + " Flux 0.35522 +/- 0.00303135\r\n", + " Incoming Energy [0.18, 0.22)\r\n", + " Total Material\r\n", + " Flux 0.242114 +/- 0.00280216\r\n", + " Incoming Energy [0.22, 0.25)\r\n", + " Total Material\r\n", + " Flux 0.136181 +/- 0.00194256\r\n", + " Incoming Energy [0.25, 0.28)\r\n", + " Total Material\r\n", + " Flux 0.119005 +/- 0.00194559\r\n", + " Incoming Energy [0.28, 0.3)\r\n", + " Total Material\r\n", + " Flux 0.0708186 +/- 0.00136268\r\n", + " Incoming Energy [0.3, 0.32)\r\n", + " Total Material\r\n", + " Flux 0.0661959 +/- 0.00103992\r\n", + " Incoming Energy [0.32, 0.35)\r\n", + " Total Material\r\n", + " Flux 0.0926505 +/- 0.00131443\r\n", + " Incoming Energy [0.35, 0.4)\r\n", + " Total Material\r\n", + " Flux 0.135609 +/- 0.0019383\r\n", + " Incoming Energy [0.4, 0.5)\r\n", + " Total Material\r\n", + " Flux 0.228263 +/- 0.00268684\r\n", + " Incoming Energy [0.5, 0.625)\r\n", + " Total Material\r\n", + " Flux 0.224994 +/- 0.0027346\r\n", + " Incoming Energy [0.625, 0.78)\r\n", + " Total Material\r\n", + " Flux 0.218064 +/- 0.0024646\r\n", + " Incoming Energy [0.78, 0.85)\r\n", + " Total Material\r\n", + " Flux 0.0857895 +/- 0.00181791\r\n", + " Incoming Energy [0.85, 0.91)\r\n", + " Total Material\r\n", + " Flux 0.0674892 +/- 0.00129585\r\n", + " Incoming Energy [0.91, 0.95)\r\n", + " Total Material\r\n", + " Flux 0.0419293 +/- 0.00116542\r\n", + " Incoming Energy [0.95, 0.972)\r\n", + " Total Material\r\n", + " Flux 0.0220668 +/- 0.000753052\r\n", + " Incoming Energy [0.972, 0.996)\r\n", + " Total Material\r\n", + " Flux 0.0248529 +/- 0.000713279\r\n", + " Incoming Energy [0.996, 1.02)\r\n", + " Total Material\r\n", + " Flux 0.0225922 +/- 0.000701955\r\n", + " Incoming Energy [1.02, 1.045)\r\n", + " Total Material\r\n", + " Flux 0.0247299 +/- 0.00076446\r\n", + " Incoming Energy [1.045, 1.071)\r\n", + " Total Material\r\n", + " Flux 0.0238825 +/- 0.000775237\r\n", + " Incoming Energy [1.071, 1.097)\r\n", + " Total Material\r\n", + " Flux 0.0233194 +/- 0.000792152\r\n", + " Incoming Energy [1.097, 1.123)\r\n", + " Total Material\r\n", + " Flux 0.0219652 +/- 0.000706266\r\n", + " Incoming Energy [1.123, 1.15)\r\n", + " Total Material\r\n", + " Flux 0.0234541 +/- 0.000771358\r\n", + " Incoming Energy [1.15, 1.3)\r\n", + " Total Material\r\n", + " Flux 0.116536 +/- 0.0017112\r\n", + " Incoming Energy [1.3, 1.5)\r\n", + " Total Material\r\n", + " Flux 0.139539 +/- 0.00207028\r\n", + " Incoming Energy [1.5, 1.855)\r\n", + " Total Material\r\n", + " Flux 0.201492 +/- 0.00264494\r\n", + " Incoming Energy [1.855, 2.1)\r\n", + " Total Material\r\n", + " Flux 0.118973 +/- 0.00179859\r\n", + " Incoming Energy [2.1, 2.6)\r\n", + " Total Material\r\n", + " Flux 0.202105 +/- 0.00243999\r\n", + " Incoming Energy [2.6, 3.3)\r\n", + " Total Material\r\n", + " Flux 0.223786 +/- 0.00248979\r\n", + " Incoming Energy [3.3, 4)\r\n", + " Total Material\r\n", + " Flux 0.177848 +/- 0.00218799\r\n", + " Incoming Energy [4, 9.877)\r\n", + " Total Material\r\n", + " Flux 0.782978 +/- 0.0050225\r\n", + " Incoming Energy [9.877, 15.968)\r\n", + " Total Material\r\n", + " Flux 0.469465 +/- 0.00376136\r\n", + " Incoming Energy [15.968, 27.7)\r\n", + " Total Material\r\n", + " Flux 0.523777 +/- 0.00440013\r\n", + " Incoming Energy [27.7, 48.052)\r\n", + " Total Material\r\n", + " Flux 0.551735 +/- 0.00406001\r\n", + " Incoming Energy [48.052, 75.501)\r\n", + " Total Material\r\n", + " Flux 0.482261 +/- 0.00452307\r\n", + " Incoming Energy [75.501, 148.73)\r\n", + " Total Material\r\n", + " Flux 0.729614 +/- 0.00452232\r\n", + " Incoming Energy [148.73, 367.26)\r\n", + " Total Material\r\n", + " Flux 1.01315 +/- 0.00512937\r\n", + " Incoming Energy [367.26, 906.9)\r\n", + " Total Material\r\n", + " Flux 1.05411 +/- 0.00574298\r\n", + " Incoming Energy [906.9, 1425.1)\r\n", + " Total Material\r\n", + " Flux 0.52881 +/- 0.00422664\r\n", + " Incoming Energy [1425.1, 2239.5)\r\n", + " Total Material\r\n", + " Flux 0.538953 +/- 0.00408559\r\n", + " Incoming Energy [2239.5, 3519.1)\r\n", + " Total Material\r\n", + " Flux 0.543494 +/- 0.00430556\r\n", + " Incoming Energy [3519.1, 5530)\r\n", + " Total Material\r\n", + " Flux 0.555689 +/- 0.00395481\r\n", + " Incoming Energy [5530, 9118)\r\n", + " Total Material\r\n", + " Flux 0.634656 +/- 0.00453753\r\n", + " Incoming Energy [9118, 15030)\r\n", + " Total Material\r\n", + " Flux 0.658286 +/- 0.00462372\r\n", + " Incoming Energy [15030, 24780)\r\n", + " Total Material\r\n", + " Flux 0.689589 +/- 0.00546574\r\n", + " Incoming Energy [24780, 40850)\r\n", + " Total Material\r\n", + " Flux 0.737437 +/- 0.0056548\r\n", + " Incoming Energy [40850, 67340)\r\n", + " Total Material\r\n", + " Flux 0.827757 +/- 0.00606116\r\n", + " Incoming Energy [67340, 111000)\r\n", + " Total Material\r\n", + " Flux 0.961624 +/- 0.00743421\r\n", + " Incoming Energy [111000, 183000)\r\n", + " Total Material\r\n", + " Flux 1.1839 +/- 0.00705451\r\n", + " Incoming Energy [183000, 302500)\r\n", + " Total Material\r\n", + " Flux 1.53502 +/- 0.0102138\r\n", + " Incoming Energy [302500, 500000)\r\n", + " Total Material\r\n", + " Flux 1.74887 +/- 0.0117573\r\n", + " Incoming Energy [500000, 821000)\r\n", + " Total Material\r\n", + " Flux 2.57364 +/- 0.0160141\r\n", + " Incoming Energy [821000, 1353000)\r\n", + " Total Material\r\n", + " Flux 2.43281 +/- 0.0186327\r\n", + " Incoming Energy [1353000, 2231000)\r\n", + " Total Material\r\n", + " Flux 2.63484 +/- 0.0194829\r\n", + " Incoming Energy [2231000, 3679000)\r\n", + " Total Material\r\n", + " Flux 2.42532 +/- 0.0198481\r\n", + " Incoming Energy [3679000, 6065500)\r\n", + " Total Material\r\n", + " Flux 1.22594 +/- 0.0159079\r\n", + " Incoming Energy [6065500, 20000000)\r\n", + " Total Material\r\n", + " Flux 0.301658 +/- 0.00830272\r\n" + ] + } + ], + "source": [ + "!cat tallies.out" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "with openmc.StatePoint(statepoint) as sp:\n", + " tally = sp.get_tally(id=spectrum_tally.id)\n", + " tally = sp.get_tally(scores=['flux'])\n", + " tally = sp.get_tally(filters=spectrum_tally.filters)" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "values = tally.get_values(scores=['flux']).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAG1CAYAAAAV2Js8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1FUlEQVR4nO3deXRUVb728acSMkNCGBoShoCAIiRhMAQCrQwdQCYVpBlEZVAExQFYl1dwQEURaW3kClxQ72rAvspFbETEBloQBJUrhDEhLUNLhwgSOhISkkASw3n/UKopMlUlNaXO97NWrWWdOqfOLzmx6mHvffa2GIZhCAAAwIT8PF0AAACApxCEAACAaRGEAACAaRGEAACAaRGEAACAaRGEAACAaRGEAACAaRGEAACAadXxdAHe6urVqzp79qzq1asni8Xi6XIAAIAdDMPQpUuXFB0dLT+/qtt7CEIVOHv2rFq0aOHpMgAAQDVkZmaqefPmVe5HEKpAvXr1JP3yiwwPD/dwNQAAwB55eXlq0aKF9Xu8KgShClzrDgsPDycIAQBQy9g7rIXB0gAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLRYawwAAB9hGIYul5TatW9IgL/d63H5MoIQAAA+wDAMjVyxR/szcuzaPyEmUuumJpk+DNXKrrFdu3Zp2LBhio6OlsVi0YYNG6yvlZSU6Omnn1ZcXJzCwsIUHR2tBx98UGfPnvVcwQAAuNjlklK7Q5AkpWTk2N165MtqZYtQQUGBOnXqpEmTJmnEiBE2rxUWFurAgQN6/vnn1alTJ+Xk5Oipp57SXXfdpZSUFA9VDACA+6Q8l6zQQP9yXyssLlXCK9vcXJH3qpVBaNCgQRo0aFC5r0VEROjzzz+32bZ06VIlJibq9OnTatmypTtKBADAY0ID/RUaWCu/4t3OFL+l3NxcWSwW1a9fv8J9ioqKVFRUZH2el5fnhsoAAGbkyKBmiYHNruTzQejKlSt6+umnNXbsWIWHh1e434IFC/TSSy+5sTIAgBk5OqhZYmCzK9XKwdL2Kikp0ahRo2QYhpYvX17pvnPmzFFubq71kZmZ6aYqAQBm4uigZomBza7ksy1C10JQRkaGvvjii0pbgyQpKChIQUFBbqoOAIDKBzVLDGx2B58MQtdC0IkTJ7Rjxw41bNjQ0yUBAFAGg5o9r1b+9vPz83Xy5Enr81OnTunQoUNq0KCBoqKiNHLkSB04cECbNm1SaWmpzp07J0lq0KCBAgMDPVU2AADwMrUyCKWkpKhv377W5zNnzpQkjR8/Xi+++KI2btwoSercubPNcTt27FCfPn3cVSYAAPBytTII9enTR4ZhVPh6Za8BAABc49N3jQEAAFSGIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyLIAQAAEyrVq4+DwCA2RQWl9bodZSPIAQAQC2Q8Mo2p7+nveEpJMBfFovF6ef3BgQhAAC8VEiAvxJiIpWSkWP3MQkxkQoJ8LdvXzvDVUJMpNZNTfLJMEQQAgDAS1ksFq2bmqTLJfZ3e1XVelOdcJWSkaPLJaUKDfS92OB7PxEAAD7EYrE4NYA4Eq4Ki0td0iXnTQhCAACYjLPDVW3G7fMAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0amUQ2rVrl4YNG6bo6GhZLBZt2LDB5nXDMDR37lxFRUUpJCREycnJOnHihGeKBQAAXqtWBqGCggJ16tRJy5YtK/f1P/zhD3rrrbe0YsUKffvttwoLC9PAgQN15coVN1cKAAC8WR1PF1AdgwYN0qBBg8p9zTAMLV68WM8995zuvvtuSdJ7772nJk2aaMOGDRozZow7SwUAAF6sVrYIVebUqVM6d+6ckpOTrdsiIiLUvXt37dmzp8LjioqKlJeXZ/MAAAC+zeeC0Llz5yRJTZo0sdnepEkT62vlWbBggSIiIqyPFi1auLROAADgeT4XhKprzpw5ys3NtT4yMzM9XRIAAHAxnwtCTZs2lSRlZWXZbM/KyrK+Vp6goCCFh4fbPAAAgG/zuSDUunVrNW3aVNu3b7duy8vL07fffqukpCQPVgYAALxNrbxrLD8/XydPnrQ+P3XqlA4dOqQGDRqoZcuWmj59ul555RW1a9dOrVu31vPPP6/o6Gjdc889nisaAAB4nVoZhFJSUtS3b1/r85kzZ0qSxo8fr1WrVun//b//p4KCAj3yyCO6ePGifvvb32rLli0KDg72VMkAAMAL1cog1KdPHxmGUeHrFotF8+bN07x589xYFQAAqG18bowQAACAvQhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtOo4881KSkp07tw5FRYWqnHjxmrQoIEz3x4AAMCpatwidOnSJS1fvly9e/dWeHi4WrVqpVtvvVWNGzdWTEyMJk+erH379jmjVgAAAKeqURBatGiRWrVqpZUrVyo5OVkbNmzQoUOHdPz4ce3Zs0cvvPCCfv75Zw0YMEB33nmnTpw44ay6AQAAaqxGXWP79u3Trl271LFjx3JfT0xM1KRJk7RixQqtXLlSu3fvVrt27WpySgAAAKepUYvQmjVrKgxB1wsKCtLUqVM1adKkmpzOIaWlpXr++efVunVrhYSEqE2bNnr55ZdlGIbbagAAAN7NqYOlr+fv76/S0lJXvX2VFi5cqOXLl2v16tXq2LGjUlJSNHHiREVEROjJJ5/0WF0AAN9kGIYul1T9vVdY7LnvRpTlsiDk6ZaXb775RnfffbeGDBkiSWrVqpXWrFmjvXv3erQuAIDvMQxDI1fs0f6MHE+XAge5bB4hi8Vi8zw7O1uvvvqqXn/9dVed0kbPnj21fft2HT9+XJJ0+PBhffXVVxo0aFC5+xcVFSkvL8/mAQCAPS6XlDocghJiIhUS4O+iimAvl7UI3WjkyJEaO3as3nrrLc2aNUupqal6//339dprr7nkfLNnz1ZeXp7at29v7aabP3++xo0bV+7+CxYs0EsvveSSWgAA5pHyXLJCA6sOOCEB/mUaDeB+bptZuqCgQFOmTFFgYKAkKS4uTlu3bnXZ+T788EO9//77+uCDD3TgwAGtXr1ab7zxhlavXl3u/nPmzFFubq71kZmZ6bLaAAC+KzTQX6GBdap8EIK8g9tahJo0aaKzZ8/aXPgrV6647HyzZs3S7NmzNWbMGEm/BK+MjAwtWLBA48ePL7N/UFCQgoKCXFYPAADwPm4LQosXL9aECRN0/vx5rV27Vlu2bFH79u1ddr7CwkL5+dk2ePn7++vq1asuOycAAKhdXB6Epk+frk6dOik+Pl4fffSRtmzZorS0NHXr1k0TJkxw2XmHDRum+fPnq2XLlurYsaMOHjyoRYsWuXUuIwAA4N1cHoT69eunI0eOaPPmzUpPT5ckdezYUUFBQdq+fbuGDRvmkvMuWbJEzz//vB577DGdP39e0dHRmjJliubOneuS8wEAgNrH5UHorrvu0l133WV9fuXKFaWlpenIkSP64osvXBaE6tWrp8WLF2vx4sUueX8AAFD7uW2M0A8//KCoqCgFBwcrISFBCQkJ7jo1AABAuRy+fX7FihVKTExU//79NXPmTK1cuVIpKSlVHjd48GDl5+dbn+fk5DDLMwAA8CiHW4QWLlyoL774QoZhKC0tTampqfrb3/6mNWvWVH6iOnUUERFhfR4REaFHH31U+/fvd7xqAAAAJ3A4CHXq1ElNmjRRaGiobrrpJpvxP5Vp3ry5du/erdtvv12S5Ofnp+LiYkdPDwAA4DQOB6Fnn31WQ4YM0ZNPPqnu3bsrOjraruOWLFmiIUOGKCkpSYmJiUpNTVXLli0dLhgAAMBZHB4j9OCDD6pDhw7atm2bxowZo5tuukl9+vSp8riYmBgdPHhQ/fv31+nTp3XzzTdr7dq11akZAADAKRxuEapfv76WLVtms+2HH36ocP8333xTM2bM0NGjR9W+fXuNGjVKo0aNcrxSAAAAJ3M4CHXv3l2rVq2ymRW6efPmFe7fuXNnSdKMGTOUkZGhkJAQdezYUXFxcYqNjdXQoUMdLhoAAMAZHA5Cp06d0saNGzVv3jx169ZN8fHxio+Pr3BixL59+0qSfvrpJx07dkyXLl1Senq6UlNTtXTpUoIQAADwGIeD0LJly9S0aVNduXJFR48eVWpqaqVLZXz66adKT09Xfn6+MjMz1aJFC3Xv3l3du3fXkiVLavwDAAAAVJfDQWjw4MHavXu3IiIi1L17d918882Kj4+vcP/Y2FhlZmYqOztbDz74oE6fPq1mzZopKipKAQEBNSoeAACgJhwOQo5OjNi6dWtNnTpV2dnZ1gVPz5w5o4yMDMXGxlazbAAAgJpz+Pb5axMjWt/AjokR/fz89Nlnn1mfN2vWTD179lR4eLijpwcAAHAah1uEli5dqsGDBzs8MWJCQoKWLl2qxx9/vFqFAgAAOJvDLUItW7as1sSIP/zwgxYtWqRWrVrpvvvu04IFC7Rp06ZqFQ0AAOAMDrcISVJAQIDDEyN+8sknkqT8/Hzr3Waff/45t88DAACPqVYQqo6SkhLt3LlTwcHB6tChg7p37+6uUwMAAJSr2kHo3Llzatq0qd37jxgxQlFRUVq/fr0iIyNVWFio+Ph4bd68ubolAAAA1Ei1g9CAAQN05MgRu/c/ffq0Pv30U+3du1eHDh3SsmXLlJGRUd3TAwDgcoZh6HJJaZX7FRZXvQ+8U7WDkGEYDu0fHBwsSQoMDFRxcbGmTZumnj17Vvf0AAC4lGEYGrlij/Zn5Hi6FLhQtYOQxWJxaP8nn3xSFy5c0IgRIzR16lT16tVL2dnZ1T09AAAudbmk1OEQlBATqZAAfxdVBFdw22DpcePGSZJmz56tVatW6ejRo/roo4/cdXoAAKot5blkhQZWHXBCAvwdbiiAZ7ktCB04cEBvvPGGLl68qLi4OD322GNq3bq1u04PAEC1hQb6KzTQbV+ZcCOHJ1S8xt/fsaa/0aNHa+jQoZo/f75uvvlmjRgxQn/729+qe3oAAIAaq3a8PXjwoEP7R0ZG6r777pMkdenSRffcc4/69eunAQMGVLcEAACAGql2i5Cj2rRpoz/+8Y/Wu83q16/vrlMDAACUy21BqKioSMuXL1fLli115513KjY2VsnJyTpz5oy7SgAAALDhcNdYdna23nnnHQUEBGjWrFl2H7d+/XpJUkFBgVJTU3XkyBEdOXJEY8eO1dmzZ3Xy5ElHSwEAAKgRh1uERo4cqYYNG2rVqlWSpNTUVM2ePdvu48PCwtSjRw898sgjWrp0qXbt2kUIAgAAHuFwECooKNCUKVMUGBgoSYqLi9PWrVudXhgAAICrORyEmjRporNnz9pMGHXlyhW7jz937pyjpwQAAHAJh4PQ4sWLNWHCBJ0/f15r167VxIkT1b59e7uP53Z5AADgLRweLN22bVtt2rRJGzZsUGpqqhISEjRx4kS7j3d0sVYAAABXsTsITZ8+XZ06dVJ8fLxiY2M1atQojRo1yuETsgYLAADwFnYHoX79+unIkSPavHmzjh49KovFoo4dOyo+Pl7x8fEaNmyYK+sEAABwOruD0F133aW77rpLmZmZioqK0s8//6y0tDQdOXJEX3zxBUEIAADUOg6PERoyZIh2796tiIgIJSQkqE2bNoqNjbX7eEcXawUAAHAVh+8aq1OnjiIiIqzPIyIi9Oijj9p9vKOLtQIAALiKw0GoefPm2r1797/fwM9PxcXFTi0KAADAHRzuGluyZImGDBmipKQkJSYmKjU1VS1btnRFbQAAAC7lcItQTEyMDh48qP79++v06dO6+eabtXbt2iqPy87O1quvvqrXX3+9WoUCAAA4m91B6M0335QkHT16VH5+fho1apRefvllPf7446pbt26Vx9d0sVYAAABnszsIde7cWZL0zDPPqEOHDurcubPGjRun1157TZs2baryeBZrBQAA3sbuMUJ9+/aVJK1Zs0ahoaHKz8/X0aNHlZqaqm3btmno0KGVHl/TxVoBAACczeExQrfffrskqW7duurevbsefvhhTZ06tcrjarpYa3WcOXNG999/vxo2bKiQkBDFxcUpJSXFpecEAAC1h90tQp9++qnS09OVn5+vzMxMtWjRwvra6NGjdfjw4UqPr+lirY7KyclRr1691LdvX23evFmNGzfWiRMnFBkZ6bJzAgCA2sXuIBQbG6vMzExlZ2dr/PjxysjIULNmzRQVFaWAgIAqj//hhx8UFRVV7cVaHbVw4UK1aNFCK1eutG5r3bq1y88LAABqD7uDUOvWrTV16lRlZ2dr7ty5kn7pesrIyLBriY3Bgwdbl+aQfmmxOXHihBITE6tZeuU2btyogQMH6ve//72+/PJLNWvWTI899pgmT55c7v5FRUUqKiqyPs/Ly3NJXQAAwHs4NEbIz89Pn332mfV5s2bN1LNnT4WHh1d5bE2X5nDU999/r+XLl6tdu3baunWrHn30UT355JNavXp1ufsvWLBAERER1sf1XX8AAMA3OTxYOiEhQUuXLnX4RO5emuPq1avq2rWrXn31VXXp0kWPPPKIJk+erBUrVpS7/5w5c5Sbm2t9ZGZmuqw2AADgHRxeYuOHH37Q5s2b9cYbb6hnz56Ki4tTXFxclbfPL126VIMHD3bb0hxR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IcMwVFj886+PUk+XAwCAyzktCL322mtKSkpS//79lZaWpr179+rgwYOKj4/Xnj17nHUauIhhGBq5Yo86zN2qDnO3KuGVbZ4uCQAAl3NaEPrP//xPbdiwQUuWLFFwcLBiY2O1d+9ejRgxQn369HHWaeAil0tKtT8jp8z2hJhIhQT4e6AiAABczymLrkpSamqqGjVqZLMtICBAr7/+uoYOHeqs08ANUp5LVmjgL+EnJMBfFovFwxUBQNUMw9Dlkqq79en6x/WcFoRuDEHX6927t7NOAzcIDfRXaKDT/jQAwOWude+X17INVMZp33bz5s2r9PW5c+c661QAANioqHu/MnT9Q3JiEPr4449tnpeUlOjUqVOqU6eO2rRpQxACALjF9d37laHrH5ITg9DBgwfLbMvLy9OECRM0fPhwZ50Gtdj1/fJ8AAFwFbr34QiX/qWEh4frpZde0rBhw/TAAw+48lSoBa6/JT8hJlLrpiYRhgAAHuXy1edzc3OVm5vr6tPAS4UE+CshJrLM9pSMHLvu7gAAwJWc1iL01ltv2Tw3DEM//vij/vznP2vQoEHOOg1qGYvFonVTk6yhp7C4lMkaAQBew2lB6M0337R57ufnp8aNG2v8+PGaM2eOs06DWshisdBfDwDwSk77djp16pSz3goAAMAtXD5GyBu89tprslgsmj59uqdLAQAAXqRGLUIzZ860e99FixbV5FTVtm/fPr399tuKj4/3yPkBAID3qlEQKm/uoPJ46hbp/Px8jRs3Tu+++65eeeUVj9QAAAC8V42C0I4dO/T999+rVatW8vPzvl62adOmaciQIUpOTq4yCBUVFamoqMj6PC8vz9XlAQAAD6txemnXrp2ys7Otz0ePHq2srKyavm2N/e///q8OHDigBQsW2LX/ggULFBERYX20aNHCxRUCAABPq3EQMgzD5vlf//pXFRQU1PRtayQzM1NPPfWU3n//fQUHB9t1zJw5c6yTP+bm5iozM9PFVXqeYRgqLP751weTGwIAzMcnJ3fZv3+/zp8/r65du1q3lZaWateuXVq6dKmKiork72+7IF9QUJCCgoLcXarHGIahkSv2OLxaMwAAvqTGQchisZQZDO3p9aN+97vfKTU11WbbxIkT1b59ez399NNlQpAZXS4pLTcEJcREKiSA3w8A72AYhl3L8dCqjeqqcRAyDEMTJkyw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DR8+XNIvd/RNnjxZ3bp1c3utvs7ez6nc3Fzt3btXf/nLX6p1HoIQvN62bds8XYJp8bv3DomJiTp06JCny8CvbrrpJh0+fNjTZeBXERERNRozR9cYXKZRo0by9/cv8wealZWlpk2beqgqSFwbb8K18C5cD+/hrmtBEILLBAYG6rbbbtP27dut265evart27fTveJhXBvvwbXwLlwP7+Gua0HXGGokPz9fJ0+etD4/deqUDh06pAYNGqhly5aaOXOmxo8fr4SEBCUmJmrx4sUqKCjQxIkTPVi1OXBtvAfXwrtwPbyHV1yLat1rBvxqx44dhqQyj/Hjx1v3WbJkidGyZUsjMDDQSExMNP7v//7PcwWbCNfGe3AtvAvXw3t4w7VgrTEAAGBajBECAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAAf89NNP+s1vfqN//vOfTn3f9PR0NW/eXAUFBU59XwCVIwgBcIkJEybIYrGUedx5552eLq1G5s+fr7vvvlutWrWya/9hw4ZV+DPv3r1bFotFR44cUYcOHdSjRw8tWrTIidUCqApLbABwiQkTJigrK0srV6602R4UFKTIyEiXnbe4uFiBgYEuee/CwkJFRUVp69at6tGjh13HbNiwQffee68yMjLUvHlzm9cmTZqk1NRU7du3T5L02WefafLkyTp9+rTq1GFNbMAdaBEC4DJBQUFq2rSpzeP6EGSxWPTf//3fGj58uEJDQ9WuXTtt3LjR5j3S0tI0aNAg1a1bV02aNNEDDzyg7Oxs6+t9+vTR448/runTp6tRo0YaOHCgJGnjxo1q166dgoOD1bdvX61evVoWi0UXL15UQUGBwsPD9dFHH9mca8OGDQoLC9OlS5fK/Xn++te/KigoqEwIqqzGoUOHqnHjxlq1apXNMfn5+Vq3bp0eeugh67b+/fvrwoUL+vLLL+38DQOoKYIQAI966aWXNGrUKB05ckSDBw/WuHHjdOHCBUnSxYsX1a9fP3Xp0kUpKSnasmWLsrKyNGrUKJv3WL16tQIDA/X1119rxYoVOnXqlEaOHKl77rlHhw8f1pQpU/Tss89a9w8LC9OYMWPKtFatXLlSI0eOVL169cqtdffu3brttttstlVVY506dfTggw9q1apVur4Bft26dSotLdXYsWOt2wIDA9W5c2ft3r27Gr9JANXi1LXsAeBX48ePN/z9/Y2wsDCbx/z58637SDKee+456/P8/HxDkrF582bDMAzj5ZdfNgYMGGDzvpmZmYYk49ixY4ZhGEbv3r2NLl262Ozz9NNPG7GxsTbbnn32WUOSkZOTYxiGYXz77beGv7+/cfbsWcMwDCMrK8uoU6eOsXPnzgp/prvvvtuYNGmSzTZ7avz73/9uSDJ27Nhh3ef222837r///jLnGD58uDFhwoQKawDgXHRCA3CZvn37avny5TbbGjRoYPM8Pj7e+t9hYWEKDw/X+fPnJUmHDx/Wjh07VLdu3TLv/Y9//EM333yzJJVppTl27Ji6detmsy0xMbHM844dO2r16tWaPXu2/ud//kcxMTG64447Kvx5Ll++rODgYJtt9tTYvn179ezZU3/605/Up08fnTx5Urt379a8efPKHBMSEqLCwsIKawDgXAQhAC4TFhamtm3bVrpPQECAzXOLxaKrV69K+mUczbBhw7Rw4cIyx0VFRdmcpzoefvhhLVu2TLNnz9bKlSs1ceJEWSyWCvdv1KiRcnJybLbZW+NDDz2kJ554QsuWLdPKlSvVpk0b9e7du8wxFy5cUJs2bar18wBwHGOEAHitrl276ujRo2rVqpXatm1r86gs/Nxyyy1KSUmx2Xbtzqzr3X///crIyNBbb72l9PR0jR8/vtJ6unTpovT09GrVOGrUKPn5+emDDz7Qe++9p0mTJpUbutLS0tSlS5dK6wDgPAQhAC5TVFSkc+fO2Tyuv+OrKtOmTdOFCxc0duxY7du3T//4xz+0detWTZw4UaWlpRUeN2XKFH333Xd6+umndfz4cX344YfWu7auDx+RkZEaMWKEZs2apQEDBpS5vf1GAwcO1NGjR21aheytsW7duho9erTmzJmjH3/8URMmTCjz/v/85z915swZJScn2/kbAlBTBCEALrNlyxZFRUXZPH7729/afXx0dLS+/vprlZaWasCAAYqLi9P06dNVv359+flV/PHVunVrffTRR1q/fr3i4+O1fPly611jQUFBNvs+9NBDKi4u1qRJk6qsJy4uTl27dtWHH35YrRofeugh5eTkaODAgYqOji7z/mvWrNGAAQMUExNTZS0AnIMJFQGYwvz587VixQplZmbabP/zn/+sGTNm6OzZs3ZNxPjZZ59p1qxZSktLqzSMOaq4uFjt2rXTBx98oF69ejntfQFUjsHSAHzSf/3Xf6lbt25q2LChvv76a73++ut6/PHHra8XFhbqxx9/1GuvvaYpU6bYPRv1kCFDdOLECZ05c0YtWrRwWr2nT5/WM888QwgC3IwWIQA+acaMGVq7dq0uXLigli1b6oEHHtCcOXOsS1e8+OKLmj9/vu644w598skn5d7+DsD3EYQAAIBpMVgaAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACY1v8HLEnFtdzYqhIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "bin_boundaries = energy_filter.lethargy_bin_width\n", + "\n", + "#print(energy_filter.bins)\n", + "plt.step(np.unique(energy_filter.bins)[:-1], values / bin_boundaries)\n", + "\n", + "plt.xscale('log')\n", + "plt.xlabel(r'Energy (eV)')\n", + "plt.ylabel(r'Flux ($\\frac{particle-cm}{source-particle}$)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Normalizing Tallies\n", + "\n", + "Note that the units of flux in the above plot are in $\\frac{particle-cm}{source-particle}$. As is the case with many values tallied by Monte Carlo codes, the value of the flux does not account for volume and is in terms of the number of source particles emitted. To generate this same plot in terms of absolute flux units ($\\frac{particle}{cm^{2}-s}$) we'll need to normalize this tally by:\n", + "\n", + " - the volume of the region the tally covers\n", + " - the number of source particle emitted\n", + "\n", + "In this case, the volume of the region is the volume of the entire pincell, which we can obtain using a bounding box (or the dimensions we set earlier, but let's introduce the notion of a bounding box!)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BoundingBox(lower_left=(-0.72135, -0.72135, -150.0), upper_right=(0.72135, 0.72135, 150.0))\n" + ] + } + ], + "source": [ + "print(root_universe.bounding_box)\n", + "ur = root_universe.bounding_box.upper_right\n", + "ll = root_universe.bounding_box.lower_left\n", + "volume = np.prod(ur-ll)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Determining the number of source particles per second is more complicated, however. This means computing the eV/source particle due to fission. To get the source rate, we'll need the following pieces of information:\n", + "\n", + " 1. the total power produced in the tally region (known a priori)\n", + " 2. the heat produced by fission power, per source particle\n", + " \n", + " To get this information we'll need to construct another tally to get additional information from the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [], + "source": [ + "pincell_power = 200 # in Watts\n", + "source_tally = openmc.Tally()\n", + "source_tally.scores = ['kappa-fission']\n", + "model.tallies += [source_tally]" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", + "\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2024 MIT, UChicago Argonne LLC, and contributors\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.14.1-dev\n", + " Git SHA1 | 14ce3cec4b388ae8b7ec5b28db57dbcbff06f147\n", + " Date/Time | 2024-03-28 12:50:20\n", + " MPI Processes | 1\n", + " OpenMP Threads | 8\n", + "\n", + " Reading model XML file 'model.xml' ...\n", + " WARNING: Other XML file input(s) are present. These files may be ignored in\n", + " favor of the model.xml file.\n", + " Reading cross sections XML file...\n", + " Reading Zr90 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr90.h5\n", + " Reading Zr91 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr91.h5\n", + " Reading Zr92 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr92.h5\n", + " Reading Zr94 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr94.h5\n", + " Reading Zr96 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr96.h5\n", + " Reading U234 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U234.h5\n", + " Reading U235 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U235.h5\n", + " Reading U238 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U238.h5\n", + " Reading U236 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U236.h5\n", + " Reading O16 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O16.h5\n", + " Reading H1 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H1.h5\n", + " Reading H2 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H2.h5\n", + " Reading O17 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O17.h5\n", + " Reading Pu239 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Pu239.h5\n", + " Reading Si28 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Si28.h5\n", + " Reading c_H_in_H2O from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/c_H_in_H2O.h5\n", + " Minimum neutron data temperature: 250 K\n", + " Maximum neutron data temperature: 2500 K\n", + " Preparing distributed cell instances...\n", + " Writing summary.h5 file...\n", + " Maximum neutron transport energy: 20000000 eV for Zr90\n", + " Initializing source particles...\n", + "\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + "\n", + " Bat./Gen. k Average k\n", + " ========= ======== ====================\n", + " 1/1 1.50315\n", + " 2/1 1.44086\n", + " 3/1 1.46540\n", + " 4/1 1.37107\n", + " 5/1 1.33015\n", + " 6/1 1.48464\n", + " 7/1 1.47998\n", + " 8/1 1.28684\n", + " 9/1 1.45556\n", + " 10/1 1.40944\n", + " 11/1 1.39122\n", + " 12/1 1.32307 1.35714 +/- 0.03407\n", + " 13/1 1.52588 1.41339 +/- 0.05959\n", + " 14/1 1.46026 1.42511 +/- 0.04373\n", + " 15/1 1.41125 1.42233 +/- 0.03399\n", + " 16/1 1.45798 1.42827 +/- 0.02838\n", + " 17/1 1.46100 1.43295 +/- 0.02444\n", + " 18/1 1.42515 1.43197 +/- 0.02119\n", + " 19/1 1.54914 1.44499 +/- 0.02277\n", + " 20/1 1.43623 1.44412 +/- 0.02039\n", + " 21/1 1.40115 1.44021 +/- 0.01885\n", + " 22/1 1.43731 1.43997 +/- 0.01721\n", + " 23/1 1.41573 1.43811 +/- 0.01594\n", + " 24/1 1.46427 1.43997 +/- 0.01487\n", + " 25/1 1.45526 1.44099 +/- 0.01389\n", + " 26/1 1.33933 1.43464 +/- 0.01446\n", + " 27/1 1.42147 1.43386 +/- 0.01360\n", + " 28/1 1.36027 1.42978 +/- 0.01346\n", + " 29/1 1.46546 1.43165 +/- 0.01287\n", + " 30/1 1.45070 1.43261 +/- 0.01225\n", + " 31/1 1.48473 1.43509 +/- 0.01191\n", + " 32/1 1.47264 1.43680 +/- 0.01149\n", + " 33/1 1.45237 1.43747 +/- 0.01100\n", + " 34/1 1.41749 1.43664 +/- 0.01056\n", + " 35/1 1.47971 1.43836 +/- 0.01027\n", + " 36/1 1.45378 1.43896 +/- 0.00989\n", + " 37/1 1.35765 1.43594 +/- 0.00998\n", + " 38/1 1.40397 1.43480 +/- 0.00969\n", + " 39/1 1.41697 1.43419 +/- 0.00937\n", + " 40/1 1.40400 1.43318 +/- 0.00910\n", + " 41/1 1.43270 1.43317 +/- 0.00881\n", + " 42/1 1.36535 1.43105 +/- 0.00879\n", + " 43/1 1.43240 1.43109 +/- 0.00851\n", + " 44/1 1.46349 1.43204 +/- 0.00832\n", + " 45/1 1.32866 1.42909 +/- 0.00860\n", + " 46/1 1.32249 1.42613 +/- 0.00886\n", + " 47/1 1.41734 1.42589 +/- 0.00862\n", + " 48/1 1.39802 1.42516 +/- 0.00843\n", + " 49/1 1.54696 1.42828 +/- 0.00878\n", + " 50/1 1.44601 1.42872 +/- 0.00857\n", + " 51/1 1.37546 1.42742 +/- 0.00846\n", + " 52/1 1.48833 1.42887 +/- 0.00838\n", + " 53/1 1.36864 1.42747 +/- 0.00830\n", + " 54/1 1.45539 1.42811 +/- 0.00814\n", + " 55/1 1.47463 1.42914 +/- 0.00802\n", + " 56/1 1.43531 1.42927 +/- 0.00785\n", + " 57/1 1.37650 1.42815 +/- 0.00776\n", + " 58/1 1.43163 1.42822 +/- 0.00760\n", + " 59/1 1.39161 1.42748 +/- 0.00748\n", + " 60/1 1.48475 1.42862 +/- 0.00742\n", + " 61/1 1.47918 1.42961 +/- 0.00734\n", + " 62/1 1.47997 1.43058 +/- 0.00726\n", + " 63/1 1.41811 1.43035 +/- 0.00712\n", + " 64/1 1.41011 1.42997 +/- 0.00700\n", + " 65/1 1.44239 1.43020 +/- 0.00688\n", + " 66/1 1.42912 1.43018 +/- 0.00675\n", + " 67/1 1.39312 1.42953 +/- 0.00666\n", + " 68/1 1.47339 1.43028 +/- 0.00659\n", + " 69/1 1.38559 1.42953 +/- 0.00652\n", + " 70/1 1.42211 1.42940 +/- 0.00641\n", + " 71/1 1.35744 1.42822 +/- 0.00642\n", + " 72/1 1.40876 1.42791 +/- 0.00632\n", + " 73/1 1.53582 1.42962 +/- 0.00645\n", + " 74/1 1.44605 1.42988 +/- 0.00636\n", + " 75/1 1.47428 1.43056 +/- 0.00629\n", + " 76/1 1.37855 1.42977 +/- 0.00625\n", + " 77/1 1.39439 1.42925 +/- 0.00618\n", + " 78/1 1.49117 1.43016 +/- 0.00615\n", + " 79/1 1.34815 1.42897 +/- 0.00618\n", + " 80/1 1.30610 1.42721 +/- 0.00634\n", + " 81/1 1.44634 1.42748 +/- 0.00625\n", + " 82/1 1.41633 1.42733 +/- 0.00617\n", + " 83/1 1.45974 1.42777 +/- 0.00610\n", + " 84/1 1.45538 1.42814 +/- 0.00603\n", + " 85/1 1.45563 1.42851 +/- 0.00596\n", + " 86/1 1.37790 1.42785 +/- 0.00592\n", + " 87/1 1.43465 1.42793 +/- 0.00584\n", + " 88/1 1.32547 1.42662 +/- 0.00591\n", + " 89/1 1.37892 1.42602 +/- 0.00587\n", + " 90/1 1.47858 1.42667 +/- 0.00583\n", + " 91/1 1.34703 1.42569 +/- 0.00584\n", + " 92/1 1.47197 1.42625 +/- 0.00580\n", + " 93/1 1.48311 1.42694 +/- 0.00577\n", + " 94/1 1.39298 1.42653 +/- 0.00571\n", + " 95/1 1.52197 1.42766 +/- 0.00576\n", + " 96/1 1.35930 1.42686 +/- 0.00574\n", + " 97/1 1.51529 1.42788 +/- 0.00577\n", + " 98/1 1.45297 1.42816 +/- 0.00571\n", + " 99/1 1.40311 1.42788 +/- 0.00565\n", + " 100/1 1.42293 1.42783 +/- 0.00559\n", + " Creating state point statepoint.100.h5...\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 3.5537e+00 seconds\n", + " Reading cross sections = 3.4357e+00 seconds\n", + " Total time in simulation = 2.2353e+00 seconds\n", + " Time in transport only = 2.0824e+00 seconds\n", + " Time in inactive batches = 1.5893e-01 seconds\n", + " Time in active batches = 2.0764e+00 seconds\n", + " Time synchronizing fission bank = 6.3608e-03 seconds\n", + " Sampling source sites = 4.9154e-03 seconds\n", + " SEND/RECV source sites = 5.7693e-04 seconds\n", + " Time accumulating tallies = 1.3524e-01 seconds\n", + " Time writing statepoints = 6.9553e-03 seconds\n", + " Total time for finalization = 1.0715e-03 seconds\n", + " Total time elapsed = 5.8008e+00 seconds\n", + " Calculation Rate (inactive) = 62921.5 particles/second\n", + " Calculation Rate (active) = 43344.4 particles/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.42881 +/- 0.00466\n", + " k-effective (Track-length) = 1.42783 +/- 0.00559\n", + " k-effective (Absorption) = 1.42667 +/- 0.00316\n", + " Combined k-effective = 1.42696 +/- 0.00299\n", + " Leakage Fraction = 0.00163 +/- 0.00017\n", + "\n" + ] + } + ], + "source": [ + "statepoint = model.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [], + "source": [ + "with openmc.StatePoint(statepoint) as sp:\n", + " out = sp.get_tally(id=source_tally.id)\n", + " heating = out.get_values(scores=['kappa-fission']).flatten()[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The combination of the following tally values and power provide us with the source normalization needed as follows:\n", + "\n", + "\n", + "$$ \\text{neutron source} [\\frac{n}{s}] = \\text{power} [\\frac{J}{s}] \\times \\frac{1}{1.6\\times 10^{-19}} [\\frac{eV}{J}] \\times \\frac{1}{\\text{heat per fission} [\\frac{eV}{source}]} $$ " + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Neutron source (n/s): 11097897947492.568\n" + ] + } + ], + "source": [ + "J_to_eV = 1 / 1.6e-19\n", + "neutron_source = pincell_power * J_to_eV * (1 / heating)\n", + "print('Neutron source (n/s): ', neutron_source)" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [], + "source": [ + "normalized_spectrum = neutron_source * values / volume" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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v/vuu5Jkc5+iDRs2NHifIunCw2GXLl1qs+7bb791pgwAAADTOBWKqqurtWXLFoWEhKhr167q27ev3W379u2rFStWaPLkydZ1sbGxzpQBAABgGqdC0dixYxUTE6N33nlHUVFROnv2rJKSkvTBBx802PbQoUNau3atFixYoD59+igpKUlJSUkaNWqUM6UAAACYwqlQdPjwYf3lL3/R9u3bVVBQoKVLl6qoqMiutrUNvW3atIlQBAAA3MqpUBQSEiJJCgoKUlVVlWbOnKn+/fvb1fbbb79VTEyMzSNCAAAA3M2pq88eeOABnTx5UmPHjtWMGTP03//93yopKbGr7YgRI1ReXm5dLi0t1fbt250pAwAAwDROhaK77rpLrVu31pw5c3TLLbdo//79euutt+xqGxAQoMjISOtyZGSk7rvvPmfKAAAAMI1Toejzzz/XnXfeqREjRugf//iH/v3f/11JSUl2tY2NjdW2bdv+VYCfn6qqqpwpAwAAwDROzSmaMGGC5s+frxtvvFGff/65xo4dq6efflpDhgxpsO2LL76oESNGKC0tTampqSosLFTHjh2dKQMAAMA0ToWiqKgo3XnnnZKknj17avTo0br11lvtCkUdO3bUzp07tXr1ahUWFqpLly566qmnnCkDAADANE6FomuvvVbPPfecMjMzZbFY1KpVK4faBwYGavz48Ro/frwzhwcAADCdU3OKKisrtWzZMnXs2FHDhg1TYmKi0tPTdfToUbPrAwAAaBJO9RS98847kqSKigoVFhZq9+7d2r17tyZOnKhjx47p4MGDkiTDMMyrFAAAwIWcCkUXhYeHq3379urXr1+t758/f/6KdUePHlWHDh0ac1gAAADTOTV8dqk+ffpo+vTp+uyzz+rc5vTp0/rTn/6kxMREvf322409JAAAgOka1VMkSfv27dPChQs1ePBghYSEqHfv3mrfvr1CQkJUWlqqffv2ae/everVq5f+67/+SyNGjDCjbgAAAFM1uqfoqquu0qJFi3T8+HG9+OKL6ty5s0pKSvTll19KunD36x07digvL49ABAAAPFaje4ouCg0N1bhx4zRu3DizdlmnrVu36plnntGOHTt0/PhxrV69WqNHj663zZYtW5SZmam9e/cqLi5O8+bN0+TJk11ea3NhGIbOVddYl0MD/WWxWNxYEQAAjjEtFDWliooKJScna+rUqRo7dmyD2x86dEgjR47UjBkz9Oc//1mbNm3SPffco5iYGA0dOrQJKvZthmFoXHaedhSVWtd1jYlQ7ow0WSwEJADwRWerahreSN71HeCVoWj48OEaPny43dtnZ2erU6dOeu655yRJN954oz7++GMtXry4zlBUWVmpyspK63JZWVnjivZh56prbAKRJO07XqZuj38oSUqJj/pnQPKO/ykAAA1LeXKjfdt50XdAo+cUeYO8vDylp6fbrBs6dKjy8vLqbJOVlaXIyEjrKy4uztVl+oTPHk1X15gIm3X5RaU2Q2sAAO8UGuivlPgoh9p403eAV/YUOerEiROKjo62WRcdHa2ysjKdO3dOoaGhV7SZO3euMjMzrctlZWUEIzuEB/tr3QM36Vx1jc5W1dj9LwkAgOezWCzKnZFmV8jxxu+AZhGKnBEcHKzg4GB3l+GVLBaLwoL40wIAX+TLn/GmDp9t3ry5zvf++Mc/mnkoh7Rr107FxcU264qLixUREVFrLxEaZhiGzlb9+M+Xd3SLAkBtbD/P6nvxWefrTI16w4YN0wMPPKCnnnpKgYGBkqSSkhJNmTJFH3/8saZPn27m4eyWlpam999/32bdhg0blJaW5pZ6vF1tV5sBgDfi8wyXMr2naPXq1erTp4/27dundevWKTExUWVlZSooKDDtOOXl5SooKLDu89ChQyooKNDhw4clXZgPNGnSJOv2M2bM0Ndff62HH35Y+/fv1x/+8Ae9+eabevDBB02rqTmp7Woz6cIVBqGB/m6oCACcU9fnWX34rPNdpvYU9e/fXwUFBZoxY4Z69eql8+fP64knntDDDz9s6qV4+fn5GjRokHX54oTojIwMrVixQsePH7cGJEnq1KmT1q1bpwcffFDPP/+8YmNj9fLLL3OPIhPkz0tXWNCFDwdvuhcFAFzu0s+z+vBZ57tMnyn1xRdfKD8/X7GxsTp27JgOHDigs2fPKjw83LRjDBw4UIZh1Pn+ihUram2zc+dO02rABWFB/j474Q5A88LnGUwdPvvd736ntLQ0DR48WHv27NH27du1c+dOJSUl1XtPIAAAAHczNRQ9//zzWrNmjV544QWFhIQoMTFR27dv19ixYzVw4EAzDwUAAGAqU/sJCwsL1aZNG5t1gYGBeuaZZ3TbbbeZeSh4mUsvZWU8HgDgiUwNRZcHoksNGDDAzEPBy1x6V1Nveg4OAKD5MDUULViwoN73H3vsMTMPBw938Rk5+Zdd7nrxOThMaAQAeBJTv5VWr15ts1xdXa1Dhw4pICBA1157LaHIixmGYX3Wjb13db38GTne+BwcAEDzYWooqu2S97KyMk2ePFljxowx81BoQo2546svPyMHAOBbTL36rDYRERGaP3++/vM//9PVh4KLcAdrAEBz0CT/hD99+rROnz7dFIeCi3EHawCArzI1FP3+97+3WTYMQ8ePH9drr72m4cOHm3kouAl3fAUA+CpTv90WL15ss+zn56err75aGRkZmjt3rpmHAgAAMJWpoejQoUNm7g4AAKDJuHyiNQAAgDdodE9RZmam3dsuWrSosYcDAABwiUaHotruTVQbrlICAACerNGhaPPmzfr666+VkJAgPz9G4wAAgHcyJcV07txZJSUl1uUJEyaouLjYjF0DAAA0CVNCkWEYNsvvv/++KioqzNg1AABAk2C8CwAAQCaFIovFcsVEaiZWAwAAb2LKzRsNw9DkyZMVHBwsSfrhhx80Y8YMhYeH22z3zjvvmHE4AAAA05kSijIyMmyW7777bjN2CzczDEPnqmt0tqrG3aUAAOBypoSinJwcM3YDD2IYhsZl52lHUam7SwEAoEkw0Rq1Olddc0UgSomPUmigv5sqAgDAtUx9ICx8U/68dIUF+Ss00J8J9AC8wsXh/4YwPQCXIhShQWFB/goL4k8FgHdg+B/OYvgMAOBTahv+bwjTAyDRUwQA8GEXh/8bwvQASIQiuMnl4/h8IAFwBYb/4Qj+UuAWKU9utF2Oj1LujDSCEQDAbZhThCYTGuivlPioWt/LLyq160oRAABchZ4iNBmLxaLcGWk24edsVc0VvUYAALgDoQhNymKxML4PAPBIDJ8BAACIUAQAACCJUAQAACCJUAQAACCJUAQAACCJUAQAACCJS/JxCcMwrPcQuvwxHAAA+DpCESRdCETjsvMcfrI0AAC+glAESdK56ppaA1FKfJRCAxt+wjQANIVLe7TrQk83nEUowhXy56UrLOhCEOLp9QA8BT3acDVCEa4QFuTPozgAeJy6erTrQk83HMU3HwDA61zao10XerrhKEIRAMDr0KMNV+A+RQAAACIUAQAASCIUAQAASCIUAQAASCIUAQAASCIUAQAASOKSfACAm9nz6A6Jx3fA9QhFAAC34dEd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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.step(np.unique(energy_filter.bins)[:-1], normalized_spectrum / bin_boundaries)\n", + "plt.xscale('log')\n", + "plt.xlabel(r'Energy (eV)')\n", + "plt.ylabel(r'Flux ($\\frac{particle}{cm^{-2} s}$)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Task 3: Reaction Types by Material\n", + "\n", + "Looking at the different reaction types by material will require a material filter and the set of reaction types we want to score. For this example, we'll be scoring absorption, scattering and fission in each material.\n", + "\n", + "To start, we'll create a material filter." + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Material\n", + "\tID =\t3\n", + "\tName =\t\n", + "\tTemperature =\tNone\n", + "\tDensity =\t10.0 [g/cm3]\n", + "\tVolume =\tNone [cm^3]\n", + "\tDepletable =\tTrue\n", + "\tS(a,b) Tables \n", + "\tNuclides \n", + "\tU234 =\t0.0003166930253944235 [ao]\n", + "\tU235 =\t0.03543164439454172 [ao]\n", + "\tU238 =\t0.964089368630351 [ao]\n", + "\tU236 =\t0.00016229394971280895 [ao]\n", + "\tO16 =\t2.0 [ao]\n", + ", Material\n", + "\tID =\t1\n", + "\tName =\tzirconium\n", + "\tTemperature =\tNone\n", + "\tDensity =\t6.5 [g/cm3]\n", + "\tVolume =\tNone [cm^3]\n", + "\tDepletable =\tFalse\n", + "\tS(a,b) Tables \n", + "\tNuclides \n", + "\tZr90 =\t0.5145 [ao]\n", + "\tZr91 =\t0.1122 [ao]\n", + "\tZr92 =\t0.1715 [ao]\n", + "\tZr94 =\t0.1738 [ao]\n", + "\tZr96 =\t0.028 [ao]\n", + ", Material\n", + "\tID =\t4\n", + "\tName =\t\n", + "\tTemperature =\tNone\n", + "\tDensity =\t1.0 [g/cm3]\n", + "\tVolume =\tNone [cm^3]\n", + "\tDepletable =\tFalse\n", + "\tS(a,b) Tables \n", + "\tS(a,b) =\t('c_H_in_H2O', 1.0)\n", + "\tNuclides \n", + "\tH1 =\t1.99968852 [ao]\n", + "\tH2 =\t0.00031148 [ao]\n", + "\tO16 =\t0.999621 [ao]\n", + "\tO17 =\t0.000379 [ao]\n", + ", Material\n", + "\tID =\t5\n", + "\tName =\t\n", + "\tTemperature =\tNone\n", + "\tDensity =\t9.0 [g/cm3]\n", + "\tVolume =\tNone [cm^3]\n", + "\tDepletable =\tTrue\n", + "\tS(a,b) Tables \n", + "\tNuclides \n", + "\tPu239 =\t1.0 [ao]\n", + "\tSi28 =\t2.0 [ao]\n", + "]\n" + ] + } + ], + "source": [ + "print(model.materials)" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "material_filter = openmc.MaterialFilter(model.materials)\n", + "material_tally = openmc.Tally()\n", + "material_tally.filters = [material_filter]\n", + "material_tally.scores = ['absorption', 'scatter', 'fission']" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [], + "source": [ + "model.tallies += [material_tally]" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/anovak/projects/openmc/openmc/mixin.py:70: IDWarning: Another Filter instance already exists with id=3.\n", + " warn(msg, IDWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", + "\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2024 MIT, UChicago Argonne LLC, and contributors\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.14.1-dev\n", + " Git SHA1 | 14ce3cec4b388ae8b7ec5b28db57dbcbff06f147\n", + " Date/Time | 2024-03-28 12:57:11\n", + " MPI Processes | 1\n", + " OpenMP Threads | 8\n", + "\n", + " Reading model XML file 'model.xml' ...\n", + " WARNING: Other XML file input(s) are present. These files may be ignored in\n", + " favor of the model.xml file.\n", + " Reading cross sections XML file...\n", + " Reading Zr90 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr90.h5\n", + " Reading Zr91 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr91.h5\n", + " Reading Zr92 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr92.h5\n", + " Reading Zr94 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr94.h5\n", + " Reading Zr96 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Zr96.h5\n", + " Reading U234 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U234.h5\n", + " Reading U235 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U235.h5\n", + " Reading U238 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U238.h5\n", + " Reading U236 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/U236.h5\n", + " Reading O16 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O16.h5\n", + " Reading H1 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H1.h5\n", + " Reading H2 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/H2.h5\n", + " Reading O17 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/O17.h5\n", + " Reading Pu239 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Pu239.h5\n", + " Reading Si28 from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/Si28.h5\n", + " Reading c_H_in_H2O from\n", + " /Users/anovak/projects/cross_sections/endfb-vii.1-hdf5/neutron/c_H_in_H2O.h5\n", + " Minimum neutron data temperature: 250 K\n", + " Maximum neutron data temperature: 2500 K\n", + " Preparing distributed cell instances...\n", + " Writing summary.h5 file...\n", + " Maximum neutron transport energy: 20000000 eV for Zr90\n", + " Initializing source particles...\n", + "\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + "\n", + " Bat./Gen. k Average k\n", + " ========= ======== ====================\n", + " 1/1 1.50315\n", + " 2/1 1.44086\n", + " 3/1 1.46540\n", + " 4/1 1.37107\n", + " 5/1 1.33015\n", + " 6/1 1.48464\n", + " 7/1 1.47998\n", + " 8/1 1.28684\n", + " 9/1 1.45556\n", + " 10/1 1.40944\n", + " 11/1 1.39122\n", + " 12/1 1.32307 1.35714 +/- 0.03407\n", + " 13/1 1.52588 1.41339 +/- 0.05959\n", + " 14/1 1.46026 1.42511 +/- 0.04373\n", + " 15/1 1.41125 1.42233 +/- 0.03399\n", + " 16/1 1.45798 1.42827 +/- 0.02838\n", + " 17/1 1.46100 1.43295 +/- 0.02444\n", + " 18/1 1.42515 1.43197 +/- 0.02119\n", + " 19/1 1.54914 1.44499 +/- 0.02277\n", + " 20/1 1.43623 1.44412 +/- 0.02039\n", + " 21/1 1.40115 1.44021 +/- 0.01885\n", + " 22/1 1.43731 1.43997 +/- 0.01721\n", + " 23/1 1.41573 1.43811 +/- 0.01594\n", + " 24/1 1.46427 1.43997 +/- 0.01487\n", + " 25/1 1.45526 1.44099 +/- 0.01389\n", + " 26/1 1.33933 1.43464 +/- 0.01446\n", + " 27/1 1.42147 1.43386 +/- 0.01360\n", + " 28/1 1.36027 1.42978 +/- 0.01346\n", + " 29/1 1.46546 1.43165 +/- 0.01287\n", + " 30/1 1.45070 1.43261 +/- 0.01225\n", + " 31/1 1.48473 1.43509 +/- 0.01191\n", + " 32/1 1.47264 1.43680 +/- 0.01149\n", + " 33/1 1.45237 1.43747 +/- 0.01100\n", + " 34/1 1.41749 1.43664 +/- 0.01056\n", + " 35/1 1.47971 1.43836 +/- 0.01027\n", + " 36/1 1.45378 1.43896 +/- 0.00989\n", + " 37/1 1.35765 1.43594 +/- 0.00998\n", + " 38/1 1.40397 1.43480 +/- 0.00969\n", + " 39/1 1.41697 1.43419 +/- 0.00937\n", + " 40/1 1.40400 1.43318 +/- 0.00910\n", + " 41/1 1.43270 1.43317 +/- 0.00881\n", + " 42/1 1.36535 1.43105 +/- 0.00879\n", + " 43/1 1.43240 1.43109 +/- 0.00851\n", + " 44/1 1.46349 1.43204 +/- 0.00832\n", + " 45/1 1.32866 1.42909 +/- 0.00860\n", + " 46/1 1.32249 1.42613 +/- 0.00886\n", + " 47/1 1.41734 1.42589 +/- 0.00862\n", + " 48/1 1.39802 1.42516 +/- 0.00843\n", + " 49/1 1.54696 1.42828 +/- 0.00878\n", + " 50/1 1.44601 1.42872 +/- 0.00857\n", + " 51/1 1.37546 1.42742 +/- 0.00846\n", + " 52/1 1.48833 1.42887 +/- 0.00838\n", + " 53/1 1.36864 1.42747 +/- 0.00830\n", + " 54/1 1.45539 1.42811 +/- 0.00814\n", + " 55/1 1.47463 1.42914 +/- 0.00802\n", + " 56/1 1.43531 1.42927 +/- 0.00785\n", + " 57/1 1.37650 1.42815 +/- 0.00776\n", + " 58/1 1.43163 1.42822 +/- 0.00760\n", + " 59/1 1.39161 1.42748 +/- 0.00748\n", + " 60/1 1.48475 1.42862 +/- 0.00742\n", + " 61/1 1.47918 1.42961 +/- 0.00734\n", + " 62/1 1.47997 1.43058 +/- 0.00726\n", + " 63/1 1.41811 1.43035 +/- 0.00712\n", + " 64/1 1.41011 1.42997 +/- 0.00700\n", + " 65/1 1.44239 1.43020 +/- 0.00688\n", + " 66/1 1.42912 1.43018 +/- 0.00675\n", + " 67/1 1.39312 1.42953 +/- 0.00666\n", + " 68/1 1.47339 1.43028 +/- 0.00659\n", + " 69/1 1.38559 1.42953 +/- 0.00652\n", + " 70/1 1.42211 1.42940 +/- 0.00641\n", + " 71/1 1.35744 1.42822 +/- 0.00642\n", + " 72/1 1.40876 1.42791 +/- 0.00632\n", + " 73/1 1.53582 1.42962 +/- 0.00645\n", + " 74/1 1.44605 1.42988 +/- 0.00636\n", + " 75/1 1.47428 1.43056 +/- 0.00629\n", + " 76/1 1.37855 1.42977 +/- 0.00625\n", + " 77/1 1.39439 1.42925 +/- 0.00618\n", + " 78/1 1.49117 1.43016 +/- 0.00615\n", + " 79/1 1.34815 1.42897 +/- 0.00618\n", + " 80/1 1.30610 1.42721 +/- 0.00634\n", + " 81/1 1.44634 1.42748 +/- 0.00625\n", + " 82/1 1.41633 1.42733 +/- 0.00617\n", + " 83/1 1.45974 1.42777 +/- 0.00610\n", + " 84/1 1.45538 1.42814 +/- 0.00603\n", + " 85/1 1.45563 1.42851 +/- 0.00596\n", + " 86/1 1.37790 1.42785 +/- 0.00592\n", + " 87/1 1.43465 1.42793 +/- 0.00584\n", + " 88/1 1.32547 1.42662 +/- 0.00591\n", + " 89/1 1.37892 1.42602 +/- 0.00587\n", + " 90/1 1.47858 1.42667 +/- 0.00583\n", + " 91/1 1.34703 1.42569 +/- 0.00584\n", + " 92/1 1.47197 1.42625 +/- 0.00580\n", + " 93/1 1.48311 1.42694 +/- 0.00577\n", + " 94/1 1.39298 1.42653 +/- 0.00571\n", + " 95/1 1.52197 1.42766 +/- 0.00576\n", + " 96/1 1.35930 1.42686 +/- 0.00574\n", + " 97/1 1.51529 1.42788 +/- 0.00577\n", + " 98/1 1.45297 1.42816 +/- 0.00571\n", + " 99/1 1.40311 1.42788 +/- 0.00565\n", + " 100/1 1.42293 1.42783 +/- 0.00559\n", + " Creating state point statepoint.100.h5...\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 1.8871e+00 seconds\n", + " Reading cross sections = 1.8307e+00 seconds\n", + " Total time in simulation = 2.4304e+00 seconds\n", + " Time in transport only = 2.3929e+00 seconds\n", + " Time in inactive batches = 1.6813e-01 seconds\n", + " Time in active batches = 2.2623e+00 seconds\n", + " Time synchronizing fission bank = 6.3644e-03 seconds\n", + " Sampling source sites = 4.7885e-03 seconds\n", + " SEND/RECV source sites = 6.4766e-04 seconds\n", + " Time accumulating tallies = 1.7943e-02 seconds\n", + " Time writing statepoints = 9.1132e-03 seconds\n", + " Total time for finalization = 4.9982e-04 seconds\n", + " Total time elapsed = 4.3280e+00 seconds\n", + " Calculation Rate (inactive) = 59478 particles/second\n", + " Calculation Rate (active) = 39783.1 particles/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.42881 +/- 0.00466\n", + " k-effective (Track-length) = 1.42783 +/- 0.00559\n", + " k-effective (Absorption) = 1.42667 +/- 0.00316\n", + " Combined k-effective = 1.42696 +/- 0.00299\n", + " Leakage Fraction = 0.00163 +/- 0.00017\n", + "\n" + ] + } + ], + "source": [ + "statepoint = model.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we'll gather information from the statepoint file about each score we applied to the tally. With multiple scores and materials, we'll use a Pandas data frame to view the results in a more coherent manner." + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [], + "source": [ + "with openmc.StatePoint(statepoint) as sp:\n", + " tally = sp.get_tally(filters=[material_filter])\n", + " absorption = tally.get_values(scores=['absorption']).flatten()\n", + " scatter = tally.get_values(scores=['scatter']).flatten()\n", + " fission = tally.get_values(scores=['fission']).flatten()\n", + " df = tally.get_pandas_dataframe()" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "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", + "
materialnuclidescoremeanstd. dev.
03totalabsorption0.9310820.003152
13totalscatter4.4889830.007124
23totalfission0.5817830.002293
31totalabsorption0.0080320.000065
41totalscatter1.1465010.001893
51totalfission0.0000000.000000
64totalabsorption0.0596690.000244
74totalscatter24.4612430.049262
84totalfission0.0000000.000000
95totalabsorption0.0000000.000000
105totalscatter0.0000000.000000
115totalfission0.0000000.000000
\n", + "
" + ], + "text/plain": [ + " material nuclide score mean std. dev.\n", + "0 3 total absorption 9.31e-01 3.15e-03\n", + "1 3 total scatter 4.49e+00 7.12e-03\n", + "2 3 total fission 5.82e-01 2.29e-03\n", + "3 1 total absorption 8.03e-03 6.48e-05\n", + "4 1 total scatter 1.15e+00 1.89e-03\n", + "5 1 total fission 0.00e+00 0.00e+00\n", + "6 4 total absorption 5.97e-02 2.44e-04\n", + "7 4 total scatter 2.45e+01 4.93e-02\n", + "8 4 total fission 0.00e+00 0.00e+00\n", + "9 5 total absorption 0.00e+00 0.00e+00\n", + "10 5 total scatter 0.00e+00 0.00e+00\n", + "11 5 total fission 0.00e+00 0.00e+00" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "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", + "
materialnuclidescoremeanstd. dev.normalized-mean (rxn/s)
03totalabsorption0.9310820.0031521.033305e+13
13totalscatter4.4889830.0071244.981827e+13
23totalfission0.5817830.0022936.456563e+12
31totalabsorption0.0080320.0000658.913624e+10
41totalscatter1.1465010.0018931.272375e+13
51totalfission0.0000000.0000000.000000e+00
64totalabsorption0.0596690.0002446.622006e+11
74totalscatter24.4612430.0492622.714684e+14
84totalfission0.0000000.0000000.000000e+00
95totalabsorption0.0000000.0000000.000000e+00
105totalscatter0.0000000.0000000.000000e+00
115totalfission0.0000000.0000000.000000e+00
\n", + "
" + ], + "text/plain": [ + " material nuclide score mean std. dev. normalized-mean (rxn/s)\n", + "0 3 total absorption 9.31e-01 3.15e-03 1.03e+13\n", + "1 3 total scatter 4.49e+00 7.12e-03 4.98e+13\n", + "2 3 total fission 5.82e-01 2.29e-03 6.46e+12\n", + "3 1 total absorption 8.03e-03 6.48e-05 8.91e+10\n", + "4 1 total scatter 1.15e+00 1.89e-03 1.27e+13\n", + "5 1 total fission 0.00e+00 0.00e+00 0.00e+00\n", + "6 4 total absorption 5.97e-02 2.44e-04 6.62e+11\n", + "7 4 total scatter 2.45e+01 4.93e-02 2.71e+14\n", + "8 4 total fission 0.00e+00 0.00e+00 0.00e+00\n", + "9 5 total absorption 0.00e+00 0.00e+00 0.00e+00\n", + "10 5 total scatter 0.00e+00 0.00e+00 0.00e+00\n", + "11 5 total fission 0.00e+00 0.00e+00 0.00e+00" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['normalized-mean (rxn/s)'] = neutron_source * df['mean']\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll add a new entry in the dataframe for our material names to make plotting easier." + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "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", + "
materialnuclidescoremeanstd. dev.normalized-mean (rxn/s)mat_name
03totalabsorption0.9310820.0031521.033305e+13
13totalscatter4.4889830.0071244.981827e+13
23totalfission0.5817830.0022936.456563e+12
31totalabsorption0.0080320.0000658.913624e+10zirconium
41totalscatter1.1465010.0018931.272375e+13zirconium
51totalfission0.0000000.0000000.000000e+00zirconium
64totalabsorption0.0596690.0002446.622006e+11
74totalscatter24.4612430.0492622.714684e+14
84totalfission0.0000000.0000000.000000e+00
95totalabsorption0.0000000.0000000.000000e+00NaN
105totalscatter0.0000000.0000000.000000e+00NaN
115totalfission0.0000000.0000000.000000e+00NaN
\n", + "
" + ], + "text/plain": [ + " material nuclide score mean std. dev. normalized-mean (rxn/s) \\\n", + "0 3 total absorption 9.31e-01 3.15e-03 1.03e+13 \n", + "1 3 total scatter 4.49e+00 7.12e-03 4.98e+13 \n", + "2 3 total fission 5.82e-01 2.29e-03 6.46e+12 \n", + "3 1 total absorption 8.03e-03 6.48e-05 8.91e+10 \n", + "4 1 total scatter 1.15e+00 1.89e-03 1.27e+13 \n", + "5 1 total fission 0.00e+00 0.00e+00 0.00e+00 \n", + "6 4 total absorption 5.97e-02 2.44e-04 6.62e+11 \n", + "7 4 total scatter 2.45e+01 4.93e-02 2.71e+14 \n", + "8 4 total fission 0.00e+00 0.00e+00 0.00e+00 \n", + "9 5 total absorption 0.00e+00 0.00e+00 0.00e+00 \n", + "10 5 total scatter 0.00e+00 0.00e+00 0.00e+00 \n", + "11 5 total fission 0.00e+00 0.00e+00 0.00e+00 \n", + "\n", + " mat_name \n", + "0 \n", + "1 \n", + "2 \n", + "3 zirconium \n", + "4 zirconium \n", + "5 zirconium \n", + "6 \n", + "7 \n", + "8 \n", + "9 NaN \n", + "10 NaN \n", + "11 NaN " + ] + }, + "execution_count": 191, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# get all materials from the geometry\n", + "materials = model.geometry.get_all_materials()\n", + "\n", + "# set names based on matching material IDs\n", + "for mat_id, material in materials.items():\n", + " df.loc[df['material'] == mat_id, 'mat_name'] = material.name\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {