diff --git a/examples/jupyter/images/pin_mesh.png b/examples/jupyter/images/pin_mesh.png new file mode 100644 index 000000000..2179da9c2 Binary files /dev/null and b/examples/jupyter/images/pin_mesh.png differ diff --git a/examples/jupyter/images/umesh_flux.png b/examples/jupyter/images/umesh_flux.png new file mode 100644 index 000000000..5d31e1cda Binary files /dev/null and b/examples/jupyter/images/umesh_flux.png differ diff --git a/examples/jupyter/images/umesh_heating.png b/examples/jupyter/images/umesh_heating.png new file mode 100644 index 000000000..984d1e34a Binary files /dev/null and b/examples/jupyter/images/umesh_heating.png differ diff --git a/examples/jupyter/images/umesh_w_assembly.png b/examples/jupyter/images/umesh_w_assembly.png new file mode 100644 index 000000000..9f1f0283f Binary files /dev/null and b/examples/jupyter/images/umesh_w_assembly.png differ diff --git a/examples/jupyter/unstructured_mesh.ipynb b/examples/jupyter/unstructured_mesh.ipynb new file mode 100644 index 000000000..43cd31a79 --- /dev/null +++ b/examples/jupyter/unstructured_mesh.ipynb @@ -0,0 +1,833 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "from matplotlib import pyplot as plt\n", + "plt.rcParams[\"figure.figsize\"] = (30,10)\n", + "\n", + "import urllib.request\n", + "\n", + "\n", + "pin_mesh_url = 'https://tinyurl.com/u9ce9d7' # 1.2 MB\n", + "\n", + "def download(url, filename='dagmc.h5m'):\n", + " \"\"\"\n", + " Helper function for retrieving dagmc models\n", + " \"\"\"\n", + " u = urllib.request.urlopen(url)\n", + " \n", + " if u.status != 200:\n", + " raise RuntimeError(\"Failed to download file.\")\n", + " \n", + " # save file as dagmc.h5m\n", + " with open(filename, 'wb') as f:\n", + " f.write(u.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Unstructured Mesh Tallies in OpenMC\n", + "\n", + "In this example we'll look at how to setup and use unstructured mesh tallies in OpenMC. Unstructured meshes are able to provide results over spatial regions of a problem while conforming to a specific geometric features -- something that is often difficult to do using the regular and rectilinear meshes in OpenMC.\n", + "\n", + "Here, we'll apply an unstructured mesh tally to the PWR assembly model from the OpenMC examples.\n", + "\n", + "_NOTE: This notebook will not run successfully if OpenMC has not been built with DAGMC support enabled._" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import openmc\n", + "import openmc.lib\n", + "\n", + "assert(openmc.lib._dagmc_enabled())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we'll import that model from the set of OpenMC examples." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "model = openmc.examples.pwr_assembly()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll make a couple of adjustments to this 2D model as it won't play very well with the 3D mesh we'll be looking at. First, we'll bound the pincell between +/- 10 cm in the Z dimension." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "min_z = openmc.ZPlane(z0=-10.0)\n", + "max_z = openmc.ZPlane(z0=10.0)\n", + "\n", + "z_region = +min_z & -max_z\n", + "\n", + "cells = model.geometry.get_all_cells()\n", + "for cell in cells.values():\n", + " cell.region &= z_region" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The other adjustment we'll make is to remove the reflective boundary conditions on the X and Y boundaries. (This is purely to generate a more interesting flux profile.)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "surfaces = model.geometry.get_all_surfaces()\n", + "# modify the boundary condition of the\n", + "# planar surfaces bounding the assembly\n", + "for surface in surfaces.values():\n", + " if isinstance(surface, openmc.Plane):\n", + " surface.boundary_type = 'vacuum'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's take a quick look at the model to ensure our changs have been added properly." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "root_univ = model.geometry.root_universe\n", + "\n", + "# axial image\n", + "root_univ.plot(width=(22.0, 22.0),\n", + " pixels=(200, 300),\n", + " basis='xz',\n", + " color_by='material',\n", + " seed=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# radial image\n", + "root_univ.plot(width=(22.0, 22.0),\n", + " pixels=(400, 400),\n", + " basis='xy',\n", + " color_by='material',\n", + " seed=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good! Let's run some particles through the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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-2020 MIT and OpenMC contributors\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.12.0-dev\n", + " Git SHA1 | 21a5b51f2d59f7ceaf7546efd7b21786d55c6d87\n", + " Date/Time | 2020-03-17 17:37:57\n", + " OpenMP Threads | 96\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading materials XML file...\n", + " Reading geometry XML file...\n", + " Reading U234 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/U234.h5\n", + " Reading U235 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/O16.h5\n", + " Reading Zr90 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr90.h5\n", + " Reading Zr91 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr91.h5\n", + " Reading Zr92 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr92.h5\n", + " Reading Zr94 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr94.h5\n", + " Reading Zr96 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr96.h5\n", + " Reading H1 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/H1.h5\n", + " Reading B10 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/B10.h5\n", + " Reading B11 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/B11.h5\n", + " Reading c_H_in_H2O from /home/pshriwise/opt/openmc/xs/nndc_hdf5/c_H_in_H2O.h5\n", + " Maximum neutron transport energy: 20000000.000000 eV for U235\n", + " Minimum neutron data temperature: 294.000000 K\n", + " Maximum neutron data temperature: 294.000000 K\n", + " Preparing distributed cell instances...\n", + " Writing summary.h5 file...\n", + " Initializing source particles...\n", + "\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + "\n", + " Bat./Gen. k Average k\n", + " ========= ======== ====================\n", + " 1/1 0.20444\n", + " 2/1 0.15502\n", + " 3/1 0.19804\n", + " 4/1 0.22159\n", + " 5/1 0.19776\n", + " 6/1 0.20086\n", + " 7/1 0.21896 0.20991 +/- 0.00905\n", + " 8/1 0.23134 0.21706 +/- 0.00885\n", + " 9/1 0.29029 0.23536 +/- 0.01935\n", + " 10/1 0.20094 0.22848 +/- 0.01649\n", + " Creating state point statepoint.10.h5...\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 6.3553e-01 seconds\n", + " Reading cross sections = 5.9809e-01 seconds\n", + " Total time in simulation = 5.2261e-02 seconds\n", + " Time in transport only = 4.8537e-02 seconds\n", + " Time in inactive batches = 4.6636e-02 seconds\n", + " Time in active batches = 5.6258e-03 seconds\n", + " Time synchronizing fission bank = 9.5693e-05 seconds\n", + " Sampling source sites = 6.0864e-05 seconds\n", + " SEND/RECV source sites = 2.6286e-05 seconds\n", + " Time accumulating tallies = 3.3250e-06 seconds\n", + " Total time for finalization = 9.9400e-07 seconds\n", + " Total time elapsed = 6.8820e-01 seconds\n", + " Calculation Rate (inactive) = 10721.4 particles/second\n", + " Calculation Rate (active) = 88875.7 particles/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 0.25094 +/- 0.02010\n", + " k-effective (Track-length) = 0.22848 +/- 0.01649\n", + " k-effective (Absorption) = 0.21556 +/- 0.04156\n", + " Combined k-effective = 0.20707 +/- 0.01965\n", + " Leakage Fraction = 0.79200 +/- 0.03382\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0.20706788967181863+/-0.01965303775428789" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now it's time to apply our mesh tally to the problem. We'll be using the tetrahedral mesh \"pins1-4.h5m\" shown below:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](./images/pin_mesh.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This mesh was generated using Trelis with radii that match the fuel/coolant channels of the PWR model. These four channels correspond to the highlighted channels of the assembly below. \n", + "\n", + "Two of the channels are coolant and the other two are fuel." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib.patches import Rectangle\n", + "from matplotlib import pyplot as plt\n", + "\n", + "pitch = 1.26 # cm\n", + "\n", + "img = root_univ.plot(width=(22.0, 22.0),\n", + " pixels=(600, 600),\n", + " basis='xy',\n", + " color_by='material',\n", + " seed=0)\n", + "\n", + "# highlight channels\n", + "for i in range(0, 4):\n", + " corner = (i * pitch - pitch / 2.0, -i * pitch - pitch / 2.0)\n", + " rect = Rectangle(corner,\n", + " pitch,\n", + " pitch,\n", + " edgecolor='blue',\n", + " fill=False)\n", + " img.axes.add_artist(rect)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Applying an unstructured mesh tally" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To use this mesh, we'll create an unstructured mesh instance and apply it to a mesh filter." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "download(pin_mesh_url, \"pins1-4.h5m\")\n", + "umesh = openmc.UnstructuredMesh(filename=\"pins1-4.h5m\")\n", + "mesh_filter = openmc.MeshFilter(umesh)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now apply this filter like any other. For this demonstration we'll score both the flux and heating in these pins." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "tally = openmc.Tally()\n", + "tally.filters = [mesh_filter]\n", + "tally.scores = ['heating', 'flux']\n", + "tally.estimator = 'tracklength'\n", + "model.tallies = (tally,)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we'll run this model with the unstructured mesh tally applied. Notice that the simulation takes some time to start due to some additional data structures used by the unstructured mesh tally. Additionally, the particle rate drops dramatically during the active cycles of this simulation.\n", + "\n", + "Unstructured meshes are useful, but they can be computationally expensive!" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "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-2020 MIT and OpenMC contributors\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.12.0-dev\n", + " Git SHA1 | 21a5b51f2d59f7ceaf7546efd7b21786d55c6d87\n", + " Date/Time | 2020-03-17 17:42:07\n", + " OpenMP Threads | 96\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading materials XML file...\n", + " Reading geometry XML file...\n", + " Reading U234 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/U234.h5\n", + " Reading U235 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/O16.h5\n", + " Reading Zr90 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr90.h5\n", + " Reading Zr91 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr91.h5\n", + " Reading Zr92 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr92.h5\n", + " Reading Zr94 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr94.h5\n", + " Reading Zr96 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/Zr96.h5\n", + " Reading H1 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/H1.h5\n", + " Reading B10 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/B10.h5\n", + " Reading B11 from /home/pshriwise/opt/openmc/xs/nndc_hdf5/B11.h5\n", + " Reading c_H_in_H2O from /home/pshriwise/opt/openmc/xs/nndc_hdf5/c_H_in_H2O.h5\n", + " Maximum neutron transport energy: 20000000.000000 eV for U235\n", + " Minimum neutron data temperature: 294.000000 K\n", + " Maximum neutron data temperature: 294.000000 K\n", + " Reading tallies XML file...\n", + " Preparing distributed cell instances...\n", + " Writing summary.h5 file...\n", + " Initializing source particles...\n", + "\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + "\n", + " Bat./Gen. k Average k\n", + " ========= ======== ====================\n", + " 1/1 0.22539\n", + " 2/1 0.23030\n", + " 3/1 0.23180\n", + " 4/1 0.23343\n", + " 5/1 0.22940\n", + " 6/1 0.22765\n", + " 7/1 0.23238\n", + " 8/1 0.23083\n", + " 9/1 0.23204\n", + " 10/1 0.23189\n", + " 11/1 0.23555\n", + " 12/1 0.23220\n", + " 13/1 0.22907\n", + " 14/1 0.23016\n", + " 15/1 0.23055\n", + " 16/1 0.23062\n", + " 17/1 0.22656\n", + " 18/1 0.23380\n", + " 19/1 0.23268\n", + " 20/1 0.23233\n", + " 21/1 0.23256\n", + " 22/1 0.22965 0.23111 +/- 0.00145\n", + " 23/1 0.22846 0.23022 +/- 0.00121\n", + " 24/1 0.22936 0.23001 +/- 0.00089\n", + " 25/1 0.23054 0.23012 +/- 0.00069\n", + " 26/1 0.22708 0.22961 +/- 0.00076\n", + " 27/1 0.23159 0.22989 +/- 0.00070\n", + " WARNING: No tet found for location between trianle hits\n", + " 28/1 0.23703 0.23078 +/- 0.00108\n", + " 29/1 0.23227 0.23095 +/- 0.00097\n", + " 30/1 0.23114 0.23097 +/- 0.00086\n", + " 31/1 0.23133 0.23100 +/- 0.00078\n", + " 32/1 0.23143 0.23104 +/- 0.00072\n", + " 33/1 0.23125 0.23105 +/- 0.00066\n", + " 34/1 0.23218 0.23113 +/- 0.00061\n", + " 35/1 0.23140 0.23115 +/- 0.00057\n", + " 36/1 0.22911 0.23102 +/- 0.00055\n", + " 37/1 0.23143 0.23105 +/- 0.00052\n", + " 38/1 0.23342 0.23118 +/- 0.00051\n", + " 39/1 0.23186 0.23121 +/- 0.00048\n", + " 40/1 0.23029 0.23117 +/- 0.00046\n", + " 41/1 0.23132 0.23118 +/- 0.00043\n", + " 42/1 0.23167 0.23120 +/- 0.00042\n", + " 43/1 0.23244 0.23125 +/- 0.00040\n", + " 44/1 0.23101 0.23124 +/- 0.00038\n", + " 45/1 0.23225 0.23128 +/- 0.00037\n", + " 46/1 0.22945 0.23121 +/- 0.00036\n", + " 47/1 0.22978 0.23116 +/- 0.00035\n", + " 48/1 0.23335 0.23124 +/- 0.00035\n", + " 49/1 0.23298 0.23130 +/- 0.00034\n", + " 50/1 0.23095 0.23129 +/- 0.00033\n", + " 51/1 0.23724 0.23148 +/- 0.00037\n", + " 52/1 0.22973 0.23142 +/- 0.00037\n", + " 53/1 0.23066 0.23140 +/- 0.00035\n", + " 54/1 0.22838 0.23131 +/- 0.00036\n", + " 55/1 0.23262 0.23135 +/- 0.00035\n", + " 56/1 0.23593 0.23148 +/- 0.00036\n", + " 57/1 0.23358 0.23153 +/- 0.00036\n", + " 58/1 0.23050 0.23151 +/- 0.00035\n", + " 59/1 0.23273 0.23154 +/- 0.00034\n", + " 60/1 0.22842 0.23146 +/- 0.00034\n", + " 61/1 0.23344 0.23151 +/- 0.00033\n", + " 62/1 0.23333 0.23155 +/- 0.00033\n", + " 63/1 0.22987 0.23151 +/- 0.00032\n", + " 64/1 0.23117 0.23150 +/- 0.00032\n", + " 65/1 0.23197 0.23151 +/- 0.00031\n", + " 66/1 0.23379 0.23156 +/- 0.00031\n", + " 67/1 0.23461 0.23163 +/- 0.00031\n", + " 68/1 0.23109 0.23162 +/- 0.00030\n", + " 69/1 0.22916 0.23157 +/- 0.00030\n", + " 70/1 0.23008 0.23154 +/- 0.00029\n", + " 71/1 0.23157 0.23154 +/- 0.00029\n", + " 72/1 0.23126 0.23153 +/- 0.00028\n", + " 73/1 0.23377 0.23157 +/- 0.00028\n", + " 74/1 0.23105 0.23157 +/- 0.00028\n", + " 75/1 0.23654 0.23166 +/- 0.00029\n", + " 76/1 0.23198 0.23166 +/- 0.00028\n", + " 77/1 0.23390 0.23170 +/- 0.00028\n", + " 78/1 0.23455 0.23175 +/- 0.00028\n", + " 79/1 0.23245 0.23176 +/- 0.00027\n", + " 80/1 0.23121 0.23175 +/- 0.00027\n", + " 81/1 0.23183 0.23175 +/- 0.00026\n", + " 82/1 0.23496 0.23181 +/- 0.00027\n", + " 83/1 0.22763 0.23174 +/- 0.00027\n", + " 84/1 0.23184 0.23174 +/- 0.00027\n", + " 85/1 0.23074 0.23173 +/- 0.00026\n", + " 86/1 0.23178 0.23173 +/- 0.00026\n", + " 87/1 0.23135 0.23172 +/- 0.00025\n", + " 88/1 0.23117 0.23171 +/- 0.00025\n", + " 89/1 0.22815 0.23166 +/- 0.00025\n", + " 90/1 0.22852 0.23162 +/- 0.00025\n", + " 91/1 0.22910 0.23158 +/- 0.00025\n", + " 92/1 0.23143 0.23158 +/- 0.00025\n", + " 93/1 0.23097 0.23157 +/- 0.00024\n", + " 94/1 0.23348 0.23160 +/- 0.00024\n", + " 95/1 0.23068 0.23158 +/- 0.00024\n", + " 96/1 0.23089 0.23157 +/- 0.00024\n", + " 97/1 0.23373 0.23160 +/- 0.00024\n", + " 98/1 0.23336 0.23163 +/- 0.00023\n", + " 99/1 0.23084 0.23162 +/- 0.00023\n", + " 100/1 0.23116 0.23161 +/- 0.00023\n", + " Creating state point statepoint.100.h5...\n", + " Writing unstructured mesh tally_1.100.vtk...\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 1.8046e+02 seconds\n", + " Reading cross sections = 5.9341e-01 seconds\n", + " Total time in simulation = 2.5552e+02 seconds\n", + " Time in transport only = 2.5029e+02 seconds\n", + " Time in inactive batches = 6.7244e+00 seconds\n", + " Time in active batches = 2.4879e+02 seconds\n", + " Time synchronizing fission bank = 9.6409e-01 seconds\n", + " Sampling source sites = 7.6501e-01 seconds\n", + " SEND/RECV source sites = 1.9888e-01 seconds\n", + " Time accumulating tallies = 2.9884e-01 seconds\n", + " Total time for finalization = 5.7441e-01 seconds\n", + " Total time elapsed = 4.3679e+02 seconds\n", + " Calculation Rate (inactive) = 297423.0 particles/second\n", + " Calculation Rate (active) = 32155.0 particles/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " k-effective (Collision) = 0.23129 +/- 0.00020\n", + " k-effective (Track-length) = 0.23161 +/- 0.00023\n", + " k-effective (Absorption) = 0.23099 +/- 0.00019\n", + " Combined k-effective = 0.23119 +/- 0.00017\n", + " Leakage Fraction = 0.79477 +/- 0.00014\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0.23118721242922136+/-0.00017018932314030727" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.settings.particles = 100_000\n", + "model.settings.inactive = 20\n", + "model.settings.batches = 100\n", + "model.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At the end of the simulation, we see the statepoint file along with a file named \"tally_1.100.vtk\". This file contains the results of the unstructured mesh tally with convenient labels for the scores applied. In our case the following scores will be present in the VTK:\n", + "\n", + " - flux_total_value\n", + " - flux_total_std_dev\n", + " - heating_total_value\n", + " - heading_total_std_dev\n", + " \n", + " Where \"total\" represents \n", + " \n", + "\n", + "Currently, an unstructured VTK file will only be generated for tallies if the unstructured mesh is is the only filter applied to that tally. All results for the unstructured mesh tally are present in the statepoint file regardless of the number of filters applied, however.\n", + "\n", + "These files can be viewed using free tools like [Paraview](https://www.paraview.org/) and [VisIt](https://wci.llnl.gov/simulation/computer-codes/visit/) to examine the results." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tally_1.100.vtk\r\n" + ] + } + ], + "source": [ + "!ls *.vtk" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Flux\n", + "![Unstructured Mesh Flux](./images/umesh_flux.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Heating\n", + "Here is an image of the heating score as viewed in VisIt. Note that no heating is scored in the water-filled channels as expected.\n", + "\n", + "![Unstructured Mesh Heating](./images/umesh_heating.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Statepoint Data" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(340144, 1, 2)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp = openmc.StatePoint(\"statepoint.100.h5\")\n", + "tally = sp.tallies[1]\n", + "tally.mean.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enough information for visualization of results on the unstructured mesh is also provided in the statepoint file. Namely, the mesh element volumes and centroids are available." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1.43381086e-04]\n", + " [1.48043747e-04]\n", + " [1.60408339e-04]\n", + " ...\n", + " [7.04197023e-05]\n", + " [7.04197023e-05]\n", + " [7.04197023e-05]]\n", + "[[ 2.88485691 -2.55429784 9.97768184]\n", + " [ 2.87565092 -2.60469781 9.8884092 ]\n", + " [ 2.85832254 -2.65291228 9.97768184]\n", + " ...\n", + " [ 1.46082175 -1.15569203 -3.62914358]\n", + " [ 1.4443143 -1.1321793 -3.65475081]\n", + " [ 1.46884412 -1.15657736 -3.68206543]]\n" + ] + } + ], + "source": [ + "umesh = sp.meshes[1]\n", + "print(umesh.volumes)\n", + "print(umesh.centroids)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The combination of these values can provide for an appoxmiate visualization of the unstructured mesh without its explicit representation or use of an additional mesh library." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We hope you've found this example notebook useful. More unstructured mesh features are under development and will be included in additional examples soon.\n", + "\n", + "![Unstructured Mesh w/ Assembly](./images/umesh_w_assembly.png)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}