Merge remote-tracking branch 'upstream/develop' into multipole

This commit is contained in:
Sterling Harper 2016-04-18 15:03:13 -04:00
commit 84cd9702cd
79 changed files with 3454 additions and 3505 deletions

1
.gitignore vendored
View file

@ -26,6 +26,7 @@ examples/python/**/*.xml
docs/build
docs/source/_images/*.pdf
docs/source/_images/*.aux
docs/source/pythonapi/generated/
# Source build
build

View file

@ -0,0 +1,7 @@
{{ fullname }}
{{ underline }}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:members:

View file

@ -24,13 +24,8 @@ except ImportError:
from mock import Mock as MagicMock
class Mock(MagicMock):
@classmethod
def __getattr__(cls, name):
return Mock()
MOCK_MODULES = ['numpy', 'h5py', 'pandas', 'opencg']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
sys.modules.update((mod_name, MagicMock()) for mod_name in MOCK_MODULES)
# If extensions (or modules to document with autodoc) are in another directory,
@ -48,6 +43,8 @@ extensions = ['sphinx.ext.autodoc',
'sphinx.ext.napoleon',
'sphinx.ext.mathjax',
'sphinx.ext.autosummary',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
'sphinx_numfig',
'notebook_sphinxext']
@ -65,7 +62,7 @@ master_doc = 'index'
# General information about the project.
project = u'OpenMC'
copyright = u'2011-2015, Massachusetts Institute of Technology'
copyright = u'2011-2016, Massachusetts Institute of Technology'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@ -122,20 +119,13 @@ pygments_style = 'tango'
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
if on_rtd:
html_theme = 'default'
html_logo = '_images/openmc200px.png'
else:
html_theme = 'haiku'
html_theme_options = {'full_logo': True,
'linkcolor': '#0c3762',
'visitedlinkcolor': '#0c3762'}
html_logo = '_images/openmc.png'
# The theme to use for HTML and HTML Help pages
if not on_rtd:
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = ["_theme"]
html_logo = '_images/openmc200px.png'
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
@ -248,4 +238,12 @@ latex_elements = {
#Autodocumentation Flags
#autodoc_member_order = "groupwise"
#autoclass_content = "both"
#autosummary_generate = []
autosummary_generate = True
napoleon_use_ivar = True
intersphinx_mapping = {
'python': ('https://docs.python.org/3', None),
'numpy': ('http://docs.scipy.org/doc/numpy/', None),
'pandas': ('http://pandas.pydata.org/pandas-docs/stable/', None)
}

View file

@ -1,8 +0,0 @@
.. _pythonapi_ace:
==========
ACE Format
==========
.. automodule:: openmc.ace
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_cmfd:
====
CMFD
====
.. automodule:: openmc.cmfd
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_element:
=======
Element
=======
.. automodule:: openmc.element
:members:

View file

@ -141,15 +141,12 @@
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import openmc\n",
"import openmc.mgxs as mgxs\n",
"from openmc.source import Source\n",
"from openmc.stats import Box\n",
"\n",
"%matplotlib inline"
"import openmc.mgxs as mgxs"
]
},
{
@ -342,9 +339,11 @@
"settings_file.inactive = inactive\n",
"settings_file.particles = particles\n",
"settings_file.output = {'tallies': True}\n",
"\n",
"# Create an initial uniform spatial source distribution over fissionable zones\n",
"bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n",
"settings_file.source = Source(space=Box(\n",
" bounds[:3], bounds[3:], only_fissionable=True))\n",
"uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n",
"settings_file.source = openmc.source.Source(space=uniform_dist)\n",
"\n",
"# Export to \"settings.xml\"\n",
"settings_file.export_to_xml()"
@ -423,22 +422,24 @@
"data": {
"text/plain": [
"OrderedDict([('flux', Tally\n",
" \tID =\t10000\n",
" \tName =\t\n",
" \tFilters =\t\n",
" \t\tcell\t[1]\n",
" \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n",
" \tNuclides =\ttotal \n",
" \tScores =\t['flux']\n",
" \tEstimator =\ttracklength), ('absorption', Tally\n",
" \tID =\t10001\n",
" \tName =\t\n",
" \tFilters =\t\n",
" \t\tcell\t[1]\n",
" \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n",
" \tNuclides =\ttotal \n",
" \tScores =\t['absorption']\n",
" \tEstimator =\ttracklength)])"
"\tID =\t10000\n",
"\tName =\t\n",
"\tFilters =\t\n",
" \t\tcell\t[1]\n",
" \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n",
"\tNuclides =\ttotal \n",
"\tScores =\t['flux']\n",
"\tEstimator =\ttracklength\n",
"), ('absorption', Tally\n",
"\tID =\t10001\n",
"\tName =\t\n",
"\tFilters =\t\n",
" \t\tcell\t[1]\n",
" \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n",
"\tNuclides =\ttotal \n",
"\tScores =\t['absorption']\n",
"\tEstimator =\ttracklength\n",
")])"
]
},
"execution_count": 13,
@ -518,10 +519,9 @@
" Copyright: 2011-2015 Massachusetts Institute of Technology\n",
" License: http://mit-crpg.github.io/openmc/license.html\n",
" Version: 0.7.1\n",
" Git SHA1: 5f252e2df51930b9175fd41bafa8db01f3eaeb92\n",
" Date/Time: 2016-03-23 14:42:51\n",
" Git SHA1: eeb5091ca3a34cc85df73a3318cae2b6c7097413\n",
" Date/Time: 2016-04-13 11:24:09\n",
" MPI Processes: 1\n",
" OpenMP Threads: 16\n",
"\n",
" ===========================================================================\n",
" ========================> INITIALIZATION <=========================\n",
@ -606,20 +606,20 @@
"\n",
" =======================> TIMING STATISTICS <=======================\n",
"\n",
" Total time for initialization = 4.6200E-01 seconds\n",
" Reading cross sections = 1.3100E-01 seconds\n",
" Total time in simulation = 2.4000E+00 seconds\n",
" Time in transport only = 2.1340E+00 seconds\n",
" Time in inactive batches = 2.6400E-01 seconds\n",
" Time in active batches = 2.1360E+00 seconds\n",
" Time synchronizing fission bank = 2.0000E-03 seconds\n",
" Sampling source sites = 2.0000E-03 seconds\n",
" SEND/RECV source sites = 0.0000E+00 seconds\n",
" Total time for initialization = 4.6300E-01 seconds\n",
" Reading cross sections = 1.2100E-01 seconds\n",
" Total time in simulation = 1.6504E+01 seconds\n",
" Time in transport only = 1.6479E+01 seconds\n",
" Time in inactive batches = 1.9620E+00 seconds\n",
" Time in active batches = 1.4542E+01 seconds\n",
" Time synchronizing fission bank = 1.0000E-02 seconds\n",
" Sampling source sites = 4.0000E-03 seconds\n",
" SEND/RECV source sites = 3.0000E-03 seconds\n",
" Time accumulating tallies = 0.0000E+00 seconds\n",
" Total time for finalization = 1.0000E-03 seconds\n",
" Total time elapsed = 2.8800E+00 seconds\n",
" Calculation Rate (inactive) = 94697.0 neutrons/second\n",
" Calculation Rate (active) = 46816.5 neutrons/second\n",
" Total time for finalization = 0.0000E+00 seconds\n",
" Total time elapsed = 1.6977E+01 seconds\n",
" Calculation Rate (inactive) = 12742.1 neutrons/second\n",
" Calculation Rate (active) = 6876.63 neutrons/second\n",
"\n",
" ============================> RESULTS <============================\n",
"\n",
@ -914,7 +914,7 @@
" <td>6.250000e-07</td>\n",
" <td>total</td>\n",
" <td>(((total / flux) - (absorption / flux)) - (sca...</td>\n",
" <td>8.881784e-16</td>\n",
" <td>-3.774758e-15</td>\n",
" <td>0.011292</td>\n",
" </tr>\n",
" <tr>\n",
@ -924,7 +924,7 @@
" <td>2.000000e+01</td>\n",
" <td>total</td>\n",
" <td>(((total / flux) - (absorption / flux)) - (sca...</td>\n",
" <td>-9.992007e-16</td>\n",
" <td>1.443290e-15</td>\n",
" <td>0.002570</td>\n",
" </tr>\n",
" </tbody>\n",
@ -937,8 +937,8 @@
"1 1 6.25e-07 2.00e+01 total \n",
"\n",
" score mean std. dev. \n",
"0 (((total / flux) - (absorption / flux)) - (sca... 8.88e-16 1.13e-02 \n",
"1 (((total / flux) - (absorption / flux)) - (sca... -9.99e-16 2.57e-03 "
"0 (((total / flux) - (absorption / flux)) - (sca... -3.77e-15 1.13e-02 \n",
"1 (((total / flux) - (absorption / flux)) - (sca... 1.44e-15 2.57e-03 "
]
},
"execution_count": 23,
@ -1201,7 +1201,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
"version": "2.7.6"
}
},
"nbformat": 4,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -15,7 +15,16 @@
"metadata": {
"collapsed": false
},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
@ -33,13 +42,7 @@
"from IPython.display import Image\n",
"import numpy as np\n",
"\n",
"import openmc\n",
"from openmc.statepoint import StatePoint\n",
"from openmc.summary import Summary\n",
"from openmc.source import Source\n",
"from openmc.stats import Box\n",
"\n",
"%matplotlib inline"
"import openmc"
]
},
{
@ -289,9 +292,11 @@
"settings_file.inactive = inactive\n",
"settings_file.particles = particles\n",
"settings_file.output = {'tallies': True}\n",
"source_bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n",
"settings_file.source = Source(space=Box(\n",
" source_bounds[:3], source_bounds[3:]))\n",
"\n",
"# Create an initial uniform spatial source distribution over fissionable zones\n",
"bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n",
"uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n",
"settings_file.source = openmc.source.Source(space=uniform_dist)\n",
"\n",
"# Export to \"settings.xml\"\n",
"settings_file.export_to_xml()"
@ -366,7 +371,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+ADFxIyLefz284AAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDMtMjNUMTQ6NTA6\nNDUtMDQ6MDD1gtVmAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTAzLTIzVDE0OjUwOjQ1LTA0OjAw\nhN9t2gAAAABJRU5ErkJggg==\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTYtMDQtMTNUMTE6Mzk6MTQtMDQ6MDALPlLjAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA0LTEz\nVDExOjM5OjE0LTA0OjAwemPqXwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
@ -570,10 +575,9 @@
" Copyright: 2011-2015 Massachusetts Institute of Technology\n",
" License: http://mit-crpg.github.io/openmc/license.html\n",
" Version: 0.7.1\n",
" Git SHA1: 5f252e2df51930b9175fd41bafa8db01f3eaeb92\n",
" Date/Time: 2016-03-23 14:50:46\n",
" Git SHA1: eeb5091ca3a34cc85df73a3318cae2b6c7097413\n",
" Date/Time: 2016-04-13 11:39:14\n",
" MPI Processes: 1\n",
" OpenMP Threads: 16\n",
"\n",
" ===========================================================================\n",
" ========================> INITIALIZATION <=========================\n",
@ -600,26 +604,26 @@
"\n",
" Bat./Gen. k Average k \n",
" ========= ======== ==================== \n",
" 1/1 1.03167 \n",
" 2/1 1.03535 \n",
" 3/1 1.02709 \n",
" 4/1 1.00637 \n",
" 5/1 0.99250 \n",
" 6/1 1.06116 \n",
" 7/1 1.04289 1.05202 +/- 0.00913\n",
" 8/1 1.04779 1.05061 +/- 0.00546\n",
" 9/1 1.04695 1.04969 +/- 0.00397\n",
" 10/1 0.98778 1.03731 +/- 0.01276\n",
" 11/1 1.05810 1.04078 +/- 0.01098\n",
" 12/1 1.01539 1.03715 +/- 0.00996\n",
" 13/1 1.08644 1.04331 +/- 0.01060\n",
" 14/1 1.06425 1.04564 +/- 0.00963\n",
" 15/1 1.01768 1.04284 +/- 0.00906\n",
" 16/1 1.05877 1.04429 +/- 0.00832\n",
" 17/1 1.02195 1.04243 +/- 0.00782\n",
" 18/1 1.02488 1.04108 +/- 0.00732\n",
" 19/1 1.06285 1.04263 +/- 0.00695\n",
" 20/1 0.98751 1.03896 +/- 0.00744\n",
" 1/1 1.03471 \n",
" 2/1 1.03257 \n",
" 3/1 1.00600 \n",
" 4/1 1.04547 \n",
" 5/1 1.02287 \n",
" 6/1 1.05752 \n",
" 7/1 1.04283 1.05017 +/- 0.00734\n",
" 8/1 1.05189 1.05074 +/- 0.00428\n",
" 9/1 1.01645 1.04217 +/- 0.00909\n",
" 10/1 1.04978 1.04369 +/- 0.00721\n",
" 11/1 1.03459 1.04218 +/- 0.00608\n",
" 12/1 1.04019 1.04189 +/- 0.00514\n",
" 13/1 1.05985 1.04414 +/- 0.00499\n",
" 14/1 1.02111 1.04158 +/- 0.00509\n",
" 15/1 1.04774 1.04219 +/- 0.00459\n",
" 16/1 1.00733 1.03902 +/- 0.00523\n",
" 17/1 1.02224 1.03763 +/- 0.00497\n",
" 18/1 1.03263 1.03724 +/- 0.00459\n",
" 19/1 1.01611 1.03573 +/- 0.00451\n",
" 20/1 1.04692 1.03648 +/- 0.00426\n",
" Creating state point statepoint.20.h5...\n",
"\n",
" ===========================================================================\n",
@ -629,27 +633,27 @@
"\n",
" =======================> TIMING STATISTICS <=======================\n",
"\n",
" Total time for initialization = 5.0400E-01 seconds\n",
" Reading cross sections = 1.5000E-01 seconds\n",
" Total time in simulation = 2.1570E+00 seconds\n",
" Time in transport only = 1.9760E+00 seconds\n",
" Time in inactive batches = 3.3600E-01 seconds\n",
" Time in active batches = 1.8210E+00 seconds\n",
" Time synchronizing fission bank = 4.0000E-03 seconds\n",
" Sampling source sites = 3.0000E-03 seconds\n",
" Total time for initialization = 4.0300E-01 seconds\n",
" Reading cross sections = 8.6000E-02 seconds\n",
" Total time in simulation = 1.4439E+01 seconds\n",
" Time in transport only = 1.4430E+01 seconds\n",
" Time in inactive batches = 2.2790E+00 seconds\n",
" Time in active batches = 1.2160E+01 seconds\n",
" Time synchronizing fission bank = 2.0000E-03 seconds\n",
" Sampling source sites = 1.0000E-03 seconds\n",
" SEND/RECV source sites = 1.0000E-03 seconds\n",
" Time accumulating tallies = 0.0000E+00 seconds\n",
" Total time for finalization = 2.0000E-03 seconds\n",
" Total time elapsed = 2.6800E+00 seconds\n",
" Calculation Rate (inactive) = 37202.4 neutrons/second\n",
" Calculation Rate (active) = 20593.1 neutrons/second\n",
" Total time for finalization = 1.0000E-03 seconds\n",
" Total time elapsed = 1.4856E+01 seconds\n",
" Calculation Rate (inactive) = 5484.86 neutrons/second\n",
" Calculation Rate (active) = 3083.88 neutrons/second\n",
"\n",
" ============================> RESULTS <============================\n",
"\n",
" k-effective (Collision) = 1.03965 +/- 0.00597\n",
" k-effective (Track-length) = 1.03896 +/- 0.00744\n",
" k-effective (Absorption) = 1.03976 +/- 0.00606\n",
" Combined k-effective = 1.03991 +/- 0.00536\n",
" k-effective (Collision) = 1.03296 +/- 0.00669\n",
" k-effective (Track-length) = 1.03648 +/- 0.00426\n",
" k-effective (Absorption) = 1.03431 +/- 0.00702\n",
" Combined k-effective = 1.03621 +/- 0.00456\n",
" Leakage Fraction = 0.00000 +/- 0.00000\n",
"\n"
]
@ -697,7 +701,7 @@
"outputs": [],
"source": [
"# Load the statepoint file\n",
"sp = StatePoint('statepoint.20.h5')"
"sp = openmc.StatePoint('statepoint.20.h5')"
]
},
{
@ -717,7 +721,7 @@
"outputs": [],
"source": [
"# Load the summary file and link with statepoint\n",
"su = Summary('summary.h5')\n",
"su = openmc.Summary('summary.h5')\n",
"sp.link_with_summary(su)"
]
},
@ -756,8 +760,8 @@
" <th>0</th>\n",
" <td>total</td>\n",
" <td>(nu-fission / absorption)</td>\n",
" <td>1.036847</td>\n",
" <td>0.009685</td>\n",
" <td>1.038387</td>\n",
" <td>0.006141</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -765,7 +769,7 @@
],
"text/plain": [
" nuclide score mean std. dev.\n",
"0 total (nu-fission / absorption) 1.04e+00 9.69e-03"
"0 total (nu-fission / absorption) 1.04e+00 6.14e-03"
]
},
"execution_count": 26,
@ -820,8 +824,8 @@
" <td>6.250000e-07</td>\n",
" <td>total</td>\n",
" <td>absorption</td>\n",
" <td>0.692034</td>\n",
" <td>0.007217</td>\n",
" <td>0.693337</td>\n",
" <td>0.004109</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -829,7 +833,7 @@
],
"text/plain": [
" energy low [MeV] energy high [MeV] nuclide score mean std. dev.\n",
"0 0.00e+00 6.25e-07 total absorption 6.92e-01 7.22e-03"
"0 0.00e+00 6.25e-07 total absorption 6.93e-01 4.11e-03"
]
},
"execution_count": 27,
@ -882,8 +886,8 @@
" <td>6.250000e-07</td>\n",
" <td>total</td>\n",
" <td>nu-fission</td>\n",
" <td>1.202298</td>\n",
" <td>0.013385</td>\n",
" <td>1.203042</td>\n",
" <td>0.0076</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -891,7 +895,7 @@
],
"text/plain": [
" energy low [MeV] energy high [MeV] nuclide score mean std. dev.\n",
"0 0.00e+00 6.25e-07 total nu-fission 1.20e+00 1.34e-02"
"0 0.00e+00 6.25e-07 total nu-fission 1.20e+00 7.60e-03"
]
},
"execution_count": 28,
@ -947,8 +951,8 @@
" <td>10000</td>\n",
" <td>total</td>\n",
" <td>absorption</td>\n",
" <td>0.749151</td>\n",
" <td>0.009003</td>\n",
" <td>0.748413</td>\n",
" <td>0.004723</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -956,10 +960,10 @@
],
"text/plain": [
" energy low [MeV] energy high [MeV] cell nuclide score mean \\\n",
"0 0.00e+00 6.25e-07 10000 total absorption 7.49e-01 \n",
"0 0.00e+00 6.25e-07 10000 total absorption 7.48e-01 \n",
"\n",
" std. dev. \n",
"0 9.00e-03 "
"0 4.72e-03 "
]
},
"execution_count": 29,
@ -1013,8 +1017,8 @@
" <td>10000</td>\n",
" <td>total</td>\n",
" <td>(nu-fission / absorption)</td>\n",
" <td>1.663435</td>\n",
" <td>0.019976</td>\n",
" <td>1.663385</td>\n",
" <td>0.011253</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -1025,7 +1029,7 @@
"0 0.00e+00 6.25e-07 10000 total \n",
"\n",
" score mean std. dev. \n",
"0 (nu-fission / absorption) 1.66e+00 2.00e-02 "
"0 (nu-fission / absorption) 1.66e+00 1.13e-02 "
]
},
"execution_count": 30,
@ -1078,8 +1082,8 @@
" <td>10000</td>\n",
" <td>total</td>\n",
" <td>(((absorption * nu-fission) * absorption) * (n...</td>\n",
" <td>1.036847</td>\n",
" <td>0.023674</td>\n",
" <td>1.038387</td>\n",
" <td>0.01316</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -1090,7 +1094,7 @@
"0 0.00e+00 6.25e-07 10000 total \n",
"\n",
" score mean std. dev. \n",
"0 (((absorption * nu-fission) * absorption) * (n... 1.04e+00 2.37e-02 "
"0 (((absorption * nu-fission) * absorption) * (n... 1.04e+00 1.32e-02 "
]
},
"execution_count": 31,
@ -1160,8 +1164,8 @@
" <td>6.250000e-07</td>\n",
" <td>(U-238 / total)</td>\n",
" <td>(nu-fission / flux)</td>\n",
" <td>6.627781e-07</td>\n",
" <td>7.082494e-09</td>\n",
" <td>6.636968e-07</td>\n",
" <td>4.132875e-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
@ -1170,8 +1174,8 @@
" <td>6.250000e-07</td>\n",
" <td>(U-238 / total)</td>\n",
" <td>(scatter / flux)</td>\n",
" <td>2.099843e-01</td>\n",
" <td>2.003686e-03</td>\n",
" <td>2.099856e-01</td>\n",
" <td>1.232455e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
@ -1180,8 +1184,8 @@
" <td>6.250000e-07</td>\n",
" <td>(U-235 / total)</td>\n",
" <td>(nu-fission / flux)</td>\n",
" <td>3.547246e-01</td>\n",
" <td>3.854562e-03</td>\n",
" <td>3.552458e-01</td>\n",
" <td>2.252681e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
@ -1190,8 +1194,8 @@
" <td>6.250000e-07</td>\n",
" <td>(U-235 / total)</td>\n",
" <td>(scatter / flux)</td>\n",
" <td>5.554185e-03</td>\n",
" <td>5.316706e-05</td>\n",
" <td>5.554345e-03</td>\n",
" <td>3.265385e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
@ -1200,8 +1204,8 @@
" <td>2.000000e+01</td>\n",
" <td>(U-238 / total)</td>\n",
" <td>(nu-fission / flux)</td>\n",
" <td>7.151165e-03</td>\n",
" <td>5.480545e-05</td>\n",
" <td>7.126668e-03</td>\n",
" <td>5.296883e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
@ -1210,8 +1214,8 @@
" <td>2.000000e+01</td>\n",
" <td>(U-238 / total)</td>\n",
" <td>(scatter / flux)</td>\n",
" <td>2.278981e-01</td>\n",
" <td>6.424480e-04</td>\n",
" <td>2.277460e-01</td>\n",
" <td>1.003558e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
@ -1220,8 +1224,8 @@
" <td>2.000000e+01</td>\n",
" <td>(U-235 / total)</td>\n",
" <td>(nu-fission / flux)</td>\n",
" <td>8.073636e-03</td>\n",
" <td>4.374754e-05</td>\n",
" <td>8.010911e-03</td>\n",
" <td>6.802256e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
@ -1230,8 +1234,8 @@
" <td>2.000000e+01</td>\n",
" <td>(U-235 / total)</td>\n",
" <td>(scatter / flux)</td>\n",
" <td>3.369592e-03</td>\n",
" <td>8.971220e-06</td>\n",
" <td>3.367794e-03</td>\n",
" <td>1.443644e-05</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -1249,14 +1253,14 @@
"7 10000 6.25e-07 2.00e+01 (U-235 / total) \n",
"\n",
" score mean std. dev. \n",
"0 (nu-fission / flux) 6.63e-07 7.08e-09 \n",
"1 (scatter / flux) 2.10e-01 2.00e-03 \n",
"2 (nu-fission / flux) 3.55e-01 3.85e-03 \n",
"3 (scatter / flux) 5.55e-03 5.32e-05 \n",
"4 (nu-fission / flux) 7.15e-03 5.48e-05 \n",
"5 (scatter / flux) 2.28e-01 6.42e-04 \n",
"6 (nu-fission / flux) 8.07e-03 4.37e-05 \n",
"7 (scatter / flux) 3.37e-03 8.97e-06 "
"0 (nu-fission / flux) 6.64e-07 4.13e-09 \n",
"1 (scatter / flux) 2.10e-01 1.23e-03 \n",
"2 (nu-fission / flux) 3.55e-01 2.25e-03 \n",
"3 (scatter / flux) 5.55e-03 3.27e-05 \n",
"4 (nu-fission / flux) 7.13e-03 5.30e-05 \n",
"5 (scatter / flux) 2.28e-01 1.00e-03 \n",
"6 (nu-fission / flux) 8.01e-03 6.80e-05 \n",
"7 (scatter / flux) 3.37e-03 1.44e-05 "
]
},
"execution_count": 33,
@ -1287,11 +1291,11 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[[[ 6.62778145e-07]\n",
" [ 3.54724568e-01]]\n",
"[[[ 6.63696783e-07]\n",
" [ 3.55245846e-01]]\n",
"\n",
" [[ 7.15116511e-03]\n",
" [ 8.07363630e-03]]]\n"
" [[ 7.12666800e-03]\n",
" [ 8.01091088e-03]]]\n"
]
}
],
@ -1319,9 +1323,9 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[[[ 0.00555418]]\n",
"[[[ 0.00555435]]\n",
"\n",
" [[ 0.00336959]]]\n"
" [[ 0.00336779]]]\n"
]
}
],
@ -1343,8 +1347,8 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[[[ 0.22789806]\n",
" [ 0.00336959]]]\n"
"[[[ 0.22774598]\n",
" [ 0.00336779]]]\n"
]
}
],
@ -1396,7 +1400,7 @@
" <td>U-238</td>\n",
" <td>nu-fission</td>\n",
" <td>0.000002</td>\n",
" <td>1.338459e-08</td>\n",
" <td>7.473789e-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
@ -1405,8 +1409,8 @@
" <td>6.250000e-07</td>\n",
" <td>U-235</td>\n",
" <td>nu-fission</td>\n",
" <td>0.864141</td>\n",
" <td>7.363278e-03</td>\n",
" <td>0.861547</td>\n",
" <td>4.131310e-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
@ -1415,8 +1419,8 @@
" <td>2.000000e+01</td>\n",
" <td>U-238</td>\n",
" <td>nu-fission</td>\n",
" <td>0.082111</td>\n",
" <td>6.090952e-04</td>\n",
" <td>0.082356</td>\n",
" <td>5.560461e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
@ -1425,8 +1429,8 @@
" <td>2.000000e+01</td>\n",
" <td>U-235</td>\n",
" <td>nu-fission</td>\n",
" <td>0.092703</td>\n",
" <td>4.695215e-04</td>\n",
" <td>0.092574</td>\n",
" <td>7.315442e-04</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -1435,15 +1439,15 @@
"text/plain": [
" cell energy low [MeV] energy high [MeV] nuclide score mean \\\n",
"0 10000 0.00e+00 6.25e-07 U-238 nu-fission 1.61e-06 \n",
"1 10000 0.00e+00 6.25e-07 U-235 nu-fission 8.64e-01 \n",
"2 10000 6.25e-07 2.00e+01 U-238 nu-fission 8.21e-02 \n",
"3 10000 6.25e-07 2.00e+01 U-235 nu-fission 9.27e-02 \n",
"1 10000 0.00e+00 6.25e-07 U-235 nu-fission 8.62e-01 \n",
"2 10000 6.25e-07 2.00e+01 U-238 nu-fission 8.24e-02 \n",
"3 10000 6.25e-07 2.00e+01 U-235 nu-fission 9.26e-02 \n",
"\n",
" std. dev. \n",
"0 1.34e-08 \n",
"1 7.36e-03 \n",
"2 6.09e-04 \n",
"3 4.70e-04 "
"0 7.47e-09 \n",
"1 4.13e-03 \n",
"2 5.56e-04 \n",
"3 7.32e-04 "
]
},
"execution_count": 37,
@ -1489,8 +1493,8 @@
" <td>1.080060e-07</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>4.591022</td>\n",
" <td>0.043961</td>\n",
" <td>4.599225</td>\n",
" <td>0.015973</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
@ -1499,8 +1503,8 @@
" <td>1.166529e-06</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>2.032481</td>\n",
" <td>0.010876</td>\n",
" <td>2.037260</td>\n",
" <td>0.011236</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
@ -1509,8 +1513,8 @@
" <td>1.259921e-05</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>1.654187</td>\n",
" <td>0.012130</td>\n",
" <td>1.662552</td>\n",
" <td>0.010280</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
@ -1519,8 +1523,8 @@
" <td>1.360790e-04</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>1.864771</td>\n",
" <td>0.011649</td>\n",
" <td>1.872201</td>\n",
" <td>0.012136</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
@ -1529,8 +1533,8 @@
" <td>1.469734e-03</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>2.056893</td>\n",
" <td>0.008555</td>\n",
" <td>2.080459</td>\n",
" <td>0.013155</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
@ -1539,8 +1543,8 @@
" <td>1.587401e-02</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>2.138833</td>\n",
" <td>0.015180</td>\n",
" <td>2.154996</td>\n",
" <td>0.011975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
@ -1549,8 +1553,8 @@
" <td>1.714488e-01</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>2.207209</td>\n",
" <td>0.014853</td>\n",
" <td>2.218740</td>\n",
" <td>0.008528</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
@ -1559,8 +1563,8 @@
" <td>1.851749e+00</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>1.999407</td>\n",
" <td>0.009053</td>\n",
" <td>2.010517</td>\n",
" <td>0.009187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
@ -1569,8 +1573,8 @@
" <td>2.000000e+01</td>\n",
" <td>H-1</td>\n",
" <td>scatter</td>\n",
" <td>0.368760</td>\n",
" <td>0.003373</td>\n",
" <td>0.372022</td>\n",
" <td>0.003196</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@ -1578,26 +1582,26 @@
],
"text/plain": [
" cell energy low [MeV] energy high [MeV] nuclide score mean \\\n",
"0 10002 1.00e-08 1.08e-07 H-1 scatter 4.59e+00 \n",
"1 10002 1.08e-07 1.17e-06 H-1 scatter 2.03e+00 \n",
"2 10002 1.17e-06 1.26e-05 H-1 scatter 1.65e+00 \n",
"3 10002 1.26e-05 1.36e-04 H-1 scatter 1.86e+00 \n",
"4 10002 1.36e-04 1.47e-03 H-1 scatter 2.06e+00 \n",
"5 10002 1.47e-03 1.59e-02 H-1 scatter 2.14e+00 \n",
"6 10002 1.59e-02 1.71e-01 H-1 scatter 2.21e+00 \n",
"7 10002 1.71e-01 1.85e+00 H-1 scatter 2.00e+00 \n",
"8 10002 1.85e+00 2.00e+01 H-1 scatter 3.69e-01 \n",
"0 10002 1.00e-08 1.08e-07 H-1 scatter 4.60e+00 \n",
"1 10002 1.08e-07 1.17e-06 H-1 scatter 2.04e+00 \n",
"2 10002 1.17e-06 1.26e-05 H-1 scatter 1.66e+00 \n",
"3 10002 1.26e-05 1.36e-04 H-1 scatter 1.87e+00 \n",
"4 10002 1.36e-04 1.47e-03 H-1 scatter 2.08e+00 \n",
"5 10002 1.47e-03 1.59e-02 H-1 scatter 2.15e+00 \n",
"6 10002 1.59e-02 1.71e-01 H-1 scatter 2.22e+00 \n",
"7 10002 1.71e-01 1.85e+00 H-1 scatter 2.01e+00 \n",
"8 10002 1.85e+00 2.00e+01 H-1 scatter 3.72e-01 \n",
"\n",
" std. dev. \n",
"0 4.40e-02 \n",
"1 1.09e-02 \n",
"2 1.21e-02 \n",
"3 1.16e-02 \n",
"4 8.56e-03 \n",
"5 1.52e-02 \n",
"6 1.49e-02 \n",
"7 9.05e-03 \n",
"8 3.37e-03 "
"0 1.60e-02 \n",
"1 1.12e-02 \n",
"2 1.03e-02 \n",
"3 1.21e-02 \n",
"4 1.32e-02 \n",
"5 1.20e-02 \n",
"6 8.53e-03 \n",
"7 9.19e-03 \n",
"8 3.20e-03 "
]
},
"execution_count": 38,
@ -1630,7 +1634,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
"version": "2.7.6"
}
},
"nbformat": 4,

View file

@ -1,8 +0,0 @@
.. _pythonapi_executor:
========
Executor
========
.. automodule:: openmc.executor
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_filter:
======
Filter
======
.. automodule:: openmc.filter
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_geometry:
========
Geometry
========
.. automodule:: openmc.geometry
:members:

View file

@ -13,61 +13,267 @@ online. We recommend going through the modules from Codecademy_ and/or the
`Scipy lectures`_. The full API documentation serves to provide more information
on a given module or class.
**Handling nuclear data:**
------------------------------------
:mod:`openmc` -- Basic Functionality
------------------------------------
.. toctree::
:maxdepth: 1
Handling nuclear data
---------------------
ace
mgxs_library
Classes
+++++++
**Creating input files:**
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
.. toctree::
:maxdepth: 1
openmc.XSdata
openmc.MGXSLibraryFile
cmfd
element
filter
geometry
material
mesh
nuclide
opencg_compatible
plots
settings
source
stats
surface
tallies
trigger
universe
Functions
+++++++++
**Running OpenMC:**
.. autosummary::
:toctree: generated
:nosignatures:
.. toctree::
:maxdepth: 1
openmc.ace.ascii_to_binary
executor
Simulation Settings
-------------------
**Post-processing:**
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
.. toctree::
:maxdepth: 1
openmc.Source
openmc.ResonanceScattering
openmc.SettingsFile
particle_restart
statepoint
summary
tallies
Material Specification
----------------------
**Multi-Group Cross Section Generation**
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
.. toctree::
:maxdepth: 1
openmc.Nuclide
openmc.Element
openmc.Macroscopic
openmc.Material
openmc.MaterialsFile
mgxs
Building geometry
-----------------
**Example Jupyter Notebooks:**
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.Plane
openmc.XPlane
openmc.YPlane
openmc.ZPlane
openmc.XCylinder
openmc.YCylinder
openmc.ZCylinder
openmc.Sphere
openmc.Cone
openmc.XCone
openmc.YCone
openmc.ZCone
openmc.Quadric
openmc.Halfspace
openmc.Intersection
openmc.Union
openmc.Complement
openmc.Cell
openmc.Universe
openmc.RectLattice
openmc.HexLattice
openmc.Geometry
openmc.GeometryFile
Many of the above classes are derived from several abstract classes:
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.Surface
openmc.Region
openmc.Lattice
Constructing Tallies
--------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.Filter
openmc.Mesh
openmc.Trigger
openmc.Tally
openmc.TalliesFile
Coarse Mesh Finite Difference Acceleration
------------------------------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.CMFDMesh
openmc.CMFDFile
Plotting
--------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.Plot
openmc.PlotsFile
Running OpenMC
--------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.Executor
Post-processing
---------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.Particle
openmc.StatePoint
openmc.Summary
Various classes may be created when performing tally slicing and/or arithmetic:
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.arithmetic.CrossScore
openmc.arithmetic.CrossNuclide
openmc.arithmetic.CrossFilter
openmc.arithmetic.AggregateScore
openmc.arithmetic.AggregateNuclide
openmc.arithmetic.AggregateFilter
---------------------------------
:mod:`openmc.stats` -- Statistics
---------------------------------
Univariate Probability Distributions
------------------------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.stats.Univariate
openmc.stats.Discrete
openmc.stats.Uniform
openmc.stats.Maxwell
openmc.stats.Watt
openmc.stats.Tabular
Angular Distributions
---------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.stats.UnitSphere
openmc.stats.PolarAzimuthal
openmc.stats.Isotropic
openmc.stats.Monodirectional
Spatial Distributions
---------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.stats.Spatial
openmc.stats.CartesianIndependent
openmc.stats.Box
openmc.stats.Point
----------------------------------------------------------
:mod:`openmc.mgxs` -- Multi-Group Cross Section Generation
----------------------------------------------------------
Energy Groups
-------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.mgxs.EnergyGroups
Multi-group Cross Sections
--------------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.mgxs.MGXS
openmc.mgxs.AbsorptionXS
openmc.mgxs.CaptureXS
openmc.mgxs.Chi
openmc.mgxs.FissionXS
openmc.mgxs.NuFissionXS
openmc.mgxs.NuScatterXS
openmc.mgxs.NuScatterMatrixXS
openmc.mgxs.ScatterXS
openmc.mgxs.ScatterMatrixXS
openmc.mgxs.TotalXS
openmc.mgxs.TransportXS
Multi-group Cross Section Libraries
-----------------------------------
.. autosummary::
:toctree: generated
:nosignatures:
:template: myclass.rst
openmc.mgxs.Library
-------------------------
Example Jupyter Notebooks
-------------------------
.. toctree::
:maxdepth: 1

View file

@ -1,8 +0,0 @@
.. _pythonapi_material:
=========
Materials
=========
.. automodule:: openmc.material
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_mesh:
====
Mesh
====
.. automodule:: openmc.mesh
:members:

View file

@ -1,95 +0,0 @@
.. _pythonapi_mgxs:
==========================
Multi-Group Cross Sections
==========================
----------------------------
Summary of Available Classes
----------------------------
Energy Groups
-------------
.. currentmodule:: openmc.mgxs.groups
.. autosummary::
EnergyGroups
Multi-group Cross Sections
--------------------------
.. currentmodule:: openmc.mgxs.mgxs
.. autosummary::
MGXS
AbsorptionXS
CaptureXS
Chi
FissionXS
NuFissionXS
NuScatterXS
NuScatterMatrixXS
ScatterXS
ScatterMatrixXS
TotalXS
TransportXS
Multi-group Cross Section Libraries
-----------------------------------
.. currentmodule:: openmc.mgxs.library
.. autosummary::
Library
-------------------
Class Documentation
-------------------
.. automodule:: openmc.mgxs.groups
:members:
.. currentmodule:: openmc.mgxs.mgxs
.. autoclass:: MGXS
:members:
.. autoclass:: AbsorptionXS
:members:
.. autoclass:: CaptureXS
:members:
.. autoclass:: Chi
:members:
.. autoclass:: FissionXS
:members:
.. autoclass:: NuFissionXS
:members:
.. autoclass:: NuScatterXS
:members:
.. autoclass:: NuScatterMatrixXS
:members:
.. autoclass:: ScatterXS
:members:
.. autoclass:: ScatterMatrixXS
:members:
.. autoclass:: TotalXS
:members:
.. autoclass:: TransportXS
:members:
.. automodule:: openmc.mgxs.library
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_mgxs_library:
==============================
Multi-group Cross Section Data
==============================
.. automodule:: openmc.mgxs_library
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_nuclide:
=======
Nuclide
=======
.. automodule:: openmc.nuclide
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_particle_restart:
================
Particle Restart
================
.. automodule:: openmc.particle_restart
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_plots:
=====
Plots
=====
.. automodule:: openmc.plots
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_settings:
========
Settings
========
.. automodule:: openmc.settings
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_source:
======
Source
======
.. automodule:: openmc.source
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_statepoint:
==========
Statepoint
==========
.. automodule:: openmc.statepoint
:members:

View file

@ -1,58 +0,0 @@
.. _pythonapi_stats:
=====================
Statistical Functions
=====================
----------------------------
Summary of Available Classes
----------------------------
Univariate Probability Distributions
------------------------------------
.. currentmodule:: openmc.stats.univariate
.. autosummary::
Univariate
Discrete
Uniform
Maxwell
Watt
Tabular
Angular Distributions
---------------------
.. currentmodule:: openmc.stats.multivariate
.. autosummary::
UnitSphere
PolarAzimuthal
Isotropic
Monodirectional
Spatial Distributions
---------------------
.. autosummary::
Spatial
CartesianIndependent
Box
Point
Univariate Probability Distributions
------------------------------------
.. automodule:: openmc.stats.univariate
:members:
Multivariate Probability Distributions
--------------------------------------
.. automodule:: openmc.stats.multivariate
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_summary:
=======
Summary
=======
.. automodule:: openmc.summary
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_surface:
=======
Surface
=======
.. automodule:: openmc.surface
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_tallies:
=======
Tallies
=======
.. automodule:: openmc.tallies
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_trigger:
=======
Trigger
=======
.. automodule:: openmc.trigger
:members:

View file

@ -1,8 +0,0 @@
.. _pythonapi_universe:
========
Universe
========
.. automodule:: openmc.universe
:members:

View file

@ -196,10 +196,10 @@ Data Extraction
A great deal of information is available in statepoint files (See
:ref:`usersguide_statepoint`), all of which is accessible through the Python
API. The ``openmc.statepoint`` module (see :ref:`pythonapi_statepoint`) provides
a class to load statepoints and access data as requested; it is used in many of
the provided plotting utilities, OpenMC's regression test suite, and can be used
in user-created scripts to carry out manipulations of the data.
API. The :class:`openmc.StatePoint` class can load statepoints and access data
as requested; it is used in many of the provided plotting utilities, OpenMC's
regression test suite, and can be used in user-created scripts to carry out
manipulations of the data.
An :ref:`example IPython notebook <notebook_post_processing>` demonstrates how
to extract data from a statepoint using the Python API.

View file

@ -1,6 +1,5 @@
import openmc
from openmc.source import Source
from openmc.stats import Box
###############################################################################
# Simulation Input File Parameters
@ -94,7 +93,12 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box([-4, -4, -4], [4, 4, 4]))
# Create an initial uniform spatial source distribution over fissionable zones
bounds = [-4., -4., -4., 4., 4., 4.]
uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.export_to_xml()

View file

@ -1,8 +1,5 @@
import numpy as np
import openmc
from openmc.source import Source
from openmc.stats import Box
###############################################################################
# Simulation Input File Parameters
@ -119,7 +116,11 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box(*outer_cube.bounding_box))
# Create an initial uniform spatial source distribution over fissionable zones
uniform_dist = openmc.stats.Box(*outer_cube.bounding_box, only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.export_to_xml()
###############################################################################

View file

@ -1,6 +1,4 @@
import openmc
from openmc.source import Source
from openmc.stats import Box
###############################################################################
# Simulation Input File Parameters
@ -126,8 +124,12 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box(
[-1, -1, -1], [1, 1, 1]))
# Create an initial uniform spatial source distribution over fissionable zones
bounds = [-1, -1, -1, 1, 1, 1]
uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.keff_trigger = {'type' : 'std_dev', 'threshold' : 5E-4}
settings_file.trigger_active = True
settings_file.trigger_max_batches = 100

View file

@ -1,6 +1,4 @@
import openmc
from openmc.source import Source
from openmc.stats import Box
###############################################################################
# Simulation Input File Parameters
@ -137,8 +135,12 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box(
[-1, -1, -1], [1, 1, 1]))
# Create an initial uniform spatial source distribution over fissionable zones
bounds = [-1, -1, -1, 1, 1, 1]
uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.export_to_xml()

View file

@ -1,6 +1,4 @@
import openmc
from openmc.source import Source
from openmc.stats import Box
###############################################################################
# Simulation Input File Parameters
@ -127,8 +125,12 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box(
[-1, -1, -1], [1, 1, 1]))
# Create an initial uniform spatial source distribution over fissionable zones
bounds = [-1, -1, -1, 1, 1, 1]
uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.trigger_active = True
settings_file.trigger_max_batches = 100
settings_file.export_to_xml()

View file

@ -1,6 +1,4 @@
import openmc
from openmc.source import Source
from openmc.stats import Box
###############################################################################
# Simulation Input File Parameters
@ -170,8 +168,12 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box(
[-0.62992, -0.62992, -1], [0.62992, 0.62992, 1]))
# Create an initial uniform spatial source distribution over fissionable zones
bounds = [-0.62992, -0.62992, -1, 0.62992, 0.62992, 1]
uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.entropy_lower_left = [-0.39218, -0.39218, -1.e50]
settings_file.entropy_upper_right = [0.39218, 0.39218, 1.e50]
settings_file.entropy_dimension = [10, 10, 1]

View file

@ -1,8 +1,6 @@
import numpy as np
import openmc
import openmc.mgxs
from openmc.source import Source
from openmc.stats import Box
import numpy as np
###############################################################################
# Simulation Input File Parameters
@ -145,7 +143,13 @@ settings_file.cross_sections = "./mg_cross_sections.xml"
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box([-0.63, -0.63, -1.], [0.63, 0.63, 1.]))
# Create an initial uniform spatial source distribution over fissionable zones
bounds = [-0.63, -0.63, -1, 0.63, 0.63, 1]
uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:])
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.export_to_xml()
###############################################################################
# Exporting to OpenMC tallies.xml File

View file

@ -1,8 +1,5 @@
import numpy as np
import openmc
from openmc.stats import Box
from openmc.source import Source
###############################################################################
# Simulation Input File Parameters
@ -86,5 +83,10 @@ settings_file = openmc.SettingsFile()
settings_file.batches = batches
settings_file.inactive = inactive
settings_file.particles = particles
settings_file.source = Source(space=Box(*cell.region.bounding_box))
# Create an initial uniform spatial source distribution over fissionable zones
uniform_dist = openmc.stats.Box(*cell.region.bounding_box,
only_fissionable=True)
settings_file.source = openmc.source.Source(space=uniform_dist)
settings_file.export_to_xml()

View file

@ -1,3 +1,5 @@
from openmc.cell import *
from openmc.lattice import *
from openmc.element import *
from openmc.geometry import *
from openmc.nuclide import *
@ -16,6 +18,9 @@ from openmc.cmfd import *
from openmc.executor import *
from openmc.statepoint import *
from openmc.summary import *
from openmc.region import *
from openmc.source import *
from openmc.particle_restart import *
try:
from openmc.opencg_compatible import *

478
openmc/cell.py Normal file
View file

@ -0,0 +1,478 @@
from collections import OrderedDict, Iterable
from numbers import Real, Integral
from xml.etree import ElementTree as ET
import sys
import warnings
import openmc
import openmc.checkvalue as cv
from openmc.surface import Halfspace
from openmc.region import Region, Intersection, Complement
if sys.version_info[0] >= 3:
basestring = str
# A static variable for auto-generated Cell IDs
AUTO_CELL_ID = 10000
def reset_auto_cell_id():
global AUTO_CELL_ID
AUTO_CELL_ID = 10000
class Cell(object):
"""A region of space defined as the intersection of half-space created by
quadric surfaces.
Parameters
----------
cell_id : int, optional
Unique identifier for the cell. If not specified, an identifier will
automatically be assigned.
name : str, optional
Name of the cell. If not specified, the name is the empty string.
Attributes
----------
id : int
Unique identifier for the cell
name : str
Name of the cell
fill : openmc.Material or openmc.Universe or openmc.Lattice or 'void' or iterable of openmc.Material
Indicates what the region of space is filled with
region : openmc.Region
Region of space that is assigned to the cell.
rotation : numpy.ndarray
If the cell is filled with a universe, this array specifies the angles
in degrees about the x, y, and z axes that the filled universe should be
rotated.
temperature : float or iterable of float
Temperature of the cell in Kelvin. Multiple temperatures can be given
to give each distributed cell instance a unique temperature.
translation : numpy.ndarray
If the cell is filled with a universe, this array specifies a vector
that is used to translate (shift) the universe.
offsets : ndarray
Array of offsets used for distributed cell searches
distribcell_index : int
Index of this cell in distribcell arrays
"""
def __init__(self, cell_id=None, name=''):
# Initialize Cell class attributes
self.id = cell_id
self.name = name
self._fill = None
self._type = None
self._region = None
self._temperature = None
self._rotation = None
self._translation = None
self._offsets = None
self._distribcell_index = None
def __eq__(self, other):
if not isinstance(other, Cell):
return False
elif self.id != other.id:
return False
elif self.name != other.name:
return False
elif self.fill != other.fill:
return False
elif self.region != other.region:
return False
elif self.rotation != other.rotation:
return False
elif self.temperature != other.temperature:
return False
elif self.translation != other.translation:
return False
else:
return True
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(repr(self))
def __repr__(self):
string = 'Cell\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name)
if isinstance(self._fill, openmc.Material):
string += '{0: <16}{1}{2}\n'.format('\tMaterial', '=\t',
self._fill._id)
elif isinstance(self._fill, Iterable):
string += '{0: <16}{1}'.format('\tMaterial', '=\t')
string += '['
string += ', '.join(['void' if m == 'void' else str(m.id)
for m in self.fill])
string += ']\n'
elif isinstance(self._fill, (openmc.Universe, openmc.Lattice)):
string += '{0: <16}{1}{2}\n'.format('\tFill', '=\t',
self._fill._id)
else:
string += '{0: <16}{1}{2}\n'.format('\tFill', '=\t', self._fill)
string += '{0: <16}{1}{2}\n'.format('\tRegion', '=\t', self._region)
string += '{0: <16}{1}{2}\n'.format('\tRotation', '=\t',
self._rotation)
if self.fill_type == 'material':
string += '\t{0: <15}=\t{1}\n'.format('Temperature',
self.temperature)
string += '{0: <16}{1}{2}\n'.format('\tTranslation', '=\t',
self._translation)
string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self._offsets)
string += '{0: <16}{1}{2}\n'.format('\tDistribcell index', '=\t',
self._distribcell_index)
return string
@property
def id(self):
return self._id
@property
def name(self):
return self._name
@property
def fill(self):
return self._fill
@property
def fill_type(self):
if isinstance(self.fill, openmc.Material):
return 'material'
elif isinstance(self.fill, openmc.Universe):
return 'universe'
elif isinstance(self.fill, openmc.Lattice):
return 'lattice'
else:
return None
@property
def region(self):
return self._region
@property
def rotation(self):
return self._rotation
@property
def temperature(self):
return self._temperature
@property
def translation(self):
return self._translation
@property
def offsets(self):
return self._offsets
@property
def distribcell_index(self):
return self._distribcell_index
@id.setter
def id(self, cell_id):
if cell_id is None:
global AUTO_CELL_ID
self._id = AUTO_CELL_ID
AUTO_CELL_ID += 1
else:
cv.check_type('cell ID', cell_id, Integral)
cv.check_greater_than('cell ID', cell_id, 0, equality=True)
self._id = cell_id
@name.setter
def name(self, name):
if name is not None:
cv.check_type('cell name', name, basestring)
self._name = name
else:
self._name = ''
@fill.setter
def fill(self, fill):
if isinstance(fill, basestring):
if fill.strip().lower() == 'void':
self._type = 'void'
else:
msg = 'Unable to set Cell ID="{0}" to use a non-Material or ' \
'Universe fill "{1}"'.format(self._id, fill)
raise ValueError(msg)
elif isinstance(fill, openmc.Material):
self._type = 'normal'
elif isinstance(fill, Iterable):
cv.check_type('cell.fill', fill, Iterable,
(openmc.Material, basestring))
self._type = 'normal'
elif isinstance(fill, openmc.Universe):
self._type = 'fill'
elif isinstance(fill, openmc.Lattice):
self._type = 'lattice'
else:
msg = 'Unable to set Cell ID="{0}" to use a non-Material or ' \
'Universe fill "{1}"'.format(self._id, fill)
raise ValueError(msg)
self._fill = fill
@rotation.setter
def rotation(self, rotation):
cv.check_type('cell rotation', rotation, Iterable, Real)
cv.check_length('cell rotation', rotation, 3)
self._rotation = rotation
@translation.setter
def translation(self, translation):
cv.check_type('cell translation', translation, Iterable, Real)
cv.check_length('cell translation', translation, 3)
self._translation = translation
@temperature.setter
def temperature(self, temperature):
cv.check_type('cell temperature', temperature, (Iterable, Real))
if isinstance(temperature, Iterable):
cv.check_type('cell temperature', temperature, Iterable, Real)
for T in temperature:
cv.check_greater_than('cell temperature', T, 0.0, True)
else:
cv.check_greater_than('cell temperature', temperature, 0.0, True)
self._temperature = temperature
@offsets.setter
def offsets(self, offsets):
cv.check_type('cell offsets', offsets, Iterable)
self._offsets = offsets
@region.setter
def region(self, region):
cv.check_type('cell region', region, Region)
self._region = region
@distribcell_index.setter
def distribcell_index(self, ind):
cv.check_type('distribcell index', ind, Integral)
self._distribcell_index = ind
def add_surface(self, surface, halfspace):
"""Add a half-space to the list of half-spaces whose intersection defines the
cell.
.. deprecated:: 0.7.1
Use the :attr:`Cell.region` property to directly specify a Region
expression.
Parameters
----------
surface : openmc.Surface
Quadric surface dividing space
halfspace : {-1, 1}
Indicate whether the negative or positive half-space is to be used
"""
warnings.warn("Cell.add_surface(...) has been deprecated and may be "
"removed in a future version. The region for a Cell "
"should be defined using the region property directly.",
DeprecationWarning)
if not isinstance(surface, openmc.Surface):
msg = 'Unable to add Surface "{0}" to Cell ID="{1}" since it is ' \
'not a Surface object'.format(surface, self._id)
raise ValueError(msg)
if halfspace not in [-1, +1]:
msg = 'Unable to add Surface "{0}" to Cell ID="{1}" with halfspace ' \
'"{2}" since it is not +/-1'.format(surface, self._id, halfspace)
raise ValueError(msg)
# If no region has been assigned, simply use the half-space. Otherwise,
# take the intersection of the current region and the half-space
# specified
region = +surface if halfspace == 1 else -surface
if self.region is None:
self.region = region
else:
if isinstance(self.region, Intersection):
self.region.nodes.append(region)
else:
self.region = Intersection(self.region, region)
def get_cell_instance(self, path, distribcell_index):
# If the Cell is filled by a Material
if self._type == 'normal' or self._type == 'void':
offset = 0
# If the Cell is filled by a Universe
elif self._type == 'fill':
offset = self.offsets[distribcell_index-1]
offset += self.fill.get_cell_instance(path, distribcell_index)
# If the Cell is filled by a Lattice
else:
offset = self.fill.get_cell_instance(path, distribcell_index)
return offset
def get_all_nuclides(self):
"""Return all nuclides contained in the cell
Returns
-------
nuclides : dict
Dictionary whose keys are nuclide names and values are 2-tuples of
(nuclide, density)
"""
nuclides = OrderedDict()
if self._type != 'void':
nuclides.update(self._fill.get_all_nuclides())
return nuclides
def get_all_cells(self):
"""Return all cells that are contained within this one if it is filled with a
universe or lattice
Returns
-------
cells : dict
Dictionary whose keys are cell IDs and values are :class:`Cell`
instances
"""
cells = OrderedDict()
if self._type == 'fill' or self._type == 'lattice':
cells.update(self._fill.get_all_cells())
return cells
def get_all_materials(self):
"""Return all materials that are contained within the cell
Returns
-------
materials : dict
Dictionary whose keys are material IDs and values are
:class:`Material` instances
"""
materials = OrderedDict()
if self.fill_type == 'material':
materials[self.fill.id] = self.fill
# Append all Cells in each Cell in the Universe to the dictionary
cells = self.get_all_cells()
for cell_id, cell in cells.items():
materials.update(cell.get_all_materials())
return materials
def get_all_universes(self):
"""Return all universes that are contained within this one if any of
its cells are filled with a universe or lattice.
Returns
-------
universes : dict
Dictionary whose keys are universe IDs and values are
:class:`Universe` instances
"""
universes = OrderedDict()
if self._type == 'fill':
universes[self._fill._id] = self._fill
universes.update(self._fill.get_all_universes())
elif self._type == 'lattice':
universes.update(self._fill.get_all_universes())
return universes
def create_xml_subelement(self, xml_element):
element = ET.Element("cell")
element.set("id", str(self.id))
if len(self._name) > 0:
element.set("name", str(self.name))
if isinstance(self.fill, basestring):
element.set("material", "void")
elif isinstance(self.fill, openmc.Material):
element.set("material", str(self.fill.id))
elif isinstance(self.fill, Iterable):
element.set("material", ' '.join([m if m == 'void' else str(m.id)
for m in self.fill]))
elif isinstance(self.fill, (openmc.Universe, openmc.Lattice)):
element.set("fill", str(self.fill.id))
self.fill.create_xml_subelement(xml_element)
else:
element.set("fill", str(self.fill))
self.fill.create_xml_subelement(xml_element)
if self.region is not None:
# Set the region attribute with the region specification
element.set("region", str(self.region))
# Only surfaces that appear in a region are added to the geometry
# file, so the appropriate check is performed here. First we create
# a function which is called recursively to navigate through the CSG
# tree. When it reaches a leaf (a Halfspace), it creates a <surface>
# element for the corresponding surface if none has been created
# thus far.
def create_surface_elements(node, element):
if isinstance(node, Halfspace):
path = './surface[@id=\'{0}\']'.format(node.surface.id)
if xml_element.find(path) is None:
surface_subelement = node.surface.create_xml_subelement()
xml_element.append(surface_subelement)
elif isinstance(node, Complement):
create_surface_elements(node.node, element)
else:
for subnode in node.nodes:
create_surface_elements(subnode, element)
# Call the recursive function from the top node
create_surface_elements(self.region, xml_element)
if self.temperature is not None:
if isinstance(self.temperature, Iterable):
element.set("temperature", ' '.join(
str(t) for t in self.temperature))
else:
element.set("temperature", str(self.temperature))
if self.translation is not None:
element.set("translation", ' '.join(map(str, self.translation)))
if self.rotation is not None:
element.set("rotation", ' '.join(map(str, self.rotation)))
return element

View file

@ -69,7 +69,7 @@ class CMFDMesh(object):
to any tallies far away from fission source neutron regions. A ``2``
must be used to identify any fission source region.
"""
"""
def __init__(self):
self._lower_left = None
@ -219,7 +219,7 @@ class CMFDFile(object):
inner tolerance for Gauss-Seidel iterations when performing CMFD.
ktol : float
Tolerance on the eigenvalue when performing CMFD power iteration
cmfd_mesh : CMFDMesh
cmfd_mesh : openmc.CMFDMesh
Structured mesh to be used for acceleration
norm : float
Normalization factor applied to the CMFD fission source distribution

View file

@ -24,7 +24,7 @@ class Element(object):
Chemical symbol of the element, e.g. Pu
xs : str
Cross section identifier, e.g. 71c
scattering : 'data' or 'iso-in-lab' or None
scattering : {'data', 'iso-in-lab', None}
The type of angular scattering distribution to use
"""

View file

@ -40,7 +40,7 @@ class Filter(object):
The bins for the filter
num_bins : Integral
The number of filter bins
mesh : Mesh or None
mesh : openmc.Mesh or None
A Mesh object for 'mesh' type filters.
stride : Integral
The number of filter, nuclide and score bins within each of this
@ -265,7 +265,7 @@ class Filter(object):
Parameters
----------
other : Filter
other : openmc.Filter
Filter to compare with
Returns
@ -310,12 +310,12 @@ class Filter(object):
Parameters
----------
other : Filter
other : openmc.Filter
Filter to merge with
Returns
-------
merged_filter : Filter
merged_filter : openmc.Filter
Filter resulting from the merge
"""
@ -355,7 +355,7 @@ class Filter(object):
Parameters
----------
other : Filter
other : openmc.Filter
The filter to query as a subset of this filter
Returns
@ -519,8 +519,8 @@ class Filter(object):
"""Builds a Pandas DataFrame for the Filter's bins.
This method constructs a Pandas DataFrame object for the filter with
columns annotated by filter bin information. This is a helper method
for the Tally.get_pandas_dataframe(...) method.
columns annotated by filter bin information. This is a helper method for
:meth:`Tally.get_pandas_dataframe`.
This capability has been tested for Pandas >=0.13.1. However, it is
recommended to use v0.16 or newer versions of Pandas since this method
@ -530,7 +530,7 @@ class Filter(object):
----------
data_size : Integral
The total number of bins in the tally corresponding to this filter
summary : None or Summary
summary : None or openmc.Summary
An optional Summary object to be used to construct columns for
distribcell tally filters (default is None). The geometric
information in the Summary object is embedded into a Multi-index

View file

@ -17,7 +17,7 @@ class Geometry(object):
Attributes
----------
root_universe : openmc.universe.Universe
root_universe : openmc.Universe
Root universe which contains all others
"""
@ -95,7 +95,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Cell
list of openmc.Cell
Cells in the geometry
"""
@ -116,7 +116,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Universe
list of openmc.Universe
Universes in the geometry
"""
@ -136,7 +136,7 @@ class Geometry(object):
Returns
-------
list of openmc.nuclide.Nuclide
list of openmc.Nuclide
Nuclides in the geometry
"""
@ -154,7 +154,7 @@ class Geometry(object):
Returns
-------
list of openmc.material.Material
list of openmc.Material
Materials in the geometry
"""
@ -177,7 +177,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Cell
list of openmc.Cell
Cells filled by Materials in the geometry
"""
@ -198,7 +198,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Universe
list of openmc.Universe
Universes with non-fill cells
"""
@ -221,7 +221,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Lattice
list of openmc.Lattice
Lattices in the geometry
"""
@ -252,7 +252,7 @@ class Geometry(object):
Returns
-------
list of openmc.material.Material
list of openmc.Material
Materials matching the queried name
"""
@ -292,7 +292,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Cell
list of openmc.Cell
Cells matching the queried name
"""
@ -332,7 +332,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Cell
list of openmc.Cell
Cells with fills matching the queried name
"""
@ -372,7 +372,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Universe
list of openmc.Universe
Universes matching the queried name
"""
@ -412,7 +412,7 @@ class Geometry(object):
Returns
-------
list of openmc.universe.Lattice
list of openmc.Lattice
Lattices matching the queried name
"""
@ -444,7 +444,7 @@ class GeometryFile(object):
Attributes
----------
geometry : Geometry
geometry : openmc.Geometry
The geometry to be used
"""

871
openmc/lattice.py Normal file
View file

@ -0,0 +1,871 @@
import abc
from collections import OrderedDict, Iterable
from numbers import Real, Integral
from xml.etree import ElementTree as ET
import sys
import numpy as np
import openmc.checkvalue as cv
from openmc.universe import Universe, AUTO_UNIVERSE_ID
if sys.version_info[0] >= 3:
basestring = str
class Lattice(object):
"""A repeating structure wherein each element is a universe.
Parameters
----------
lattice_id : int, optional
Unique identifier for the lattice. If not specified, an identifier will
automatically be assigned.
name : str, optional
Name of the lattice. If not specified, the name is the empty string.
Attributes
----------
id : int
Unique identifier for the lattice
name : str
Name of the lattice
pitch : float
Pitch of the lattice in cm
outer : int
The unique identifier of a universe to fill all space outside the
lattice
universes : numpy.ndarray of openmc.Universe
An array of universes filling each element of the lattice
"""
# This is an abstract class which cannot be instantiated
__metaclass__ = abc.ABCMeta
def __init__(self, lattice_id=None, name=''):
# Initialize Lattice class attributes
self.id = lattice_id
self.name = name
self._pitch = None
self._outer = None
self._universes = None
def __eq__(self, other):
if not isinstance(other, Lattice):
return False
elif self.id != other.id:
return False
elif self.name != other.name:
return False
elif self.pitch != other.pitch:
return False
elif self.outer != other.outer:
return False
elif self.universes != other.universes:
return False
else:
return True
def __ne__(self, other):
return not self == other
@property
def id(self):
return self._id
@property
def name(self):
return self._name
@property
def pitch(self):
return self._pitch
@property
def outer(self):
return self._outer
@property
def universes(self):
return self._universes
@id.setter
def id(self, lattice_id):
if lattice_id is None:
global AUTO_UNIVERSE_ID
self._id = AUTO_UNIVERSE_ID
AUTO_UNIVERSE_ID += 1
else:
cv.check_type('lattice ID', lattice_id, Integral)
cv.check_greater_than('lattice ID', lattice_id, 0, equality=True)
self._id = lattice_id
@name.setter
def name(self, name):
if name is not None:
cv.check_type('lattice name', name, basestring)
self._name = name
else:
self._name = ''
@outer.setter
def outer(self, outer):
cv.check_type('outer universe', outer, Universe)
self._outer = outer
@universes.setter
def universes(self, universes):
cv.check_iterable_type('lattice universes', universes, Universe,
min_depth=2, max_depth=3)
self._universes = np.asarray(universes)
def get_unique_universes(self):
"""Determine all unique universes in the lattice
Returns
-------
universes : collections.OrderedDict
Dictionary whose keys are universe IDs and values are
:class:`Universe` instances
"""
univs = OrderedDict()
for k in range(len(self._universes)):
for j in range(len(self._universes[k])):
if isinstance(self._universes[k][j], Universe):
u = self._universes[k][j]
univs[u._id] = u
else:
for i in range(len(self._universes[k][j])):
u = self._universes[k][j][i]
assert isinstance(u, Universe)
univs[u._id] = u
if self.outer is not None:
univs[self.outer._id] = self.outer
return univs
def get_all_nuclides(self):
"""Return all nuclides contained in the lattice
Returns
-------
nuclides : collections.OrderedDict
Dictionary whose keys are nuclide names and values are 2-tuples of
(nuclide, density)
"""
nuclides = OrderedDict()
# Get all unique Universes contained in each of the lattice cells
unique_universes = self.get_unique_universes()
# Append all Universes containing each cell to the dictionary
for universe_id, universe in unique_universes.items():
nuclides.update(universe.get_all_nuclides())
return nuclides
def get_all_cells(self):
"""Return all cells that are contained within the lattice
Returns
-------
cells : collections.OrderedDict
Dictionary whose keys are cell IDs and values are :class:`Cell`
instances
"""
cells = OrderedDict()
unique_universes = self.get_unique_universes()
for universe_id, universe in unique_universes.items():
cells.update(universe.get_all_cells())
return cells
def get_all_materials(self):
"""Return all materials that are contained within the lattice
Returns
-------
materials : collections.OrderedDict
Dictionary whose keys are material IDs and values are
:class:`Material` instances
"""
materials = OrderedDict()
# Append all Cells in each Cell in the Universe to the dictionary
cells = self.get_all_cells()
for cell_id, cell in cells.items():
materials.update(cell.get_all_materials())
return materials
def get_all_universes(self):
"""Return all universes that are contained within the lattice
Returns
-------
universes : collections.OrderedDict
Dictionary whose keys are universe IDs and values are
:class:`Universe` instances
"""
# Initialize a dictionary of all Universes contained by the Lattice
# in each nested Universe level
all_universes = OrderedDict()
# Get all unique Universes contained in each of the lattice cells
unique_universes = self.get_unique_universes()
# Add the unique Universes filling each Lattice cell
all_universes.update(unique_universes)
# Append all Universes containing each cell to the dictionary
for universe_id, universe in unique_universes.items():
all_universes.update(universe.get_all_universes())
return all_universes
class RectLattice(Lattice):
"""A lattice consisting of rectangular prisms.
Parameters
----------
lattice_id : int, optional
Unique identifier for the lattice. If not specified, an identifier will
automatically be assigned.
name : str, optional
Name of the lattice. If not specified, the name is the empty string.
Attributes
----------
id : int
Unique identifier for the lattice
name : str
Name of the lattice
dimension : Iterable of int
An array of two or three integers representing the number of lattice
cells in the x- and y- (and z-) directions, respectively.
lower_left : Iterable of float
The coordinates of the lower-left corner of the lattice. If the lattice
is two-dimensional, only the x- and y-coordinates are specified.
"""
def __init__(self, lattice_id=None, name=''):
super(RectLattice, self).__init__(lattice_id, name)
# Initialize Lattice class attributes
self._dimension = None
self._lower_left = None
self._offsets = None
def __eq__(self, other):
if not isinstance(other, RectLattice):
return False
elif not super(RectLattice, self).__eq__(other):
return False
elif self.dimension != other.dimension:
return False
elif self.lower_left != other.lower_left:
return False
else:
return True
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(repr(self))
def __repr__(self):
string = 'RectLattice\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name)
string += '{0: <16}{1}{2}\n'.format('\tDimension', '=\t',
self._dimension)
string += '{0: <16}{1}{2}\n'.format('\tLower Left', '=\t',
self._lower_left)
string += '{0: <16}{1}{2}\n'.format('\tPitch', '=\t', self._pitch)
if self._outer is not None:
string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t',
self._outer._id)
else:
string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t',
self._outer)
string += '{0: <16}\n'.format('\tUniverses')
# Lattice nested Universe IDs - column major for Fortran
for i, universe in enumerate(np.ravel(self._universes)):
string += '{0} '.format(universe._id)
# Add a newline character every time we reach end of row of cells
if (i+1) % self._dimension[-1] == 0:
string += '\n'
string = string.rstrip('\n')
if self._offsets is not None:
string += '{0: <16}\n'.format('\tOffsets')
# Lattice cell offsets
for i, offset in enumerate(np.ravel(self._offsets)):
string += '{0} '.format(offset)
# Add a newline character when we reach end of row of cells
if (i+1) % self._dimension[-1] == 0:
string += '\n'
string = string.rstrip('\n')
return string
@property
def dimension(self):
return self._dimension
@property
def lower_left(self):
return self._lower_left
@property
def offsets(self):
return self._offsets
@dimension.setter
def dimension(self, dimension):
cv.check_type('lattice dimension', dimension, Iterable, Integral)
cv.check_length('lattice dimension', dimension, 2, 3)
for dim in dimension:
cv.check_greater_than('lattice dimension', dim, 0)
self._dimension = dimension
@lower_left.setter
def lower_left(self, lower_left):
cv.check_type('lattice lower left corner', lower_left, Iterable, Real)
cv.check_length('lattice lower left corner', lower_left, 2, 3)
self._lower_left = lower_left
@offsets.setter
def offsets(self, offsets):
cv.check_type('lattice offsets', offsets, Iterable)
self._offsets = offsets
@Lattice.pitch.setter
def pitch(self, pitch):
cv.check_type('lattice pitch', pitch, Iterable, Real)
cv.check_length('lattice pitch', pitch, 2, 3)
for dim in pitch:
cv.check_greater_than('lattice pitch', dim, 0.0)
self._pitch = pitch
def get_cell_instance(self, path, distribcell_index):
# Extract the lattice element from the path
next_index = path.index('-')
lat_id_indices = path[:next_index]
path = path[next_index+2:]
# Extract the lattice cell indices from the path
i1 = lat_id_indices.index('(')
i2 = lat_id_indices.index(')')
i = lat_id_indices[i1+1:i2]
lat_x = int(i.split(',')[0]) - 1
lat_y = int(i.split(',')[1]) - 1
lat_z = int(i.split(',')[2]) - 1
# For 2D Lattices
if len(self._dimension) == 2:
offset = self._offsets[lat_z, lat_y, lat_x, distribcell_index-1]
offset += self._universes[lat_x][lat_y].get_cell_instance(path,
distribcell_index)
# For 3D Lattices
else:
offset = self._offsets[lat_z, lat_y, lat_x, distribcell_index-1]
offset += self._universes[lat_z][lat_y][lat_x].get_cell_instance(
path, distribcell_index)
return offset
def create_xml_subelement(self, xml_element):
# Determine if XML element already contains subelement for this Lattice
path = './lattice[@id=\'{0}\']'.format(self._id)
test = xml_element.find(path)
# If the element does contain the Lattice subelement, then return
if test is not None:
return
lattice_subelement = ET.Element("lattice")
lattice_subelement.set("id", str(self._id))
if len(self._name) > 0:
lattice_subelement.set("name", str(self._name))
# Export the Lattice cell pitch
pitch = ET.SubElement(lattice_subelement, "pitch")
pitch.text = ' '.join(map(str, self._pitch))
# Export the Lattice outer Universe (if specified)
if self._outer is not None:
outer = ET.SubElement(lattice_subelement, "outer")
outer.text = '{0}'.format(self._outer._id)
self._outer.create_xml_subelement(xml_element)
# Export Lattice cell dimensions
dimension = ET.SubElement(lattice_subelement, "dimension")
dimension.text = ' '.join(map(str, self._dimension))
# Export Lattice lower left
lower_left = ET.SubElement(lattice_subelement, "lower_left")
lower_left.text = ' '.join(map(str, self._lower_left))
# Export the Lattice nested Universe IDs - column major for Fortran
universe_ids = '\n'
# 3D Lattices
if len(self._dimension) == 3:
for z in range(self._dimension[2]):
for y in range(self._dimension[1]):
for x in range(self._dimension[0]):
universe = self._universes[z][y][x]
# Append Universe ID to the Lattice XML subelement
universe_ids += '{0} '.format(universe._id)
# Create XML subelement for this Universe
universe.create_xml_subelement(xml_element)
# Add newline character when we reach end of row of cells
universe_ids += '\n'
# Add newline character when we reach end of row of cells
universe_ids += '\n'
# 2D Lattices
else:
for y in range(self._dimension[1]):
for x in range(self._dimension[0]):
universe = self._universes[y][x]
# Append Universe ID to Lattice XML subelement
universe_ids += '{0} '.format(universe._id)
# Create XML subelement for this Universe
universe.create_xml_subelement(xml_element)
# Add newline character when we reach end of row of cells
universe_ids += '\n'
# Remove trailing newline character from Universe IDs string
universe_ids = universe_ids.rstrip('\n')
universes = ET.SubElement(lattice_subelement, "universes")
universes.text = universe_ids
# Append the XML subelement for this Lattice to the XML element
xml_element.append(lattice_subelement)
class HexLattice(Lattice):
"""A lattice consisting of hexagonal prisms.
Parameters
----------
lattice_id : int, optional
Unique identifier for the lattice. If not specified, an identifier will
automatically be assigned.
name : str, optional
Name of the lattice. If not specified, the name is the empty string.
Attributes
----------
id : int
Unique identifier for the lattice
name : str
Name of the lattice
num_rings : int
Number of radial ring positions in the xy-plane
num_axial : int
Number of positions along the z-axis.
center : Iterable of float
Coordinates of the center of the lattice. If the lattice does not have
axial sections then only the x- and y-coordinates are specified
"""
def __init__(self, lattice_id=None, name=''):
super(HexLattice, self).__init__(lattice_id, name)
# Initialize Lattice class attributes
self._num_rings = None
self._num_axial = None
self._center = None
def __eq__(self, other):
if not isinstance(other, HexLattice):
return False
elif not super(HexLattice, self).__eq__(other):
return False
elif self.num_rings != other.num_rings:
return False
elif self.num_axial != other.num_axial:
return False
elif self.center != other.center:
return False
else:
return True
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(repr(self))
def __repr__(self):
string = 'HexLattice\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name)
string += '{0: <16}{1}{2}\n'.format('\t# Rings', '=\t', self._num_rings)
string += '{0: <16}{1}{2}\n'.format('\t# Axial', '=\t', self._num_axial)
string += '{0: <16}{1}{2}\n'.format('\tCenter', '=\t',
self._center)
string += '{0: <16}{1}{2}\n'.format('\tPitch', '=\t', self._pitch)
if self._outer is not None:
string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t',
self._outer._id)
else:
string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t',
self._outer)
string += '{0: <16}\n'.format('\tUniverses')
if self._num_axial is not None:
slices = [self._repr_axial_slice(x) for x in self._universes]
string += '\n'.join(slices)
else:
string += self._repr_axial_slice(self._universes)
return string
@property
def num_rings(self):
return self._num_rings
@property
def num_axial(self):
return self._num_axial
@property
def center(self):
return self._center
@num_rings.setter
def num_rings(self, num_rings):
cv.check_type('number of rings', num_rings, Integral)
cv.check_greater_than('number of rings', num_rings, 0)
self._num_rings = num_rings
@num_axial.setter
def num_axial(self, num_axial):
cv.check_type('number of axial', num_axial, Integral)
cv.check_greater_than('number of axial', num_axial, 0)
self._num_axial = num_axial
@center.setter
def center(self, center):
cv.check_type('lattice center', center, Iterable, Real)
cv.check_length('lattice center', center, 2, 3)
self._center = center
@Lattice.pitch.setter
def pitch(self, pitch):
cv.check_type('lattice pitch', pitch, Iterable, Real)
cv.check_length('lattice pitch', pitch, 1, 2)
for dim in pitch:
cv.check_greater_than('lattice pitch', dim, 0)
self._pitch = pitch
@Lattice.universes.setter
def universes(self, universes):
# Call Lattice.universes parent class setter property
Lattice.universes.fset(self, universes)
# NOTE: This routine assumes that the user creates a "ragged" list of
# lists, where each sub-list corresponds to one ring of Universes.
# The sub-lists are ordered from outermost ring to innermost ring.
# The Universes within each sub-list are ordered from the "top" in a
# clockwise fashion.
# Check to see if the given universes look like a 2D or a 3D array.
if isinstance(self._universes[0][0], Universe):
n_dims = 2
elif isinstance(self._universes[0][0][0], Universe):
n_dims = 3
else:
msg = 'HexLattice ID={0:d} does not appear to be either 2D or ' \
'3D. Make sure set_universes was given a two-deep or ' \
'three-deep iterable of universes.'.format(self._id)
raise RuntimeError(msg)
# Set the number of axial positions.
if n_dims == 3:
self.num_axial = len(self._universes)
else:
self._num_axial = None
# Set the number of rings and make sure this number is consistent for
# all axial positions.
if n_dims == 3:
self.num_rings = len(self._universes)
for rings in self._universes:
if len(rings) != self._num_rings:
msg = 'HexLattice ID={0:d} has an inconsistent number of ' \
'rings per axial positon'.format(self._id)
raise ValueError(msg)
else:
self.num_rings = len(self._universes)
# Make sure there are the correct number of elements in each ring.
if n_dims == 3:
for axial_slice in self._universes:
# Check the center ring.
if len(axial_slice[-1]) != 1:
msg = 'HexLattice ID={0:d} has the wrong number of ' \
'elements in the innermost ring. Only 1 element is ' \
'allowed in the innermost ring.'.format(self._id)
raise ValueError(msg)
# Check the outer rings.
for r in range(self._num_rings-1):
if len(axial_slice[r]) != 6*(self._num_rings - 1 - r):
msg = 'HexLattice ID={0:d} has the wrong number of ' \
'elements in ring number {1:d} (counting from the '\
'outermost ring). This ring should have {2:d} ' \
'elements.'.format(self._id, r,
6*(self._num_rings - 1 - r))
raise ValueError(msg)
else:
axial_slice = self._universes
# Check the center ring.
if len(axial_slice[-1]) != 1:
msg = 'HexLattice ID={0:d} has the wrong number of ' \
'elements in the innermost ring. Only 1 element is ' \
'allowed in the innermost ring.'.format(self._id)
raise ValueError(msg)
# Check the outer rings.
for r in range(self._num_rings-1):
if len(axial_slice[r]) != 6*(self._num_rings - 1 - r):
msg = 'HexLattice ID={0:d} has the wrong number of ' \
'elements in ring number {1:d} (counting from the '\
'outermost ring). This ring should have {2:d} ' \
'elements.'.format(self._id, r,
6*(self._num_rings - 1 - r))
raise ValueError(msg)
def create_xml_subelement(self, xml_element):
# Determine if XML element already contains subelement for this Lattice
path = './hex_lattice[@id=\'{0}\']'.format(self._id)
test = xml_element.find(path)
# If the element does contain the Lattice subelement, then return
if test is not None:
return
lattice_subelement = ET.Element("hex_lattice")
lattice_subelement.set("id", str(self._id))
if len(self._name) > 0:
lattice_subelement.set("name", str(self._name))
# Export the Lattice cell pitch
pitch = ET.SubElement(lattice_subelement, "pitch")
pitch.text = ' '.join(map(str, self._pitch))
# Export the Lattice outer Universe (if specified)
if self._outer is not None:
outer = ET.SubElement(lattice_subelement, "outer")
outer.text = '{0}'.format(self._outer._id)
self._outer.create_xml_subelement(xml_element)
lattice_subelement.set("n_rings", str(self._num_rings))
if self._num_axial is not None:
lattice_subelement.set("n_axial", str(self._num_axial))
# Export Lattice cell center
dimension = ET.SubElement(lattice_subelement, "center")
dimension.text = ' '.join(map(str, self._center))
# Export the Lattice nested Universe IDs.
# 3D Lattices
if self._num_axial is not None:
slices = []
for z in range(self._num_axial):
# Initialize the center universe.
universe = self._universes[z][-1][0]
universe.create_xml_subelement(xml_element)
# Initialize the remaining universes.
for r in range(self._num_rings-1):
for theta in range(6*(self._num_rings - 1 - r)):
universe = self._universes[z][r][theta]
universe.create_xml_subelement(xml_element)
# Get a string representation of the universe IDs.
slices.append(self._repr_axial_slice(self._universes[z]))
# Collapse the list of axial slices into a single string.
universe_ids = '\n'.join(slices)
# 2D Lattices
else:
# Initialize the center universe.
universe = self._universes[-1][0]
universe.create_xml_subelement(xml_element)
# Initialize the remaining universes.
for r in range(self._num_rings - 1):
for theta in range(6*(self._num_rings - 1 - r)):
universe = self._universes[r][theta]
universe.create_xml_subelement(xml_element)
# Get a string representation of the universe IDs.
universe_ids = self._repr_axial_slice(self._universes)
universes = ET.SubElement(lattice_subelement, "universes")
universes.text = '\n' + universe_ids
# Append the XML subelement for this Lattice to the XML element
xml_element.append(lattice_subelement)
def _repr_axial_slice(self, universes):
"""Return string representation for the given 2D group of universes.
The 'universes' argument should be a list of lists of universes where
each sub-list represents a single ring. The first list should be the
outer ring.
"""
# Find the largest universe ID and count the number of digits so we can
# properly pad the output string later.
largest_id = max([max([univ._id for univ in ring])
for ring in universes])
n_digits = len(str(largest_id))
pad = ' '*n_digits
id_form = '{: ^' + str(n_digits) + 'd}'
# Initialize the list for each row.
rows = [[] for i in range(1 + 4 * (self._num_rings-1))]
middle = 2 * (self._num_rings - 1)
# Start with the degenerate first ring.
universe = universes[-1][0]
rows[middle] = [id_form.format(universe._id)]
# Add universes one ring at a time.
for r in range(1, self._num_rings):
# r_prime increments down while r increments up.
r_prime = self._num_rings - 1 - r
theta = 0
y = middle + 2*r
# Climb down the top-right.
for i in range(r):
# Add the universe.
universe = universes[r_prime][theta]
rows[y].append(id_form.format(universe._id))
# Translate the indices.
y -= 1
theta += 1
# Climb down the right.
for i in range(r):
# Add the universe.
universe = universes[r_prime][theta]
rows[y].append(id_form.format(universe._id))
# Translate the indices.
y -= 2
theta += 1
# Climb down the bottom-right.
for i in range(r):
# Add the universe.
universe = universes[r_prime][theta]
rows[y].append(id_form.format(universe._id))
# Translate the indices.
y -= 1
theta += 1
# Climb up the bottom-left.
for i in range(r):
# Add the universe.
universe = universes[r_prime][theta]
rows[y].insert(0, id_form.format(universe._id))
# Translate the indices.
y += 1
theta += 1
# Climb up the left.
for i in range(r):
# Add the universe.
universe = universes[r_prime][theta]
rows[y].insert(0, id_form.format(universe._id))
# Translate the indices.
y += 2
theta += 1
# Climb up the top-left.
for i in range(r):
# Add the universe.
universe = universes[r_prime][theta]
rows[y].insert(0, id_form.format(universe._id))
# Translate the indices.
y += 1
theta += 1
# Flip the rows and join each row into a single string.
rows = [pad.join(x) for x in rows[::-1]]
# Pad the beginning of the rows so they line up properly.
for y in range(self._num_rings - 1):
rows[y] = (self._num_rings - 1 - y)*pad + rows[y]
rows[-1 - y] = (self._num_rings - 1 - y)*pad + rows[-1 - y]
for y in range(self._num_rings % 2, self._num_rings, 2):
rows[middle + y] = pad + rows[middle + y]
if y != 0:
rows[middle - y] = pad + rows[middle - y]
# Join the rows together and return the string.
universe_ids = '\n'.join(rows)
return universe_ids

View file

@ -270,7 +270,7 @@ class Material(object):
Parameters
----------
nuclide : str or openmc.nuclide.Nuclide
nuclide : str or openmc.Nuclide
Nuclide to add
percent : float
Atom or weight percent
@ -313,7 +313,7 @@ class Material(object):
Parameters
----------
nuclide : openmc.nuclide.Nuclide
nuclide : openmc.Nuclide
Nuclide to remove
"""
@ -332,7 +332,7 @@ class Material(object):
Parameters
----------
macroscopic : str or Macroscopic
macroscopic : str or openmc.Macroscopic
Macroscopic to add
"""
@ -371,7 +371,7 @@ class Material(object):
Parameters
----------
macroscopic : Macroscopic
macroscopic : openmc.Macroscopic
Macroscopic to remove
"""
@ -390,7 +390,7 @@ class Material(object):
Parameters
----------
element : openmc.element.Element
element : openmc.Element
Element to add
percent : float
Atom or weight percent
@ -429,7 +429,7 @@ class Material(object):
Parameters
----------
element : openmc.element.Element
element : openmc.Element
Element to remove
"""
@ -671,7 +671,7 @@ class MaterialsFile(object):
Parameters
----------
material : Material
material : openmc.Material
Material to add
"""
@ -688,7 +688,7 @@ class MaterialsFile(object):
Parameters
----------
materials : tuple or list of Material
materials : tuple or list of openmc.Material
Materials to add
"""
@ -706,7 +706,7 @@ class MaterialsFile(object):
Parameters
----------
material : Material
material : openmc.Material
Material to remove
"""

View file

@ -24,7 +24,7 @@ class EnergyGroups(object):
----------
group_edges : Iterable of Real
The energy group boundaries [MeV]
num_groups : Integral
num_groups : int
The number of energy groups
"""
@ -86,7 +86,7 @@ class EnergyGroups(object):
Parameters
----------
energy : Real
energy : float
The energy of interest in MeV
Returns
@ -115,7 +115,7 @@ class EnergyGroups(object):
Parameters
----------
group : Integral
group : int
The energy group index, starting at 1 for the highest energies
Returns
@ -153,7 +153,7 @@ class EnergyGroups(object):
Returns
-------
ndarray
numpy.ndarray
The ndarray array indices for each energy group of interest
Raises
@ -200,7 +200,7 @@ class EnergyGroups(object):
Returns
-------
EnergyGroups
openmc.mgxs.EnergyGroups
A coarsened version of this EnergyGroups object.
Raises
@ -244,7 +244,7 @@ class EnergyGroups(object):
Parameters
----------
other : EnergyGroups
other : openmc.mgxs.EnergyGroups
EnergyGroups to compare with
Returns
@ -275,12 +275,12 @@ class EnergyGroups(object):
Parameters
----------
other : EnergyGroups
other : openmc.mgxs.EnergyGroups
EnergyGroups to merge with
Returns
-------
merged_groups : EnergyGroups
merged_groups : openmc.mgxs.EnergyGroups
EnergyGroups resulting from the merge
"""

View file

@ -53,22 +53,22 @@ class Library(object):
The types of cross sections in the library (e.g., ['total', 'scatter'])
domain_type : {'material', 'cell', 'distribcell', 'universe'}
Domain type for spatial homogenization
domains : Iterable of Material, Cell or Universe
domains : Iterable of openmc.Material, openmc.Cell or openmc.Universe
The spatial domain(s) for which MGXS in the Library are computed
correction : 'P0' or None
correction : {'P0', None}
Apply the P0 correction to scattering matrices if set to 'P0'
energy_groups : EnergyGroups
energy_groups : openmc.mgxs.EnergyGroups
Energy group structure for energy condensation
tally_trigger : Trigger
tally_trigger : openmc.Trigger
An (optional) tally precision trigger given to each tally used to
compute the cross section
all_mgxs : OrderedDict
all_mgxs : collections.OrderedDict
MGXS objects keyed by domain ID and cross section type
sp_filename : str
The filename of the statepoint with tally data used to the
compute cross sections
keff : Real or None
The combined keff from the statepoint file with tally data used to
The combined keff from the statepoint file with tally data used to
compute cross sections (for eigenvalue calculations only)
name : str, optional
Name of the multi-group cross section library. Used as a label to
@ -308,7 +308,7 @@ class Library(object):
"""
cv.check_type('sparse', sparse, bool)
# Sparsify or densify each MGXS in the Library
for domain in self.domains:
for mgxs_type in self.mgxs_types:
@ -350,7 +350,7 @@ class Library(object):
def add_to_tallies_file(self, tallies_file, merge=True):
"""Add all tallies from all MGXS objects to a tallies file.
NOTE: This assumes that build_library() has been called
NOTE: This assumes that :meth:`Library.build_library` has been called
Parameters
----------
@ -537,7 +537,7 @@ class Library(object):
Returns
-------
Library
openmc.mgxs.Library
A new multi-group cross section library averaged across subdomains
Raises

View file

@ -59,11 +59,11 @@ class MGXS(object):
Parameters
----------
domain : Material or Cell or Universe
domain : openmc.Material or openmc.Cell or openmc.Universe
The domain for spatial homogenization
domain_type : {'material', 'cell', 'distribcell', 'universe'}
The domain type for spatial homogenization
energy_groups : EnergyGroups
energy_groups : openmc.mgxs.EnergyGroups
The energy group structure for energy condensation
by_nuclide : bool
If true, computes cross sections for each nuclide in domain
@ -83,26 +83,26 @@ class MGXS(object):
Domain for spatial homogenization
domain_type : {'material', 'cell', 'distribcell', 'universe'}
Domain type for spatial homogenization
energy_groups : EnergyGroups
energy_groups : openmc.mgxs.EnergyGroups
Energy group structure for energy condensation
tally_trigger : Trigger
tally_trigger : openmc.Trigger
An (optional) tally precision trigger given to each tally used to
compute the cross section
tallies : OrderedDict
tallies : collections.OrderedDict
OpenMC tallies needed to compute the multi-group cross section
rxn_rate_tally : Tally
rxn_rate_tally : openmc.Tally
Derived tally for the reaction rate tally used in the numerator to
compute the multi-group cross section. This attribute is None
unless the multi-group cross section has been computed.
xs_tally : Tally
xs_tally : openmc.Tally
Derived tally for the multi-group cross section. This attribute
is None unless the multi-group cross section has been computed.
num_subdomains : Integral
num_subdomains : int
The number of subdomains is unity for 'material', 'cell' and 'universe'
domain types. When the This is equal to the number of cell instances
for 'distribcell' domain types (it is equal to unity prior to loading
tally data from a statepoint file).
num_nuclides : Integral
num_nuclides : int
The number of nuclides for which the multi-group cross section is
being tracked. This is unity if the by_nuclide attribute is False.
nuclides : Iterable of str or 'sum'
@ -334,11 +334,11 @@ class MGXS(object):
----------
mgxs_type : {'total', 'transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'chi'}
The type of multi-group cross section object to return
domain : Material or Cell or Universe
domain : openmc.Material or openmc.Cell or openmc.Universe
The domain for spatial homogenization
domain_type : {'material', 'cell', 'distribcell', 'universe'}
The domain type for spatial homogenization
energy_groups : EnergyGroups
energy_groups : openmc.mgxs.EnergyGroups
The energy group structure for energy condensation
by_nuclide : bool
If true, computes cross sections for each nuclide in domain.
@ -349,7 +349,7 @@ class MGXS(object):
Returns
-------
MGXS
openmc.mgxs.MGXS
A subclass of the abstract MGXS class for the multi-group cross
section type requested by the user
@ -425,7 +425,7 @@ class MGXS(object):
Returns
-------
Real
float
The atomic number density (atom/b-cm) for the nuclide of interest
Raises
@ -464,7 +464,7 @@ class MGXS(object):
Returns
-------
ndarray of Real
numpy.ndarray of float
An array of the atomic number densities (atom/b-cm) for each of the
nuclides in the spatial domain
@ -512,11 +512,11 @@ class MGXS(object):
----------
scores : Iterable of str
Scores for each tally
all_filters : Iterable of tuple of Filter
all_filters : Iterable of tuple of openmc.Filter
Tuples of non-spatial domain filters for each tally
keys : Iterable of str
Key string used to store each tally in the tallies dictionary
estimator : {'analog' or 'tracklength'}
estimator : {'analog', 'tracklength'}
Type of estimator to use for each tally
"""
@ -684,7 +684,7 @@ class MGXS(object):
Returns
-------
ndarray
numpy.ndarray
A NumPy array of the multi-group cross section indexed in the order
each group, subdomain and nuclide is listed in the parameters.
@ -855,7 +855,7 @@ class MGXS(object):
Returns
-------
MGXS
openmc.mgxs.MGXS
A new MGXS averaged across the subdomains of interest
Raises
@ -907,13 +907,13 @@ class MGXS(object):
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
groups : list of Integral
groups : list of int
A list of energy group indices starting at 1 for the high energies
(e.g., [1, 2, 3]; default is [])
Returns
-------
MGXS
openmc.mgxs.MGXS
A new tally which encapsulates the subset of data requested for the
nuclide(s) and/or energy group(s) requested in the parameters.
@ -973,7 +973,7 @@ class MGXS(object):
Parameters
----------
other : MGXS
other : openmc.mgxs.MGXS
MGXS to check for merging
"""
@ -1010,12 +1010,12 @@ class MGXS(object):
Parameters
----------
other : MGXS
other : openmc.mgxs.MGXS
MGXS to merge with this one
Returns
-------
merged_mgxs : MGXS
merged_mgxs : openmc.mgxs.MGXS
Merged MGXS
"""
@ -1349,7 +1349,7 @@ class MGXS(object):
xs_type='macro', summary=None):
"""Build a Pandas DataFrame for the MGXS data.
This method leverages the Tally.get_pandas_dataframe(...) method, but
This method leverages :meth:`openmc.Tally.get_pandas_dataframe`, but
renames the columns with terminology appropriate for cross section data.
Parameters
@ -1366,7 +1366,7 @@ class MGXS(object):
xs_type: {'macro', 'micro'}
Return macro or micro cross section in units of cm^-1 or barns.
Defaults to 'macro'.
summary : None or Summary
summary : None or openmc.Summary
An optional Summary object to be used to construct columns for
distribcell tally filters (default is None). The geometric
information in the Summary object is embedded into a multi-index
@ -1933,16 +1933,16 @@ class ScatterMatrixXS(MGXS):
nuclides : list of str
A list of nuclide name strings
(e.g., ['U-235', 'U-238']; default is [])
in_groups : list of Integral
in_groups : list of int
A list of incoming energy group indices starting at 1 for the high
energies (e.g., [1, 2, 3]; default is [])
out_groups : list of Integral
out_groups : list of int
A list of outgoing energy group indices starting at 1 for the high
energies (e.g., [1, 2, 3]; default is [])
Returns
-------
MGXS
openmc.mgxs.MGXS
A new tally which encapsulates the subset of data requested for the
nuclide(s) and/or energy group(s) requested in the parameters.
@ -2379,12 +2379,12 @@ class Chi(MGXS):
Parameters
----------
other : MGXS
other : openmc.mgxs.MGXS
MGXS to merge with this one
Returns
-------
merged_mgxs : MGXS
merged_mgxs : openmc.mgxs.MGXS
Merged MGXS
"""
@ -2452,7 +2452,7 @@ class Chi(MGXS):
Returns
-------
ndarray
numpy.ndarray
A NumPy array of the multi-group cross section indexed in the order
each group, subdomain and nuclide is listed in the parameters.
@ -2560,7 +2560,7 @@ class Chi(MGXS):
xs_type='macro', summary=None):
"""Build a Pandas DataFrame for the MGXS data.
This method leverages the Tally.get_pandas_dataframe(...) method, but
This method leverages :meth:`openmc.Tally.get_pandas_dataframe`, but
renames the columns with terminology appropriate for cross section data.
Parameters
@ -2577,7 +2577,7 @@ class Chi(MGXS):
xs_type: {'macro', 'micro'}
Return macro or micro cross section in units of cm^-1 or barns.
Defaults to 'macro'.
summary : None or Summary
summary : None or openmc.Summary
An optional Summary object to be used to construct columns for
distribcell tally filters (default is None). The geometric
information in the Summary object is embedded into a multi-index

View file

@ -24,7 +24,7 @@ def ndarray_to_string(arr):
Parameters
----------
arr : ndarray
arr : numpy.ndarray
Array to combine in to a string
Returns
@ -657,7 +657,7 @@ class MGXSLibraryFile(object):
Energy group structure.
inverse_velocities : Iterable of Real
Inverse of velocities, units of sec/cm
xsdatas : Iterable of XSdata
xsdatas : Iterable of openmc.XSdata
Iterable of multi-Group cross section data objects
"""
@ -693,7 +693,7 @@ class MGXSLibraryFile(object):
Parameters
----------
xsdata : XSdata
xsdata : openmc.XSdata
MGXS information to add
"""
@ -716,7 +716,7 @@ class MGXSLibraryFile(object):
Parameters
----------
xsdatas : tuple or list of XSdata
xsdatas : tuple or list of openmc.XSdata
XSdatas to add
"""
@ -734,7 +734,7 @@ class MGXSLibraryFile(object):
Parameters
----------
xsdata : XSdata
xsdata : openmc.XSdata
XSdata to remove
"""

View file

@ -275,7 +275,7 @@ class Plot(object):
The random number seed used to generate the color scheme
"""
cv.check_type('geometry', geometry, openmc.Geometry)
cv.check_type('seed', seed, Integral)
cv.check_greater_than('seed', seed, 1, equality=True)
@ -417,7 +417,7 @@ class PlotsFile(object):
Parameters
----------
plot : Plot
plot : openmc.Plot
Plot to add
"""
@ -433,7 +433,7 @@ class PlotsFile(object):
Parameters
----------
plot : Plot
plot : openmc.Plot
Plot to remove
"""

View file

@ -9,10 +9,11 @@ from openmc.checkvalue import check_type
class Region(object):
"""Region of space that can be assigned to a cell.
Region is an abstract base class that is inherited by Halfspace,
Intersection, Union, and Complement. Each of those respective classes are
typically not instantiated directly but rather are created through operators
of the Surface and Region classes.
Region is an abstract base class that is inherited by
:class:`openmc.Halfspace`, :class:`openmc.Intersection`,
:class:`openmc.Union`, and :class:`openmc.Complement`. Each of those
respective classes are typically not instantiated directly but rather are
created through operators of the Surface and Region classes.
"""
@ -201,11 +202,11 @@ class Intersection(Region):
"""Intersection of two or more regions.
Instances of Intersection are generally created via the __and__ operator
applied to two instances of Region. This is illustrated in the following
example:
applied to two instances of :class:`openmc.Region`. This is illustrated in
the following example:
>>> equator = openmc.surface.ZPlane(z0=0.0)
>>> earth = openmc.surface.Sphere(R=637.1e6)
>>> equator = openmc.ZPlane(z0=0.0)
>>> earth = openmc.Sphere(R=637.1e6)
>>> northern_hemisphere = -earth & +equator
>>> southern_hemisphere = -earth & -equator
>>> type(northern_hemisphere)
@ -213,12 +214,12 @@ class Intersection(Region):
Parameters
----------
*nodes
\*nodes
Regions to take the intersection of
Attributes
----------
nodes : tuple of Region
nodes : tuple of openmc.Region
Regions to take the intersection of
bounding_box : tuple of numpy.array
Lower-left and upper-right coordinates of an axis-aligned bounding box
@ -255,21 +256,22 @@ class Union(Region):
"""Union of two or more regions.
Instances of Union are generally created via the __or__ operator applied to
two instances of Region. This is illustrated in the following example:
two instances of :class:`openmc.Region`. This is illustrated in the
following example:
>>> s1 = openmc.surface.ZPlane(z0=0.0)
>>> s2 = openmc.surface.Sphere(R=637.1e6)
>>> s1 = openmc.ZPlane(z0=0.0)
>>> s2 = openmc.Sphere(R=637.1e6)
>>> type(-s2 | +s1)
<class 'openmc.region.Union'>
Parameters
----------
*nodes
\*nodes
Regions to take the union of
Attributes
----------
nodes : tuple of Region
nodes : tuple of openmc.Region
Regions to take the union of
bounding_box : tuple of numpy.array
Lower-left and upper-right coordinates of an axis-aligned bounding box
@ -305,13 +307,13 @@ class Union(Region):
class Complement(Region):
"""Complement of a region.
The Complement of an existing Region can be created by using the __invert__
operator as the following example demonstrates:
The Complement of an existing :class:`openmc.Region` can be created by using
the __invert__ operator as the following example demonstrates:
>>> xl = openmc.surface.XPlane(x0=-10.0)
>>> xr = openmc.surface.XPlane(x0=10.0)
>>> yl = openmc.surface.YPlane(y0=-10.0)
>>> yr = openmc.surface.YPlane(y0=10.0)
>>> xl = openmc.XPlane(x0=-10.0)
>>> xr = openmc.XPlane(x0=10.0)
>>> yl = openmc.YPlane(y0=-10.0)
>>> yr = openmc.YPlane(y0=10.0)
>>> inside_box = +xl & -xr & +yl & -yl
>>> outside_box = ~inside_box
>>> type(outside_box)
@ -319,12 +321,12 @@ class Complement(Region):
Parameters
----------
node : Region
node : openmc.Region
Region to take the complement of
Attributes
----------
node : Region
node : openmc.Region
Regions to take the complement of
bounding_box : tuple of numpy.array
Lower-left and upper-right coordinates of an axis-aligned bounding box

View file

@ -38,7 +38,7 @@ class SettingsFile(object):
type are 'variance', 'std_dev', and 'rel_err'. The threshold value
should be a float indicating the variance, standard deviation, or
relative error used.
source : Iterable of openmc.source.Source
source : Iterable of openmc.Source
Distribution of source sites in space, angle, and energy
output : dict
Dictionary indicating what files to output. Valid keys are 'summary',
@ -1166,19 +1166,19 @@ class ResonanceScattering(object):
Attributes
----------
nuclide : openmc.nuclide.Nuclide
nuclide : openmc.Nuclide
The nuclide affected by this resonance scattering treatment.
nuclide_0K : openmc.nuclide.Nuclide
nuclide_0K : openmc.Nuclide
This should be the same isotope as the nuclide attribute above, but it
should have an xs attribute that identifies 0 Kelvin data.
method : str
The method used to sample outgoing scattering energies. Valid options
are 'ARES', 'CXS' (constant cross section), 'DBRC' (Doppler broadening
rejection correction), and 'WCM' (weight correction method).
E_min : Real
E_min : float
The minimum energy above which the specified method is applied. By
default, CXS will be used below E_min.
E_max : Real
E_max : float
The maximum energy below which the specified method is applied. By
default, the asymptotic target-at-rest model is applied above E_max.

View file

@ -18,51 +18,51 @@ class StatePoint(object):
----------
cmfd_on : bool
Indicate whether CMFD is active
cmfd_balance : ndarray
cmfd_balance : numpy.ndarray
Residual neutron balance for each batch
cmfd_dominance
Dominance ratio for each batch
cmfd_entropy : ndarray
cmfd_entropy : numpy.ndarray
Shannon entropy of CMFD fission source for each batch
cmfd_indices : ndarray
cmfd_indices : numpy.ndarray
Number of CMFD mesh cells and energy groups. The first three indices
correspond to the x-, y-, and z- spatial directions and the fourth index
is the number of energy groups.
cmfd_srccmp : ndarray
cmfd_srccmp : numpy.ndarray
Root-mean-square difference between OpenMC and CMFD fission source for
each batch
cmfd_src : ndarray
cmfd_src : numpy.ndarray
CMFD fission source distribution over all mesh cells and energy groups.
current_batch : Integral
current_batch : int
Number of batches simulated
date_and_time : str
Date and time when simulation began
entropy : ndarray
entropy : numpy.ndarray
Shannon entropy of fission source at each batch
gen_per_batch : Integral
Number of fission generations per batch
global_tallies : ndarray of compound datatype
global_tallies : numpy.ndarray of compound datatype
Global tallies for k-effective estimates and leakage. The compound
datatype has fields 'name', 'sum', 'sum_sq', 'mean', and 'std_dev'.
k_combined : list
Combined estimator for k-effective and its uncertainty
k_col_abs : Real
k_col_abs : float
Cross-product of collision and absorption estimates of k-effective
k_col_tra : Real
k_col_tra : float
Cross-product of collision and tracklength estimates of k-effective
k_abs_tra : Real
k_abs_tra : float
Cross-product of absorption and tracklength estimates of k-effective
k_generation : ndarray
k_generation : numpy.ndarray
Estimate of k-effective for each batch/generation
meshes : dict
Dictionary whose keys are mesh IDs and whose values are Mesh objects
n_batches : Integral
n_batches : int
Number of batches
n_inactive : Integral
n_inactive : int
Number of inactive batches
n_particles : Integral
n_particles : int
Number of particles per generation
n_realizations : Integral
n_realizations : int
Number of tally realizations
path : str
Working directory for simulation
@ -71,9 +71,9 @@ class StatePoint(object):
runtime : dict
Dictionary whose keys are strings describing various runtime metrics
and whose values are time values in seconds.
seed : Integral
seed : int
Pseudorandom number generator seed
source : ndarray of compound datatype
source : numpy.ndarray of compound datatype
Array of source sites. The compound datatype has fields 'wgt', 'xyz',
'uvw', and 'E' corresponding to the weight, position, direction, and
energy of the source site.
@ -88,7 +88,7 @@ class StatePoint(object):
Indicate whether user-defined tallies are present
version: tuple of Integral
Version of OpenMC
summary : None or openmc.summary.Summary
summary : None or openmc.Summary
A summary object if the statepoint has been linked with a summary file
"""
@ -504,7 +504,7 @@ class StatePoint(object):
Returns
-------
tally : Tally
tally : openmc.Tally
A tally matching the specified criteria
Raises
@ -601,7 +601,7 @@ class StatePoint(object):
Parameters
----------
summary : Summary
summary : openmc.Summary
A Summary object.
Raises

View file

@ -22,12 +22,12 @@ class UnitSphere(object):
Parameters
----------
reference_uvw : Iterable of Real
reference_uvw : Iterable of float
Direction from which polar angle is measured
Attributes
----------
reference_uvw : Iterable of Real
reference_uvw : Iterable of float
Direction from which polar angle is measured
"""
@ -62,19 +62,19 @@ class PolarAzimuthal(UnitSphere):
Parameters
----------
mu : Univariate
mu : openmc.stats.Univariate
Distribution of the cosine of the polar angle
phi : Univariate
phi : openmc.stats.Univariate
Distribution of the azimuthal angle in radians
reference_uvw : Iterable of Real
reference_uvw : Iterable of float
Direction from which polar angle is measured. Defaults to the positive
z-direction.
Attributes
----------
mu : Univariate
mu : openmc.stats.Univariate
Distribution of the cosine of the polar angle
phi : Univariate
phi : openmc.stats.Univariate
Distribution of the azimuthal angle in radians
"""
@ -142,7 +142,7 @@ class Monodirectional(UnitSphere):
Parameters
----------
reference_uvw : Iterable of Real
reference_uvw : Iterable of float
Direction from which polar angle is measured. Defaults to the positive
x-direction.
@ -186,20 +186,20 @@ class CartesianIndependent(Spatial):
Parameters
----------
x : Univariate
x : openmc.stats.Univariate
Distribution of x-coordinates
y : Univariate
y : openmc.stats.Univariate
Distribution of y-coordinates
z : Univariate
z : openmc.stats.Univariate
Distribution of z-coordinates
Attributes
----------
x : Univariate
x : openmc.stats.Univariate
Distribution of x-coordinates
y : Univariate
y : openmc.stats.Univariate
Distribution of y-coordinates
z : Univariate
z : openmc.stats.Univariate
Distribution of z-coordinates
"""
@ -252,9 +252,9 @@ class Box(Spatial):
Parameters
----------
lower_left : Iterable of Real
lower_left : Iterable of float
Lower-left coordinates of cuboid
upper_right : Iterable of Real
upper_right : Iterable of float
Upper-right coordinates of cuboid
only_fissionable : bool, optional
Whether spatial sites should only be accepted if they occur in
@ -262,9 +262,9 @@ class Box(Spatial):
Attributes
----------
lower_left : Iterable of Real
lower_left : Iterable of float
Lower-left coordinates of cuboid
upper_right : Iterable of Real
upper_right : Iterable of float
Upper-right coordinates of cuboid
only_fissionable : bool, optional
Whether spatial sites should only be accepted if they occur in
@ -328,12 +328,12 @@ class Point(Spatial):
Parameters
----------
xyz : Iterable of Real
xyz : Iterable of float
Cartesian coordinates of location
Attributes
----------
xyz : Iterable of Real
xyz : Iterable of float
Cartesian coordinates of location
"""

View file

@ -37,16 +37,16 @@ class Discrete(Univariate):
Parameters
----------
x : Iterable of Real
x : Iterable of float
Values of the random variable
p : Iterable of Real
p : Iterable of float
Discrete probability for each value
Attributes
----------
x : Iterable of Real
x : Iterable of float
Values of the random variable
p : Iterable of Real
p : Iterable of float
Discrete probability for each value
"""
@ -243,9 +243,9 @@ class Tabular(Univariate):
Parameters
----------
x : Iterable of Real
x : Iterable of float
Tabulated values of the random variable
p : Iterable of Real
p : Iterable of float
Tabulated probabilities
interpolation : {'histogram', 'linear-linear'}, optional
Indicate whether the density function is constant between tabulated
@ -253,9 +253,9 @@ class Tabular(Univariate):
Attributes
----------
x : Iterable of Real
x : Iterable of float
Tabulated values of the random variable
p : Iterable of Real
p : Iterable of float
Tabulated probabilities
interpolation : {'histogram', 'linear-linear'}, optional
Indicate whether the density function is constant between tabulated

View file

@ -587,7 +587,7 @@ class Summary(object):
Returns
-------
material : openmc.material.Material
material : openmc.Material
Material with given id
"""
@ -608,7 +608,7 @@ class Summary(object):
Returns
-------
surface : openmc.surface.Surface
surface : openmc.Surface
Surface with given id
"""
@ -629,7 +629,7 @@ class Summary(object):
Returns
-------
cell : openmc.universe.Cell
cell : openmc.Cell
Cell with given id
"""
@ -650,7 +650,7 @@ class Summary(object):
Returns
-------
universe : openmc.universe.Universe
universe : openmc.Universe
Universe with given id
"""
@ -671,7 +671,7 @@ class Summary(object):
Returns
-------
lattice : openmc.universe.Lattice
lattice : openmc.Lattice
Lattice with given id
"""

View file

@ -153,10 +153,10 @@ class Surface(object):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -278,8 +278,7 @@ class Plane(Surface):
class XPlane(Plane):
"""A plane perpendicular to the x axis, i.e. a surface of the form :math:`x -
x_0 = 0`
"""A plane perpendicular to the x axis of the form :math:`x - x_0 = 0`
Parameters
----------
@ -338,10 +337,10 @@ class XPlane(Plane):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -356,8 +355,7 @@ class XPlane(Plane):
class YPlane(Plane):
"""A plane perpendicular to the y axis, i.e. a surface of the form :math:`y -
y_0 = 0`
"""A plane perpendicular to the y axis of the form :math:`y - y_0 = 0`
Parameters
----------
@ -416,10 +414,10 @@ class YPlane(Plane):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -434,8 +432,7 @@ class YPlane(Plane):
class ZPlane(Plane):
"""A plane perpendicular to the z axis, i.e. a surface of the form :math:`z -
z_0 = 0`
"""A plane perpendicular to the z axis of the form :math:`z - z_0 = 0`
Parameters
----------
@ -494,10 +491,10 @@ class ZPlane(Plane):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -641,10 +638,10 @@ class XCylinder(Cylinder):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -740,10 +737,10 @@ class YCylinder(Cylinder):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -839,10 +836,10 @@ class ZCylinder(Cylinder):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -967,10 +964,10 @@ class Sphere(Surface):
Returns
-------
numpy.array
numpy.ndarray
Lower-left coordinates of the axis-aligned bounding box for the
desired half-space
numpy.array
numpy.ndarray
Upper-right coordinates of the axis-aligned bounding box for the
desired half-space
@ -1383,7 +1380,7 @@ class Halfspace(Region):
can be created from an existing Surface through the __neg__ and __pos__
operators, as the following example demonstrates:
>>> sphere = openmc.surface.Sphere(surface_id=1, R=10.0)
>>> sphere = openmc.Sphere(surface_id=1, R=10.0)
>>> inside_sphere = -sphere
>>> outside_sphere = +sphere
>>> type(inside_sphere)
@ -1391,18 +1388,18 @@ class Halfspace(Region):
Parameters
----------
surface : Surface
surface : openmc.Surface
Surface which divides Euclidean space.
side : {'+', '-'}
Indicates whether the positive or negative half-space is used.
Attributes
----------
surface : Surface
surface : openmc.Surface
Surface which divides Euclidean space.
side : {'+', '-'}
Indicates whether the positive or negative half-space is used.
bounding_box : tuple of numpy.array
bounding_box : tuple of numpy.ndarray
Lower-left and upper-right coordinates of an axis-aligned bounding box
"""

View file

@ -51,7 +51,7 @@ class Tally(object):
Parameters
----------
tally_id : Integral, optional
tally_id : int, optional
Unique identifier for the tally. If none is specified, an identifier
will automatically be assigned
name : str, optional
@ -59,43 +59,43 @@ class Tally(object):
Attributes
----------
id : Integral
id : int
Unique identifier for the tally
name : str
Name of the tally
filters : list of openmc.filter.Filter
filters : list of openmc.Filter
List of specified filters for the tally
nuclides : list of openmc.nuclide.Nuclide
nuclides : list of openmc.Nuclide
List of nuclides to score results for
scores : list of str
List of defined scores, e.g. 'flux', 'fission', etc.
estimator : {'analog', 'tracklength', 'collision'}
Type of estimator for the tally
triggers : list of openmc.trigger.Trigger
triggers : list of openmc.Trigger
List of tally triggers
num_scores : Integral
num_scores : int
Total number of scores, accounting for the fact that a single
user-specified score, e.g. scatter-P3 or flux-Y2,2, might have multiple
bins
num_filter_bins : Integral
num_filter_bins : int
Total number of filter bins accounting for all filters
num_bins : Integral
num_bins : int
Total number of bins for the tally
shape : 3-tuple of Integral
shape : 3-tuple of int
The shape of the tally data array ordered as the number of filter bins,
nuclide bins and score bins
num_realizations : Integral
num_realizations : int
Total number of realizations
with_summary : bool
Whether or not a Summary has been linked
sum : ndarray
sum : numpy.ndarray
An array containing the sum of each independent realization for each bin
sum_sq : ndarray
sum_sq : numpy.ndarray
An array containing the sum of each independent realization squared for
each bin
mean : ndarray
mean : numpy.ndarray
An array containing the sample mean for each bin
std_dev : ndarray
std_dev : numpy.ndarray
An array containing the sample standard deviation for each bin
derived : bool
Whether or not the tally is derived from one or more other tallies
@ -444,7 +444,7 @@ class Tally(object):
Parameters
----------
trigger : openmc.trigger.Trigger
trigger : openmc.Trigger
Trigger to add
"""
@ -688,7 +688,7 @@ class Tally(object):
Parameters
----------
old_filter : openmc.filter.Filter
old_filter : openmc.Filter
Filter to remove
"""
@ -705,7 +705,7 @@ class Tally(object):
Parameters
----------
nuclide : openmc.nuclide.Nuclide
nuclide : openmc.Nuclide
Nuclide to remove
"""
@ -727,7 +727,7 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
Tally to check for mergeable filters
"""
@ -780,7 +780,7 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
Tally to check for mergeable nuclides
"""
@ -817,7 +817,7 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
Tally to check for mergeable scores
"""
@ -858,7 +858,7 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
Tally to check for merging
"""
@ -903,12 +903,12 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
Tally to merge with this one
Returns
-------
merged_tally : Tally
merged_tally : openmc.Tally
Merged tallies
"""
@ -1151,7 +1151,7 @@ class Tally(object):
Returns
-------
filter_found : openmc.filter.Filter
filter_found : openmc.Filter
Filter from this tally with matching type, or None if no matching
Filter is found
@ -1185,7 +1185,7 @@ class Tally(object):
----------
filter_type : str
The type of Filter (e.g., 'cell', 'energy', etc.)
filter_bin : Integral or tuple
filter_bin : int or tuple
The bin is an integer ID for 'material', 'surface', 'cell',
'cellborn', and 'universe' Filters. The bin is an integer for the
cell instance ID for 'distribcell' Filters. The bin is a 2-tuple of
@ -1311,7 +1311,7 @@ class Tally(object):
Returns
-------
ndarray
numpy.ndarray
A NumPy array of the filter indices
"""
@ -1393,7 +1393,7 @@ class Tally(object):
Returns
-------
ndarray
numpy.ndarray
A NumPy array of the nuclide indices
"""
@ -1427,7 +1427,7 @@ class Tally(object):
Returns
-------
ndarray
numpy.ndarray
A NumPy array of the score indices
"""
@ -1489,7 +1489,7 @@ class Tally(object):
Returns
-------
float or ndarray
float or numpy.ndarray
A scalar or NumPy array of the Tally data indexed in the order
each filter, nuclide and score is listed in the parameters.
@ -1557,13 +1557,13 @@ class Tally(object):
Include columns with nuclide bin information (default is True).
scores : bool
Include columns with score bin information (default is True).
summary : None or Summary
summary : None or openmc.Summary
An optional Summary object to be used to construct columns for
distribcell tally filters (default is None). The geometric
information in the Summary object is embedded into a Multi-index
column with a geometric "path" to each distribcell intance.
NOTE: This option requires the OpenCG Python package.
float_format : string
float_format : str
All floats in the DataFrame will be formatted using the given
format string before printing.
@ -1683,8 +1683,8 @@ class Tally(object):
The tally data in OpenMC is stored as a 3D array with the dimensions
corresponding to filters, nuclides and scores. As a result, tally data
can be opaque for a user to directly index (i.e., without use of the
Tally.get_values(...) method) since one must know how to properly use
can be opaque for a user to directly index (i.e., without use of
:meth:`openmc.Tally.get_values`) since one must know how to properly use
the number of bins and strides for each filter to index into the first
(filter) dimension.
@ -1704,7 +1704,7 @@ class Tally(object):
Returns
-------
ndarray
numpy.ndarray
The tally data array indexed by filters, nuclides and scores.
"""
@ -1882,7 +1882,7 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
The tally on the right hand side of the hybrid product
binary_op : {'+', '-', '*', '/', '^'}
The binary operation in the hybrid product
@ -1904,7 +1904,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new Tally that is the hybrid product with this one.
Raises
@ -2082,7 +2082,7 @@ class Tally(object):
Parameters
----------
other : Tally
other : openmc.Tally
The tally to outer product with this tally
filter_product : {'entrywise'}
The type of product to be performed between filter data. Currently,
@ -2464,12 +2464,12 @@ class Tally(object):
Parameters
----------
other : Tally or Real
other : openmc.Tally or float
The tally or scalar value to add to this tally
Returns
-------
Tally
openmc.Tally
A new derived tally which is the sum of this tally and the other
tally or scalar value in the addition.
@ -2536,12 +2536,12 @@ class Tally(object):
Parameters
----------
other : Tally or Real
other : openmc.Tally or float
The tally or scalar value to subtract from this tally
Returns
-------
Tally
openmc.Tally
A new derived tally which is the difference of this tally and the
other tally or scalar value in the subtraction.
@ -2608,12 +2608,12 @@ class Tally(object):
Parameters
----------
other : Tally or Real
other : openmc.Tally or float
The tally or scalar value to multiply with this tally
Returns
-------
Tally
openmc.Tally
A new derived tally which is the product of this tally and the
other tally or scalar value in the multiplication.
@ -2680,12 +2680,12 @@ class Tally(object):
Parameters
----------
other : Tally or Real
other : openmc.Tally or float
The tally or scalar value to divide this tally by
Returns
-------
Tally
openmc.Tally
A new derived tally which is the dividend of this tally and the
other tally or scalar value in the division.
@ -2755,12 +2755,12 @@ class Tally(object):
Parameters
----------
power : Tally or Real
power : openmc.Tally or float
The tally or scalar value exponent
Returns
-------
Tally
openmc.Tally
A new derived tally which is this tally raised to the power of the
other tally or scalar value in the exponentiation.
@ -2816,12 +2816,12 @@ class Tally(object):
Parameters
----------
other : Integer or Real
other : float
The scalar value to add to this tally
Returns
-------
Tally
openmc.Tally
A new derived tally of this tally added with the scalar value.
"""
@ -2835,12 +2835,12 @@ class Tally(object):
Parameters
----------
other : Integer or Real
other : float
The scalar value to subtract this tally from
Returns
-------
Tally
openmc.Tally
A new derived tally of this tally subtracted from the scalar value.
"""
@ -2854,12 +2854,12 @@ class Tally(object):
Parameters
----------
other : Integer or Real
other : float
The scalar value to multiply with this tally
Returns
-------
Tally
openmc.Tally
A new derived tally of this tally multiplied by the scalar value.
"""
@ -2873,12 +2873,12 @@ class Tally(object):
Parameters
----------
other : Integer or Real
other : float
The scalar value to divide by this tally
Returns
-------
Tally
openmc.Tally
A new derived tally of the scalar value divided by this tally.
"""
@ -2890,7 +2890,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new derived tally which is the absolute value of this tally.
"""
@ -2904,7 +2904,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new derived tally which is the negated value of this tally.
"""
@ -2946,7 +2946,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new tally which encapsulates the subset of data requested in the
order each filter, nuclide and score is listed in the parameters.
@ -3069,7 +3069,7 @@ class Tally(object):
filter_type : str
A filter type string (e.g., 'cell', 'energy') corresponding to the
filter bins to sum across
filter_bins : Iterable of Integral or tuple
filter_bins : Iterable of int or tuple
A list of the filter bins corresponding to the filter_type parameter
Each bin in the list is the integer ID for 'material', 'surface',
'cell', 'cellborn', and 'universe' Filters. Each bin is an integer
@ -3087,7 +3087,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new tally which encapsulates the sum of data requested.
"""
@ -3217,7 +3217,7 @@ class Tally(object):
filter_type : str
A filter type string (e.g., 'cell', 'energy') corresponding to the
filter bins to average across
filter_bins : Iterable of Integral or tuple
filter_bins : Iterable of int or tuple
A list of the filter bins corresponding to the filter_type parameter
Each bin in the list is the integer ID for 'material', 'surface',
'cell', 'cellborn', and 'universe' Filters. Each bin is an integer
@ -3235,7 +3235,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new tally which encapsulates the average of data requested.
"""
@ -3368,7 +3368,7 @@ class Tally(object):
Returns
-------
Tally
openmc.Tally
A new derived Tally with data diagaonalized along the new filter.
"""
@ -3444,9 +3444,8 @@ class TalliesFile(object):
Parameters
----------
tally : Tally
tally : openmc.Tally
Tally to add to file
merge : bool
Indicate whether the tally should be merged with an existing tally,
if possible. Defaults to False.
@ -3483,7 +3482,7 @@ class TalliesFile(object):
Parameters
----------
tally : Tally
tally : openmc.Tally
Tally to remove
"""
@ -3519,7 +3518,7 @@ class TalliesFile(object):
Parameters
----------
mesh : openmc.mesh.Mesh
mesh : openmc.Mesh
Mesh to add to the file
"""
@ -3535,7 +3534,7 @@ class TalliesFile(object):
Parameters
----------
mesh : openmc.mesh.Mesh
mesh : openmc.Mesh
Mesh to remove from the file
"""

File diff suppressed because it is too large Load diff

View file

@ -389,7 +389,7 @@ contains
nuc % name = name
nuc % awr = awr
nuc % kT = kT
nuc % zaid = NXS(2)
nuc % zaid = listing % zaid
end if
! read all blocks

View file

@ -300,9 +300,12 @@ if options.list_build_configs:
# Delete items of dictionary that don't match regular expression
if options.build_config is not None:
to_delete = []
for key in tests:
if not re.search(options.build_config, key):
del tests[key]
to_delete.append(key)
for key in to_delete:
del tests[key]
# Check for dashboard and determine whether to push results to server
# Note that there are only 3 basic dashboards:

View file

@ -1 +1 @@
219ee21902e83b0f1b8e92ca4977db998e3a4a5ca36da5be9490f9ec4f30ab90cf15a257fe4113d2f1f9eb85cab159ed65638412b9751ce786d263870c208581
bc8bef8121f9b6470e4fea817a4e48eabb1ecba1f42761a4cbd77d71181bf9e1612df4a3d6ddfbcd08a3086ac873e5f3c3e560bf96b2b7c959a2f7aad7e4e08d

View file

@ -5,7 +5,6 @@ Cell
Name =
Material = [2, 3, void, 2]
Region = -10000
Temperature = [ 293.60594237 293.60594237 0. 293.60594237]
Rotation = None
Translation = None
Offset = None

View file

@ -1,5 +1,5 @@
k-combined:
9.581523E-01 4.261823E-02
9.581522E-01 4.261830E-02
tally 1:
0.000000E+00
0.000000E+00
@ -73,8 +73,8 @@ tally 1:
0.000000E+00
1.149324E-01
1.320945E-02
2.465049E-02
3.049064E-04
2.465048E-02
3.049063E-04
0.000000E+00
0.000000E+00
0.000000E+00
@ -86,13 +86,13 @@ tally 1:
0.000000E+00
0.000000E+00
7.002118E-02
4.902966E-03
4.902965E-03
5.128548E-01
1.258296E-01
1.379070E+00
4.300261E-01
1.040956E+00
3.089103E-01
3.089102E-01
1.237157E+00
6.284409E-01
9.539296E-01
@ -121,14 +121,14 @@ tally 1:
1.597365E-02
8.612279E-02
5.910825E-03
9.004672E-01
9.004671E-01
2.791173E-01
6.485841E+00
1.046238E+01
6.743595E+00
1.135216E+01
7.681047E-01
1.896253E-01
7.681046E-01
1.896252E-01
0.000000E+00
0.000000E+00
0.000000E+00
@ -155,7 +155,7 @@ tally 1:
2.287801E-01
5.651386E-01
1.286874E-01
5.729904E-01
5.729905E-01
2.680764E-01
5.509254E-01
1.200498E-01
@ -185,16 +185,16 @@ tally 1:
5.854257E-02
2.237774E+00
1.109643E+00
7.495197E-01
7.495196E-01
1.939234E-01
3.804197E-01
1.225870E-01
1.009880E-01
9.392498E-03
9.392497E-03
2.424177E+00
1.613025E+00
2.226123E+00
1.203764E+00
1.203763E+00
1.939766E+00
1.132042E+00
3.953753E-01
@ -207,7 +207,7 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
2.501130E-02
2.501129E-02
6.255649E-04
3.984785E-01
1.486414E-01
@ -233,11 +233,11 @@ tally 1:
1.425606E+00
1.377786E-01
1.716503E-02
3.011081E-02
9.066609E-04
3.011069E-02
9.066538E-04
0.000000E+00
0.000000E+00
5.118695E-02
5.118696E-02
2.620104E-03
0.000000E+00
0.000000E+00
@ -260,14 +260,14 @@ tally 1:
2.560771E-01
6.557550E-02
9.262861E-03
8.580059E-05
8.580060E-05
2.505905E-01
6.279558E-02
5.136552E-01
2.638417E-01
1.441275E+00
5.086866E-01
2.913900E+00
5.086865E-01
2.913901E+00
1.841912E+00
6.978650E-01
2.584000E-01
@ -301,7 +301,7 @@ tally 1:
1.575534E-01
4.033076E-01
5.492660E-02
4.513269E+00
4.513270E+00
5.611449E+00
1.653243E+00
8.369762E-01
@ -318,15 +318,15 @@ tally 1:
5.709899E+00
7.095076E+00
1.194169E+00
4.790399E-01
4.790398E-01
1.420269E-01
2.017164E-02
2.017163E-02
0.000000E+00
0.000000E+00
3.214463E-01
3.214464E-01
1.033278E-01
2.222164E-02
4.938014E-04
2.222160E-02
4.937996E-04
2.028040E-01
4.112944E-02
1.417427E+00
@ -335,7 +335,7 @@ tally 1:
6.697189E-01
8.534416E-01
2.290345E-01
5.367405E+00
5.367404E+00
6.853344E+00
1.237276E+00
4.961691E-01
@ -345,14 +345,14 @@ tally 1:
1.049542E-01
4.235354E+00
5.638989E+00
2.034494E+00
2.034493E+00
1.162774E+00
1.533605E+00
8.644494E-01
8.644495E-01
4.663027E+00
5.641430E+00
1.261505E+00
7.705207E-01
7.705206E-01
1.954689E+00
9.874394E-01
1.449729E-01
@ -364,7 +364,7 @@ tally 1:
0.000000E+00
0.000000E+00
1.398153E-01
1.954831E-02
1.954832E-02
5.089636E-01
8.836228E-02
1.422521E+00
@ -380,7 +380,7 @@ tally 1:
3.267703E-01
4.763836E-02
1.252153E+00
4.563947E-01
4.563949E-01
1.962807E-01
2.410165E-02
1.357567E+00
@ -419,7 +419,7 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
3.679763E-01
3.679762E-01
1.354065E-01
5.043842E-02
2.544034E-03
@ -502,11 +502,11 @@ tally 1:
0.000000E+00
0.000000E+00
5.208007E-01
2.057625E-01
2.057626E-01
1.050464E+00
5.524605E-01
7.171592E-02
5.143173E-03
7.171591E-02
5.143172E-03
0.000000E+00
0.000000E+00
0.000000E+00

File diff suppressed because it is too large Load diff

View file

@ -1,2 +1,2 @@
k-combined:
9.638451E-01 1.237712E-02
9.638450E-01 1.237705E-02

View file

@ -1,2 +1,2 @@
k-combined:
9.581523E-01 4.261823E-02
9.581522E-01 4.261830E-02

View file

@ -2,8 +2,8 @@ domain=1 type=transport
[ 0.37274472 0.86160691]
[ 0.02426918 0.03234902]
domain=1 type=nu-fission
[ 0.021789 0.71407573]
[ 0.00118188 0.04055226]
[ 0.02178897 0.71407658]
[ 0.00118187 0.04055185]
domain=1 type=nu-scatter matrix
[[ 0.3373971 0.00155945]
[ 0. 0.42205129]]
@ -11,7 +11,7 @@ domain=1 type=nu-scatter matrix
[ 0. 0.02161702]]
domain=1 type=chi
[ 1. 0.]
[ 0.05533321 0. ]
[ 0.05533329 0. ]
domain=2 type=transport
[ 0.23725441 0.28593027]
[ 0.00818357 0.04879593]

View file

@ -2,7 +2,7 @@
1 1 1 total 0.372745 0.024269
0 1 2 total 0.861607 0.032349 material group in nuclide mean std. dev.
1 1 1 total 0.021789 0.001182
0 1 2 total 0.714076 0.040552 material group in group out nuclide mean std. dev.
0 1 2 total 0.714077 0.040552 material group in group out nuclide mean std. dev.
3 1 1 1 total 0.337397 0.023039
2 1 1 2 total 0.001559 0.000510
1 1 2 1 total 0.000000 0.000000

View file

@ -67,23 +67,23 @@
31 1 2 Eu-153 0.000000 0.000000
32 1 2 Gd-155 0.000000 0.000000
33 1 2 O-16 0.196946 0.014729 material group in nuclide mean std. dev.
34 1 1 U-234 7.274436e-06 4.419480e-07
35 1 1 U-235 9.587789e-03 5.936867e-04
36 1 1 U-236 7.566085e-05 7.523984e-06
37 1 1 U-238 7.178361e-03 6.505657e-04
38 1 1 Np-237 1.315681e-05 8.036505e-07
39 1 1 Pu-238 7.746149e-06 3.992846e-07
40 1 1 Pu-239 3.805332e-03 3.637556e-04
41 1 1 Pu-240 6.941315e-05 4.729734e-06
42 1 1 Pu-241 1.033846e-03 9.084007e-05
43 1 1 Pu-242 5.995329e-06 3.821724e-07
44 1 1 Am-241 1.148582e-06 8.271558e-08
45 1 1 Am-242m 1.101985e-06 6.376129e-08
46 1 1 Am-243 8.323823e-07 5.841794e-08
47 1 1 Cm-242 5.088975e-07 5.258061e-08
48 1 1 Cm-243 2.245435e-07 1.459031e-08
49 1 1 Cm-244 2.993205e-07 2.746134e-08
50 1 1 Cm-245 3.063614e-07 3.057777e-08
34 1 1 U-234 7.274440e-06 4.419477e-07
35 1 1 U-235 9.587803e-03 5.936922e-04
36 1 1 U-236 7.566099e-05 7.523935e-06
37 1 1 U-238 7.178367e-03 6.505680e-04
38 1 1 Np-237 1.315682e-05 8.036501e-07
39 1 1 Pu-238 7.746151e-06 3.992835e-07
40 1 1 Pu-239 3.805294e-03 3.637600e-04
41 1 1 Pu-240 6.941319e-05 4.729737e-06
42 1 1 Pu-241 1.033844e-03 9.083913e-05
43 1 1 Pu-242 5.995332e-06 3.821721e-07
44 1 1 Am-241 1.148585e-06 8.271648e-08
45 1 1 Am-242m 1.100215e-06 6.159956e-08
46 1 1 Am-243 8.323826e-07 5.841792e-08
47 1 1 Cm-242 5.088970e-07 5.258007e-08
48 1 1 Cm-243 2.245435e-07 1.459025e-08
49 1 1 Cm-244 2.993206e-07 2.746129e-08
50 1 1 Cm-245 3.063611e-07 3.057751e-08
51 1 1 Mo-95 0.000000e+00 0.000000e+00
52 1 1 Tc-99 0.000000e+00 0.000000e+00
53 1 1 Ru-101 0.000000e+00 0.000000e+00
@ -101,23 +101,23 @@
65 1 1 Eu-153 0.000000e+00 0.000000e+00
66 1 1 Gd-155 0.000000e+00 0.000000e+00
67 1 1 O-16 0.000000e+00 0.000000e+00
0 1 2 U-234 4.408571e-07 2.828333e-08
1 1 2 U-235 3.768090e-01 2.445691e-02
2 1 2 U-236 6.097532e-06 3.733076e-07
3 1 2 U-238 5.353069e-07 3.310577e-08
4 1 2 Np-237 2.702979e-07 2.098942e-08
5 1 2 Pu-238 3.463104e-05 2.638405e-06
6 1 2 Pu-239 2.889640e-01 1.376023e-02
7 1 2 Pu-240 4.533642e-06 2.544334e-07
8 1 2 Pu-241 4.809358e-02 2.778366e-03
9 1 2 Pu-242 8.715316e-08 5.460943e-09
10 1 2 Am-241 4.611731e-06 2.155065e-07
11 1 2 Am-242m 1.428045e-04 8.436508e-06
12 1 2 Am-243 7.883889e-08 4.734559e-09
13 1 2 Cm-242 9.731014e-07 6.143805e-08
14 1 2 Cm-243 1.825829e-06 1.074864e-07
15 1 2 Cm-244 1.581821e-07 9.938154e-09
16 1 2 Cm-245 1.213384e-05 8.812070e-07
0 1 2 U-234 4.408576e-07 2.828309e-08
1 1 2 U-235 3.768094e-01 2.445671e-02
2 1 2 U-236 6.097538e-06 3.733038e-07
3 1 2 U-238 5.353074e-07 3.310544e-08
4 1 2 Np-237 2.702971e-07 2.098939e-08
5 1 2 Pu-238 3.463109e-05 2.638394e-06
6 1 2 Pu-239 2.889643e-01 1.376004e-02
7 1 2 Pu-240 4.533642e-06 2.544289e-07
8 1 2 Pu-241 4.809366e-02 2.778345e-03
9 1 2 Pu-242 8.715325e-08 5.460893e-09
10 1 2 Am-241 4.611736e-06 2.155039e-07
11 1 2 Am-242m 1.428047e-04 8.436437e-06
12 1 2 Am-243 7.883895e-08 4.734503e-09
13 1 2 Cm-242 9.731025e-07 6.143750e-08
14 1 2 Cm-243 1.825830e-06 1.074849e-07
15 1 2 Cm-244 1.581823e-07 9.938064e-09
16 1 2 Cm-245 1.213386e-05 8.812019e-07
17 1 2 Mo-95 0.000000e+00 0.000000e+00
18 1 2 Tc-99 0.000000e+00 0.000000e+00
19 1 2 Ru-101 0.000000e+00 0.000000e+00

View file

@ -5,8 +5,8 @@ Cell
Name =
Material = 2
Region = -10000
Temperature = [ 500. 0. 700. 800.]
Rotation = None
Temperature = [ 500. 0. 700. 800.]
Translation = None
Offset = None
Distribcell index= 1

View file

@ -1 +1 @@
e1bf6c8d9e29f4b6ec8a0eadb3802248eea1cc42fe17b2257ee28eabcdc63958073e226e04a2e751f92f12ef7cb8de330991de395707d9fab2a826ca6946181d
a9310752363eb059ff40f16ac9716b41ccab6ec6607d29f498069318745e485d18d784264304cc2586865bd58cef7587203cc22a1d485c58ddd63c14c0defdb9

View file

@ -1 +1 @@
f1b2b43197e1bbb305000d5a84c228361afb876d23ed866cdb073fe7410335c87fb16066c031d0e4397225321632566c00f48eac6187d59bdeab9a8c60986c3c
9f14aaa1694489032b3ce193ad29ecf6ac8976c88c2dd6b26d4c30ae88348e249a9b702b1d39c22204350b8f3bd689800c1b6a6003f19c7bdaf64084a209a2cc

View file

@ -1 +1 @@
0c46f4198850c6bedcd3294fbbed9a6814568344f39d389f0b05aa0198bf4bb8a8bac4c6aa698bf66879c3037d1352f2cf6d8dff479d5b64be41fd88d93d3a04
840d2648f9ba782926c71baa84e5a2ad31331e156740a3d1e9d86af8f1f0d301ef8c0f69474975d365dbcf8d229a68c62d3e60286d18045e5254373f4e1010bf

View file

@ -1,5 +1,5 @@
k-combined:
9.581523E-01 4.261823E-02
9.581522E-01 4.261830E-02
tally 1:
1.529084E+01
4.769011E+01