diff --git a/.gitignore b/.gitignore index 815e97851..f0378dfc6 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ examples/python/**/*.xml docs/build docs/source/_images/*.pdf docs/source/_images/*.aux +docs/source/pythonapi/generated/ # Source build build diff --git a/.travis.yml b/.travis.yml index acec278ed..b99ce540b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ before_install: - conda config --set always_yes yes --set changeps1 no - conda update -q conda - conda info -a - - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy h5py pandas + - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy h5py=2.5 pandas - source activate test-environment # Install GCC, MPICH, HDF5, PHDF5 diff --git a/docs/source/_templates/myclass.rst b/docs/source/_templates/myclass.rst new file mode 100644 index 000000000..a0560f93a --- /dev/null +++ b/docs/source/_templates/myclass.rst @@ -0,0 +1,7 @@ +{{ fullname }} +{{ underline }} + +.. currentmodule:: {{ module }} + +.. autoclass:: {{ objname }} + :members: diff --git a/docs/source/_templates/myfunction.rst b/docs/source/_templates/myfunction.rst new file mode 100644 index 000000000..4d7ea38a1 --- /dev/null +++ b/docs/source/_templates/myfunction.rst @@ -0,0 +1,6 @@ +{{ fullname }} +{{ underline }} + +.. currentmodule:: {{ module }} + +.. autofunction:: {{ objname }} diff --git a/docs/source/conf.py b/docs/source/conf.py index 6ca551a43..38661cdb3 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -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 # " v 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) +} diff --git a/docs/source/index.rst b/docs/source/index.rst index 54ba825e5..a79a10de1 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -13,11 +13,14 @@ OpenMC was originally developed by members of the `Computational Reactor Physics Group`_ at the `Massachusetts Institute of Technology`_ starting in 2011. Various universities, laboratories, and other organizations now contribute to the development of OpenMC. For more information on OpenMC, feel -free to send a message to the User's Group `mailing list`_. +free to send a message to the User's Group `mailing list`_. Documentation for +the latest developmental version of the develop branch can be found on +`Read the Docs`_. .. _Computational Reactor Physics Group: http://crpg.mit.edu .. _Massachusetts Institute of Technology: http://web.mit.edu .. _mailing list: https://groups.google.com/forum/?fromgroups=#!forum/openmc-users +.. _Read the Docs: http://openmc.readthedocs.io/en/latest/ .. only:: html diff --git a/docs/source/license.rst b/docs/source/license.rst index 73e329617..c51902d6f 100644 --- a/docs/source/license.rst +++ b/docs/source/license.rst @@ -4,7 +4,7 @@ License Agreement ================= -Copyright © 2011-2015 Massachusetts Institute of Technology +Copyright © 2011-2016 Massachusetts Institute of Technology Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/docs/source/pythonapi/ace.rst b/docs/source/pythonapi/ace.rst deleted file mode 100644 index 4810ec4bb..000000000 --- a/docs/source/pythonapi/ace.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_ace: - -========== -ACE Format -========== - -.. automodule:: openmc.ace - :members: diff --git a/docs/source/pythonapi/cmfd.rst b/docs/source/pythonapi/cmfd.rst deleted file mode 100644 index 51470069f..000000000 --- a/docs/source/pythonapi/cmfd.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_cmfd: - -==== -CMFD -==== - -.. automodule:: openmc.cmfd - :members: diff --git a/docs/source/pythonapi/element.rst b/docs/source/pythonapi/element.rst deleted file mode 100644 index 473cbba45..000000000 --- a/docs/source/pythonapi/element.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_element: - -======= -Element -======= - -.. automodule:: openmc.element - :members: diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index 8db4cd4df..a450af97e 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -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" ] }, { @@ -204,7 +201,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With our material, we can now create a `MaterialsFile` object that can be exported to an actual XML file." + "With our material, we can now create a `Materials` object that can be exported to an actual XML file." ] }, { @@ -215,10 +212,9 @@ }, "outputs": [], "source": [ - "# Instantiate a MaterialsFile, register all Materials, and export to XML\n", - "materials_file = openmc.MaterialsFile()\n", + "# Instantiate a Materials collection and export to XML\n", + "materials_file = openmc.Materials([inf_medium])\n", "materials_file.default_xs = '71c'\n", - "materials_file.add_material(inf_medium)\n", "materials_file.export_to_xml()" ] }, @@ -293,7 +289,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We now must create a geometry that is assigned a root universe, put the geometry into a `GeometryFile` object, and export it to XML." + "We now must create a geometry that is assigned a root universe and export it to XML." ] }, { @@ -308,12 +304,8 @@ "openmc_geometry = openmc.Geometry()\n", "openmc_geometry.root_universe = root_universe\n", "\n", - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = openmc_geometry\n", - "\n", "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" + "openmc_geometry.export_to_xml()" ] }, { @@ -336,15 +328,17 @@ "inactive = 10\n", "particles = 2500\n", "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", "settings_file.batches = batches\n", "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 +417,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, @@ -454,7 +450,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `Absorption` object includes tracklength tallies for the 'absorption' and 'flux' scores in the 2-group structure in cell 1. Now that each `MGXS` object contains the tallies that it needs, we must add these tallies to a `TalliesFile` object to generate the \"tallies.xml\" input file for OpenMC." + "The `Absorption` object includes tracklength tallies for the 'absorption' and 'flux' scores in the 2-group structure in cell 1. Now that each `MGXS` object contains the tallies that it needs, we must add these tallies to a `Tallies` object to generate the \"tallies.xml\" input file for OpenMC." ] }, { @@ -465,21 +461,18 @@ }, "outputs": [], "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", + "# Instantiate an empty Tallies object\n", + "tallies_file = openmc.Tallies()\n", "\n", "# Add total tallies to the tallies file\n", - "for tally in total.tallies.values():\n", - " tallies_file.add_tally(tally)\n", + "tallies_file += total.tallies.values()\n", "\n", "# Add absorption tallies to the tallies file\n", - "for tally in absorption.tallies.values():\n", - " tallies_file.add_tally(tally)\n", + "tallies_file += absorption.tallies.values()\n", "\n", "# Add scattering tallies to the tallies file\n", - "for tally in scattering.tallies.values():\n", - " tallies_file.add_tally(tally)\n", - " \n", + "tallies_file += scattering.tallies.values()\n", + "\n", "# Export to \"tallies.xml\"\n", "tallies_file.export_to_xml()" ] @@ -518,10 +511,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 +598,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", @@ -644,8 +636,7 @@ ], "source": [ "# Run OpenMC\n", - "executor = openmc.Executor()\n", - "executor.run_simulation()" + "openmc.run()" ] }, { @@ -914,7 +905,7 @@ " 6.250000e-07\n", " total\n", " (((total / flux) - (absorption / flux)) - (sca...\n", - " 8.881784e-16\n", + " -3.774758e-15\n", " 0.011292\n", " \n", " \n", @@ -924,7 +915,7 @@ " 2.000000e+01\n", " total\n", " (((total / flux) - (absorption / flux)) - (sca...\n", - " -9.992007e-16\n", + " 1.443290e-15\n", " 0.002570\n", " \n", " \n", @@ -937,8 +928,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 +1192,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb index 9798b6f07..793d88436 100644 --- a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -34,8 +34,16 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:11: QAWarning: pyne.rxname is not yet QA compliant.\n", - "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:11: QAWarning: pyne.ace is not yet QA compliant.\n" + "/usr/local/lib/python2.7/dist-packages/matplotlib-1.5.1+1178.ga40c9ec-py2.7-linux-x86_64.egg/matplotlib/__init__.py:884: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", + " warnings.warn(self.msg_depr % (key, alt_key))\n", + "/usr/local/lib/python2.7/dist-packages/matplotlib-1.5.1+1178.ga40c9ec-py2.7-linux-x86_64.egg/matplotlib/__init__.py:1362: UserWarning: This call to matplotlib.use() has no effect\n", + "because the backend has already been chosen;\n", + "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", + "or matplotlib.backends is imported for the first time.\n", + "\n", + " warnings.warn(_use_error_msg)\n", + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:9: QAWarning: pyne.rxname is not yet QA compliant.\n", + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:9: QAWarning: pyne.ace is not yet QA compliant.\n" ] } ], @@ -46,8 +54,6 @@ "\n", "import openmc\n", "import openmc.mgxs as mgxs\n", - "from openmc.source import Source\n", - "from openmc.stats import Box\n", "import openmoc\n", "from openmoc.opencg_compatible import get_openmoc_geometry\n", "import pyne.ace\n", @@ -64,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -87,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -116,22 +122,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With our materials, we can now create a `MaterialsFile` object that can be exported to an actual XML file." + "With our materials, we can now create a `Materials` object that can be exported to an actual XML file." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# Instantiate a MaterialsFile, add Materials\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.add_material(fuel)\n", - "materials_file.add_material(water)\n", - "materials_file.add_material(zircaloy)\n", + "# Instantiate a Materials collection\n", + "materials_file = openmc.Materials((fuel, water, zircaloy))\n", "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", @@ -147,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "collapsed": true }, @@ -175,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -212,7 +215,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -232,12 +235,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We now must create a geometry that is assigned a root universe, put the geometry into a `GeometryFile` object, and export it to XML." + "We now must create a geometry that is assigned a root universe and export it to XML." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -247,12 +250,8 @@ "openmc_geometry = openmc.Geometry()\n", "openmc_geometry.root_universe = root_universe\n", "\n", - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = openmc_geometry\n", - "\n", "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" + "openmc_geometry.export_to_xml()" ] }, { @@ -264,7 +263,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "collapsed": true }, @@ -275,15 +274,17 @@ "inactive = 10\n", "particles = 10000\n", "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", "settings_file.batches = batches\n", "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", "# Activate tally precision triggers\n", "settings_file.trigger_active = True\n", @@ -302,7 +303,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "collapsed": true }, @@ -327,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -358,7 +359,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -382,14 +383,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", + "# Instantiate an empty Tallies object\n", + "tallies_file = openmc.Tallies()\n", "\n", "# Iterate over all cells and cross section types\n", "for cell in openmc_cells:\n", @@ -404,7 +405,7 @@ " \n", " # Add OpenMC tallies to the tallies file for XML generation\n", " for tally in xs_library[cell.id][rxn_type].tallies.values():\n", - " tallies_file.add_tally(tally, merge=True)\n", + " tallies_file.append(tally, merge=True)\n", "\n", "# Export to \"tallies.xml\"\n", "tallies_file.export_to_xml()" @@ -419,7 +420,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -444,10 +445,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: 30641c5d37646212ab0540a1064ef6590065f0f0\n", - " Date/Time: 2016-03-23 15:00:26\n", + " Git SHA1: eeb5091ca3a34cc85df73a3318cae2b6c7097413\n", + " Date/Time: 2016-04-13 11:59:39\n", " MPI Processes: 1\n", - " OpenMP Threads: 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -562,20 +562,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.9500E-01 seconds\n", - " Reading cross sections = 1.0300E-01 seconds\n", - " Total time in simulation = 1.1163E+02 seconds\n", - " Time in transport only = 1.1148E+02 seconds\n", - " Time in inactive batches = 6.6440E+00 seconds\n", - " Time in active batches = 1.0499E+02 seconds\n", - " Time synchronizing fission bank = 2.4000E-02 seconds\n", - " Sampling source sites = 1.6000E-02 seconds\n", + " Total time for initialization = 4.0100E-01 seconds\n", + " Reading cross sections = 8.8000E-02 seconds\n", + " Total time in simulation = 2.3897E+02 seconds\n", + " Time in transport only = 2.3892E+02 seconds\n", + " Time in inactive batches = 1.6456E+01 seconds\n", + " Time in active batches = 2.2251E+02 seconds\n", + " Time synchronizing fission bank = 1.8000E-02 seconds\n", + " Sampling source sites = 1.3000E-02 seconds\n", " SEND/RECV source sites = 4.0000E-03 seconds\n", - " Time accumulating tallies = 6.0000E-03 seconds\n", - " Total time for finalization = 1.3000E-02 seconds\n", - " Total time elapsed = 1.1220E+02 seconds\n", - " Calculation Rate (inactive) = 15051.2 neutrons/second\n", - " Calculation Rate (active) = 3810.00 neutrons/second\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 1.2000E-02 seconds\n", + " Total time elapsed = 2.3943E+02 seconds\n", + " Calculation Rate (inactive) = 6076.81 neutrons/second\n", + " Calculation Rate (active) = 1797.66 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -593,15 +593,14 @@ "0" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Run OpenMC\n", - "executor = openmc.Executor()\n", - "executor.run_simulation(output=True)" + "openmc.run(output=True)" ] }, { @@ -620,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -639,9 +638,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -659,7 +658,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -694,7 +693,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -748,7 +747,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -790,7 +789,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -920,7 +919,7 @@ "119 10002 1 5 O-16 0.000000 0.000000" ] }, - "execution_count": 21, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -940,7 +939,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -962,7 +961,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -1001,7 +1000,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -1084,7 +1083,7 @@ "2 10000 2 O-16 3.794859 0.011139" ] }, - "execution_count": 24, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -1110,7 +1109,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -1129,7 +1128,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1174,7 +1173,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -1353,7 +1352,7 @@ ], "source": [ "# Generate tracks for OpenMOC\n", - "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, spacing=0.1)\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, azim_spacing=0.1)\n", "track_generator.generateTracks()\n", "\n", "# Run OpenMOC\n", @@ -1370,7 +1369,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -1405,7 +1404,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -1445,7 +1444,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -1692,7 +1691,7 @@ ], "source": [ "# Generate tracks for OpenMOC\n", - "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, spacing=0.1)\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, azim_spacing=0.1)\n", "track_generator.generateTracks()\n", "\n", "# Run OpenMOC\n", @@ -1702,7 +1701,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1759,7 +1758,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -1785,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1796,7 +1795,7 @@ "(9.9999999999999994e-12, 20.0)" ] }, - "execution_count": 33, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, @@ -1804,7 +1803,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1846,7 +1845,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1878,7 +1877,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1887,7 +1886,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 023efcc10..34190371b 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -32,7 +32,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", + "/usr/local/lib/python2.7/dist-packages/matplotlib-1.5.1+1178.ga40c9ec-py2.7-linux-x86_64.egg/matplotlib/__init__.py:1362: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -44,20 +44,16 @@ "source": [ "import math\n", "import pickle\n", + "\n", "from IPython.display import Image\n", - "import matplotlib.pylab as pylab\n", + "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "import openmc\n", "import openmc.mgxs\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", "import openmoc\n", "import openmoc.process\n", - "from openmoc.compatible import get_openmoc_geometry\n", + "from openmoc.opencg_compatible import get_openmoc_geometry\n", "from openmoc.materialize import load_openmc_mgxs_lib\n", "\n", "%matplotlib inline" @@ -126,7 +122,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With our three materials, we can now create a `MaterialsFile` object that can be exported to an actual XML file." + "With our three materials, we can now create a `Materials` object that can be exported to an actual XML file." ] }, { @@ -137,11 +133,8 @@ }, "outputs": [], "source": [ - "# Instantiate a MaterialsFile, add Materials\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.add_material(fuel)\n", - "materials_file.add_material(water)\n", - "materials_file.add_material(zircaloy)\n", + "# Instantiate a Materials object\n", + "materials_file = openmc.Materials((fuel, water, zircaloy))\n", "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", @@ -335,7 +328,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We now must create a geometry that is assigned a root universe, put the geometry into a `GeometryFile` object, and export it to XML." + "We now must create a geometry that is assigned a root universe and export it to XML." ] }, { @@ -359,12 +352,8 @@ }, "outputs": [], "source": [ - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = geometry\n", - "\n", "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" + "geometry.export_to_xml()" ] }, { @@ -387,15 +376,17 @@ "inactive = 10\n", "particles = 2500\n", "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", "settings_file.batches = batches\n", "settings_file.inactive = inactive\n", "settings_file.particles = particles\n", "settings_file.output = {'tallies': False}\n", - "source_bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n", - "settings_file.source = Source(Box(\n", - " source_bounds[:3], source_bounds[3:], only_fissionable=True))\n", + "\n", + "# Create an initial uniform spatial source distribution over fissionable zones\n", + "bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n", + "uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n", + "settings_file.source = openmc.source.Source(space=uniform_dist)\n", "\n", "# Export to \"settings.xml\"\n", "settings_file.export_to_xml()" @@ -405,7 +396,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let us also create a `PlotsFile` that we can use to verify that our fuel assembly geometry was created successfully." + "Let us also create a `Plots` file that we can use to verify that our fuel assembly geometry was created successfully." ] }, { @@ -421,11 +412,11 @@ "plot.filename = 'materials-xy'\n", "plot.origin = [0, 0, 0]\n", "plot.pixels = [250, 250]\n", + "plot.width = [-10.71*2, -10.71*2]\n", "plot.color = 'mat'\n", "\n", - "# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n", - "plot_file = openmc.PlotsFile()\n", - "plot_file.add_plot(plot)\n", + "# Instantiate a Plots object, add Plot, and export to \"plots.xml\"\n", + "plot_file = openmc.Plots([plot])\n", "plot_file.export_to_xml()" ] }, @@ -456,8 +447,7 @@ ], "source": [ "# Run openmc in plotting mode\n", - "executor = openmc.Executor()\n", - "executor.plot_geometry(output=False)" + "openmc.plot_geometry(output=False)" ] }, { @@ -469,7 +459,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEVyEhLpgJFNv8T///98\niBL0AAAAAWJLR0QDEQxM8gAAAAd0SU1FB+ADFxIsERzdmJYAAAQUSURBVGje7VvNleMgDA4HSqAf\nl+CDnUNKSD8uIQdT5djBgIRESPztbua9RYeZPNAnCcdBP4jLpVOnTp2+TnaexJibRzE2z4MOn4UA\nt42NAq4KMPt4wWxnyeyeYxIfxvlEGJqkGnVVV//gE5v6m1+4AZuau5cL3Xiv3vuVTbgN7jcBI1Oz\nDXn5BNxzfGMmE0+RG/NE1ewiNz3iqQZeOmE3S3d6EJmHGl8uwBy8fpkEL5UZ1O8yy+V7MRF5icyk\nZi2/1chLJiKvf0xCjV/4A0i8PhlrEu+abHJXL2Ry3izYJl6fbEpmEpkFPgnOvFlmNpPjia40oeCJ\nGs/fypvEZ13JJopnD5Dgk2DCu07CTI4nuvwyCF3RJkvUsC+A8CY80eUV/FrFj8LWuCZXwVNb/WMU\nuqJNjiyTfoHM1jfxvoqfqvj5HfyxMMfwo3hMFG81PNX10PD5BWS2votfOv7X4MHv35zCv35/1ff/\nHTz6+znx+71o+4e2/xB8a//S9r/a/qXuv439k+2/1LDDVnX/JjKPZUrDXvmfmv8ghr3tvwaKvwre\nhv/l/lPz35r/r/lvMpHjBxJ/DMImHn/kWCnrMjn+SbqyTQvHp8BmbcRfSc3I8MlYGv9dJW+UWcZv\nJk6w+FPyRplLGcEf8SuNVaNMyhtjWiXTeDKzBCDE2iwmN0HPIuJns8f12ziVG2J6HqvvKcGeJ1xK\nCnlF8VbJnMQqOQmZKL5VJVeZ50oC5eS4UXIlq6c/QbLyVMRKnWZ9p06dOnX6HjnVK4m92lS2f6fU\n1RRXZSr+wyj+S6vfKWW6rL5gVnylrdTvzNMxi/rdEP5QNdfdzQsDQmFtZRPuibRUpgkxxSIc8FEs\n4/HLdKyCqrmHmKRYQIx1eP1uYP+JGhE/Wa1+Fz+q9Tu+gBTr0frdWAoiMWmxAKV+Z9Inm+PXj+p3\nF/Hpo/pd5mjW79T8IVuYPtbyB7V+lxnsKMys1u9y/kTwrfxJyd8uNL9V6ncsf1Prd/TxHnhi5qOV\nv7J5ucxq/hvzZzY/iGU263fs+Sj4Vv7fwDfrFwr+k/qHY/jxJV6t39D3y2p48n7dTuBb9aeO/3d4\n8PtH378/+v6f+f2Bv390/8H3PyL4zP6L7v+o/0H9H+p/Uf+Pxh9w/IPGX2j8h8afaPwLx99o/I/m\nH3D+g+ZfcP7XqVOnTp2+ROD5C3j+g54/gedf6Pkbev4Hnj+i55/o+St6/oueP4Pn3+j5O3r+j/Yf\noP0PaP8F2v8B9594Ydgn/S+/sX/udP/Rif6n3n/3n+P/Rv8dtanR//nt/jm0/xbt/8X7j+8S/0n/\nM9p/jfZ/o/3naP872n+P9v/D9w/Q+w/o/Qv0/gd8/wS9/4Lev4Hv/6D3j9D7T/D9q06dOnX6jH4A\n5sDOrAejcacAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDMtMjNUMTQ6NDQ6MTYtMDQ6MDBE774l\nAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTAzLTIzVDE0OjQ0OjE2LTA0OjAwNbIGmQAAAABJRU5E\nrkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAWFSURB\nVGje7Zs7cttADIZ9CSvXcrP0iCxUqbBc8Ag6xR6BhV2EvYvwFD4CCx1ABT1jMdgndpegRQnOrCbj\npPlGESISC4A/gd27e8H583CX3b4+iKJrRHkS4vkghMPBonRYWGwtfgD2YN+dRDUOoh6lACw0Noi9\nw2fESuEoAR/uVuMolX039oXGT7F3eFL2iEfhUX1f4cPdL/ishs+68ai+udE4xPhexbjX2FfjGNoP\nj/DPNX4Tsd+EODr8FvsVdf1Hd9P2VvCi4+s/aXvrf+upAD+1/9GV1mkOH5X9vV6THtfvACslcaUC\nbESL61drBPtdI8SrFMWrELsXCkuFDYW75gbiP7d9Cf7bAYI/aCwUShrBvh30+lWQkzVgZ/HD4Oix\nNCgcQpJ3BxU/Ln91elKoM5VEE38QtJ+Yv6cQ9xjKNYayyl8TypP8DfJnQ2H/b/N3ye9P83cT33SQ\nv/sQh9gV7zZ/0dNj5HQaC5vVzv9+/WFN2w8KVaZ2BwL1+pv4g0x1QRfjq0dB4Q3kT277oP6VNL6g\nKxNU9a8zK+WLbi/WwpdihbboKqyxFOulHMj6v4W/AXbmUeAxrv9J/CqEBXaRKsXaodD4nsYvkT/G\n6H1D4SR/iPy1Roj9JsQ5e18/7EUHv1+Fvx/Xj5V9Ugb5K8TW4TZEEdcvoz/up0VTe9qsVIppKVX6\na7D6y9ZvwEKjrtQxPtv6fXII9vCxKOGaIeAIfEF8IvAG8ie3vRK9rRQl+PPpSctbhfpTUCpviH+k\nxsZgpT91+snoX1l49KK3iUQvICRy5aUw6l8leoVwoo3Uv1rKreF/UFLY6d9QP4L9Wf2r7EP9GOSf\ncsjZ56f60kz+XmVPXv+RuP49ff0T/53Rv6n/7m2lvXT9Wqd/VUz8hvh5M/ED6ILmt4mfHYZSaePn\nTWpsf/SvqV9O6dLYYClLEetnoH/LBLFoBvrX189uTv8++kot5vTvQD4/9jP690g9P/4z/bvo/XVG\n/xYoZZx+8fr3MxAtsf7tUOkG2JqsTtCIpgCt/qX1226KqZS7gfzJbe+c9jLrtIZ8lXD+s4umlW6A\nKIVrlML2/cXjgPFjlJqIRC+Fj0bVJe+vSh56pSdR6YkQ1ygF10Wqf0FeLta/iKn9Mv1L24ti2e+7\nW4n1b3T/W+L+t9H9T/SvVboUmqJJon1/hZq8LnzRDlDrX1u0xRT1+6vEpomMmyYkqi95vIH8yW1P\nN+122KkLcNLKi/WTF01z/cNASrWE/l3ev6T17zX909z9X27/euK/Rf3zWP+Waf9eEv37KkWJ+rfD\nl6ZglNDa+cEBhwYDvkoNP/rX69814NaI3imq0l7OYDy/qSdDGwr7r+Y3VbzoKZr6XX2lfxfOb87q\nXzr+b1j/Xlp/nP6dn98McdH7cn7zjPObKsYWS3Eb9w8n85smHtqQuPuZ30T2dlIT6F9xFl+n8xsl\negL9a4c2KRr9W4rp/GYqumiM9Nec/j2v/yj9u1h//hv9e93vc++f63/u+rPjL3f+5Lbn1j9m/eXW\nf+7zh/v8+2b9e/Hzn6s/uPqHrb8g71n6L3f+5Lbnvn8w33+4718/+5d47//c/gO7/5E7/nPbc/tv\n3P4fs//I7X9y+6/fqH+v6j9z+9/c/ju3/8+eP+TOn9z23PkXc/7Gnf9x5483q38Xzn+582fu/Js9\nfy8kb/6fO39y23P3n3S8/S/c/Tfc/T83uX/pgv1XE/9duP+Lu/+Mvf8td/znti8kb/8ld/9nx9t/\nSjw/Ltr/yt1/+337f6/bf0zoB3nJ/ucVc/81d/83e/957vzJbc89/8A8f8E9/5HE78XnT/4H/cs5\nf8Q9/8Q9f8U+/5U7f3Lbc88fdrzzjyvm+cuf/Uu887/c88fs88954/8vO4SjPC+2QRIAAAAldEVY\ndGRhdGU6Y3JlYXRlADIwMTYtMDQtMTNUMTE6NTc6NDAtMDQ6MDBB7YJkAAAAJXRFWHRkYXRlOm1v\nZGlmeQAyMDE2LTA0LTEzVDExOjU3OjQwLTA0OjAwMLA62AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -644,7 +634,7 @@ "source": [ "The tallies can now be export to a \"tallies.xml\" input file for OpenMC. \n", "\n", - "**NOTE**: At this point the `Library` has constructed nearly 100 distinct `Tally` objects. The overhead to tally in OpenMC scales as $O(N)$ for $N$ tallies, which can become a bottleneck for large tally datasets. To compensate for this, the Python API's `Tally`, `Filter` and `TalliesFile` classes allow for the smart *merging* of tallies when possible. The `Library` class supports this runtime optimization with the use of the optional `merge` paramter (`False` by default) for the `Library.add_to_tallies_file(...)` method, as shown below." + "**NOTE**: At this point the `Library` has constructed nearly 100 distinct `Tally` objects. The overhead to tally in OpenMC scales as $O(N)$ for $N$ tallies, which can become a bottleneck for large tally datasets. To compensate for this, the Python API's `Tally`, `Filter` and `Tallies` classes allow for the smart *merging* of tallies when possible. The `Library` class supports this runtime optimization with the use of the optional `merge` paramter (`False` by default) for the `Library.add_to_tallies_file(...)` method, as shown below." ] }, { @@ -656,7 +646,7 @@ "outputs": [], "source": [ "# Create a \"tallies.xml\" file for the MGXS Library\n", - "tallies_file = openmc.TalliesFile()\n", + "tallies_file = openmc.Tallies()\n", "mgxs_lib.add_to_tallies_file(tallies_file, merge=True)" ] }, @@ -691,9 +681,8 @@ "tally.filters = [mesh_filter]\n", "tally.scores = ['fission', 'nu-fission']\n", "\n", - "# Add mesh and Tally to TalliesFile\n", - "tallies_file.add_mesh(mesh)\n", - "tallies_file.add_tally(tally)" + "# Add tally to collection\n", + "tallies_file.append(tally)" ] }, { @@ -735,10 +724,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:44:19\n", + " Git SHA1: eeb5091ca3a34cc85df73a3318cae2b6c7097413\n", + " Date/Time: 2016-04-13 11:57:40\n", " MPI Processes: 1\n", - " OpenMP Threads: 16\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -824,20 +812,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.7900E-01 seconds\n", - " Reading cross sections = 1.3600E-01 seconds\n", - " Total time in simulation = 6.5400E+00 seconds\n", - " Time in transport only = 5.8520E+00 seconds\n", - " Time in inactive batches = 6.1600E-01 seconds\n", - " Time in active batches = 5.9240E+00 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 4.3700E-01 seconds\n", + " Reading cross sections = 8.2000E-02 seconds\n", + " Total time in simulation = 4.7745E+01 seconds\n", + " Time in transport only = 4.7726E+01 seconds\n", + " Time in inactive batches = 3.8220E+00 seconds\n", + " Time in active batches = 4.3923E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Sampling source sites = 2.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 7.0410E+00 seconds\n", - " Calculation Rate (inactive) = 40584.4 neutrons/second\n", - " Calculation Rate (active) = 16880.5 neutrons/second\n", + " Total time elapsed = 4.8198E+01 seconds\n", + " Calculation Rate (inactive) = 6541.08 neutrons/second\n", + " Calculation Rate (active) = 2276.71 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -862,7 +850,7 @@ ], "source": [ "# Run OpenMC\n", - "executor.run_simulation()" + "openmc.run()" ] }, { @@ -982,8 +970,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/Documents/NSE-CRPG-Codes/openmc/openmc/tallies.py:1996: RuntimeWarning: invalid value encountered in true_divide\n", - " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n" + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.1-py2.7.egg/openmc/tallies.py:1996: RuntimeWarning: invalid value encountered in true_divide\n" ] }, { @@ -1452,7 +1439,7 @@ ], "source": [ "# Generate tracks for OpenMOC\n", - "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=32, spacing=0.1)\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=32, azim_spacing=0.1)\n", "track_generator.generateTracks()\n", "\n", "# Run OpenMOC\n", @@ -1588,7 +1575,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 44, @@ -1597,9 +1584,9 @@ }, { "data": { - "image/png": "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\ngg==\n", + "image/png": "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\nZOT/APiw99Nd94jXAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1608,15 +1595,24 @@ ], "source": [ "# Plot OpenMC's fission rates in the left subplot\n", - "fig = pylab.subplot(121)\n", - "pylab.imshow(openmc_fission_rates, interpolation='none', cmap='jet')\n", - "pylab.title('OpenMC Fission Rates')\n", + "fig = plt.subplot(121)\n", + "plt.imshow(openmc_fission_rates, interpolation='none', cmap='jet')\n", + "plt.title('OpenMC Fission Rates')\n", "\n", "# Plot OpenMOC's fission rates in the right subplot\n", - "fig2 = pylab.subplot(122)\n", - "pylab.imshow(openmoc_fission_rates, interpolation='none', cmap='jet')\n", - "pylab.title('OpenMOC Fission Rates')" + "fig2 = plt.subplot(122)\n", + "plt.imshow(openmoc_fission_rates, interpolation='none', cmap='jet')\n", + "plt.title('OpenMOC Fission Rates')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -1635,7 +1631,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 27812f4d6..d5e8b9861 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -17,19 +17,14 @@ }, "outputs": [], "source": [ + "%matplotlib inline\n", "import glob\n", "from IPython.display import Image\n", "import matplotlib.pylab as pylab\n", "import scipy.stats\n", "import numpy as np\n", "\n", - "import openmc\n", - "from openmc.statepoint import StatePoint\n", - "from openmc.summary import Summary\n", - "from openmc.source import Source\n", - "from openmc.stats import Box\n", - "\n", - "%matplotlib inline" + "import openmc" ] }, { @@ -113,11 +108,8 @@ }, "outputs": [], "source": [ - "# Instantiate a MaterialsFile, add Materials\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.add_material(fuel)\n", - "materials_file.add_material(water)\n", - "materials_file.add_material(zircaloy)\n", + "# Instantiate a Materials collection\n", + "materials_file = openmc.Materials((fuel, water, zircaloy))\n", "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", @@ -244,7 +236,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We now must create a geometry that is assigned a root universe, put the geometry into a `GeometryFile` object, and export it to XML." + "We now must create a geometry that is assigned a root universe and export it to XML." ] }, { @@ -268,12 +260,8 @@ }, "outputs": [], "source": [ - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = geometry\n", - "\n", "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" + "geometry.export_to_xml()" ] }, { @@ -297,17 +285,19 @@ "inactive = 5\n", "particles = 2500\n", "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", "settings_file.batches = min_batches\n", "settings_file.inactive = inactive\n", "settings_file.particles = particles\n", "settings_file.output = {'tallies': False}\n", "settings_file.trigger_active = True\n", "settings_file.trigger_max_batches = max_batches\n", - "source_bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n", - "settings_file.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 = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\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()" @@ -336,9 +326,8 @@ "plot.pixels = [250, 250]\n", "plot.color = 'mat'\n", "\n", - "# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n", - "plot_file = openmc.PlotsFile()\n", - "plot_file.add_plot(plot)\n", + "# Instantiate a Plots collection and export to \"plots.xml\"\n", + "plot_file = openmc.Plots([plot])\n", "plot_file.export_to_xml()" ] }, @@ -369,8 +358,7 @@ ], "source": [ "# Run openmc in plotting mode\n", - "executor = openmc.Executor()\n", - "executor.plot_geometry(output=False)" + "openmc.plot_geometry(output=False)" ] }, { @@ -382,7 +370,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+ADFxItHQxw5fwAAAPZSURBVGje7Zs7buMwEIZ9iey5\n0gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwgwIcgg8Cc4fCTSK5W4OeF\nkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7E08mlia+rn7VcKXP8sRs\nzFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WBzfiz20hXORmP9fi/bM9E\neUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4lXju8K3DKv9NThOZ3q2K\nmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3OafPX40NGgST2r+uvQkXXp6\ncKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcublfKGt6apotG/NVx3SInW\ntLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJbf8qlPynYmpKCh7OB1fzN\nalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utrJTy8/06TXh0r/5JOa2Jm\nYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU4YuBTPa/8P67l/6r44ds\n+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m/65n+S8p/itN15v0UkW3\n/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB6R3Cqn55U4rv4kfH3zaS\ngQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6bjT6rym9I/v/03/b+LHS\n4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv6h9B/Bfxr9j1Hz2eN/hO\n8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wXfP8Mvf9G37/D/ovuP8Se\nP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7+O+E8zdP/8XOf8Hnz9Dz\nb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589jz5/Y8ej9h4D+W7qQmf57\nefqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m4fwXuH+M3n+OO3++AX9c\nlR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTAzLTIzVDE0OjQ1OjI5LTA0OjAw0+qiEQAA\nACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wMy0yM1QxNDo0NToyOS0wNDowMKK3Gq0AAAAASUVORK5C\nYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAPZSURB\nVGje7Zs7buMwEIZ9iey50gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwg\nwIcgg8Cc4fCTSK5W4OeFkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7\nE08mlia+rn7VcKXP8sRszFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WB\nzfiz20hXORmP9fi/bM9EeUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4\nlXju8K3DKv9NThOZ3q2KmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3Oaf\nPX40NGgST2r+uvQkXXp6cKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcub\nlfKGt6apotG/NVx3SInWtLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJb\nf8qlPynYmpKCh7OB1fzNalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utr\nJTy8/06TXh0r/5JOa2JmYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU\n4YuBTPa/8P67l/6r44ds+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m\n/65n+S8p/itN15v0UkW3/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB\n6R3Cqn55U4rv4kfH3zaSgQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6\nbjT6rym9I/v/03/b+LHS4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv\n6h9B/Bfxr9j1Hz2eN/hO8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wX\nfP8Mvf9G37/D/ovuP8SeP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7\n+O+E8zdP/8XOf8Hnz9Dzb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589j\nz5/Y8ej9h4D+W7qQmf57efqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m\n4fwXuH+M3n+OO3++AX9clR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA0LTEzVDExOjQw\nOjAxLTA0OjAwQIJDkwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNC0xM1QxMTo0MDowMS0wNDow\nMDHf+y8AAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -415,8 +403,8 @@ }, "outputs": [], "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", + "# Instantiate an empty Tallies object\n", + "tallies_file = openmc.Tallies()\n", "tallies_file._tallies = []" ] }, @@ -456,9 +444,8 @@ "tally.filters = [mesh_filter, energy_filter]\n", "tally.scores = ['fission', 'nu-fission']\n", "\n", - "# Add mesh and Tally to TalliesFile\n", - "tallies_file.add_mesh(mesh)\n", - "tallies_file.add_tally(tally)" + "# Add mesh and Tally to Tallies\n", + "tallies_file.append(tally)" ] }, { @@ -485,8 +472,8 @@ "tally.scores = ['scatter-y2']\n", "tally.nuclides = [u235, u238]\n", "\n", - "# Add mesh and tally to TalliesFile\n", - "tallies_file.add_tally(tally)" + "# Add mesh and tally to Tallies\n", + "tallies_file.append(tally)" ] }, { @@ -517,8 +504,8 @@ "tally.scores = ['absorption', 'scatter']\n", "tally.triggers = [trigger]\n", "\n", - "# Add mesh and tally to TalliesFile\n", - "tallies_file.add_tally(tally)" + "# Add mesh and tally to Tallies\n", + "tallies_file.append(tally)" ] }, { @@ -567,10 +554,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:45:30\n", + " Git SHA1: eeb5091ca3a34cc85df73a3318cae2b6c7097413\n", + " Date/Time: 2016-04-13 11:40:02\n", " MPI Processes: 1\n", - " OpenMP Threads: 16\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -597,46 +583,34 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 0.51036 \n", - " 2/1 0.64436 \n", - " 3/1 0.64874 \n", - " 4/1 0.65998 \n", - " 5/1 0.68369 \n", - " 6/1 0.69058 \n", - " 7/1 0.68288 0.68673 +/- 0.00385\n", - " 8/1 0.69483 0.68943 +/- 0.00350\n", - " 9/1 0.70348 0.69294 +/- 0.00430\n", - " 10/1 0.69969 0.69429 +/- 0.00359\n", - " 11/1 0.67170 0.69052 +/- 0.00477\n", - " 12/1 0.67661 0.68854 +/- 0.00450\n", - " 13/1 0.69571 0.68943 +/- 0.00400\n", - " 14/1 0.67433 0.68776 +/- 0.00390\n", - " 15/1 0.67744 0.68672 +/- 0.00364\n", - " 16/1 0.65256 0.68362 +/- 0.00453\n", - " 17/1 0.66657 0.68220 +/- 0.00437\n", - " 18/1 0.66887 0.68117 +/- 0.00415\n", - " 19/1 0.68238 0.68126 +/- 0.00384\n", - " 20/1 0.64423 0.67879 +/- 0.00435\n", - " Triggers unsatisfied, max unc./thresh. is 1.40549 for absorption in tally 10002\n", - " The estimated number of batches is 35\n", + " 1/1 0.55921 \n", + " 2/1 0.63816 \n", + " 3/1 0.68834 \n", + " 4/1 0.71192 \n", + " 5/1 0.67935 \n", + " 6/1 0.68274 \n", + " 7/1 0.66339 0.67307 +/- 0.00967\n", + " 8/1 0.65835 0.66816 +/- 0.00743\n", + " 9/1 0.66697 0.66786 +/- 0.00527\n", + " 10/1 0.70498 0.67528 +/- 0.00847\n", + " 11/1 0.68596 0.67706 +/- 0.00714\n", + " 12/1 0.68481 0.67817 +/- 0.00614\n", + " 13/1 0.68369 0.67886 +/- 0.00536\n", + " 14/1 0.68785 0.67986 +/- 0.00483\n", + " 15/1 0.66145 0.67802 +/- 0.00470\n", + " 16/1 0.71831 0.68168 +/- 0.00561\n", + " 17/1 0.68428 0.68190 +/- 0.00512\n", + " 18/1 0.67527 0.68139 +/- 0.00474\n", + " 19/1 0.68166 0.68141 +/- 0.00439\n", + " 20/1 0.65475 0.67963 +/- 0.00446\n", + " Triggers unsatisfied, max unc./thresh. is 1.07581 for absorption in tally 10002\n", + " The estimated number of batches is 23\n", " Creating state point statepoint.020.h5...\n", - " 21/1 0.66266 0.67778 +/- 0.00419\n", - " 22/1 0.67656 0.67771 +/- 0.00393\n", - " 23/1 0.67643 0.67764 +/- 0.00371\n", - " 24/1 0.66192 0.67681 +/- 0.00361\n", - " 25/1 0.69848 0.67789 +/- 0.00359\n", - " 26/1 0.66274 0.67717 +/- 0.00349\n", - " 27/1 0.69746 0.67810 +/- 0.00345\n", - " 28/1 0.67485 0.67795 +/- 0.00330\n", - " 29/1 0.67427 0.67780 +/- 0.00316\n", - " 30/1 0.66531 0.67730 +/- 0.00308\n", - " 31/1 0.68457 0.67758 +/- 0.00297\n", - " 32/1 0.66592 0.67715 +/- 0.00289\n", - " 33/1 0.65929 0.67651 +/- 0.00286\n", - " 34/1 0.67252 0.67637 +/- 0.00276\n", - " 35/1 0.71827 0.67777 +/- 0.00301\n", - " Triggers satisfied for batch 35\n", - " Creating state point statepoint.035.h5...\n", + " 21/1 0.64538 0.67749 +/- 0.00469\n", + " 22/1 0.73275 0.68074 +/- 0.00547\n", + " 23/1 0.71674 0.68274 +/- 0.00553\n", + " Triggers satisfied for batch 23\n", + " Creating state point statepoint.023.h5...\n", "\n", " ===========================================================================\n", " ======================> SIMULATION FINISHED <======================\n", @@ -645,28 +619,28 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.5300E-01 seconds\n", - " Reading cross sections = 1.3200E-01 seconds\n", - " Total time in simulation = 1.9780E+00 seconds\n", - " Time in transport only = 1.7780E+00 seconds\n", - " Time in inactive batches = 2.1000E-01 seconds\n", - " Time in active batches = 1.7680E+00 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 5.0000E-03 seconds\n", + " Total time for initialization = 3.7900E-01 seconds\n", + " Reading cross sections = 8.6000E-02 seconds\n", + " Total time in simulation = 8.7310E+00 seconds\n", + " Time in transport only = 8.7200E+00 seconds\n", + " Time in inactive batches = 1.3230E+00 seconds\n", + " Time in active batches = 7.4080E+00 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 2.4480E+00 seconds\n", - " Calculation Rate (inactive) = 59523.8 neutrons/second\n", - " Calculation Rate (active) = 21210.4 neutrons/second\n", + " Total time elapsed = 9.1240E+00 seconds\n", + " Calculation Rate (inactive) = 9448.22 neutrons/second\n", + " Calculation Rate (active) = 5062.10 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 0.67866 +/- 0.00337\n", - " k-effective (Track-length) = 0.67777 +/- 0.00301\n", - " k-effective (Absorption) = 0.68234 +/- 0.00332\n", - " Combined k-effective = 0.67987 +/- 0.00255\n", - " Leakage Fraction = 0.34141 +/- 0.00198\n", + " k-effective (Collision) = 0.67952 +/- 0.00434\n", + " k-effective (Track-length) = 0.68274 +/- 0.00553\n", + " k-effective (Absorption) = 0.68095 +/- 0.00369\n", + " Combined k-effective = 0.67994 +/- 0.00349\n", + " Leakage Fraction = 0.34133 +/- 0.00332\n", "\n" ] }, @@ -685,8 +659,8 @@ "# Remove old HDF5 (summary, statepoint) files\n", "!rm statepoint.*\n", "\n", - "# Run OpenMC with MPI!\n", - "executor.run_simulation()" + "# Run OpenMC!\n", + "openmc.run()" ] }, { @@ -709,7 +683,7 @@ "statepoints = glob.glob('statepoint.*.h5')\n", "\n", "# Load the last statepoint file\n", - "sp = StatePoint(statepoints[-1])" + "sp = openmc.StatePoint(statepoints[-1])" ] }, { @@ -722,7 +696,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)" ] }, @@ -783,13 +757,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.12916959]]\n", + "[[[ 0.1508711 ]]\n", "\n", - " [[ 0.06336943]]\n", + " [[ 0.05389822]]\n", "\n", - " [[ 0.33288738]]\n", + " [[ 0.19633 ]]\n", "\n", - " [[ 0.14666158]]]\n" + " [[ 0.12963172]]]\n" ] } ], @@ -845,8 +819,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 2.37e-04\n", - " 3.06e-05\n", + " 2.34e-04\n", + " 3.54e-05\n", " \n", " \n", " 1\n", @@ -856,8 +830,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 5.78e-04\n", - " 7.46e-05\n", + " 5.71e-04\n", + " 8.62e-05\n", " \n", " \n", " 2\n", @@ -867,8 +841,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 7.00e-05\n", - " 5.15e-06\n", + " 7.03e-05\n", + " 7.05e-06\n", " \n", " \n", " 3\n", @@ -878,8 +852,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 1.85e-04\n", - " 1.28e-05\n", + " 1.87e-04\n", + " 1.76e-05\n", " \n", " \n", " 4\n", @@ -889,8 +863,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 4.04e-04\n", - " 3.09e-05\n", + " 3.67e-04\n", + " 3.61e-05\n", " \n", " \n", " 5\n", @@ -900,8 +874,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 9.85e-04\n", - " 7.54e-05\n", + " 8.94e-04\n", + " 8.80e-05\n", " \n", " \n", " 6\n", @@ -911,8 +885,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.00e-04\n", - " 5.08e-06\n", + " 1.04e-04\n", + " 5.36e-06\n", " \n", " \n", " 7\n", @@ -922,8 +896,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 2.63e-04\n", - " 1.34e-05\n", + " 2.76e-04\n", + " 1.40e-05\n", " \n", " \n", " 8\n", @@ -933,8 +907,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 5.82e-04\n", - " 5.00e-05\n", + " 6.04e-04\n", + " 5.57e-05\n", " \n", " \n", " 9\n", @@ -944,8 +918,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.42e-03\n", - " 1.22e-04\n", + " 1.47e-03\n", + " 1.36e-04\n", " \n", " \n", " 10\n", @@ -955,8 +929,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.38e-04\n", - " 1.03e-05\n", + " 1.41e-04\n", + " 6.69e-06\n", " \n", " \n", " 11\n", @@ -966,8 +940,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 3.59e-04\n", - " 2.54e-05\n", + " 3.72e-04\n", + " 1.82e-05\n", " \n", " \n", " 12\n", @@ -977,8 +951,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 6.88e-04\n", - " 4.25e-05\n", + " 6.45e-04\n", + " 4.59e-05\n", " \n", " \n", " 13\n", @@ -988,8 +962,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.68e-03\n", - " 1.04e-04\n", + " 1.57e-03\n", + " 1.12e-04\n", " \n", " \n", " 14\n", @@ -999,8 +973,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.62e-04\n", - " 7.43e-06\n", + " 1.82e-04\n", + " 9.37e-06\n", " \n", " \n", " 15\n", @@ -1010,8 +984,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 4.22e-04\n", - " 1.93e-05\n", + " 4.76e-04\n", + " 2.47e-05\n", " \n", " \n", " 16\n", @@ -1021,8 +995,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 7.62e-04\n", - " 5.69e-05\n", + " 7.28e-04\n", + " 7.49e-05\n", " \n", " \n", " 17\n", @@ -1032,8 +1006,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.86e-03\n", - " 1.39e-04\n", + " 1.77e-03\n", + " 1.83e-04\n", " \n", " \n", " 18\n", @@ -1043,8 +1017,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.80e-04\n", - " 8.16e-06\n", + " 1.81e-04\n", + " 1.04e-05\n", " \n", " \n", " 19\n", @@ -1054,8 +1028,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 4.71e-04\n", - " 2.08e-05\n", + " 4.72e-04\n", + " 2.67e-05\n", " \n", " \n", "\n", @@ -1064,49 +1038,49 @@ "text/plain": [ " mesh 1 energy low [MeV] energy high [MeV] score mean \\\n", " x y z \n", - "0 1 1 1 0.00e+00 6.25e-07 fission 2.37e-04 \n", - "1 1 1 1 0.00e+00 6.25e-07 nu-fission 5.78e-04 \n", - "2 1 1 1 6.25e-07 2.00e+01 fission 7.00e-05 \n", - "3 1 1 1 6.25e-07 2.00e+01 nu-fission 1.85e-04 \n", - "4 1 2 1 0.00e+00 6.25e-07 fission 4.04e-04 \n", - "5 1 2 1 0.00e+00 6.25e-07 nu-fission 9.85e-04 \n", - "6 1 2 1 6.25e-07 2.00e+01 fission 1.00e-04 \n", - "7 1 2 1 6.25e-07 2.00e+01 nu-fission 2.63e-04 \n", - "8 1 3 1 0.00e+00 6.25e-07 fission 5.82e-04 \n", - "9 1 3 1 0.00e+00 6.25e-07 nu-fission 1.42e-03 \n", - "10 1 3 1 6.25e-07 2.00e+01 fission 1.38e-04 \n", - "11 1 3 1 6.25e-07 2.00e+01 nu-fission 3.59e-04 \n", - "12 1 4 1 0.00e+00 6.25e-07 fission 6.88e-04 \n", - "13 1 4 1 0.00e+00 6.25e-07 nu-fission 1.68e-03 \n", - "14 1 4 1 6.25e-07 2.00e+01 fission 1.62e-04 \n", - "15 1 4 1 6.25e-07 2.00e+01 nu-fission 4.22e-04 \n", - "16 1 5 1 0.00e+00 6.25e-07 fission 7.62e-04 \n", - "17 1 5 1 0.00e+00 6.25e-07 nu-fission 1.86e-03 \n", - "18 1 5 1 6.25e-07 2.00e+01 fission 1.80e-04 \n", - "19 1 5 1 6.25e-07 2.00e+01 nu-fission 4.71e-04 \n", + "0 1 1 1 0.00e+00 6.25e-07 fission 2.34e-04 \n", + "1 1 1 1 0.00e+00 6.25e-07 nu-fission 5.71e-04 \n", + "2 1 1 1 6.25e-07 2.00e+01 fission 7.03e-05 \n", + "3 1 1 1 6.25e-07 2.00e+01 nu-fission 1.87e-04 \n", + "4 1 2 1 0.00e+00 6.25e-07 fission 3.67e-04 \n", + "5 1 2 1 0.00e+00 6.25e-07 nu-fission 8.94e-04 \n", + "6 1 2 1 6.25e-07 2.00e+01 fission 1.04e-04 \n", + "7 1 2 1 6.25e-07 2.00e+01 nu-fission 2.76e-04 \n", + "8 1 3 1 0.00e+00 6.25e-07 fission 6.04e-04 \n", + "9 1 3 1 0.00e+00 6.25e-07 nu-fission 1.47e-03 \n", + "10 1 3 1 6.25e-07 2.00e+01 fission 1.41e-04 \n", + "11 1 3 1 6.25e-07 2.00e+01 nu-fission 3.72e-04 \n", + "12 1 4 1 0.00e+00 6.25e-07 fission 6.45e-04 \n", + "13 1 4 1 0.00e+00 6.25e-07 nu-fission 1.57e-03 \n", + "14 1 4 1 6.25e-07 2.00e+01 fission 1.82e-04 \n", + "15 1 4 1 6.25e-07 2.00e+01 nu-fission 4.76e-04 \n", + "16 1 5 1 0.00e+00 6.25e-07 fission 7.28e-04 \n", + "17 1 5 1 0.00e+00 6.25e-07 nu-fission 1.77e-03 \n", + "18 1 5 1 6.25e-07 2.00e+01 fission 1.81e-04 \n", + "19 1 5 1 6.25e-07 2.00e+01 nu-fission 4.72e-04 \n", "\n", " std. dev. \n", " \n", - "0 3.06e-05 \n", - "1 7.46e-05 \n", - "2 5.15e-06 \n", - "3 1.28e-05 \n", - "4 3.09e-05 \n", - "5 7.54e-05 \n", - "6 5.08e-06 \n", - "7 1.34e-05 \n", - "8 5.00e-05 \n", - "9 1.22e-04 \n", - "10 1.03e-05 \n", - "11 2.54e-05 \n", - "12 4.25e-05 \n", - "13 1.04e-04 \n", - "14 7.43e-06 \n", - "15 1.93e-05 \n", - "16 5.69e-05 \n", - "17 1.39e-04 \n", - "18 8.16e-06 \n", - "19 2.08e-05 " + "0 3.54e-05 \n", + "1 8.62e-05 \n", + "2 7.05e-06 \n", + "3 1.76e-05 \n", + "4 3.61e-05 \n", + "5 8.80e-05 \n", + "6 5.36e-06 \n", + "7 1.40e-05 \n", + "8 5.57e-05 \n", + "9 1.36e-04 \n", + "10 6.69e-06 \n", + "11 1.82e-05 \n", + "12 4.59e-05 \n", + "13 1.12e-04 \n", + "14 9.37e-06 \n", + "15 2.47e-05 \n", + "16 7.49e-05 \n", + "17 1.83e-04 \n", + "18 1.04e-05 \n", + "19 2.67e-05 " ] }, "execution_count": 25, @@ -1135,9 +1109,9 @@ "outputs": [ { "data": { - "image/png": "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\nhnwAAAAASUVORK5CYII=\n", + "image/png": "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\nD03l9kElNMu/AAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1160,7 +1134,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1169,9 +1143,9 @@ }, { "data": { - "image/png": "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\nqJlZov8PnPpCLiDrzj8AAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1259,72 +1233,72 @@ " 10000\n", " U-235\n", " scatter-Y0,0\n", - " 3.77e-02\n", - " 6.49e-04\n", + " 3.86e-02\n", + " 1.11e-03\n", " \n", " \n", " 1\n", " 10000\n", " U-235\n", " scatter-Y1,-1\n", - " 2.54e-04\n", - " 1.81e-04\n", + " 2.75e-04\n", + " 2.96e-04\n", " \n", " \n", " 2\n", " 10000\n", " U-235\n", " scatter-Y1,0\n", - " 3.65e-05\n", - " 2.70e-04\n", + " -5.55e-05\n", + " 4.33e-04\n", " \n", " \n", " 3\n", " 10000\n", " U-235\n", " scatter-Y1,1\n", - " -1.70e-04\n", - " 2.19e-04\n", + " -4.22e-04\n", + " 3.51e-04\n", " \n", " \n", " 4\n", " 10000\n", " U-235\n", " scatter-Y2,-2\n", - " 7.47e-05\n", - " 1.54e-04\n", + " 5.88e-05\n", + " 2.04e-04\n", " \n", " \n", " 5\n", " 10000\n", " U-235\n", " scatter-Y2,-1\n", - " -2.35e-04\n", - " 1.34e-04\n", + " 1.00e-04\n", + " 2.49e-04\n", " \n", " \n", " 6\n", " 10000\n", " U-235\n", " scatter-Y2,0\n", - " -5.51e-05\n", - " 1.79e-04\n", + " -8.09e-05\n", + " 1.59e-04\n", " \n", " \n", " 7\n", " 10000\n", " U-235\n", " scatter-Y2,1\n", - " -1.27e-04\n", - " 1.54e-04\n", + " 1.93e-04\n", + " 2.14e-04\n", " \n", " \n", " 8\n", " 10000\n", " U-235\n", " scatter-Y2,2\n", - " 1.72e-04\n", - " 1.40e-04\n", + " 1.12e-04\n", + " 1.86e-04\n", " \n", " \n", " 9\n", @@ -1332,71 +1306,71 @@ " U-238\n", " scatter-Y0,0\n", " 2.34e+00\n", - " 7.62e-03\n", + " 1.34e-02\n", " \n", " \n", " 10\n", " 10000\n", " U-238\n", " scatter-Y1,-1\n", - " 2.46e-02\n", - " 1.71e-03\n", + " 2.32e-02\n", + " 2.97e-03\n", " \n", " \n", " 11\n", " 10000\n", " U-238\n", " scatter-Y1,0\n", - " 1.15e-03\n", - " 2.17e-03\n", + " 7.50e-04\n", + " 2.55e-03\n", " \n", " \n", " 12\n", " 10000\n", " U-238\n", " scatter-Y1,1\n", - " -2.39e-02\n", - " 2.15e-03\n", + " -2.73e-02\n", + " 3.28e-03\n", " \n", " \n", " 13\n", " 10000\n", " U-238\n", " scatter-Y2,-2\n", - " -3.92e-03\n", - " 1.38e-03\n", + " -2.36e-03\n", + " 1.21e-03\n", " \n", " \n", " 14\n", " 10000\n", " U-238\n", " scatter-Y2,-1\n", - " -1.19e-03\n", - " 1.58e-03\n", + " -1.80e-04\n", + " 1.49e-03\n", " \n", " \n", " 15\n", " 10000\n", " U-238\n", " scatter-Y2,0\n", - " 3.22e-03\n", - " 1.45e-03\n", + " 3.23e-03\n", + " 2.25e-03\n", " \n", " \n", " 16\n", " 10000\n", " U-238\n", " scatter-Y2,1\n", - " 1.27e-04\n", - " 9.70e-04\n", + " 3.75e-03\n", + " 1.97e-03\n", " \n", " \n", " 17\n", " 10000\n", " U-238\n", " scatter-Y2,2\n", - " -2.70e-03\n", - " 1.21e-03\n", + " 2.07e-03\n", + " 1.60e-03\n", " \n", " \n", "\n", @@ -1404,24 +1378,24 @@ ], "text/plain": [ " cell nuclide score mean std. dev.\n", - "0 10000 U-235 scatter-Y0,0 3.77e-02 6.49e-04\n", - "1 10000 U-235 scatter-Y1,-1 2.54e-04 1.81e-04\n", - "2 10000 U-235 scatter-Y1,0 3.65e-05 2.70e-04\n", - "3 10000 U-235 scatter-Y1,1 -1.70e-04 2.19e-04\n", - "4 10000 U-235 scatter-Y2,-2 7.47e-05 1.54e-04\n", - "5 10000 U-235 scatter-Y2,-1 -2.35e-04 1.34e-04\n", - "6 10000 U-235 scatter-Y2,0 -5.51e-05 1.79e-04\n", - "7 10000 U-235 scatter-Y2,1 -1.27e-04 1.54e-04\n", - "8 10000 U-235 scatter-Y2,2 1.72e-04 1.40e-04\n", - "9 10000 U-238 scatter-Y0,0 2.34e+00 7.62e-03\n", - "10 10000 U-238 scatter-Y1,-1 2.46e-02 1.71e-03\n", - "11 10000 U-238 scatter-Y1,0 1.15e-03 2.17e-03\n", - "12 10000 U-238 scatter-Y1,1 -2.39e-02 2.15e-03\n", - "13 10000 U-238 scatter-Y2,-2 -3.92e-03 1.38e-03\n", - "14 10000 U-238 scatter-Y2,-1 -1.19e-03 1.58e-03\n", - "15 10000 U-238 scatter-Y2,0 3.22e-03 1.45e-03\n", - "16 10000 U-238 scatter-Y2,1 1.27e-04 9.70e-04\n", - "17 10000 U-238 scatter-Y2,2 -2.70e-03 1.21e-03" + "0 10000 U-235 scatter-Y0,0 3.86e-02 1.11e-03\n", + "1 10000 U-235 scatter-Y1,-1 2.75e-04 2.96e-04\n", + "2 10000 U-235 scatter-Y1,0 -5.55e-05 4.33e-04\n", + "3 10000 U-235 scatter-Y1,1 -4.22e-04 3.51e-04\n", + "4 10000 U-235 scatter-Y2,-2 5.88e-05 2.04e-04\n", + "5 10000 U-235 scatter-Y2,-1 1.00e-04 2.49e-04\n", + "6 10000 U-235 scatter-Y2,0 -8.09e-05 1.59e-04\n", + "7 10000 U-235 scatter-Y2,1 1.93e-04 2.14e-04\n", + "8 10000 U-235 scatter-Y2,2 1.12e-04 1.86e-04\n", + "9 10000 U-238 scatter-Y0,0 2.34e+00 1.34e-02\n", + "10 10000 U-238 scatter-Y1,-1 2.32e-02 2.97e-03\n", + "11 10000 U-238 scatter-Y1,0 7.50e-04 2.55e-03\n", + "12 10000 U-238 scatter-Y1,1 -2.73e-02 3.28e-03\n", + "13 10000 U-238 scatter-Y2,-2 -2.36e-03 1.21e-03\n", + "14 10000 U-238 scatter-Y2,-1 -1.80e-04 1.49e-03\n", + "15 10000 U-238 scatter-Y2,0 3.23e-03 2.25e-03\n", + "16 10000 U-238 scatter-Y2,1 3.75e-03 1.97e-03\n", + "17 10000 U-238 scatter-Y2,2 2.07e-03 1.60e-03" ] }, "execution_count": 29, @@ -1455,8 +1429,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.00121338 0.00761835]\n", - " [ 0.00013952 0.00064888]]]\n" + "[[[ 0.00159927 0.01341406]\n", + " [ 0.00018637 0.00111048]]]\n" ] } ], @@ -1524,13 +1498,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.03284934]]]\n" + "[[[ 0.05767856]]]\n" ] } ], "source": [ "# Get the relative error for the scattering reaction rates in\n", - "# the first 30 distribcell instances \n", + "# the first 10 distribcell instances \n", "data = tally.get_values(scores=['scatter'], filters=['distribcell'],\n", " filter_bins=[(i,) for i in range(10)], value='rel_err')\n", "print(data)" @@ -1569,141 +1543,141 @@ " 558\n", " 279\n", " absorption\n", - " 7.14e-05\n", - " 8.26e-06\n", + " 8.19e-05\n", + " 7.82e-06\n", " \n", " \n", " 559\n", " 279\n", " scatter\n", - " 1.25e-02\n", - " 5.75e-04\n", + " 1.33e-02\n", + " 6.19e-04\n", " \n", " \n", " 560\n", " 280\n", " absorption\n", - " 8.50e-05\n", - " 6.16e-06\n", + " 1.00e-04\n", + " 7.93e-06\n", " \n", " \n", " 561\n", " 280\n", " scatter\n", - " 1.38e-02\n", - " 4.58e-04\n", + " 1.40e-02\n", + " 5.61e-04\n", " \n", " \n", " 562\n", " 281\n", " absorption\n", - " 1.04e-04\n", - " 7.54e-06\n", + " 9.52e-05\n", + " 7.08e-06\n", " \n", " \n", " 563\n", " 281\n", " scatter\n", - " 1.55e-02\n", - " 4.15e-04\n", + " 1.51e-02\n", + " 6.50e-04\n", " \n", " \n", " 564\n", " 282\n", " absorption\n", - " 1.22e-04\n", - " 9.98e-06\n", + " 9.85e-05\n", + " 9.47e-06\n", " \n", " \n", " 565\n", " 282\n", " scatter\n", - " 1.68e-02\n", - " 5.73e-04\n", + " 1.53e-02\n", + " 4.63e-04\n", " \n", " \n", " 566\n", " 283\n", " absorption\n", - " 1.14e-04\n", - " 8.02e-06\n", + " 1.08e-04\n", + " 1.34e-05\n", " \n", " \n", " 567\n", " 283\n", " scatter\n", - " 1.66e-02\n", - " 5.44e-04\n", + " 1.65e-02\n", + " 7.04e-04\n", " \n", " \n", " 568\n", " 284\n", " absorption\n", - " 1.06e-04\n", - " 8.37e-06\n", + " 1.13e-04\n", + " 7.91e-06\n", " \n", " \n", " 569\n", " 284\n", " scatter\n", - " 1.64e-02\n", - " 5.14e-04\n", + " 1.67e-02\n", + " 5.51e-04\n", " \n", " \n", " 570\n", " 285\n", " absorption\n", " 1.23e-04\n", - " 9.19e-06\n", + " 9.53e-06\n", " \n", " \n", " 571\n", " 285\n", " scatter\n", - " 1.70e-02\n", - " 5.34e-04\n", + " 1.88e-02\n", + " 7.25e-04\n", " \n", " \n", " 572\n", " 286\n", " absorption\n", - " 1.14e-04\n", - " 6.70e-06\n", + " 1.44e-04\n", + " 1.34e-05\n", " \n", " \n", " 573\n", " 286\n", " scatter\n", - " 1.75e-02\n", - " 5.68e-04\n", + " 1.90e-02\n", + " 7.07e-04\n", " \n", " \n", " 574\n", " 287\n", " absorption\n", - " 1.14e-04\n", - " 8.10e-06\n", + " 1.26e-04\n", + " 8.66e-06\n", " \n", " \n", " 575\n", " 287\n", " scatter\n", - " 1.72e-02\n", - " 4.93e-04\n", + " 1.97e-02\n", + " 7.23e-04\n", " \n", " \n", " 576\n", " 288\n", " absorption\n", - " 1.06e-04\n", - " 1.07e-05\n", + " 1.25e-04\n", + " 9.59e-06\n", " \n", " \n", " 577\n", " 288\n", " scatter\n", - " 1.72e-02\n", - " 7.73e-04\n", + " 2.01e-02\n", + " 6.75e-04\n", " \n", " \n", "\n", @@ -1711,26 +1685,26 @@ ], "text/plain": [ " distribcell score mean std. dev.\n", - "558 279 absorption 7.14e-05 8.26e-06\n", - "559 279 scatter 1.25e-02 5.75e-04\n", - "560 280 absorption 8.50e-05 6.16e-06\n", - "561 280 scatter 1.38e-02 4.58e-04\n", - "562 281 absorption 1.04e-04 7.54e-06\n", - "563 281 scatter 1.55e-02 4.15e-04\n", - "564 282 absorption 1.22e-04 9.98e-06\n", - "565 282 scatter 1.68e-02 5.73e-04\n", - "566 283 absorption 1.14e-04 8.02e-06\n", - "567 283 scatter 1.66e-02 5.44e-04\n", - "568 284 absorption 1.06e-04 8.37e-06\n", - "569 284 scatter 1.64e-02 5.14e-04\n", - "570 285 absorption 1.23e-04 9.19e-06\n", - "571 285 scatter 1.70e-02 5.34e-04\n", - "572 286 absorption 1.14e-04 6.70e-06\n", - "573 286 scatter 1.75e-02 5.68e-04\n", - "574 287 absorption 1.14e-04 8.10e-06\n", - "575 287 scatter 1.72e-02 4.93e-04\n", - "576 288 absorption 1.06e-04 1.07e-05\n", - "577 288 scatter 1.72e-02 7.73e-04" + "558 279 absorption 8.19e-05 7.82e-06\n", + "559 279 scatter 1.33e-02 6.19e-04\n", + "560 280 absorption 1.00e-04 7.93e-06\n", + "561 280 scatter 1.40e-02 5.61e-04\n", + "562 281 absorption 9.52e-05 7.08e-06\n", + "563 281 scatter 1.51e-02 6.50e-04\n", + "564 282 absorption 9.85e-05 9.47e-06\n", + "565 282 scatter 1.53e-02 4.63e-04\n", + "566 283 absorption 1.08e-04 1.34e-05\n", + "567 283 scatter 1.65e-02 7.04e-04\n", + "568 284 absorption 1.13e-04 7.91e-06\n", + "569 284 scatter 1.67e-02 5.51e-04\n", + "570 285 absorption 1.23e-04 9.53e-06\n", + "571 285 scatter 1.88e-02 7.25e-04\n", + "572 286 absorption 1.44e-04 1.34e-05\n", + "573 286 scatter 1.90e-02 7.07e-04\n", + "574 287 absorption 1.26e-04 8.66e-06\n", + "575 287 scatter 1.97e-02 7.23e-04\n", + "576 288 absorption 1.25e-04 9.59e-06\n", + "577 288 scatter 2.01e-02 6.75e-04" ] }, "execution_count": 33, @@ -1806,357 +1780,357 @@ " \n", " \n", " \n", - " 0\n", + " 558\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", " 16\n", + " 9\n", " 0\n", " 10002\n", " 10000\n", - " 0\n", + " 279\n", " absorption\n", - " 1.30e-04\n", - " 8.67e-06\n", + " 8.19e-05\n", + " 7.82e-06\n", " \n", " \n", - " 1\n", + " 559\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", " 16\n", + " 9\n", " 0\n", " 10002\n", " 10000\n", - " 0\n", + " 279\n", " scatter\n", - " 1.98e-02\n", + " 1.33e-02\n", + " 6.19e-04\n", + " \n", + " \n", + " 560\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 8\n", + " 0\n", + " 10002\n", + " 10000\n", + " 280\n", + " absorption\n", + " 1.00e-04\n", + " 7.93e-06\n", + " \n", + " \n", + " 561\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 8\n", + " 0\n", + " 10002\n", + " 10000\n", + " 280\n", + " scatter\n", + " 1.40e-02\n", + " 5.61e-04\n", + " \n", + " \n", + " 562\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 7\n", + " 0\n", + " 10002\n", + " 10000\n", + " 281\n", + " absorption\n", + " 9.52e-05\n", + " 7.08e-06\n", + " \n", + " \n", + " 563\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 7\n", + " 0\n", + " 10002\n", + " 10000\n", + " 281\n", + " scatter\n", + " 1.51e-02\n", " 6.50e-04\n", " \n", " \n", - " 2\n", + " 564\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", - " 15\n", - " 0\n", - " 10002\n", - " 10000\n", - " 1\n", - " absorption\n", - " 2.24e-04\n", - " 1.44e-05\n", - " \n", - " \n", - " 3\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 15\n", - " 0\n", - " 10002\n", - " 10000\n", - " 1\n", - " scatter\n", - " 3.00e-02\n", - " 8.80e-04\n", - " \n", - " \n", - " 4\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 14\n", - " 0\n", - " 10002\n", - " 10000\n", - " 2\n", - " absorption\n", - " 3.16e-04\n", - " 2.15e-05\n", - " \n", - " \n", - " 5\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 14\n", - " 0\n", - " 10002\n", - " 10000\n", - " 2\n", - " scatter\n", - " 3.90e-02\n", - " 1.25e-03\n", - " \n", - " \n", - " 6\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 13\n", - " 0\n", - " 10002\n", - " 10000\n", - " 3\n", - " absorption\n", - " 3.78e-04\n", - " 1.45e-05\n", - " \n", - " \n", - " 7\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 13\n", - " 0\n", - " 10002\n", - " 10000\n", - " 3\n", - " scatter\n", - " 4.86e-02\n", - " 1.24e-03\n", - " \n", - " \n", - " 8\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 12\n", - " 0\n", - " 10002\n", - " 10000\n", - " 4\n", - " absorption\n", - " 4.21e-04\n", - " 2.14e-05\n", - " \n", - " \n", - " 9\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 12\n", - " 0\n", - " 10002\n", - " 10000\n", - " 4\n", - " scatter\n", - " 5.52e-02\n", - " 9.85e-04\n", - " \n", - " \n", - " 10\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 11\n", - " 0\n", - " 10002\n", - " 10000\n", - " 5\n", - " absorption\n", - " 4.86e-04\n", - " 2.62e-05\n", - " \n", - " \n", - " 11\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 11\n", - " 0\n", - " 10002\n", - " 10000\n", - " 5\n", - " scatter\n", - " 6.30e-02\n", - " 1.35e-03\n", - " \n", - " \n", - " 12\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 10\n", - " 0\n", - " 10002\n", - " 10000\n", + " 16\n", " 6\n", - " absorption\n", - " 5.30e-04\n", - " 1.92e-05\n", - " \n", - " \n", - " 13\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 10\n", " 0\n", " 10002\n", " 10000\n", + " 282\n", + " absorption\n", + " 9.85e-05\n", + " 9.47e-06\n", + " \n", + " \n", + " 565\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", " 6\n", - " scatter\n", - " 6.93e-02\n", - " 1.30e-03\n", - " \n", - " \n", - " 14\n", - " 10003\n", - " 0\n", - " 10001\n", - " 0\n", - " 9\n", " 0\n", " 10002\n", " 10000\n", - " 7\n", + " 282\n", + " scatter\n", + " 1.53e-02\n", + " 4.63e-04\n", + " \n", + " \n", + " 566\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 5\n", + " 0\n", + " 10002\n", + " 10000\n", + " 283\n", " absorption\n", - " 5.86e-04\n", - " 2.02e-05\n", + " 1.08e-04\n", + " 1.34e-05\n", " \n", " \n", - " 15\n", + " 567\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", - " 9\n", + " 16\n", + " 5\n", " 0\n", " 10002\n", " 10000\n", - " 7\n", + " 283\n", " scatter\n", - " 7.57e-02\n", - " 1.40e-03\n", + " 1.65e-02\n", + " 7.04e-04\n", " \n", " \n", - " 16\n", + " 568\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", - " 8\n", + " 16\n", + " 4\n", " 0\n", " 10002\n", " 10000\n", - " 8\n", + " 284\n", " absorption\n", - " 6.30e-04\n", - " 2.35e-05\n", + " 1.13e-04\n", + " 7.91e-06\n", " \n", " \n", - " 17\n", + " 569\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", - " 8\n", + " 16\n", + " 4\n", " 0\n", " 10002\n", " 10000\n", - " 8\n", + " 284\n", " scatter\n", - " 8.09e-02\n", - " 1.49e-03\n", + " 1.67e-02\n", + " 5.51e-04\n", " \n", " \n", - " 18\n", + " 570\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", - " 7\n", + " 16\n", + " 3\n", " 0\n", " 10002\n", " 10000\n", - " 9\n", + " 285\n", " absorption\n", - " 7.10e-04\n", - " 2.23e-05\n", + " 1.23e-04\n", + " 9.53e-06\n", " \n", " \n", - " 19\n", + " 571\n", " 10003\n", " 0\n", " 10001\n", - " 0\n", - " 7\n", + " 16\n", + " 3\n", " 0\n", " 10002\n", " 10000\n", - " 9\n", + " 285\n", " scatter\n", - " 8.94e-02\n", - " 1.37e-03\n", + " 1.88e-02\n", + " 7.25e-04\n", + " \n", + " \n", + " 572\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 2\n", + " 0\n", + " 10002\n", + " 10000\n", + " 286\n", + " absorption\n", + " 1.44e-04\n", + " 1.34e-05\n", + " \n", + " \n", + " 573\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 2\n", + " 0\n", + " 10002\n", + " 10000\n", + " 286\n", + " scatter\n", + " 1.90e-02\n", + " 7.07e-04\n", + " \n", + " \n", + " 574\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 1\n", + " 0\n", + " 10002\n", + " 10000\n", + " 287\n", + " absorption\n", + " 1.26e-04\n", + " 8.66e-06\n", + " \n", + " \n", + " 575\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 1\n", + " 0\n", + " 10002\n", + " 10000\n", + " 287\n", + " scatter\n", + " 1.97e-02\n", + " 7.23e-04\n", + " \n", + " \n", + " 576\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 0\n", + " 0\n", + " 10002\n", + " 10000\n", + " 288\n", + " absorption\n", + " 1.25e-04\n", + " 9.59e-06\n", + " \n", + " \n", + " 577\n", + " 10003\n", + " 0\n", + " 10001\n", + " 16\n", + " 0\n", + " 0\n", + " 10002\n", + " 10000\n", + " 288\n", + " scatter\n", + " 2.01e-02\n", + " 6.75e-04\n", " \n", " \n", "\n", "" ], "text/plain": [ - " level 1 level 2 level 3 distribcell score \\\n", - " cell univ lat cell univ \n", - " id id id x y z id id \n", - "0 10003 0 10001 0 16 0 10002 10000 0 absorption \n", - "1 10003 0 10001 0 16 0 10002 10000 0 scatter \n", - "2 10003 0 10001 0 15 0 10002 10000 1 absorption \n", - "3 10003 0 10001 0 15 0 10002 10000 1 scatter \n", - "4 10003 0 10001 0 14 0 10002 10000 2 absorption \n", - "5 10003 0 10001 0 14 0 10002 10000 2 scatter \n", - "6 10003 0 10001 0 13 0 10002 10000 3 absorption \n", - "7 10003 0 10001 0 13 0 10002 10000 3 scatter \n", - "8 10003 0 10001 0 12 0 10002 10000 4 absorption \n", - "9 10003 0 10001 0 12 0 10002 10000 4 scatter \n", - "10 10003 0 10001 0 11 0 10002 10000 5 absorption \n", - "11 10003 0 10001 0 11 0 10002 10000 5 scatter \n", - "12 10003 0 10001 0 10 0 10002 10000 6 absorption \n", - "13 10003 0 10001 0 10 0 10002 10000 6 scatter \n", - "14 10003 0 10001 0 9 0 10002 10000 7 absorption \n", - "15 10003 0 10001 0 9 0 10002 10000 7 scatter \n", - "16 10003 0 10001 0 8 0 10002 10000 8 absorption \n", - "17 10003 0 10001 0 8 0 10002 10000 8 scatter \n", - "18 10003 0 10001 0 7 0 10002 10000 9 absorption \n", - "19 10003 0 10001 0 7 0 10002 10000 9 scatter \n", + " level 1 level 2 level 3 distribcell score \\\n", + " cell univ lat cell univ \n", + " id id id x y z id id \n", + "558 10003 0 10001 16 9 0 10002 10000 279 absorption \n", + "559 10003 0 10001 16 9 0 10002 10000 279 scatter \n", + "560 10003 0 10001 16 8 0 10002 10000 280 absorption \n", + "561 10003 0 10001 16 8 0 10002 10000 280 scatter \n", + "562 10003 0 10001 16 7 0 10002 10000 281 absorption \n", + "563 10003 0 10001 16 7 0 10002 10000 281 scatter \n", + "564 10003 0 10001 16 6 0 10002 10000 282 absorption \n", + "565 10003 0 10001 16 6 0 10002 10000 282 scatter \n", + "566 10003 0 10001 16 5 0 10002 10000 283 absorption \n", + "567 10003 0 10001 16 5 0 10002 10000 283 scatter \n", + "568 10003 0 10001 16 4 0 10002 10000 284 absorption \n", + "569 10003 0 10001 16 4 0 10002 10000 284 scatter \n", + "570 10003 0 10001 16 3 0 10002 10000 285 absorption \n", + "571 10003 0 10001 16 3 0 10002 10000 285 scatter \n", + "572 10003 0 10001 16 2 0 10002 10000 286 absorption \n", + "573 10003 0 10001 16 2 0 10002 10000 286 scatter \n", + "574 10003 0 10001 16 1 0 10002 10000 287 absorption \n", + "575 10003 0 10001 16 1 0 10002 10000 287 scatter \n", + "576 10003 0 10001 16 0 0 10002 10000 288 absorption \n", + "577 10003 0 10001 16 0 0 10002 10000 288 scatter \n", "\n", - " mean std. dev. \n", - " \n", - " \n", - "0 1.30e-04 8.67e-06 \n", - "1 1.98e-02 6.50e-04 \n", - "2 2.24e-04 1.44e-05 \n", - "3 3.00e-02 8.80e-04 \n", - "4 3.16e-04 2.15e-05 \n", - "5 3.90e-02 1.25e-03 \n", - "6 3.78e-04 1.45e-05 \n", - "7 4.86e-02 1.24e-03 \n", - "8 4.21e-04 2.14e-05 \n", - "9 5.52e-02 9.85e-04 \n", - "10 4.86e-04 2.62e-05 \n", - "11 6.30e-02 1.35e-03 \n", - "12 5.30e-04 1.92e-05 \n", - "13 6.93e-02 1.30e-03 \n", - "14 5.86e-04 2.02e-05 \n", - "15 7.57e-02 1.40e-03 \n", - "16 6.30e-04 2.35e-05 \n", - "17 8.09e-02 1.49e-03 \n", - "18 7.10e-04 2.23e-05 \n", - "19 8.94e-02 1.37e-03 " + " mean std. dev. \n", + " \n", + " \n", + "558 8.19e-05 7.82e-06 \n", + "559 1.33e-02 6.19e-04 \n", + "560 1.00e-04 7.93e-06 \n", + "561 1.40e-02 5.61e-04 \n", + "562 9.52e-05 7.08e-06 \n", + "563 1.51e-02 6.50e-04 \n", + "564 9.85e-05 9.47e-06 \n", + "565 1.53e-02 4.63e-04 \n", + "566 1.08e-04 1.34e-05 \n", + "567 1.65e-02 7.04e-04 \n", + "568 1.13e-04 7.91e-06 \n", + "569 1.67e-02 5.51e-04 \n", + "570 1.23e-04 9.53e-06 \n", + "571 1.88e-02 7.25e-04 \n", + "572 1.44e-04 1.34e-05 \n", + "573 1.90e-02 7.07e-04 \n", + "574 1.26e-04 8.66e-06 \n", + "575 1.97e-02 7.23e-04 \n", + "576 1.25e-04 9.59e-06 \n", + "577 2.01e-02 6.75e-04 " ] }, "execution_count": 34, @@ -2169,7 +2143,7 @@ "df = tally.get_pandas_dataframe(summary=su, nuclides=False)\n", "\n", "# Print the last twenty rows in the dataframe\n", - "df.head(20)" + "df.tail(20)" ] }, { @@ -2209,38 +2183,38 @@ " \n", " \n", " mean\n", - " 4.15e-04\n", - " 1.71e-05\n", + " 4.19e-04\n", + " 2.24e-05\n", " \n", " \n", " std\n", - " 2.41e-04\n", - " 6.82e-06\n", + " 2.42e-04\n", + " 9.14e-06\n", " \n", " \n", " min\n", - " 1.78e-05\n", - " 2.81e-06\n", + " 1.90e-05\n", + " 3.44e-06\n", " \n", " \n", " 25%\n", - " 2.06e-04\n", - " 1.16e-05\n", + " 2.02e-04\n", + " 1.56e-05\n", " \n", " \n", " 50%\n", - " 4.03e-04\n", - " 1.71e-05\n", + " 4.05e-04\n", + " 2.20e-05\n", " \n", " \n", " 75%\n", - " 6.05e-04\n", - " 2.19e-05\n", + " 6.07e-04\n", + " 2.89e-05\n", " \n", " \n", " max\n", - " 9.35e-04\n", - " 4.54e-05\n", + " 9.19e-04\n", + " 4.95e-05\n", " \n", " \n", "\n", @@ -2251,13 +2225,13 @@ " \n", " \n", "count 2.89e+02 2.89e+02\n", - "mean 4.15e-04 1.71e-05\n", - "std 2.41e-04 6.82e-06\n", - "min 1.78e-05 2.81e-06\n", - "25% 2.06e-04 1.16e-05\n", - "50% 4.03e-04 1.71e-05\n", - "75% 6.05e-04 2.19e-05\n", - "max 9.35e-04 4.54e-05" + "mean 4.19e-04 2.24e-05\n", + "std 2.42e-04 9.14e-06\n", + "min 1.90e-05 3.44e-06\n", + "25% 2.02e-04 1.56e-05\n", + "50% 4.05e-04 2.20e-05\n", + "75% 6.07e-04 2.89e-05\n", + "max 9.19e-04 4.95e-05" ] }, "execution_count": 35, @@ -2292,15 +2266,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 1.39844745394e-41\n" + "Mann-Whitney Test p-value: 0.303583331507\n" ] } ], "source": [ - "# Extract tally data from pins in the pins divided along y=x diagonal \n", + "# Extract tally data from pins in the pins divided along y=-x diagonal\n", "multi_index = ('level 2', 'lat',)\n", - "lower = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] < 16]\n", - "upper = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] > 16]\n", + "lower = df[df[multi_index + ('x',)] > df[multi_index + ('y',)]]\n", + "upper = df[df[multi_index + ('x',)] < df[multi_index + ('y',)]]\n", "lower = lower[lower['score'] == 'absorption']\n", "upper = upper[upper['score'] == 'absorption']\n", "\n", @@ -2330,15 +2304,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 0.902458041178\n" + "Mann-Whitney Test p-value: 6.038663783e-42\n" ] } ], "source": [ - "# Extract tally data from pins in the pins divided along y=-x diagonal\n", + "# Extract tally data from pins in the pins divided along y=x diagonal \n", "multi_index = ('level 2', 'lat',)\n", - "lower = df[df[multi_index + ('x',)] > df[multi_index + ('y',)]]\n", - "upper = df[df[multi_index + ('x',)] < df[multi_index + ('y',)]]\n", + "lower = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] < 16]\n", + "upper = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] > 16]\n", "lower = lower[lower['score'] == 'absorption']\n", "upper = upper[upper['score'] == 'absorption']\n", "\n", @@ -2366,7 +2340,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/wboyd/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:4: SettingWithCopyWarning: \n", + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:4: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -2376,7 +2350,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 38, @@ -2385,9 +2359,9 @@ }, { "data": { - "image/png": "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\nphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRo\nRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkphRoRESkpuoWaMxs\njpndaWY/MbMeM+ssU+5sM3vIzH5qZpcltn/SzHaa2QNm9s9m1jF5tRcRkUrVs0WzBrjL3Y8Fvglc\nXlrAzGYBNwFvAE4AVpjZceHlO4ET3H0x8HDa/o1m+/bt9a5CRVTP6mmEOoLqWW2NUs9qqWegOQ/4\nTPj5M8Cfp5Q5DXjY3Xe7+wFga9gPd7/L3Q+Gct8DjqhxfWuuUf7zqZ7V0wh1BNWz2hqlntVSz0Dz\nUnd/CsDdnwRemlLmcGBP4vljYVup9wJfr3oNRURkwmbX8uBm9g3gkOQmwIH/kVLcx3mOvwUOuPuW\n8ewvIiK1Ze7jur5P/MRmO4Hl7v6Umb0M6HX340vKLAOucvezw/M1gLv7teH5u4ELgNe5+74RzlWf\nNyki0uDc3SZ6jJq2aEbxFeDdwLXAXwJfTimzAzjazOYDTwDvAFZAlI0GfBj4ryMFGajOByUiIuNT\nzxbNXOCfgCOB3cDb3f23ZnYosNHd/yyUOxu4kWg8aZO7XxO2PwxkgF+FQ37P3S+a5LchIiKjqFug\nERGRmWHarAwwlSeAljtnSZl1ZvZwOP/isexb73qa2RFm9k0z+7GZ/dDMLp6K9Uy8NsvM7jOzr0zV\neppZp5l9Lvyf/LGZvXKK1vODZvYjM3vQzG43s0w96mhmx5rZf5rZ82b2N2PZdyrUc6r9DY30eYbX\nx/Y35O7T4kE01vOR8PNlwDUpZWYBjwDzgWbgAeC48NqZwKzw8zXA/65SvcqeM1HmHOBfw8+vJOoG\nrGjfKn5+E6nny4DF4ec24CdTsZ6J1z8I/CPwlRr+f5xQPYHNwHvCz7OBjqlWT+Aw4FEgE55vA95V\npzr+EfBfgLXA34xl3ylSz6n2N5Raz8TrY/obmjYtGqbuBNCy5yyp+22hHvcAnWZ2SIX7Vsu46+nu\nT7r7A2H7c8BO0uc71bWeEH1zBM4F/qFG9ZtwPUNr+rXufmt47QV3/91Uq2d4rQloNbPZQAvwy3rU\n0d2fdvd7gRfGuu9UqOdU+xsa4fMc19/QdAo0U3UCaCXnLFem0vpWw3jq+XhpGTNbACwG7ql6DdPr\nMNZ63kCUrVjrwcmJ1PMo4GkzuzV0T2wws/xUq6e7/xK4HvhF2PZbd7+rTnWsxb5jVZVzTZG/oZGM\n+W+ooQKNmX0j9AXHjx+Gf9+cUryRJ4A2ZDq2mbUBnwcuCd/KphQzeyPwVPjmaEzdz3k2sBT4O3df\nCvyBaG3AKcXMuoi+Cc8n6kZrM7O/qG+tGtt0/Ruq5zyaMXP3s8q9ZmZPhW6ceALoQEqxx4F5iedH\nhG3xMd5N1CR8XXVqPPo5E2WOTCmTqWDfaplIPQldJ58HPuvuaXOipkI93wq82czOBfJAu5nd5u7v\nmmL1BNjj7t8PP3+eaNyxFiZSzzOBR9391wBm9gXg1UC1v6RVUsda7DtWEzrXFPsbKuc1jOdvqBaD\nTfV4ECUDXBZ+LpcM0ERhECxDNAh2fHjtbODHwEuqXK+y50yUOZfCYOsyCoOto+47FeoZnt8GfGoS\nfs8TqmeizOnUNhlgop/nt4BF4ecrgWunWj2J+vp/COSIvtluBt5fjzomyl4JXDqefetZz7BtyvwN\njVTPxGsV/w3V9A1N5gOYC9xFlK1xJ9AVth8K/Eui3NmhzMPAmsT2h4kmjt4XHjdXsW7DzgmsAt6X\nKHNT+OX/AFg6Wn1r9BmOtZ5LwrbXAC+G/7D3h8/v7ClUz6Upx6hpoKnC7/0UopUxHgC+AHRO0Xpe\nSTRw/SBREk5zPepItKbiHuC3wK+Jxo3ayu1br8+yXD2n2t/QSJ9n4hgV/w1pwqaIiNRUQyUDiIhI\n41GgERGRmlKgERGRmlKgERGRmlKgERGRmlKgERGRmlKgERGRmlKgERGRmlKgEakSM5sfblR2q0U3\n4PtHM3u9md0dnv+xmbWY2SYz+56Z3Wtmb0rs+x9m9v3wWBa2n25mvYmboH22vu9SZOy0MoBIlZjZ\nfKIlPRa7e7+ZfR94wN3/KgSU9wL9wI/dfYtFd4HtI1oS3oGD7r7fzI4G7nD3U83sdOBLwCuAJ4Hv\nAB9y9/+c/HcoMj4NtXqzSAP4ubv3h59/DPx7+PlHwAKilXLfZGYfDtvjFbqfAG4Kt0l+ETgmccw+\nd38CwMweCMdRoJGGoUAjUl37Ej8fTDw/SPT39gLwFnd/OLmTmV0JPOnuJ5tZE7C3zDFfRH+30mA0\nRiNSXaPdCKoHuHiocNSCAegkatUAvItoKXeRaUGBRqS6vMzP8fO1QHN8h1jg4+G1m4F3m9n9wCLg\n9xUcX6QhKBlARERqSi0aERGpKQUaERGpKQUaERGpKQUaERGpKQUaERGpKQUaERGpKQUaERGpKQUa\nERGpqf8HTKaAIu8FxywAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2414,7 +2388,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -2423,9 +2397,9 @@ }, { "data": { - "image/png": "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\n059Yv3498+bNo2/fvgC7+ygKCgooKCige/fuPPnkkwwbNox3332X+fPns2HDBq688koAZs2aRf/+\n/XnuuedYtmwZ69evZ+nSpUXO9eqrr9K3b1/WrVvHOeecQ40aNfj3v//NmjVrmDhxIhMmTGDQoEFF\n9hkzZgzTp09n0qRJ3HPPPVx22WUMHz6cxYsX89lnn/Hcc88l+ldVJkoQIlLp9OnTh8aNG+9+9O/f\nP+Z2tWrVYu7cuaxevZq6dety+OGHF1lfOLEMHz6c6667jpycHOrWrcs//vEPXnjhBXbu3MnIkSM5\n5ZRTOPLII6lRowa33XbbT8515JFH0rt3bwBq165Nly5dOPzwwzEz2rZty6WXXsq7775bZJ+bbrqJ\nevXqccABB3DggQdywgknkJOTw957781JJ53E9OnTK/qrqhAlCBGpdEaNGsWaNWt2P4p/M99lyJAh\nzJkzh44dO9K9e3def/31PR5z6dKl5OTk7H6dk5PD9u3bWbFiBUuXLqVNmza719WpU6fILUyBIusB\nvv76a3r37k2LFi1o2LAht9xyC999912RbZo1a1bkmM2bNy/yeuPGjSX8FpJPCUJEKp14O5fbt2/P\n8OHDWbVqFTfeeCNnnHEGmzZtitmh3bJlSxYt+vFWtosWLaJGjRo0b96cFi1a8O233+5et2nTJlav\nXl1k/+LHvPzyyznggAOYN28e69at484776x099hQghCRKuvZZ5/d/a29QYMGmBkZGRk0bdqUjIwM\n5s2bt3vbs846i3/9618sXLiQjRs3csstt9CvXz8yMjI444wzGD16NJMmTWLbtm0MHDiw1HNv2LCB\nrKws6taty5dffsngwYOTVcykUYIQkbg0b54DWNIewfFLV9pw1sLr33rrLTp37kxWVhbXXnstL7zw\nArVr16ZOnTrccsst9OzZk8aNGzNlyhQuvPBCzjvvPI4++mjat29P3bp1efDBBwHo1KkTDz30EL/7\n3e9o2bIlWVlZNGvWjNq1a+8xjvvuu49nn32WrKwsLrvsMvr161diOcoyTDdVknrLUTNrDQwDmgM7\ngcfd/UEzawS8AOQAC4G+7r4+xv665ajolqMR0C1HS/b999/TsGFD5s6dW6TfItUq+y1HtwPXuXtn\n4Eigv5l1BP4CjHP3/YEJwF+THIeISIW89tprbNq0ie+//57rr7+egw46KNLkkApJTRDuvtzdPw2f\n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\n", + "image/png": "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\n9OnTh2bNmtGmTRsuu+wyioqKSt/PzLjvvvvYdddd2W677fjDH/7A3Llz6dOnD02bNmXo0KEbrZ8J\nSggi0mBcccUVXHHFFaxatYq5c+dy8sknA/Dmm28CsGLFClavXk2fPn0YOXIkI0eO5LXXXuOrr75i\n9erVXHbZZQB89tlnXHLJJTz++OMsXryYlStXlna8s97YsWMZMmQIK1as4LTTTiMej3PXXXexfPly\npkyZwqRJk7jvvvs22ubll1/mo48+4t133+WOO+7gvPPO4/HHH+ebb75hxowZjBo1KqPlo4QgIvXe\n4MGDadasWelwySWXlLteTk4Oc+bMYfny5eTn57P//vtv8T0ff/xxrr76ajp37kx+fj5/+ctfGD16\nNCUlJTz11FMce+yx9OvXj9zcXG6++ebNemnr06cPgwcPJhaL0bhxY/bee2/2339/EokEHTt25MIL\nL+SNN97YaJvrrruOJk2a0K1bN7p3786RRx5J586dadq0KYMGDWLatGnVL6wKKCGISL337LPPsmLF\nitJh01/e640YMYJZs2bRpUsX9tlnH55//vktvueiRYvo0KFD6XSHDh0oKSlhyZIlLFq0iPbt25cu\n22abbWjRosVG25ddDjBr1iyOOeYYWrduTZMmTbjxxhtZvnz5Ruu0atWqdLxx48abTa9evbqCUqg+\nJQQRaTB22203Ro0axdKlS7n++usZMmQIa9asKbcP5rZt2zJ//vzS6W+++YZEIkGrVq1o06YNCxYs\nKF22bt06vv/++4223/Q9L774Yrp06cLs2bNZtWoVf/7zn+tcHxNKCCLSYDz22GMsW7aMWCxGs2bN\nAIjFYuy4447EYjG++uqr0nVPPfVU7rrrLr7++mtWr17NjTfeyNChQ0kkEgwZMoRx48YxefJkioqK\nKCgoqPTL/aeffqJJkybk5+fzxRdfVNjvc1Qa7g23IlIt9fG5kPHjx3P11Vezdu1aOnTowOjRo2nc\nuDEAw4YNo2/fvhQXFzN+/HjOPfdcFi1aRP/+/fn555854ogjuOeee4DgYbd77rmHU045hTVr1nDl\nlVfSsmVL8vLytrjvO++8kwsuuIA77riDnj17MnToUF599dVaOe50qQtNybiqPmimB9PqHnWhWbHV\nq1fTrFkzZs+eTadOnSKLQ11oiohEYNy4caxdu5Y1a9ZwzTXX0KNHDzp27Bh1WNWiKiOpEZluxkCk\n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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2458,7 +2432,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 130e44cf4..36cf63c6a 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -15,16 +15,12 @@ }, "outputs": [], "source": [ + "%matplotlib inline\n", "from IPython.display import Image\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", - "import openmc\n", - "from openmc.statepoint import StatePoint\n", - "from openmc.source import Source\n", - "from openmc.stats import Box\n", - "\n", - "%matplotlib inline" + "import openmc" ] }, { @@ -108,11 +104,8 @@ }, "outputs": [], "source": [ - "# Instantiate a MaterialsFile, add Materials\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.add_material(fuel)\n", - "materials_file.add_material(water)\n", - "materials_file.add_material(zircaloy)\n", + "# Instantiate a Materials collection\n", + "materials_file = openmc.Materials((fuel, water, zircaloy))\n", "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", @@ -240,12 +233,8 @@ }, "outputs": [], "source": [ - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = geometry\n", - "\n", "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" + "geometry.export_to_xml()" ] }, { @@ -268,14 +257,16 @@ "inactive = 10\n", "particles = 5000\n", "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", "settings_file.batches = batches\n", "settings_file.inactive = inactive\n", "settings_file.particles = particles\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()" @@ -304,9 +295,8 @@ "plot.pixels = [250, 250]\n", "plot.color = 'mat'\n", "\n", - "# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n", - "plot_file = openmc.PlotsFile()\n", - "plot_file.add_plot(plot)\n", + "# Instantiate a Plots collection and export to \"plots.xml\"\n", + "plot_file = openmc.Plots([plot])\n", "plot_file.export_to_xml()" ] }, @@ -337,8 +327,7 @@ ], "source": [ "# Run openmc in plotting mode\n", - "executor = openmc.Executor()\n", - "executor.plot_geometry(output=False)" + "openmc.plot_geometry(output=False)" ] }, { @@ -350,7 +339,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+ADFxIxKlK6Ha4AAALKSURBVGje7dpLcqQwDAbgHHE2\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/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDMtMjNUMTQ6NDk6\nNDEtMDQ6MDA8VgV/AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTAzLTIzVDE0OjQ5OjQxLTA0OjAw\nTQu9wwAAAABJRU5ErkJggg==\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\nMTYtMDQtMTNUMTE6MzI6NTUtMDQ6MDDR46xaAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA0LTEz\nVDExOjMyOjU1LTA0OjAwoL4U5gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -383,8 +372,8 @@ }, "outputs": [], "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()" + "# Instantiate an empty Tallies object\n", + "tallies_file = openmc.Tallies()" ] }, { @@ -400,17 +389,16 @@ "mesh.dimension = [100, 100]\n", "mesh.lower_left = [-0.63, -0.63]\n", "mesh.upper_right = [0.63, 0.63]\n", - "tallies_file.add_mesh(mesh)\n", "\n", "# Create mesh filter for tally\n", - "mesh_filter = openmc.Filter(type='mesh', bins=[1])\n", + "mesh_filter = openmc.Filter(type='mesh')\n", "mesh_filter.mesh = mesh\n", "\n", "# Create mesh tally to score flux and fission rate\n", "tally = openmc.Tally(name='flux')\n", "tally.filters = [mesh_filter]\n", "tally.scores = ['flux', 'fission']\n", - "tallies_file.add_tally(tally)" + "tallies_file.append(tally)" ] }, { @@ -460,10 +448,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:49:42\n", + " Git SHA1: eeb5091ca3a34cc85df73a3318cae2b6c7097413\n", + " Date/Time: 2016-04-13 11:32:56\n", " MPI Processes: 1\n", - " OpenMP Threads: 16\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -490,106 +477,106 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.03019 \n", - " 2/1 1.06141 \n", - " 3/1 1.03988 \n", - " 4/1 1.02696 \n", - " 5/1 1.06159 \n", - " 6/1 1.03855 \n", - " 7/1 1.03452 \n", - " 8/1 1.04526 \n", - " 9/1 1.02137 \n", - " 10/1 1.02129 \n", - " 11/1 1.04810 \n", - " 12/1 1.00454 1.02632 +/- 0.02178\n", - " 13/1 1.06176 1.03813 +/- 0.01725\n", - " 14/1 1.02927 1.03592 +/- 0.01240\n", - " 15/1 1.06158 1.04105 +/- 0.01089\n", - " 16/1 1.02692 1.03870 +/- 0.00920\n", - " 17/1 1.06703 1.04274 +/- 0.00876\n", - " 18/1 1.02341 1.04033 +/- 0.00797\n", - " 19/1 1.06256 1.04280 +/- 0.00745\n", - " 20/1 1.04829 1.04335 +/- 0.00668\n", - " 21/1 1.01742 1.04099 +/- 0.00649\n", - " 22/1 1.01629 1.03893 +/- 0.00627\n", - " 23/1 1.01145 1.03682 +/- 0.00614\n", - " 24/1 1.05042 1.03779 +/- 0.00577\n", - " 25/1 1.02543 1.03696 +/- 0.00543\n", - " 26/1 1.04643 1.03756 +/- 0.00512\n", - " 27/1 1.03020 1.03712 +/- 0.00483\n", - " 28/1 1.04088 1.03733 +/- 0.00456\n", - " 29/1 1.03885 1.03741 +/- 0.00431\n", - " 30/1 1.05497 1.03829 +/- 0.00418\n", - " 31/1 1.01946 1.03739 +/- 0.00408\n", - " 32/1 1.07049 1.03890 +/- 0.00417\n", - " 33/1 1.05920 1.03978 +/- 0.00408\n", - " 34/1 1.04910 1.04017 +/- 0.00393\n", - " 35/1 1.03827 1.04009 +/- 0.00377\n", - " 36/1 1.08004 1.04163 +/- 0.00393\n", - " 37/1 1.05729 1.04221 +/- 0.00383\n", - " 38/1 1.00328 1.04082 +/- 0.00394\n", - " 39/1 1.04603 1.04100 +/- 0.00381\n", - " 40/1 1.03193 1.04070 +/- 0.00369\n", - " 41/1 1.05548 1.04117 +/- 0.00360\n", - " 42/1 1.03566 1.04100 +/- 0.00349\n", - " 43/1 1.02848 1.04062 +/- 0.00340\n", - " 44/1 1.01806 1.03996 +/- 0.00337\n", - " 45/1 1.05404 1.04036 +/- 0.00330\n", - " 46/1 1.06319 1.04099 +/- 0.00327\n", - " 47/1 1.03238 1.04076 +/- 0.00318\n", - " 48/1 1.07148 1.04157 +/- 0.00320\n", - " 49/1 1.06016 1.04205 +/- 0.00316\n", - " 50/1 1.02051 1.04151 +/- 0.00312\n", - " 51/1 1.04903 1.04169 +/- 0.00305\n", - " 52/1 1.06004 1.04213 +/- 0.00301\n", - " 53/1 1.04790 1.04226 +/- 0.00294\n", - " 54/1 1.03742 1.04215 +/- 0.00288\n", - " 55/1 1.05670 1.04248 +/- 0.00283\n", - " 56/1 1.02739 1.04215 +/- 0.00279\n", - " 57/1 1.03133 1.04192 +/- 0.00274\n", - " 58/1 1.00078 1.04106 +/- 0.00281\n", - " 59/1 1.06328 1.04151 +/- 0.00279\n", - " 60/1 1.02275 1.04114 +/- 0.00276\n", - " 61/1 1.04295 1.04117 +/- 0.00271\n", - " 62/1 1.06079 1.04155 +/- 0.00268\n", - " 63/1 1.02148 1.04117 +/- 0.00266\n", - " 64/1 1.04801 1.04130 +/- 0.00261\n", - " 65/1 1.03501 1.04119 +/- 0.00257\n", - " 66/1 1.07021 1.04170 +/- 0.00257\n", - " 67/1 1.01764 1.04128 +/- 0.00256\n", - " 68/1 1.02806 1.04105 +/- 0.00253\n", - " 69/1 1.01645 1.04064 +/- 0.00252\n", - " 70/1 1.03971 1.04062 +/- 0.00248\n", - " 71/1 1.06581 1.04103 +/- 0.00247\n", - " 72/1 1.03359 1.04091 +/- 0.00243\n", - " 73/1 1.02155 1.04061 +/- 0.00241\n", - " 74/1 1.06730 1.04102 +/- 0.00241\n", - " 75/1 1.03557 1.04094 +/- 0.00238\n", - " 76/1 1.03795 1.04089 +/- 0.00234\n", - " 77/1 1.02976 1.04073 +/- 0.00231\n", - " 78/1 1.02257 1.04046 +/- 0.00229\n", - " 79/1 1.05500 1.04067 +/- 0.00227\n", - " 80/1 1.03306 1.04056 +/- 0.00224\n", - " 81/1 1.04693 1.04065 +/- 0.00221\n", - " 82/1 1.02975 1.04050 +/- 0.00218\n", - " 83/1 1.07900 1.04103 +/- 0.00222\n", - " 84/1 1.02915 1.04087 +/- 0.00219\n", - " 85/1 1.03153 1.04074 +/- 0.00217\n", - " 86/1 1.05792 1.04097 +/- 0.00215\n", - " 87/1 1.06045 1.04122 +/- 0.00214\n", - " 88/1 1.08821 1.04182 +/- 0.00219\n", - " 89/1 1.08077 1.04232 +/- 0.00222\n", - " 90/1 1.06569 1.04261 +/- 0.00221\n", - " 91/1 1.04921 1.04269 +/- 0.00219\n", - " 92/1 1.04849 1.04276 +/- 0.00216\n", - " 93/1 1.06074 1.04298 +/- 0.00215\n", - " 94/1 1.04030 1.04295 +/- 0.00212\n", - " 95/1 1.03190 1.04282 +/- 0.00210\n", - " 96/1 1.04525 1.04285 +/- 0.00207\n", - " 97/1 1.08086 1.04328 +/- 0.00210\n", - " 98/1 1.04070 1.04325 +/- 0.00207\n", - " 99/1 1.05730 1.04341 +/- 0.00206\n", - " 100/1 1.05036 1.04349 +/- 0.00203\n", + " 1/1 1.04359 \n", + " 2/1 1.04244 \n", + " 3/1 1.03020 \n", + " 4/1 1.03630 \n", + " 5/1 1.06478 \n", + " 6/1 1.05450 \n", + " 7/1 1.02369 \n", + " 8/1 1.03614 \n", + " 9/1 1.05193 \n", + " 10/1 1.02886 \n", + " 11/1 1.05011 \n", + " 12/1 1.04597 1.04804 +/- 0.00207\n", + " 13/1 1.07035 1.05548 +/- 0.00753\n", + " 14/1 1.06150 1.05698 +/- 0.00554\n", + " 15/1 1.07094 1.05977 +/- 0.00512\n", + " 16/1 1.05131 1.05836 +/- 0.00441\n", + " 17/1 1.04733 1.05679 +/- 0.00405\n", + " 18/1 1.08130 1.05985 +/- 0.00465\n", + " 19/1 1.02559 1.05605 +/- 0.00560\n", + " 20/1 1.03399 1.05384 +/- 0.00547\n", + " 21/1 1.04617 1.05314 +/- 0.00500\n", + " 22/1 1.06981 1.05453 +/- 0.00477\n", + " 23/1 1.05270 1.05439 +/- 0.00439\n", + " 24/1 1.02487 1.05228 +/- 0.00458\n", + " 25/1 1.05905 1.05273 +/- 0.00429\n", + " 26/1 1.07658 1.05422 +/- 0.00428\n", + " 27/1 1.03455 1.05307 +/- 0.00418\n", + " 28/1 1.00971 1.05066 +/- 0.00462\n", + " 29/1 1.06111 1.05121 +/- 0.00440\n", + " 30/1 1.01777 1.04954 +/- 0.00450\n", + " 31/1 1.04718 1.04942 +/- 0.00428\n", + " 32/1 1.03340 1.04870 +/- 0.00415\n", + " 33/1 1.04570 1.04857 +/- 0.00397\n", + " 34/1 1.02728 1.04768 +/- 0.00390\n", + " 35/1 1.02852 1.04691 +/- 0.00382\n", + " 36/1 1.03242 1.04636 +/- 0.00371\n", + " 37/1 1.01479 1.04519 +/- 0.00376\n", + " 38/1 1.06045 1.04573 +/- 0.00366\n", + " 39/1 1.03810 1.04547 +/- 0.00354\n", + " 40/1 1.05281 1.04571 +/- 0.00343\n", + " 41/1 1.03941 1.04551 +/- 0.00332\n", + " 42/1 1.04049 1.04535 +/- 0.00322\n", + " 43/1 1.04586 1.04537 +/- 0.00312\n", + " 44/1 1.05437 1.04563 +/- 0.00304\n", + " 45/1 1.03445 1.04531 +/- 0.00297\n", + " 46/1 1.05104 1.04547 +/- 0.00289\n", + " 47/1 1.00773 1.04445 +/- 0.00299\n", + " 48/1 1.06879 1.04509 +/- 0.00298\n", + " 49/1 1.06625 1.04564 +/- 0.00295\n", + " 50/1 1.02641 1.04515 +/- 0.00292\n", + " 51/1 1.05701 1.04544 +/- 0.00286\n", + " 52/1 1.02868 1.04504 +/- 0.00282\n", + " 53/1 1.04592 1.04506 +/- 0.00275\n", + " 54/1 1.05757 1.04535 +/- 0.00271\n", + " 55/1 1.02329 1.04486 +/- 0.00269\n", + " 56/1 1.04116 1.04478 +/- 0.00263\n", + " 57/1 1.01990 1.04425 +/- 0.00263\n", + " 58/1 1.06202 1.04462 +/- 0.00260\n", + " 59/1 1.03550 1.04443 +/- 0.00255\n", + " 60/1 1.01383 1.04382 +/- 0.00258\n", + " 61/1 1.04111 1.04377 +/- 0.00253\n", + " 62/1 1.02061 1.04332 +/- 0.00252\n", + " 63/1 1.00456 1.04259 +/- 0.00257\n", + " 64/1 1.02277 1.04222 +/- 0.00255\n", + " 65/1 1.04544 1.04228 +/- 0.00251\n", + " 66/1 1.04487 1.04233 +/- 0.00246\n", + " 67/1 1.02699 1.04206 +/- 0.00243\n", + " 68/1 1.06160 1.04240 +/- 0.00241\n", + " 69/1 1.02989 1.04218 +/- 0.00238\n", + " 70/1 1.03107 1.04200 +/- 0.00235\n", + " 71/1 1.06571 1.04239 +/- 0.00234\n", + " 72/1 1.03444 1.04226 +/- 0.00231\n", + " 73/1 1.05059 1.04239 +/- 0.00228\n", + " 74/1 1.03352 1.04225 +/- 0.00224\n", + " 75/1 1.03707 1.04217 +/- 0.00221\n", + " 76/1 1.02994 1.04199 +/- 0.00219\n", + " 77/1 1.05416 1.04217 +/- 0.00216\n", + " 78/1 1.03794 1.04211 +/- 0.00213\n", + " 79/1 1.04652 1.04217 +/- 0.00210\n", + " 80/1 1.05715 1.04239 +/- 0.00208\n", + " 81/1 1.08146 1.04294 +/- 0.00212\n", + " 82/1 1.02159 1.04264 +/- 0.00211\n", + " 83/1 1.01968 1.04233 +/- 0.00211\n", + " 84/1 1.05577 1.04251 +/- 0.00209\n", + " 85/1 1.07808 1.04298 +/- 0.00211\n", + " 86/1 1.03943 1.04293 +/- 0.00209\n", + " 87/1 1.03431 1.04282 +/- 0.00206\n", + " 88/1 1.02414 1.04258 +/- 0.00205\n", + " 89/1 1.02316 1.04234 +/- 0.00204\n", + " 90/1 1.03342 1.04223 +/- 0.00202\n", + " 91/1 1.02781 1.04205 +/- 0.00200\n", + " 92/1 1.01293 1.04169 +/- 0.00201\n", + " 93/1 1.04347 1.04171 +/- 0.00198\n", + " 94/1 1.05357 1.04186 +/- 0.00196\n", + " 95/1 1.04740 1.04192 +/- 0.00194\n", + " 96/1 1.05215 1.04204 +/- 0.00192\n", + " 97/1 1.06667 1.04232 +/- 0.00192\n", + " 98/1 1.04926 1.04240 +/- 0.00190\n", + " 99/1 1.05386 1.04253 +/- 0.00188\n", + " 100/1 1.05088 1.04262 +/- 0.00186\n", " Creating state point statepoint.100.h5...\n", "\n", " ===========================================================================\n", @@ -599,27 +586,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.3200E-01 seconds\n", - " Reading cross sections = 1.7200E-01 seconds\n", - " Total time in simulation = 4.5299E+01 seconds\n", - " Time in transport only = 4.3964E+01 seconds\n", - " Time in inactive batches = 1.2390E+00 seconds\n", - " Time in active batches = 4.4060E+01 seconds\n", - " Time synchronizing fission bank = 2.3000E-02 seconds\n", - " Sampling source sites = 1.5000E-02 seconds\n", - " SEND/RECV source sites = 8.0000E-03 seconds\n", - " Time accumulating tallies = 2.7000E-02 seconds\n", - " Total time for finalization = 3.0800E-01 seconds\n", - " Total time elapsed = 4.6175E+01 seconds\n", - " Calculation Rate (inactive) = 40355.1 neutrons/second\n", - " Calculation Rate (active) = 10213.3 neutrons/second\n", + " Total time for initialization = 3.8100E-01 seconds\n", + " Reading cross sections = 8.6000E-02 seconds\n", + " Total time in simulation = 2.4400E+02 seconds\n", + " Time in transport only = 2.4395E+02 seconds\n", + " Time in inactive batches = 8.3260E+00 seconds\n", + " Time in active batches = 2.3567E+02 seconds\n", + " Time synchronizing fission bank = 1.6000E-02 seconds\n", + " Sampling source sites = 6.0000E-03 seconds\n", + " SEND/RECV source sites = 7.0000E-03 seconds\n", + " Time accumulating tallies = 1.9000E-02 seconds\n", + " Total time for finalization = 1.7400E-01 seconds\n", + " Total time elapsed = 2.4458E+02 seconds\n", + " Calculation Rate (inactive) = 6005.28 neutrons/second\n", + " Calculation Rate (active) = 1909.46 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.04225 +/- 0.00171\n", - " k-effective (Track-length) = 1.04349 +/- 0.00203\n", - " k-effective (Absorption) = 1.04192 +/- 0.00172\n", - " Combined k-effective = 1.04213 +/- 0.00141\n", + " k-effective (Collision) = 1.04214 +/- 0.00161\n", + " k-effective (Track-length) = 1.04262 +/- 0.00186\n", + " k-effective (Absorption) = 1.04338 +/- 0.00158\n", + " Combined k-effective = 1.04278 +/- 0.00122\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -637,7 +624,7 @@ ], "source": [ "# Run OpenMC!\n", - "executor.run_simulation()" + "openmc.run()" ] }, { @@ -664,7 +651,7 @@ "outputs": [], "source": [ "# Load the statepoint file\n", - "sp = StatePoint('statepoint.100.h5')" + "sp = openmc.StatePoint('statepoint.100.h5')" ] }, { @@ -719,18 +706,18 @@ { "data": { "text/plain": [ - "array([[[ 0.41161103, 0. ]],\n", + "array([[[ 0.40945685, 0. ]],\n", "\n", - " [[ 0.41135796, 0. ]],\n", + " [[ 0.40939021, 0. ]],\n", "\n", - " [[ 0.41058715, 0. ]],\n", + " [[ 0.410625 , 0. ]],\n", "\n", " ..., \n", - " [[ 0.40919256, 0. ]],\n", + " [[ 0.41130501, 0. ]],\n", "\n", - " [[ 0.41057119, 0. ]],\n", + " [[ 0.41228849, 0. ]],\n", "\n", - " [[ 0.41225079, 0. ]]])" + " [[ 0.41420317, 0. ]]])" ] }, "execution_count": 20, @@ -766,30 +753,30 @@ { "data": { "text/plain": [ - "(array([[[ 0.00457346, 0. ]],\n", + "(array([[[ 0.00454952, 0. ]],\n", " \n", - " [[ 0.00457064, 0. ]],\n", + " [[ 0.00454878, 0. ]],\n", " \n", - " [[ 0.00456208, 0. ]],\n", + " [[ 0.0045625 , 0. ]],\n", " \n", " ..., \n", - " [[ 0.00454658, 0. ]],\n", + " [[ 0.00457006, 0. ]],\n", " \n", - " [[ 0.0045619 , 0. ]],\n", + " [[ 0.00458098, 0. ]],\n", " \n", - " [[ 0.00458056, 0. ]]]),\n", - " array([[[ 1.92422804e-05, 0.00000000e+00]],\n", + " [[ 0.00460226, 0. ]]]),\n", + " array([[[ 1.64748193e-05, 0.00000000e+00]],\n", " \n", - " [[ 1.58028832e-05, 0.00000000e+00]],\n", + " [[ 1.70922989e-05, 0.00000000e+00]],\n", " \n", - " [[ 1.56204065e-05, 0.00000000e+00]],\n", + " [[ 1.67622385e-05, 0.00000000e+00]],\n", " \n", " ..., \n", - " [[ 1.98926652e-05, 0.00000000e+00]],\n", + " [[ 1.69274948e-05, 0.00000000e+00]],\n", " \n", - " [[ 1.70440988e-05, 0.00000000e+00]],\n", + " [[ 1.57842763e-05, 0.00000000e+00]],\n", " \n", - " [[ 2.05592499e-05, 0.00000000e+00]]]))" + " [[ 2.06590062e-05, 0.00000000e+00]]]))" ] }, "execution_count": 21, @@ -869,7 +856,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -878,9 +865,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAC4CAYAAAAohb0KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmQpPd93/f3cz993z099z07O3vfi8WxAHEQPARSvEQ6\nUiwfFaUiWZadqsiR4siWE1eOspSSLSmWrURlqkJJpiiKIAkQAHEDu1jsvbM7szM799E93dP39fRz\n5o9BUK4Kqyyb4mJZ7FdV/9FdXfN7euZbn3n69/x+30fwPI+urq6urh8P4kd9AF1dXV1df3Xd0O7q\n6ur6MdIN7a6urq4fI93Q7urq6vox0g3trq6urh8j3dDu6urq+jHyQ4W2IAjPCoIwLwjCgiAIv/rX\ndVBdXR+1bm13PaiE/9x12oIgiMAC8CSwDbwPfNnzvPm/vsPr6rr/urXd9SD7Yc60TwOLnueteZ5n\nAX8CfOav57C6uj5S3druemD9MKHdD2z8B883P3itq+vHXbe2ux5Y8o96AEEQuvvku36kPM8TPopx\nu7Xd9aP2g2r7hwntLWDoP3g+8MFr/z8Tv/5F+Ee/zs/5vkpFiHLJPU1MqnBYuMkpLnGFk1goDLGO\nRgcVEwkH2bVpEmBDGGLKXiDk1VlQJtkn3GWUZSwUrnOMd5yHect4hOJ2hmC5zeem/5RPLX+XF/7H\na5i/9xu8mzlL3YwgaA7PiC/xj9z/hV+u/Q7PG5/BcjVORd8jrFaZa+3H0mX6tC0+yXcxURFxOcMl\n9pWX6Gvs4EZtHFVkV0zxVelnuS3OIJrw67P/G4eVm3TGRdbVQX79f/IR/o1f5trt01iewszMDRbm\nD7BdHsTrERhMLjMYWKXHy3Onepg7zYM0JB+RUJmg1iCXG0RXm6QiWVLuLgl1l7CvRpkYJioyDnGK\nPF57i/9q+4+gAiV/lP/uz3T++ZdsEq0ixrjE/x7+b3lJe4YD3GY/8/SyTQeNcXsJqePxK6XfZU6Y\note3wW8EfpNRZYVdKUGeFFvWABudIcp6lE1jiIX8AdwLEud4m9988tf4neo/5LJwkkdHX+XF//4K\n6i/9GlP9t9k2e8mbKQZCm1SeT7Hzej/SFxxOzVzkycSL9LNJjDIqJveYwMCHz2vzDe9zbNNHv7BF\noZqi6QQhCGPSEgfE25wQrvC881MseFN8Vv4Lnr3+fU4dv/lDlPAPX9vwGz+K8f8KXgce/wka96Mc\n+6Ma95/+wFd/mNB+H5gQBGEYyAJfBr7yg97YkTQO+RawRJWN9jAbrSF+OvxNDqqziLg8yltsMsBN\nDtPCT5UIedL8Uvv/ZMZdZDkwRk9hl0inxqsDH+OeMoGM9cEHsImIVT6pv4AzIBHoafOI/w3Gk8uQ\n8pACDu3dIOur4/inquzGkuTEDKPBZY75r7DCGKps0MnqFN/IoJ1oUZsO8w4PE6bGEBsoWKwH+9kS\n+zi2dZOw0MAL1ZhOLBDQGqiSRay3gieAJ0JMKCOhsskAD4++geQ53BPHODfyJrGBCh1V42LzYd7N\nPo5qWJyIXuKz6T/jBfNZqlaMZi2ElVVxGjKm6SNfH2T/xCwjp1dJsMsOPdxjEg0DGwUANwMBqU6q\n0SS27CHtePjWbCZOrGBOvM5TvEKRBOsM0cJPRYri6QI9qU1CQpFhb5X99UVkxWI5GqaPLAdzc4Rm\nDf7g2N+infLzmd6vU3sqTG0jyi9+9w/oObHN8clL1KQQA74NHsp8nXelh+jVs5xX3+CYdJWVR8eZ\nPXSIeKrEAf8sR7hOlDJ3mOF1HmeYNXQ6ZOkl30xTF0JIAYfy8yl2in3wLJQTcdaDQ9zRZhAll3Fv\nCRsFc0P9Icr3r6e2u7rut//s0PY8zxEE4ZeAl9ibG/9Dz/PmftB7TRQqRFlniLoUJC6VmKncpVfb\nYSUyjItICz8t/ARoUrGjzJoHaXs+eu0sZ7OXCThNNjoDXL9wAkYdooNlFExapRBWSyOdzrLfd4eD\nvlkG2MIXauEERfJmL2Urjhi1URSLkhDnHR7GUWQmWWSQDULU2RF6sSSNA8JNZriFjzYSNn5arDHM\nujNCzurjffkuk8o9MlqWoFjHaSrM1mc47rtJuFgmcKeJeUgDIMkuD7Xe2wvXgEQoUCfFDqOsoDkd\npLbD5doZwqEap30XUaQOF7cfYXb1KKgiTl6CnEBwso4v0kKjg4eAgo3qmRTcFKvyENuxNIZPBQEs\npYQddlDbNpICriBhI+MhfPBPaB0XEUeQqEshhqUVopTZ5yywofZjyQoOEj7aZNw8A9YOZ7xL9Ekb\n9PpyXPMdY1GYol4OE0mUSfrzNAgQlGr065sf/L1VHEkiQJNYskQmucU+FuhjCw+BMjFcRHrYoUGQ\nPD2UiNMQgzTtAGvNESqxCI4m4Au0MVWFshglIDTRhA6i4O59pt4fzTaD/5Ta7uq6336oOW3P814E\n9v3H3hd47CQFJ41PMPBpbQ4JtxhYyiLrHrlIhh16qBBFwmGUFSTHwWyqtH0qUavEJ9Ze5vbQPuaE\naa69dooR7tE3uEWYGqulSW7nD5P2bdEf3mJEWkUz98LtzOM6f9DopxkIktq3TcotYDkqL/BJMmKW\nMWGZcZbIeT10gj4C+5uc0y/w8dp3EP0u21Ivm8Igsxzk/fZZbrcPoyRanPRd4nH9DYZZZb08wgv5\n5zg4cpNMIcvky01KPUkmH0/hsMZkfgmfa7AaHWZNHqIoJDjLRZ4OvkjUqTCXO4DmdRgSN9inL+AU\ndebnDuGMCngFkLZtej6zRWxyF9cTqRLBQiFBkQV3igVlgvn0GJajggeDnwxSHd5FC1uYmkI9GiJP\nikUmmWSRGe6gYmJaKrtOiqoapd/dZNJe5GvBr2CjMGPfwRIVHL+I0OdySr/EjOfD57bJGn0YAR+n\nP3aJtqhjohKjgnxugGYrgKBAQUrhiQIZcjQJ4HgSflqYaCwzStmLE6XMWfEi3+PjrDCKhYqs2oiu\ny2Z9AM56JLQsfcEsji0huzZxSpSIU/Gi6G4H4cCPbkr5r1rbH52Rn7BxP8qxP6pxf7Af+YVIgPMf\n8zjl/TZFIYGMTY+QJ66UWVMGmWeaXZKYqChYzDONrcg8EXmN0a11/HULIQwj1U2mm/dQ9lvoaYMe\ndtjHXegTMHSdjblhVjNjbPf2c+i9OSJOkydGw7wZmqUTgaDX4CvVr5Pt9PFb4t/nb0f+Daf0S6TJ\n85b1CAvKBB8bfZFHn3+bk/lb8HmPe+l9XNOPoWMwGFwjpe+gyCai6HKNo9zgCO2IjyO+98n6ellJ\njTFxcp1sNIN34GGueCeQh12Mjs53K88yEbpHW/fxr/hFxlimrfmhzyIfSjDHfkLUkQ6ajAvzrP0f\n4xhFP/aYTLbdi99uoMkd5o1pAmKDGXUOU1LR6DDLIR7eeA/B9Zg7f57d22+i2A7Xxw8yFZhjnLtU\niVAiToEUmwxwdGWWse0VLhwTeb70WdbXRijuj+DIMheaj/GzqT8iESlRnyyw5B9F6nicq13iS699\nk7ajo328w7dDz3JJPUmNMMXEeV59rYfC/iSBVBUx5PIWj+IhYKBx2z5IWKwRFOosNcdJiwUOBm6x\nzjCDbPI0L3NFOkHZFyOi1sgJPQTFOue4QHKxQq0d5s2D53A1kUF7k0/UXqGl6vejfB9QIz9h436U\nY39U4/5g9yW0zwjvsU+4y0s8g4dAUtylHVXZaA7y/tJZvIyHHLDQ6NDGx7CxzmPFbzKeW0XedGET\naodDtIZ9ZIJbTKbuMsQ6bXwofpNBVomWKsS0EhUhghcEXBc7KGL5JRTFIkmBQWmdXi/HZ+vPczBw\nhyRF/LTpFXLklByizyaXTrNl9zHdWsA2FbJ6LwoWfqWFKljUG1FE1UH3N4lQpU/bIqXtEqVCJ6Fw\n49BB1iLDVIniCVALBhFUyLRyKIJNiThrDJNil6hSIRPdJqnkkXBYYAotbnB68iLOUZnt9QHaUT+m\nqiALe2eaumgQEFqkhAI1IUyYGgGayKqF60l7v/AGyHWHkNcgVcvj91psB/poqj6qchgVE1uXaIX8\nOJKEq4qIQZcJ+R6RaoPkSpUe/w6a3EHa8RD7XBTbJrBpoCkG7YhGQ/YTE0pMsUALP6/7elnTh7Bq\nGnqoiRbqEKZGiBoKNm3BR4kYq4xSEFN0RB3Pga3cMMgixZ4EM8Jt6mKIe/IkOm38tPcuUGvrhGoN\nlBsW1pBIJFklLFUQSqH7Ub5dXQ+U+xLaR73rFEhxleMYnk6DIKOJFRYr41y5eZYe/wbhQAUVEwWL\n/lqWL83/BaLh4NwVEf/IZe6fTDL/5BjjzHOcywyzxos8S9MLMORbY+LQKwTcJrYr0Tiuowk6Nc/H\njpum7oRQFZNiJMIJ7zq/X/4llpxBSl6EuhDirHIR3TP4E75M6yk/9VaQvq0cWOAgUSCJholow2ph\nkoHQGid873HMvsaguE5S2iVGha1oP9+JPE3VjWI5Cr1iliS7JOQi+4Lz3BCPsMQ4Ii5JdhmUNpgM\nLHCQWYZY5x0eZthd41TqErv/QwLrqkL+Zh/BaIM+eYuD3iwt1Y+EQ5QKYWqkKDDBPayMhInCsLBG\nsF0nWG1yqDIHdRAdl2T/HO2wTEmKEKCJ0y+x3t+HLUrMBG9xvv9V0uSZ3Fpm39IyuyMRZMtBvQx9\nj+wgyi7ulsjC6XHmByZoEmCUFZ7iZVQsStNxFvsmqN1NohkmafKc5hKDbBATyoTkOm9wnr/gp8kE\ncjjIbJjDbNwbI+/LUOsJ8g/5LVRM/jX/NRmyRKmyzhCR0SrneYtP/MXLlB8Jkc/EWIkO0LdQuB/l\n29X1QLkvof2Gc563nUeYVuZZL43ySuGTyEMOcq/FJ/x/SSUWJkWBw9zERiYaLbF8pB/LVfEHDUbW\nNmn2BTFR6WcLB4kdepBwOOtd5BC3MASd2FaNYLbNjemjiGGHhFfk7/CH3BCOcJGzexfxVAsvBnGl\nRNULcpXjIEDJi1Ny4vjENmvaIK/3nSOoVvkSf4qfNu9ziqvKCQ703sCTPebaM9y+cZR0JMf4zAKT\nLJInxbvuOQorfRiCjjxkcFeaRqp4tBdDhEbL+NN1MuQYYp1BNkhQwodBmBonucz1wgnerZ4nOZjl\nzPg76CkLX6zBJItkyJF30hjopOU853mDFn6+ys/xc5tfY9JdRBvu4B1yuWoe4PnocygJi2FvjXO+\nd4lTpGJE+bfu3+Vc6T2ear7KjaHD+PxthlkjT4qLw6e5ph/l0eULGBq8/9hJps0Fwm6NlVN9aJE2\n/WxTJI6FQp4ebGR0wWDYXGV+K4ISsHEHRRaZpEGQXrL0s8V+5kiRZ5lxlhljVR4hcqCIJ0GFCHNM\nI+Lho80+7tJDniJx7gj7qWSijH52jfX4IPNMscA+lEkb+Dv3o4S7uh4Y9yW0q0TooBGnREOMIMgu\nt4WDJPwFkoE8SXYIUUfBJEWBmF6ipEcxUal5NvYnZTaH+yiQwkDHRxvVMVntjJKRcliKTAsfJTtN\nuZ3kYukUfrHB/uBtDoqz9JIlRJ0GQeaVKebCBxiV7wFQJkYLP2VixCijCHvTDKpnMtW5h+XILGgT\n1N0gLdfHoH+dMlE22/20lDA5q4diLsl4cRVfsEMno5O92E/NjaD6WkgBC6et0G5FmLZv0u9tcMK9\ngiqY5MU0vWRJk0fHwEYC0UOyXKq34/jSHWJDWQBa+NmiHxkbSXDYJUEHDREXjQ51KURdCBGgxW4q\nxg0O8QqPc5DbjLSXEbMu24E+lpVxUltF0k6BkL9Gn5Al2qww1NpkIzJILtKD4rPYrcTp6BoL/RPs\nv72II8rcGj1ARsgSo8wOaRoEsVAokmSnncHs6OiJJpFAmRB1Omhs00cLPzHKRCnTiwkINAmwKQ4Q\nTpbR6dDLNjtkqNshymaMlhrAkyFIA13oUA+EeHfiLCuMsswY6wwRi5XvR/l2dT1Q7ktop+U8T8mv\nYKATjxc4G3+LmxymSIx+NnmUt7BQuMBDfJIXiFHGZG8NbqU3wtxPTzPHPlYZYZMBGgTx223eLp2n\nGEyyqyYI0uRC7FFes57By8GEc5dyKEJZiOGnxQx3yJPmlnKIW8pBfpHfo5csKiYr3igVIcoh+RaW\noJA2Cjyyc4mYWOFW4AD/Pv4lbpiH8EwRIejiCBJt2Uf8eJ5mLsL6nXEOX55HGTNYfHaSre+MUjZS\ntMcUhJ4OaEAaPJ9Av7vFf2n/O74lPcd14SjHuMYgG9jI3BCO0pvKctS5zr/+v36J3Ewv7SGNJgFE\nXIJCg145+8GUTYo3OM8UC3yBr7M5MMBVDnOA26wwxi3vIDkyfIGv8/HaSyQu1vnzmee4ndnPr175\nbUJTFYqHw0wzR2qjTHyrxpv7FSTVJa0WWDvdR40INSeE2VBoikku8BA/5T2PT2hRII2MTRsfi0xy\ns3yCdWOY1ENbZJQter0sguCR9XopkeA4V6kJEbL0EqdEiDouIhFqjHirnOAKS4xzx5phsTxFMNbA\nlBXGWOEIN7BQ+Jf8PXJkaONDwGMfd7l0Pwq4q+sBcl9C20GiQhQRhzxplhhngE0MdLL0cZUTdNBY\nZJKLlMmRwU+LOCUEPKpECFFnjGXC1BhkA8eUkfIeGhZOSOZ143FMWeehvjeoJcP4tCYlYrzO4/SS\n5QC3sZHpYYch1hDwKJBGo0POy1AlwmPCmwyzRkotcCuzj1kOcVk+QUWKIJQlaptxrpjn0Psb9I1s\nMSqsYsVUOgd9bPT1sCUO8Obuk+ym03v7514V8CYU6AH8MJZaZsaeI1CxeNJ9iyF1mzvRKb4mfIUa\nYcZZoiJEuR49wtM//V0GwhvEKHKRs+Tp+fDM1kXERqGHHZoE+CN+nioRMuQQcNExSNsFmo0Qr/ue\nIBxu8JnTzyNGbTSrg2B72I5EB5UWfjrhJrLQ4YB2mzxJ2vh4n9OsMUxRTKBNWbQ6Qb6183lSkSJH\nfFeZYoE3OE+ODDPcQY+btMN+Dso3mPP2c52jHOcqz3ReYcxaQ/M3qUph2vg+/KxHuc67nKOnVeBT\n1ZdYj/UzpS4wFl/GVFT8tEmyyyojbNFHmRiHuEWaPDc4Qh/b96N8u7oeKPcltP+/KYgWPtroe6su\n2Eb1TDquhi4aFIQUGiYmKnVCmKhslQcxPB0nKqCIJiFqxCgzzBoNMYRfa6LKHWRsDHQk1SGuFUiy\ng4qJiEOOXvJmD5IBfb5N0soOMSrYyBgffPwh1rFQSLJLijyqbHInOM0cU2zTA3jEpRJBpY1uGvho\nkBB2ONe+iCdCNp2hmdZY2Rph7dYYRIEWe22G6tJeaA+D2OtRjUS4KJ4l4RXBEbjVOsqSOoqimBzg\nNhWiVNUwnx79DlPeInQ8dpUUVS/ChjtEWKqiiR0kHFRMXMQPp59qhFlmnDQ7hMwGT5Zew06IrDGM\nlZPJSDm8sIDWY2CGNVoEkHCw/BJFJUpeSVIkjo3CFv1k6cUSFFaTQ3TaPtyqRJkY684wO2aGopJA\nlF0SFBlUNomINfZZC/hFA08S6CXLEBuMuis4hoCrSBRUlyYBAjQYZJ0h+olSx+cZDLCJK0HL5+OG\nfYQdO02PlCIs1ADoJUsv28SoEKL+4a7Yrq6fJPcltFcZIU6Ju0wzyDrneIkGIabdeR63XyevpLkm\nHMVPiykWCFOjhZ+XVj/FXXOavuNrDIgbjLPEEW4ww22q/gixqTyKaOAXWxz3X2WNYXJkOM5Vesni\np0WNMFeap/nznS/z+f6voSodcmQ49MGuRwOdLwr/Hj8t3ucUWwzQxscS4/SSZYDNvbP1TI6+9DYZ\nsuSFHlpOgE8XvoerwyX9GAIezrYMbwMhYBjYBW4Bc8BJWJkcoT38LN9K/hQz3MEzJP4y/3kmI/Mc\nVm8gCxYSNimnyOnqNSacJZpagI3wLRbdCVY7w6j+DhkxR5g6TQIkKPI0L+/N/xNmkwGyZJi2Fvnd\n4q/wPf/HyJYy+H7f4dhzNznwmduEjhts+Puosbdk0JUF5uR9fI0v00FjHwsf7lj009rrE6LvkNAL\npMlxpzPDH5R/gacjL3NKfg8Jm5PmNQ607yK5Lgl/iXP+tykLMWpakJvSAR4qXaautWmqAQz0vbN4\nEugYuH54y3eGPmGvL4qBzpI5TtbrpehP8jm+wRn21tRvMcACU5ioVIjdj/Lt6nqg3JfQXnpzCvWx\nWc7zBiYqC+xjkA0aQpBL8ml0wWDDGOLN5hPkgz0ogsl6c4il+gQSLnGvRI0wc+zHRubd2qPsmmnM\niEa/uMWksEiIOj7a7NDDGsMA7OMuK4xS8wcZzSwg6g7LjQlu7B5HSTmMBpYQ8LgrTNFj7/Jw+xKK\nYZMXUzSiQSalBQbYop8tXEHElmTuso97nXG2jX7+7+jPklbzmMiUibHmG4Zej+DBKp4fmoUQnAFK\nAuyKtDw/kuBwkFkerr2H01F4P3oayyeyKowg4XDQukOvleON4MO8KDxFXQhxqXOChhjgY/prTIqL\nxCkh4XCXfeySJEmBPrIEaOKjjYiDhoEmdGgJAXb6UhT+bhR9SKUpB1iMRtiR02RJUyWKLhi4jsh6\nY3Rvw07AZMvr50jzFj9f+mN87TZmQGZ3IEpIqNEj56hGI+xX50hQJEsvpqkh1x2owTs9D/Nq4DGG\nWaNP2CYt5VkMjxBotDm9fo3vpD/Ott6Hz23zicbLjBhruKbI/xP8GS5KZ9jpZJB8NgPaJiIu80yz\nTR9rDBH4YNpsigWmawv87v0o4K6uB8h9Ce18sYdhlhlinQZB6oQI0GTHyfBe5yH69E12vAx+p4Xr\niey0Mry/fBbPVugPbTIorHO3Oc2WMUTNiVG1YxiSTlLIMeTtff2uihGiQhnXFrlTPoikuPRHtlix\nRrFEhUPRawSps9EeYc0awXB1AjQJ0KREnLbpY6K4giTYmIrCbrUHn99A1w2ilAGBEnE2GaDj6QRp\ncClwkpRcIEMOCwU7LCFO2ASnq7iSSNMLQR97LYfykPIKDLJJlCoRt4qMw3RwFmyRWKtCQG/i89oI\nwFX9KKvSEGU3zla7n4yYY1K9Rw87RKjiIqJgUSbGBkOkKRCjTIQqNhKeIlCKRqlpQYqxBFfPH6aH\nHQRgxTdKBxUH6YOLei4SLoLjERAbZMjRIMiAu8Up6zI7ZpqOqzKYXceJQcDXpC37GLY2MTo6V9Tj\nrIgj9Eo7xKUSO0KKZcZQMQlRJy6UaOk66dIu6VyJCXkFNbS3CiZgt4haVcJGnYYvSF5IIToeKbFA\nj5Qj5eVxkKkIUUDAY69TZYAmtqvcj/Lt6nqg3JfQ9mZEOmgUSJIhx2O8CcBrjaf5auFv0dO3yanA\nRX5F/Rc4osz7m2d498LHcA57BAeqTIvzrGYn2d4aJtcaZGxqgf0jiyiiyZC1Rq+T5Xvax2kIQTxD\noHwtjZgUWD6SZ6M+yLC0zpnoJWqEqAbD9PtX2CfOcYQbKJisMYzacRCzLq0hjWX/CN9c/iJGr0xv\n7wYz3CFCFQONWxzkpHaZR9R3+IbwOQqkkLE5wg06SY1LR08QiNSx1zW4LEESaO49HrXfZIZZXuEp\nnLC0d4FUuM1DtctMtxe5lxnmBeXjvK08QowyNSJkhQwRfwXwmGcagBhlJByGWMdPi5scQsAjSAMX\ngTJxav4Qc6MTNEU/NcL8GT/DQ1xgkkU2GCRDlv3ME6aGgMeumGBfdI5BNvgCX+eKcJx4qEwxEOJ7\n3hP4tzp8+cKfUzoVRBmy8NNisLFNyUmwGJvCCqq0AyoP977NqLjE47yOgUaDIEUSTLvzZIw8vrLN\nZ71v4wYlOn6V11IP0/D7ON9+i0f8bzGiLBMNVrkrThHzynzJ+jPm5P3kpAwJitzgyIdn3tlwH/Cd\n+1HCXV0PjPsS2qLlMvv+MexphSOh64x7S7xlPsqO3MvjqVeQVBNTUPmW+ByWq5CN9KGcbhHrq5OO\n5PCJbUTTwy3JuFsg9HiEpBojrNBfzBGtNjk4fJv3fKe5YR2llg3TqvpxIwIzsTkmfIuAxy4pLFFl\nQtxbo93CT+aD9qtNX4ArI0fwh+tkKln+8dV/xtLxYUq9e/O+PtpUWxGaC1GiXovHwhfoSezSUTV0\nOliaCCqcj7xBSYmTU/ohJEADRN1G/oTBcGiDxE6VO/oMos8loe4yzTxD7gY+28DwNPxCi5RXYMMb\nxEFiWFgjTQE/LXTaHOYmYWo0CHCV49QIM8E9DHQ2GKSNjxVGQBDwZIEFJtlgEA8Bf6nDvvYSZkol\nr6a4wgmS7CJjYwoK54R3SVGg5fq51DiLJSrkAhle7TxBONggdrjCUmyEDfopkKLmixHzKhwRbyAL\nNovuBBesM9SkCLYoE6eIi8QGg+iigZmcZUDZZkfN4C8YxOerZAO93A7t55vWZ+n3NthnLnK8dpNc\nuBdTUxFll46gca89ybcLn0WJdDB1hbnyIRz/R3Lvg66uj9R9CW22oSQmuGPPQBsajQivG08Q8Vf4\nWOJVIlTJk+YKJ8h6vTTCQUKHyvSrW4yKy/SxTb+2QX9wHdcvMiovc8C6zYHaHQbmtvHnDSZSS9z1\nTdEUA3g6lLIx2i9pjAyvIE56bE4MopkWGWGHjqoi4H04VeOjjakrrPYm6W3Z9NVzzDh/wpw3xTyT\nVInQxE/ViRCotZBcD0eSGYusEBcqxJwK15SD1JUgj8pvcZ2jEBDxj5gUywnafh2mHRxHprYbYaMw\ngj5iEstU0D2T2Y5ExKyDJZCUiySFXa4ZJxBxiUllhpR1kuIuOm1S5AlTJ06RNzlPgxAzzOEh0MaH\nhUKNCG10NhnARMVHGxuZsFUn08nT9lQqRFhlFBEXC4UOGqd4n5S1S7MTZMfspSX6GZVXWbXGMCwN\n2XAoOEkKTordToqQ2uSgfItesnTQWPOG+Zb9HEGhwRAbSNhUiNEUAqiYBMJNUqE8DcuHUfVhOiqq\nbVF1o7wnnuFx4TWmO4uMltbxa21W9CEuSae44x7gpn2EC+1HmQncIuaW2GwOoBvt+1K+XV0PkvsS\n2vb7EuP/YI4drYcLGw/z5vzTNJ0A/YPrrCZG+BJ/xsO8wzGu8XXpCyxKk/i8FpPCIse4xiPu23QG\ndaK9u7Se3Ey0AAAgAElEQVRtP09rL/No423iV+v4XjGwdyX0022mEnd5xP8mxccSNP9Ixvhtge+r\nTxP62TqZf77Bb5b/GWGxxvPpZwlSx0JmjukPNns0GGOZ3uwuvrbB7uejKEGDPrYxUVhkguXAOAdP\nXaeCn38l/gKi7PK48Tafsl7E8HT8tDjAbTQ6HErM4jvZ5hX3SW6Vj1JY6ePi6BlCzSrG7we58VPH\nmT8/g+rayFWXw/Ytfqv2DzBEHxdlnWYxQsmJ09ICnIlfYlhbQ8FkkUkSFDnGNUZZZocMHTT62CZI\nHRcJC5kScRQsTnIZBYs1hvEl6tTiOmG5sndxFZH9zLPMGLMcxEIh1qgyspvlbM8FQmKdnyl9g8Xo\nFC+tPsOf/+5XOPDfXEc64rK1M4KatAmEmx92KNSEDopis1+a5wg3WGeIGiHy9HCbGfZ7c+h2h+nK\nEkuxMd59/BSPOu8y5d2jP7ZJRYySbfdCB3TXYI0hXuUfU3MjeKpI/+gqUamI4Loo8RaVu93VI10/\nee5LaJf8KdwVAWWkQyRawZuoM+rWCETqGGiY7J35+mlidlQ8QaBH3WFUWGG0s0aiViUZ3KXPv4WH\nSBud2+4MqbES20/3kW1nCMTqbDBARYpxNH6N3ie22FHShASD5lSQtcIEX639TUZ9y2hek96NPBGv\nRm6wl4RYxEEkyyCFWA9a0ESI2hiyjo3MJPfwYRASGlzWTlIQkiSFvamNvJrgL51PMbqygu2TmR2a\noUqEopSg7IvtXTgU3qTgZmhE/BSEGIkv5hGnHGxZYWe9H0cVUKPj/Gng88iKSVBs8ET4FYpeAlsS\niUp728KDND5srbrAFCHqjLCCi4SDhPVBe9sD3GajMcT3Nz9Ob2qbycQ8R7lOSK6zwih50mwyQJ40\nOXoBSDt5+ps5qm6MS/HT6HqLpuDnq8G/wWJpCk01mfjpJbSBNlUvhuWqFL0EVSJEqLLJAJvCAFG5\nQlMIsMLo3k0bWjJeQ+GZ+uuctq8hC1CMxVkODjOn78dvGdjI+KQ2AZr49Sa3e6co+BK08dMkQFSs\noAsGpqiy3hnCswWGfWvYg9v8SG421tX1ALsvoZ0a38XclVH668SjRVLRXdLkqdoRttv9VNQoAalB\njTC1aoSWF8SLiZhFjd1Smtvlo2xkRqkkEiiaxYK6jxXfKD3jOyyOT7LJABMsUiVKRYwypK2jHTXp\nTPuJqyW8isTqepz39DM0Aj4e8t5Cqnm0vCAr7ig9Qg4PgUvuadJugYybI0yFOmEcJOKU2MddQm6d\nVWMUy1EZcdc51rlBQU9ySTvO4dwsUsClMhSlg0aRBDc4whO8xj7/XVpDfjYYxAqmGfzCyt60REVD\ndR08v4OeaPJS8GMMSusMs87xyPuYqB9sRqrgfbByIskuxU6SteYoT/lfJqaW2RQGsASZClFsZPrY\nxmcZlIpJ/P4WYhgm5CWKQpw59u8Ft9FDzYog+F1m3DscN24wWMkx55viYvIU+705VuxR/tz7ItVm\ngr7YFg8ff4MdoQevLTLkW0WX23Qcnbbhp6JGMRSNIWlvo9JOp4dYtkqzHsY1VKacewx6WziywpXk\nEZaEcdSWRVmOIsrOhxdXVbFDUY1hiDoSDmHqxCgjC/beP5viIFZd5UByFi1euR/l29X1QLkvof0r\n5/9XbkhHeM93mhB1jnKNMHWuNE8zt3uUQuY1fIE2m94gjfUohU6G98aD3PjmSfRZC13r0Br3YY6p\nCIMe4/3zDMeX2aYPFZM+tqkTQsAlTokNBlnOT3JvaRq518Euy2j3DH7+4X/LVHqOrNDL+xPHWHbG\neNF8lrhaJCZU+Ib5OX75td/jseK71P6Gj7nwfpYZY4XRvb5y1gL/dPt/RqnaqDUT/0aLufFJ7FMS\nAV8Ln9biKNcpEQdgk4G9pYBI9JBjgns0CDLLQbL04oUEHjn8NhGpTEfRuCEeRgA6aJSIM8oKw6xR\nJkaODAY6YyzxqZ0X+Juzf4J+sEGuJ0VTDVAnyDpDXOUEGh3SoTxfOfpVzrbfZ7S6SjXm55Z0iDc4\nT5MAudwA5o7OMzPf4Zx5kcd33iHgtdCUDikKHHOu0Sn62dwcZXxwgUOxqxxgllGWaWs3MNI6J6XL\nlJsJfn/t7/NYz6s8lXqZXVLYSOzupHnxD55jmwF8+1v8xflPI0Q6HLFu8lX35xjKb/Kr9X+BGrVo\nR1TywRgv8AmEsshnbr/AyswYm5l+Omhs2gM0vCBhtYZ3R6Y2l+Da1Bm0idb9KN+urgfKfQntt+zz\n5NQUliCj00Gng4GOqnYYjKyQl1PImKiCydHMNTSzzbw2SezADv5km4oWpbYSonEnAgpMxW8TokaR\nJIe5yTBrvM0jtPHhtURWrk2yVR7GEPywC7raJDazyw39EEv5MXZ3ejgweoNwpMZZ+yIBsUXUrvLz\nrT/mZO0a8c0q+tsGXnOJRLmK4fnomdwhNVHG9ks0tBDZ8AArgRGWU6MU5DiTA8tElQoKFgmKjLFM\nCx8BWh/2TWmy1152mDUG2cAntekPbCHg0cZHhAogELBbDFU2MVSNtfAwMjY1wuy2kpz89jXGjXWi\nkzUqup+6FGZNGMZHGxeJJgEAokaVJ7bfYGp3CVFxWQ30Y/tkNDoUSWCGZMClo2gUxCRL8WECQgu9\nY/DYwrtEemv0Bzb5dM9fYoUlAloTAagQI9hucT7/fS4HjvNa9Qm2rgySP9FDLpWhRIKde71sXBph\n524GY9CHFLJYCwxxIXiGrJ1hzRmiLob4S+XTjPhXSSgFFK/DYmsKx1M41D9Lv7bJc/Vv0yqGuBI5\nyk4wyQBbvJr/OG5W5aGH3mbNHabb56/rJ819Ce3v156ijcKwvIYs2tTcCLutFE3RT398jaIQR6XD\nuLDEocFrBNwqti1w4JFZQlKdTQaY/dpxGnMRaEHYqpOmQAf9w97UKuZez5KORnkhgYEPZdTEbiqo\nQRPfZIMLxkOwLRJabXM8fpkjwZucVt7DJxgkvRLn7MsEpBay6RKebaNvbzKQy6K4FmLZxVB0Fo6M\nsB4eYJUR3uMMOTLI2Ozru0sf27Two9EhSYETXKGNnyhlhlnnGkdpEGSQDSJU8dNExMXpKAhOiQP6\nbRpiEMdSOL1zjQuRM7wZepSjznV0wUAyXFLfLBOKN2k+4yMX7mFb7qVEnDF7hYRXIi6XiAllBjub\nDGa3CS42aYp+rD4VKemgqwa2JyPFLOTY3lK/dWEANwBRKoxtrHE4e5tSMMRAcp2fGfpjvu89RdWK\nsmyOc0+dYNxcYf/uAn/s/Be8XHwG45bG2tAwCm00Oty+c5i5tw8h+Wz04RbqcIeimOSKd5IFbR8e\nsCYP8XvKL/CM73uclC8z4q2y08lQUFO8O3WaT9RfZKp4Dzev0uPPsq2kybBDVh7EjiicG30Tu/oE\ns/ejgLu6HiD3JbSfCb/It8zn6PHyeAjMmgeYu3WEuj+Avr/BjHwHSdhrgJQnTUbI8ffkf0ldCFEj\nTIg6WwdG2YyPQggsTUHF5DhXKbC3+y5FARWTnVCGqU/dZpckRSHJ7u1emrthHFHm4MA1Toxf5qG+\nixxtzxIvFWmkNRxEOorOjfh+JmOr9Kd3YD/sPJmkGg6S8bIEbxuYdxS2pvophePI2IyxTIAmLfyo\nmDQJsMXeV/oYZSa4h5/W3gU2WhgfLMkbZIMsvawygojLiewN9tUWMCZl7vnGqboxnJqEpSi4rsiR\n6h1CSpW8kCAVKlCNB1mJD7Ao791B5lHe4kBlgZoXpp3QCQoNQuEqbx07y8kr1xm9tcaZyFUuHnuI\nS0OnadoBbE8mJuwtq/QLLXZIs0U/5XSMTkBlMrfCqLWBOtzh694XeafyKG8sP404ZkLEY3t/ilH5\nHieb7/Nu83HyZpo023yab1NdTbKYnSb+yzskpnfRfQYbjVEaXpjh+BKT3GOzMMzc8iG8GYlQok6c\nEuPhRXw0UbBQF1xaRoi5g5M0AzoKNlv0M/HUXVSjzYXIGRbzU/ejfLu6Hij3JbSPy9eYl6fpFzcZ\nZIOg1ERLOtxhhvXGANVgFEH1yJDjDjM0hCBRocI9JrBQmGSRz/V8g8f877CmDRAPFSi4KZascTSp\nQ0Iu0s8WNjKOLHI2fQERl6oVoT4cpdBJU/QnOajfJOKvcNc3CTWBOCVsBELUkEUbU5TZ3JfB9KsM\nONv4xTZOSKSTUNFyNlreYqiziWOJmIrKOEvsayyiVyxGlBV2/QmWQ2MY6OySwEVgjGVC1NExGGaN\nGGWCNBhe2yDdLtIZU1gPDLIhDjIh3SXSqBPfraM3Okzoy7hNkUF3g0CpQaxQJpBqYvaoxJpV4oEy\nouruna1rArJnkhF2GJtbJWnsYswoSCdMmkkdY0hlKLjGWeEiK+IoGXJMC/OMs4SLyC4J8qRxNQFV\nNrlhHKXeCFOcTzDrHcUSNPoTW5zYvUJ/a5OvDf4MK+II7R4d/9M1oiMlMAUuVc5RGY+SCOxgTwhU\n1QhCS+C4egVDVSmS2Lvnpq/JwdQN4loRjQ6a0GFMXsZGYos+vpt4lpBTxw3Bcm6cQieNPNhhOLHG\nFHexEdHl7jrtB5cE6ED8g4f/g9ccwACKHzzagPsRHeOPp/9oaAuCMAD8O/YajLrAv/E873cEQYgB\nf8peP7tV4Eue51V/0M/Yz13ORvZ2281wh0llkd7JbZSGQaGawicbxK0yo/Yqgt9jwx2iXI+zFhwi\nrpc4wg0eCV1E81u86z/FkjDGkjPOTeswh7nJmLxMkAamoVEzI+zzL5CWcxiKjjpqssEgsxyilywF\nklwQHmIuMk2SIgGa7OMuQ946MadMdTBCR9PJ3MwT3m0gKzb5aBRNcQnoNcbtVayOQtvVGRC2GC5v\nMbC6AwLcSU6xNDyKJSvUxCBL0jgaHcJOnX5rmxlxjrbjwzZkxu+sEyo3qUQD/GH8b/Nu6iE+yzc5\nWJlnqLyNYthMGYuMGitYqohUdknfrEAC1JRNoNxGUhzWlX7WGKIUjCA5Lj2dHWau3WWgtkV9XKPx\naIDs+SQdNIZZ5pN8l8vSCfYzzwnvMh177z6aLdmHhEsHnZzYwxuZx7m3sY/qzSQeAmN9izx5/AWe\nu/oiu7Ukv9b/T6gbYdygSOizZRKtAlZe45vZLxDdXyT6aJG8laJajaIZLmdH3iHvT/IG51ljmMH4\nBifjF0mzg4BH0wsQpIFoe9wxDvBq35PonsHhyi3evXOe9c4QQ5kldMlgvzfHiLjGgnrghyr+v47a\n/sklgOpH9AuoEZMgDXyWgdhwcdtgWwodRCAA9OERR0ABbFwqCBgIbKNRR1YtRD94Af5f9t47SJLs\nvu/8pCvvbXdVezttxvb4WTdrsHDcBQkCIAWCTqSOVIRIScEzoYgL3p1CCkmUREnHk0LSUSIIkhBJ\ngPDA7mK9GbM7frp72kz7ru6u7vLepLk/qnOndgFQEAjM7YL8RVRUVebLl1kZr77vm9/3M9RkGwU8\nNPIW9IoOjSpg/P/7U99jJhjGX35DBEHoADoMw7ghCIILuAo8DfwSkDYM418IgvC/An7DMP6373K8\nsZjvZd4zgIaIkwpW6tzmIJtaF5W6gw9svMTY5jzBZJoLD5zgmfKH+PyXPsP4T9xk9OAdelhnSRtk\nVe8jbQQpaS4kQ6VPWcUjFbGKNSw0mLs1ydriAI899AxiWGOPMMMs0MDKGr34yBFjiz5WucERdolg\nocGjvMiJxhUGihsYt0TElIG7u8hOZ4TNYAcZh4/Bb6wRv55k9heGsdnqRNIpbI461kId22YTbkLZ\nayd7wocRESj57ex6/GwTw5/N8/DKBXCBVpTgqoCl0ECSNNQuiS8eeZpvDz+KhEap4cabLfC/XP83\nuKIFNieiFEU3Hdf2GH1hBSQwRsA4CyWnlZzVRVbyE2hmsecaaFtWPK8XaUgKdz/TzYazG10QOcht\nbnGIOxwgwl4rb3bDwsd3vkLSHuFy+Bh+cq0c1YaAgwq5uo/l0hA1bIStuxx1XSNTCrJu9DDjHufa\nhZPslSJEH96k+pqb/HSAYtSLbG/i82cYOnwHvy2LXa8i2nTsUgUJjStMYSDSzwpP8VV85Fg1+njZ\neIS5xATpqxEawxJiXcP1Sp18zoetq8qhn3mLsuhA1RRizgSLS+MsjB7EMIwfKJ79hzG24bd/kFO/\nz22fRY+dxf+Ik8GfmeOjytc4vnIN39fKFC8bJFYEZpABOzI2GiiICPuL7ipQxUmVcVQ6Rw08D0D9\nCYk3u6b4C/XjLH5+nOwrRZh7HWjy15ON/5/fdWz/d5m2YRg7wM7+55IgCHeALlqD++H9Zp8FXga+\nY2ADROf2sMpVGp0Wsl4fSUcYHRG7VMFibVB0ObnuP0xSj6JbdVwUOd7/Jsddl/GRYZ0eNqRu0mIQ\nl1YiYiSx0KQpyWRFHwpNOtlB21AovumhftRGIehkWj/IbjOCV8pjt1SpYqeImzIOGijYaCXe15DI\nC14EZRWXrYxS1eE1sA7U8fUVsCgq7r0Kelaj9mdF3L0l/L0F1l0x0r5Wrcbx0h0C5Rz2lRqb3k5E\nWaObjZavtyKRc3vQ7BKyoeKPZhHDBg2r0truEHFQwUAgYEnj9ha51TdGxJPEsOgsMUA+4sNxqEqo\nkkWLiKSdfmqKwoYQ47ZwkAlhll7LBj53kca2QaOmI2sqoWQGagJ6XKSiOKhjxUOeXcJsCZ3sWKNs\nWTrZbUY5lryJbFHZiMRxUCFv85KzuellnbHcHJO353il+wG2PR3s1DsoVLxUl13kN4MYFgGpt4kl\nXMEtF/GQo7TgRYk30eOwo3cS07foFdew0KCBlUrTyYU7D6JuyGxku1k910PKHqbmd3LEcQ1J17gi\nn0VtKijVOlXDjiTpqBrcLRxgrx79wf4LP8Sx/dfDFOgOIx/q4JHoC3RtrqM9B8lyHmHTRuzqOnHp\nNr6dVTw7NcRqC2Zb1UBbEN/c/2zQEkcEWuJJCPCWwbUFym2R2I6NQ1qAUGIZyhWiTMOTIutdfby8\n9xja9S3YSO33+NfT/oc0bUEQ+oAjwCUgahhGElqDXxCEyPc6zjrdIFLPYhwXKckedh3hVtEAZLak\nTtbivex0dLDYHGZMucOkNM3P9/w+cRIkiXKRMyg0GREWGJLv0iuvUtUd/GHzF6hIdqLyDmH28BUy\nKNtNnLUSdU2hptmYqU7Qo6xxQnmLKg52iZDFTxU7cTY5zSV2hA6WlX4iSpLocAbPbhnLf2gSGskR\nOpIDO1CESh3c/24F+3lo/JqDedcQt3yTpLrCBPpS+OZzaDdkblvGqDsUxvdD2lWXzNZwmFrTjqNe\nwenLoysyBauHbXuECjZ8ap64lmBIuovHmufVkYfICW4GjGUyaoBazIY/msW5WqViszPrHKaJwnWO\n8qd8iqeUr3LKd5ke3zqBsoY9USGk7jG4sY6Rlbgb7kFTJOzU9v9IOpoiMR09wA4dZKt+oqsZBI/G\nUqSfTbq4xSFe5jwf48u4MhXCV3K4nBVqThuz1XHyzgCNgp2dP+mh+x/eJfj0DjuNGHF5DV86z5U/\nO4t1Io4/vkdB8yCLKl6hgKCBpdlEzct85dWPk74QhlXwde5ie7CCdKLJo5ZvY8lr3Dx6AllqYrXU\nKQpuDttu4qDGszsfpdx0/6Dj/oc2tn98zYJs17E6VSx5A6M/iPKJg/zssT/ggdefo/FchRvrX2Zr\nHfgaFIEbgIV7cGoDxP3PLQfTlqLtoAXeBi3taX0T5E1ofEtHY55x5pkE4sBRwPhJBy+f+xA3pg+h\n5+sIyT3qHqiXZdSqSGt6+Otj3zdo7z8+fgH4zX1W8m5d5XvqLH9v2oduSNTXrIQfi2N5YpQ4CarY\nmecACk0mjWl+U/+33DQOU8ZJmiAlXGzQzRo9BMkQIkXHfgmrTDFIYSZIudOG3N/kDc6Sf9iHdbTE\nS67HiFR3OO28xJq7F7tQpYKTJW0APzlOSxe5YJzDQZkeYZ06VpYZ4D/w6xzyTHN08CaHHp7FNtSA\nAVoVaEqt+rwDo6B0gSLUOZG9gSAKXHMdwppponklch90MBscY4coSSKE90uYOSjTsZzCNV/Ftqzz\n7QcfYP1InHPC6zxSeA1SF7Ela6gxULtFnip/i5vKQV4QH+OxlVfpra/jtpRwZcqkAkGSRBlgiXFm\nOcVlBlkiRAo7VeS/IyLULa0sgzHQ/SJVxU6AzNveLABlHPsFvzY5YrnB3riXvOKlip1OWlV6ZFRm\nmKDZobDxgS7qAYVBeYmPu77Ay5EnmRuahFNg6WxiaTap7bmoexyojTLsCKjdCioybrmIgcC21kEi\n2Ufpuhv5skbR7YHzIIY0BkaX8MoZMlKQTaGLiuhCVSQef+AZDvpvULY7KL58jbUXlxjUPo9QGGLj\nf3jI/3DHdouEm9a3/3q/mw2YZOCDec5++han/+kF6jN/wey/9lD2zHEtWwda4OyhBcYyLUZtvhvc\nAxedFrs29xu0wFtt29/Y3ybR+p81gAxwDaj+33Vyf/Q6Hy/+IseSOSzHPbz8W2e58NkD3P2Km1Z5\nqNqP8obcJ1vdf/3l9n2BtiAIMq1B/TnDML6yvzkpCELUMIzkvja4+72O/41f81IYcjEjTLAm9JLG\nu58rQ6FfX2E2OUldcDDkX+LVxsMk1BhuawFJ0AhrKZ5QX8IlF3BKJUR0ZFTcUpGQYxe3RSHCDgEy\nHIjN0YhaeaHwODtaJ0qpSXXLheAQqPbYUVDxCTk62aapyqQIs6eEkdCQabJNJ52WbUoBB8YBoTWC\nUkARkuEQuQ4v0YNJjJ46lYhCzu5FlwRcQokLtjMsufrxh/bYoIt1eigZTj6Ueo4AecohJ2lLFJdQ\nZXxnnmQ1yh3pAD6yhMUMQUuOsCMJFQNtXcJbLpMJBth1BBm4uErAmSV/wk0qGKBgc9NTTKDYVQJy\nhvO8hIjOHmFUZHLjPgR0mljo967jsxYJVbKIhkHa6mebTgp4EIAkEbzksVHDQZWsESCn+Ticvc0h\naYZ1/yVs1Kg7LFx0nNqvvaljiAJdoTX0MYGMFCDSv0NYTGKzaLilHKJDw3moQCVio1jx4LYVMCTQ\nVYlq3kmhEmiNPjf4B9L0HFphyLOIhsCO3sGm1EXN4kCJ1IgHNxjyLJAijPRIiDOPWOhmg8vpLv7x\n730/I/hHN7bhkb/aBbxnTAaCxA8X6D+QwvnSVboKKUbX5+mr3aGRSaOnW4CbocWoZVrw3gQUWqza\nBF6Re8Bt0AJhk11L3JNKTBP2j5H2X60ly9aNr85oaCQZJkmPApaOMJNrdoRCld5IkMb5PMuzYRK3\nvbT+sCrvT+vjnZP+K9+11ffLtP8LMGsYxr9t2/ZV4BeBfw78AvCV73IcAAOX1tgeDPGmcLJVgNfQ\nmDMOMMwiT6tfZW7pMMvWYRaiw7yWfZAMfvqVFbrEBKP6IuOVRXIOF4tSP6/xEBkC2Jw1hg7dQRAM\nutnkILfpZY2GqLDp7OJa5Rjbe6fgDYVIdAd/LL1faHYdu17FaAjsCWGuKMcZNJaIk2CXVcLCHnZr\nlXrMinRbQ05oCG6Du4/1M/fgEOe0N/CToyS6eF04SVWwYzcqfDb6afxk+QhfJ02ALD7KOHBvVPAb\nBW4FDnCp/zQuo8rA0iqGHdIEeY4nsLlrdLs3+Uj3N+id38J3uwwaDLNIUEjifqNA+oCX5U92s8wA\n8WKSBzOXeCt8GEE2OM9LfJsnWKGfICkkNFRkSrjQrQKH9Bl6Mglko8meJcgME1QER6t6EFE26Mav\n5ji4NU/F6SZjDxDcyNNvXcfqr6IiMccBvslHKOJGR8RBmVHfAgO+RWbHx+likx7Wmeq4Shkn2+5O\nOn5mg0S+m3LehV2uYJEaePQCUlVt+Wt0G4hpnbhng/Oh51BosqwNkGh00VCsyDYVR08eUVDRkVBo\nvl2NPsIuTwSf4R9/nwP4RzW2fyzMIiJKdiz1bo48dpenf3mR2MobVF9IsfsCLNECVActVmw685kO\nfCr3gLhKS02UaQG1CcA6UN9vawK8uP/d1L3hnoRitqnu9yXvf19sgnhjD++NZ3mSZ5FPhyj89hm+\n/J96SM/00rBV0NUSNH58Fy6/H5e/c8CngduCIFynNUH+I1oD+s8EQfhlYA345PfqY2c8yrw4hI1a\nq+SVAR8svEAXGzisRU6MXkCQDSzU8bqyrNQG+G+7n+Gs7zWqVgduZ4mi5GSDbuYZYY4DVFUHVwvH\nidm2sDnrLDBCgjgKDT4t/zGPOF9mXh6Fx0U2M71Mv34Muaky4zrGq52PsyZ3E3euY3E06NY26GCH\nYekuTWS23VGeOfIhjvZf40TiCpHLWURdx1JRcU/X8FoqGB0WigEPglUnShJdE9kQurkiHcdDgSHu\nUsXO8kAPumEgiOCijD1ao/xRC5mQDwOB41yhhh0VmUWGW0zVv4oehPVIF1dcR7H+3Qbd7g3ibHKT\nw9y2h6iGbZSsThyU2CVMF5u4KFHBQSfbVLFxgXP8Ab+Ew1Lh4fDrjGtzTJbmqTtsZCQfZVz4yRJj\niyF5gds9Y+xIUUJSinK/lazYxQwTpAixzACbdOGixChzPMmzNLAgYvABnuMVHuYax+hmgwBphlnk\nMDdJOLrIWAOcU15DwGCJYW7rU6S2QUxrdJ9eQe/Weab0QUZt8zQlBY+1QG43BDo4O/M4hApB0vSy\nioSOlTouSuTx/pUG/w9jbL//TcL5iR76zlr5xO/8AYGvLlC6mWJrsfC2bAEtoLDQAk7zs8mO29/d\ntOQNU8s2GbWFFjDrtACZ/e2m/v1u0Da3u/a/G/t96fvvFlqA35gvUP97b/Hh1VWm+g7w57/1cVZf\nq1L5/Do/rh4n34/3yBvcu6fvtse/n5NUeuw0BIUaNna1CFXVzhQ38Ak5NMHgAdvrlGQnBcHDUcsN\nLLrGfHWcPcJMixOoFolUJcKSOsht6RBRSxILDUqCi6Lgosa9eo+ioOEXsmTxgQ18vRmSUgfp3TBB\nKS2ZN9kAACAASURBVAWygSZKnBIv0yWsoyGREQLYjVYI9g5RZi3jXI4cR4nU8AUzJMsV1sPd5PCS\nl71YpAY10YohCK1MfLqdk4UrlCUnTm+pVeEckaLgIeGLUcCNe796us1SRwgb+Gw5QqQQMbBSR0dk\nkWGizQyD2VXUVdDGQDhiYOlq4tIrBDM5wq40eYuHptx6AM3hJ0WIAFlEdCo4mN8eI9v0sxWLsSCO\noAsiTmsr7W1ETZHFTxEXGhL9rDCgL9NtbLDkHiTQyBAr7mBzVkkpAZJE2aaTLSNGQfdwULzNhDCD\njRoWmvjIcpTrbBFjixgVHG8XVTjINAElja60ApkqONAkiXBgh1rJgi6JjHTeoeRwcSV9knhoi6hz\nhyPiDRalMZooDAgLiIJOkig1bDSR0ZBZoR8bf7Xgmh/G2H7/WoSAS+Tc6JuIkSz2ssSQfgHj7jY7\nd1sM15Qr2kGTtu0mMJss2wRvUxqR2l6mdKK3tYV7EonwrvOY7NvWth3uwbB5brINlBd2CLFDqDfN\narmPsViT2qkCF2ZOkS1pQPKvfLfeS3Z/KtdENCLs8RYneUM9y1J9EJ8rx1HZQ0hL89jeqySlCM/Z\nH+GjfJ3Hrc/zbORJtoixYIzwlnCCxdw4O8UYOJr8bf9/5ojrOpuBOKJhoBitZP9dwiZF3HyFp3lJ\nO890c5LD1pvkvAHkUZWRyAxjjhn6WeEj9W+gI/EFPs5F6Qw2agRJM88oa0YvGiJpAtwIHCb3ER85\n/Eho3JkaIocTAR07ZfJGJ8vaAL+a/APs1goz3lalmyJuykaeBUZYYhA7VZoouGpVnFsNDkZmqVst\nzHGAIGkcVFhikJHCCsZNaH4WIp/a5sx4jb75LVy1Ks2AxJHBWzQVETcFlhnkhnCE1znHQW7jJU/a\nCPH1mz/JZrGbyY9cw+JoIKGxQTertl7qWGkaFkRDJyLs8tPGFxjRFgk209itNWylBqHdPKkuD5ty\n7G05wtAF1KbMI8rL9EmrfJmPMcYsEZJIaEwZV5FRucwpppmkiIcqTkqCkxQhCrhpGBYycpCegWWC\ng0lyhpeD3CSR6uWt5IPY3XUGnUt0scnL0SIlXBznCnuEuWCcpYnCLhFyghcRnU/zx/dl+P7YmQAY\n4wxERP7VZ36H3VeXufC7LRmk5VndYrIK9ySP72amZGHq2CYQN/dfJnAr+21M03gnwLPftv6uY5T9\n62gHbbjHxsX9/VZasZX1tS3O/8+/w5FPg/VXhvm5f/arXC01QEj+WMXn3BfQvsMYAB4KxORtdsUo\nF8SzOClxVLwOwQaSUCNOghkmmKlP8kz+o2hucNvy9LKG7Ndx23KsNXqoCHZA4DSXObC1yIHcApv9\n3Sw5BlughMKoNE+vsMpD4mts2HtohhS26zHymoctdwyHUiVAGguNtxlikDRBUkxUZhlOrPBq8Bwv\nBh+liwS9rBGnlZFvmknW6CVBnI1CH7lMACVg0ONcpYFMHi97hNmmk8cKr+CixC3POBNX5xnfm8MW\nqyOjEiJFiBQ5fFRwMMVVIgNblD5sw2arE+oo4ZtuYLvegBBIPTrxmSS6RYCIwXY4juqQ+BDPsEIf\nb2onWVKHSGzHceVLjOlzlHBSwEMdK2UcePUCn67/N6xyHVUWGdZa9TOXLANcFafosWzxmOtVvNUK\nR6uzRNQ8F/3HaezZuHbpNNVTTtReufWkg5s3OcUX+Wm2FrspFr3YJwoUSj72Kh1c7zjKhGWaKa4y\nyxjrewM0U1Z+ref/QXHVuapOcXX2NBajya8M/nsyLh+bdOGkvH9nQjgpY6dKXbNyu3YQj6WA21Ik\nSZRNuu7H8P3xsmgIHjrFx2Ze5cm1b3L1s0kKe98dGAVagNjOsE2JpF02kbl3vMg72bDOPc27nbmb\nZu4zgb1d41ZoTSB17skqJmC/exJoX/CcfR3sC9v8WvJ/55sTH+ZLYx+GVy/DbvoHuWPvObsvoK0j\nUsVOAQ+GJODQKyyuj9JlSZCMRSg7nOTwUsbJHAdYoR+7UaVuyNiptjRju0BeceMol1FlmSo2XJQI\nGSmsep2r2hS7ehirWGeAZULiHgXRwwDLWJU6XdIaxYIXhSYeoUBVsmEYAiMsYC/WKWluXI4iDrlE\nnE2OG1dYNAZ5k+NsEqeHdWLGFpKhMa1Ocql2mrHkAmE1TdYWZNndi+yovZ3pb7PezXTpEEO7Gwwr\nC8TdCQ4uzjCSWIYIuCgRYRcRHR2RBhZ0RLYDHch2lSHrKp5CGWe21HKCtYKYNfAslyl6nOyGQ2BA\ngCy9rHGbg2zQTdFwowcFZFsDWVTxk0WhSYYAIdKMMs9hbmI3qhRxoiGxK0bYlSLUsFGyONixh/Ev\n5wkJGSyxBmvE6WSbfmMFHznCzRTHyjep2q3kFS+GKqGrMtWKg/y6G0QRt1his9hDj3OdftsKaUIk\njQiybtDAAoZOzbBR02zErAkeCz7HNJNs5rq5sTaF3KPR7W/p41k9wFYjxmaul0h2F6+QozLkZNvW\neT+G74+N2Q+78AxbibrWmRJfpa/8Irevt0DRlDFM9qxzz/tDaevDsr+9yj22DPfA1GTcptsfbf2Y\n4K/ubzNdBWVak8O7wd2y/zL7FvhOaaV9n0TrtyTXQFkrMcbzTIkullw9JB+yk19wU7tV/KvcwveE\n3RfQHmWeWca5zUF26MBaa1B4Icjt8FG+9tRTDLJEFTt3GCNBDL81y9+N/BtmhXGKeAiRYpU+CpIH\nj6eAhE4OP3cZohhzY4vW+HrzoxRUN92WDc5wkTV6eYsTnOAKTRR8Qo4PeL/dWvykgoUGATL06mtY\nEzpSzUDvMXjO9Rg7jg5ywy5GhDucIsyX+RjdbHDGuMiIusDLlUdY2R7kt7/1z5AH6rzw1ENUBQd+\nsowzyy4RUoUINxdPMJM8yjn/q/xW/z/FlSzBFqBBmD00DFbpw0odhSav8SAiOoO2JZ4a+yqDyXWU\n5WoryqBMy2m1DNuBKBd6jtMrrCGhtlwXCWOIIket17n1mEZRd3PXNsgoc3SyTYYAZ7jIeeElGjYJ\nAQURjWlpkhytyewkl9EsMldthzhx6Sayt8HaVCcVwUa8a4OnfuoLjEvTHCpMc2blGpe6pyh6Xfz9\nyr9noW+A53xP8Hsv/kO6x1cYOzDDqxuPsaoOYrHVyOBHDjewhhp8WXyKiuFgTwrz6KEXOStcoJsN\nutngxZUn+D8++0/4xU//Z86feJ4wu/wn7e8wXT1EddfD2rNelEIN19/PkrR13I/h+2NjwV+OcXA8\nyxO//JvYEknmueccZ9ACTlMWadeXndxbRGR/n4V7KaCq79qn8E4t3GTNptbdrm+bk4S4f34r79TC\nzWNNFm2eo9nWB219mCy8AUwDoZmv88vFa3zr9/8Rt2/F2foHcz/4DXyP2H0B7Z47O9jDKqpX4ZnL\nH+K55z9M5YCTta5evln4MBP2GWRFZZsOKjjICn5SQoitRA8WrYkQv0qy2kFdszHmnuWAOEcP6wB0\nixvIqHybJ5AEFV8zzxd2f4YdNUZRdOEvlPC6s+z0dLw985tFE17nHC6hhKejTE21s2AdYrEygk2o\n4XKX0AURCw2i7HBHHeNz2mf4WenzBO1pHva+Qti6h00qc0CY44vaT4MAj0ovYqHBoPsuPz/4//JK\n+TEMBLzksZQapOp+bneMUXQ5yeNhixh+svjJ8GG+0apQI9gpSB7KZQfWvMryoV4capXebAIE8Mbz\njLBAPLmDLdugp7SDPKCzFOwnSZSALQOGQVDI7Es/Tj7OFzmav0V3Mol2VyTR18n0+AFe4lEclJlg\nhioOQnczdL6VxqMXKQft6KLIEHcZLi5hSegsxAa45TiM3iPjceYISmkW7APckg+S9IU5e/oVor5t\nApYMvo48TqWEiwICBnf1YVJaiCnlKgc2FrHP13nr6FGWwoMESbeyI3YHiHwqQUdfggp2/pRPMb19\nBLVkxR/bo+dDa9grVe5oY+xU/oZpfz8WnjQ4+msGscRzxJ6Zw55Kga4i0fLOaF/ks9Ja/KtzT1c2\nzWTBlv02pjeHuZJrMmrr/rupa5seJO1atmmmzGGy/PbFStO7pEFrcjH3mecxJwZTC6ftenXzPLqK\ndXeXyX/5WYJHR9n7d91c/48CqZkfKF3Ne8LuC2h7KkWkpkbcSGCv1CjkPNCto8UF8rqXZQawU0Wj\nBZKtVKFhqqodTVVIEKege1B0lZixRZA0oUYab76I216g7LQzJt0hhxdRhfnmBEJTYFC6i7+Wo9O6\nxVTjGsWyh6CQJepMUZEcrIr96IKAz5enpLu4ph3D3qwT0lI0jFaxYY9a4FzlElvNOE1RIemOErbu\n8pj7eXy9WbSwgJMyAgaGISChtSrX2O4iWTWWOwfx6lms1Cl1OSi63awFu9mxRsjjpbGvwTubFU4W\n3mLV1su8c4RV+kCW6HZvke13I9XU1sj0gttRZGB3FU+xjLXSRChCRvVSxQpAl7SJAVRwvu0ed4K3\nCGgF1JKC926ROaeHaf0QbzVOMirOc8xynRQhPI0yg+V15LBGLuKhhAsbNXxagUg9zdfVD3JBOo0Y\n0JkUpuk0trltmWzJVY4Sk0M33y5C3O9dpoGFIm6aKOTxoRoyXWwy3pwhXM5yV+0jh5ctYkho2EMV\nJkK3sFNlixgXOcOuFsEq1PEFU3h9Oay1Ov5GFrfx/n/U/VFbcAKGz1aZ6tkh+K1LOL61CNwDtXYv\nkHbQNsHZlDXa9W7zOJOlm30I3GPZIu907WsPdzG1abgHxCZ4m/2YE4LKO4HdvBbzs8q9vCZmm3b3\nQQChUiP+rYsE5BSFk6epnI0g4GBvpn36eP/YfQHt5iBkbU5ekx9k6aE+vKf20KwyffIKh8UbbAg9\niOh0s42LEm6KeChQiTtI0MUN8TCiSyNMBlloksNHtLTHw1cvsNzXy8ZonKeEr3CF41xUztDftcAx\nrvMwr+DpSmPXyjxQuog4JyBJOuKIRp9znarFTgMLPnLogohPzvGw6xUOcxNBNFryS83DJ1a+isOo\nkXe7uWGfwC+nGHYs4n6gzLLcT5IOTkmX6WCHCg5GmMdCnSucIDqaoJMdmqLC0if7qOh2/PY0y/Sx\nR4QuNkkRolmxcv72G/TEEqRGgrzIo0x35zkSu8EJ6U1i2SRkAS/Ysw2s602aB6ExLCDXDV72PMIS\n/RzlOgBJolzjGKe5yEneRKbJsq+HRtzGVPQWe84Ic9oBEuk+Ru13CQf2uMsQ4ohBd/c6rvU6ZbuT\nNXop4cLpLTM4scR19TDzzVF6rOtMM8lVpljV+/iM8DkeEl59e9HZRpU4CTK0KraXcOGV8vilLAU8\nXO07ihJvErdsEiBNar90XCfbOClTwM0G3YCAtzuLYOh45AJ3d0fRyxLHuy8wbp3hrfsxgN/HdvjX\nRY7F9wj+xtewbhfRucdW2xcYTVZtMlhTlni3/zR8p84ttrU1vU1UWuBvLhAKbe/mNhN8m9wLc7dy\nL4jHZNimj7eptbcvRAq0FivbQd7Uwmttv1UBeG4ZeTbFQ//qQ7gO9vPsb/wNaH9Pe9X5IIviEIrQ\nwKlVoSHzMdtXmJRuERAy3OIg85VxrubP8LO+P8Rnz3CJMzy+8RLn1MtM9t/CQRWHUUGSNToLSdzV\nCpeHjnMnMMqy0IuITpYAnexwWr7EscYNRhpL7NqClBbddLyUaQ1SGfQ5AfVhGXdfq3ajgEFdsLaq\np2irGLrMc+KjOIQKfcU1vJcKOLuq2I5UGdNFbPUqdr3BqqOPbSmGIBjIqNzKHuGbyad5NP5tOtxb\nHOcKp/W3sBvVVvCQo46rWSJcyLJqGyRlC9PJNj6yuLQq1mqDzWaMJFE62WZoc5kDm4vMTkywHYwz\n3HOXwFcLlNwuNj4Qwxas4CNPpJrB5qiRFoP8We2TqHkr3ZUEn9S+hDuaQ3Fp+PNl8o4AW54AL009\niOYxeFJ8Bslr0JAlvsJT2KnSsbOLfa6BJOsEohkO12/xhnyWVamPjBjgqHidg8YtLDR5vf4Ac7Ux\ncrUQy64h7NR4cf0Jqk0HUdsOH+75KvPGAV4pPkKh6MfnztATWQGgs5CkP7nGpa6T3Kge487SJDsj\nMbzBLFn89LDOIW7TRQJR1tnVI7ymPUgh5SGST3E+/jJO8W+Y9vcy+2EXwV+K0bv1bTqeuYh1q4jS\n0N6OQjQBtt1v2tSc2wNe2hmslXuSh+ly1x5YY5qV7wT1dqA2+zeZubnflFrk/Ws0J4P2EPd2oDeZ\ntMncDVoA3kr8eu/c7G+31jX0zQLW33+T+EGZrt99kvR/3aJ6q/R93dP3it0X0L6iTDHHAQ4wh0/L\nE66nebL+bQ5znYakUBOtJLQekrUoqq5gIFDCRU8hwVTzKn3GIgE9h6I1STdDBFN56jUbtwfG2LTF\n2CWKhQZe8owyzxB3ieh72NQ6gm5QK1nJb3tw2itYVBWhCL7RAmJUY9C2RFoI7ufiMNhudrKnRXne\n+jinucgBY55kM4xVaSC5VBxiGWemipQzKPR4qFss2KhRxM12s5MrxZOcyL7JCPOEXGm8Wok6Vjbo\nJKylCDfThJpZfJY8VupoiHgo4JbLbHjiZBQ/jnoNj7LKeH6O4c0V5oZHKEftuNQCjss1Ct0uln69\nlyBp5LxGRzmD11tEUAzuqGOoVRuuUo1hdYl0wEte82Ev17HKTep+K9tDLVA8yC2qLjtXmOI2BznC\nDeSqip6WyXc4URWBsL5HE4VSxYUnW+aQ/xYhW6pVrEAdx1AFuhsJ9rQIbxqnWC0OYNRFRNUgoXcx\nUz/I5ew5SEn0GktEgtsECxk60rt4SmV2tA6miwe5sXICLS4QC25goUEXm4TZY4BlgnqaVb2P6/pR\nXGKRkLhLXEig8f7VJX+kFg3hGbUyeThH/J/fwfPM/Dv8ottlkXbZwgRtE8jb/aFNADWZerskAvcA\n1IyWhHemZjWB+N0pW81rMdub10Db9nYz97e/3h3MYy5Etj81vK271zWUr92lSw1x+LdOcXXYS3Xb\nCnvvH3fA+wLaaYI0sLBFDJcrz8OW5xnLLNBbTlB1WfDb88Scmxy1XeaSdJI4CR7neTp7tpB1FY9U\nRKaJtdagO7ODvKrTbNY43/0Skk3FSZkprtLNBhIaL3GeLUuMCWWWAW2Z+oSFmz1jTL65QGgji+A2\nOFt4k2LSSabHxbbQyTadqEi8qD/GnH6AgJHhJG9Sidi48nPHkRUVj62AVagxMr/M4FurdH9qE5uz\nyi4RkkTpCywz7FjkkTuv4syWmD48yi1biDxeKtj5YP0F/FqejM+NVaqg0OQyp+hjlZAzzYVjZ3iw\nfImPZp5lOjiCLVzDplU547jIDmHSQogeyw6ibCDSKjMmGjpoLTmiS9nkQc9riE4Dh17hi/wEhgzd\neoIzjquggINKK2EWCkk66GKDMg4Umkwwi6cvx3pnB9tSJw3ZgiSrbAkxwttpfumFP2L60RGMHonD\nxWkmHXdo+hQe8LzBK8bD3DUGeOjg84ywgEcocNcyxG45Ck0JFKgqdqoNB8dv30R0aPz5wae5rUyQ\nLQXAD7pFxE6VLjbZJUIdCxPMEFJTOPUypy2X2BxJIOkad6wHiPyYRbr9UEwU4JFTRJyrPPqL/wDn\nXhqZluRgygrtYGgCcbtsYTJg07XP1Lgb3PP4cHBPUzbz65lAbPZvgrUJnvX9PtqZvOn3bU4q+v45\n26UZ9rc3uTfRmC6H5j5TQjFlFhvvDGI3Wbrp3TLwyg1idxJsPfS77DzQDV/65n/nxr537L6AdpA0\nIjpDLFIU3aQsEXbcIWRqiBaNsLjLiLhAWXAwbNwlqKeRBI1VZzfzDHFLmGREWqDXto7DV6fZr5DV\nfSxb+wCDYRbZoBsrdfpYxUOBsugkocUZyq/QlG3cCY/y8sDj+EM5jlmvciCxQHXNwRvd5xAw3i5C\nELMmaBoKLqFE1Nghrm5jK+mINR2bWEMKquRjXp498zgpjw8veeJqghPJa4g1sIgNPP4ct5qH+C83\nf4Vgzy4+fwYPeaqyFbUm4U5UiUe2yQWWkVER0alLFrrtG4SEJI58kZEby+AwSEe9+Ofz5Px+5mJx\ndj/dQcblZ50uJpmmabeQjQaw2aqcVi/jLNfRrQY5i4dFcYiMECCt+Um5fVjkKkHS7BImVM3Sl04g\n3dHwdRaJ9e8w+cYddv1h/vTEJ8kQoId1HuD1VtpXZxZ/bw7VqXBHHOWC/QFQdI5J12hICtliELEp\n8qj7RWqyjWVhgDxeYs5Nzkefw6fmsDhr+OU0ck8dn5xjSrzCphBH9uqcH3sRh7tMkD262OQWh6hj\nI0QKb76E3AR/JEvO6gPAThXjb5j2u6wDwRjj6dnXOcor2Na3EQ39HezZXFg0GbMpS5iLhSbwmmzZ\nZNrtkoipf5sShr2tjVngwJQ8xLbzmWzYPKfAd8og5nWxv89MOgXvfAqw7W8ztfL26ExT7zYXW81o\nS7O9CEiVGs71bX726h8xYDzEF3kUmOH9EPJ+X0C7X1ulR99gTJplRp9gTptgxjlGUXQQ2s9K19nc\nQavNcMh6A1lWmWeULUsHCeK8xoM0BAuSRcOr5Fn2DLDMAHnRyxFu0MM6a/SSIkSMBBF2SROkrlsR\n0wIyBoYqczN4COIGDR94c3lqDRvTTDLOLJ1soyFx1HqDGNstTwq9iFstYStoyBUNRWyCE7Z7Org1\nMk6GAAMs02Os01tcxV0uIygGyd4AK5Ve3rx9mu7gCiOuOTrlbWoWhXLdTmwmTVzcphJoDb0CHhRV\n5XD1Nn4lQ15003lll9KgjVyXG998Cb1DJjEY5+5HB9kxOikZLoKkEawGt8MBXFqJofIKD6Yvo3s1\nloVetq0dracAIcqb0hQRMQkYZPHTvbfD6J1luAGOQ2V8XVkiKxlWav3c5DAqMtH6Lh3VXQ445rB5\nG5QnHSS9Ua7IU7wmP8hP8ReMsMA0k6iqTEczyZhxh0VjmLphI1JP4ZGLqGGJXtbQEWhiId3nw6Xm\nGW/OclWawu0uMuaefUcyKDMFrIsSekOi2bC+HZBkIGChgXafsjC8X8zvkhgMW/jI8tdbgTO8s3KM\nyXhNwDVZJ7wTLNslFJNxm9YefGNOAia7btIKJ2gPyjFBVW07xmxv5hsxE0C1LzKqbe/tboKmHGL/\nLr/fjJo0+2jX683f1s640VXOzXyZsLPESv9ZVnYlsuW/5Aa/R+y+jPqD1Rk6K3vgafJS/Qm+VXqK\nXNDHAzaDKEluc5BAPsdPr3yFVwfPsuWP4qDSYlnk8ZKnl1X69DWijV2ebz7OG8I5/ifHfyQmbSGj\n8igvYqOGgIGfLA4qSJqOfbdKKJnmE8KX+cChF5nzDHNROEniVBTJ0AiIGeIk6GSbAh6clLBSY5Fh\nkkKEu/YBrg1M4dCrhNhDVlQkSeU4V8jRytS3IXdR6XPg0ws4hTJFi4sOxzafOP0nvFw7z1qxjw/4\nn21p9RUXxkoGT0+eABmWGcBGlWhlj9GZJbY7okwrvXjm38JlKWE5XEUpaFQ9dpJEWGGALWKouox7\nfyHuAmdZqfUzlbvB6Z1rWA0NFJmsJUBB8LDTjPFc9kMMORc54r7GQW7jm87BS8AkiF0GTbfMlY8f\npqxY+SDPECLFwN4aHbNpaoftFMJO5sN9XJJPcoMjlHGyTg8GAjtEGXHfoc9YIyd5GRIWmajN4lmv\n8nXvh/lGx5PoiATIYKPKVY6xKvXSKW5jCAJpgnyVp/kYX8ZDnhUGkFCxUWsVwwh7aBgWItIuo8yj\nIXGJU3gp3I/h+z4xkQfGLvIvfu53WP6v26zdeOein8mwTemgSQsQzYx87YuQ5qtdZjBB0ATsEq0C\nCGa2vXYvDfM87YuUZjCMOQGYHh71/XM4eWcZA9ONz847mTbcY+bt3yv7fZkBOqaMYl6Xre331bm3\nkLkAhIcv8ce/8Bl+63MP8o1rvbzXswPeF9CuKxZu2idJSX7KFjtnna9RluxsEufAfsSeYlNZiAxS\ntVrZrUS5vXeEB0MvE3ElyRBAQKcuWMnIAVYXB1nLDXB96hhXOUGl4SLm3qA2a6e+YGfq4TfRwiJZ\nyU+kO0W/to4/kWNPDpC0RlgUhvG5c/sgUiN0N0u4mUEdlrkgnOHN5mmmK4c5Ub+OTWyyFYwRlzfx\nGVmcehnXZgV7ok7dbyMT9pIMhpm2TVKgVf7qOFeISxuclV9jTeoBwEkZFYVtXwe5k0GUzhoqEjG2\n8OyWiWb2cPqKeN0WdMNAGWlSi9vIOt3UpxwsegbYoYNhFjnCDdxCcd+1sMF5XmKt2cesNMYrsbO4\n3SXWrV0sCsOt/tUyV3JnOCZd47jlCsPJZcLFTOtfUwCjLKBKMvmQBwt1BlnCS45IIov12SYRIUXp\nsIu3wlMgGG9LUJulHna0OC53jqZsYZl+GijESTDACqe5xigLbNCJgUBXc4t4fZs/Kv4cDavMZOAm\n/SzTNGQuGae5LJyiS9hARWaTLiR0/OSwWWr4czkO3Zil3iWzFu8hQ+Bvco+YZhWxfbwfJZqj8toi\nlVQLIJ3c04HhO934hLb39ix77X7bJlC3s2sTLE29ur3yTHtEowmsats54J5roekLLvFORq3zne6H\nJowabe3anxbMfsw27Rq4OZG8O4oSWtp4MVWi8MYi0kM/gW20j9oXVqH53gXu+wLaOcXLG9bTZPET\nUlI8Yf8Wz/Ike0TYoItJZii6XLzqPEM/q1gzTd7aO82wax6PM0/JcFEV7KTEMHaxSiYTpJGw88LB\nx8gaIQoVH92OZUqrHtSLVsRDKkqgTloJ0tW/iSypeBoVLjlPckE5zSJD2KnQyQ4SGsqOiq9coBKz\ns2A9wEvN8xSKQSoVD5IMTZ+CJGv4jSwxdQv3ehXlKjTHZCSbym4wyDwjzBgT5HQfMXGL4+pVAvUc\nq9JFKrIDn5GDClSsTjYeCOAXswTVNAO1FcKpLK5SmdK4FZdSIFRMY5uqkw77SLmD7JyMskIvgHMX\n7AAAIABJREFUBbw8ykscFm4SEXYp4gLgcZ7ninCCeeco34g9SUTYpYSLLWIc4QZ+I49fzTGk32Wq\neRV/qozN2UAbEqmU7NSaVgwEVBR8ap5uNUFdUWhWZOoJC65khXrOxhvBc7iMMr3CGr3iGs9nPsRu\no4PjzjfIiT429S5mGxN0y+tMSdcYdK0TsyU4ywWmmSSi7zFUX2Ej28euK4gnkOUIN/CRI2f4uCIc\nZ5cIvayRJkQDC/Z9f+9wJc3w3WVWnN0U4610vJt034/h+x43GUl20PeQA2fBws3fvZdAyWSy7aHk\nZh7s9uAUE4RNTxITbNt17O+VprUdaHXuFUcw5RGzYk076LeHtJtPACazb3frM609j0k7eLebmdjK\nTCnbHoRjRlqackt7OlgDyGxC6gvg+B0LPSNO7n7Zid40vc3fe3ZfQFuuGdgdVY7zVqtWI4OE2aOI\nm9d4iDo2BAzShDinXaDTuU1uzMND1pcZMRZ4SH2VeWmUJWmQHTroPLqJMW6waBvEIlbpcmbJSV68\n5wp4Jzb5uuMjDFSWOOm+zAIjrEQHwC3wuuscq/RSwcH6fpa+FGGOTlxnLDdLz+o2R2K32AzEWbP0\nkdBCXBaOYVOq7BHiKlP49RwevYpqkdjpD7LeESNBnDw+smqAzXqcWds4fdkNji/c5OcCf04zIGLz\nF7HMGqgNmfwJJ7oFrMUmwdtFChEni2N9bNs76NvaZGRnCTFi4AyUCZJilzAiGh4KdLNBlCQG8DoP\nUMLNKPM87fwSc4zxJ/wtTnGZMHtESaIh0bDLTAxcpyQ7eE16kNGRRXo6E9irda5aDiF4NByUaaIg\n5w0CySJvdJ9EOyYy9H8t4fKXWLH18FLlPIYqMCIt8pPuL+HbyZMtBwl0ZbHLFdK1MG8kHsbtr1AP\nWLgRniAubuInQxY/d5UBBI+ObtUISruESPNNPsI6PbjEIl7yKDQp4GGYRUq4uMERelmjK7RB5QMK\nbmeOHtbxUGSUeV6/HwP4PW1BrNUufvVf/yHj6kU2eWfZLnOR8N3eGCb7NBcOzYx+JkA32/p5twue\nyaxNOcME5fZlYdMLpJ0ZvxuQTUZsLny2+2mzfw3tlWuctGDUlD1MzxP9XX2ZUNsepPPuzIDtTNys\nYflTv/c5JqQl/kn956mx8f+R9+ZBktzXfecnz7qy7uqq6vvunqPnPnFxAII3SECiRMoSLdO7luSV\ndjekXcd619rYiN2wFdbasV7/YVtrK7w6vJJFSSRFUgRBkCAADoEBMPc93dN3V19V1XXfee0fNYnO\naVIWJUoD2HoRFejOyvxlVeM33/fy+77vPd6vSclHU1xjPYlXbzCSyyA1LYJCE3+6ybY/SQ2NOxyg\nia/bZU7QGFTW+IDnNfZtzxExyhSSEdJCNyr20iIRztNjbyOaBhUxBAL02uvUAxpZOUnWTtIvZ/DQ\n4Q4HyJKiLfjw0GKEZTRqbNCLhcghbpKgiK1I1MJ+ml4vPUKeJ3mDcXOJkF1BUTs08WEJAnk5jjmo\nIHUs5EsmvfdzMCpTHIwT8lZAtjkk3ET1tMkk+ujdyRIo1DHiAtJtG9sQCAzVqCb86KqM0SMgxgw0\npUbvZpbIZgWpZkMCmpKPelujf2mbA/45zCGZGAUEbOpGgNHLa2AL9B3aZMcTxi/XmWKWXjbQqBGh\nxN2dg1TqEdakQZLhLE3Nx44WJS4W8XnbCEGTqqyxQ4wyYfrtbQQLbnKYOf84gd46cV8B0TL52ebv\ncV06jKp0umX7IYumorIiDtHPOgGpxlTwHq2Mj7eXHid/IMF0YJYk2wSpIos6OTNBs+CnbES55j+J\nGmlS7kSpbMfJyBIdzUd/YpVDwk1iFBhjkRGWaahdBVCAGio6PWSZb0w/iu37vrb+IxWOPTNP/Ov3\nYHn93UjW3VXPSRg6L/j+pKOb9nD39nBoCAd8HeB1l487QOlUJLobRrnL0h2wdicVHZB21nUA2H2d\nu8TdnWR0rnNz127H4Y6wzT3r7HUcIiCtrJMev8eHfnmeq6+0WL/x/X/v94M9EtD+WuU5Ph59CWPb\nQ7yQY0pcwIxAxF+kSpCX+QgFYqSFLSpSCIAp7pNezNNpq2zG+0hJW6T0LEk9R16Jk1WShOQKi/YE\nJTvMjHCL2dY+1qvDJBNZop4iHVtlzp5mrr2PTsXPp9UvcEy5TII8X+V5FFPnp4w/ZKi6Ts3W2Bjs\nYVUfxKzLfMr+OgONTdqmF8FnkpMSGIJMVklSGQ3h87WY+vUl4lKZ+LkyekxC0EyG5RV8NCmEo1wP\n7cf3eovAZh2xIdDJq1iCiFQwsTSZdtgDo+DrNOnPV/AuZui0VOqeAD6jSdUMkdVT7J+fR4jPYg9a\nBKnSQaFuBTh65QZBGpgTEtfkQxSkGJ/gRVR0SkIEBZ07pQnuZ/dRUiNMyPcRNYsyIZq2D8nOE7Sr\n5EiwxiAtvHRUhXIwzJo8wOudcyxUJ+iX1/kx+U/4x8L/zh/4PsM9ZZoCMVphlarHz+3OIQxRZlRc\nYr/3Ftc2TnB5/Qy1ET+mLGEYMjFvAa/Uom4G0Le95Fpp2mE/J/wX8FQ75OfT5K1eGmmNeCJLmDIn\njMs8136RBXWUZaVb9p8ki0oHP02yzdSj2L7vU+vGxmMH8jz/c/dpXc+zdn83weeAplv+5lAWznE3\naMIuR+yOzN2RrFvu5wCn7rrW+Rl2gd1xFG5Kxu0A3OXvzud0N6FyinKcxlDO+w4FBA/L+dzUh7vo\nxl316azrdA50EqgbgDyS48d+4TuUN6ZYv5Hg/Tjl/ZGA9ubXBnjz5x6jNqHR0T0UhShntTfx0qJI\nlDRbHOUaz/Dqg0d/odutbrVKrFTm6NRtVG8bqW4RW6wxNwrtYQ8RSjyhXwBD4JLnOB83X+a/NX6T\nLeJkhD4W7HHytTgmAonkJgeU20wzi4XIIGtE62VOZa6zGu9nMTyEJlbYutvP9fIx/r+Tn+Ox6AWi\nFLkkneA+k5hIPM9X8NLEjIgYPwcL4hC3ew7QF84QooKBzBZpciSoEEYPKLQHFIr7NZamR2kIARLR\nHC2vB09dZ2JhGe9qC6liISRgdnCS5dQgT7XfwkKk7vNz7exBLEVEo0rAriNiIsjwzqdOsE2SQijG\nTXmGXjb5jPVHnBef4hpHWaefj/X9Kc/Hvsxv2L9I1pfgOkfoIUtazJGUsswLEzTw0cc6MQrU/H5e\nVR/naeVVxLbBvxF/iT5hHVXqcMF/morYHahwhwMUbyQwV3xUJ1QK0z2AyOZXBwmNlDjzifMcD1/m\n7MIl+lc3+frpjyBGTaJqkcHpJfZbN3lcfpOcN8EV4TjSZBPrTQ9WW6RzTOUV4VmqhTB/78bv0pn2\nUR4MYyIxxxQ7xFlmhHCo+Ci27/vUFOAwge9com/xDUpzFUx2+33ALmCbdKHHabsKDytJnCjX6dXh\n1ks7FItbe723uZPzaZz7uqN8516K6/w2uw7AWc9RczhPBe6uIG7H4ejHnfPdHLW705+bJpHpdjN0\nKB33+s6xxoPPIVwpEPuvLuBZPAUcAq7xsDt67+2RgHax1MPC1hRaok7eE2ehM0GlHqZHzYHffLdI\nokqQDfoQsIlQoj7sQ0yYFD0x1pV+ZMnktH0ZBQMJkwR5BlhHFkw2hTSD3gyH7Dv45RGCZpUevQCi\ngK6rDNUynA69Q0CqsUpX0eEVW4S8Jdr+EQreCDY2fdo6mAJj1WUq4RAb/jQFYnhoo9ImRw8SFiFP\nhbnpCXaEOHk5xjYJgtRIkEelgwDEKEDapGF7qMf8eENtFMvAo7aQBJ2O5OWGdohEIk9UK2KlRGzZ\nRipafMn3AoJoEOqUSC/k6IQUKiGNBn5ELFqil/JAEFowUlxDM7qJ1UF5i/HQEhnfIHfZz1BmjaPV\na9SnfQTuN0nls4indIK5GsaWytrMIEqoTb+ZIVytYzQVWi0vwxsrVP0hJifuMyitIYs6C+IYAhZJ\nsvhosp5YR7AgFd2m45Fo4iXZt82B4ZscS1/mcPM2mtSgFgkw1VxA8BoIPpPJ0CwKOj5qhJEZ8S7x\neOo84YkGrbaXlcVxGqkAw+oauWiMe55pbnGQEFW2SLNJmhpBwkr5UWzf96XJfpvRj1bpL+VpvZp/\nNxJ+qGSbhyfJwG6JtxORK65znNFezrXOy0nyucvXPeyC7N7iGLdaxR3hOtfuBR13Obo7QnZA2MOu\nXM/dObDFbjTvpkfcL8ec4Q0ddhUu8DAN0wLsYof6W3n6PphnMlRl6SUb430WbD8S0K5HguSXe9G1\nW1iSRKUS5uXWJ0hqW0z47xKhhIBNhRBrDJJim0/wIo0zKhVS3BQOcUF4DL/UYt/ALHpQxkRCQact\nq3Qkm7SwieatUFH9bNBHol3g8c5FjopX0UoNxjbXqE8qLEaGqZoaDcVP2RtkM9WD4RERMamhcXzy\nIs9Wv825xQt8S3iGS/7j2Ajs4x5JsiwyhomMKUjMKVOIWCjovMxzyBic5h3GWSDODhGhhDVoU0br\ndiZsF9DMOoZsI9oG6+oAXx1/homJefZbd7EMkb67WTwZg38886uk5U0+1/h9pl5ZoDQU5trUDFU7\nhC7IbJHCRmC0ucJjm5dRmh1UW0f2GJzuu4whSryhPoF6x2RiY5lfGvsNPNcMxOsCm1MJoosVuCZR\nH9AIyQaRRoXRwjrhYhUlb8AbsDG+zNmjb9Gj5wg2qjQsPzGK9Mmb2B7QTyiMsMAhbvI2Z9gmxdMv\nvMZx6woH2vcYqmxyMXmC66MzPLf9MlKjw5J3gH57nSxJ5sTpbn8ReZG0tsn42UXmNvfzr6/+Cj3e\nLJ0+mRtHDnBVPMp9JhlhmR3i3QHJNKk9UM/8TTSvpvP4568xtThL7tUumDng5u4xsrelqgPazsAD\nB2CdKsO9rVJhF+DcXf787A4/cNMpbirF0XC7o2GJXSliw7WmA+juCNh5T3Edd8sInc/pOBWH2nFL\nFd2TbRyAdlNC7s6DwoPPlAOmPzULw37Wz3v+8wVtQRBE4BKQsW37eUEQosAXgGFgGfisbds/OPQJ\ngZGQyClJRtRFDsvXmbcmUSSdfjKodNCoEaXIOAv4aVAmzETNQrEMSqEocWGHiLfEdl8MXRFR0Flj\nkO8IH2RD6GWYFc4WL2Hl6vyR8TmEiMGz2rd57Ctvk76egyJ4P2Mw0rdBOH+e7Eyai77T/Hzmd/jb\nfb/FkchVdoiTIE+8XUTeNBADFi28zDFJmBLTzBKmTIEYOXoYZYkYBWxgkFUEIEyZOgFqdGVpw6zQ\nwM87nKbj86DZdUbFBU5vXMHbMjGHZKpqkFbdx8TtZeSAzuapFL3BDUbVJfrtdbyn2/R7twjma/ia\nLV73P8nvJj9PkiyaVuOlsY9xwrzMkeINZhZn8W91GIuu8sKJryKdafO99lkygT58H2yjnaxBwmY6\ntsBo7xo/nf1j5PMGvpsN7v7MJLH+MgeFWRiHdN8WT1uvMXVtkfh8ETFnoUg6i2Mj/MmHP8kR5TpJ\nsmyRZohV0mxygkscKM2RbuSoh1U2vT3ck6ZoJPx0RIVNO83V+jH6pA0+4P8uNTTumfu4oh9D1XUm\nvPP801P/gLdCZ7jYOMP5rWf5SM83OB3+PVYYZoxFRCzyJNjiR59c8yPt6/fMFLxli2f/rzcYqd1l\ngV2AdtQWDog7PLA7Cne3UHWrQ9ySwL1yOafgxj0ibK9DcKJtt8zPza27ZYZurt29jjtyd+vJ3aXt\nzv3c1I5bS+42N5furO3uf+J8V7ccEeDI71yh19/ka9UP03hXlPj+sL9IpP3LwB26hVAA/wvwbdu2\n/5kgCP8z8I8eHPs+2z96k+OJy/Qrq0za90mb23zDa5OR+smToJdNAMpWmMJcAhsBccpg2+ynbXi4\nbswgyBY9Uo6LgeMUiVIiipcWeSGBZUr0Nbbx6m1KagRDEql7wtzzTBKJlKEfBuMZyqEwsmwwIG0S\nFUqEpRI+X4eYVEBH4SrHOMAdUmqWfE+Etl/BR4MYBQxkyu0w45tLNI1tWh4vI9El1sV+Lpqn0H0q\nPXKOIFUC1FB0E6slU/LGqCgaCfIU5Shqu020WMX/Tgv/dosTJ64T7C8T85QRPRZCyCYQqXNQvkNM\n3KGjqlzed4x+Y5Opxjychz7fFofP3iYYL1PxB5lTpjgyfw3PQgcWbcqpMB2/ypiwQD0dYKcZI7Ra\nJx+NszmQYpgV2mmFti0z6l2m5fdQjIXx7HRQq230gszs6CSr/X2IWPi9dQKhGoYhE98pYpVlDjZm\nSQeyeOQmEiYxCjTxscYQkgRtyUfS3qJte6maQfzFJqq3gyfcpkfMgQCz5jTZzTQbQh87iQSWKNLj\nyxP0lbEF0BsyqtomLW6yrzhL6m6ejaE0zV4fE+2LXJMP/+V3/l/Bvn7PbLAHeyRCZ/6LGDv5hyJU\nt47anXhzABUermLcqzJx89R7ddMOuLmLZcQ91zjOw2BXI+5WdTjab+e1l8bYq8N2F9E4fUicqNxN\n7Tjg6wZwJ/J2HIy7qtNxBM53wvWzDei3c+jxATizH5Z2ILPB+8V+KNAWBGEA+ATwa8D/+ODwC8C5\nBz//DvAaf8bmPnfw2/xy8F92BxxUm+hVP2/JZ7kqHWWVIZ7gDXQUclaSi68+TgsvkxN3WBJHKApR\n1JZO0FshrWyRo4dFYYwSEY5xlX3MctC4w7mdN6kENG6PT3GCtyjYUTq2h1c/9RQFQnxYKHOXabRW\ni2DyBp5gm7OeC7ww8hV0S+aifoqvCc+DCNFQkY0TMlX89JCnnw0qhFloTvIz1/+IgcYGUtTEnIbf\n8Jzh33d+kXOpbzEgZ/Dare7k9vY2sVyN30/+JJYi8ln+kDJh5IbNxOIq0qsm9iz8ePFrcAaaBzws\nzfQTMmr0NEscCVynJXrIKP1cGHiME63rjG8sIn7D4qR4hWPadbaPx7jhP4iNwPF3brDv8gK0IHOk\nl8yRNCodKoTwVZp8+Mp3eWXfOa7GDhGliJA22ImHUao6xb4Qm08mmX5pntByjbro5zufeYrlsWHC\nVgnfTJPc4SgtvBx94w6DtQx/p/of+Y7yJLflg6i0300qf41PkQ5vcdp3iZ/a+RKKbaLKBs8uvI4c\n73A3Ms4R33W+Zz/Jl9qfpnYnRtBfYai/O+nHskReMj5GVkoy4l/i3NDr9JBDvmPx7Be+y+8991Nk\negb5TPmr1AM/Gj3yo+7r98rkI72In57h6r8I09rs0g0O+DovB6Tccj93BaEDlA6/6wYsd2LPAXan\nPNyhRBx+2w3sTvTsALaTcHQif3ck7BS6OBSNc73tet+J1Duul9NxEB7m7x1nguuY0zfcGYjgLt13\n/h6OltzpduhE4bd1WOgJI/69U0h/dB3zPzfQBv5v4H8Cwq5jKdu2twFs294SBCH5Z138WulZKsEg\n08wx7lskKpfYkpNYdFtxLjIGQNUOUr3hISrsMGnPYfkFhIpAYSVJKSITilaI+ovsE+7RxEcfG5iI\nbMhplnsGKMhRFhmjSpCp6gInytcwwgKWT2BNGeQyJ6gqIW6EDjHdus9Ic5mw3MC+J3Jm5xr/RPs/\neG38SX6z9+fpZZMkWUJUWGOQHD2Yfpk/OPUTnCu/wdnKRcQ78InoS/SPbbIjamyS4lWeIWVu49VX\nwICm7aNIhC1SeGjjMxoIVZvKJwO0PyujRWuomDSqAW7HDlJRQ3RkDxmxjwR5+thghGVUpclscoy+\n/26DjqCSGeunE1booNJDDs/BdndHb8NgIEOkXaDtUSkTphoO0jijkAptsB8ZLy2CGw2Ss0XU2wbx\nQomA3sRvNzEmBeyTBh9rfYvWmz7EbYv5x0aoDgQZY5FAvcFCe5Qvhz+Frdp4aCFiYyCjUeM5vt7t\nfChs4JVbRMQyqqfFv973CyTVbcJGiW9vfYw7+RmatTDHhy6RSmyg0KFEhJ31Hu69dYi/dfr3ODP8\nJsEHycdMdICDT8xxZOA6PcomtaiHKenuX27X/xXt6/fKnk2/zOeO/TvqoYe/v1MFKe855iTtYLdw\nxome3XI792gxR8Ln6K6dpKWztpu/dvPgzpruLnzuaNpJKDp9RdxOxhlc4FAUDi/uXOfcx0k+uoHe\nzaW7y/Gd+zlcutf1vlsC6TinALvgfSB8j187/g/5wnf7ePXdB7H33v5c0BYE4Tlg27bta4IgPP2f\nOHVvZem7tvovf4d8oMZ5o83EuUmOfzSAiYjfbLDR6SOzMERArZMa2yQfTQACCDAmL+L3tLiuBtCk\nEqMsMcMtvEYbw1YwZAlLEPBLDayATQMvFULUCdASvOiigleos02S2xxgk14UQUcWOwwbq4yW16AM\n7bpCrFngA+tvsC0lySsJCtEY49YiA9YGO0ocUbSoqV7u940TDNUQd0w87Q6KX2fKf5d5aYTyg0EK\ny4wQlOuMB5YZrGUIG0U84Q4IAqYsYmugD0t04hJ2ATothY4gEa7XaAQC7HgCFIngo4FqdZjR79AW\nPFwNHGL7VAJDUMjKPQxZq6Rb2/haHSLZMkUrzMKRUQZ9a6RzOVptD8OFDFVRwzpg0/aptPFgITJn\nTnHb8nLSe5GO38O2kSSRzKMcbGNN26Q2tlBqJoYsUd/xYSvQG8ySj8W4Ze/nhu8gR+Rr9LJJDY06\nAaoECVHuNtISRfK+ZUxZABG+qz2B1mowkN3kcvEM7baHYWWZI6krJKPb1AkgYGOKCrJig2hTIEaV\nICUiiP4C9qhI5tIir/6/S7wqWgjt/F98x/8V7uuuveb6eeTB66/TRIYzS5y78E3eKpmUeLjS0V0M\n4+Z8nRaobmWGm+pwQNyhDhxFhhOtw8OSu708tLvVq/wDztkbwe+lRZzPDg9ryZ1+Ie5EqbukfW8x\nDuyOKXNz2W6H0t5znWN7HV6wmOfom9/gwvqzwDEeTs/+ddjyg9d/2n6YSPsJ4HlBED5B1zkGBUH4\nD8CWIAgp27a3BUFIA9k/a4Hhf/o5kuS4ljnNRb/ABst8ghdpGlneLD2O/sUAh+M3+MgvfYvSx7oD\nBZbEMZ7mVSa0ebLTCaaZ5SnO8yG+TbqZxzBUbmnTWJJAkCpxdqgQQsagiZcrwaPc06beVRzcsA8z\nzAqnrEv8WPtPUE2gAFyEyjN+zH6R5B+X+Iz4ZU4Jl/mDo59mWl9gnz5HORTCEkUk20RG50bgAFe0\nw8SHdwhTRqOOjEGCHCPCMu/Ip9nS0vRov8+5G+eRLYPGQZlVeYiaX8OeEJEDBp6mjWfRpjzgxUpZ\nPLPxXfJWjDueSXIkwBbwWB1OV65yW9nPd8LnkBQLWTDw2w0O6bfYX55DyYLwJ3DNO8Pv/JOf5m/l\nvsjji++gzjc589Y1dI9I5X/zsugb4yaHSJLly/Ef47VjT/MbT/8iBSXGq/YzPMYF0mzhFVr0jmzi\nG2limBKH3rqN704HpuB7B57isu8IQaocsa8zzArvcIYSEe4Lk9zmACUiRKUicS1PiTC6obBT6eHO\nVj/v5GUIwaGBqzw78A32MYvHblMgRp0AvX2bHHvhKn8s/CQv8RHGWGQf9xgQN8Bn8/xogxf6AQ3s\nO/AvfogN/Ne1r7v29F/+E/yFrZsqM18S6LxkvAu4Dsg5tIROF4ACPCxtc4DNnVis8/0NpdxRtfO7\nE7E60XHLtaYTvTvA6oCnG2AdDh0ejpJxnePQFgq7AxM6D95T6GqtHZkfPEzTuJ8CnPs5DkQEKny/\n43Kcm0OhuBUrLUC4bSD9NxXEd11ggz/Xh/9INsLDTv/1H3jWnwvatm3/KvCrAIIgnAP+gW3bPysI\nwj8D/i7wfwKfB77yZ60xIGcYsDP4k00KUhSB7kAE0xQxkPF9qkJd8/AWZyjE4wSEOqMsscYgHVTG\nWGScBUJUWGEYPAIBtYEkGrzBUywwwRO8QZ4Ec0yRo4cKIVSrw4d2XuPZ/HmeLZ8nM52mEgnyh57P\ncq51AbnH5M0PnWImeovh0ipiyoYR8Pc3mJLnCAs7NCSVvBgjxTaHCzdJv5gnNxpn7clefDRp4WWH\nBMsM46HDIGuIWMSbRcLFJtVkgDVvPzflGSaE+8TkIpeCh+jICqJsoU018PtrWIrA3eQBlpVh8sS7\nY9M6S0wVFgm+XWO/Ocfn+v+IhX0jLEZG2LJ7MfMq8kXga8BtGE6v8fmX/yPDo2sQoavLehKkoIWW\nbxNSa4hRi1vMEPUW+ajyTapSkAohYu0C03cW2NZSfG3qk0wyzwhLDAmreKd0apaPnWCCqhpguLDG\nJ2e/yUh0hYBW5yneZjyyxGxwkld5mghl0myi0W0dmxK3CWllirkE1js2Q59c5ETsbc7wNmXCXG0f\n53z1A9RkP2OeRcZ8i0wxxyhLDJDpjhzz7vD2wHEm1SUGCxvQgPy+KN1px39x+6vY14/cVD8MPUau\nUeHWxp9SoQsyzhQXJ1J0c8FuSZ9jTgS6V9PtLm1397l2foeHQdKZZOMuS3eoCFxrOPdyJyEdZUqL\nhyNeN5DunTPpALjjeNxPCz+IHnEUKG65ocIuPeQGP7eD4cF5DeAdYHPwAAQeg8U3odPgvbYfRaf9\n68AfCoLwXwMrwGf/rBODRo1+dR1bE2gjU7YirLZHqegRej1baDNVBsQMY60V7vtnaEkqTcFLluS7\n09JtBEwkWngpyFF0XSFcrOLx6tT8GqsMYiERpIKNQNQsEW2Xmawvsb86i1GSuFOc5JbnADf8M3hV\nnZbq5dvaM/j0BnG9QHvaRO4zkAI6U5l5IsEiZkhEE2rEKTBuLxDrVAgaFRSrRbhZoUGAdalNRhkE\nyUajio8GPa083pxObcCmEfSxIfQyfm0WowXXT8yQMnMkrB1K8SCy2O0DntH62CGGZJkcaM2SNrJI\npgXFbmvX3vQWm3b3b7JFilVhmF4zS7qWBR9ErTInr17DSEFj0EN5KEzIqKE1G3jeMRmeWKey7x5W\nCJJKFr/cIEAd0QB/p4OgC+TMBBkGUTCQMfALTSJSBY/RwayJpKtZAqUmp6pXkTsmVCBbvw6oAAAg\nAElEQVTkb9Bb3yDl3UaPeKn4NTS1ipc2NTRUoUPEW6IcLKKHvahyh0ZLY7U5RibQx9X6ca5unwLd\nxBvuUByNolF7wMV6UWmjSTV2AgmaMZWSqFGphsmlI/xlQfuvYl8/ahP9EsGnw9hrAbY2djvaOUDp\nbvTv5nMd0ITvpyTcVIWb4zZ/wPvOmu5CFjfl4Y5e3c7CTV041++latyqD3i4f4lje+WB7nu6wdqt\nVnE+u6PvdvdEcc5znjzca0LXSeQB+4iPSL9GZUvEcjzHe2h/IdC2bft1HsTstm0XgA/9MNfpNS+J\nWJ7rHGGDfvJWD/8q/ysMqGs8lnwTBZ3HG2/xs4UvsGGO8E31Q1zgLBYSFiLCgz9jhBJHuUYNjVoz\nxMn713kh/afsH77DHQ4QosJp3qGFl8H2Bgerc6iiDjGQNJOD5TlsQWRpdJgvBl9g3p5k3e5jTFkg\nlCrj7WkSFKtENitMv7aIedimesTHEa7joY031mL9Z5M0RR9Ro8S+7CJBq05d8+OJtJCkDke5RoYB\nwp0aFCESKTPoz7DPN0vo/8lT2dS4+9v7mTRXONy+y0q6l4BYBwS0BxWVA/oGE9kVMoE+7kanODty\nhUpY48rhQ9yXJllhmIzQz+u9jyM/ofNc/OVute0asAm6LpJNRbieOsLBN+eYfHsZXofjZ65z2LiF\nfhBqER8N1YeEidZpQ0fmK0c+zqIyzATzBKnQQWHD6mdidpVkPkuPr8K+O4vgA+lDJizSbYQ2Cp6b\nJmPldYZO/h4bgz1sx+MYSJSIUBbCRChhHF+lfiBIZnWY+dl9fNX+CdTROkZLhnUJ1iXa6QA7I3Fs\nAXL0cIsZAHqtlzjbvEhTU1mK9XHDPoIsGHRHRP1o9pfd14/a1Eibkb9zn+Tb65jf3AUpd7m6Ww/t\nAJlb6eGOit0RqYddDtwxh08OuK53eO4OD1MS7igadoHS7RDchTN7+3TDw5WKThn63kEyDnBL7OrG\n3U7Brbd2wNlDl1pxKKG967XZLfN3QNyhShRg8Jk1dk7c49Y3OrRKvOf2aPppq0HWGETCZIAMw+IK\nI9FVbEkgL8SoEeCeOs3L0WfoWJCWMoQoPSikMLnPFE91vsfT9uvIqkFd8FPwxtkZSdDj75ZU6yhE\na2UO5+5izkpo5QY+2tAPeME2BUopjXwsSlkI08SHjoyFyDXhKCGhzAfFV7nMcaqRMGcfe4dcPEFV\n9LOfe8QvlfDdaxMca3Nh5DS3kgdIaXnClQqB7QZnC5coRzUqPWEGZzcxOwoXpk8yGFxhR41xg0P0\nfXCdxIUVRv/hl4im1/AHmwxUt7E/YmKeEDkxf4Pl+CCr6UEGAxv4PHX8njo39h1A9bQZFZcYrq7z\nWPMSpU6ERkJFibZYO5BETyn4ih3SlTzKqk18s8KRqTu04h4WzwwysLKJumQg/JaFrULp+V4Wn+/O\ncYyrRWJikbaqYItgID9QwhfwCS3sYRNTAHnBYvVgH1ZSZEhZZ3F8hFbTw77KPMqagbBho/p0JJ9J\nK+5hjSFWGGGr2cvyvQnUcJve4XXKyTBDkUVOiFcYDC1T1sLcVI6ijyi01z18+zc+gd0D3rEGfUc3\nUeQOnaoH5Z6FQhNJ2cYvXUYKv38b1f91WFCo8oL6ZQblm7Tosl8OmLqb+7sjVnd07GOXHrBc57uV\nGQ6n7ES+7kIZxXWNWx3idg4O0Dmg6wZqx9yacoffdq51OxI3sMMuFeIeJebmxx0n4zS12qsgcQ9B\ncL6Hk1h1/63cVFAbOCO/ybBaYZkRWnh4r+3RlLGrPu4zgY3IECtMMM9J+wpVM8Ql4wQL4hir1hBf\n1n+MQiBMWC0SpcgMt9CoomAwad8nZW2TtRN4WjoeQ+d+YoycFCNKEY0aaT1HXy0LWRAKdHdOlO7/\n6RoYKQkPbQZL6yiiRVrJkldjtAWVBcY5xjVqZpCSJ8rS1BBbQooOKsOsIlYLBFdbBKstbEUik+5n\nSRshUG6QyhUYFdZYF5LMJsYQWxI1OcBC3zAWFgVirNOPMeEncLtM6N9fQn0KlGmIzVfYPhKhUfbS\nf36T3KEEi30j3NAOEpSq+OUG870TBKgzZpXpszbRjAZCx2KpPUQj4KGR9LCR6sOrdwjXK3h/t0No\ntUkonGFlqI9Gjw97TICLwHUQKtCYDpA3EhgVlTYNdEUmLJcxRJkOKgNk8NCiIfgpJ4NopTrxXJXi\niTClsRCNaoAdXxhPs4O1I9AIeDHCEoFSA89dHa3exDfSgaBI2/JgNyUEX3fw8cHITUZY5qR8iSFW\nyZKkGfTSxsNSe5yrmZOkxS3G0gVG7SUsJFbtITS9Rcis4NHbhOUKmvDe84uP0nx6k7OrFwlkV7jG\nw+oQd8Wgu+zbXcruRLwOOLt7fTgKEHdVIK5jDgC6y9bdBTDu3x3QdKs03P253YoNt87arWqxf8A5\nhuucvZSNm992WrY64OyMGHO+i7sASdpzbG/vFROYys0xuNbCa6ThbwpoG4rMbQ7SzwanuMhzxosM\nrmyjSh3O9r/Dl/3P843yc/zJwmcJTeXpiW+j0iFKkWFWCFGloyrcYAYRi33ZBaZrS1THg1yRjtLE\nx8/w+4x5FiAJPEaX6qzRBe0cCMs2iVCJSOU6R5t3MH0SekSimZT4D8rPMitN8TZnONd+gx4zz4XA\nSQJCnTgF1hgkeLRJQivDV6E3s8HEyXne9p7EMBU+uvNqV81gCrQlDy/OPE5b8DDEKrNMP5g9WUfZ\n1ulswI4JzaN0yzrmYWVqmM1CithXLxC0q4gfsPht7+c5yC0+yCv4aFIhxC1hhk5ojmQwi2bVGapm\noA6NsMwlTqLLKoOhNeJWBb/ZgSj0b2xhZwXkXhOSIGyBGgZPxCTeKnDs9i2iVhkzIeEbbqJrIkG6\nfPQGfSwziinJGLqHePYWcstgQ+nlxegn+Lj+DQ7qt1FknfUPp6iJfqYuLRP/RpFIvsKB/2EBacZi\nLdTP4ROX2RB7ydHDz0u/SQ85tkmxzAg5err9yhGxR4G/q/NU/BWOBy8jySZbpFmJDHP5zDFGWCbF\nFgAHt+bocjR/M0yqWUS+XkdZbz3E37rblDqP+Y65pXVO1OwUyziJRnekDT+4eMXpFOgul3foD0de\n58xz9AogCWBbu1pv9z0cGmIv3+3+Tk7HQQdUnUEFTnStPvgMDp/v1ly7hw870XWbXZWI7Vrb7dT2\nPn04EsfAxQ7Sehux/tepHPnh7ZGA9j7hHgl9hzd3PsDbnsdRQx3GUsvsX5pj6qvzPN3zPbxJneBQ\nlZC/hEIbG5EOKrcKh3lz7kk+s/XHTPiWuPHUQUZ86/QIO/SJ6+wQpYGfODssq0NcDJ1kn/8e8Rt5\nlK83af+8hiqaBFabbJ1MIiZM0rU8phcamoeqHOGYcJWp8jwDS5uMZVZoKwr1pwJE/UXSbCFjIGgm\nxWSAYKzJcCWDcOcCiyPDhGMljGmRrBanHZYZNle4Ih9DEg1GWcJLE0m3Odm4zrCxinXAy8ivJyie\nCfLGqEYtpXErvp+qpZH6hTzV8QAdQWWYZfrYQEVHwqBEhC0hTU3QmGaW/eJdOn5QcgbBG20O7btD\nNRmgIgSxnxYJbdcJCQ3Wkv3Ue/xM7iziaeoIfqAEvYEsWqNOLFii5gmw2tPHgjpKaivL9OoSnSkJ\nKWJiWwID17bov70FEvSuZdHDKvqwgiq3qZpBfFslYkoZX7pF/bAH/7yNpNuUowHGSkt8duNLbI8k\neNPzGNc4SgeVDgoi3enrvQ+UJjmSlIwo1GWMHgXFozNAhgEyyG2TWLaMHbGRZJ2e5SI9mcKj2L7v\nG7MaUH3TxlPffdx36AIfu320PezSC24tsxNFu8eJuROAjr7Z6U/tVmO4k5y41pVc5/DgZ8MG235Y\nbugU6zjRLq513c2i3Lpqd58RNxXiFN24o393GTs8/FThOAf2/O58Luc+bopIda1l3ILmko39Pnmw\neySgfYyrjNor3G4dY10c4A3pCfI9CQJzDQ5enWVy3yJKrIPWX0JBp4mPbVJsdPqZr09xJz+DeuEL\n9ClZLp06ju5X8MhtBslQsYLsiDEEbNbkPu7IB/FRwzJ1gjkbo+mhJYvUIxolfwiv1sLwitimRVPy\nkJWSJIQ8E/oiQ4UNlDWTLD3Ehkok+vOkA9t4Oh1k20CXZeywQEQsoxQ7eKMtJM1ke6yHVV8vqtAm\nYebxid1+HJ4H5d1xq8RgewsxaJM50E/54NPMB3uo+EI0errTelQ63P7JaSRMJEyOcJ0+1vHSwkOb\nsh3mhn2YTGuItuBlwJfB9gpotSbptwtMNhbITsW5PzJB4GidaLWMuVpkM5WkEfAxHFhFMXVEGZiF\nsFQmQI1Oj8pWIMFqsJ9m2Yd8y8Z/qU0u1kstouG3G/RvbJEu5SEN8VwZ9b6OJ9CkE1KoSRoJq0wk\n16VySmMBOsdkxCA0NC897RzDhVWKWpBiLMKCNo6FgI2ISgcTibBdZppZbjLDfHka7kg0I34EP4yU\nV4kEioQ7VRLbZW4r0+QDUZLlPFZb/HP33n85JmJ0FDbuC4TZjXCdSNEpF3eA2wEmd9Wi855zfC/w\nOhGtozhxR8M/qFeIE0G7uW54GMDdQw7czsPhoN2AjGt9B3Dd+m7nmBNZOyC9V/nhLoF3K2EcR+BO\njDpl6+4o251ctYDKOuQQMB4acPbe2SMB7dNcpKMofLT/T1kQxikQQ8JE8NvY/QKFx4MwbnCAO+jI\n7xbJfLPyHCvSCE9/4FsMvbWMst6hx8zhFxp4hRaj+hLLwhCL4liXM0YhSpEKQXIfT2OdkOlbLLDl\nS3Hj5w9yqnyVRDlPpdeLttTGQqUYjFAXNCqRMvFTebRoi8RCgY+/9Arm4zbCjIlv20C0bIS6jWRa\n5Eei7MyE6V/fZEPv5XuDZzAFsdudUAyjYNDEz2VOUCfAiLzCp4Jfw3dQZ35jkn9+/n+lMBTDM9ok\nlcpwVL7KABnuM0GKLGN0dcphSoBAmAp1O8BV/TjtNY2aJ8T0yF1MZNKNHOnVAt63DFozGlf/0VFi\n3iKJQJ7NiSoeuU2SLcy0hVkCUQDWod2UKccCbNlpdsQYalvn3JU3SX5jh84FlbefOkt5QmNMWMI7\n3oI43RDuOgTmmowba+QORzBjEsIRG26BctskFqxRP+ahdUSmt5yjrGlkp6OkbxRIJXcIHyozSIYY\nO2yT5iaHGGKVc9brLIsjsAW8BIyAptSZPr+IOtNC7LEQRZtZYZrb2jTeYy2yZhL45qPYwu8D89FC\n4C4yI3TVEI5SxGmz6tAZzkja4J4VnKIZd6tU+P6eI7ALxI56pEO3QMVNRTh6Z3fE7ObT3eYGcB5c\n22K3GMcdwe+lfmrsgr7zpCCzW0jkmBvs2+wmah1KpkZXe+0uunHW7biOOZ/XAfZVYBmZDuEHK+3V\ntDxaeySgfYsZAtQ5wSWOb12jlI2xNZFA1GwYtAn4W6gVA2tJ5MX+j3A1cJR1vY+2qnBCuMRPNb5I\n4ykvL3Y+yluBU2wo/axLvXjFBpFKladab+LvqSK0BaariwSEOuuBXs4PnWNA2iSg1uiLZ/AoDbLX\nDO7+G4GDHxWwDqk0BD/3mMaSRFoBlZm+e6SUPJ20iJLs4Cm0Ud62EctgegSqUz4Wx4a4oc2QT6RI\nq5tMi3e7fVSMFuFmlfArddptD8Ih6NRUwnIJNWlyVTvK0sAgPy78MYTBp9WJW1l8VpO6GOA+kwyX\nM8xUZomLO5SCQdZDaUpE8QsNxpnvPq0wyE0OMcYS+b4YL37yI4QKZfQemZScxUagJXrRPDW2SbJu\n91HwxggO1okYVQZamygeE/OeysXRkwgBmzF5CWmkg3DSQDbg4Dv36HRk4qdzaPVad5/awDKIazae\njE5ErlI+FOJ2YprkdJZQs0ItorGkDVMWQhxQ7rHiGeKOsh9GRC6qJ5mvTXDfN8mM1CbpFBsaItFm\njZOVazSUMLkfT9IZUljVBhEmDRTNwJBlcv0hrKCNLBms+IZovw+SQo/OEtj4aOB7t3GSu2GTA1AO\niDmP/k4UuzcJ6PQZafJwZOqOuh3Koc3DShCDXX7cDaZOibj7Pm71x16VisbD7VqdBGiL3aIb2bWG\nW+vtNIBy7uGso7MrKXTLEJ1o2i1ddLetdfIAbhWK816397cPi3G6/xD+BoB2oR1HFXWGzDXi5SLN\ndY1ryUN4fU2qoxo1T4BO3YOeVbiUOMWb/rM0DB+HfLc4Lb3FVHme184+yYXQabbtFHUhwJrSzzAr\nHOrcYbK8iORvo7YNvCUDX6PFTk+cTGAAIygzbc6xv7KAInfIrcLWv9MZOS7jCYGMgWl0R4S9JoUJ\nh2rE1QKNlJdgy0TetBHWgCKYcYnyRwNs9/Vw357gjZ4n+QDf5cN8Ex0Zv9ki1qjQvp3DakmIKQvv\negdZMUGELU8aK2bzt+O/RViv4DVbyLbOfXuSy5yghRdvq0OqnEORdLJqD9tWitXOKKYocVS8Ss7T\nB4pFiSg6GQq9Ue727mekuUKvvsW++hxlTxhDkfCKTXJCgrIVgZZALmITmGmg+Az8+SaV7QirA8OE\nKSKrOrmJGIZPJhxvkLqQw1gS4biJWLHp1GQaXj/+ehOxbNL2q3iWdaSIzf2joxQngkTsEmU5zD2h\nm3yNxndYZJiLnKQwHuVedT8b1QEyygAj0nK3dzk7BK0qpq4wUN3kcPQGC8eHWBJGqZt+8jNR0q0d\nDGQ240lMsUurbJFGN5U/b+v9F2RxbNKYeN+NRJ1kIjzMLbuB0DnuKCpw/e6AskN7ONPY9/LDDgi6\nqRV3GbsD2tAFQnf/EXfrVyeKdiJ1h1t3qAnnvg637kTnDkXjyAhN13/hYbrDrT931nXPr3SeSJwS\nebczc5yTu5zdUefYeIFRupMk13gv7ZGA9t/f/m3MiEDWF2N+bIJSOsKpnWvIHp1rBw5yUTlJxhqg\n3hNgy5vioHSLD/jO4xObNKQAv93/02TlJD1Wjr/f+bd8Uf4JLikn6WWTS4lj3PLN8OnsV6gFfCyl\n4kxfWGDcnufTiTI9r5YIVet4+5oIUZtJ3ab/GPgFg3axzETPPAdrc9y0DvPPI7/Cca5xunCZ1OUC\nUtVCUoHTgBfMgEgtohGgzgy3kAWDQdbIkwBAogRyjcXPD1ERNXzBJqOedWLlCrThXP0N6h4vpmYT\nKjSQWybFvgAFMUYDP31soMdEZkOjJIUcmlRm0MjwbzP/PV5fi3N932Zy5C79wjpPcZ5NemmjMsl9\njq/eZGB7E8kwMYdFaikfOX+Uw8JNfI0W4cUmV5JHuJeaoDIZxB4V6KAy6l8kQokOKpc5gdJjED+7\nw/KhERqqD7+vwcc9r+BPNLh+7ACH83fxH2uw9MQAg69sIbxjIx8wOB94im1ShKjQQcVPgxpB2niR\nMRhilXw7xVZliMHQOn5Pg22SHOcKmlJnITzEZiDNijCMhMmHeZmEuMMVz3GO6zfQzDoZ+lljgCwp\nIpR4p3ka+FePYgu/D8wLRNCR36U33CXkZbqA5KZKcJ3jbo3q9PVwV0A6xx1nALtg6FAlTitVt9rC\n+fkHFbq4lSew6yy87AK/02/EnSwU6FI7zu8Ndh2DO4Lfm9B0gzs8TAM5EbvjNNwcuwPqbp23xMNg\nL6IgEAfe++qaRwLauiZQVkOYkkBAqSGoFnXbR1sOkfPHyZGgRgBV6bBzM0kHL/VDAW61D1K2I3i9\nTTShxnBphcnZJT4WfIV0Io8YM6gqGrLPRJItmoqXvBaDcQgHyqTELLFoDU/ZgFlgCOQoeF+ApfEh\nir4QFjZNFap2AEkwmZMneTt8irHxJeS2gZg38XyzRuN0kOYTQbSVJoORdQK9tQdtQ3v5lvlhntn+\nLqF6A9sSWe0bQvfIHG9ep9HvBQWiqxXCs1U6SYVbzxzE52tjKwIr0gBtwYOATRMfatsg1KyTjfQg\nKiaCDp+UX8QnNRi379LbzGJKEhVPiLvsx0+dZ3iNYLiMLLSRdYNSMEETH8lKgU1finpLo3dplnGW\n8EabiB6Dt3xnmNOn+cncl8h6k7wc+gjr7X68YotUaJvNUC/DLPNh61vUhnyYDYHB3CbSuIElQzxY\nYvXAAO2Kl/HlFVb7RliMjdHCyxArTNtzJK0sK8IwJTtKvjrNttWLEm0xr4yxbSUoWREOSzfoFTdR\nRZ1b8gyLjLFFminmSAg51oV+Xvc8SdGKMStMdHvV0ETEIixXHsX2fZ+YhICMivAueDmqB7duOcBu\nBOxORDoJO+d3dxLSAWc3leAArHtCjTvB6eFh0IaHVR0/qCIT13Hn/u7kptMMyu103Py2O3nqfHe3\nOd/DAWgniekkI90JT7ce3PnOe6s+3U8h0rvaG3fN6HtjjwS0Z2NjbNp9hM0KHruFIurMxsfRBQVs\nm0inTEioEpZKXF06TYZhbs0c5I5+ENsWOON5myFhhfHGEt45g6d7zrNfvsergafwCk3CYoVW0EvV\nq9FQfKyP9FKWgsRFH76pNZSqgXgH8EF1PMD20SSXkkcoaBGiFJG8FiWCDJBhU0nzRuIsrYSClya+\na3X6fm2JYkKj9qEY09uLRBolQp4y/z957x1s2XWdd/5OvDmHl3PsnIEG0A00AkFCYFCgKatoWaI8\n9mgo1UhlazQa18y4rCn/oZkpBZcVpiSNJMu2RCrQpCCJRGx0Nwig0fl1eP1yv3xzjifNH7cP3ulH\n0OKIZgNlrqpb/d65++x7zu39vr3Ot761VjBQZkvp5bJ+jI+tnyNcqdL2KTRjXlx6i8HUFku9/dTw\nos7qyAsa+WKY66cP4gt1eLG7TNHHBj5qlAjRbHiwyhK5QJyG4sItNvlc8Et4xRqtlsyjlavckwb5\npvIIGTVBt2SQJI3WLVJI+nHrTe5KY+htlScL7zArTbFh9BBtVOlqpOltbZJVgnyDj3HT2M8/KnyZ\nYiDC+cBp1lv9hOUiY65F6ng7FfbEWRYHx/BmWxxfuEFqPErDq9KTyTI/MUG+GeH4wjXCwRKhcAnZ\nMJjS5zlqXiEgVzplcy2Ru7W9NNwuQrEsC4xR1kNs6H1ogsqENIefGrNMM8ck23TzCb6OmxZBypxz\nHeEqR9imm73GHfqtdaJSnlH34sNYvh8RMxHQ8dx/ULeBz6YKnDU14MH6H05ud7f2GR7ksZ21PJxg\njuOYE/zgQVC0tdJ2qrktqfugZBgc58FOzW97Q3DyyvZ92IDtbKsm8K2bh00POakey/G7Uwppz2l/\nrzYdZN9/5zz7m/nws3AfCmjfZi83zQPMlA/QlDz4PRWG5RWGhRVGzSWe33gdl9RkezDO0dMXWWSM\nrBjns94/J2LluStM088GY95FlDGNZpeCmmjwbO0cTUum4AtyMXyElqgSaFc4uHCHdwKP8vuDP8XP\nx/8th70zuEomZOHi0HF+pfef41OquGmi0uZz7T/ncesdNHenqYCGwit8DD9VRmLLDP/QFrFDVWSv\nQPWIC/8Nk+BLTcrPmwx0r/KkdY5IKw8iyFGdM9p5xJQFt0DyGhS6gtx4fprYkzmKsh/DLZEkTYIM\nIUqotKniR8Tk9fCT3AlMcUo9R4UA22IPgWCV8coyoXSVfDiEv17hB2ZfpWdkG8IdrXOBMJqg4pJb\nXBQewZIkTnquEJELrEb7+MPnPs/TwlkOiDe5zHHyxHCrDV4depIeaYt/Kvwuf+j+SbrEFJ/ma9Tw\n4aLFOZ5klj0kQhm69m3zjvskhijwVPd59tyZZa02wB/s/0ekgkmiep4fzX+F/u11aJss7h0iqJZ4\n3vo6RlwiLSaR0ehhkw3LYsvsYZwFukmxzAg+avSxAYBdc2aKuyjo9LDFTfbzscYbPKJdohJ085b0\n+MNYvh8RayBQxIX+Pn1hg68zDdyGFadX7MxktI/b3qidXu70qp2ZhE4wc3qeTm96d/bhbl207RXb\n+nFn4gx8qzfu5KptgLIDjLuDqfacNr1hd8txJug4VSV2eVlnh3c7MPpBgcsdgZ9OhxqxWzV8ePZw\nApFEucskmqoSFEskxTQhoURPe5v95VlG31lB1dsEDlX4pPdvuRg6wWucoUtKcUi/QVctj+myWHP3\nUx/2IwU0XJ4mXWRpy0GMtkT3Rgq5ZRBql+nayCD0WWSFOGWXn5ao4mo2oQGWDpYb6ngJUGEftxjM\nrhPWi/QMbBEo1HA1NXLRCHk1jKWISHEBl7dJXXAzF5wg2ZtlyFhDchkMzq0zcHmbSKnUKYcaspCD\nbUS5s/drKNRdXirJAH5KeKkyyhI6Mpv0oqHQ004xZKyju2RySgxJMQhSJpwu4822eb33GTKlW3xy\n4xtIQR211CJ0tU4oUqIW9lDHS54YhiCRFNIIWJSkAJe8hwnKReJKlncSJ6k2fFh6BxC7SNESXWx7\nuwhQZtRa4lPKXxGixJQ+h2+jgSGLVPp8lAkRbRfw5xoMhtewXAJevUlwpY5QEtk/coe65aUohVl1\n95EPh2nrCnk5iCYolMww+UaCuJLnkHIFCxgzljnVfBdZNrjRPsTt8gGOh95FqRvMLB3h3sgwiViG\nKHl81JhiFhMRUdZJE0cVGnSRehjL9yNiOaCOQfN9VYWzAp6zeJMzuLZbDeIEbBzv4TgGD9ISbcc4\nuzmCTSfYwUQn7WGDppM+cWY/flACjDNF3eldO3XZzsSc3fpvW0IID9IjFg9ubnag0Z7bHu9hJ7hp\nZ046E4IsmnSyb6t82PZQQNtCxJBkjvvfY5QlukhRx8Oodo/J0hLKrIZYtUiIBU7H36Y96ObL8R9B\nF2QSRpaeep43xFPc9kwz0L2BV6gTEEqIQZ11+imU4xxbuU60XEQ2deSaQTRcYKK1gKQY1FxehJCE\n6msTVoscta6QJ8oIK/yQ9RW6CgVqmg9fX43J3CIDpQ1Mj8Xb0qOk6ALLQrYMsARWhGHaYyrxsTQC\nJr3nUyS+VIIesKbA7BYpx/wILgtPd4ua20cdLyYiEgYhq8QBc4b3hBPcY4iIUQLQgLgAACAASURB\nVCBSLbFXu0t3dIOW5UIzVcpygEi2wuDdLb7s+ixGXuVT976Od6gOFQFtVaFddFFqhmm7VLJCHB81\nhrjHQHkdw5R5J3ic08J5Bs1VetjCLbQwRZEgpU7rMGrMMdnh0oU2n5ReQkFDbFkMr20gezSKfT5i\n5PBVmnTN5UkMX0QLS7R1D2LOIlHI8kLhZco+Pxdcj/FK6GnMcOdeu0hR1QOsNEaYL0zzjP8VzvjO\nssIQw811juZn+L9cP897rUe5lx7ntPtN5IJJ+kovm6F+lqNZNqw+9gm3iAk5RllkwTXOvDrGI1yk\nz/jo9O373lsWaCI4PD0nMNo9HO1kF5v3tl/2Y77oGOcMyjkpC3te7r9Xd5xne6S27NA5dve5zoxL\nG2icoA47QO8sBLUbtL3s0CD2RmXru22NdYMH5YZO+scpFbTT8e257evz0BHyOdUtbXY8d4U6AnM8\nWCTgw7GHAtr9rPO/88sEKaOhkCfKNt285z7GYs8Yoz+xhM+o0QqqNBQvl1yHKQtBanhZVEa4GD7J\nHWmaoFHm042vs6l2s+oaJEuCeSbY8vawdbiHMWOJofo9+q9uczx1hcHra/inCmwc6GE+McU+901y\nwRAVAnzMeoUD+k262lmsAYG6qIIksNmfpNLjRfCYXJAeZ1vt5UzPNzFDFpqocJQrWAikSeKmgdBv\nweNAFvSQQHtaJHaxSEt1sfFogm1fkhpe4mRp4aatt+mrZWi5bzFkrTGY3iSez6NZCvlAjFCjgqdS\n5+2ex6gO+QiFK3yx8v8wurWCsAnurE65z0/281HGN5bI347xfx/5BbrZ5ghX2cctTn7lEpOFJa7/\nd/vwK3UGtE1+jC9TlX0suEepi15ctEiQoYmLEZYZZoV7DBGgwoiyTGO/TEv0USaAjIaHTg6vmIG0\n1cX5wcc5ceoKgWaNNwcfo9+1yg9aKV4SPkmaJCIGAibzqT3cyexnoH+Z3uAaNXydCosZBfGGScSX\n59H42zw78hpL7hFySoyjL77NE5FznDTeJd7Ks6b2kVaSBCmzrI+Q0rv5NH9Ff/37CbSbqJSYQCdJ\nR3hme7r2ywY1G4xs79QGNh87fLHt+Tr5W/sceBDQnIkz9nEPO4DvrPCn0QFZW98MO9y2/bNTfVJl\nh9LZPd7ebOzNosmOHE91fJ6tenFKCJ1p6rZKxb4f54bhZKmdtI79vgsYBLzoqJToqMs/XHsooF3F\n38kWJEQTNxUCVAigSzIuTwt1oE1LcHFbmaZMkE26iZPFRx1FbONS6/SxRlc9S3cqg+QyEP0mps+i\nLasIssWd6BSeZoNp4y5il0ksUyC0UWZ9OIEZkkjEsvhSdeJGjgORG50ApGggSCZ1t5eq7KWJC9MX\nQkfqvI+B6DbQR6EVVWkJLtT7D1cdL0Kk3uumcNrCnWogGQbSJRPljk56MMlb4RMk2zm6WxlQTUxB\nxBAkBNmkp7ZNdyZNfKZAK6ZS6fcSqNcJLtdQN3SGtTUq+FGrbfzBCtU+L/PKCJFwnnZYodHloqW7\nWRf7uGnspy56SYpptukh0FWn7vEgigYFIYxfiuOlji6L1CQPbVRWGWSdfhq4iZKnjpcFxhiobHAk\nO4NekRACoPsk1sQBTFlhNLhBxh8lHwgRcBVp9ctUzCRLvhH6BAXVaiNhMGXMkbRSSJJBW/Wi+A1O\nei6wR75NwsjgKbfwmQ3WunvRXDLD4gqPyu/xsvAceC0S3hQCJmUjiF+ssS70scogKi1yQoy2qDLH\nJLJsAgsPYwl/BMxAUTV6hyy8dVjY6HibTirApj+c3WYExwzO4J6ze/vOJzzobTu9cWf5VxtInTTI\n7s9wasLtoKBTyeEMDu4uL+ukaxTHvDY9s1uZ4ky7x/Gzk2t30kPOjQ3HMft9Zy0SCwgPgOG1kJfb\n0P4+CUSuMYCbJsuMIJgWPrNOWQoSEkp0kWKsvUJWiJFWkpTvdz3ey23iZOg2tzllXqAu+nC32rhS\nLQaVDfrCW5gYtF0yK/IIvyl/EassM5BJQQLMtkB7XWHL6MFfrXNi5RzWDagmc4RG89zVplliBL+7\nQgMPDcuDjowpiHjNOjEjx4Q4j89doz0uYggKhiFRFz2ErDIhs0JK6KKcDFLtqpHU0gTONXD9RxM8\nkOlO8JZ1ii+0/phhVphTRxCwMGSBst9DOFXDd7MNZyH1YoDykI++VAb3rSbSjMEzwnnMlkixFOTl\nF89QGAsRpMIEc/iooSEzv2ecOWMURW9Tx8uG0cdNfT/mcwLI4KbBojXCtpKknw0iQgEfNep4ucoR\n3uYxIhRQ0fBZda6Zh5HyAu5ZA3PNxDWgofY2uSofoeoKQ2yG9e5eqgEXx7hM2RdknR50JG6yH12Q\n8VLnlHGeQ8YNFsVRBiOryAGDE+Z7uPUGbVyEs/NseZNce2IfJYIMtjbY25ijKvqJSHnW6SdtddEU\nPax6BlhpD7PaGiSrxglYFXqELd5QzlByBfj+AW0QvRA6LSCuQ2PjQV7aBidnR3Zn8ojMjg7ZWaDJ\nmZTiDMzZoOvUbTvVHU5FhzNz0SmVc1IVOMY7AXx3IwUbMO3AqJ12b8/hrEpon+N8cnAGX51la3eS\nZHaAXmOHZnHGB7Rd4+QD4OkXELZ5sDD4h2QPBbSj5ImSp0CEa/ljzOb2Mdl/i5wvxgITxN05Blnl\neV5GxKSOlzRJIhSxGjL9W2neip+k5A+S3JMmLSapNf3sm53FV23S487w8cMvM7S53ungEoNqj4ft\nM3E2oz0kN7KwAo3DKtV+N03Lzd7zcximxNazvUSFHP2sExJKZEggVi0iizXGu5cxuiXOymfYV55l\nujFHOebFU2nRzPn47cAXiQRy/LDvL4mZOaxpC+2fgPwaTFYW+GL5d/GrZWqKmzBF6njf35R8GQ1W\n21CBuu5lVRlgLjFFT2qRoTcXiAxB5miCeyf7GIyu4ibBGgO8xROAgIiJgsaQeI8fU/6Us+Vn+Oba\nk8zOHOSRR77J/vHrxMjzhnmGbaubF6SvA7BNNzfZzz0GcdOkm21SdPEV/Ye5uXkYyZKYOfYW5X1B\nBLeJT6nSK2wSFUoggV+oUCDABU4xwjIjLBOkxDmeYpZpQpR4TX6Wc9JT9AobHFq+xf7l24S7Kiz1\nDHEnPsFE7wKaqGLRqdcyo+zjbf9JhqRlvNTxUucR6yISBhc4xfFr13ih+iqLjw/Ss5jBKMr81ZEX\nWPMOPIzl+5Ex0y9Q/oQH31UXvpdb7/PWtnftTAN3pobbIO6UuNk8s1MqZwM/POiJOj1Pp4rEpiqc\nSTh20M8+z3K8Bzs0hjNr0U6JV9nhyZ3g79x4bC23s3aIvTk4aSKn5NGmUeyX8xqd2ZX2U4J9nXbQ\nsnTUTemAD/MlsZPF9CHbQwFtsyVzVTtGt2eLYWmZuuKnLATRrTCyYHBZPkoVL92kCFKiXvZxZ/0A\n670DxNUcPUqaW9I0JcWPERVItPJ0lzLIiyZKziLkrnLUfwP/aq3T1W8DRNFCmISU3EXT42G9e5WN\n4S6KsRBtU2Gf5y6CZbJOHxv0EKLMIKt03ctgZmWKcohws8RYYYVrwQOIaQhs19B94K5riHmJbt82\nAbGEjEZRDNNIeBDCFguVKTxiiwPiDMvKAJoh01tIUQ6EKHo6FFEr5CU91sLwSlT6vViiQNYTJRTe\nRuyCdo+MNiBiDVq0UDGQELDIkCDQrDFeW6IWcGOoEmGhwEneZkGe4nLgOOtKH2PGPEPNdQJSjVXZ\nRRU/ZYIsWOPcNvdSE3x4xDoqbTKVLhZLE1TNAJZXQAlp6HGJhuijjqdDCVWBJWh53bT9Ki5aLDNC\nveKjsBqj0hXEG69TJsiqOEgTN4/xNgPKJgVvGMmtU5b9lMQQdZ+bBl6yxFFp0xBdXBMPMsgyMbLI\n6LRR8RhNptoL7F+7Q295g8gjGWSXSV31c7x5BeuhrN6PjjUUD5cGj9GzoWI52qw5AWt3SVYnR+1M\nzcbx+24e1xm4s8HLSZvsrs9hByZhp1a2U3aI49huKsVJsdibkDMg6Wzq4JQ22i+RHW/ZuRHZQGyD\nt32P9gZkb3T2xrM7cceeowXcSUywOXCApmz36/lw7aEs+0I9xpcrP8YvJv4Nz4e+zunwm/yq+c8p\nWmGmhVne5VGWjFEOGDP0S+vcTB3iV8/+It5nisSmM3QPbROihGQZnLee5Iv13+W57HmsDTDyIqqq\nMeJa68go88AG+OQGiakihe4o2a4Y8WSG6xykYERwSw28T9TxWE22rB5mhAP4hCo/ypcZubyOmZJ5\n7/MHGcmvMb6+Qn3CTXQ9B3dAmAQ0iLbz/Lzn12m6VZq4WFf60VAQFZPf/9hPEDPz9JnLLItDuEsa\nh+bvsjQ2Rs4d6wDbHpnWHhcNPIxZi8StLCVChPdrRGSR0uMu3N01utnmHKep48NPFTctxqorfGrt\nG7w1coKr6kFWGOYLnj+kNuLnf5v+ZeqCm1IjwnBuk8PBGQiAiEnbUmlabipGgKboRhb1Tjf5XILt\ntX56968w6FlhrL6K5DfYEHvIWAnaqIg5gT0XF0l1J2l0ezjMNf6AL/DV3A8x/9o+PvP4X7Avdp13\nOElaSGIhUMPH7eEp0sNRjnKVNgpBSrhpkqaLRcaIkyFMiaiVZ8JcYMhcYZUhbkgHSeo5/nHxT/BU\nmmgtiaiVZ2F8jFbLw4/kv0peCj2M5fuRsQoBvqp9hr2Gn0luPeBl2sDtZsdzhQf5aFu37GHn0d/W\nQjhT2p3KDRugLcc88CC/3KajMHEWffqg7EPDcb4NqqpjvD2m7RjrDBJ+UHKNev9+nGVX7c3Grguu\nsiPhs+e1vytnZqVTyWKDdhO4YZzklvYMVZb4KPAjDwW0074YmiDw71d/isHACsmeTbxiHQmDAhFa\nuMjNJLny1ZN4TjcIDRX57Mf/hO1kkgp+dGQKRGjUfWxsDnInOM3V0X3kfjBGRCvQJWwT8RZxv9lG\n3bKgBZYLXJ46Pzz3NShDtFlgxNig0uulesTFKoN4mm2ey5/DCCs0fC4CVFCaGmu1Xr5i/jCeRIPh\nyCrD6iKDkU20foVttZtws0JA2yZwvYk8YCKOmkzVlxHbFrQtfv7ab6POtInPlpn87xcQuy3EexZT\n7gUSSoZixM+20E2aJHU62ZMxM8e60ofYZSLmTPx/3mT1YB/zT48CAhIGbVR62SQbiPCbI/+UoK9I\nkDLTzGLIIhIaZziLhkI5G+R/eO23WYv2URn2EpnMMu6eZ1hYISrn2aCPDAmauIknUjzhz+DyNUhL\ncX5P/ElmpQkyxDGQ+cnqf2BvaBbtRVjsG+EiJ/ganyZOlk8k/obDP3CdTDjOa8azhKQST3IOL3Vu\n0eGsa3hZZpQ4GYZYpY2Lbbq5zDF0JDw06Tc3GLiwxd57iwxrW2SfSnBzZA+/HP0lpp6eQzY0rrgP\nkyBDn7JJPhJjfGsR7ifjfD9Yq+hi4T/tIbo6xzQ7JVidqeOwE4hs8GDwEXaAzgn0uzlnp+dpg6E9\n3tn9xhn8s8Gu7ThuB0j1DxhrUx62Z+5UlDg15uau4zYfbvu8zmSg3ffg1JnbypSQ45rsCodOjbkM\nBOkAvs3Lb70+yOLcNO3yOt83oF2tBWhl3czqU7iEOtPcZLS1wuLmOG+vPkbP/nUqaYWZC4dx7W0w\nve8WR5PvogsCBgJtXBTKUaqVEKJlsaCMciHyGEpEYyqn07O9BStg3oX2Ksh9YKSBV3QmjXkEL1hB\nSK5labVkygNe2mUvggFRbx630KKOmzYKy/1DrHhHURSNki/IAiOAAUmJtJJEd0PbcKElVKK1PFXB\nQ4o4siAQEKrEhBzT0iyWLNBWVWJWHlMWySYiVDwB2kKHWrD5bT9VJMHAFEQiFDud2WUBXZHJSTGW\nGKWCHwFw08RNkzVXP5ddx3mOV5gu3WVyY5FsX5KtUDcWAm6aFOUIF/3HUFwakmVwu7qfIfEeA641\n1oU+toxu2lpHeSOoFroo0ZZUNqVuymKAa9ohJMFkWr6DLkjkgxFy8RBzygTXzMNsaT0cNq8zLi3Q\nN7bKYmWU1dIgj4bfYUq6S0gv83rlOVRVw+ercYc9tHARpUCOGO56m8PVGSpBH22XgoyO36wTMiu4\npBaSYFKXPGgehZtDe9BQ7jdW7TwhKO513M3Wf3nh/TdmZt2kcLaGVW2SpJNuo7ETdHSCr1OrbHuO\ndm0QZ+U8p0wOHqQzds/n9MZhZ6Ow5XfwreVSbRrFOa8zYOg85twsbHMGD53et7MJgpOmsc91Jsg4\nVSLOxCL7O3Nq2E3HvB46+XLijSaFxRrUP3zlCHyHoC0IQgj4PWA/nfv6KWAO+BIwBKwAn7Ms6wNp\nem3ZRf1ukNCzaR5NvMVPm79Dslzij85+gT/+05/iwL++gddscUWDUCKHO1klIyRp4UJGR8SktBmj\nUfdxYN9lVtV+CjzPs7xGbL5I/2tpOAeNO9Cog38/6Feh8dsgfwaET4F+EpQsuDI6iYUyz906Ryns\nZ/UzXWxJSUoESdHFtdOHKRPis/wZG/RxlymucoSLvY+Q6M3wA/wNRU+I6/H9nOC9TnCVwxS8EQa8\nazzKu4jPmZjPCujI9DW2MZG4++wIs8I0Ggp7uM0Kw+SI8iyvIUgWGSlBD5tECkX0mkTucyG2YgnW\n6cjdAlQYZI0MCe4yxR2meZZXGVm/x/6v3eVXPvMveDV0ptN0gWXc3S3GfuQOY8IiVkPiL7f+ITGp\nRJ9rgzd5ilvaPipakD7vBlvNXq7XDhGKFBiRlhmyVsnXYuwVb/FjoT9h09fLCh9Dpc0s02xpPeSq\nMb7R/AQz8hbPxb9BJR+mXfOh+tvEpBzBVoXySoxw7DZHfNfIE8NCIHf/34P523x+6c9o7JF5Uz3F\nH4s/jn5EpnlEZTsYpSL4SJLhDGd5nadZo58D3KBImCJhPs3XGBS/ey/7u13bD9VadbjzFglus49O\nn+Y6D1IiNl1hV9NzyvTsQN/uzElnMNJZo9uZ1m3Dlccx1pYD+tjxyG0/1AZDp8dtz2GnxcODXrw9\nhw38NoDbnLaz4JXmOM8GdPs+bEmivWnYtVlsusPeuJzlau3z7WYPFhAHjgKvrt6i46N/+Cns8J17\n2r8B/I1lWf9AEAT7/+lfAq9alvV/CoLwPwP/C/BLH3Ryqj+B21/B56+xLgzwivAxnvO+jnEUDJfM\n/MAE6lCLkf/1LqN7FnhUv8iLjW/w++6f4I46DQgc73mXhJGhIvtpCSq9pS1OzVxkaHsNIQwcAHUM\nZA9Ij4JYAHECpD5ohF0U/T700wopo5uFyDiT8Tm6Gyn6b6bpGUxRjfq5yX4m80sMZdbpSqUY7tlg\ntHeVG969RAslYrUCa109tFwqAhZv8xgxchzjEhYC0UKJnu0sqf4Ygh8SZhbvrRaC1mZq7zJdSg5D\nE4mUSrgiOoVQkG62cQktUlY3v2n9LIeGZziVeItsIEpbcNFFihg5qgRIkaSKHz9VnuYNFhnja32f\nZP1T/RzqvsKh1hUsQ+K2Ok1F9nNaOM8qg8ypUwwlF1hQR2jyAhEKnFYu0JYUmoKbkLvIIfk6qtxE\nRSNLHFMRcYmdbo4lIYyMxgFm+PrKJ6loEVy9LayUiqa7KUVCWDETQhqL8ijvcJIB1zonht6m5nLx\nJT5HFT9xsjRwM8ckStQgpma5EHicm8I+dFPhNy79HOZFmcZtldV/MIT0mEY63kVF9BGkwhiLxMjR\nVcrQdyuNa1n7oOX2/9e+q7X9cK1TUcPzcZ34J0X8v2XSvLNT2xo6oGPzyho7tTlsjteuJeKsaGeb\n/bs91n7PqRhxeqrcP9Zgx5OWdp1nm3MDsXlsZ+q6DcQ2leHkl3HMaW9MNi2kssPPOz1upzqkyc7T\nhVPFYqta7HtwXlMbaO2TMH/GhfWfgZfttgwfvv2doC0IQhA4bVnWTwJYlqUDJUEQPgM8dX/YHwFn\n+TYLe494G9dgg4yVoKIFyIpx2m0VtatJMFmgFA3S717jTO+rtHHhbjcJm0Xk+3uuiEEitM0ga2zS\nS8QoMKEtEWvnMYMCZZ8Xn9yEbbPzvzYIwhSYEwrLVh+GW8A3W0HLSRSjflYmBrDiJsVCiPBSlabZ\n8R/KhJAtA4/RoN72EWkXCOoVilaA4cI6vVsp6ooHzS2j0mLBP0Yyk2FydRE12MZV11HTJrW6B8MA\n71YF/ZKJGZURpiz6apsoTQ3DkvFbNYy2QLRSxFtv0rK8mEmRfCTMcmyQDfqo4gcEwpSQMdAtmbhR\nIEiJsFxgkTHK4QDXwgd4sf63TBfvIhUgEKmS94c5KM4ws34Ad0NjZOQea1I/GRIMsophSrTaEdLV\nHjzuOuOhOUp0WqV5hTpN1U1IKFGxgkT1IgYiK/IwpikSs/L41QINlx+fUMcltBj0LRMmD4JFgTCK\nrOGO1qgSp0CYHjbpY4Mu0twkwax3krZX5h1OUqWTKn+dYyy3xshk4ngbDSJmDpE9xMjSwzZeGgyx\nypCxRqBWpy7bycd/P/uvsbYfvhlsDAxx8dTz1P7kEgJZWuxop21ghQc5ZNsb3V27wwlDzoxBZ9DQ\nBjpn9T9z19jd3WqcPLHT63aCL473d1M0zqxFpy4bx1jnywn+TrmiLfOz781J+Ti16E4Kxr6uTCTO\n2ScfZ/XywK4r+HDtO/G0R4CsIAh/ABwCLgE/D3RZlpUCsCxrWxCE5Leb4BdWf403D57i3xV+BkXV\n2eOZJbxVJe7OMzZyB01QmOIu/5g/4jf5Wc4ppzCDUBc8jLLc8fYIs4hKjBzPaGfZ57rNnSem2BTj\nJEo5RrQNzLMtGpcgdBysx0QK0z5eEj5G93tZPvt7/5nGOdAeEyn+ToRVBrkaOkrmUBxF1IiSJ0ma\nuegotyOTeCfrnGy/R6+5SRsFoygRvFfm48prIAk0cOGbqhG5WCT2BxU4CEIP4IHemxlaV6D+txYF\nDYovBij+9ARTa0tEmkVyRwJcVQ9SLofYf2eB0EqFoDDPv/r4/8F8dIyb7OcqR9BQCFAmRJkkaU5a\n73K4cYuAWKYmqzzBW9xlkjc5g1lTUNeA2/DY2HtYvQKSy6D/aymeX3sDflrg9cHTXJBPUibIleYx\nrqSPYc27ON77LnsO3maNAcZY5Hle4bbS4aAXGeNT9W+wKIzxPwX+DQND65zkPAGxQntYRaFNl5gm\nRg4Rgw3632/OfIODJEnzCBfZwx1GWMJPlSxxrnKEs5whSJlRltgvzhB8qkzgeJGz+TN0xdfo8qfw\nC1Wi5PHQIEOCLlJ0+TNYB+usuXqB+e9m/X/Xa/vDsFfSH+fKzD5+tPIFBjj/gPbY5no7MZAH6QZj\n1xhnhxknYDkB16musEHVVpQ45X2wA5S7q07boGvz5M5gpf2+fc22bNEpIXRSNE6qpsFOWzL7up0F\nqGxqBHboGZtusTcZ20NX2QF47r93tzLNn177VQrpG8AVPir2nYC2TIfa+RnLsi4JgvBrdLyO3c8K\n3/bZ4Td+vcziyG2i+r9g4ozI5NNz+AJ1jlau8Qu3foOvDr2IN9hJqhhgjZiQ46hwmSYuXLQYYI0U\nXZiI9LNOQC5TkEK8KT/JhDBPPxsIBRN1ApgSKI97UcomobsNnk68hXKrQeNNCzkJ8YkSU9YcY3P3\nKFkhNieT5MQYOWLMcIC4mGW4fo+Dm7fRgwoLkVEGxXskfBlED6g3degDc0ogquQIjNYRX6ATcq4B\nGyD0WQhdYFQh+AmoveBjUR4jPFChqAd4S3mMrBjH76mxOtaDkowjmQbd8hZj+Xu4NJNGzIupQoIM\nQSpUCLBm9nOwcAeP3MRy6fgXGhjSCtXxy+T9IeaSo4xXl1GCRofsvAuSokNSh1twWL+Jd6jONe9+\nNJdCT3yLSWUBy2fRslQ+b/wnWoKLi9IjLDFKiCL91gaznnFKhDnNeQJShTpe7jKFS2rRywY9bLGv\ncpeuZpqq7Kfq8bLm7iVLnCBlYuTu/1wiQPX+PZVZMkfJVRNkxQRb/m4aipetWh/mTRWOiASCFSa5\nyyPFKwzo65QjXtZfXuHlsxXqUhChkPl7Lfr/mmu744TbNnz/9b01/do2eqnFoWyZLhVutHeAz7bd\nwTtnBqOdKekMvDn9SBv8cJxnc+L2OfBgfRA7gcceKzred3rVNpVha6rtf+1gqpOXt4HWHuf02nHM\nuZvfdnrbwq73bGB2akAMvlUTsscN7lyZ//B7l9EXczwcW7n/+i/bdwLa68CaZVmX7v/+F3QWdkoQ\nhC7LslKCIHSD3aX1W+3wP/sUxUdO8aj8Lo9V3qFvbROXS2OotUp8Kcu7sePoQYma5UevqbjQiPny\n9ApbqLTfL8FpIdDPOlXZS4Y4TVzoSOjIWKKAMg5Cj0CjKWKtm/iWWxwM3aa9Ak0BeFTEPK7QslS6\nGxkG6huMri2wFuvntm8PqwwSEkr4K1Umry+yPtbLpj9JWCqgeLUOMOegoAZJxZKklC6ag2WCnhq+\nZhV1XYM21Ce8aJaFfLiB/qkAxSd7WJRGGWOJEBZ5orhoIasaF7oeI9qdJ2mm0VsS3eksk4UFqj4P\nNcWDImgIWGzRwwoj1A0vommiNnSkGkTUImMskvEkyIaijMVWQLU6evU70I5L6KMSliZgaRaSZlKs\nR4m6CkyE5tkTusM8E9y09jPCMlkrziWOoyNjIFMWgiyoIxhIJMgQocC60c+SNkZCzpCU07hpohga\nwWaNCX2ZtBDFdFuMsUS0nafP2GRJHaEgRfGZdTL1JA3Rh+LW8Bp12paLBSZQ0Kg3fFjrCvVhP82E\nB7erhUtvodcVNqwBHju4zY8cLnIn3k9wps5v/s531f7pu17bcOa7+fy/n61mEFIpXMf9qF0xxGsd\nULE9TGf3FSfl4KRL7N/tc5z1QuBb09xtqaDNJ9uUg+2520E9p/fsTGvfHTB0Ark9j1Nj7aRonJSM\nbbuVI/YYY9dcTtB2cue7r8uZKi8Dyt44ii8A37wDbSep8r20YR7c9N/8qlSUiAAAIABJREFUwFF/\nJ2jfX7hrgiBMWpY1BzwL3Lr/+kngV4CfAL767eb4i32fYb4ygTvYZHJ+Cf/FFtbTYLbA2hZotdyU\n8LNijfDuxhMYSIxP3CUsFPFSJ0UXcbIkSNPLFtc4RI4Yn+FrGEhsunrpGc3jqbaRqiaR81UEk06j\nuRugiCB9HqovKCxMDPGq8Bz7995ienmOiVdWiJwq4p2sUhKCaKg0il6stwTG6iuEQmXe6zuEJSnE\nohXog9n4JK8GnmJD6KM/uEHJd5Fp4w7xgTziIbgX6kXuM5gIL3Pp6ChX+g6yJIxiXlEZra3xiRe+\nQV3ycNPaz2/pX+Q56VWeFM/xmvtpjhev8+jCJQ4NXmPeO85NeT/r9LPKIBUxQC3mRmhauMsGlQkP\nDbeKiNkpwWVVEezCwmlgHaoHPJSe8GFYMhfkJ3hF/zhvbj/LY8FvMhJf4hZ7WWScTXp5Q3qaKHmO\ncBUXLbbp5ipHmGaWJi4ucZynOIfQhlwuSTScR/IbVAjwdvAR5oRxfnjlpU4BrrAfH1X2VOc4WL6F\n2S2Sl0Lc0A/ylbXPUfIEGRma40ToVXRkbrIflTYpl8a9xDiZeg9iFny9NWYiByhaUZZvT/Gvw/+K\nvd13GBTWWN/f/3f/HXyP1/aHYxrNoMXZXzjJ2JIL4drr74OP7UXbmZE2aNmBR9tsMLbPsQOUu8HO\nmSLvbIrbZAfInVmYEjtJLQF2vFpbYWLTMjbAtxzzOb1hZzKPTXHY94ZjnOmYz74/e+6243eb0nEm\n7jgLVNkBSZtWuvTjx7k6eJTWP9M72sqPkH2n6pH/EfiPgiAodCqBf4HOd/FlQRB+ik7y+Oe+3ckJ\nf4aMnqBb3KbR5+LyycMEk0XaYRcb7n7mPWNsN7rQ3TLtuIiOyF8LL9JFmm626GeDCn7uMsUi4+SJ\nUMfLS7zIFHfZL95G8hi0AxKaLuI+qyM2LEyfQOW0Bylq4vG12e7rRhItni2fQ/RqaF0yqRMxgt4y\ng9UtnvKcw2rKhPJVXIU2yy/pzM5ZLP9sF0ZYRi7q9H55A//hIlMv3uXQ1i0C7jLRSBb/YhOlZUFI\nQA5p6EmZzIkIrZhKUknxHK/SH15HdFkIgsVdpni78jhrcyOs9gwz37/FHWEP0oCF318mEdjGEgUE\nLMIU6M1t053KkOhJo1siatak5XfRUN0YSLxhPI1XaTDcew/vcgvZsuAEeCJtxKyFWRI56plB8VlI\nQQvTC1c5TJUAY7llnihc5I3eJxG9Jqe4wArDuGgxbc0y15rETYMfcn2FeWGSNXmAg6FrKGqLPFHm\nmMAQZdKeEud7s8Q8Wfpam/Sm0siSzlJkkG25CwGTkFSiL7FKQlGYFGbpElL4qDHIKpv00jY9CDo8\n7rtAPLjNmtDHSfEd4v4sN0fWibu3yPrD3BanmJcngJvf5Z/Ad7e2Pyxr1RQu/PFR2sUmp3n9/UQR\nu7GvnQjjBGxnlqSzia1di9up57aB01mwyfac7fOcnq0N8DYnbHvk9ufZwGlTF06QtT1o57lOj93J\n09uAbOvTzV1jnQ2LZXZS0eFBsLZfu5N63HQ2mDdemuLt4EHa9XkeZPY/fPuOQNuyrOvAiQ9467nv\n5PxxZZ6G4sFHjZXoEIv+UQ56rtOU3dzs2s92rYsNo4+yEGAstoSM1ikd2hhg2rrLMc8V7pVGuKtP\n4o40iEp53DTZoJ8B1vBadUTNJBWKsxHqJjpQIb6ZJ6SX0PokrD4BSwINF8FGlfH2DGkpRtEXYPtg\nHLMsoug6brNJSKsTpoIU06nMQv6eiXykgbZXIteOIN5rI/bpTGnzjG2sIgYNyn4PxWIErewhXski\nhUxacZGyz4eERg9bTHMXrUdmWRuiKrlYZoS5whS1syHMPQoKBgG5hh6QyPRE8FBFaeh0N9L0urcZ\nzG8wubxIw5LRFBnDEtEtCUkz8LabpKUuLBXSiSjd2znksEVhIIwlCch1HU+xzp7SHH3eLXxdVWY8\n+1hglCJh+hubfCL/ChcSjwEWPWxxhz0IWEwzyyXjOIYgcpAbvGWdIiUnOe0/zz1hmHQzSSkbQQ21\n6A5ssZboJaLnGKhuECuU2Yx0cdO3h02pBz9V/FKV3vgabVT8VCkTJECFA8xgIhFUy4TCBc6EXiPq\ny/DH/DjDrHDAM4NrsImPMvl2mFIuQt4T+85X+vdobX9YptVFZv8yQm8yge9EjOZ8BavYfr/2NOwA\nmMCDQGh7y3ZJU7s2tlNLbYOhDYxO+sA+vltPYad+O7MZLcdxJ8A6k35sc6pVnMHF3WoSp5TQ6XHb\n3LT9pGFTInYjg28H2LY37wGIqIgTQdZmYiyknT3hPzr2UDIix1nERGKOSZbykxS3YvyT8d9BCraZ\nEybwemtEhTx1PIywxADrlAny6vYLbOkDREYKrMyMcqt0mI8989eMeJcYYI0xFrEQaGkuzC2B9+RH\n+IuhTzP4hTXOvHue5998g/BLNYRhC/GoxYSyQisqU+rzEi6UkJsm87EwS/5ObekLwimmQ7Mcm7jG\niU9fY6+nxdBbRcq/9DLeMxbWix7e+cVjyN0a/eYGVklAtdrIuouXDr5AciHHZ698hfqQl3ZcJkqe\nECUaeKjj4bXu5yhbIZ6U3sRDg0i6gPTnJgcmb/P5e3+GFlAwjpjoB6CBh8RmjomlVRi2UGo6Qhs8\nZ3XKw362nw0TEor0lsvIKfhs71+SCsVZYBz3kIHZK/Fq6AyGKBI2i0wMzDNwe4vwQplnl8+xb89t\n5veM8AZPEwqUUXvb7HXdwUUNA5EWLiwE/FSZ9HTkgG/wNJtWLyHKnBTeoYWbpdQ4y1+bJPp4muix\nLIe4zmR9iUi9ghQ36VHSaHWVv/F+gpSc7JTBxU2eKKsM0kZlmln8VCkRxJ2oceD0ZU4Ylwk0Krzq\n2+oUumKcdQaIUCBRyvHU+W+SmPiIPbc+VNOA6+jPVKj+y8do/tx78EYn9mMDmK1PtmHH/mN3Biad\nHroNbLaE0OaRnV617VHbHrlCxzNt8K3BPJsqadx/2U8BJjsNDZwe92654W7FiA3ILnaoHDsl3Z7P\neb22R647xu4GbBxzS4BxNEbx3z5C9Zcr8KUbH3BXH749FNBOaFmWlFEUNPp99+iLbfBu+nGijQyj\nXcukpSRhCuzn5v0vWmaCeVZDI3jNOj6xhr+/TCyeYkxeIErhfnZdnJiZJaSUSE9Fud3ey8zSEQb7\n1/D0NRAGQG6Z4AdDFlkL97ISGmBV6uNp8637JWMLyMsmoWYd30CbmJrB7ylzc2qageImCS2D11NB\nbkJjGbyP1NEiMs2aG9MtIkrga7U4VriGS2hSPezm3fAJMiQYZhkZHQmj0xxgeQGpbeCbqnHcuEpv\nOE3PF1IEYgXu9I0z7lrEiMvUW15CW1WCszV8y03wQiEWZGXvAK0eFXeqRfTf5/FOtVAbGtJl2PP4\nHP2hDcxVkdY+hfaAwiSzZMU4Ut0gcruM+0Yb6Z5JwFVDmtfxvNPA/3QLT7xOUfVz8uy7eOUGoZEi\noe4ygs9g2Fzh07f+mgVxnMv7DvO08Do9bCFiUcNHOFjgx4/+IYPeVSa35xljlTVlkEv+JKPSEl2r\nGULZMlMH51kJDdI03TxTPYcomWx4u/lb8wVusQ9Z0plmlo+LLyOoFqKpsS0m2M8t8kRZYZhtujrf\npceiOBEhFf9IKfEesnUSbZZnE7z0B328sLpCkhQZvjW5xQZimwKAHQ7aBmO7VrYzm9Dp5dpA52GH\n6nB2zrE5absmCY4xKh1hlVP5YQOllweDjE7Nts1B28k4duKQ83qcZVXte7bPtT/HCd520NK+Z+dc\nSSB7L85X/98zLM/a281Hzx4KaKtmmzYdTe9ocIGou8BLcz9EQ/cw5LsHbhGP3GSQVQpE0CyFMWuJ\nUuTdTmNYQnhGavSyRoIsFSPAltVDWqpxwGoTdeXZnOqifM+Pf73BRGiR7sA2xl6BlqGCX8AKQSYY\n4546yKI2xonGDbqFbSJWgfB2DU+5zcHETeqii1W1j/PJR2AvJIQsnrCFsArGskbf5hZFfxBTEdFj\nIrosI+gWJ++8RzYa4frpvVzjEBkSVPATokS0VSBRznJ47QZho0h6KEZ3Ksuh9k2iX8iw7BrmEofx\nUUYuGpirMsF0CqsksmV1IVgmG6FuFnqGUWkz/Noak39SAg2aokphxY82quKuaqg322wOJWgpCn3t\nTQxLotn0oNwzEJesjl4iBN58C7eUJnGgQDoZJa+E2X/3DgHqNLwueqNbSLLGUHmNA8t36ZEz3Bsc\n5FP8DT65wsue58kTJRrJ8YNP/DkH1maJpUpUPH7mE2PMBPdSwcN0a4FEKsfB6g1c3iZZMc6p1tvE\n5Qzr7m4umce53DpGqRmm37PBCfkSe83bvKY8w6bczRSzXOUoq+Ygm1o/giRg+CU2D/TQer88//ev\nrV0Lk7sxwKmhKfoHslhr2+97lk4Ntu2F2koPG+iciTMmO53KdytMPkjzaPPG8GAtE9s7tpUsKjtt\nxWxNuTNr0TZngo2TVnHeh1PG6PSanfSPfdypRnFek11ga7eKxBjsYVuf5NVfm6BprvJ9Ddo5JUoL\nFwWiWIj45RrPjn2Du5m9/P6dnyY6kUIJt3iDp9nLbYaMVQ5oN/AqdW7Je/kqn2GTXiR07jHE2/XH\nSGtJ/mHwS+SkOHXRSwuVR3rf4XToHIezN4koeWqHZFalfkxZJCSWGF9dZMJYphVxEVkqILgsxH4T\n+iz0pEA9rHBPHuCmsI+b7Kenf4s9ooxnW0NaAddqm7G/XiXbDFN8zE9zXKZJiHZTpWs5z3vVE/w6\nP8M4CxzlKj1sImDRs5Xi2NkZsgcj5PojDJU38Xy9RS4fpvUzLiwXCHQyCYffWafrvRyuF9pcfvIw\nF9STuLwtqi4/Ffx8gr9lcHQVfgSQYCvaxYUXHmU1OIQhigwcXycQKmGJApddx6gLXqSoTvn5IIfN\nW0xoy9ANjIEelEn3Rii5/Z2/pOcAHeSwzpRrFiWlE7lRRRo0mVAW+LmZ3yLy/7H33kGS3Ned5ydd\nVZb31d3V3pvxfgbADAASBEjQSaK4XIkiKR3vpDgtqY27W+m0cbt3odg7xZq4vV3ptNIabVASGVpK\nlCiQAkiCJNwAYzAYPz097b0r76uyKs39UZOYGohc4ShqBGL5IjqqujrzV9UZv/jmq+/7vu8z81wK\nHebPJn8KWTLoZ5VZxklU0kg1i7MDJ6l4XMRJco2DpMdi7OmaYbS0TCK3w04sih600HSZjlqKfuca\nMzt7WLk4xu/t+QfM9k3w+cBvURXdqNSIkOEwlxE0uJU6gitQJxjIteSBuB/E9n2HRxrNVeFLv/ox\nDhT7OPTr/8+bumV7VqMd2t2fdv8QO/NsL/bZr4nf45hG23ObzrDdBOEeEMK9m4PthQL38+y2U599\ng6ly7+ZiF0ftdeyiqF1shPvVKO0g3u430i6DtM+1P1+7n7YBfOVzn+SG5wiNf3QHau9MwIYHBNop\nMUqW8F1FtY4omky5ruMK1tkxOtnnuEYNlWscpIlCXVSpSm5uCXu4yT6quPFTxEMZGZ1JZYYecYOs\nGCIsZAjd7ZgTnSaSZJIxgjRlAY+vhIsqliAgCgaOUB3XVgPHJRPqUOlyUseJGLVQtQZKWSesF+iW\ndugJbRCUisiWiZAHuqA2oXJ7aBw6DIJaDvV2g5LfS7YzRNhRQpOd5AgB0FFNcTR/Hass4FstE9ou\ncOnQIbKhIJ5KFWE8h1A2UZ111nYGWa0MUO9x4e7S6N2zhRgEJdjE7a3gRCNo5fDoFfpKW8hOg62j\nUa41DpLyRJG6GwznlhANEzoMuvRdjIbEliNBJzt4pRLFUIDiYQ+ZqI+UP44gWzhUDSto4hTrCAZI\naaM19FsB6YSFXDKQF02ogtuo4d6sIVggDrUGTASlPF7K7NBBNuwn7E7hdRepyw4aKITJ4nFX0B0i\naSmEVy7To2+wIg2wLAzSFByURC9hfxZpeIFcJEDF6UYSdRYZZqY0hWungRhrsmN2UVn1IvWbCAGL\nHToJkXsQ2/cdHk0M3WDxnMZQ3ODox+D2RShs3K9RtgHWpg7a1SDtnYxvLdi1T7exqYR2kG/SAu23\nNre0d0HaPHT7Ou1dkO3NOu0F0PabBrRAtt0ytZ1Saf820K5msX+3uW/7GthZuA4Eu2HsGLyybbCc\n1DD1Stvq77x4IKC9STdpIgQpYJoiRcOPQ2oy4F/kjP8FDnOFDBHKePFRoix6WXCM8ApnmLPGmDDv\n4BeLBIU8AQqMqXPUUfkOTxAie3duYpWmqVC1PGz7O6hLCt1inaiWAQFqqkqlw4m5LeK4VIURaLoU\n8kKQnE9AEi3ULYtwI8uYsoiGQkTKUWiEqOoevBMlmicULnUdwucssq9wi+hcASkIhlvGCgj4gyUG\nrWUiZpZgvUA8k6G64kVKClQ9LpaVQbaVGMPBeYTTBk1ToaEq7KwnmMnsw9VRYWJ8DqMfdEPGI5QZ\nMpbxlivEGkm6mtuoSZOUL8L00BhfNj8GwEd5hv7SFk5TIxMKENWzNE0HQSXPKHOEyXGdA2gTMlsT\nMa5wGBGTDmuXseY8br0CuoC0abREbwJYAyJWQ2ylIrMg3K0mVUUVOdzkgHGDoJ7HZ5YwTYFa2ElT\nFhlgBQ0nRfwMsNJqQZdrrEZ76GjuktC32BE7WZSHSUtRtulCjVWJx3fedChUaDJnjvHd2hM0N9x4\n3TkExaJZkHBqLXvaPEHkd5gU6+8sNJPyF9cxjpWIf2qEraUdGhtl4H6dNtwD2vb5jTbg2cXHdu63\nHeDsLkeb07YpFttp0FaatL+PberUruW2Ox/fqiyxM+C3Og2267ErtIDbbm9vb12H+78F2P+/wL0h\nDfZrVtua3piX2OkOjC/mqVxd5Z0M2PCAQPv63Qw6iZNcNUy+EuZa8BDDznlGWcBHkejdbjsTgSIB\nznKaGiqGIfJy/Qwdzl2mlBmGWWKbLpYZZJ5RdGQUdMaYY6C+zmhxDaMiofsEzLCJI2/SkB2UVS9p\nIvgbFUK5JYhAqcvHrDDOOj0smONcbxznZ8J/xFONb3DohWmmJyf4y8EP8OrHT/Ok53keD72AqtTZ\noIdtTxePvfcVeuc2mXx2EZe7Tl94lY/wNfZV71ARPXxh8Ge5sHSGgC/Pp578z8iRBj1s4qTBpiPB\nsjXIWeERhvvnOJ44z64rjlrQsMoK25EYOdWPXG3S/+IG4c08joaBaMLm3h6eH3qSa9WDqEKdEc8C\nf9bxcRQanBTOc9l5BBGThLBBDRc5rLtdpRarDHCWRxCxmGjOMrG7hNvVoO5XEI5Z0AdS3mBgcx38\nFsYHQbxBq1lpHKY941R9Kp/Xfwd3WUOutlrmdzsirId76WMVmSZNZCSMlsyPMjt0si11UZACaIIT\nFzXcVMlZIZLECQgFfp4vMM4sc4xREnyEglm6D91EcWkUTT+lAx7MADjROMFFbjP1ILbvj0gYvDpz\nik/9m1/ks7v/hFG+yyz3MmNbe23TD15a9IlKC9Dq3GsHp+3Rfs0uWNqa53be3AZm7q7VnuHDPQqj\nwf30hH0TsF+3gd9+r/ZvADbY2+3y7RLFdm68HcjbM/23arrtG9UUsDR/gk/+v/+MpeRNYOv7XuF3\nSjwQ0G6ioCPTwwaGLLMm93Mrsx+Hq8n+0E0cNDGQyBOgjosVbZBLxZMUjAA5PUSqGcMd0TAVEQ8V\nZHRU6lRxU8aLXpcJrxWwnBI7rji9u1vI000aVRlFNCkPOclFQ6iGhleuQAzQoVLxsGQNEatkGaiv\ncSN0iILfS7HqY0Ddoqu8S09hi0AiR8Hp47Y0yXX2U8NFB7vIgoF3u4rraoO1D3dzOzHBojXMsdp1\nHGITPSCx1NdH1ZwgkEjSIe3SwyYaTnbFGBskyBPkiHSVE9brbBgJonKadU+C845jaJKTgFzA06Uh\niBDVstxWR7mR2EOaGKpcx0Jgmj3MqWOEybYmykstL+8CQXQUguRJ3OXXs0So4sZDFYeoUXR52XLE\n2ZK6eCT8Om5XlVzDT6nix/SAs7NGgBIWErneEGk1RFH0U256iJsp4qQJS1lCksCOEec18REcaOxp\n3iZWymGoApuebm6yj4IYwLIEMkYYWTDwiSUmuU03m1Rx46OEjswGPYSFLFOOaTodO62N2jR4j/cs\nmkNGwERHZrfS9SC2749MZMsml8o63VNPcwQ30Zln0S2zZTPK/X7UNvdrZ6W2YgTud/iD+zNTm5po\nB8p2WsTObO2ipJ1J21m1nUHbdIXNOdu8t31uuyVrewu8+Ja128+3NeJv/fzt/1P7UGBEmYtTT3PZ\nfJQ3buvf46x3ZjwQ0PZbRXasTvqFVTxqhZwYYnunj3rdAyHQcJIlxHUOkiPEmjbIrdQhGk0Huq6g\nGzKix8LhbyBithz5zGTrb5KMo9ak784WGz0JpscmkKqvk7i2g/t6HWNIou5Uqe1106vNE3CWqE6p\nmIZIecdLJeTlqcqLuKQ6+W4ffilPET/auMJIfonQTg4lrJGUYtzgAOc5RYgc3foWoc0Srg2NcsnD\ndPc457uPc9U8zOP6ayTEDXpZo3dkhVnGOSue4UnrW7iZR8NJSfBTw4WLGtFGjqH6GoOuJXZdMWb8\nk5zlNF6jzJQ0w+wxFb0pIdZNzrmPM6eMtIy0XOtvdiTWiy4Umog+kx59ozXpRR5AEZrolsyIuQAC\nOMRGq+VdK+NoNpj3DTEnj7LMIJPSAnpAYNHXxxxjSJbJgLVCfHKXquBmhkmC5Cnj4ax0minlNhPM\nkhA3CRp59LrMn5b+Hk+6v8WjwqsE1mrcjowz5xnjJvtIEaNhOdjQewgKefYo0zwsvIZq1tnQeikr\nXoqinxwhBlhBwkClThOFhLXLB6xvc8E6yhvWIcqmj3rlx4XI+2MbS9jhq5MfZMXdyy+V3sBMZ9Fr\n90/4sbPuKvc02vZgAjvDbbQdC/erQWy6pd2YyZbYtZtG2c55dgHU7r6UuKfdhvvB117D/hx2tmwf\nx1t+b6dc7FZ8W7fdbhdrf443R5+5nWjRKF8++mluVPrg9rPf76K+4+KBgLbarLOjd7LgHKFb2uQp\n+ZvM9E/hFBssM0ieAE4adLNJljAhd5qf6vsvLFlDrNSG2EgP0pQV0kS5zGEkTDbqvWyv91EKBQh4\niry/5wV2wx1cUI+zcmiAU70XOP2+19gNxrAsgX03ZnE3qqS9EW6dmaQo+PHM1vj0v/gvdD6yy9rh\nXiq4qOAmr/rZ6OkgFkthYhJQcuwSo4SHAHmquLhjTlItukkfCLP4RD+1AZVxZhkXZjEiFsv0UcHD\nL/H76MjMMsQx4w36WUWXJGqoFAiQIcKmq4Mrzr0kxE22xa43vVb25mY4nTtHqVtlW+3kOfFJdqUY\nfop0sU2GCBU86ChkvtqB3nDy+md2+MTOnxNtZljsH6Emuwg18wSLVRZcg9zxTOCjzMzcXp6b/0kc\nww0Gu+c5Fr6ArNSxJAsTkYucpKe5xUfq3yDrCrCkdHKbKc7wCiPMU8fJocJNVEPj5fBp6pLK1koP\nl3/zJLEPZZh8zyyHrtzCHBdx9DU4xiW8lHELVZ5XnuR2c5KL5RP4XCUeLb/Kz25+hRd6z7AViBIk\nj0odD5U3bxJl2cef+H6SbbED1dD4cOUv6VJTnH0QG/hHKSwLzl5g94yDb3zh1xn/l1+i41uvvzmx\npX1qjUVLitekpSh5q6mTDaTtMj6buoB7SpB2K9b2zLjO/YZO7eDeng1LtBp0bEmgzTXbN4d2WaJ9\n86hxr9XePtb2MmnXo+tt69rZfg1IPnqAO//zz5D69xk4u/22L+87IR4IaK9VBsiVosxYexF9MBW+\nxQnvBVoagyYb9OCmyijz3GA/lizQ5d1ktdqPpqtYdcAQqOJmkWESbOM0GzTqTlKNOEv+QRYTA9yS\nppjRphh0rxFoFhFXLRz5JslgnLnAOLqhkAqEWe1stb8HSgVqA04Mr0TIzPGQ9joNh4wpi+Q9fvxC\nEaEJOSGMiUSYHIOskCOIKBnc7hjH4R5gtbeHNFGipJkUZsg4Q+QJUrCC+JUqXsoMsUxOCJEmQg0X\nGk40nDhptBp/rG5eN44hW618o4SPrBwi7wgSLe+yafVwyzNJmhi6KeMwGmyKPYiiyR6m0WJuLF2g\nKTgwnQIOUSMiZLAAv1gkK4dYk3rZpLu1ed1QDrupeGIoco1+IU7SEaVL2CFkFjhUu0HdcPFt6QmK\ngodla4Ar1hEeqZ4nSg6Pp0pZ9lIQgmSECEXBT9IdQx5pshXt4qzzETZ6+0iGYyxZ/dRNlVPZi5zO\nnUPu1pEdOi9I72FeGCUupel1b7IsDbBJFxEyqNQYzK4yNn+FZlVmxdfPC/seo6q4GaqsMLi1Si4S\nfBDb90cvkmnyC16uTXcRPDxOSM7i/PYyNIz7OF37x/bnsBUh7UZT30uJYQO3Xa5r54vbnffs49pp\njfbM2aZJ2tvi29Un9vP2aTLtqo/2jsl2uqVdX96eYeuA4ZQwnhhgd/8YN25HKMzvwO4PPkjj7yIe\nCGjfzB2kvuFjthpC6BOIhpO8j2/TzSZNSyFlxACIy0kELKq4KeFjq9DLbiqBUACxw0BHIkkHwywR\nFTO4XDVqkoO6qHIrPs716l62iwlOOi5x8MotlD80iXQVufXUPr74c59o8d/IyDTZwzTe4SIXPncE\nx26Dsdoin6j8OTf0SdYdCSpOD0bdgVS32HT3YkkWnezgoEGMFA2ng9fGT9BEoYqbDXoYYYFe1lmn\nlyxhGoKD6+oBImR4L9/lFekMt6w9aKbKsLhIl7CNhIFCk4wZ5Q+an2G/dINj0iV26KQeVFE8Gk9v\nfhfJhKLbzyLDbJldlJp+kOEQV3lK/BbG+2VyBOkWNql3KJRw0c0GXko4ZY3FYC+bZid1Q8VBg/7+\nZTz9JTalBLogM88oy8ogPkp0Gjt8pvBFnhOe5v8I/xOCQo4mCjvDEtKKAAAgAElEQVRWJ7WiF8mC\nmtvNDf8emig40XBTJTCYZ+w3ptFQOMsjvPCkgoaTsuUlacTp3Ezzc7NfJuB/nmanzLwyQpI45/wn\nqfpV7jBBxoqwyDBuKsgpi/Dz38C3W0LqhXNDrbqG2qhjbUNA/hvZsr6ro3qtzOqvzLPzOwMkjltE\nb6Zgp4zVaOW3dsZrc8Ptg9vanfPahwC3t5y3A7F9DtxfRGyf0Qj3mnFs2sI2qWrXhdtFxPZ2dvv9\nNO4flfZWXXZ7gdMGbZuaMWgBtp7wUf/FY6TWeln5/OLbvJrvrHggoB1ZTLN51gfjQE/LV+MNjpIk\nTr+xykfnn8VURLIjfnrYoHp36kkuG0bSdFwTJeRgAxELF2VuM0XD6aAzscHD8quckl9DE5z0q6tI\nssllcT/O7hr7j9zmjccPUt3r4GP8Gev0sswAiwzzDB9hL9M8bT6HI6iRVoJEc3kGZ9YRTYvzTxwj\n6CgyIi7xsPgqL/IY3+ADVHHTzyq9rHOD/Sg0iZFCwmCBEbKE8VDBQKJAABOR7ruDAtxUqTZ8zOcm\n6PdtEPAU2CLBVQ4hiiY/4fgqo8ICYTKU8BEmy5g0x1Y8hp8sn9K/yDPSR9kQu1EcTZbEIYbNRU5r\nrzLVmCMvhSi63UTI3C1EBvBRwolGmhhHqjd4qvISYtNEr8vUUcl0+9FcDgwkKnhIEyUmprgcPsDF\njWNsXenHebjBYOcij4ivshnuAPYyIcyQJE6eYMv/BScOGhzgOnVULAQGWCFPkBX6WZUH8A4WyMV9\nrAcTeKjwNM+xwiAuagywgp8is9Y4rxqP8F7pu1jd8Guf+D85rF1lyrrNz6S+wnnhGFlvkOx+HyXX\njzntvy6u/J5A5aFOTv/Whwn/xwu4n114MzNu12K3c9Ey98C8Tou6sMFbants54zbHQTbwdamJmzK\nxAZ3G5jbtePSW9aygdtew5YKKm3nNN9yfLu/SHtR0gKM9w1S+ewxXnu2i7lzDwT6/lbigXzyycBt\ndhNdGCEHeSHEfG6CZWOEdecqFbeXh5ULeOQKScIEKNDFDl4qbLr6KFT9mBsihWYYyyOhluvIwQaB\nQJ5T3lfZw02C5CnhY1BeftOUvz7goPS4m/kjQxRifiJkMZCQMBExaaIgFw361zeoKyqCICA0IVAs\n4zbqbJg9RJxZAnIBl1BFRyJDBBGD+l0+eveuF4ZlCqQKnQiSidOnkSGCjgwCdLKDixq7dLBV68Go\ny5wUL3As/wbjmVm6xCQ3A3tZd/Uglyy2nVUqqof1Zi8RMvRI62y5upEsCb9R5IRxkYOGC0ejyZdd\nPw2ihSiYdIi7RHcyNKZllGiTcsJDpqdIQCwQNnMIuoRmquSlACEzj1uuELRyDBnzaLpCQfSTbHQh\niQYbjh4uqMeZcY8ju5tMSHcYFWZbRUFVJk0YAYM72iQVy80e5zQRIYPfKjLGHDVcmLrEeG6eq+pB\n5vyjqEKdcsDDTGCMLCGaKHSxTY4QBSPItL4HWdYRBZMutlGps+uK853+97C22Uct6+GXG/+Bm8E9\nTCuTnIueYLU6CLz2ILbwj2ykbgqAG8+BQbr2C3TpYXpeuY5Z0+5z7mvXZLfz2nC/B4kN0u02rvZN\nwAZNW9bXrp9ut0BtfI/n7U1AcH+Dz5vUBvebpLa79NnKFfuYdmdCwa2ye2Y/6f1jJDf7mX1NJDX9\nznPve7vxQED76OGLXJw6RnUnyI7Wze5WArFushZZJe/zI43o9JlrYIBT1BgWFhlkmUJvgFQtRvnP\nQ2weCrCRAFZhz9R1Dvmu8GHh62wK3bzOcfZxkz7WEDHxU8Q3XCI5FGKbTmasSUqCjwAFBCwUdA5z\nlaO7V3A/38TnaWB1gjUCVgc0RYWcFGZJHkKxGsiCjmUJxEkSsIoYgsiSMESOEA3TSVLrYGNziDHX\nHfb6bvId8wnyQogeYYMeNvBaZd7gKNcKR/DrJf5px//OyPQqwZUKiPDcVI4/7fop/mTrkyTC6/Q6\nlrhUPk5QKBBX02QcUbakBCvyACe1i3QVk+h5F99MvJ+kN86MNIHmdNLxeprjv3EV6ahJ6QkPYtwg\nqOQJNfIM1Lb4svpxXgw9wqR4m4iQJWakOFa7ArqAIcscLV5jS+nkrHySi8IJNhJd9CSW+ADPEibL\n8zzJBHcAeJHHebH6OA6jwR5lml5pvWWxat7EECT0ukJ8Mc+F+EPc8u1rTbyhh3PCQ3gpIWGg4aRA\ngOv6fm5W9pPwbjHiWOCM+Appoiw1hihVfJy7eBppW+LTJ75EEV+LymGQ2cJeWnMKfhz/tUjdFPjW\nLwv0/dZT7P/Vo4Sn15E3k+iW8Sbowv2UhN3AYhco231BTO4pP+S7x9imTLbHiE2PqNw/kMFu3rFp\nC7inNGnXWNvDEdoBuZ02gXuUTY17Wb99IxHvrqEIEkYswuyvfYqbN4KsfW7hb3Al3xnxQED7heL7\nCJtZGi968XRW6DyzwZR5m7rDwSYJFJoMbK3ReSPN0KEVtC4FlRo/If0FiZ5tLv70KfLBIJrqROww\nyBYjnJ89jWuozrBz4U0gWaWfIn6OcJkturhiHeGl6uOExQyPu1/EQmCLBLfYSzcbDGpLiCkLhkCb\nUsjG/bjDVeL6Dr/Q/CM86xX8pRJCj0U60MEtaT9vpE6iuDWCoQwB8qSnO9i63A9HDJRoHQHYK06T\nIkaOEIMsc1S/jKfawO+uYtQkeqd38Zj11k79LhyqX8f/UInDnVfJuQNIGHyCP2dcnsGURIbTa0Qd\nebZCcf5Y+QRL1THKC2G6/UuMeu+wwkAruw0qWEeuU31Cxjhi0VPc4ZpvP0lnlHF5jqm1aRLFLZYn\ne8i4I5REPwPqKpKgU2+omHMiXSR5qPcS8/ExFFdLHlhDpYGTE1ykjkqSOBU8mJJIU3CwLvQSJE+a\nKGtiHxEyKGqTubEJrjsP0Gts8Mnsl8k6g1wP7OUYl8gQ4SInMJCQZYOQN4dXLlPFzRUO08kOk/Jt\nprzTZB+O4qnXeDb8Pq5795EjhIFEWfY8iO37ron0f97m8qiftSf+LT956Y84Nv11Frm/uxHub3G3\n5XM2INpZb5V74FjjXnONxj3ao33QQrvKwwZrG8zhXnZsT8jR2tayz2u/odhqmHY7WbiX9cu0Gmcu\n7PkQXzn6SVK/m6M4t/M3uHrvnHggoL2SHkTJNrGagMNAUHVcShlLdN8lKwTqqOSEEJ16kkZTZk3u\nISxmSZhbiCWTrvAmvlABd6jKtHaQleIQF80TdLLNPm6ycperzhBhPzfIE+Smto/518dIeLZIH4kS\nETOExSxDLLU6E30aa2PdaENOigkv2+4YVcWL2ICImKVjI01iPQkKTDVm2ZB7WNVHKOOmgYNRFpho\nLJIrx5h1D5FQN9lTv4PXUcEvFSjhb82CxKCPVR6rvYSelAnNFlA6jDe/P3atJQkF8/RMrrFNJ3kx\nhE8q43WUMREJZQq4PDUaYYGkFGfeOULT5+KgfJEgeRYYafHYcZGdJ2LUjijInTp9yR2aLgcbngRV\nWaVX2sYt1JEw2Sz3kKlHGQos4pOLVAUvS06LmulmxRggacQpF32QlUnGOtHcKhU8pIhRxY2XMl2O\nbWRTx08RgIIQIE+QLRKYisityF5K+AjqBUQM3FQJkmeLREuzjYMOduljnUPcIE2YbbOTRWMYRWrS\nKW6zz3GTbF+YHCHmGWabTgC62cSvlu9OD/1xvJ2oXitT3VbZfnSQIR6j01MhMXqRcqpCcfMeX221\nPdrg+9bBA9/LYwS+/2AD2o5rb+ppz+Lb1SwN7l/XzqrbLVnh/puJLfUL94I75mV99hjXrTPcrAzA\ny7uQLP8gl+0dFw+Gjd+EzYv98B6DZpeXenGQZkAh7MjSQZI6Kje697DZ1cPfr/45ombwinwGC4Hl\nlSFmf3cv7/vkczzS8TJR0jSCbtbUXubkMUr47k6x6WaOMYr47xYrmphlEfMLDm51H2B9bzcfdD7L\ncfF1jnGJbjZI94e4/umDJIU4KSFGihivVR5jt9HJvo4rfC77e/TMbUE3HMldo0NMUjjo4w3fETSc\nnOI8p3vPE1dy/HrsN+jVN/lY8Wt8JfQR3FKZIZaYZYKL8lH8/hxji/N4p+sI61Zrl0WBh4A74PxO\ng35ji77wNlueTv7d0H/PsHOBD9f+EisnIJkGXipMcZt4Z4pgRx6vUGabLmYZ52meI9Sd5cZPj1MX\nXIRrObqNNF3WFlvEuMQxLg9ahKw8ncIOi0tjXN4+zp79t0gom1ScHmaOjHNRP8k3G+9HkCwaay70\nSy6cj9WReps8Zz2NhcAo83xM/DNczlYr+kkusE4vSwwhYTDPKFskkNFxoqFLEn8U+xlOcJFHeZnf\n5vPoyBzndcaYY68+w97KLH/g/VmeET5EqhrF7eqjy7FNlAw+yrios8wgOjJB8nyYryN5jftmof84\n3kbspuErz/KM9ThbAyf44mc+zeYrS1z4aqvg2C7ns2c3tuuwufu77dBnA6/Udp5NUdjFSztsILat\nUfW2Y+xz7c7NdrWKTasobb/b7oHtDT827TLwMEQe7eRT/+o3uHy7Cbefa+nX3yXxQEB7YnIaX6xA\nsCvHlOs2e8RbFKQAHekU49sL7PZH2fHH0EQn19Up+ovrfHjtm5QTLuSEgfTTGoxYiJi4qXLQcxlN\nd3D9ymF2u7pI9cUIk+UIl9GRqeFmg15yvhDRX9pBKBjk34jwSu/j3PbuI2iUOBo8T9SVpCS1xl1F\nSeOgwT7fVUZNF8fFiwSPZ7gxMs75zlOUBB9qo857N15mMjzLcmcfQfK85j/JrGMSXBYJ1ql6Fc4X\nHuH17HF8UolQIM2IOsc0e7nY70cKmvRU1hktraCgc3lkP+mJKK5cnfcUXiFws0RYz/Fx8S/wBUoo\nusXF/iOse7sp4KeTXfxCiXWhhz7W6GGDYRZwUacieCgJXsauLtFV3iU1FSTpjuKq1fnE9leRAg0y\noRCvcAZXvMJx3zlSrhhVXIiCiSBYOGWNHnEDRWiSi0RYGx/ite1HYc6isBMDH6z0Wjx74INMyjOM\nMYsTjQ16uMJhGjhwotFDy/ckRZSCECBIHicaCbZ4iHPcYB/nOYWOzHxlkn+zMUyl30HKFcMwJCpW\nK6tfZpDrjQPMmyM0nQ6CQo5xZomSxhCkv37z/Tj+apgWFrdZSIn8oy+dgdMfwfnPZX7qd74E69ts\ncb+kr90+yZbcNfmrShC433CqffSZXUhsco8WadeEtwO3rclub1dvb/yxs3dbg20BXQD9CZ775U/y\n6m4T4wsFFpO3sazv5wb+oxsPBLSHOhdxdVRo6g7cjSo+rYomq8TMFBPNWXasGLtmJ2tmH01JpiE5\neVw/S9hIcch3hfcf+gbjgTskmtt0V7ZJqh2EnRkkw8QyBExEGjjwUEE0LK4VDrOldBH05Yg/nGRj\ns58bc0FSZoyiGUA1GhiWRbCSpZFW6Y+s0OXdIkKaqJpCR2aUOfR+kVv9k7zKKdzlOvuS0xyYvUWi\nfxNHZ5UABdbVHhbVfvZxi77aGlZVwGoIaKg0BQeGBegm1ZoXp7+GP1KgiAd1Q8NXL7Pe201F9xDb\nzGLOirAEqqAxXp/D8grUDScNw0Gz7sQsy6iqhirWMU0Bn1QiTpIpc5oZcYqcHiJSyROpZPEYFbJe\nH860RiybJSJk8foK+K08c8Y4QXcBp69OAwcWAorRJFbO4JZrqO4687VxsmIMKyawvDsISQHuiDiG\n61S73CwwQpxdNFq0yXJ9iBv6QQTF4Kj8BuPSLGmimIjUDDfFaoiMHKXk8hEhQ4g8O2YXM9UpzJpC\nVoxSN2RKpgevXKG+7mJbTDDbP87lylE29B5GlHkcUktRnCNIgMKD2L7v0tghW4avvTGEe6Kf/lGV\nSXmZ2PAscl8K9WoOK994EyhtHbeDFsDaqo92tYmdDds0R/Mtx7zVO88GZ5uOaddpt/tytytD2ptp\nFEAIOdAOhsiuRskwwfXAMdau16hdXAF+tDod3248ENDuZAevWebZ6ge5kHkEuWQRG9rkkegriGGd\nFbGXOXOU89pDDDqXKfoDGFMCp8zzPKxd4CHhCjl8mDXoWszweuIEix2DOI6VSIjrxEjxXd5LHRVJ\nM/nm3EfoC67w1MTX8VPiZuc+NmOd+KUiUSFNl7VNWoxye2Ufyy+M03V6jYNjb/BhvkaBQEsVgsIa\nfazQTwOFp3a+y8euP4PzcoOMFMBxuIGfInuZJkKWbjYZzq7im6/z1NRzTERuIgkGZ4XT3Cgf4pub\nP8FnOv8T48E7pIiz3NVLB0miYopT25cYnllFudoEDfR+iVQ0SLNbwlFqcPzbl3lYfp3alItvdz+K\nWy3zocZzTDumKAteBvQVyrIHuWzy2PI5csNeMlE/Dlljz7lZ8hthvv5zT9ETXmPKmuHntT8kK4fY\nlWJYCNRwYegyh1ankTxN5gcG+PX0v2ajOgSCiNCtgSRgZR34T2QJjGVxShrr9HEFjQgZFrPjzJX2\nIIVqPO57kROui6zTSxfbrDQHeWb947zuO0WwN0eGCEHynDbP8szWxxmQV/jHE7/Bv9X+ITtmjF7v\nGut/MsxGbZDp/6FIKttFqF7m/YFvMSuNcY2D1HBx+sdN7D+EMKj+6QpzX/Xyr2r/He/7h7N89Bde\nIPLZ89QvZUjTokjsrkI7+2133LOjXX1iZ+Ltem6787HdVMpWiehAgPsHHbx1pqMN4jZ1EwPcYz4K\nv32Er/7H9/Cd3x6j8b/MYbzD/bD/pvG2QFsQhP8J+CytK3ET+AVaFNiXgX5gBfh7lmV9z9SnuaRy\nZuAVUq4YN6IH2PZ2kzEiXNaOUHO50ZHJmFF0UUYQLJJinG+I7+fl9fcQ1bL0d6zgdpQQLZN6r5tb\nninIiFRfCvL88AfY2N+LKYlUBA9FR4DowA6W0+Ri7SSV8wG2Kt1UokEOj19DKhpcvXCckw+9xt7I\nNLunbiDGm3SxiY8Sx3idNDHuMEkNF2BxnEu4ohVeP3iYZE8MX0eBQVao3C3ITRVvIvynLJJcQH7S\nYMJ1h7rk4BynsBBwCxU0ReG6uB8DizgpPFKF3twG/de3CHkKOOMNGIBc3M/u/gjb4ThBMU+vsoGa\n0FBWTOTvGBwZvo7c28SXqNMrbyAuWajPGcSeztIYlGn2CKieKg6rjlJvktzXydZogog3TUjM4WrW\n8VZrXHEd5rJ8iA8Vv0lDcTHjHqUjkcShaGSFEEOhOeo+B2XBQ1DOUnW7WfKOMNkzjWI1uJE7SEEN\n4nRoJKU4k4FbNCyZc5uP8KLrSYrBMIcjl6gqbrJyCEdnFdVRRTOcXMkdpyT7cHnKJD1hvHKe29IU\nWSMMgF8oMfDQIhXNw7I+QF9oiSNc4THxRQasZS41jnMx+zDrngHgT3/gzf833dfvmtBMDK1GjXWu\nvtggvz2Oa/UIPe9JMf70HJO/f5XanQx3rHsZsF0ItCkOG5Tfahz11s7Gdm/vdnc+W0Zo897t43Tb\nG2zGBFAmI9z47EFe+PoEmzMxtP+ryOJ0k5q5AZX2OTrvzvhrQVsQhATweWDCsqyGIAhfBn6GlqLm\nO5Zl/UtBEP5X4B8Dv/691iimAnQPbXLIcZWy7CWjhqAuUDU9LDOAlzIOscGgtExAKFBKerlxe4q8\nI44/UuGQ6xKd8jYyOtvxLuqoqIU6Slpno6OXhiUzziwNHBREP0pIoyy6STciePN1rKKI4tARK1Da\nCbJ4bZzHp77DeN8M/VMruCs13KUqosdiVFwgRppXOEMNF2GyDLKMR6qS8ke42refMWWO3rvzLL2U\n6TK2qGxWULwNRMWie3ubTDGCP17GKy3glSuYXglBMckSIU4KAQtnsUHH5RzyiAm9QC/kJgIsH+pj\nmy5G1hZwLdVbE2lMkHMGw3OrWElgFeL7MggFC3kdEqu7aE4Z0wJTESmIATa1XooDXnSnRIwUsVoG\nd62GYUrMaeOc1R/lWP0aaSnEmtTHTDSFjMGWkcCqQURKEgiLuMw6WTmCpOjIloGZlcllo/jjOcoO\nLxv0EPTk2GveYHc3wWp1kLQcxx/MURY8bBndjARnGRPv4NNLZJsR1uhFFcqE/Bni4jYGElExTROF\nhuXAMV6nrjlJFvoY9c8z4ppj3JhFMC1WrEHMhsSyOvQDb/wfxr5+d0UT2Gb9GqxfiwJ7GQ8WMIc8\nBNx16uES691+9vpmCGYzaDMWde656dnyu7dy1O3ZcXsjjp0tv5XHbh964AKCgDUlkAxGmStO4twq\n4HR7mR86yLngEWZ3A/DHN+5+Ens88bs73i49IgEeQRDsa7lJazM/evfvfwC8xPfZ3EmpgyWG6GWd\nWDNFo+Fgj+s2CWmTAIUWHy1U6FCSrNLPzOuj7P6PARz/oonvSI6g1BorVUdFxMBJnVA8y9AnZ+lw\n7NIh76DhRMAiYmS5kj1BwynTF1ziV5761xQsP18UPsWl3HGy9RhWB6TUODt04aDBI5sXCTSLvDp+\nAp9YIkKGCBmytDI/DSfjK4t4N5ZYPjVIMehnhQGaKC1/b79F6H9T8OxasNjAc03jSOwmkz+xQM7j\nZccZYz36PBtCDyW8qNRI0sFyo0p45waypLWucACKXh8b9LBJN/FvplB+10B4HDgGPAlcAV5oPar/\nVIeTwOeh99IW1lcEJN1g/ulBvjP5GL9j/gM+aj3DkzyPE41Asow3Xyc77GMlN8C13FGeGfggXm8R\nDSeXOUoDhVwzzIXXz2B5YPixO0xrUyQzXdQ2gpy3Hm0149ScxH0pfJEit5lsTbb35Hh6z1/wcv4J\nrmuHOCc+RL4awqqI/FrknzPmmKUg+RmILdAUBGSxyaOel3iI8xzgOlF3mpfMx3ih+R4MU6JRVNE2\n/Gz197Ku9kJTYFEZZsXZxxPd36AoeJn//73lf3j7+t0bGnCDxW+abJ5187XCk1gPTSD/4mHO7P0V\nTrzyPLnP6dyENyWX9iAEe/pNe9HQfu7i/pFmtp7afke4pwCxaNEfewHP5yXOnjzBV6/+Fn/2+5cQ\nLs2i/ZJOvbzIPaPZ/3birwVty7K2BEH4v4E1Wpr65y3L+o4gCB2WZe3ePWZHEIT491tjNdTHHy59\nFuVGk9VMP4as0vG+JKaucOnOQ8gHNRxhDaem4XLWCI4XeehX32B17zC5aogr6ycQTRPZ1cTdVcQt\nV9GbCju73YwEFxlV5znPKWR0EuIWovcieTmAKDbJeEKkiFO0fCTMdSaHbxMOZjgeu0CYTKs1PaLj\nMYuMi3dIEWWXTgwkDmk3GGssEDeTdKRSsAsjjXmWGeB1juOngHehSnCmijhgYvhFsqM+sr4wulvG\nodbxz5cJ6GV6epM864kw6xyjhouEsYUS0vjahz5AyJMjEdomKqUxg9Ch7TKyuUK/dx35SRAOAN20\ndnw/rZFgGggWWA4wvCB5DcQycBViHVlOKpeR3f+OXmUVn1qigYNa0ElVcOLZqXNYvsJWZ4JdNcZM\ndYpy1c/x4Dkkh0nZ9FIpeGiYDrasbrJbcWp5H6YiEg/s4HUWqRpuHg2+yKCwyDp99LBBQtxCcTa5\nVTiImRZphhUMRURwW9RFJ7OMMyeMosgN9nOdBFuMCAt4KVHGS0xIcZqz7OUWkmhQ8AaZ7ZliRell\nQRthVe5ntLmEv1klpYYoib4feOP/MPb1uzdaea9ehXIVyoiwnEP+k2m+9OIgL629nzoSyf4p2K/S\n+egmj0jnmErN47+sUbsFmU1YpzUezNZl2005Lu61mA8LEOgDYR9UD6rciYxyUz/B1ou9CDfrvLh+\nG+VrBuuXB8jv3EJfzUNDbBXG/xsdN/d26JEg8FFacFEA/lQQhE/yV3U031dXs/YfvsB0zk/zjgMl\n7CR2NIxQh0w9yu2NvbhGS1g+i2ZDaQ3tHdkg/Lk82WYH2c0O7lzsRYo1cfdUCAVSdLvWkTSL1EYX\neSNMPaBSl1X8YpGwlEH1Vdlq9rBT62TeMcZOrZNUPs6eyC32917laM8bDOqrNJoOyrIPLSIjmk3G\njAVyhEmLUUr4CBhFRuuLRCtZlKxOLe9krLBAyhdjzjWGiAkFAc+CBjrURh3URxWyfX4aDQf+fBlf\nqorHquKK1/G5ylgIpIlSsTxkAmFeOfMw3cImY7gJEkHEIlLNMlFcINBZRowAnWA4BUxDQAqY4ANL\nBLEOekOi6nHgNhpIponukghmChydv85Rz3V2pRBbvhgpolQCbjJKmPBSiXgoybH4ea5zgK2qSrXu\nwWlqrUYny4lZFmlICiXLi6o1sKpVigTwiiVCUgaps8mIY55D5lW69F2CUh6PVKaED5dew9WoggVO\nRx2H3GjN/WyOckE/xbhjhlFpnkGW8VFCQ2XGmiRKmv3CDVSpjiFI7CpxfN4C+ZqHouFnQ+6m+MJN\nrr00S1YKUpF+cMOoH8a+bsVLbc8H7v6826IJq1voq1t8kyjQAajgfZhgv4ehk7OMyiX61zSkZI3S\nskUKgXVkSrhoouJExkTAwsKLjkEdgRohdGSvhbNPoHLIw073PqYb72VhcZL8UhkIwTdsZ+7Lf6dX\n4W8/Vu7+/Nfj7dAjTwBLlmVlAQRB+CqtlpBdOysRBKETSH6/BY785lOk03HmvraHeGyX0YevMhsY\npWAGCHSmqQkuzKaAQ21gSBKbVjdJPY5bqhBKZyn/RYjAz2VxJOrspnroDW8QFZLIks7LtceZzY2x\nN3yDmJjCQmCRYRbKE6RznYQ68xQWg2Rf6uTOh0wGhlfYyzSJQooUccyI0JK96RLBcokh9woZNcwt\n9vKSeppi08dPrv0l4WIeZ6nB8MwaRSlAc0gmSpr4cKo1bO8mqGtNYsECUsRE2AL/2Sq5Y342B2Lo\nDok90g185DnPKW5Je7nKIUBAwiBLhLOcpp819qvXyU14kWebBGZr4IRGr0yly4F/to6wYKDtgjoH\nlXE3a4ku+m5v49Q1Mr/pI7RSxjurwTzoDolCb4A7TJAiTvjIZdgAACAASURBVFV1o4zouKQqHiqc\n4CJHfFeouD00ZIUNeqiZHoxdCVezRpe4TXw4RUaPc+Hbp1mcHUeMDWN+WmI5McIh53Xen3uBm75J\nbnn2tixph0U6+9doqjKqWKNT3MVDhWI5yHpuiNOdZ4m609RwESTPDp2c4yE+bf0hLmqcF08xyzh5\ngngpE3em8FKmJPiQnjzJ42fKnMxc5oZviL/4ZzNvYwv/7ezrVjz2g77/j3AYQBUWXqO4LXL72QYb\n9ONqxhHLFmYVdBQ0ApiMYjGESBDrbr4tkqf1dXEe1SogLzQRtsH4ukhNVilZSzQKm1AxW+/zLtNZ\nf/8Y4P6b/svf86i3A9prwElBEFRadNN7gUu0vGF+npZjz2eAZ77fAjXJhStQIXZyG3NRZPmPR0hX\nYzj3V+n+wDr+RokgOUJSnlvZA6wXhiiW/LiXKlgrIlZCpBlUMEWLhqCQJUxU3eUnBr7CtewhNje7\nCXgLuJUqBhI+SgyoSyQC2zjlOmJMJ3goQ8XhZq46xsuuRznmuoKGkzQxznKaVWmAk+olvlt9H7PV\nUU4FzrMm9XFePUG1y8OguEx8NIUelWgEZEZYoIlC3utnrnOQnqUdPGYNpWgQTJehBM6gTiXg5rLj\nIC/WHueAep1Oxw5jzKHuNnHV6igxDa9aoiq7mGMUDxViZhp/vYrTpVPud/NK9BEqYZWIM8UB7wzB\no3mUARBCsFnq5hnxQ0w8NM+gvkR37xp1p0LF76bQF6DQ62XD6uFV4xE6xF3CYpar6mG62WSEBdbp\noSAFKIhBsmaYZKqT1FYn4aNpLEtk67U+SmshGjhxHSvSCLhxunUSoTXk/4+9+46NPM3v/P7+5d+v\ncrEiyWLOZDc7p+npybM7YbWrHUmrsPLpJBlnwcL5nAAbONmGbBxgwfAfwkE46bwnHJRWWoVdza5m\ndyeH7p7pHNjdJJs5VbHIqmLl9Ev+g6MFbMg+2aflzt3y9WcBrIcgv/hU1VPf5/uobfakEKveHnxC\nhUnzEWtyH21NJagV8VIj/umFzTW8jMiPOao94qR5i2rbYFEZIGrmMYQWu1KMxEwOWbCwj4pYgoxO\nk0GWEEQ+fa4dckKUjJrkuv8UHvnfa3j9v3dd/3hzoVXDaUGzAE009ne0/9bfjotqANvsf5j5293s\n5qeP658+j7P/Hyj87c/+7VW/h/4uf5897euCIPwFcIf97ak7wL8G/MA3BEH4FWAN+Mr/03O00Ijr\nOwhHXTYeDbD45xN4qZKQt+l/ZZUhbYnh1hJ9xXUqxQibe/04BZniGyrungCvQCBaxk8RzWPiKCDp\nNj/R+02EpkNxJ0zIKeKngolKN2m6jAyi4VCgg2aXRm9ymWI5TNkM8K7nWVRvGw91igTZJklWTDCg\nrfJJ5TxL7WEu6R+yofYwp40x2zXO2a5rnHZv4bgiHUKBMPv9xntykKZXRUnYxKs5fJU6+pqFo4I1\nItLw66zbvbzV/ByKYhJ29xhxFwiVqwTLFfyBEhXVywbdpNgiZW8Sb+egLlL1+tmLBPk4cIaGojHe\nnmcktkZELSJKUMwG2VC7WWAE4UkXj1lhpPGYVlwllwqyRh9FwszaE9w0z/CU/AE9bLBlpdDFFp1i\nhrvtk2yJXZQVPzXHBzUJY6/N0LkFakUf9y+fJHsjhdrfIPqVDNaIgd+pMBibIygWqTsGm3onR8oP\n6S2vU436KMlBZCyi5Oi0tjHsBveUaYa1BZ7xfkQ4X2bGM8lcYhTNbhMU0pwQ76CkbeqiF+WIiSyY\nYILWMInpO4TUIgYNFEzKsp+HoQmO5+7//y78f4i6PvT/xmZ/R7vG/p/x0D+Uv1f3iOu6vwn85v/t\n4QL7HzH/nZJsc5JbLDFMOdJB9lyLoy/dZvDIAp2k6SLDUHqVM9fuYJ/+Gt2Tq3zL/jL5P3lAY1eG\n8It8yfctzng/4bZxkj0xRAd7+7O3e7fo61zE7ymTYpMAZTZJUSJIDQ8SNmH2iAh5Er4sLUFjlX7S\ndBGkhJ8yCiYD1iqTjcdM++6xbPfzm7n/BT1Y2z/6TQQVkyM8IGCXWRX6mJGPEKBCmD28co07E0fo\nTmc5v3QLymAmJWqDGoJiMy7O8Z+Ff5c+aY1+d4U+a51vdr/Gcvcgr2hvkBXj5IjSzypD9VWUhsvV\n0FmKcgBBdBkR55Gw8El11EQb7oD1RzIf/bfnKZ/w8ev8Dh1WgXC+hG+5jTssISZdbGRucporzkUK\njQ4e6EfYdRNs5AcQPODoIvc3TlH36ajJGrJsMdE5w8WOq3g8Nba9SeSX2zwcPo6imxyVHhCN5vBR\nRRQsQuwRs/KcLN8neK/MRi3Fh88+zZq/lxJBygRoln2EKmW+mvi32KrAd/kcn7/8Hnq8ReDzZWa1\nMfxU8AlVrl04RVEIYQsCSwwzX5zguzNf4idGv8Xx1C3qeNA+7TN4xCSXbz4L/NH/h3L/h63rQ4d+\nFA7kRKSDyCY9eKjTObyF9arMi8e+T6hjjyxxsiSI+XIwYCN3tBn0LfFV/pDvPD3Ow+5JaEssmKPY\nNiybg5R3QnS30sgDFj69gqHXqePBX6wxUN3gXuw4s+I4ZcvPuDqPJrXICElOyGnKBLjhniFm5Zhg\nlppsMCtMkKaL/8P5FdJakl51lZa5Q1aJUXBCiIJDWujiIy7RFlUqgo86HrzUcJBoijquV2Aq9oiU\nvYEQcVEbbTyfNIire7SiHnIjUeqihzWnn7rooWL4EEWbMj4EXGxX4rJ7kbrs44RxD79WIitF2SbJ\nEWbYyvTw0frzDCU2iQ3lsF90CQyVqPoNlhlEE1tE5CKi7GLstQkLZbqjW4SlPTShhSxalMQgmthm\n0Fik3daYyZ0gdzuOr69EvHOXICWmtAdMa3dxEUnJm4xoC6iSxZ4QIkKOafXeD8awmqikxU66tQz3\nu45wrzXNjHIUCQuDBtsksTUJ3a0Tl3bwi2VKehBzRKDmNygKIeaFUXSa9LKBExIpEWCRYVYaA5iu\nwmjyMSFPAREHBZM0XSw4w6yZfcSShX938R069B+ZAwntFhoPOMIx7pHoz+Dpr/IUH+AikOcZdoiz\n0xGjGtTJyx0EKPMkl1l8+TdY3RiktepwwzrNPWuKWtNLa8tLpbpAuTuIowm4QI4IVAU6doqsBvu5\n7pyjUvRzNP4QwXDJ0EUdgyY6RUJ0Wtsc4SFl2cc2ndwVjvOh9BTjwjwnucMJ+Q5vCy9w1b1AUCiR\nIcm33Z9g0RqhU0wzJTzEtFQ2hRSL8jBdpJFDFh2hPCptumazTLyxiGEUaIx4kIZsdsUom2I3C+Iw\nCiYpNigRRKq7tCyd94znaWoGXcom/eVV9pQQc55xSo0w99ZO8c07P8NPnf8WQ1MLlM8YJLRttonz\nfT6PIpto3jbVeJhgpYR3r0msI0evtE6PsMGiNowriQgi9OvLLDTGWdsdRE23CIRKRMjRwyZ9rBNx\n88iWQ6hVoqOVJ+tL8ECbAiBCnig5qvhYdfvZlpJIPov7E9Pc5ThbdDPFQ1JsUsGP6m0z7F1EpUXE\nydOpbNM+L5MVomRJMMMRFCxa6PSzSsP2cM06z3apk6ST4fTgdfqUVQKUaGJwrXWe643z7NQSnBm8\nyfWDKOBDhz5DDiS05U/febkIaLRQ2d9P9lHhNDdpodFdzxDdqRBP5Ej7kiwyTF9kiXO+D5kdmGTI\nt0hYK7CjxNgY66XSNvi+/iIV/NjIZOhiOxanGPRR9xi0Hxm07vlYfW4A0bBoofEBT6Ni0ssaWTXO\nVS6wRi8iDuPSPI5HoiQEqe14Of3BPZQpm+DUHmWC1PGQb0cprUfo9m8zEF3lmZ3LFLQwV6Nnuctx\nrnOWZQZJss3pvpv0fGUN2bXxGCWmpXtkSbJKPw+ZJEiJGl5ucIa1h8NUM376n16gP7CCXmoR+usa\n3QNZOs7t8Qc3f4XZ0hEYACEHGbWTG+PHUESTDElKBLERmdXH+bPOn+cn499iUnxIWupkjzCq2EZT\nmxhCA6sp88nqJeqGQXg0y3D3Am2vSppuIhSo4aXkhJnOPiIxn0N46DD8yhKbw93c4xhxsoQo8oAj\nrLoDSNhIgoWASzeb7BEmxSaTPGKNPvYIs0YfH3OBp83LnGzf5ZZxjEV5mBpequwPkOokwwoDPKwf\nZWt7gHZBY8sx+JPKL/FfJ3+LseA8H3GJpfVRtpYGaOdVHk9PHET5Hjr0mXIwoV13yLa6CPmLqHIb\nlTZlAjifDivab/tK8LvCP8HGxUSihca600u+EaWVM0jJmxzxzFCSgmyEesg5UZakYWxEWrbGbj3J\nDfkslkditTyEKLl0925g6RLVjSDZ2W52+rtQgy18VCkEwzi6wHXOMMIismCBBBI2qtZG72ow5F/C\nFRxKBJllgrwYpcNbIKQVQHC5pZ9EVZqk2GSX/Rvl+1jDRxXLI/OB8RQRJ4+NxBZdaLSRsX7wbr/i\nBlh1+skHYiiOhSzbmILKmtLHTM9xdiNR0lISqcNCcxq0mhq5UBgx2MOsNEEbBQeRcWbpLmxTdf3U\nwwaXxSdYpRcfVZroBIQyvdI6+a041VyQlLHBbiVGteihe2SLhk8nS4IgRRKZHXpW0xRjIdaifWT6\nk1S9PiLk6aBAyt7ES41H4hTFnQ4cU6LR6aFXXqObTUKU6GT/WHoHBep4aKEhYVERvWyIPQQaNY4w\nR7ebZcJaQFRsIv4dMnRSr3hpPvbgboo0TIXNmJfrZ87RDspsk6RUD9Hc8MJ12FzpP4jyPXToM+VA\nQlusw1pxiA49R0guIOCSoROROGv0M84cd5Xj/Lb/n/Gs8i4pNmmi87gxRnq7F/WRS6eSZaLjESAw\npsyzxBDv8tz+nY+2RavsYVEfpYlOppBC72gwODmPRoPtmS7Sf9WH9LIFKXCbItu9H2JHJDaMHlJ2\nGsNtkJOj6EIDLdykcMmPTo1hFrGRyBEF1WGwe54kaUpugK+Hfo5BYZlX+C4pNulhg4vuFRxXZJ4x\n3hJfZEycB+ABU4zyGBkLC5kNeki7+4OzjP4mfqFEQ9H3+5wDKn/x4k9jotDDBmNHHyAtmNx6eJ58\nTxArYZMlwSYpeljni7zOcGaVghNhOnSP25xklglOcwMvdYJuieP2fa5uPEUmHePZ597m4dw0D+aO\n4eluEPTtd2ZEyBNL50ley/Hxl05x5dgFrk+f5aR9h6iV45R0i9POLVxX4JZ7Gndbot0wkOIOCXmH\nLtL0s0aWBFkSBCijO02qrpekuE1D0bkrHuHJvWscac0huTZaoUXO08GsMkxWThKt5zAydVrLGnZV\nhiy81/scC92D9CmrmLKMaFs4iyKF5chBlO+hQ58pBxLaBS2IHqjQI61znDv0sMkGPewQp46HFJsE\nlSKngzeJyjkULBxMftL/TVKpNIPiJmuRTlYY+PRqKwGDBtqnY0En5VmmIv+KVC2DnVdQIhZLRj9l\nAshYtAIa4rBD9+A6timxda2P12+9xvDIPCc+d5fn0h8gWTarfX2kpU5W6WeWCTRa2EhotH5wQ84k\ns6i02XViFCthynKQki/IPGNsk0TE4UL9Jv3CFqOex5wybwMutiJRxs8O+zNPetgkKWS5Kj9BaSuC\nU9VIDWyi6m0MGog4yFgomFTwo3S1GAk8YsC3hGKbGHKDODv0sEk/a3i3a9RtD10TaZJsUybAIkMU\nMelvbfDVnW+gd7b564Gf4IrxBDuxLkxHZUvvZpjHjLDABin+fOQ13oq+wHTsLh5qlN0Ab+2+zCnh\nJr+W+Jc0JZ1brdO8ufcSe7EOQsoee3KIFQbYI0wNL3UMWui4QKkeYrPZy2awh5SygSsK/HXgFbxO\nna5WhnPXb9HR2ONYfpb+ri1SwW3aL8ncP3WMzGYKd0FhbytG29DIj0RwekSin09TGO4grO2x++5B\nVPChQ58dBxLaimDytO89RqTHBCljI6FgImJTc71ca5+jLhjoSpNtu5Otikwr52EsvsB4YJYOscQV\n8Sxz9RGm9Xu4ooCNxFN8SBUvLVFB1tukG0m27W469BzbdpzF/AiWX8FMSATP5nEMAQcBY6DCditO\np3eDU9xCUi3yUhQLiUItRtGOct93jF5xjaSdJd7Kc1K4S1LKEpHzNMX9QwQeqc6uGOOucxxZsIgJ\nuwQo0xJV2oKCjyoILh7qTDBLteIn7uTR/S3i4g5tQWVHiFPQSlh1lcxWimBHmZ7wGiMsUCREG5Uw\ne6heEzxg2go7dpzZ1gRHtAd0yAWWGOJ29Aw12wcClAiyS4wqPrrIEBBKNFWVpq7S8ig0JY3OyBYB\n7TE5K06wWSKu7+CnSiugYQf2t608NJjiIVeaz7ImDLBLjEVxhE2pmwvKVfLeCA1NZ1eMUXYCiI5D\n09Ex8ypOTYYQbOb7KJbDrI3301YUEAR21SgqJmmxE7nTJtrIY3oVxoTHDOjLdEc3cCLQGUnT9Psw\ndYWGppNrx5AFGyVkEThTIqLvsnsQBXzo0GfIgYR21MrxldCfUcfDFt3MMs4RHiDbFmUryEelSzRF\nnd7AOovmMLndBOaMhydOXaHQG2ImPMWbhRfYbPQQl3aoCl68Qo2vyn/MR8KTvMPzFAnxUD7CvD7O\nT1jfxi3LbOSGsDplPP4qkSNZMot9OAaEfzJLpeyng12OijPcSx7jLsfIEyFXidNu6Tw0poiLWbqd\nNOPVJY6LM1R1g8fSMGX8KKJJVMuxIIxwxb3Izwtf5wmuMik8Yt3TS5oumugsKUMkyDLIEpFihYbl\nYcY7DqLLHmGyJGjHFUpqmMs3n8M0VaywyGlusOCM8sA9woC4Sl3wUBYCrMu9zLXHuVJ+kgvhj1Hl\nNu/wPFcnn0DE5iXx+7zXfoZtt5Mp9SEpYZOgVuS95JPcaR6j2A7RbWxxJniNHmOLr+3+GkvuCJ36\nFv2sEmrtoTQt0koXouzwlPwRj8UjpOnidetLrAl9DMmL/Eb4f+a6c46P3Evc4hQFp4O66aFlarRX\nPVhpA0ZcxKyDt1Blra+fPV8ISbCRsZCwqSh+Kif9+7fBKzo/1/gGliPjtCXOqLdQe1vkeqOUCbDZ\nTnG3fJxqJYQlOHR2rRGQywdRvocOfaYcSGhPeB/RSYa3eJFHTJIlwQIjPLF9jf987t/ws7Vv4rgS\nqt7mN3v+RyqBDvrOPaIntEYLle/xEhkjSbkd4DsPv4xZVfDpFSpHArQ8KgoWFgpeo0agXeHylWco\n6wHcuEX+6wn2HsVgW6BpGYSfztMztcHSzXGajo/yc0HGpHk81KjiRwyB4EC/tEIPG/ilMnPBIVqC\nRln0MyuOs0eYfCPK5s0BhJBE9GiOEkGyJOgkwx1OsMwgDQzSdNJFhi/zTRaiCivuIG9LzzHGPAH2\nWwknmeU54z2+Mv4X3PYdZ4FhFCzqZT+5chfBeJmkvr/lMc8YNc3LS+HvkVWSNNGJkOcV6Q0q+Flg\nmMy7vWiVFhdfvYLrEVhmkDIBBMXFIzdwRZFrjXNcbqiUDQ8YJvOMkiDLw7fG+ehrF2ie7UB90iJw\nqcBuNEw97+PdWy9R7/AQ6qhidDS5t3KKq82n8YyVOS3dxKvWWJEHKI8FMftUZK9FvHMHb6PGQ+cI\n3mqVJ/2X6WeVXWLcap/i43eexPA0mHh6hn+r/RKZdDeP7k3znx7/V0ymHrBOH/c4Rkgu8uv+32He\nM8ESQ4iyTaEUO4jyPXToM+VAQnuSWTobO/i1KpJo4zoCqVqGwdYqPdo6E5U5FNfCEiW+tP5t+hJr\n6MfKaGKTKn5CFImpO9i6TE31IGs2pqowIxzF/XSSelXz0ZANdL1O3Qji9VYJBAqk7T5q9eD+adoC\nmFmZWt1PTN0lJu5Qw4MLP9gKGNPnET4dUKNgsitGeKRNodJGo4mNxGarl5naNEUxhFiyqc0GyPXG\nWPQN00L9wQsTQIEIBk0KdNAwDFbcPu44J9i1Y4TaRdbr/Ux5Zxk1HpOIZ1kx+1krDiE6AjvtJGGh\nQLK6g+K08XjqmCjIkkVY2mODHgqEGWQZW5TQnBZH7Eesq0MUjTDbQpK8G6GKjwRZZMnGR5Ux5lmq\njDC3O4VimDh5icXmGP5Kk9amQCNq0ParlNUgaSfOhD5L0thFdxxsBEbEOWp4aEg6KC5BiuhiEwkb\nRTIZ6XhMjF1EHFwEio0w5cch0t4UWTXOBeVjwmKBnBBlR+/C1GSags6cNM6umkA0LKqSlwIRSgTZ\nrnUhOg6T3llkzaKNzBbdVIrBgyjfQ4c+Uw4ktMcaS4QbFaaCDymrPlSrza/nfo+knmHtfBf9S2l8\nbhUn7vDrr/8O+VyYR1PDPJInaYoar/GXvCc+y/3gNAQFAkIZ0XXYdHrYqPSSb0Xwh8v4lQpBo8Tw\npVkiQh61ZfLu00Eak779MUDvQSkUplz08NKp73LUuEsDD0vuELJgcYYbxNiljcp9pikSZJNubnCG\nMR5zlBl0FrlfP8n9+kk8x0q0H+isvjVC4kvbWD6J25zEREHERqdJP6t0s0UbBQkb2bUwLYXbjZO0\nizpuWuO5nvdxe6CgdrBcHuH67kWuty4yGJvnycQH9GxmyLfD1HQv48IcdcFgzp0g6yawXQlRcLkv\nHGXameFftv4ppUsBvqX8JN/gKzQdnaibo0fcQMbCS41neQ+5CPdXztDWVdpZL+WlKGtroxx98jYv\nfO0dygRZtftZsEZ4Vf4bXvV/j8nhBZo+iR0twqIwTGxgm2PcQsQhY3eyS4y2qHJCuMPzvIP16TH6\nh60jmAsa8x0TlCNenvRcZlBZ4aR6m47nCqy5/aw7PQiCS2dii57EBhkSbLjdlN0gjwpHCbYrVHp9\n+MUKUXLMM0ZjTz+I8j106DPlQEL7ny//CwJdRTLXu9m14pghmT/uyjEQXEIWTS53XSLolunTVwk/\nU8S/WGXydxbRPm+Snwwj4rDbjlN1fTynvYeJwnq+j8xHPZRCUZwejVpbom36sWyDqe5HOB6Yl0ao\nx1V84QJBsUTeSdC0PAhZmRPeu/jFKr9d+m8IBgqMGbMMsoyAS5kAq/TRxEDCYopH2Eh8zAWWGWTP\nG+ZJ9X1UtYl3tIY/WkWP1dFoIeIwxzhxdvgir7PICCWCrNFPkgz9wipflr+J7mkiKi45X5xtT5x/\nwT9HxaTu9/Gi+jd4nRqC5tCSNb4Tf4mV9CAffvgMsaMZIpFdfHaFnZtd5EsxtsIDVHt0UqFN5rVR\nRNEhyTYlgjiCiCKY3OEE2ySp4eU7fIGNSC/yWB1JtbGXVaw7KuKX2iTPpznNLRoYHBfvYsoKZ8Qb\n6EqdTCCKI8OuGGOJIbxUiZNlhmnW3hqklA7hf22Pj0MXKOPnp/grzvMJCU+WifNzZJUEqtCk/900\n3eEsnIdZJliojDKzc4KR5Cxx3zYGDaLkyBXiXJk7RSEcRoqZ3BJPESGPThONFtIPLrM6dOjHx4GE\n9pI8SEDaYzZzjOpeED1Y53bncbaNGJJrs+uLoTXa9OS2OJa4w0B7lejMHm1UYP8Y/EBulVCrTF/P\nOqtKH1V8mK5CQC4jqxYFp4PGjoFQhHwogqHV8Ih1RkJzhMUi3VqaG+Z5Nsp9NGUdTWhTw8dt5xQd\nrR0sQSKpbXOk9QjbkVnWB0mWdxhqrxLryDInj7HCAKv0Y6gNkuoWKm16I2uMhBYhJ1Jt+tiN7N80\n3kmGKR7SRmWFQfYIEyWHKrQJSiVGpcf41Qr3vMe4yhMsMEKYPbq0ND3aKj6q1PCSN6O8n3+ajVIf\nW243GlUCFIH9Dpq2qyLioLpNNKFJS9JICtuMMs8W3ehCi5aj8cicxJAadMqZ/bY82YPqadMTWqUi\nhtmpdpEaWWVgYIku0hTooFvYpFfcIOzuYQoKy1ofu0KMXWJkSZBikxi7CEBus5OtxT487Sp1DKr4\nUDDxU8FRRYqpEAI2Vl1hS+jCQw3DbZBudbO4O8rWfA8dYh4Zi4LsUG/6yBejbLeSoFnUFZ1bu2dI\naFlQXMpWCKumHkT5Hjr0mXIgof3M5Nv0V9b4PaWbaimIuyvQPKezQj+b9NBwDOq7fpozfv7RyX9D\nbriD6j/1IYs2Bg3C7PELi9/AV6zzTuISW0o3m5Fugl/apVtI43OqXG+cpbAYp75o8PHIE5wI3OKS\n+hEhb5Ehlhhkma8N1vjAepr1di8L+hCSaOOJFdndi3OjfY5K1MdIeZWudoaF5CgX12/wM7vfZOtc\njGXfAE10OijgIFLFh4c6YYqcNG/T+2CbBd8I34l8jkGW6WGTBgZhilTZpYoPC5kiIW5ymhi7eKmx\nwMj+VVvsMsEsIg41vDTR90O5rnLrg/O0EiqdL67xgvAmIYpsSilCZ3dR3AZJIQMCDLJMl7CFiINB\nA4MGMXIUrRAfVy4wYixwTr5GmQBWTaeSj3AxfJXV0BCVZJgnQleZ1u7jIrBDnCTb9LCOYlts0MND\neZJ3eY4yQY5xj17WmeQRL/M9KsEO5mMTOLLAGI+5yBUUTPYIs0U36/SSIUnT0PnGi69xXviEC84n\nzJSPsbgxijsrMqOf4IFzFMHfgowKDghTLTyBOq2azu2H53HDLgRd3IqCmxUOonwPHfpMOZDQfu8P\nPk/obBGmbC6Mvs+4PYcdE8iQwKDBF8XXsSIKHx+7iBOCRXGYRXGEMebpZ3V/Ct4YVNsaGS25H4rC\nBttSEp0GYaHIRf0KS5PD3Os+QTqeQJBdJGxOtu7SFlVel7/IrfJZtvL9NHd8XGk9i+A4VOQIsf4M\nqdg6A8IKVgB89TL/feZ/Rwm2+V74Bb7dfJVVqQ/ZsHiJ7/HoxlHeuvUS8rBFdThIq0fl7OQtDLnB\nNPd5xCQbpPg+n0ejTR0Pe4RIsI2fCkm2KRIiQJnP833SdO1/sYafGl5EHPpZZYtudowYkxfvk8vH\n2bmSpDwVordjnYtc4ZJ9mTnG+bbyBU5whyPuA/xOFV9xla5mjml1lu/6PseKOshP+r7FSfkWKTaZ\nZYInwh9x1rjGhPaAetiPMOCiGS0UwUR12jxRvQGi+ejHPgAAFTlJREFUw5x3Alvan9I4J4yzVB2m\ngYe4dwfTVWijsigMw1mbvqlFfN4KdTzc5QQzTHNx4ROeXbrCdHCOB6kJ7vYcxZYk6nhYqfZS+70C\n7s42HE3hGi79xgrPBt4irfSwZvWxLPYRF7J4fXW2J1qggV2W2LsTxx8vUTyIAj506DPkQEJ7eWUY\n7USDgFikL7HCxdiHzDNGthWn1TQIeYrIPouIb4cyPmyCtFGJ2nn8bpUlcRgrIeEKArNMkCRDyCrj\n1mVQRbx6jSPKDIHOMmanTJACMhZZJ4GDSMENc4eTlJ0gbkPC3NXJCkkMqUFEKTAoLzNoLNDLBgU9\nzLLbR6qSZi2Y4rp+mjfSX6AtyAwbC9iIVLb9pGdSeCI1ilaIohQi3Zkkzg5eu8buepwNKYXRW2eA\nFUQcqvjI0EWYPSaYxUKmgp8pHmIi07ANks0d1uUeMkon+WaMHSlJXokwPLiIYrVpzPjwDDfoYI+Q\nW8TeVPCITTy9dSaEOSadWXytBmK7QcCuEnd2+Mh9AlVscVq/SYJt5LbNUH6FiGePZodGJ2lCXXt4\nTlbx+qsEKhU69koYaouK10dOiJIXImyTpIWO4lpo7v72TxOdZQZ5yBRin8UgiwBYyOwQ3x9da4ro\njSa63kSxTVxbIJ+PUmv72Wp00SgrJLQNwkMlyjEfMV+WpL5NwzDYaUZxixKKY+Hx1PB2lZGw0aw2\nvdom3V0bfPsgCvjQoc+QAwltz+kK3q4yhdfjtHs9hF/cQ6VNs+RjY2uIbw7+FL5gmQYGe4ToJMPT\nfMCr7e+Sc6L8tvbPaIkqomBjohAjh9xymF87ylB0HrtTRMABoId1xplljgluCGcIakVcBExkRkKz\neFo1buUu0Dm6QU9kjZiwQ6eUoZMMnaS5zzTv6c8SSeXRhBa71TjWjo4gOuxFwvwxv0gumEAZNEmd\nXuFM7ye8yFvU8JEjwp7ZweW/eZaCEeb4r17HRxUZCxOFj7lAL+v8Gr/LIsOk6WKZQW5ymkbbw29k\n/jc+DD7B7wd/iau5p2lpKmq4xqw8Qd0XQO42OaI/JEGW+/Y0f/bJf0JT0bjU+y6nuMm4+RhvuU3O\nH6Ko+2gLKoPCIj7KeKhxj2PYFYVf/fgPuT8wxeUT5whTQB+tER/aIqrs0ju7xdCtdd589hkqXi+d\nZPYvIsbLACuovjYxd5cv8G1mhKPc4iR5omi0GGKJMgEq+AlQ4qf5C/TRFm8PXeIj4Sk2pRSlVoil\nO+PUcn5kj0ni19Y5l7jPOfUGM9I0G0KKN3iFEkGKVgdm1UtBj2J55B+cpO2NrfHaa99kVJ4/DO1D\nP3YOJLSfPPYBeX8Y8bxL2p/gu7xEjhglnx9fd5EufROroLKwOcVw7ywN1cubhVep+QNEPLs8IV7B\nFYRP3536WMsNka8EORO9ynhgllBtjw8fP89epQOnJaJm2hT8Hez0xvh+t0woWEAz2pSFAPHgNv9k\n9HcwwyIhbY9R5glT/MHo2D7WsQSFBWmEvVqEfC5GfcuLIJuU4wFEzcFKKFj9MjvXuskWuqid2u+D\n9uKjJIeYunSPkFPmlcJ3Kfm8FNQwE8wh4tJBgRBFTrTvMuCuUVIDOIJIxQqg5NvIsgVhF/w25hUZ\n566fwC9W6ImtEZXz1DwGc4zzSJzCPekgSe394VsNiYbl477/OI4KeSnMPabJE6WNio8KMjYxzy75\n6SChQIHz1jVGi8tIGpSNANdyFwkVG5zkPn6hyrqY4gFTBCljIXOVC3iFOi1B4+v8PGGK+KlSx8t8\nZoqtRgq6TYbUJbqEDCsM4pFr1GUveTrYzPZSTocZSc3j7y8jyg61pEHcm2OSR/svcPlz/M3SF/EM\nVlBNEx5AeThEI2vgXFUYP/WQ6HSOTb2bmeVp/uO/ofvQof+rAwntS70fMOeOUZv0knVilKyLGFKD\npqHiMcr0s8JeLkZ+O85Q/DGmrLLR6uXtygtMG/d4tes77MpRikIIgwYt00fVDhALZ+nWNpDKDrO7\nR9iqpJBNEzljIjdspLDNequXquMhxRY2IklPhueMN7ltn0S12oxKj/EJNar4mGeUDgq4wD2OsWb3\nkbdjKFoLr1TG65T2e62jJnK/SfG9MIvmGDejZxkNz+MxaviVCuPHHhFuloiVcyy2B8gLHUTkXSLC\nfrtakRD97hqdzjbrbophZxHNMVmR+1hze2k6Gt3edcymjrAu0tNcJuTdw+utkSWOgIsh1Rkfe0gV\nHzW85JwosmDzsecMpqmx04xxWztB1fEhYhMVcxwVZugw8mwOd5LYy3Jy/S4xoYAlSmzqXdxsX+CB\nfoTVrl529Sir9HPbPcGXG3+NU5G5VTzDVOcDWgGVGY4wwRwJsvtfzLZ95BsRNKdG21WpuH423RQp\nYZOYuIuKidlQKVVCnDt6lanwDBFyXOP8D7ptioTQzBZa2YS8gOJYxKwdNLuOVZHYuZlC6zLxTNdI\n08X1tYsHUb6HDn2mHEhon+MTApSZcabZNFMIZpBBYxlFbIMLSTGLogNRyGsdpDxrXOp9h9u/f45i\nOcalX7rK10NfIa128bP8Gc2YTi2i8bF7HtG2GNJWsAckNL2BP1wgbBUIiBUMpUFT0bBEmQYGozym\nhw0aGFxvnkWlzXnvJ7iILDDMn/BVfpY/ZYhlIuQJeIrYvSKRrhxD8hIRJc+McJR2SKFj0KWwkWBm\n/RiLfzmC8kydF4be4peDv08NDwvqKN+OfIHHpVGCZpGXQ2/QRKeJzkdcAhVG3MdEhV1+of2nbIkp\n/mDyq1xpXyRfjfAl/1/T+XIG45kGXYE0q/RzjXM00TnGXV7jL9n5dBzALU5xz5hihknW6eF28Rzb\nVif+RIGK6UWwQTZsPMJ+t8sKA4RmqnTO5LBfcZF9bSJynr7kInsxL193fpp76jE2SNFwDUa2Vine\n72D74z7Gf+ExvpM1IuS5xzQOIoOs0Nu9Qp+zjClLrNLPXfs4pqXwlPQhSTVDH6ukw12kxSR1wyDJ\nNs/zNhk6MWii0uYyTzIXG+WJi+9ze+YcbVPl7IuX6dXXKG2G+NbQz2GHJCyU/VOr2wdRvYcOfbYc\nSGjPMI2AwyXhI/rlVUpikGnxPmtOL+82enk7/Xnq836YAek1G3+4Qq+4jntGpqO5x6x3jAdXjrFe\n6WX9+V7y3ghNV0dwXBqCQUPRGYo/Jq+EcT0uOk18VAhQJk+EcitIoRyhvhCg5fHgO1bBUOt4aFDH\nYIUB1umlkwxV/JQJ8BQf4koC8+IoQ+p+t4qP/R5kxxllS/QzfuQBvp4aTktkzjvBtcxF3EWFvqFl\n9FCTlLvB/PoEBTfO9nQnbUnFQWSJIULCHnLDYjizxh3/Me6EjhNTdnlK+hDBcnjJegtRtdn2JkjT\nxcP8NHM7RznScxfVZyJj4aOKlxoiDnXRgwC4CPi8JfqdGkeE+2zLSTadHjLFHkxDRzHM/bDtkxAM\nl6vhc+SlDlqCRltWGXGWuGRfRXNbCDjcdU7wR6u/iNlWiXwuy5HOGU45N9CcFjfEM6yIAwi4nHJu\nM+IssUMHt4RTxKQc48xysnmPgeoaEX+BshFkT+4gKyXIuJ0ogsUY87TRyNBJgDIj0gJ9xhqrnYMs\n14aYr06xvZGildFp+1QcXaRUD7GyNcJWtPsgyvfQoc+UAwntv3nHz8STcbqULQy5zg4JJnmEaNsY\nVoObm+dwVmWC2T0GmiuM8pg+1lFOmki2Q86MYm/JuDmRtaf7yZKgYRkIJSiIMTxai07fBqpUJ2dH\naZc1/HIV7cabeJ79IpbdSb3hZT0TQA80GRLmSamb+KlSwc8q/WTMTvRGm5wWQ9Xa9LHGsLCILUgM\nsIJGC9NV0JwWXqtGUCgy0j9HQs7imgLp1RSb2T5K1TAvpL4L33mf5KAfaculovhZyQ4h+WxcRcC0\nZUTNQbLAX2rzsXGBy+oFLnKFXnkNj9Cgt71O1kmQdruYcY9yb/0kKx8P03Vqi93BBEux/XsmFdek\nx1lHFF1sQaL5/iKxZ4JI2BznLjtiHNU22Wr101A8VB0/j9pHKMY7yCaTvC09hysIxNiljge57eCt\ntBiSV9iVo8wzxnv2M3iidaZfuE2PsMaAs8KQs0TILTFvj7PtJrDfucqRSznm1GFKwgIpNnlZ+i4x\nu4DTVHB9Dg3RQJAEHgnjlN0AO0IcCYc2KssMotImQh4ZE8kwsSyJQj3KenYAuyTh7ywTD2QxGg0W\nFsZpxpWDKN/PqFWg/8do3R/l2j+qdf9uBxLai29u82Dkv2Q8cR9BczFRGGAFv1zhvOcTPvY+jXtK\nZPKn7/Lz4T9hgkdU8bHACErL4ZndK3Q9vc1DY5y0rxMXAblks3u5m6zWy1J3jpPDn2B6ZHYaccq3\nojwRvob43uuEnjlGRQ8Q7CzCCwIdUp4SIY7wED8V8uzfflKtBPl47hJn+69Cl8safXRQ4Fnew0bi\nMaM8ciZZb/aSEjd42vsBiPtDpVTLRFqyCet5hi8+omFo3PtLk1r1l6n8jBe7W+TaW5cQRlzcKLgN\ngWp3gGrYx9LEIHPyGBk6+R4vUTH9KGabuuZhTerjbfcFKm0/5bthzH+tcv3YE+y8kmD1Z3uZYJaj\n9gy/2v597qvT5OUI8+/fRn7mebboJkeUEEXGlDlWo/1URA8P21Nsbg8w6xznlp5nMLJAQCoi4lDB\nxxvmy3yn8mWeCbyJhwrHpHtkL2bpFDK8yPeZZ4x3hecQFIeR2jInmw+xbJn/6SOXTz5/gY+ES4Qo\nMuHOEmnnyehJVr39DEkLfK78Ds+WrvJO/CnKuo/rnOV9nqGBQQ8b5IhSJEgNLyuzI/hbdU5fuMqM\nepJqM8Dp+Me87P0OnnyDtzOvEuposHYQBfyZtMqPX4D9qNb+Ua37dzuQ0A7KRbxSjrWrwzT3dGTR\nZPWJRRLxbQblZaxejarkxZuoYiGxTi+3OYmHOqP2IuF6ERJQ7fD+4FDKgLHM7lCSXCZBLePD09vA\n76ngUZrUe31YhsiWMECvIHKOawxJS7wVeIGwWebV0vdZ8vSzoIzQwOBxc5QFc4yCN8Sa2oufIsMs\nEmKPECW81NBooQtNFKVNSCwSlvYIUCbdSHG3fJr+1AqVmo/tBymUMYu2rpIfiOLtL6L4oOaEwBLA\nAhwouiH2pDARI8+53A2Oluf4c+Nn2Gx1k6hkSeW3GY6v0juwRV4M0zjqwfrHKk5CZMub4uY7F0ge\n3WE12s+8PM783CQ2IjlnnWazk5IbpKr7UIQ2omjTJW5RIojrijwXeBtcUOQ2YSnHWm6Ah/mjWD1Q\nlMJUtSCjYgKt0sFifpRXPW8w4plDpsXS5hglJ4iaavPK/beJFwtkzsZYrSb5w/d/mbWFfvxGma3u\nPjwnGniCNXxChUijRNCtYPkrnJGvsygMMtueZP3mIOgugyeXcRCp46FAB82cTistsCyNovc0GEvO\n8jPeb5Ctd3LNnKTn6CpHu+7wtYMo4EOHPkMOJLQ7lDw+9TGXbz5PfjaGIdXIjHQRjBeJSTvoXU12\niZGhk12irNHLd3mZ1/grptwHyKZFzomySYoSQRJk8XmrLB4dplLzI644eOw6cXZIaZtYo/ujO+fE\nceKCzkXnCp9z3+SWcJKIWeKV8lv8lvJf8UiZxEeV+dYYy84gbtQlq0dJEOUpPkRnf9xokm1i7BIT\ndxFUlyY6EjbdbLHcHOVm5QI/NfAn7C1FuPP+WSLxHK5PgOfBO1BFaLnUfUFcWQABUMGSFGwkDBpc\nyl9BT9v8accvUm110J3bYeL+IsfG79Hukln1dlM77cE9vX9w5fUbr/Hmt1+h1amzGu/ndfWLZBd6\nCJlFgu4btFoJbEeiqenUBB8mMhHy7BDHkUW+1PEtYuziIrJHmPX8IPOPpwhFslheEdewqYkedmsB\nHq4f5zciv8V07A7ve59gPT3AhtlDsGuPs4/u0rWbYfXJFCvVFI8//DK8CYRg7dwgyYk0pzpuMGwt\nE65XEFSbelChjxVqeLhvHqd8PYQRbBA4WWaH2Kf78iLUBCobIR6WTzAVvs3Robu84LzF/1r9H3jD\n+gJPHn+PS+qHh6F96MeO4LruD3cBQfjhLnDox57ruj+SISSHtX3oh+3vqu0femgfOnTo0KF/OOKP\n+hc4dOjQoUN/f4ehfejQoUP/ATkM7UOHDh36D8gPNbQFQXhJEIQ5QRAeC4Lw3/2Q10oJgvCuIAgP\nBUGYEQThv/j08bAgCG8KgjAvCML3BUH4odwGKwiCKAjCbUEQXj+odf/Pds7mpYoojMPPL0yioqxF\niol9EH0gVLjJclFUUBDUNomofYQURNamvyBCqE2LIiRa9KlBQUnrwCiJUiMS0gyNCIJayttiDnQL\nW+U5c8d5Hxi451zu/d137sPLzJy5V9JSSbclDYe6tyWs95SkN5JeS7opqTZVdjWQyu0yeh1ycnG7\nCF5Ha9qS5gGXgX1AC9AhaWOsPLI7oE+bWQuwHTgR8rqAfjPbADwDzkXK7wSGKsYpcruBR2a2CdgC\njKTIldQInARazWwz2a2jHSmyq4HEbpfRa8jB7cJ4bWZRNqANeFwx7gLOxsqbIf8BsJfsy64Pcw3A\nSISsJuApsAvoC3NRc4ElwIcZ5lPU2wh8BJaRid2Xal9Xw5an23Pd6/C+ubhdFK9jXh5ZCYxXjD+F\nuehIWg1sBZ6T7ewpADObBFZEiLwEnAEq75+MnbsG+Crpejh9vSppYYJczOwzcBEYAyaA72bWnyK7\nSsjF7ZJ4DTm5XRSv59xCpKTFwB2g08x+8KdwzDD+37wDwJSZDZL93vFfzPYN8TVAK3DFzFqBn2RH\nfFHrBZBUBxwCVpEdnSySdCRFdlkpkdeQk9tF8Tpm054AmivGTWEuGpJqyMTuMbPeMD0lqT483wB8\nmeXYduCgpFHgFrBbUg8wGTn3EzBuZi/C+C6Z6LHrheyUcdTMvpnZNHAf2JEouxpI6nbJvIb83C6E\n1zGb9gCwTtIqSbXAYbJrRDG5BgyZWXfFXB9wPDw+BvT+/aL/wczOm1mzma0lq/GZmR0FHkbOnQLG\nJa0PU3uAt0SuNzAGtElaIEkheyhRdjWQ2u3SeB2y83K7GF7HvGAO7AfeAe+BrshZ7cA0MAi8Al6G\n/OVAf/gcT4C6iJ9hJ78XbKLnkq2qD4Sa7wFLU9ULXACGgdfADWB+yn2d95bK7TJ6HXJycbsIXvt/\njziO4xSIObcQ6TiOM5fxpu04jlMgvGk7juMUCG/ajuM4BcKbtuM4ToHwpu04jlMgvGk7juMUiF8H\n87qEMGb9LAAAAABJRU5ErkJggg==\n", + "image/png": "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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -910,9 +897,9 @@ "outputs": [ { "data": { - "image/png": "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\nAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -953,13 +940,13 @@ { "data": { "text/plain": [ - "array([ (1.0, [0.09184833943086697, -0.23957301713645024, 0.35275256701073315], [0.6943502674814661, -0.18996972225593808, 0.694110373553384], 1.8499326750790277, 0),\n", - " (1.0, [0.09184833943086697, -0.23957301713645024, 0.35275256701073315], [0.5159084442036803, 0.8277435289738373, -0.22063346854291235], 0.08218797495117988, 0),\n", - " (1.0, [0.20806026831237243, 0.2806741437409227, 0.5336799247482618], [0.1279254678841002, 0.5275600667322506, -0.8398306083110433], 3.0474103747828187, 0),\n", + "array([ (1.0, [-0.1382758052991497, -0.3512177196880901, -0.33148352853135243], [0.4185689312254184, 0.515870835450486, -0.7474472094699589], 0.12980877137486158, 0),\n", + " (1.0, [-0.1382758052991497, -0.3512177196880901, -0.33148352853135243], [-0.7887279871402189, -0.41474066458733805, -0.4537602268152112], 0.9055673129689725, 0),\n", + " (1.0, [-0.037141545763691594, 0.3164763430804079, -0.13705878399440294], [0.3855911650385466, 0.7867859791128493, -0.48196190359368796], 0.996776361155944, 0),\n", " ...,\n", - " (1.0, [-0.19031412582761326, 0.09385643210497185, -0.22790301416803052], [0.5932941753311154, -0.7955471372215329, 0.12290961710458291], 1.9935677118802835, 0),\n", - " (1.0, [-0.19031412582761326, 0.09385643210497185, -0.22790301416803052], [-0.8965339181960187, -0.33727511250097575, 0.2871801386091118], 9.772336043367204, 0),\n", - " (1.0, [-0.19031412582761326, 0.09385643210497185, -0.22790301416803052], [0.5932941753311154, -0.7955471372215329, 0.12290961710458291], 1.9935677118802835, 0)], \n", + " (1.0, [0.10735654583359178, -0.007276312264885898, -0.05173760352485271], [0.5349120379020222, -0.015907381482490993, 0.8447579931091957], 0.8409377635712494, 0),\n", + " (1.0, [-0.048566216245400286, 0.29160532148505824, 0.31942717397594755], [0.6200960701401188, -0.409911862042636, 0.6689193741801173], 3.8787384499997857, 0),\n", + " (1.0, [0.07888442268099938, -0.14443885526015943, 0.3095767587545024], [0.373899151360205, 0.18819594431853104, 0.9081749342247754], 4.776147593645684, 0)], \n", " dtype=[('wgt', '" + "" ] }, "execution_count": 28, @@ -1035,9 +1022,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAETCAYAAAAYm1C6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHsFJREFUeJzt3XuYHFd55/HvTwjjCyBm2KwCMlZAknFsLsILsngMuB0u\nGpk1s7FJkBLQYlisLAizgSXWkyzr2U0eQEm4WJggFLwGOdiyDXgRWAFBouYSEiFsCd80aMRFSDIR\nIZIMtlkii3f/qBq53XT3dNd0dVe1fp/nmWe6Tp2qevuo1e/UOVV1FBGYmZl1aka/AzAzs3JyAjEz\ns0ycQMzMLBMnEDMzy8QJxMzMMnECMTOzTHJPIJJGJI1L2i3pyiZ11kqakLRT0sKa8rdJuiv9uSLv\nWM3MrH25JhBJM4BrgCXAOcBySWfV1VkKzIuIBcBKYF1afg7wRuD5wELgP0p6Rp7xmplZ+/I+A1kE\nTETE3og4CmwERuvqjAIbACJiGzBL0mzgN4FtEfGLiDgGfBW4JOd4zcysTXknkDnAvprl/WlZqzoH\n0rK7gRdLGpJ0KnAR8LQcYzUzsw7M7HcAzUTEuKQ1wJeAB4AdwLFGdSX5eSxmZh2KCE1n+7zPQA4A\nZ9Qsn56W1dd5WqM6EXFdRDw/IirAEWB3swNFRK4/V111Ve7bTlWv1fpG69opm2q5rG05nfbspPxE\nac9ufzbdnt1tzyxl3ZB3AtkOzJc0V9JJwDJgU12dTcAKAEmLgSMRcTBd/rX09xnAbwM35BxvU5VK\nJfdtp6rXan2jde2UTed9ZdWLtmynbrP1nZSfKO3Z7c9ms/LptufwMEiNf4aH29tHGdtzOmXTknc2\nB0aA7wATwOq0bCVweU2da4A9wLeBc2vKv0oyFrIDqLQ4Rlh3XHXVVf0OYaC4PbtrqvZs9VUwNJSs\nb/QzNNTdOMsg/d6c1vd77mMgEfEF4Jl1ZR+tW17VZNuX5BiaNdCPv6AHmduzu6bTnocONV+naY0E\nnLgUXeoL6ydJMQjvw8ymR0rOKXq1XZlJIgo+iG5mZgPKCcTMzDJxAjEzs0ycQMzMLBMnEDMzy8QJ\nxMzMMnECMTOzTJxAzMwsEycQMzPLxAnEzMwycQIxM7NMnEDM7IQ3NDT9x8CfiPwwRTMbGHk8FHFQ\nH7TohymamVnfOIGYmbXg7q3mck8gkkYkjUvaLenKJnXWSpqQtFPSwpryP5R0t6Q7JX0ynRbXzKxn\nDh1qNo8hHD7c7+j6K9cEImkGyXS1S4BzgOWSzqqrsxSYFxELSKa6XZeWPxV4K8kUt88BZpLMqW5m\nZgWQ9xnIImAiIvZGxFFgIzBaV2cU2AAQEduAWZJmp+seA5wmaSZwKnBfzvGamVmb8k4gc4B9Ncv7\n07JWdQ4AcyLiPuB9wA/TsiMR8eUcYzUzsw7M7HcAzUh6EsnZyVzgfuBTkn4vIm5oVH9sbOz460ql\nQqVS6UGUZmblUK1WqVarXd1nrveBSFoMjEXESLq8GoiIWFNTZx2wNSJuSpfHgQuAFwNLIuJNafnr\ngPMiYlWD4/g+EDPr+T0bZb5HpAz3gWwH5kuam15BtQzYVFdnE7ACjiecIxFxkKTrarGkkyUJeCmw\nK+d4zcysTbl2YUXEMUmrgC0kyeraiNglaWWyOtZHxGZJF0naAzwIXJZu+01JnwJ2AEfT3+vzjNfM\nzNrnR5mY2cBwF1b7ytCFZWZmA8oJxMzMMnECMTOzTJxAzMwsEycQMzPLxAnEzMwycQIxM7NMnEDM\nrJCGhz2JU9H5RkIzK6RmN+m1unnPNxK2zzcSmplZ3ziBmJlZJk4gZmaWiROImZll4gRiZmaZOIGY\nmVkmTiBmZpZJ7glE0oikcUm7JV3ZpM5aSROSdkpamJadKWmHpDvS3/dLuiLveM2s2IaGGt9gKCXr\nrHdyvZFQ0gxgN8l85veRzJG+LCLGa+osBVZFxCslnQdcHRGLG+xnP3BeROxrcBzfSGg2YMpwk14Z\nYmymDDcSLgImImJvRBwFNgKjdXVGgQ0AEbENmCVpdl2dlwHfbZQ8zMysP/JOIHOA2i/9/WlZqzoH\nGtR5DXBj16MzM7PMZvY7gKlIeizwKmB1q3pjY2PHX1cqFSqVSq5xmZmVSbVapVqtdnWfeY+BLAbG\nImIkXV4NRESsqamzDtgaETely+PABRFxMF1+FfDmyX00OY7HQMwGTBnGF8oQYzNlGAPZDsyXNFfS\nScAyYFNdnU3ACjiecI5MJo/Uctx9ZWZWOLl2YUXEMUmrgC0kyeraiNglaWWyOtZHxGZJF0naAzwI\nXDa5vaRTSQbQL88zTjMz65znAzGzQipD91AZYmymDF1YZmY2oJxAzMwyanZX/Iky7a67sMyskMrd\nPVT82N2FZWZmfeMEYmZmmTiBmJlZJk4gZmaWiROImZll4gRiZmaZOIGYmVkmTiBmZpaJE4iZmWXi\nBGJmZpk4gZiZWSZOIGZmlokTiJmZZZJ7ApE0Imlc0m5JVzaps1bShKSdkhbWlM+SdIukXZLukXRe\n3vGamVl7ck0gkmYA1wBLgHOA5ZLOqquzFJgXEQuAlcC6mtVXA5sj4jeB5wK78ozXzMzal/cZyCJg\nIiL2RsRRYCMwWldnFNgAEBHbgFmSZkt6IvDiiLguXfdwRPw053jNzKxNeSeQOcC+muX9aVmrOgfS\nsqcDP5F0naQ7JK2XdEqu0ZqZWdtm9juAFmYC5wJviYhvSfogsBq4qlHlsbGx468rlQqVSqUHIZqZ\nlUO1WqVarXZ1ny2ntJV0L3ADcGNEfLfjnUuLgbGIGEmXVwMREWtq6qwDtkbETenyOHBBuvofI+IZ\nafmLgCsj4uIGx/GUtmYDpgzTwjZThth7MaXtcuA0YIukb0r6Q0lP7WD/24H5kuZKOglYBmyqq7MJ\nWAHHE86RiDgYEQeBfZLOTOu9FLi3g2ObmVmOWp6BPKpi8uX+GuBS4LvADRHx121sN0JyNdUM4NqI\neK+klSRnIuvTOtcAI8CDwGURcUda/lzgY8Bjge+l6+5vcAyfgZgNmDL8Fd9MGWLvxhlI2wmk5qAV\n4APA2RHxuOkcvFucQMwGTxm+hJspQ+zdSCBtDaJLegFJd9alwPeBjwK3TOfAZmZWbi0TiKR3k3Rb\nHSK5h+P8iNjfi8DMzKzYpjoD+X/ASERM9CIYMzMrj7bGQCSdCrwDOCMi3iRpAfDMiPh83gG2w2Mg\nZoOnDOMIzZQh9l5cxjvpOuAXwAvT5QPAn03nwGZmw8PJl22jn6GhfkdnU2k3gcyLiD8HjgJExEPA\ntDKXmdnhw8lf6o1+Dh3qd3Q2lXYTyL+lz6EKAEnzSM5IzMzsBNXus7CuAr4APE3SJ4HzgdfnFZSZ\nmRVfJ3eiPxlYTNJ19U8R8ZM8A+uEB9HNyqkMg81ZlOF95X4nuqRzW208+ciRfnMCMSunMnzRZlGG\n99WLBPJL4G5g8myj9mAREb81nYN3ixOIWTmV4Ys2izK8r148yuTtwKuBn5PciX5rRDwwnQOa2Yll\neDi52qoRX6pbbu3eSPgMkkexjwJ7gXdHxM6cY2ubz0DMiqsMf413Wxnec89uJIyI7wGfBbaQzHN+\nZustzMxs0E01BlJ75rGPpBvrtoj4eW/Ca4/PQMyKqwx/jXdbGd5zrwbR7yQ5+/gp6Y2EkyLi/W0E\nOQJ8kEcmlFrToM5aYCmPTCi1Iy3/AXA/8EvgaEQsanIMJxCzgirDl2m3leE992IQ/X/VvH58pzuX\nNAO4hmQ62vuA7ZI+GxHjNXWWkjwqZYGk84CPkNxvAkniqEREkyE4MzPrl6kSyG5gS0T8a8b9LwIm\nImIvgKSNJN1h4zV1RoENABGxTdIsSbPTOdFF+49bMTOzHprqy/kM4BZJX5M0Juk8SZ2c8swhGTuZ\ntD8ta1XnQE2dAL4kabukN3VwXDMzy1nLM5B0vGKNpCcALwPeAKyTtIvk2VhfTM8U8nJ+RPxI0q+R\nJJJdEfH1RhXHxsaOv65UKlQqlRzDMjMrl2q1SrVa7eo+234W1qM2ks4mGfR+RUQsaVFvMTAWESPp\n8mqSO9jX1NRZB2yNiJvS5XHggvrEJOkq4GeNBu49iG5WXGUYUO62Mrznnt0HIukzki5KB8WJiHsj\n4n2tkkdqOzBf0lxJJ5FcEryprs4mYEV6nMXAkYg4KOlUSY9Py08DXkHyWBUzMyuAdh/n/lfAZcCH\nJN0CXBcR35lqo4g4JmkVyQ2Ik5fx7pK0Mlkd6yNic5qc9pBexptuPhu4VVKkcX4yIrZ09vbMzCwv\nHXVhSZoFLAf+hGTg+6+Bv4mIo/mE13Zc7sIyK6gydOd0Wxnecy/nRJ+cD+T1wH8BdgBXA+cCX5pO\nAGZmg2ZoqPlc78PD/Y6ue9p9mOKtwDOB64GPR8SPatZ9KyKen1+IU/MZiFlxleGv8V4qSnvk/iiT\nmgNdFBGb68oeFxGFmBfdCcSsuIryhVkURWmPXnZh/VmDsn+czoHNzKzcWl6FJenXSe4KP0XS83hk\nRsInAqfmHJuZmRXYVJfxLiEZOD8dqL2B72fAH+cUk5mZlUC7YyCXRsSnexBPJh4DMSuuovT5F0VR\n2qMX84G8NiL+RtI7qJsLBNqbD6QXnEDMiqsoX5hFUZT26MV8IKelvzueC8TMzAZbpocpFo3PQMyK\nqyh/cRdFUdoj9zOQdKrZpiLiiukc3MzMymuqLqzbexKFmZmVjruwzCxXRemyKYqitEcvurA+GBH/\nTdLnaHwV1qumc3AzMyuvqbqwrk9//2XegZiZWbm03YWVzih4FsmZyHci4t/yDKwT7sIyK66idNkU\nRVHao5dT2r4S+C6wFrgG2CNpaZvbjkgal7Rb0pVN6qyVNCFpp6SFdetmSLpDUv1UuGZm1kftTmn7\nPuDCiNgDIGkecBvwt602SudQvwZ4KXAfsF3SZyNivKbOUmBeRCyQdB6wDlhcs5u3AfeSPMDRzMwK\not3Huf9sMnmkvkfyQMWpLAImImJvOu3tRmC0rs4osAEgIrYBsyTNBpB0OnAR8LE24zSzPhgebj4D\n39BQv6OzvEx1FdYl6ctvSdoM3EwyBvI7wPY29j+HZO70SftJkkqrOgfSsoPAB4B3ArPaOJaZ9cnh\nw8Xo17femqoL6+Ka1weBC9LX/wKckktEqXTc5WBE7JRU4ZG5SBoaGxs7/rpSqVCpVPIMz8ysVKrV\nKtVqtav7zPVGQkmLgbGIGEmXVwMREWtq6qwDtkbETenyOEmiehvwWuBhkmT1BOAzEbGiwXF8FZZZ\nHxXlyqIyKEpb9XJO9JOBNwLnACdPlkfEG6bY7jHAd0gG0X8EfBNYHhG7aupcBLwlIl6ZJpwPRsTi\nuv1cALyj2Y2LTiBm/VWUL8UyKEpb9XJO9OuBXyeZofArJDMUTjmIHhHHgFXAFuAeYGNE7JK0UtLl\naZ3NwPcl7QE+Cry543dhZmY91+4ZyI6IeJ6kOyPiOZIeC3yt/kyhX3wGYtZfRfmrugyK0la9PAM5\nmv4+IulZJFdF/fvpHNjMzMqt3RsJ10saAt4FbCKZofBduUVlZoUzPJxcrtuI7/U4Mflx7mbWlqJ0\nvZRdUdqxl8/CerKkD6XPpLpd0gclPXk6BzYzs3JrdwxkI/Bj4FLg1cBPgJvyCsrMzIqv3auw7o6I\nZ9WV3RURz84tsg64C8ssf0Xpeim7orRjL6/C2iJpWfpo9RmSfhf44nQObGZm5dbyDETSz0genijg\nNOCX6aoZwAMRUYhHrPsMxCx/RfnLueyK0o65z4keEU+Yzs7NzGxwtXsfCJJeBbwkXaxGxOfzCcnM\nzMqg3ct438sjMwPeC7xN0nvyDMzMzIqt3auw7gQWRsQv0+XHADsi4jk5x9cWj4GY5a8offdlV5R2\n7OVVWABPqnntGQLNzDIYGmo+/e/wcL+j60y7YyDvAXZI2kpyRdZLgNW5RWVmNqAOHWq+TtM6H+i9\nKbuwJIlk/o+HgRekxd+MiH/OOba2uQvLLH9F6XoZZL1s417OSFiYu84bcQIxy58TSP7KlkDaHQO5\nQ9ILpq72qySNSBqXtFvSlU3qrJU0IWmnpIVp2eMkbZO0Q9Jdkq7KcnwzM8tHu2cg48AC4AfAgyTj\nIDHVVViSZgC7SeZEvw/YDiyLiPGaOkuBVemc6OcBV0/OdCjp1Ih4KL3q6x+AKyLimw2O4zMQs5z5\nDCR/ZTsDaXcQfUnG/S8CJiJiL4CkjcAoMF5TZxTYABAR2yTNkjQ7Ig5GxENpncelsfrja5YjTxpl\nnWiZQCSdDPwBMB+4C7g2Ih7uYP9zgH01y/tJkkqrOgfSsoPpGcztwDzgwxGxvYNjm1mHDh/2WYa1\nb6ozkE+QzIf+NWApcDbJHek9kd64+DxJTwT+r6SzI+LeRnXHxsaOv65UKlQqlZ7EaGZWBtVqlWq1\n2tV9TvU03uNXX0maSXL57rlt71xaDIxFxEi6vJpk7GRNTZ11wNaIuCldHgcuiIiDdft6F/BgRLy/\nwXE8BmLWBR7n6K+yjYFMdRXW0ckXHXZdTdoOzJc0V9JJwDJgU12dTcAKOJ5wjkTEQUn/TtKstPwU\n4OU8euzEzMz6aKourOdK+mn6WsAp6fLkVVgt5wOJiGOSVgFbSJLVtRGxS9LKdPv1EbFZ0kWS9pBc\n4XVZuvlTgE+k4yAzgJsiYnOmd2lmZl3X1mW8RecuLLPucBdWfw1aF5aZmVlDTiBmZpaJE4iZmWXi\nBGJmZpk4gZiZWSZOIGZmlokTiJmZZeIEYnYCGh5uPCe3n7hrnfCNhGYnIN8wWEy+kdDMzE4ITiBm\nZpaJE4iZmWXiBGJmZpk4gZiZWSZOIGZmlokTiJmZZZJ7ApE0Imlc0m5JVzaps1bShKSdkhamZadL\n+ntJ90i6S9IVecdqZmbtyzWBpNPRXgMsAc4Blks6q67OUmBeRCwAVgLr0lUPA2+PiHOAFwJvqd/W\nzMz6J+8zkEXARETsjYijwEZgtK7OKLABICK2AbMkzY6If46InWn5A8AuYE7O8ZqZWZvyTiBzgH01\ny/v51SRQX+dAfR1JvwEsBLZ1PUIzM8tkZr8DmIqkxwOfAt6Wnok0NDY2dvx1pVKhUqnkHpuZWVlU\nq1Wq1WpX95nrwxQlLQbGImIkXV4NRESsqamzDtgaETely+PABRFxUNJM4PPA30bE1S2O44cpmtUZ\nHobDhxuvGxqCQ4d6G49NzQ9TfLTtwHxJcyWdBCwDNtXV2QSsgOMJ50hEHEzX/R/g3lbJw8waO3w4\n+TJq9OPkYd2QaxdWRByTtArYQpKsro2IXZJWJqtjfURslnSRpD3Ag8DrASSdD/w+cJekHUAAfxwR\nX8gzZjMza4/nAzEbUJ7zo3zchWVmZicEJxAzM8vECcTMzDJxAjEzK4ihoWQcpNHP8HC/o/tVHkQ3\nG1AeRB8s3f739CC6mZn1jROImZll4gRiZmaZOIGYmVkmTiBmZpaJE4iZmWXiBGJmZpk4gZiZWSZO\nIGZmJVDEu9R9J7rZgPKd6CeOLP/WvhPd7AQwPFy8vzzNoAcJRNKIpHFJuyVd2aTOWkkTknZKel5N\n+bWSDkq6M+84zYqq1dS0zeY8N+uFXBOIpBnANcAS4BxguaSz6uosBeZFxAJgJfCRmtXXpduaWQOt\n+sWHhvodnQ26vM9AFgETEbE3Io4CG4HRujqjwAaAiNgGzJI0O13+OuC/scyaOHSo+dnJoUP9js4G\nXd4JZA6wr2Z5f1rWqs6BBnXMzKxgZvY7gG4ZGxs7/rpSqVCpVPoWi5lZ0VSrVarValf3metlvJIW\nA2MRMZIurwYiItbU1FkHbI2Im9LlceCCiDiYLs8FPhcRz2lxHF/Ga6U2PNx8QHxoyN1R1tqgXsa7\nHZgvaa6kk4BlwKa6OpuAFXA84RyZTB4ppT9mA6vVlVZOHlZUuSaQiDgGrAK2APcAGyNil6SVki5P\n62wGvi9pD/BR4M2T20u6AfgGcKakH0q6LM94zcysfb4T3awAfNe4TcegdmGZmdmAcgIxM7NMnEDM\nzCwTJxAzM8vECcSsR1o9VdfPrbIy8lVYZj3iK60sL74Ky8zMSsUJxMzMMnECMcug1XiGxznsRDEw\nT+M166XJZ1eZFcHkxGLN5PVZ9SC6WQYeELey8yC6mZn1jROImZll4gRi1oRv/DNrzWMgVjhFmZ3P\n4xw2yEoxBiJpRNK4pN2SrmxSZ62kCUk7JS3sZFvrrm7PmZxFq9n5miWWVmcLw8O9jb9WEdpzkLg9\niyXXBCJpBnANsAQ4B1gu6ay6OkuBeRGxAFgJrGt3W+u+ov8Hnbxcsf4Hmicd6PyejW51UxW9PcvG\n7VkseZ+BLAImImJvRBwFNgKjdXVGgQ0AEbENmCVpdpvb9sx0PrjtbjtVvVbrG61rp6wf/yGnc8zP\nfKba9rzhk8c5dKhxYtm6tfG+Jsvr9zmI7dmvz2azcrfn1Ouz/l9v57idyjuBzAH21SzvT8vaqdPO\ntj0zKB+qpUurj/or+8ILq1N29WS567rVT+0xO/3Lv5N/h6zt6S+8zus5gXS27aAkkFwH0SVdCiyJ\niMvT5dcCiyLiipo6nwPeExHfSJe/DPwR8PSptq3Zh4c6zcw6NN1B9LwfZXIAOKNm+fS0rL7O0xrU\nOamNbYHpN4KZmXUu7y6s7cB8SXMlnQQsAzbV1dkErACQtBg4EhEH29zWzMz6JNczkIg4JmkVsIUk\nWV0bEbskrUxWx/qI2CzpIkl7gAeBy1ptm2e8ZmbWvoG4kdDMzHrPjzIxM7NMnEDMzCyTgU0gks6S\n9BFJN0v6g37HU3aSRiWtl3SjpJf3O54yk/R0SR+TdHO/Yyk7SadK+rikj0r6vX7HU3adfjYHfgxE\nkoBPRMSKfscyCCQ9CfiLiHhTv2MpO0k3R8Tv9juOMkvvDzscEbdJ2hgRy/od0yBo97NZ+DMQSddK\nOijpzrrydh7SeDHweWBzL2Itg+m0Z+p/AB/ON8py6EJbWp0MbXo6jzyx4ljPAi2JvD+jhU8gwHUk\nD1Q8rtWDFiW9TtL7JT0lIj4XEa8EXtvroAssa3s+VdJ7gc0RsbPXQRdU5s/mZPVeBlsSHbUpSfI4\nfbJqr4IskU7b83i1dnZe+AQSEV8H6h/i3fRBixFxfUS8HThT0tWS1gG39TToAptGe14KvBR4taTL\nexlzUU2jLX8h6SPAQp+hPFqnbQrcSvKZ/DDwud5FWg6dtqek4U4+m3k/yiQvjR60uKi2QkR8BfhK\nL4MqsXba80PAh3oZVEm105aHgP/ay6BKrmmbRsRDwBv6EVSJtWrPjj6bhT8DMTOzYiprAmnnIY3W\nPrdn97gtu89t2l1da8+yJBDx6EEdP2hxetye3eO27D63aXfl1p6FTyCSbgC+QTIo/kNJl0XEMeCt\nJA9avAfY6Acttsft2T1uy+5zm3ZX3u058DcSmplZPgp/BmJmZsXkBGJmZpk4gZiZWSZOIGZmlokT\niJmZZeIEYmZmmTiBmJlZJk4gNrAkHZN0h6Qd6e8/6ndMkyTdIuk30tc/kPSVuvU76+dwaLCP70pa\nUFf2AUnvlPQsSdd1O26zWmV9Gq9ZOx6MiHO7uUNJj0nv5J3OPs4GZkTED9KiAJ4gaU5EHEjnZmjn\nDt8bSR5D8afpfgW8GnhhROyXNEfS6RGxfzrxmjXjMxAbZA0nxZH0fUljkm6X9G1JZ6blp6YzuP1T\nuu7itPw/S/qspL8DvqzEX0m6V9IWSbdJukTShZJurTnOyyR9pkEIvw98tq7sZpJkALAcuKFmPzMk\n/bmkbemZyeR0whtrtgF4CfCDmoTx+br1Zl3lBGKD7JS6LqzfqVn344j4D8A64L+nZX8C/F1ELAZ+\nC/hLSaek654HXBIRFwKXAGdExNnA64AXAkTEVuCZkp6cbnMZcG2DuM4Hbq9ZDuDTwG+nyxfz6MmR\n3ggciYjzSOZtuFzS3Ii4Gzgm6dlpvWUkZyWTvgW8uFUDmU2Hu7BskD3Uogtr8kzhdh754n4FcLGk\nd6bLJ/HIY6+/FBH3p69fBNwCEBEHJW2t2e/1wGslfRxYTJJg6j0F+Je6sn8FDkt6DXAv8POada8A\nnl2TAJ8ILAD2kp6FSLoX+E/A/6zZ7sfAUxu+e7MucAKxE9Uv0t/HeOT/gYBLI2KitqKkxcCDbe73\n4yRnD78AbomIXzao8xBwcoPym4EPAyvqygW8NSK+1GCbjSRPVf0q8O2IqE1MJ/PoRGTWVe7CskHW\ncAykhS8CVxzfWFrYpN4/AJemYyGzgcrkioj4EXAfSXdYs6ugdgHzG8R5K7CGJCHUx/VmSTPTuBZM\ndq1FxPeAnwDv5dHdVwBnAnc3icFs2pxAbJCdXDcG8u60vNkVTn8KPFbSnZLuBv53k3qfJplH+h5g\nA0k32P016z8J7IuI7zTZfjNwYc1yAETEAxHxFxHxcF39j5F0a90h6S6ScZva3oMbgWcC9QP2FwK3\nNYnBbNo8H4hZBpJOi4gHJQ0D24DzI+LH6boPAXdERMMzEEknA3+fbpPLf8B0prkq8KIm3Whm0+YE\nYpZBOnD+JOCxwJqIuD4t/xbwAPDyiDjaYvuXA7vyukdD0nzgqRHx1Tz2bwZOIGZmlpHHQMzMLBMn\nEDMzy8QJxMzMMnECMTOzTJxAzMwsk/8Pmq0TNsrj52MAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEWCAYAAABxMXBSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGt5JREFUeJzt3X20ZFV55/Hvj24DaIs9uiamA+1AtKPpvIiMQByzjIZR\nAaOdFUkaX+KCmESypM3rmmgmGZqYSTRvo6CBNoKKOja+JiSrEzQddZIJIK/B0GBoMQ6QNsQQpRVR\nOz7zR50rxe1bt87pe8+9Vfd+P2vVunXO3qfqqd2n66lzzj57p6qQJKmtw5Y7AEnSdDFxSJI6MXFI\nkjoxcUiSOjFxSJI6MXFIkjpZkYkjyfbljmHa2YYLZxsuDttx4Ra7DbMS7+NIUlWV5Y5jmtmGC2cb\nLg7bceEWuw1X5BFH3w41e3fZbr66XcvarFvqX3ULeb+2246rN6q87fq2bd2nvvfFQ23DUWXui93K\nJ7UNPeJYwtfvst18dbuWtVk3bnmxLeT12247rt6o8rbrx7XrUvxS7ntfPNQ2HFXmvtitfFLbcMUm\njuWOQZKmTdvksrbvQJbLSkyIktSXpP0Bidc4JEmdmDgkSZ2YOCRJnZg4JEmdmDgkSZ2YOCRJnZg4\nJEmdrNj7OCStbjfd+QUu3H07X/rqgYPK1h2+lm2nbOL4jeuXIbLpZ+KQtCJduPt2dt92z7x1Ljnr\nxCWKZmUxcUhakWaONB55xFo2bzjqm+v37LuP/Q8cmPNIRO2YOCStaJs3HMXlr3jaN5e37riKaz5z\n7zJGNP28OC5J6sTEIUnqxFNVkqbWfD2n9uy7bxkiWh1MHJKmVpueU+sOn/trbs+++9i646o569tV\nd34mDkkTrc1RxeyeUzPWHb6WV52y6aB1APsfODDyIvnu2+7h5OMePefrmVRMHJImXJujipOOfXTr\nezK2NYlkrkQ0nEjm63m12u//MHFImmij7seYMddRxXyO37h+5Bf/uKMb7/8YMHFImgqz78fow3xJ\nxfs/HmR3XElSJyYOSVInJg5JUicmDklSJyYOSVInJg5JUicmDklSJyYOSVInvSeOJKcm+VSSvUle\nPUd5klzQlN+c5IShstck2ZPk75O8J8kRfccrSZpfr4kjyRrgzcBpwGbgRUk2z6p2GrCpefwMcFGz\n7bHN8n+uqu8B1gBn9hmvJGm8vo84TgL2VtUdVfU1YCewZVadLcBlNXA1sD7JBuA+4OvAkUnWAg8H\n/qnneCVJY/Q9VtXRwJ1Dy3cBJ7eoc3RVXZfk94D/B3wF+HBVfbjPYCUtn1EDDDoh0+SZ2EEOkzwe\n+AXgOOALwPuSvLSq3jVH3e3AeUsboaTFNG749FETMmnxJKmhxfOravtc9fr+l7gb2Di0fEyzrk2d\nZwB/W1X/ApDkg8B/AQ5KHM2H2z6zPOvDS5oC8w2f3nXodB2aqkqben0njmuBTUmOY5AMzgRePKvO\nFcC5SXYyOI31xaral+RTwP9I8nAGp6pOAa7rOV5Jy2wphk/XwvSaOKrqQJJzgSsZ9Iq6tKpuSXJO\nU34xsAs4HdgL3A+c3ZTdlOQyBsniG8CNwFv6jFeSNF7vJw2raheD5DC87uKh5wW8csS2rwde32uA\nkqROvHNcktSJiUOS1ImJQ5LUiYlDktSJiUOS1ImJQ5LUiYlDktSJiUOS1ImJQ5LUiYlDktSJiUOS\n1ImJQ5LUiYlDktSJiUOS1ImJQ5LUiYlDktSJiUOS1ImJQ5LUiYlDktSJiUOS1ImJQ5LUiYlDktSJ\niUOS1ImJQ5LUiYlDktSJiUOS1ImJQ5LUiYlDktSJiUOS1Mna5Q5AkqbJnn33sXXHVQ9Zt+7wtWw7\nZRPHb1y/TFEtLROHJLWw7vDB1+X+Bw5wzWfunbPOJWeduJQhLRsThyS1sO2UTQB86asHHrJ+z777\n2P/AgYPWr2QmDklq4fiN6+c8oti646qRRyArlRfHJUmdmDgkSZ30njiSnJrkU0n2Jnn1HOVJckFT\nfnOSE4bK1id5f5Lbktya5Gl9xytJml+viSPJGuDNwGnAZuBFSTbPqnYasKl5/Axw0VDZG4G/qKon\nAU8Gbu0zXknSePMmjiR7kvxakscf4uufBOytqjuq6mvATmDLrDpbgMtq4GpgfZINSR4FPAO4BKCq\nvlZVXzjEOCRJi2TcEceLgEcAH07yiSS/kOTbO7z+0cCdQ8t3Neva1DkO+BfgbUluTPLWJI/o8N6S\npB7Mmziq6u+q6jVV9XjgVcDjgKuTfDTJT/cc21rgBOCiqnoK8GXgoGskkqSl1foaR1VdXVW/ALwM\nWA+8qcVmdwMbh5aPada1qXMXcFdVXdOsfz+DRHKQJNuT1MyjRVySpFmGv0eTbB9Vr1XiSHJikj9I\n8llgO7ADaHPK6lpgU5LjknwLcCZwxaw6VwAva3pXfT/wxaraV1WfA+5M8sSm3inAnrnepKq2V1Vm\n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\n1LFE4vGQAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1086,9 +1073,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nbZVKpTqB/D+F7yW5gV7LfQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1121,7 +1108,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 0ab708e09..25c57f3c5 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -33,13 +33,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" ] }, { @@ -123,11 +117,8 @@ }, "outputs": [], "source": [ - "# Instantiate a MaterialsFile, add Materials\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.add_material(fuel)\n", - "materials_file.add_material(water)\n", - "materials_file.add_material(zircaloy)\n", + "# Instantiate a Materials collection\n", + "materials_file = openmc.Materials((fuel, water, zircaloy))\n", "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", @@ -255,12 +246,8 @@ }, "outputs": [], "source": [ - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = geometry\n", - "\n", "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" + "geometry.export_to_xml()" ] }, { @@ -283,15 +270,17 @@ "inactive = 5\n", "particles = 2500\n", "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", + "# Instantiate a Settings object\n", + "settings_file = openmc.Settings()\n", "settings_file.batches = batches\n", "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()" @@ -320,9 +309,8 @@ "plot.pixels = [250, 250]\n", "plot.color = 'mat'\n", "\n", - "# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n", - "plot_file = openmc.PlotsFile()\n", - "plot_file.add_plot(plot)\n", + "# Instantiate a Plots collection and export to \"plots.xml\"\n", + "plot_file = openmc.Plots([plot])\n", "plot_file.export_to_xml()" ] }, @@ -353,8 +341,7 @@ ], "source": [ "# Run openmc in plotting mode\n", - "executor = openmc.Executor()\n", - "executor.plot_geometry(output=False)" + "openmc.plot_geometry(output=False)" ] }, { @@ -366,7 +353,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/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AEHgslKE7FoLIAAALKSURBVGje7dpLcqQwDAbgHHE2\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/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDQtMzBUMDY6Mzc6\nNDAtMDU6MDAMbOxZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA0LTMwVDA2OjM3OjQwLTA1OjAw\nfTFU5QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -399,8 +386,8 @@ }, "outputs": [], "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()" + "# Instantiate an empty Tallies object\n", + "tallies_file = openmc.Tallies()" ] }, { @@ -421,7 +408,7 @@ "tally.filters = [openmc.Filter(type='cell', bins=[fuel_cell.id, moderator_cell.id])]\n", "tally.filters.append(energy_filter)\n", "tally.scores = ['flux']\n", - "tallies_file.add_tally(tally)\n", + "tallies_file.append(tally)\n", "\n", "# Instantiate reaction rate Tally in fuel\n", "tally = openmc.Tally(name='fuel rxn rates')\n", @@ -429,7 +416,7 @@ "tally.filters.append(energy_filter)\n", "tally.scores = ['nu-fission', 'scatter']\n", "tally.nuclides = [u238, u235]\n", - "tallies_file.add_tally(tally)\n", + "tallies_file.append(tally)\n", "\n", "# Instantiate reaction rate Tally in moderator\n", "tally = openmc.Tally(name='moderator rxn rates')\n", @@ -437,7 +424,7 @@ "tally.filters.append(energy_filter)\n", "tally.scores = ['absorption', 'total']\n", "tally.nuclides = [o16, h1]\n", - "tallies_file.add_tally(tally)" + "tallies_file.append(tally)" ] }, { @@ -453,8 +440,7 @@ "abs_rate = openmc.Tally(name='abs. rate')\n", "fiss_rate.scores = ['nu-fission']\n", "abs_rate.scores = ['absorption']\n", - "tallies_file.add_tally(fiss_rate)\n", - "tallies_file.add_tally(abs_rate)" + "tallies_file += (fiss_rate, abs_rate)" ] }, { @@ -469,7 +455,7 @@ "therm_abs_rate = openmc.Tally(name='therm. abs. rate')\n", "therm_abs_rate.scores = ['absorption']\n", "therm_abs_rate.filters = [openmc.Filter(type='energy', bins=[0., 0.625e-6])]\n", - "tallies_file.add_tally(therm_abs_rate)" + "tallies_file.append(therm_abs_rate)" ] }, { @@ -485,7 +471,7 @@ "fuel_therm_abs_rate.scores = ['absorption']\n", "fuel_therm_abs_rate.filters = [openmc.Filter(type='energy', bins=[0., 0.625e-6]),\n", " openmc.Filter(type='cell', bins=[fuel_cell.id])]\n", - "tallies_file.add_tally(fuel_therm_abs_rate)" + "tallies_file.append(fuel_therm_abs_rate)" ] }, { @@ -500,7 +486,7 @@ "therm_fiss_rate = openmc.Tally(name='therm. fiss. rate')\n", "therm_fiss_rate.scores = ['nu-fission']\n", "therm_fiss_rate.filters = [openmc.Filter(type='energy', bins=[0., 0.625e-6])]\n", - "tallies_file.add_tally(therm_fiss_rate)" + "tallies_file.append(therm_fiss_rate)" ] }, { @@ -520,7 +506,7 @@ "tally.filters.append(energy_filter)\n", "tally.scores = ['nu-fission', 'scatter']\n", "tally.nuclides = [h1, u238]\n", - "tallies_file.add_tally(tally)" + "tallies_file.append(tally)" ] }, { @@ -567,13 +553,11 @@ " 888\n", " 888\n", "\n", - " Copyright: 2011-2015 Massachusetts Institute of Technology\n", - " License: http://mit-crpg.github.io/openmc/license.html\n", + " Copyright: 2011-2016 Massachusetts Institute of Technology\n", + " License: http://openmc.readthedocs.org/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: 5f252e2df51930b9175fd41bafa8db01f3eaeb92\n", - " Date/Time: 2016-03-23 14:50:46\n", - " MPI Processes: 1\n", - " OpenMP Threads: 16\n", + " Git SHA1: ae083cf5d491e6a778d5b762dad19c8d5fe45238\n", + " Date/Time: 2016-04-30 06:37:41\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -600,26 +584,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 +613,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", - " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 7.0900E-01 seconds\n", + " Reading cross sections = 4.0400E-01 seconds\n", + " Total time in simulation = 1.7108E+01 seconds\n", + " Time in transport only = 1.7093E+01 seconds\n", + " Time in inactive batches = 3.3970E+00 seconds\n", + " Time in active batches = 1.3711E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 0.0000E+00 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.7835E+01 seconds\n", + " Calculation Rate (inactive) = 3679.72 neutrons/second\n", + " Calculation Rate (active) = 2735.03 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" ] @@ -669,8 +653,8 @@ "# Remove old HDF5 (summary, statepoint) files\n", "!rm statepoint.*\n", "\n", - "# Run OpenMC with MPI!\n", - "executor.run_simulation()" + "# Run OpenMC!\n", + "openmc.run()" ] }, { @@ -697,7 +681,7 @@ "outputs": [], "source": [ "# Load the statepoint file\n", - "sp = StatePoint('statepoint.20.h5')" + "sp = openmc.StatePoint('statepoint.20.h5')" ] }, { @@ -717,7 +701,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 +740,8 @@ " 0\n", " total\n", " (nu-fission / absorption)\n", - " 1.036847\n", - " 0.009685\n", + " 1.038387\n", + " 0.006141\n", " \n", " \n", "\n", @@ -765,7 +749,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, @@ -816,12 +800,12 @@ " \n", " \n", " 0\n", - " 0\n", + " 0.0\n", " 6.250000e-07\n", " total\n", " absorption\n", - " 0.692034\n", - " 0.007217\n", + " 0.693337\n", + " 0.004109\n", " \n", " \n", "\n", @@ -829,7 +813,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, @@ -878,12 +862,12 @@ " \n", " \n", " 0\n", - " 0\n", + " 0.0\n", " 6.250000e-07\n", " total\n", " nu-fission\n", - " 1.202298\n", - " 0.013385\n", + " 1.203042\n", + " 0.0076\n", " \n", " \n", "\n", @@ -891,7 +875,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, @@ -942,13 +926,13 @@ " \n", " \n", " 0\n", - " 0\n", + " 0.0\n", " 6.250000e-07\n", " 10000\n", " total\n", " absorption\n", - " 0.749151\n", - " 0.009003\n", + " 0.748413\n", + " 0.004723\n", " \n", " \n", "\n", @@ -956,10 +940,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, @@ -1008,13 +992,13 @@ " \n", " \n", " 0\n", - " 0\n", + " 0.0\n", " 6.250000e-07\n", " 10000\n", " total\n", " (nu-fission / absorption)\n", - " 1.663435\n", - " 0.019976\n", + " 1.663385\n", + " 0.011253\n", " \n", " \n", "\n", @@ -1025,7 +1009,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, @@ -1073,13 +1057,13 @@ " \n", " \n", " 0\n", - " 0\n", + " 0.0\n", " 6.250000e-07\n", " 10000\n", " total\n", " (((absorption * nu-fission) * absorption) * (n...\n", - " 1.036847\n", - " 0.023674\n", + " 1.038387\n", + " 0.01316\n", " \n", " \n", "\n", @@ -1090,7 +1074,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 +1144,8 @@ " 6.250000e-07\n", " (U-238 / total)\n", " (nu-fission / flux)\n", - " 6.627781e-07\n", - " 7.082494e-09\n", + " 6.636968e-07\n", + " 4.132875e-09\n", " \n", " \n", " 1\n", @@ -1170,8 +1154,8 @@ " 6.250000e-07\n", " (U-238 / total)\n", " (scatter / flux)\n", - " 2.099843e-01\n", - " 2.003686e-03\n", + " 2.099856e-01\n", + " 1.232455e-03\n", " \n", " \n", " 2\n", @@ -1180,8 +1164,8 @@ " 6.250000e-07\n", " (U-235 / total)\n", " (nu-fission / flux)\n", - " 3.547246e-01\n", - " 3.854562e-03\n", + " 3.552458e-01\n", + " 2.252681e-03\n", " \n", " \n", " 3\n", @@ -1190,8 +1174,8 @@ " 6.250000e-07\n", " (U-235 / total)\n", " (scatter / flux)\n", - " 5.554185e-03\n", - " 5.316706e-05\n", + " 5.554345e-03\n", + " 3.265385e-05\n", " \n", " \n", " 4\n", @@ -1200,8 +1184,8 @@ " 2.000000e+01\n", " (U-238 / total)\n", " (nu-fission / flux)\n", - " 7.151165e-03\n", - " 5.480545e-05\n", + " 7.126668e-03\n", + " 5.296883e-05\n", " \n", " \n", " 5\n", @@ -1210,8 +1194,8 @@ " 2.000000e+01\n", " (U-238 / total)\n", " (scatter / flux)\n", - " 2.278981e-01\n", - " 6.424480e-04\n", + " 2.277460e-01\n", + " 1.003558e-03\n", " \n", " \n", " 6\n", @@ -1220,8 +1204,8 @@ " 2.000000e+01\n", " (U-235 / total)\n", " (nu-fission / flux)\n", - " 8.073636e-03\n", - " 4.374754e-05\n", + " 8.010911e-03\n", + " 6.802256e-05\n", " \n", " \n", " 7\n", @@ -1230,8 +1214,8 @@ " 2.000000e+01\n", " (U-235 / total)\n", " (scatter / flux)\n", - " 3.369592e-03\n", - " 8.971220e-06\n", + " 3.367794e-03\n", + " 1.443644e-05\n", " \n", " \n", "\n", @@ -1249,14 +1233,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 +1271,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 +1303,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.00555418]]\n", + "[[[ 0.00555435]]\n", "\n", - " [[ 0.00336959]]]\n" + " [[ 0.00336779]]]\n" ] } ], @@ -1343,8 +1327,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.22789806]\n", - " [ 0.00336959]]]\n" + "[[[ 0.22774598]\n", + " [ 0.00336779]]]\n" ] } ], @@ -1396,7 +1380,7 @@ " U-238\n", " nu-fission\n", " 0.000002\n", - " 1.338459e-08\n", + " 7.473789e-09\n", " \n", " \n", " 1\n", @@ -1405,8 +1389,8 @@ " 6.250000e-07\n", " U-235\n", " nu-fission\n", - " 0.864141\n", - " 7.363278e-03\n", + " 0.861547\n", + " 4.131310e-03\n", " \n", " \n", " 2\n", @@ -1415,8 +1399,8 @@ " 2.000000e+01\n", " U-238\n", " nu-fission\n", - " 0.082111\n", - " 6.090952e-04\n", + " 0.082356\n", + " 5.560461e-04\n", " \n", " \n", " 3\n", @@ -1425,8 +1409,8 @@ " 2.000000e+01\n", " U-235\n", " nu-fission\n", - " 0.092703\n", - " 4.695215e-04\n", + " 0.092574\n", + " 7.315442e-04\n", " \n", " \n", "\n", @@ -1435,15 +1419,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 +1473,8 @@ " 1.080060e-07\n", " H-1\n", " scatter\n", - " 4.591022\n", - " 0.043961\n", + " 4.599225\n", + " 0.015973\n", " \n", " \n", " 1\n", @@ -1499,8 +1483,8 @@ " 1.166529e-06\n", " H-1\n", " scatter\n", - " 2.032481\n", - " 0.010876\n", + " 2.037260\n", + " 0.011236\n", " \n", " \n", " 2\n", @@ -1509,8 +1493,8 @@ " 1.259921e-05\n", " H-1\n", " scatter\n", - " 1.654187\n", - " 0.012130\n", + " 1.662552\n", + " 0.010280\n", " \n", " \n", " 3\n", @@ -1519,8 +1503,8 @@ " 1.360790e-04\n", " H-1\n", " scatter\n", - " 1.864771\n", - " 0.011649\n", + " 1.872201\n", + " 0.012136\n", " \n", " \n", " 4\n", @@ -1529,8 +1513,8 @@ " 1.469734e-03\n", " H-1\n", " scatter\n", - " 2.056893\n", - " 0.008555\n", + " 2.080459\n", + " 0.013155\n", " \n", " \n", " 5\n", @@ -1539,8 +1523,8 @@ " 1.587401e-02\n", " H-1\n", " scatter\n", - " 2.138833\n", - " 0.015180\n", + " 2.154996\n", + " 0.011975\n", " \n", " \n", " 6\n", @@ -1549,8 +1533,8 @@ " 1.714488e-01\n", " H-1\n", " scatter\n", - " 2.207209\n", - " 0.014853\n", + " 2.218740\n", + " 0.008528\n", " \n", " \n", " 7\n", @@ -1559,8 +1543,8 @@ " 1.851749e+00\n", " H-1\n", " scatter\n", - " 1.999407\n", - " 0.009053\n", + " 2.010517\n", + " 0.009187\n", " \n", " \n", " 8\n", @@ -1569,8 +1553,8 @@ " 2.000000e+01\n", " H-1\n", " scatter\n", - " 0.368760\n", - " 0.003373\n", + " 0.372022\n", + " 0.003196\n", " \n", " \n", "\n", @@ -1578,26 +1562,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, @@ -1616,21 +1600,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.5.1" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/executor.rst b/docs/source/pythonapi/executor.rst deleted file mode 100644 index ef6693ec9..000000000 --- a/docs/source/pythonapi/executor.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_executor: - -======== -Executor -======== - -.. automodule:: openmc.executor - :members: diff --git a/docs/source/pythonapi/filter.rst b/docs/source/pythonapi/filter.rst deleted file mode 100644 index f93ba5a15..000000000 --- a/docs/source/pythonapi/filter.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_filter: - -====== -Filter -====== - -.. automodule:: openmc.filter - :members: diff --git a/docs/source/pythonapi/geometry.rst b/docs/source/pythonapi/geometry.rst deleted file mode 100644 index 6b87edb97..000000000 --- a/docs/source/pythonapi/geometry.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_geometry: - -======== -Geometry -======== - -.. automodule:: openmc.geometry - :members: diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 864b48c55..1631976e6 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -13,61 +13,9 @@ 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:** - -.. toctree:: - :maxdepth: 1 - - ace - mgxs_library - -**Creating input files:** - -.. toctree:: - :maxdepth: 1 - - cmfd - element - filter - geometry - material - mesh - nuclide - opencg_compatible - plots - settings - source - stats - surface - tallies - trigger - universe - -**Running OpenMC:** - -.. toctree:: - :maxdepth: 1 - - executor - -**Post-processing:** - -.. toctree:: - :maxdepth: 1 - - particle_restart - statepoint - summary - tallies - -**Multi-Group Cross Section Generation** - -.. toctree:: - :maxdepth: 1 - - mgxs - -**Example Jupyter Notebooks:** +------------------------- +Example Jupyter Notebooks +------------------------- .. toctree:: :maxdepth: 1 @@ -79,6 +27,264 @@ on a given module or class. examples/mgxs-part-ii examples/mgxs-part-iii +------------------------------------ +:mod:`openmc` -- Basic Functionality +------------------------------------ + +Handling nuclear data +--------------------- + +Classes ++++++++ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.XSdata + openmc.MGXSLibrary + +Functions ++++++++++ + +.. autosummary:: + :toctree: generated + :nosignatures: + + openmc.ace.ascii_to_binary + +Simulation Settings +------------------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.Source + openmc.ResonanceScattering + openmc.Settings + +Material Specification +---------------------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.Nuclide + openmc.Element + openmc.Macroscopic + openmc.Material + openmc.Materials + +Building geometry +----------------- + +.. 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 + +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.Tallies + +Coarse Mesh Finite Difference Acceleration +------------------------------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.CMFDMesh + openmc.CMFD + +Plotting +-------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclass.rst + + openmc.Plot + openmc.Plots + +Running OpenMC +-------------- + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myfunction.rst + + openmc.run + openmc.plot_geometry + +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 + .. _Jupyter: https://jupyter.org/ .. _NumPy: http://www.numpy.org/ .. _Codecademy: https://www.codecademy.com/tracks/python diff --git a/docs/source/pythonapi/material.rst b/docs/source/pythonapi/material.rst deleted file mode 100644 index 16a3af701..000000000 --- a/docs/source/pythonapi/material.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_material: - -========= -Materials -========= - -.. automodule:: openmc.material - :members: diff --git a/docs/source/pythonapi/mesh.rst b/docs/source/pythonapi/mesh.rst deleted file mode 100644 index dbecd7c31..000000000 --- a/docs/source/pythonapi/mesh.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_mesh: - -==== -Mesh -==== - -.. automodule:: openmc.mesh - :members: diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst deleted file mode 100644 index 2a0bb52ba..000000000 --- a/docs/source/pythonapi/mgxs.rst +++ /dev/null @@ -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: diff --git a/docs/source/pythonapi/mgxs_library.rst b/docs/source/pythonapi/mgxs_library.rst deleted file mode 100644 index bdcdc364c..000000000 --- a/docs/source/pythonapi/mgxs_library.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_mgxs_library: - -============================== -Multi-group Cross Section Data -============================== - -.. automodule:: openmc.mgxs_library - :members: diff --git a/docs/source/pythonapi/nuclide.rst b/docs/source/pythonapi/nuclide.rst deleted file mode 100644 index 9e3214e92..000000000 --- a/docs/source/pythonapi/nuclide.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_nuclide: - -======= -Nuclide -======= - -.. automodule:: openmc.nuclide - :members: diff --git a/docs/source/pythonapi/particle_restart.rst b/docs/source/pythonapi/particle_restart.rst deleted file mode 100644 index 66ed89988..000000000 --- a/docs/source/pythonapi/particle_restart.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_particle_restart: - -================ -Particle Restart -================ - -.. automodule:: openmc.particle_restart - :members: diff --git a/docs/source/pythonapi/plots.rst b/docs/source/pythonapi/plots.rst deleted file mode 100644 index 8ad5348be..000000000 --- a/docs/source/pythonapi/plots.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_plots: - -===== -Plots -===== - -.. automodule:: openmc.plots - :members: diff --git a/docs/source/pythonapi/settings.rst b/docs/source/pythonapi/settings.rst deleted file mode 100644 index 3a3915ff5..000000000 --- a/docs/source/pythonapi/settings.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_settings: - -======== -Settings -======== - -.. automodule:: openmc.settings - :members: diff --git a/docs/source/pythonapi/source.rst b/docs/source/pythonapi/source.rst deleted file mode 100644 index 4bc770363..000000000 --- a/docs/source/pythonapi/source.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_source: - -====== -Source -====== - -.. automodule:: openmc.source - :members: diff --git a/docs/source/pythonapi/statepoint.rst b/docs/source/pythonapi/statepoint.rst deleted file mode 100644 index 737fc03fc..000000000 --- a/docs/source/pythonapi/statepoint.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_statepoint: - -========== -Statepoint -========== - -.. automodule:: openmc.statepoint - :members: diff --git a/docs/source/pythonapi/stats.rst b/docs/source/pythonapi/stats.rst deleted file mode 100644 index 58060cacb..000000000 --- a/docs/source/pythonapi/stats.rst +++ /dev/null @@ -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: diff --git a/docs/source/pythonapi/summary.rst b/docs/source/pythonapi/summary.rst deleted file mode 100644 index 9a791127b..000000000 --- a/docs/source/pythonapi/summary.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_summary: - -======= -Summary -======= - -.. automodule:: openmc.summary - :members: diff --git a/docs/source/pythonapi/surface.rst b/docs/source/pythonapi/surface.rst deleted file mode 100644 index cc31f5b3e..000000000 --- a/docs/source/pythonapi/surface.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_surface: - -======= -Surface -======= - -.. automodule:: openmc.surface - :members: diff --git a/docs/source/pythonapi/tallies.rst b/docs/source/pythonapi/tallies.rst deleted file mode 100644 index 2f24edf3a..000000000 --- a/docs/source/pythonapi/tallies.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_tallies: - -======= -Tallies -======= - -.. automodule:: openmc.tallies - :members: diff --git a/docs/source/pythonapi/trigger.rst b/docs/source/pythonapi/trigger.rst deleted file mode 100644 index 82567c2cf..000000000 --- a/docs/source/pythonapi/trigger.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_trigger: - -======= -Trigger -======= - -.. automodule:: openmc.trigger - :members: diff --git a/docs/source/pythonapi/universe.rst b/docs/source/pythonapi/universe.rst deleted file mode 100644 index fd4a3c1e2..000000000 --- a/docs/source/pythonapi/universe.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _pythonapi_universe: - -======== -Universe -======== - -.. automodule:: openmc.universe - :members: diff --git a/docs/source/usersguide/processing.rst b/docs/source/usersguide/processing.rst index b18569ec6..059659dbc 100644 --- a/docs/source/usersguide/processing.rst +++ b/docs/source/usersguide/processing.rst @@ -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 ` demonstrates how to extract data from a statepoint using the Python API. diff --git a/examples/python/basic/build-xml.py b/examples/python/basic/build-xml.py index eb8fbd23f..ffff03720 100644 --- a/examples/python/basic/build-xml.py +++ b/examples/python/basic/build-xml.py @@ -1,6 +1,5 @@ import openmc -from openmc.source import Source -from openmc.stats import Box + ############################################################################### # Simulation Input File Parameters @@ -13,7 +12,7 @@ particles = 10000 ############################################################################### -# Exporting to OpenMC materials.xml File +# Exporting to OpenMC materials.xml file ############################################################################### # Instantiate some Nuclides @@ -32,15 +31,14 @@ fuel = openmc.Material(material_id=40, name='fuel') fuel.set_density('g/cc', 4.5) fuel.add_nuclide(u235, 1.) -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([moderator, fuel]) materials_file.default_xs = '71c' -materials_file.add_materials([moderator, fuel]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate ZCylinder surfaces @@ -75,31 +73,32 @@ cell1.fill = universe1 universe1.add_cells([cell2, cell3]) root.add_cells([cell1, cell4]) -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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() ############################################################################### -# Exporting to OpenMC tallies.xml File +# Exporting to OpenMC tallies.xml file ############################################################################### # Instantiate some tally Filters @@ -124,9 +123,6 @@ third_tally = openmc.Tally(tally_id=3, name='third tally') third_tally.filters = [cell_filter, energy_filter, energyout_filter] third_tally.scores = ['scatter', 'nu-scatter', 'nu-fission'] -# Instantiate a TalliesFile, register all Tallies, and export to XML -tallies_file = openmc.TalliesFile() -tallies_file.add_tally(first_tally) -tallies_file.add_tally(second_tally) -tallies_file.add_tally(third_tally) +# Instantiate a Tallies collection and export to XML +tallies_file = openmc.Tallies((first_tally, second_tally, third_tally)) tallies_file.export_to_xml() diff --git a/examples/python/boxes/build-xml.py b/examples/python/boxes/build-xml.py index 2ae3ee612..814f60beb 100644 --- a/examples/python/boxes/build-xml.py +++ b/examples/python/boxes/build-xml.py @@ -1,8 +1,5 @@ import numpy as np - import openmc -from openmc.source import Source -from openmc.stats import Box ############################################################################### # Simulation Input File Parameters @@ -39,15 +36,14 @@ moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) moderator.add_s_alpha_beta('HH2O', '71t') -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([fuel1, fuel2, moderator]) materials_file.default_xs = '71c' -materials_file.add_materials([fuel1, fuel2, moderator]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate planar surfaces @@ -100,26 +96,26 @@ outer_box.fill = moderator root = openmc.Universe(universe_id=0, name='root universe') root.add_cells([inner_box, middle_box, outer_box]) -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### # Exporting to OpenMC settings.xml File ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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() ############################################################################### @@ -132,7 +128,6 @@ plot.width = [20, 20] plot.pixels = [200, 200] plot.color = 'cell' -# Instantiate a PlotsFile, add Plot, and export to XML -plot_file = openmc.PlotsFile() -plot_file.add_plot(plot) +# Instantiate a Plots collection and export to XML +plot_file = openmc.Plots([plot]) plot_file.export_to_xml() diff --git a/examples/python/lattice/hexagonal/build-xml.py b/examples/python/lattice/hexagonal/build-xml.py index d1144cd91..ef3a12847 100644 --- a/examples/python/lattice/hexagonal/build-xml.py +++ b/examples/python/lattice/hexagonal/build-xml.py @@ -1,6 +1,4 @@ import openmc -from openmc.source import Source -from openmc.stats import Box ############################################################################### # Simulation Input File Parameters @@ -37,15 +35,14 @@ iron = openmc.Material(material_id=3, name='iron') iron.set_density('g/cc', 7.9) iron.add_nuclide(fe56, 1.) -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([moderator, fuel, iron]) materials_file.default_xs = '71c' -materials_file.add_materials([moderator, fuel, iron]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate Surfaces @@ -107,27 +104,27 @@ lattice.outer = univ2 # Fill Cell with the Lattice cell1.fill = lattice -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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 @@ -135,7 +132,7 @@ settings_file.export_to_xml() ############################################################################### -# Exporting to OpenMC plots.xml File +# Exporting to OpenMC plots.xml file ############################################################################### plot_xy = openmc.Plot(plot_id=1) @@ -153,10 +150,8 @@ plot_yz.width = [8, 8] plot_yz.pixels = [400, 400] plot_yz.color = 'mat' -# Instantiate a PlotsFile, add Plot, and export to XML -plot_file = openmc.PlotsFile() -plot_file.add_plot(plot_xy) -plot_file.add_plot(plot_yz) +# Instantiate a Plots collection, add plots, and export to XML +plot_file = openmc.Plots((plot_xy, plot_yz)) plot_file.export_to_xml() @@ -169,7 +164,6 @@ tally = openmc.Tally(tally_id=1) tally.filters = [openmc.Filter(type='distribcell', bins=[cell2.id])] tally.scores = ['total'] -# Instantiate a TalliesFile, register Tally/Mesh, and export to XML -tallies_file = openmc.TalliesFile() -tallies_file.add_tally(tally) +# Instantiate a Tallies collection and export to XML +tallies_file = openmc.Tallies([tally]) tallies_file.export_to_xml() diff --git a/examples/python/lattice/nested/build-xml.py b/examples/python/lattice/nested/build-xml.py index e4ac84839..b2d611d34 100644 --- a/examples/python/lattice/nested/build-xml.py +++ b/examples/python/lattice/nested/build-xml.py @@ -1,6 +1,4 @@ import openmc -from openmc.source import Source -from openmc.stats import Box ############################################################################### # Simulation Input File Parameters @@ -13,7 +11,7 @@ particles = 10000 ############################################################################### -# Exporting to OpenMC materials.xml File +# Exporting to OpenMC materials.xml file ############################################################################### # Instantiate some Nuclides @@ -32,15 +30,14 @@ moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) moderator.add_s_alpha_beta('HH2O', '71t') -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials((moderator, fuel)) materials_file.default_xs = '71c' -materials_file.add_materials([moderator, fuel]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate Surfaces @@ -118,32 +115,32 @@ lattice2.universes = [[univ4, univ4], cell1.fill = lattice2 cell2.fill = lattice1 -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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() ############################################################################### -# Exporting to OpenMC plots.xml File +# Exporting to OpenMC plots.xml file ############################################################################### plot = openmc.Plot(plot_id=1) @@ -152,14 +149,13 @@ plot.width = [4, 4] plot.pixels = [400, 400] plot.color = 'mat' -# Instantiate a PlotsFile, add Plot, and export to XML -plot_file = openmc.PlotsFile() -plot_file.add_plot(plot) +# Instantiate a Plots object and export to XML +plot_file = openmc.Plots([plot]) plot_file.export_to_xml() ############################################################################### -# Exporting to OpenMC tallies.xml File +# Exporting to OpenMC tallies.xml file ############################################################################### # Instantiate a tally mesh @@ -178,8 +174,6 @@ tally = openmc.Tally(tally_id=1) tally.filters = [mesh_filter] tally.scores = ['total'] -# Instantiate a TalliesFile, register Tally/Mesh, and export to XML -tallies_file = openmc.TalliesFile() -tallies_file.add_mesh(mesh) -tallies_file.add_tally(tally) +# Instantiate a Tallies collection, register Tally/Mesh, and export to XML +tallies_file = openmc.Tallies([tally]) tallies_file.export_to_xml() diff --git a/examples/python/lattice/simple/build-xml.py b/examples/python/lattice/simple/build-xml.py index 78ee61eb4..65c355479 100644 --- a/examples/python/lattice/simple/build-xml.py +++ b/examples/python/lattice/simple/build-xml.py @@ -1,6 +1,4 @@ import openmc -from openmc.source import Source -from openmc.stats import Box ############################################################################### # Simulation Input File Parameters @@ -13,7 +11,7 @@ particles = 10000 ############################################################################### -# Exporting to OpenMC materials.xml File +# Exporting to OpenMC materials.xml file ############################################################################### # Instantiate some Nuclides @@ -32,15 +30,14 @@ moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) moderator.add_s_alpha_beta('HH2O', '71t') -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([moderator, fuel]) materials_file.default_xs = '71c' -materials_file.add_materials([moderator, fuel]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate Surfaces @@ -108,34 +105,34 @@ lattice.universes = [[univ1, univ2, univ1, univ2], # Fill Cell with the Lattice cell1.fill = lattice -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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() ############################################################################### -# Exporting to OpenMC plots.xml File +# Exporting to OpenMC plots.xml file ############################################################################### plot = openmc.Plot(plot_id=1) @@ -144,14 +141,13 @@ plot.width = [4, 4] plot.pixels = [400, 400] plot.color = 'mat' -# Instantiate a PlotsFile, add Plot, and export to XML -plot_file = openmc.PlotsFile() -plot_file.add_plot(plot) +# Instantiate a Plots collection and export to XML +plot_file = openmc.Plots([plot]) plot_file.export_to_xml() ############################################################################### -# Exporting to OpenMC tallies.xml File +# Exporting to OpenMC tallies.xml file ############################################################################### # Instantiate a tally mesh @@ -175,8 +171,6 @@ tally.filters = [mesh_filter] tally.scores = ['total'] tally.triggers = [trigger] -# Instantiate a TalliesFile, register Tally/Mesh, and export to XML -tallies_file = openmc.TalliesFile() -tallies_file.add_mesh(mesh) -tallies_file.add_tally(tally) +# Instantiate a Tallies collection and export to XML +tallies_file = openmc.Tallies([tally]) tallies_file.export_to_xml() diff --git a/examples/python/pincell/build-xml.py b/examples/python/pincell/build-xml.py index aa8714838..a3be3e97e 100644 --- a/examples/python/pincell/build-xml.py +++ b/examples/python/pincell/build-xml.py @@ -1,6 +1,4 @@ import openmc -from openmc.source import Source -from openmc.stats import Box ############################################################################### # Simulation Input File Parameters @@ -13,7 +11,7 @@ particles = 1000 ############################################################################### -# Exporting to OpenMC materials.xml File +# Exporting to OpenMC materials.xml file ############################################################################### # Instantiate some Nuclides @@ -102,15 +100,14 @@ borated_water.add_nuclide(o16, 2.4672e-2) borated_water.add_nuclide(o17, 6.0099e-5) borated_water.add_s_alpha_beta('HH2O', '71t') -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([uo2, helium, zircaloy, borated_water]) materials_file.default_xs = '71c' -materials_file.add_materials([uo2, helium, zircaloy, borated_water]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate ZCylinder surfaces @@ -151,27 +148,27 @@ root = openmc.Universe(universe_id=0, name='root universe') # Register Cells with Universe root.add_cells([fuel, gap, clad, water]) -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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] @@ -179,7 +176,7 @@ settings_file.export_to_xml() ############################################################################### -# Exporting to OpenMC tallies.xml File +# Exporting to OpenMC tallies.xml file ############################################################################### # Instantiate a tally mesh @@ -199,8 +196,6 @@ tally = openmc.Tally(tally_id=1, name='tally 1') tally.filters = [energy_filter, mesh_filter] tally.scores = ['flux', 'fission', 'nu-fission'] -# Instantiate a TalliesFile, register all Tallies, and export to XML -tallies_file = openmc.TalliesFile() -tallies_file.add_mesh(mesh) -tallies_file.add_tally(tally) +# Instantiate a Tallies collection and export to XML +tallies_file = openmc.Tallies([tally]) tallies_file.export_to_xml() diff --git a/examples/python/pincell_multigroup/build-xml.py b/examples/python/pincell_multigroup/build-xml.py index ff75a64d9..c7d6dfc8b 100644 --- a/examples/python/pincell_multigroup/build-xml.py +++ b/examples/python/pincell_multigroup/build-xml.py @@ -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 @@ -14,7 +12,7 @@ inactive = 10 particles = 1000 ############################################################################### -# Exporting to OpenMC mg_cross_sections.xml File +# Exporting to OpenMC mg_cross_sections.xml file ############################################################################### # Instantiate the energy group data @@ -61,13 +59,13 @@ scatter = [[[0.0444777, 0.1134000, 0.0007235, 0.0000037, 0.0000001, 0.0000000, 0 [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.1324400, 2.4807000]]] h2o_xsdata.scatter = np.array(scatter) -mg_cross_sections_file = openmc.MGXSLibraryFile(groups) +mg_cross_sections_file = openmc.MGXSLibrary(groups) mg_cross_sections_file.add_xsdatas([uo2_xsdata,h2o_xsdata]) mg_cross_sections_file.export_to_xml() ############################################################################### -# Exporting to OpenMC materials.xml File +# Exporting to OpenMC materials.xml file ############################################################################### # Instantiate some Macroscopic Data @@ -83,15 +81,14 @@ water = openmc.Material(material_id=2, name='Water') water.set_density('macro', 1.0) water.add_macroscopic(h2o_data) -# Instantiate a MaterialsFile, register all Materials, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([uo2, water]) materials_file.default_xs = '300K' -materials_file.add_materials([uo2, water]) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate ZCylinder surfaces @@ -124,31 +121,33 @@ root = openmc.Universe(universe_id=0, name='root universe') # Register Cells with Universe root.add_cells([fuel, moderator]) -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() settings_file.energy_mode = "multi-group" 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 +# Exporting to OpenMC tallies.xml file ############################################################################### # Instantiate a tally mesh @@ -167,14 +166,9 @@ mesh_filter.mesh = mesh # Instantiate the Tally tally = openmc.Tally(tally_id=1, name='tally 1') -tally.add_filter(energy_filter) -tally.add_filter(mesh_filter) -tally.add_score('flux') -tally.add_score('fission') -tally.add_score('nu-fission') +tally.filters = [energy_filter, mesh_filter] +tally.scores = ['flux', 'fission', 'nu-fission'] -# Instantiate a TalliesFile, register all Tallies, and export to XML -tallies_file = openmc.TalliesFile() -tallies_file.add_mesh(mesh) -tallies_file.add_tally(tally) +# Instantiate a Tallies collection, register all Tallies, and export to XML +tallies_file = openmc.Tallies([tally]) tallies_file.export_to_xml() diff --git a/examples/python/reflective/build-xml.py b/examples/python/reflective/build-xml.py index 7e4fd30be..4ecd0351f 100644 --- a/examples/python/reflective/build-xml.py +++ b/examples/python/reflective/build-xml.py @@ -1,8 +1,5 @@ import numpy as np - import openmc -from openmc.stats import Box -from openmc.source import Source ############################################################################### # Simulation Input File Parameters @@ -15,7 +12,7 @@ particles = 10000 ############################################################################### -# Exporting to OpenMC materials.xml File +# Exporting to OpenMC materials.xml file ############################################################################### # Instantiate a Nuclides @@ -26,15 +23,14 @@ fuel = openmc.Material(material_id=1, name='fuel') fuel.set_density('g/cc', 4.5) fuel.add_nuclide(u235, 1.) -# Instantiate a MaterialsFile, register Material, and export to XML -materials_file = openmc.MaterialsFile() +# Instantiate a Materials collection and export to XML +materials_file = openmc.Materials([fuel]) materials_file.default_xs = '71c' -materials_file.add_material(fuel) materials_file.export_to_xml() ############################################################################### -# Exporting to OpenMC geometry.xml File +# Exporting to OpenMC geometry.xml file ############################################################################### # Instantiate Surfaces @@ -67,24 +63,25 @@ root = openmc.Universe(universe_id=0, name='root universe') # Register Cell with Universe root.add_cell(cell) -# Instantiate a Geometry and register the root Universe +# Instantiate a Geometry, register the root Universe, and export to XML geometry = openmc.Geometry() geometry.root_universe = root - -# Instantiate a GeometryFile, register Geometry, and export to XML -geometry_file = openmc.GeometryFile() -geometry_file.geometry = geometry -geometry_file.export_to_xml() +geometry.export_to_xml() ############################################################################### -# Exporting to OpenMC settings.xml File +# Exporting to OpenMC settings.xml file ############################################################################### -# Instantiate a SettingsFile, set all runtime parameters, and export to XML -settings_file = openmc.SettingsFile() +# Instantiate a Settings object, set all runtime parameters, and export to XML +settings_file = openmc.Settings() 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() diff --git a/openmc/__init__.py b/openmc/__init__.py index 5bdc3f089..0bde0f584 100644 --- a/openmc/__init__.py +++ b/openmc/__init__.py @@ -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 * diff --git a/openmc/cell.py b/openmc/cell.py new file mode 100644 index 000000000..ed1f3178b --- /dev/null +++ b/openmc/cell.py @@ -0,0 +1,447 @@ +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. + 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._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.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) + 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 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 + + @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 + # 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.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 diff --git a/openmc/checkvalue.py b/openmc/checkvalue.py index 53f4b8368..62b843a3a 100644 --- a/openmc/checkvalue.py +++ b/openmc/checkvalue.py @@ -1,3 +1,4 @@ +import copy from collections import Iterable from numbers import Integral, Real @@ -57,7 +58,7 @@ def check_type(name, value, expected_type, expected_iter_type=None): else: msg = 'Unable to set "{0}" to "{1}" which is not of type "{2}"'.format( name, value, expected_type.__name__) - raise ValueError(msg) + raise TypeError(msg) if expected_iter_type: for item in value: @@ -71,7 +72,7 @@ def check_type(name, value, expected_type, expected_iter_type=None): msg = 'Unable to set "{0}" to "{1}" since each item must be ' \ 'of type "{2}"'.format(name, value, expected_iter_type.__name__) - raise ValueError(msg) + raise TypeError(msg) def check_iterable_type(name, value, expected_type, min_depth=1, max_depth=1): @@ -122,7 +123,7 @@ def check_iterable_type(name, value, expected_type, min_depth=1, max_depth=1): if len(tree) < min_depth: msg = 'Error setting "{0}": The item at {1} does not meet the '\ 'minimum depth of {2}'.format(name, ind_str, min_depth) - raise ValueError(msg) + raise TypeError(msg) # This item is okay. Move on to the next item. index[-1] += 1 @@ -140,7 +141,7 @@ def check_iterable_type(name, value, expected_type, min_depth=1, max_depth=1): msg = 'Error setting {0}: Found an iterable at {1}, items '\ 'in that iterable exceed the maximum depth of {2}' \ .format(name, ind_str, max_depth) - raise ValueError(msg) + raise TypeError(msg) else: # This item is completely unexpected. @@ -148,7 +149,7 @@ def check_iterable_type(name, value, expected_type, min_depth=1, max_depth=1): "item at {2} is of type '{3}'"\ .format(name, expected_type.__name__, ind_str, type(current_item).__name__) - raise ValueError(msg) + raise TypeError(msg) def check_length(name, value, length_min, length_max=None): @@ -278,6 +279,21 @@ class CheckedList(list): for item in items: self.append(item) + def __add__(self, other): + new_instance = copy.copy(self) + new_instance += other + return new_instance + + def __radd__(self, other): + return self + other + + def __iadd__(self, other): + check_type('CheckedList add operand', other, Iterable, + self.expected_type) + for item in other: + self.append(item) + return self + def append(self, item): """Append item to list diff --git a/openmc/cmfd.py b/openmc/cmfd.py index c247719c9..d4cce2af5 100644 --- a/openmc/cmfd.py +++ b/openmc/cmfd.py @@ -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 @@ -187,7 +187,7 @@ class CMFDMesh(object): return element -class CMFDFile(object): +class CMFD(object): """Parameters that control the use of coarse-mesh finite difference acceleration in OpenMC. This corresponds directly to the cmfd.xml input file. @@ -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 diff --git a/openmc/element.py b/openmc/element.py index dda110ea7..219aafbdf 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -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 """ diff --git a/openmc/executor.py b/openmc/executor.py index 214517d6e..fbd9e5d82 100644 --- a/openmc/executor.py +++ b/openmc/executor.py @@ -1,131 +1,103 @@ from __future__ import print_function import subprocess from numbers import Integral -import os import sys -from openmc.checkvalue import check_type - if sys.version_info[0] >= 3: basestring = str -class Executor(object): - """Control execution of OpenMC +def _run(command, output, cwd): + # Launch a subprocess + p = subprocess.Popen(command, shell=True, cwd=cwd, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, universal_newlines=True) - Attributes + # Capture and re-print OpenMC output in real-time + while True: + # If OpenMC is finished, break loop + line = p.stdout.readline() + if not line and p.poll() != None: + break + + # If user requested output, print to screen + if output: + print(line, end='') + + # Return the returncode (integer, zero if no problems encountered) + return p.returncode + + +def plot_geometry(output=True, openmc_exec='openmc', cwd='.'): + """Run OpenMC in plotting mode + + Parameters ---------- - working_directory : str - Path to working directory to run in + output : bool + Capture OpenMC output from standard out + openmc_exec : str + Path to OpenMC executable + cwd : str, optional + Path to working directory to run in. Defaults to the current working directory. """ - def __init__(self): - self._working_directory = '.' + return _run(openmc_exec + ' -p', output, cwd) - def _run_openmc(self, command, output): - # Launch a subprocess to run OpenMC - p = subprocess.Popen(command, shell=True, - cwd=self._working_directory, - stdout=subprocess.PIPE, - universal_newlines=True) - # Capture and re-print OpenMC output in real-time - while True: - # If OpenMC is finished, break loop - line = p.stdout.readline() - if not line and p.poll() != None: - break +def run(particles=None, threads=None, geometry_debug=False, + restart_file=None, tracks=False, mpi_procs=1, output=True, + openmc_exec='openmc', mpi_exec='mpiexec', cwd='.'): + """Run an OpenMC simulation. - # If user requested output, print to screen - if output: - print(line, end='') + Parameters + ---------- + particles : int, optional + Number of particles to simulate per generation. + threads : int, optional + Number of OpenMP threads. If OpenMC is compiled with OpenMP threading + enabled, the default is implementation-dependent but is usually equal to + the number of hardware threads available (or a value set by the + OMP_NUM_THREADS environment variable). + geometry_debug : bool, optional + Turn on geometry debugging during simulation. Defaults to False. + restart_file : str, optional + Path to restart file to use + tracks : bool, optional + Write tracks for all particles. Defaults to False. + mpi_procs : int, optional + Number of MPI processes. + output : bool, optional + Capture OpenMC output from standard out. Defaults to True. + openmc_exec : str, optional + Path to OpenMC executable. Defaults to 'openmc'. + mpi_exec : str, optional + MPI execute command. Defaults to 'mpiexec'. + cwd : str, optional + Path to working directory to run in. Defaults to the current working directory. - # Return the returncode (integer, zero if no problems encountered) - return p.returncode + """ - @property - def working_directory(self): - return self._working_directory + post_args = ' ' + pre_args = '' - @working_directory.setter - def working_directory(self, working_directory): - check_type("Executor's working directory", working_directory, - basestring) - if not os.path.isdir(working_directory): - msg = 'Unable to set Executor\'s working directory to "{0}" ' \ - 'which does not exist'.format(working_directory) - raise ValueError(msg) + if isinstance(particles, Integral) and particles > 0: + post_args += '-n {0} '.format(particles) - self._working_directory = working_directory + if isinstance(threads, Integral) and threads > 0: + post_args += '-s {0} '.format(threads) - def plot_geometry(self, output=True, openmc_exec='openmc'): - """Run OpenMC in plotting mode""" + if geometry_debug: + post_args += '-g ' - return self._run_openmc(openmc_exec + ' -p', output) + if isinstance(restart_file, basestring): + post_args += '-r {0} '.format(restart_file) - def run_simulation(self, particles=None, threads=None, - geometry_debug=False, restart_file=None, - tracks=False, mpi_procs=1, output=True, - openmc_exec='openmc', mpi_exec=None): - """Run an OpenMC simulation. + if tracks: + post_args += '-t' - Parameters - ---------- - particles : int - Number of particles to simulate per generation - threads : int - Number of OpenMP threads - geometry_debug : bool - Turn on geometry debugging during simulation - restart_file : str - Path to restart file to use - tracks : bool - Write tracks for all particles - mpi_procs : int - Number of MPI processes - output : bool - Capture OpenMC output from standard out - openmc_exec : str - Path to OpenMC executable + if isinstance(mpi_procs, Integral) and mpi_procs > 1: + pre_args += '{} -n {} '.format(mpi_exec, mpi_procs) - """ + command = pre_args + openmc_exec + ' ' + post_args - post_args = ' ' - pre_args = '' - - if isinstance(particles, Integral) and particles > 0: - post_args += '-n {0} '.format(particles) - - if isinstance(threads, Integral) and threads > 0: - post_args += '-s {0} '.format(threads) - - if geometry_debug: - post_args += '-g ' - - if isinstance(restart_file, basestring): - post_args += '-r {0} '.format(restart_file) - - if tracks: - post_args += '-t' - - if isinstance(mpi_procs, Integral) and mpi_procs > 1: - np_present = True - else: - np_present = False - - if mpi_exec is not None and isinstance(mpi_exec, basestring): - mpi_exec_present = True - else: - mpi_exec_present = False - - if np_present or mpi_exec_present: - if mpi_exec_present: - pre_args += mpi_exec + ' ' - else: - pre_args += 'mpirun ' - pre_args += '-n {0} '.format(mpi_procs) - - command = pre_args + openmc_exec + ' ' + post_args - - return self._run_openmc(command, output) + return _run(command, output, cwd) diff --git a/openmc/filter.py b/openmc/filter.py index 4bc17afca..b0e59874b 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -27,7 +27,8 @@ class Filter(object): type : str The type of the tally filter. Acceptable values are "universe", "material", "cell", "cellborn", "surface", "mesh", "energy", - "energyout", and "distribcell". + "energyout", "distribcell", "mu", "polar", "azimuthal", and + "delayedgroup". bins : Integral or Iterable of Integral or Iterable of Real The bins for the filter. This takes on different meaning for different filters. See the OpenMC online documentation for more details. @@ -40,7 +41,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 +266,7 @@ class Filter(object): Parameters ---------- - other : Filter + other : openmc.Filter Filter to compare with Returns @@ -310,12 +311,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 +356,7 @@ class Filter(object): Parameters ---------- - other : Filter + other : openmc.Filter The filter to query as a subset of this filter Returns @@ -519,8 +520,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 +531,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 diff --git a/openmc/geometry.py b/openmc/geometry.py index be3f281eb..ed437f6e1 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -17,13 +17,12 @@ class Geometry(object): Attributes ---------- - root_universe : openmc.universe.Universe + root_universe : openmc.Universe Root universe which contains all others """ def __init__(self): - # Initialize Geometry class attributes self._root_universe = None self._offsets = {} @@ -42,6 +41,27 @@ class Geometry(object): self._root_universe = root_universe + def export_to_xml(self): + """Create a geometry.xml file that can be used for a simulation. + + """ + + # Clear OpenMC written IDs used to optimize XML generation + openmc.universe.WRITTEN_IDS = {} + + # Create XML representation + geometry_file = ET.Element("geometry") + self.root_universe.create_xml_subelement(geometry_file) + + # Clean the indentation in the file to be user-readable + sort_xml_elements(geometry_file) + clean_xml_indentation(geometry_file) + + # Write the XML Tree to the geometry.xml file + tree = ET.ElementTree(geometry_file) + tree.write("geometry.xml", xml_declaration=True, encoding='utf-8', + method="xml") + def get_cell_instance(self, path): """Return the instance number for the final cell in a geometry path. @@ -95,7 +115,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Cell + list of openmc.Cell Cells in the geometry """ @@ -116,7 +136,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Universe + list of openmc.Universe Universes in the geometry """ @@ -136,7 +156,7 @@ class Geometry(object): Returns ------- - list of openmc.nuclide.Nuclide + list of openmc.Nuclide Nuclides in the geometry """ @@ -154,7 +174,7 @@ class Geometry(object): Returns ------- - list of openmc.material.Material + list of openmc.Material Materials in the geometry """ @@ -177,7 +197,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Cell + list of openmc.Cell Cells filled by Materials in the geometry """ @@ -198,7 +218,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Universe + list of openmc.Universe Universes with non-fill cells """ @@ -221,7 +241,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Lattice + list of openmc.Lattice Lattices in the geometry """ @@ -252,7 +272,7 @@ class Geometry(object): Returns ------- - list of openmc.material.Material + list of openmc.Material Materials matching the queried name """ @@ -292,7 +312,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Cell + list of openmc.Cell Cells matching the queried name """ @@ -332,7 +352,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Cell + list of openmc.Cell Cells with fills matching the queried name """ @@ -372,7 +392,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Universe + list of openmc.Universe Universes matching the queried name """ @@ -412,7 +432,7 @@ class Geometry(object): Returns ------- - list of openmc.universe.Lattice + list of openmc.Lattice Lattices matching the queried name """ @@ -436,52 +456,3 @@ class Geometry(object): lattices = list(lattices) lattices.sort(key=lambda x: x.id) return lattices - - -class GeometryFile(object): - """Geometry file used for an OpenMC simulation. Corresponds directly to the - geometry.xml input file. - - Attributes - ---------- - geometry : Geometry - The geometry to be used - - """ - - def __init__(self): - # Initialize GeometryFile class attributes - self._geometry = None - self._geometry_file = ET.Element("geometry") - - @property - def geometry(self): - return self._geometry - - @geometry.setter - def geometry(self, geometry): - check_type('the geometry', geometry, Geometry) - self._geometry = geometry - - def export_to_xml(self): - """Create a geometry.xml file that can be used for a simulation. - - """ - - # Clear OpenMC written IDs used to optimize XML generation - openmc.universe.WRITTEN_IDS = {} - - # Reset xml element tree - self._geometry_file.clear() - - root_universe = self.geometry.root_universe - root_universe.create_xml_subelement(self._geometry_file) - - # Clean the indentation in the file to be user-readable - sort_xml_elements(self._geometry_file) - clean_xml_indentation(self._geometry_file) - - # Write the XML Tree to the geometry.xml file - tree = ET.ElementTree(self._geometry_file) - tree.write("geometry.xml", xml_declaration=True, - encoding='utf-8', method="xml") diff --git a/openmc/lattice.py b/openmc/lattice.py new file mode 100644 index 000000000..baccbad90 --- /dev/null +++ b/openmc/lattice.py @@ -0,0 +1,870 @@ +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 +import openmc + +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: + self._id = openmc.universe.AUTO_UNIVERSE_ID + openmc.universe.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, openmc.Universe) + self._outer = outer + + @universes.setter + def universes(self, universes): + cv.check_iterable_type('lattice universes', universes, openmc.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:`openmc.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], openmc.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, openmc.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], openmc.Universe): + n_dims = 2 + + elif isinstance(self._universes[0][0][0], openmc.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 diff --git a/openmc/material.py b/openmc/material.py index 9db2f03f0..b3c281341 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -8,7 +8,7 @@ if sys.version_info[0] >= 3: basestring = str import openmc -from openmc.checkvalue import check_type, check_value, check_greater_than +import openmc.checkvalue as cv from openmc.clean_xml import * @@ -25,9 +25,6 @@ def reset_auto_material_id(): DENSITY_UNITS = ['g/cm3', 'g/cc', 'kg/cm3', 'atom/b-cm', 'atom/cm3', 'sum', 'macro'] -# Constant for density when not needed -NO_DENSITY = 99999. - class Material(object): """A material composed of a collection of nuclides/elements that can be @@ -141,9 +138,9 @@ class Material(object): string += '{0: <16}\n'.format('\tElements') for element in self._elements: - percent = self._nuclides[element][1] - percent_type = self._nuclides[element][2] - string += '{0: >16}'.format('\t{0}'.format(element)) + percent = self._elements[element][1] + percent_type = self._elements[element][2] + string += '{0: <16}'.format('\t{0}'.format(element)) string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) return string @@ -205,38 +202,38 @@ class Material(object): self._id = AUTO_MATERIAL_ID AUTO_MATERIAL_ID += 1 else: - check_type('material ID', material_id, Integral) - check_greater_than('material ID', material_id, 0, equality=True) + cv.check_type('material ID', material_id, Integral) + cv.check_greater_than('material ID', material_id, 0, equality=True) self._id = material_id @name.setter def name(self, name): if name is not None: - check_type('name for Material ID="{0}"'.format(self._id), - name, basestring) + cv.check_type('name for Material ID="{0}"'.format(self._id), + name, basestring) self._name = name else: self._name = '' - def set_density(self, units, density=NO_DENSITY): + def set_density(self, units, density=None): """Set the density of the material Parameters ---------- - units : str - Physical units of density + units : {'g/cm3', 'g/cc', 'km/cm3', 'atom/b-cm', 'atom/cm3', 'sum', 'macro'} + Physical units of density. density : float, optional Value of the density. Must be specified unless units is given as 'sum'. """ - check_type('the density for Material ID="{0}"'.format(self._id), - density, Real) - check_value('density units', units, DENSITY_UNITS) + cv.check_type('the density for Material ID="{0}"'.format(self._id), + density, Real) + cv.check_value('density units', units, DENSITY_UNITS) - if density == NO_DENSITY and units is not 'sum': - msg = 'Unable to set the density Material ID="{0}" ' \ + if density is None and units is not 'sum': + msg = 'Unable to set the density for Material ID="{0}" ' \ 'because a density must be set when not using ' \ 'sum unit'.format(self._id) raise ValueError(msg) @@ -270,11 +267,11 @@ class Material(object): Parameters ---------- - nuclide : str or openmc.nuclide.Nuclide + nuclide : str or openmc.Nuclide Nuclide to add percent : float Atom or weight percent - percent_type : str + percent_type : {'ao', 'wo'} 'ao' for atom percent and 'wo' for weight percent """ @@ -284,7 +281,7 @@ class Material(object): 'macroscopic data-set has already been added'.format(self._id) raise ValueError(msg) - if not isinstance(nuclide, (openmc.Nuclide, str)): + if not isinstance(nuclide, (openmc.Nuclide, basestring)): msg = 'Unable to add a Nuclide to Material ID="{0}" with a ' \ 'non-Nuclide value "{1}"'.format(self._id, nuclide) raise ValueError(msg) @@ -313,7 +310,7 @@ class Material(object): Parameters ---------- - nuclide : openmc.nuclide.Nuclide + nuclide : openmc.Nuclide Nuclide to remove """ @@ -332,7 +329,7 @@ class Material(object): Parameters ---------- - macroscopic : str or Macroscopic + macroscopic : str or openmc.Macroscopic Macroscopic to add """ @@ -371,7 +368,7 @@ class Material(object): Parameters ---------- - macroscopic : Macroscopic + macroscopic : openmc.Macroscopic Macroscopic to remove """ @@ -390,11 +387,11 @@ class Material(object): Parameters ---------- - element : openmc.element.Element + element : openmc.Element or str Element to add percent : float Atom or weight percent - percent_type : str + percent_type : {'ao', 'wo'} 'ao' for atom percent and 'wo' for weight percent """ @@ -404,7 +401,7 @@ class Material(object): 'macroscopic data-set has already been added'.format(self._id) raise ValueError(msg) - if not isinstance(element, openmc.Element): + if not isinstance(element, (openmc.Element, basestring)): msg = 'Unable to add an Element to Material ID="{0}" with a ' \ 'non-Element value "{1}"'.format(self._id, element) raise ValueError(msg) @@ -420,7 +417,10 @@ class Material(object): raise ValueError(msg) # Copy this Element to separate it from same Element in other Materials - element = deepcopy(element) + if isinstance(element, openmc.Element): + element = deepcopy(element) + else: + element = openmc.Element(element) self._elements[element._name] = (element, percent, percent_type) @@ -429,7 +429,7 @@ class Material(object): Parameters ---------- - element : openmc.element.Element + element : openmc.Element Element to remove """ @@ -498,7 +498,7 @@ class Material(object): xml_element.set("name", nuclide[0]._name) if not distrib: - if nuclide[2] is 'ao': + if nuclide[2] == 'ao': xml_element.set("ao", str(nuclide[1])) else: xml_element.set("wo", str(nuclide[1])) @@ -525,11 +525,14 @@ class Material(object): xml_element.set("name", str(element[0]._name)) if not distrib: - if element[2] is 'ao': + if element[2] == 'ao': xml_element.set("ao", str(element[1])) else: xml_element.set("wo", str(element[1])) + if element[0].xs is not None: + xml_element.set("xs", element[0].xs) + if not element[0].scattering is None: xml_element.set("scattering", element[0].scattering) @@ -639,9 +642,25 @@ class Material(object): return element -class MaterialsFile(object): - """Materials file used for an OpenMC simulation. Corresponds directly to the - materials.xml input file. +class Materials(cv.CheckedList): + """Collection of Materials used for an OpenMC simulation. + + This class corresponds directly to the materials.xml input file. It can be + thought of as a normal Python list where each member is a + :class:`Material`. It behaves like a list as the following example + demonstrates: + + >>> fuel = openmc.Material() + >>> clad = openmc.Material() + >>> water = openmc.Material() + >>> m = openmc.Materials([fuel]) + >>> m.append(water) + >>> m += [clad] + + Parameters + ---------- + materials : Iterable of openmc.Material + Materials to add to the collection Attributes ---------- @@ -651,11 +670,12 @@ class MaterialsFile(object): """ - def __init__(self): - # Initialize MaterialsFile class attributes - self._materials = [] + def __init__(self, materials=None): + super(Materials, self).__init__(Material, 'materials collection') self._default_xs = None self._materials_file = ET.Element("materials") + if materials is not None: + self += materials @property def default_xs(self): @@ -663,63 +683,87 @@ class MaterialsFile(object): @default_xs.setter def default_xs(self, xs): - check_type('default xs', xs, basestring) + cv.check_type('default xs', xs, basestring) self._default_xs = xs def add_material(self, material): - """Add a material to the file. + """Append material to collection + + .. deprecated:: 0.8 + Use :meth:`Materials.append` instead. Parameters ---------- - material : Material + material : openmc.Material Material to add """ - - if not isinstance(material, Material): - msg = 'Unable to add a non-Material "{0}" to the ' \ - 'MaterialsFile'.format(material) - raise ValueError(msg) - - self._materials.append(material) + warnings.warn("Materials.add_material(...) has been deprecated and may be " + "removed in a future version. Use Material.append(...) " + "instead.", DeprecationWarning) + self.append(material) def add_materials(self, materials): - """Add multiple materials to the file. + """Add multiple materials to the collection + + .. deprecated:: 0.8 + Use compound assignment instead. Parameters ---------- - materials : tuple or list of Material + materials : Iterable of openmc.Material Materials to add """ - - if not isinstance(materials, Iterable): - msg = 'Unable to create OpenMC materials.xml file from "{0}" which ' \ - 'is not iterable'.format(materials) - raise ValueError(msg) - + warnings.warn("Materials.add_materials(...) has been deprecated and may be " + "removed in a future version. Use compound assignment " + "instead.", DeprecationWarning) for material in materials: - self.add_material(material) + self.append(material) + + def append(self, material): + """Append material to collection + + Parameters + ---------- + material : openmc.Material + Material to append + + """ + super(Materials, self).append(material) + + def insert(self, index, material): + """Insert material before index + + Parameters + ---------- + index : int + Index in list + material : openmc.Material + Material to insert + + """ + super(Materials, self).insert(index, material) def remove_material(self, material): """Remove a material from the file + .. deprecated:: 0.8 + Use :meth:`Materials.remove` instead. + Parameters ---------- - material : Material + material : openmc.Material Material to remove """ - - if not isinstance(material, Material): - msg = 'Unable to remove a non-Material "{0}" from the ' \ - 'MaterialsFile'.format(material) - raise ValueError(msg) - - self._materials.remove(material) + warnings.warn("Materials.remove_material(...) has been deprecated and " + "may be removed in a future version. Use " + "Materials.remove(...) instead.", DeprecationWarning) + self.remove(material) def make_isotropic_in_lab(self): - for material in self._materials: + for material in self: material.make_isotropic_in_lab() def _create_material_subelements(self): @@ -727,7 +771,7 @@ class MaterialsFile(object): subelement = ET.SubElement(self._materials_file, "default_xs") subelement.text = self._default_xs - for material in self._materials: + for material in self: xml_element = material.get_material_xml() self._materials_file.append(xml_element) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index a1e03c337..068977d88 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -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 """ diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index c36d8d516..f3bf2018d 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -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,12 +350,12 @@ 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 ---------- - tallies_file : openmc.TalliesFile - A TalliesFile object to add each MGXS' tallies to generate a + tallies_file : openmc.Tallies + A Tallies collection to add each MGXS' tallies to generate a "tallies.xml" input file for OpenMC merge : bool Indicate whether tallies should be merged when possible. Defaults @@ -363,14 +363,14 @@ class Library(object): """ - cv.check_type('tallies_file', tallies_file, openmc.TalliesFile) + cv.check_type('tallies_file', tallies_file, openmc.Tallies) # Add tallies from each MGXS for each domain and mgxs type for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = self.get_mgxs(domain, mgxs_type) for tally_id, tally in mgxs.tallies.items(): - tallies_file.add_tally(tally, merge=merge) + tallies_file.append(tally, merge=merge) def load_from_statepoint(self, statepoint): """Extracts tallies in an OpenMC StatePoint with the data needed to @@ -537,7 +537,7 @@ class Library(object): Returns ------- - Library + openmc.mgxs.Library A new multi-group cross section library averaged across subdomains Raises diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7fcc0600a..33255de30 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -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 @@ -412,7 +412,7 @@ class MGXS(object): # Otherwise, return all nuclides in the spatial domain else: nuclides = self.domain.get_all_nuclides() - return nuclides.keys() + return list(nuclides.keys()) def get_nuclide_density(self, nuclide): """Get the atomic number density in units of atoms/b-cm for a nuclide @@ -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 diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index 7f140dd21..d3e49b238 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -24,7 +24,7 @@ def ndarray_to_string(arr): Parameters ---------- - arr : ndarray + arr : numpy.ndarray Array to combine in to a string Returns @@ -647,7 +647,7 @@ class XSdata(object): return element -class MGXSLibraryFile(object): +class MGXSLibrary(object): """Multi-Group Cross Sections file used for an OpenMC simulation. Corresponds directly to the MG version of the cross_sections.xml input file. @@ -657,12 +657,11 @@ 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 """ def __init__(self, energy_groups): - # Initialize MGXSLibraryFile class attributes self._xsdatas = [] self._energy_groups = energy_groups self._inverse_velocities = None @@ -693,7 +692,7 @@ class MGXSLibraryFile(object): Parameters ---------- - xsdata : XSdata + xsdata : openmc.XSdata MGXS information to add """ @@ -701,12 +700,12 @@ class MGXSLibraryFile(object): # Check the type if not isinstance(xsdata, XSdata): msg = 'Unable to add a non-XSdata "{0}" to the ' \ - 'MGXSLibraryFile'.format(xsdata) + 'MGXSLibrary instance'.format(xsdata) raise ValueError(msg) # Make sure energy groups match. if xsdata.energy_groups != self._energy_groups: - msg = 'Energy groups of XSdata do not match that of MGXSLibraryFile!' + msg = 'Energy groups of XSdata do not match that of MGXSLibrary.' raise ValueError(msg) self._xsdatas.append(xsdata) @@ -716,7 +715,7 @@ class MGXSLibraryFile(object): Parameters ---------- - xsdatas : tuple or list of XSdata + xsdatas : tuple or list of openmc.XSdata XSdatas to add """ @@ -734,14 +733,14 @@ class MGXSLibraryFile(object): Parameters ---------- - xsdata : XSdata + xsdata : openmc.XSdata XSdata to remove """ if not isinstance(xsdata, XSdata): msg = 'Unable to remove a non-XSdata "{0}" from the ' \ - 'XSdatasFile'.format(xsdata) + 'MGXSLibrary instance'.format(xsdata) raise ValueError(msg) self._xsdatas.remove(xsdata) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index d690c2c6a..562fe9cad 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -393,9 +393,9 @@ def get_compatible_opencg_surfaces(opencg_surface): surfaces = [left, right, bottom, top] elif opencg_surface.type == 'z-squareprism': - x0 = opencg_surface.x0['x0'] - y0 = opencg_surface.y0['y0'] - R = opencg_surface.r['R'] + x0 = opencg_surface.x0 + y0 = opencg_surface.y0 + R = opencg_surface.r # Create a list of the four planes we need left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R) @@ -528,7 +528,7 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace): # Get the compatible Surfaces (XPlanes and YPlanes) compatible_surfaces = get_compatible_opencg_surfaces(opencg_surface) - opencg_cell.removeSurface(opencg_surface) + opencg_cell.remove_surface(opencg_surface) # If Cell is inside SquarePrism, add "inside" of Surface halfspaces if halfspace == -1: @@ -595,7 +595,7 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace): # Remove redundant Surfaces from the Cells for cell in compatible_cells: - cell.removeRedundantSurfaces() + cell.remove_redundant_surfaces() # Return the list of OpenMC compatible OpenCG Cells return compatible_cells @@ -639,7 +639,7 @@ def make_opencg_cells_compatible(opencg_universe): surface, halfspace) # Remove the non-compatible OpenCG Cell from the Universe - opencg_universe.removeCell(opencg_cell) + opencg_universe.remove_cell(opencg_cell) # Add the compatible OpenCG Cells to the Universe opencg_universe.add_cells(cells) diff --git a/openmc/plots.py b/openmc/plots.py index 636ca225c..9167e55d5 100644 --- a/openmc/plots.py +++ b/openmc/plots.py @@ -2,6 +2,7 @@ from collections import Iterable from numbers import Real, Integral from xml.etree import ElementTree as ET import sys +import warnings import numpy as np @@ -125,7 +126,7 @@ class Plot(object): return self._background @property - def mask_componenets(self): + def mask_components(self): return self._mask_components @property @@ -227,7 +228,7 @@ class Plot(object): self._col_spec = col_spec - @mask_componenets.setter + @mask_components.setter def mask_components(self, mask_components): cv.check_type('plot mask_components', mask_components, Iterable, Integral) for component in mask_components: @@ -275,7 +276,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) @@ -401,44 +402,90 @@ class Plot(object): return element -class PlotsFile(object): - """Plots file used for an OpenMC simulation. Corresponds directly to the - plots.xml input file. +class Plots(cv.CheckedList): + """Collection of Plots used for an OpenMC simulation. + + This class corresponds directly to the plots.xml input file. It can be + thought of as a normal Python list where each member is a :class:`Plot`. It + behaves like a list as the following example demonstrates: + + >>> xz_plot = openmc.Plot() + >>> big_plot = openmc.Plot() + >>> small_plot = openmc.Plot() + >>> p = openmc.Plots((xz_plot, big_plot)) + >>> p.append(small_plot) + >>> small_plot = p.pop() + + Parameters + ---------- + plots : Iterable of openmc.Plot + Plots to add to the collection """ - def __init__(self): - # Initialize PlotsFile class attributes - self._plots = [] + def __init__(self, plots=None): + super(Plots, self).__init__(Plot, 'plots collection') self._plots_file = ET.Element("plots") + if plots is not None: + self += plots def add_plot(self, plot): """Add a plot to the file. + .. deprecated:: 0.8 + Use :meth:`Plots.append` instead. + Parameters ---------- - plot : Plot + plot : openmc.Plot Plot to add """ + warnings.warn("Plots.add_plot(...) has been deprecated and may be " + "removed in a future version. Use Plots.append(...) " + "instead.", DeprecationWarning) + self.append(plot) - if not isinstance(plot, Plot): - msg = 'Unable to add a non-Plot "{0}" to the PlotsFile'.format(plot) - raise ValueError(msg) + def append(self, plot): + """Append plot to collection - self._plots.append(plot) + Parameters + ---------- + plot : openmc.Plot + Plot to append + + """ + super(Plots, self).append(plot) + + def insert(self, index, plot): + """Insert plot before index + + Parameters + ---------- + index : int + Index in list + plot : openmc.Plot + Plot to insert + + """ + super(Plots, self).insert(index, plot) def remove_plot(self, plot): """Remove a plot from the file. + .. deprecated:: 0.8 + Use :meth:`Plots.remove` instead. + Parameters ---------- - plot : Plot + plot : openmc.Plot Plot to remove """ - - self._plots.remove(plot) + warnings.warn("Plots.remove_plot(...) has been deprecated and may be " + "removed in a future version. Use Plots.remove(...) " + "instead.", DeprecationWarning) + self.remove(plot) def colorize(self, geometry, seed=1): """Generate a consistent color scheme for each domain in each plot. @@ -456,7 +503,7 @@ class PlotsFile(object): """ - for plot in self._plots: + for plot in self: plot.colorize(geometry, seed) @@ -482,11 +529,11 @@ class PlotsFile(object): """ - for plot in self._plots: + for plot in self: plot.highlight_domains(geometry, domains, seed, alpha, background) def _create_plot_subelements(self): - for plot in self._plots: + for plot in self: xml_element = plot.get_plot_xml() if len(plot._name) > 0: diff --git a/openmc/region.py b/openmc/region.py index 7589184aa..a2edbeedd 100644 --- a/openmc/region.py +++ b/openmc/region.py @@ -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) 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 diff --git a/openmc/settings.py b/openmc/settings.py index 271932b84..ec38bf54c 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -16,7 +16,7 @@ if sys.version_info[0] >= 3: basestring = str -class SettingsFile(object): +class Settings(object): """Settings file used for an OpenMC simulation. Corresponds directly to the settings.xml input 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', @@ -1125,19 +1125,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. diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 693400ad6..7b75ac767 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -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 diff --git a/openmc/stats/multivariate.py b/openmc/stats/multivariate.py index 29258ee8d..4ce34a071 100644 --- a/openmc/stats/multivariate.py +++ b/openmc/stats/multivariate.py @@ -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 """ diff --git a/openmc/stats/univariate.py b/openmc/stats/univariate.py index 04e70bd00..0deeb600c 100644 --- a/openmc/stats/univariate.py +++ b/openmc/stats/univariate.py @@ -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 diff --git a/openmc/summary.py b/openmc/summary.py index b8f92664f..9b1c451f3 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -584,7 +584,7 @@ class Summary(object): Returns ------- - material : openmc.material.Material + material : openmc.Material Material with given id """ @@ -605,7 +605,7 @@ class Summary(object): Returns ------- - surface : openmc.surface.Surface + surface : openmc.Surface Surface with given id """ @@ -626,7 +626,7 @@ class Summary(object): Returns ------- - cell : openmc.universe.Cell + cell : openmc.Cell Cell with given id """ @@ -647,7 +647,7 @@ class Summary(object): Returns ------- - universe : openmc.universe.Universe + universe : openmc.Universe Universe with given id """ @@ -668,7 +668,7 @@ class Summary(object): Returns ------- - lattice : openmc.universe.Lattice + lattice : openmc.Lattice Lattice with given id """ diff --git a/openmc/surface.py b/openmc/surface.py index 8dc45209b..37e7c2ffd 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -23,8 +23,11 @@ def reset_auto_surface_id(): class Surface(object): - """A two-dimensional surface that can be used define regions of space with an - associated boundary condition. + """An implicit surface with an associated boundary condition. + + An implicit surface is defined as the set of zeros of a function of the + three Cartesian coordinates. Surfaces in OpenMC are limited to a set of + algebraic surfaces, i.e., surfaces that are polynomial in x, y, and z. Parameters ---------- @@ -44,19 +47,18 @@ class Surface(object): boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} Boundary condition that defines the behavior for particles hitting the surface. - coeffs : dict + coefficients : dict Dictionary of surface coefficients id : int Unique identifier for the surface name : str Name of the surface type : str - Type of the surface, e.g. 'x-plane' + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', name=''): - # Initialize class attributes self.id = surface_id self.name = name self._type = '' @@ -65,7 +67,7 @@ class Surface(object): # A dictionary of the quadratic surface coefficients # Key - coefficeint name # Value - coefficient value - self._coeffs = {} + self._coefficients = {} # An ordered list of the coefficient names to export to XML in the # proper order @@ -84,12 +86,13 @@ class Surface(object): string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._type) string += '{0: <16}{1}{2}\n'.format('\tBoundary', '=\t', self._boundary_type) - coeffs = '{0: <16}'.format('\tCoefficients') + '\n' + coefficients = '{0: <16}'.format('\tCoefficients') + '\n' - for coeff in self._coeffs: - coeffs += '{0: <16}{1}{2}\n'.format(coeff, '=\t', self._coeffs[coeff]) + for coeff in self._coefficients: + coefficients += '{0: <16}{1}{2}\n'.format( + coeff, '=\t', self._coefficients[coeff]) - string += coeffs + string += coefficients return string @@ -110,8 +113,8 @@ class Surface(object): return self._boundary_type @property - def coeffs(self): - return self._coeffs + def coefficients(self): + return self._coefficients @id.setter def id(self, surface_id): @@ -153,10 +156,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 @@ -173,8 +176,9 @@ class Surface(object): element.set("name", str(self._name)) element.set("type", self._type) - element.set("boundary", self._boundary_type) - element.set("coeffs", ' '.join([str(self._coeffs.setdefault(key, 0.0)) + if self.boundary_type != 'transmission': + element.set("boundary", self.boundary_type) + element.set("coeffs", ' '.join([str(self._coefficients.setdefault(key, 0.0)) for key in self._coeff_keys])) return element @@ -185,22 +189,22 @@ class Plane(Surface): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - A : float - The 'A' parameter for the plane - B : float - The 'B' parameter for the plane - C : float - The 'C' parameter for the plane - D : float - The 'D' parameter for the plane - name : str + A : float, optional + The 'A' parameter for the plane. Defaults to 1. + B : float, optional + The 'B' parameter for the plane. Defaults to 0. + C : float, optional + The 'C' parameter for the plane. Defaults to 0. + D : float, optional + The 'D' parameter for the plane. Defaults to 0. + name : str, optional Name of the plane. If not specified, the name will be the empty string. Attributes @@ -213,115 +217,119 @@ class Plane(Surface): The 'C' parameter for the plane d : float The 'D' parameter for the plane + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - A=None, B=None, C=None, D=None, name=''): - # Initialize Plane class attributes + A=1., B=0., C=0., D=0., name=''): super(Plane, self).__init__(surface_id, boundary_type, name=name) self._type = 'plane' self._coeff_keys = ['A', 'B', 'C', 'D'] - self._coeffs['A'] = 1. - self._coeffs['B'] = 0. - self._coeffs['C'] = 0. - self._coeffs['D'] = 0. - - if A is not None: - self.a = A - - if B is not None: - self.b = B - - if C is not None: - self.c = C - - if D is not None: - self.d = D + self.a = A + self.b = B + self.c = C + self.d = D @property def a(self): - return self.coeffs['A'] + return self.coefficients['A'] @property def b(self): - return self.coeffs['B'] + return self.coefficients['B'] @property def c(self): - return self.coeffs['C'] + return self.coefficients['C'] @property def d(self): - return self.coeffs['D'] + return self.coefficients['D'] @a.setter def a(self, A): check_type('A coefficient', A, Real) - self._coeffs['A'] = A + self._coefficients['A'] = A @b.setter def b(self, B): check_type('B coefficient', B, Real) - self._coeffs['B'] = B + self._coefficients['B'] = B @c.setter def c(self, C): check_type('C coefficient', C, Real) - self._coeffs['C'] = C + self._coefficients['C'] = C @d.setter def d(self, D): check_type('D coefficient', D, Real) - self._coeffs['D'] = D + self._coefficients['D'] = D 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 ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - Location of the plane - name : str + x0 : float, optional + Location of the plane. Defaults to 0. + name : str, optional Name of the plane. If not specified, the name will be the empty string. Attributes ---------- x0 : float Location of the plane + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, name=''): - # Initialize XPlane class attributes + x0=0., name=''): super(XPlane, self).__init__(surface_id, boundary_type, name=name) self._type = 'x-plane' self._coeff_keys = ['x0'] - self._coeffs['x0'] = 0. - - if x0 is not None: - self.x0 = x0 + self.x0 = x0 @property def x0(self): - return self.coeffs['x0'] + return self.coefficients['x0'] @x0.setter def x0(self, x0): check_type('x0 coefficient', x0, Real) - self._coeffs['x0'] = x0 + self._coefficients['x0'] = x0 def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -338,10 +346,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,50 +364,57 @@ 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 ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - y0 : float + y0 : float, optional Location of the plane - name : str + name : str, optional Name of the plane. If not specified, the name will be the empty string. Attributes ---------- y0 : float Location of the plane + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - y0=None, name=''): + y0=0., name=''): # Initialize YPlane class attributes super(YPlane, self).__init__(surface_id, boundary_type, name=name) self._type = 'y-plane' self._coeff_keys = ['y0'] - self._coeffs['y0'] = 0. - - if y0 is not None: - self.y0 = y0 + self.y0 = y0 @property def y0(self): - return self.coeffs['y0'] + return self.coefficients['y0'] @y0.setter def y0(self, y0): check_type('y0 coefficient', y0, Real) - self._coeffs['y0'] = y0 + self._coefficients['y0'] = y0 def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -416,10 +431,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,50 +449,57 @@ 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 ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - z0 : float - Location of the plane - name : str + z0 : float, optional + Location of the plane. Defaults to 0. + name : str, optional Name of the plane. If not specified, the name will be the empty string. Attributes ---------- z0 : float Location of the plane + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - z0=None, name=''): + z0=0., name=''): # Initialize ZPlane class attributes super(ZPlane, self).__init__(surface_id, boundary_type, name=name) self._type = 'z-plane' self._coeff_keys = ['z0'] - self._coeffs['z0'] = 0. - - if z0 is not None: - self.z0 = z0 + self.z0 = z0 @property def z0(self): - return self.coeffs['z0'] + return self.coefficients['z0'] @z0.setter def z0(self, z0): check_type('z0 coefficient', z0, Real) - self._coeffs['z0'] = z0 + self._coefficients['z0'] = z0 def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -494,10 +516,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 @@ -516,16 +538,16 @@ class Cylinder(Surface): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - R : float - Radius of the cylinder - name : str + R : float, optional + Radius of the cylinder. Defaults to 1. + name : str, optional Name of the cylinder. If not specified, the name will be the empty string. @@ -533,52 +555,59 @@ class Cylinder(Surface): ---------- r : float Radius of the cylinder + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ __metaclass__ = ABCMeta def __init__(self, surface_id=None, boundary_type='transmission', - R=None, name=''): - # Initialize Cylinder class attributes + R=1., name=''): super(Cylinder, self).__init__(surface_id, boundary_type, name=name) self._coeff_keys = ['R'] - self._coeffs['R'] = 1. - - if R is not None: - self.r = R + self.r = R @property def r(self): - return self.coeffs['R'] + return self.coefficients['R'] @r.setter def r(self, R): check_type('R coefficient', R, Real) - self._coeffs['R'] = R + self._coefficients['R'] = R class XCylinder(Cylinder): - """An infinite cylinder whose length is parallel to the x-axis. This is a - quadratic surface of the form :math:`(y - y_0)^2 + (z - z_0)^2 = R^2`. + """An infinite cylinder whose length is parallel to the x-axis of the form + :math:`(y - y_0)^2 + (z - z_0)^2 = R^2`. Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - y0 : float - y-coordinate of the center of the cylinder - z0 : float - z-coordinate of the center of the cylinder - R : float - Radius of the cylinder - name : str + y0 : float, optional + y-coordinate of the center of the cylinder. Defaults to 0. + z0 : float, optional + z-coordinate of the center of the cylinder. Defaults to 0. + R : float, optional + Radius of the cylinder. Defaults to 0. + name : str, optional Name of the cylinder. If not specified, the name will be the empty string. @@ -588,42 +617,46 @@ class XCylinder(Cylinder): y-coordinate of the center of the cylinder z0 : float z-coordinate of the center of the cylinder + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - y0=None, z0=None, R=None, name=''): - # Initialize XCylinder class attributes + y0=0., z0=0., R=1., name=''): super(XCylinder, self).__init__(surface_id, boundary_type, R, name=name) self._type = 'x-cylinder' self._coeff_keys = ['y0', 'z0', 'R'] - self._coeffs['y0'] = 0. - self._coeffs['z0'] = 0. - - if y0 is not None: - self.y0 = y0 - - if z0 is not None: - self.z0 = z0 + self.y0 = y0 + self.z0 = z0 @property def y0(self): - return self.coeffs['y0'] + return self.coefficients['y0'] @property def z0(self): - return self.coeffs['z0'] + return self.coefficients['z0'] @y0.setter def y0(self, y0): check_type('y0 coefficient', y0, Real) - self._coeffs['y0'] = y0 + self._coefficients['y0'] = y0 @z0.setter def z0(self, z0): check_type('z0 coefficient', z0, Real) - self._coeffs['z0'] = z0 + self._coefficients['z0'] = z0 def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -641,10 +674,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 @@ -659,25 +692,25 @@ class XCylinder(Cylinder): class YCylinder(Cylinder): - """An infinite cylinder whose length is parallel to the y-axis. This is a - quadratic surface of the form :math:`(x - x_0)^2 + (z - z_0)^2 = R^2`. + """An infinite cylinder whose length is parallel to the y-axis of the form + :math:`(x - x_0)^2 + (z - z_0)^2 = R^2`. Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the center of the cylinder - z0 : float - z-coordinate of the center of the cylinder - R : float - Radius of the cylinder - name : str + x0 : float, optional + x-coordinate of the center of the cylinder. Defaults to 0. + z0 : float, optional + z-coordinate of the center of the cylinder. Defaults to 0. + R : float, optional + Radius of the cylinder. Defaults to 1. + name : str, optional Name of the cylinder. If not specified, the name will be the empty string. @@ -687,42 +720,46 @@ class YCylinder(Cylinder): x-coordinate of the center of the cylinder z0 : float z-coordinate of the center of the cylinder + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, z0=None, R=None, name=''): - # Initialize YCylinder class attributes + x0=0., z0=0., R=1., name=''): super(YCylinder, self).__init__(surface_id, boundary_type, R, name=name) self._type = 'y-cylinder' self._coeff_keys = ['x0', 'z0', 'R'] - self._coeffs['x0'] = 0. - self._coeffs['z0'] = 0. - - if x0 is not None: - self.x0 = x0 - - if z0 is not None: - self.z0 = z0 + self.x0 = x0 + self.z0 = z0 @property def x0(self): - return self.coeffs['x0'] + return self.coefficients['x0'] @property def z0(self): - return self.coeffs['z0'] + return self.coefficients['z0'] @x0.setter def x0(self, x0): check_type('x0 coefficient', x0, Real) - self._coeffs['x0'] = x0 + self._coefficients['x0'] = x0 @z0.setter def z0(self, z0): check_type('z0 coefficient', z0, Real) - self._coeffs['z0'] = z0 + self._coefficients['z0'] = z0 def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -740,10 +777,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 @@ -758,25 +795,25 @@ class YCylinder(Cylinder): class ZCylinder(Cylinder): - """An infinite cylinder whose length is parallel to the z-axis. This is a - quadratic surface of the form :math:`(x - x_0)^2 + (y - y_0)^2 = R^2`. + """An infinite cylinder whose length is parallel to the z-axis of the form + :math:`(x - x_0)^2 + (y - y_0)^2 = R^2`. Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the center of the cylinder - y0 : float - y-coordinate of the center of the cylinder - R : float - Radius of the cylinder - name : str + x0 : float, optional + x-coordinate of the center of the cylinder. Defaults to 0. + y0 : float, optional + y-coordinate of the center of the cylinder. Defaults to 0. + R : float, optional + Radius of the cylinder. Defaults to 1. + name : str, optional Name of the cylinder. If not specified, the name will be the empty string. @@ -786,42 +823,46 @@ class ZCylinder(Cylinder): x-coordinate of the center of the cylinder y0 : float y-coordinate of the center of the cylinder + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, y0=None, R=None, name=''): - # Initialize ZCylinder class attributes + x0=0., y0=0., R=1., name=''): super(ZCylinder, self).__init__(surface_id, boundary_type, R, name=name) self._type = 'z-cylinder' self._coeff_keys = ['x0', 'y0', 'R'] - self._coeffs['x0'] = 0. - self._coeffs['y0'] = 0. - - if x0 is not None: - self.x0 = x0 - - if y0 is not None: - self.y0 = y0 + self.x0 = x0 + self.y0 = y0 @property def x0(self): - return self.coeffs['x0'] + return self.coefficients['x0'] @property def y0(self): - return self.coeffs['y0'] + return self.coefficients['y0'] @x0.setter def x0(self, x0): check_type('x0 coefficient', x0, Real) - self._coeffs['x0'] = x0 + self._coefficients['x0'] = x0 @y0.setter def y0(self, y0): check_type('y0 coefficient', y0, Real) - self._coeffs['y0'] = y0 + self._coefficients['y0'] = y0 def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -839,10 +880,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 @@ -861,22 +902,22 @@ class Sphere(Surface): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the center of the sphere - y0 : float - y-coordinate of the center of the sphere - z0 : float - z-coordinate of the center of the sphere - R : float - Radius of the sphere - name : str + x0 : float, optional + x-coordinate of the center of the sphere. Defaults to 0. + y0 : float, optional + y-coordinate of the center of the sphere. Defaults to 0. + z0 : float, optional + z-coordinate of the center of the sphere. Defaults to 0. + R : float, optional + Radius of the sphere. Defaults to 1. + name : str, optional Name of the sphere. If not specified, the name will be the empty string. Attributes @@ -889,68 +930,66 @@ class Sphere(Surface): z-coordinate of the center of the sphere R : float Radius of the sphere + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, y0=None, z0=None, R=None, name=''): - # Initialize Sphere class attributes + x0=0., y0=0., z0=0., R=1., name=''): super(Sphere, self).__init__(surface_id, boundary_type, name=name) self._type = 'sphere' self._coeff_keys = ['x0', 'y0', 'z0', 'R'] - self._coeffs['x0'] = 0. - self._coeffs['y0'] = 0. - self._coeffs['z0'] = 0. - self._coeffs['R'] = 1. - - if x0 is not None: - self.x0 = x0 - - if y0 is not None: - self.y0 = y0 - - if z0 is not None: - self.z0 = z0 - - if R is not None: - self.r = R + self.x0 = x0 + self.y0 = y0 + self.z0 = z0 + self.r = R @property def x0(self): - return self.coeffs['x0'] + return self.coefficients['x0'] @property def y0(self): - return self.coeffs['y0'] + return self.coefficients['y0'] @property def z0(self): - return self.coeffs['z0'] + return self.coefficients['z0'] @property def r(self): - return self.coeffs['R'] + return self.coefficients['R'] @x0.setter def x0(self, x0): check_type('x0 coefficient', x0, Real) - self._coeffs['x0'] = x0 + self._coefficients['x0'] = x0 @y0.setter def y0(self, y0): check_type('y0 coefficient', y0, Real) - self._coeffs['y0'] = y0 + self._coefficients['y0'] = y0 @z0.setter def z0(self, z0): check_type('z0 coefficient', z0, Real) - self._coeffs['z0'] = z0 + self._coefficients['z0'] = z0 @r.setter def r(self, R): check_type('R coefficient', R, Real) - self._coeffs['R'] = R + self._coefficients['R'] = R def bounding_box(self, side): """Determine an axis-aligned bounding box. @@ -967,10 +1006,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 @@ -991,21 +1030,21 @@ class Cone(Surface): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the apex + x0 : float, optional + x-coordinate of the apex. Defaults to 0. y0 : float - y-coordinate of the apex + y-coordinate of the apex. Defaults to 0. z0 : float - z-coordinate of the apex + z-coordinate of the apex. Defaults to 0. R2 : float - Parameter related to the aperature + Parameter related to the aperature. Defaults to 1. name : str Name of the cone. If not specified, the name will be the empty string. @@ -1019,69 +1058,67 @@ class Cone(Surface): z-coordinate of the apex R2 : float Parameter related to the aperature + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ __metaclass__ = ABCMeta def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, y0=None, z0=None, R2=None, name=''): - # Initialize Cone class attributes + x0=0., y0=0., z0=0., R2=1., name=''): super(Cone, self).__init__(surface_id, boundary_type, name=name) self._coeff_keys = ['x0', 'y0', 'z0', 'R2'] - self._coeffs['x0'] = 0. - self._coeffs['y0'] = 0. - self._coeffs['z0'] = 0. - self._coeffs['R2'] = 1. - - if x0 is not None: - self.x0 = x0 - - if y0 is not None: - self.y0 = y0 - - if z0 is not None: - self.z0 = z0 - - if R2 is not None: - self.r2 = R2 + self.x0 = x0 + self.y0 = y0 + self.z0 = z0 + self.r2 = R2 @property def x0(self): - return self.coeffs['x0'] + return self.coefficients['x0'] @property def y0(self): - return self.coeffs['y0'] + return self.coefficients['y0'] @property def z0(self): - return self.coeffs['z0'] + return self.coefficients['z0'] @property def r2(self): - return self.coeffs['r2'] + return self.coefficients['r2'] @x0.setter def x0(self, x0): check_type('x0 coefficient', x0, Real) - self._coeffs['x0'] = x0 + self._coefficients['x0'] = x0 @y0.setter def y0(self, y0): check_type('y0 coefficient', y0, Real) - self._coeffs['y0'] = y0 + self._coefficients['y0'] = y0 @z0.setter def z0(self, z0): check_type('z0 coefficient', z0, Real) - self._coeffs['z0'] = z0 + self._coefficients['z0'] = z0 @r2.setter def r2(self, R2): check_type('R^2 coefficient', R2, Real) - self._coeffs['R2'] = R2 + self._coefficients['R2'] = R2 class XCone(Cone): @@ -1090,22 +1127,22 @@ class XCone(Cone): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the apex - y0 : float - y-coordinate of the apex - z0 : float - z-coordinate of the apex - R2 : float - Parameter related to the aperature - name : str + x0 : float, optional + x-coordinate of the apex. Defaults to 0. + y0 : float, optional + y-coordinate of the apex. Defaults to 0. + z0 : float, optional + z-coordinate of the apex. Defaults to 0. + R2 : float, optional + Parameter related to the aperature. Defaults to 1. + name : str, optional Name of the cone. If not specified, the name will be the empty string. Attributes @@ -1118,12 +1155,22 @@ class XCone(Cone): z-coordinate of the apex R2 : float Parameter related to the aperature + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, y0=None, z0=None, R2=None, name=''): - # Initialize XCone class attributes + x0=0., y0=0., z0=0., R2=1., name=''): super(XCone, self).__init__(surface_id, boundary_type, x0, y0, z0, R2, name=name) @@ -1136,22 +1183,22 @@ class YCone(Cone): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the apex - y0 : float - y-coordinate of the apex - z0 : float - z-coordinate of the apex - R2 : float - Parameter related to the aperature - name : str + x0 : float, optional + x-coordinate of the apex. Defaults to 0. + y0 : float, optional + y-coordinate of the apex. Defaults to 0. + z0 : float, optional + z-coordinate of the apex. Defaults to 0. + R2 : float, optional + Parameter related to the aperature. Defaults to 1. + name : str, optional Name of the cone. If not specified, the name will be the empty string. Attributes @@ -1164,12 +1211,22 @@ class YCone(Cone): z-coordinate of the apex R2 : float Parameter related to the aperature + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, y0=None, z0=None, R2=None, name=''): - # Initialize YCone class attributes + x0=0., y0=0., z0=0., R2=1., name=''): super(YCone, self).__init__(surface_id, boundary_type, x0, y0, z0, R2, name=name) @@ -1182,22 +1239,22 @@ class ZCone(Cone): Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - x0 : float - x-coordinate of the apex - y0 : float - y-coordinate of the apex - z0 : float - z-coordinate of the apex - R2 : float - Parameter related to the aperature - name : str + x0 : float, optional + x-coordinate of the apex. Defaults to 0. + y0 : float, optional + y-coordinate of the apex. Defaults to 0. + z0 : float, optional + z-coordinate of the apex. Defaults to 0. + R2 : float, optional + Parameter related to the aperature. Defaults to 1. + name : str, optional Name of the cone. If not specified, the name will be the empty string. Attributes @@ -1210,12 +1267,22 @@ class ZCone(Cone): z-coordinate of the apex R2 : float Parameter related to the aperature + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - x0=None, y0=None, z0=None, R2=None, name=''): - # Initialize ZCone class attributes + x0=0., y0=0., z0=0., R2=1., name=''): super(ZCone, self).__init__(surface_id, boundary_type, x0, y0, z0, R2, name=name) @@ -1223,151 +1290,148 @@ class ZCone(Cone): class Quadric(Surface): - """A sphere of the form :math:`Ax^2 + By^2 + Cz^2 + Dxy + Eyz + Fxz + Gx + Hy + - Jz + K`. + """A surface of the form :math:`Ax^2 + By^2 + Cz^2 + Dxy + Eyz + Fxz + Gx + Hy + + Jz + K = 0`. Parameters ---------- - surface_id : int + surface_id : int, optional Unique identifier for the surface. If not specified, an identifier will automatically be assigned. - boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'}, optional Boundary condition that defines the behavior for particles hitting the surface. Defaults to transmissive boundary condition where particles freely pass through the surface. - a, b, c, d, e, f, g, h, j, k : float - coefficients for the surface - name : str + a, b, c, d, e, f, g, h, j, k : float, optional + coefficients for the surface. All default to 0. + name : str, optional Name of the sphere. If not specified, the name will be the empty string. Attributes ---------- a, b, c, d, e, f, g, h, j, k : float coefficients for the surface + boundary_type : {'transmission, 'vacuum', 'reflective', 'periodic'} + Boundary condition that defines the behavior for particles hitting the + surface. + coefficients : dict + Dictionary of surface coefficients + id : int + Unique identifier for the surface + name : str + Name of the surface + type : str + Type of the surface """ def __init__(self, surface_id=None, boundary_type='transmission', - a=None, b=None, c=None, d=None, e=None, f=None, g=None, - h=None, j=None, k=None, name=''): - # Initialize Quadric class attributes + a=0., b=0., c=0., d=0., e=0., f=0., g=0., + h=0., j=0., k=0., name=''): super(Quadric, self).__init__(surface_id, boundary_type, name=name) self._type = 'quadric' self._coeff_keys = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k'] - for key in self._coeff_keys: - self._coeffs[key] = 0. - - if a is not None: - self.a = a - if b is not None: - self.b = b - if c is not None: - self.c = c - if d is not None: - self.d = d - if e is not None: - self.e = e - if f is not None: - self.f = f - if g is not None: - self.g = g - if h is not None: - self.h = h - if j is not None: - self.j = j - if k is not None: - self.k = k + self.a = a + self.b = b + self.c = c + self.d = d + self.e = e + self.f = f + self.g = g + self.h = h + self.j = j + self.k = k @property def a(self): - return self.coeffs['a'] + return self.coefficients['a'] @property def b(self): - return self.coeffs['b'] + return self.coefficients['b'] @property def c(self): - return self.coeffs['c'] + return self.coefficients['c'] @property def d(self): - return self.coeffs['d'] + return self.coefficients['d'] @property def e(self): - return self.coeffs['e'] + return self.coefficients['e'] @property def f(self): - return self.coeffs['f'] + return self.coefficients['f'] @property def g(self): - return self.coeffs['g'] + return self.coefficients['g'] @property def h(self): - return self.coeffs['h'] + return self.coefficients['h'] @property def j(self): - return self.coeffs['j'] + return self.coefficients['j'] @property def k(self): - return self.coeffs['k'] + return self.coefficients['k'] @a.setter def a(self, a): check_type('a coefficient', a, Real) - self._coeffs['a'] = a + self._coefficients['a'] = a @b.setter def b(self, b): check_type('b coefficient', b, Real) - self._coeffs['b'] = b + self._coefficients['b'] = b @c.setter def c(self, c): check_type('c coefficient', c, Real) - self._coeffs['c'] = c + self._coefficients['c'] = c @d.setter def d(self, d): check_type('d coefficient', d, Real) - self._coeffs['d'] = d + self._coefficients['d'] = d @e.setter def e(self, e): check_type('e coefficient', e, Real) - self._coeffs['e'] = e + self._coefficients['e'] = e @f.setter def f(self, f): check_type('f coefficient', f, Real) - self._coeffs['f'] = f + self._coefficients['f'] = f @g.setter def g(self, g): check_type('g coefficient', g, Real) - self._coeffs['g'] = g + self._coefficients['g'] = g @h.setter def h(self, h): check_type('h coefficient', h, Real) - self._coeffs['h'] = h + self._coefficients['h'] = h @j.setter def j(self, j): check_type('j coefficient', j, Real) - self._coeffs['j'] = j + self._coefficients['j'] = j @k.setter def k(self, k): check_type('k coefficient', k, Real) - self._coeffs['k'] = k + self._coefficients['k'] = k class Halfspace(Region): @@ -1383,7 +1447,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 +1455,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 """ diff --git a/openmc/tallies.py b/openmc/tallies.py index 1e47811e3..3a5a1f1e8 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -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. """ @@ -3419,76 +3419,120 @@ class Tally(object): return new_tally -class TalliesFile(object): - """Tallies file used for an OpenMC simulation. Corresponds directly to the - tallies.xml input file. +class Tallies(cv.CheckedList): + """Collection of Tallies used for an OpenMC simulation. + + This class corresponds directly to the tallies.xml input file. It can be + thought of as a normal Python list where each member is a :class:`Tally`. It + behaves like a list as the following example demonstrates: + + >>> t1 = openmc.Tally() + >>> t2 = openmc.Tally() + >>> t3 = openmc.Tally() + >>> tallies = openmc.Tallies([t1]) + >>> tallies.append(t2) + >>> tallies += [t3] + + Parameters + ---------- + tallies : Iterable of openmc.Tally + Tallies to add to the collection """ - def __init__(self): - # Initialize TalliesFile class attributes - self._tallies = [] - self._meshes = [] + def __init__(self, tallies=None): + super(Tallies, self).__init__(Tally, 'tallies collection') self._tallies_file = ET.Element("tallies") - - @property - def tallies(self): - return self._tallies - - @property - def meshes(self): - return self._meshes + if tallies is not None: + self += tallies def add_tally(self, tally, merge=False): - """Add a tally to the file + """Append tally to collection + + .. deprecated:: 0.8 + Use :meth:`Tallies.append` instead. Parameters ---------- - tally : Tally - Tally to add to file - + tally : openmc.Tally + Tally to add merge : bool Indicate whether the tally should be merged with an existing tally, if possible. Defaults to False. """ + warnings.warn("Tallies.add_tally(...) has been deprecated and may be " + "removed in a future version. Use Tallies.append(...) " + "instead.", DeprecationWarning) + self.append(tally, merge) + def append(self, tally, merge=False): + """Append tally to collection + + Parameters + ---------- + tally : openmc.Tally + Tally to append + merge : bool + Indicate whether the tally should be merged with an existing tally, + if possible. Defaults to False. + + """ if not isinstance(tally, Tally): - msg = 'Unable to add a non-Tally "{0}" to the TalliesFile'.format(tally) - raise ValueError(msg) + msg = 'Unable to add a non-Tally "{0}" to the Tallies instance'.format(tally) + raise TypeError(msg) if merge: merged = False # Look for a tally to merge with this one - for i, tally2 in enumerate(self._tallies): + for i, tally2 in enumerate(self): # If a mergeable tally is found if tally2.can_merge(tally): # Replace tally 2 with the merged tally merged_tally = tally2.merge(tally) - self._tallies[i] = merged_tally + self[i] = merged_tally merged = True break # If not mergeable tally was found, simply add this tally if not merged: - self._tallies.append(tally) + super(Tallies, self).append(tally) else: - self._tallies.append(tally) + super(Tallies, self).append(tally) - def remove_tally(self, tally): - """Remove a tally from the file + def insert(self, index, item): + """Insert tally before index Parameters ---------- - tally : Tally + index : int + Index in list + item : openmc.Tally + Tally to insert + + """ + super(Tallies, self).insert(index, item) + + def remove_tally(self, tally): + """Remove a tally from the collection + + .. deprecated:: 0.8 + Use :meth:`Tallies.remove` instead. + + Parameters + ---------- + tally : openmc.Tally Tally to remove """ + warnings.warn("Tallies.remove_tally(...) has been deprecated and may " + "be removed in a future version. Use Tallies.remove(...) " + "instead.", DeprecationWarning) - self._tallies.remove(tally) + self.remove(tally) def merge_tallies(self): """Merge any mergeable tallies together. Note that n-way merges are @@ -3496,8 +3540,8 @@ class TalliesFile(object): """ - for i, tally1 in enumerate(self._tallies): - for j, tally2 in enumerate(self._tallies): + for i, tally1 in enumerate(self): + for j, tally2 in enumerate(self): # Do not merge the same tally with itself if i == j: continue @@ -3506,10 +3550,10 @@ class TalliesFile(object): if tally1.can_merge(tally2): # Replace tally 1 with the merged tally merged_tally = tally1.merge(tally2) - self._tallies[i] = merged_tally + self[i] = merged_tally # Remove tally 2 since it is no longer needed - self._tallies.pop(j) + self.pop(j) # Continue iterating from the first loop break @@ -3517,43 +3561,54 @@ class TalliesFile(object): def add_mesh(self, mesh): """Add a mesh to the file + .. deprecated:: 0.8 + Meshes that appear in a tally are automatically added to the + collection. + Parameters ---------- - mesh : openmc.mesh.Mesh + mesh : openmc.Mesh Mesh to add to the file """ - if not isinstance(mesh, Mesh): - msg = 'Unable to add a non-Mesh "{0}" to the TalliesFile'.format(mesh) - raise ValueError(msg) - - self._meshes.append(mesh) + warnings.warn("Tallies.add_mesh(...) has been deprecated and may be " + "removed in a future version. Meshes that appear in a " + "tally are automatically added to the collection.", + DeprecationWarning) def remove_mesh(self, mesh): """Remove a mesh from the file + .. deprecated:: 0.8 + Meshes do not need to be managed explicitly. + Parameters ---------- - mesh : openmc.mesh.Mesh + mesh : openmc.Mesh Mesh to remove from the file """ - - self._meshes.remove(mesh) + warnings.warn("Tallies.remove_mesh(...) has been deprecated and may be " + "removed in a future version. Meshes do not need to be " + "managed explicitly.", DeprecationWarning) def _create_tally_subelements(self): - for tally in self._tallies: + for tally in self: xml_element = tally.get_tally_xml() self._tallies_file.append(xml_element) def _create_mesh_subelements(self): - for mesh in self._meshes: - if len(mesh._name) > 0: - self._tallies_file.append(ET.Comment(mesh._name)) + already_written = set() + for tally in self: + for f in tally.filters: + if f.type == 'mesh' and f.mesh not in already_written: + if len(f.mesh.name) > 0: + self._tallies_file.append(ET.Comment(f.mesh.name)) - xml_element = mesh.get_mesh_xml() - self._tallies_file.append(xml_element) + xml_element = f.mesh.get_mesh_xml() + self._tallies_file.append(xml_element) + already_written.add(f.mesh) def export_to_xml(self): """Create a tallies.xml file that can be used for a simulation. diff --git a/openmc/universe.py b/openmc/universe.py index 6a1e3da88..eb6d13233 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -1,6 +1,5 @@ -import abc from collections import OrderedDict, Iterable -from numbers import Real, Integral +from numbers import Integral from xml.etree import ElementTree as ET import sys import warnings @@ -9,449 +8,15 @@ import numpy as np 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 - # A dictionary for storing IDs of cell elements that have already been written, # used to optimize the writing process WRITTEN_IDS = {} - -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 : Material or Universe or Lattice or 'void' or iterable of Material - Indicates what the region of space is filled with - region : openmc.region.Region - Region of space that is assigned to the cell. - rotation : 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. - translation : 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._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.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, (Universe, 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) - 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 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, Universe): - self._type = 'fill' - - elif isinstance(fill, 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 - - @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 Cell.region property to directly specify a Region - expression. - - Parameters - ---------- - surface : openmc.surface.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 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 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 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, (Universe, 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 - # 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.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 - - # A static variable for auto-generated Lattice (Universe) IDs AUTO_UNIVERSE_ID = 10000 @@ -478,8 +43,9 @@ class Universe(object): Unique identifier of the universe name : str Name of the universe - cells : dict - Dictionary whose keys are cell IDs and values are Cell instances + cells : collections.OrderedDict + Dictionary whose keys are cell IDs and values are :class:`Cell` + instances """ @@ -561,12 +127,12 @@ class Universe(object): Parameters ---------- - cell : Cell + cell : openmc.Cell Cell to add """ - if not isinstance(cell, Cell): + if not isinstance(cell, openmc.Cell): msg = 'Unable to add a Cell to Universe ID="{0}" since "{1}" is not ' \ 'a Cell'.format(self._id, cell) raise ValueError(msg) @@ -581,7 +147,7 @@ class Universe(object): Parameters ---------- - cells : array-like of Cell + cells : Iterable of openmc.Cell Cells to add """ @@ -599,12 +165,12 @@ class Universe(object): Parameters ---------- - cell : Cell + cell : openmc.Cell Cell to remove """ - if not isinstance(cell, Cell): + if not isinstance(cell, openmc.Cell): msg = 'Unable to remove a Cell from Universe ID="{0}" since "{1}" is ' \ 'not a Cell'.format(self._id, cell) raise ValueError(msg) @@ -644,7 +210,7 @@ class Universe(object): Returns ------- - nuclides : dict + nuclides : collections.OrderedDict Dictionary whose keys are nuclide names and values are 2-tuples of (nuclide, density) @@ -663,8 +229,9 @@ class Universe(object): Returns ------- - cells : dict - Dictionary whose keys are cell IDs and values are Cell instances + cells : collections.OrderedDict + Dictionary whose keys are cell IDs and values are :class:`Cell` + instances """ @@ -684,8 +251,9 @@ class Universe(object): Returns ------- - materials : dict - Dictionary whose keys are material IDs and values are Material instances + materials : Collections.OrderedDict + Dictionary whose keys are material IDs and values are + :class:`Material` instances """ @@ -703,9 +271,9 @@ class Universe(object): Returns ------- - universes : dict - Dictionary whose keys are universe IDs and values are Universe - instances + universes : collections.OrderedDict + Dictionary whose keys are universe IDs and values are + :class:`Universe` instances """ @@ -735,859 +303,3 @@ class Universe(object): # Append the Universe ID to the subelement and add to Element cell_subelement.set("universe", str(self._id)) xml_element.append(cell_subelement) - - -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 : ndarray of 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 : dict - Dictionary whose keys are universe IDs and values are 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 : dict - 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 : dict - Dictionary whose keys are cell IDs and values are 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 : dict - Dictionary whose keys are material IDs and values are 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 : dict - Dictionary whose keys are universe IDs and values are 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 : array-like 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 : array-like 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 : array-like 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 diff --git a/src/ace.F90 b/src/ace.F90 index e3c0cb983..4a9f28705 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -369,7 +369,7 @@ contains nuc % name = name nuc % awr = awr nuc % kT = kT - nuc % zaid = NXS(2) + nuc % zaid = listing % zaid end if ! read all blocks diff --git a/src/constants.F90 b/src/constants.F90 index 8863ca18c..5b58f409d 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -37,7 +37,7 @@ module constants real(8), parameter :: FP_COINCIDENT = 1e-12_8 ! Maximum number of collisions/crossings - integer, parameter :: MAX_EVENTS = 10000 + integer, parameter :: MAX_EVENTS = 1000000 integer, parameter :: MAX_SAMPLE = 100000 ! Maximum number of secondary particles created diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 4a1ebfacf..22eff595c 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -92,18 +92,22 @@ contains type(NodeList), pointer :: node_scat_list => null() type(NodeList), pointer :: node_source_list => null() - ! Display output message - call write_message("Reading settings XML file...", 5) - ! Check if settings.xml exists filename = trim(path_input) // "settings.xml" inquire(FILE=filename, EXIST=file_exists) if (.not. file_exists) then - call fatal_error("Settings XML file '" // trim(filename) // "' does not & - &exist! In order to run OpenMC, you first need a set of input files;& - & at a minimum, this includes settings.xml, geometry.xml, and & - &materials.xml. Please consult the user's guide at & - &http://mit-crpg.github.io/openmc for further information.") + if (run_mode /= MODE_PLOTTING) then + call fatal_error("Settings XML file '" // trim(filename) // "' does & + ¬ exist! In order to run OpenMC, you first need a set of input & + &files; at a minimum, this includes settings.xml, geometry.xml, & + &and materials.xml. Please consult the user's guide at & + &http://mit-crpg.github.io/openmc for further information.") + else + ! The settings.xml file is optional if we just want to make a plot. + return + end if + else + call write_message("Reading settings XML file...", 5) end if ! Parse settings.xml file diff --git a/src/output.F90 b/src/output.F90 index 2287bdb1f..cb59532a7 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -52,9 +52,9 @@ contains ! Write version information write(UNIT=OUTPUT_UNIT, FMT=*) & - ' Copyright: 2011-2015 Massachusetts Institute of Technology' + ' Copyright: 2011-2016 Massachusetts Institute of Technology' write(UNIT=OUTPUT_UNIT, FMT=*) & - ' License: http://mit-crpg.github.io/openmc/license.html' + ' License: http://openmc.readthedocs.org/en/latest/license.html' write(UNIT=OUTPUT_UNIT, FMT='(6X,"Version:",8X,I1,".",I1,".",I1)') & VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE #ifdef GIT_SHA1 diff --git a/src/simulation.F90 b/src/simulation.F90 index 41a28741c..b762979d7 100644 --- a/src/simulation.F90 +++ b/src/simulation.F90 @@ -1,7 +1,7 @@ module simulation #ifdef MPI - use mpi + use message_passing #endif use cmfd_execute, only: cmfd_init_batch, execute_cmfd diff --git a/tests/input_set.py b/tests/input_set.py index daff38ba1..2c6841e25 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -5,9 +5,9 @@ from openmc.stats import Box class InputSet(object): def __init__(self): - self.settings = openmc.SettingsFile() - self.materials = openmc.MaterialsFile() - self.geometry = openmc.GeometryFile() + self.settings = openmc.Settings() + self.materials = openmc.Materials() + self.geometry = openmc.Geometry() self.tallies = None self.plots = None @@ -267,9 +267,9 @@ class InputSet(object): # Define the materials file. self.materials.default_xs = '71c' - self.materials.add_materials((fuel, clad, cold_water, hot_water, - rpv_steel, lower_rad_ref, upper_rad_ref, bot_plate, bot_nozzle, - top_nozzle, top_fa, bot_fa)) + self.materials += (fuel, clad, cold_water, hot_water, rpv_steel, + lower_rad_ref, upper_rad_ref, bot_plate, + bot_nozzle, top_nozzle, top_fa, bot_fa) # Define surfaces. s1 = openmc.ZCylinder(R=0.41, surface_id=1) @@ -550,11 +550,8 @@ class InputSet(object): root.add_cells((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)) - # Define the geometry file. - geometry = openmc.Geometry() - geometry.root_universe = root - - self.geometry.geometry = geometry + # Assign root universe to geometry + self.geometry.root_universe = root def build_default_settings(self): self.settings.batches = 10 @@ -593,7 +590,7 @@ class MGInputSet(InputSet): # Define the materials file. self.materials.default_xs = '71c' - self.materials.add_materials((uo2, clad, water)) + self.materials += (uo2, clad, water) # Define surfaces. @@ -630,12 +627,8 @@ class MGInputSet(InputSet): root.add_cells((c1,c2,c3)) - # Define the geometry file. - geometry = openmc.Geometry() - geometry.root_universe = root - - self.geometry.geometry = geometry - + # Assign root universe to geometry + self.geometry.root_universe = root def build_default_settings(self): self.settings.batches = 10 @@ -656,8 +649,3 @@ class MGInputSet(InputSet): plot.color = 'mat' self.plots.add_plot(plot) - - - - - diff --git a/tests/run_tests.py b/tests/run_tests.py index ed6ff0c20..5a04f340a 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -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: diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat index e3b00b185..f40e661b3 100644 --- a/tests/test_asymmetric_lattice/inputs_true.dat +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -1 +1 @@ -b9b4222c4beea80fe6083590f6b785303d174972d80671fb661bac8e030db6f4a61648240cfad6162799361fc0e08a23c61d31aff844d978528d6dad5b5fbc63 \ No newline at end of file +9b859eb5501c05b6a652d299bd0cadc0a924ffae31117babbdc9f7f8ca87689322c275818eb0dde0ff5fa78317d8d8f1585b18dcc772e3ff4ed499de8a491dc3 \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/results_true.dat b/tests/test_asymmetric_lattice/results_true.dat index 31b09c4da..a33b9c9e5 100644 --- a/tests/test_asymmetric_lattice/results_true.dat +++ b/tests/test_asymmetric_lattice/results_true.dat @@ -1 +1 @@ -219ee21902e83b0f1b8e92ca4977db998e3a4a5ca36da5be9490f9ec4f30ab90cf15a257fe4113d2f1f9eb85cab159ed65638412b9751ce786d263870c208581 \ No newline at end of file +bc8bef8121f9b6470e4fea817a4e48eabb1ecba1f42761a4cbd77d71181bf9e1612df4a3d6ddfbcd08a3086ac873e5f3c3e560bf96b2b7c959a2f7aad7e4e08d \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py index fdb21db33..03e55d32f 100644 --- a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py +++ b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py @@ -7,8 +7,6 @@ import hashlib sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness import openmc -from openmc.source import Source -from openmc.stats import Box class AsymmetricLatticeTestHarness(PyAPITestHarness): @@ -20,7 +18,7 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): self._input_set.build_default_materials_and_geometry() # Extract universes encapsulating fuel and water assemblies - geometry = self._input_set.geometry.geometry + geometry = self._input_set.geometry water = geometry.get_universes_by_name('water assembly (hot)')[0] fuel = geometry.get_universes_by_name('fuel assembly (hot)')[0] @@ -49,19 +47,18 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): root_univ.add_cell(root_cell) # Over-ride geometry in the input set with this 3x3 lattice - self._input_set.geometry.geometry.root_universe = root_univ + self._input_set.geometry.root_universe = root_univ # Initialize a "distribcell" filter for the fuel pin cell distrib_filter = openmc.Filter(type='distribcell', bins=[27]) # Initialize the tallies tally = openmc.Tally(name='distribcell tally', tally_id=27) - tally.add_filter(distrib_filter) - tally.add_score('nu-fission') + tally.filters.append(distrib_filter) + tally.scores.append('nu-fission') # Initialize the tallies file - tallies_file = openmc.TalliesFile() - tallies_file.add_tally(tally) + tallies_file = openmc.Tallies([tally]) # Assign the tallies file to the input set self._input_set.tallies = tallies_file @@ -70,7 +67,7 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): self._input_set.build_default_settings() # Specify summary output and correct source sampling box - source = Source(space=Box([-32, -32, 0], [32, 32, 32])) + source = openmc.Source(space=openmc.stats.Box([-32, -32, 0], [32, 32, 32])) source.space.only_fissionable = True self._input_set.settings.source = source self._input_set.settings.output = {'summary': True} diff --git a/tests/test_distribmat/inputs_true.dat b/tests/test_distribmat/inputs_true.dat index fddab0a60..9c8a86bfa 100644 --- a/tests/test_distribmat/inputs_true.dat +++ b/tests/test_distribmat/inputs_true.dat @@ -1 +1 @@ -401b8be1b296db7f21ccae089c7ac480044d953b7264ca0ae8e34bb79e24cbb57195bcb568deda6f2f7e07366bbfac408a92306351b9169edd04499723707e1b \ No newline at end of file +96c54eb4f1da175445bf2187449ee32c9ff435d8c60e9421a4a16497aae9f233e3e494f531892dd55f6ac1a06e0240799503ff19e14e2436a0b0f0d83ba56cb8 \ No newline at end of file diff --git a/tests/test_distribmat/test_distribmat.py b/tests/test_distribmat/test_distribmat.py index a0608c108..d8f78c5cf 100644 --- a/tests/test_distribmat/test_distribmat.py +++ b/tests/test_distribmat/test_distribmat.py @@ -28,9 +28,8 @@ class DistribmatTestHarness(PyAPITestHarness): light_fuel.set_density('g/cc', 2.0) light_fuel.add_nuclide('U-235', 1.0) - mats_file = openmc.MaterialsFile() + mats_file = openmc.Materials([moderator, dense_fuel, light_fuel]) mats_file.default_xs = '71c' - mats_file.add_materials([moderator, dense_fuel, light_fuel]) mats_file.export_to_xml() @@ -74,16 +73,14 @@ class DistribmatTestHarness(PyAPITestHarness): geometry = openmc.Geometry() geometry.root_universe = root_univ - geo_file = openmc.GeometryFile() - geo_file.geometry = geometry - geo_file.export_to_xml() + geometry.export_to_xml() #################### # Settings #################### - sets_file = openmc.SettingsFile() + sets_file = openmc.Settings() sets_file.batches = 5 sets_file.inactive = 0 sets_file.particles = 1000 @@ -96,7 +93,7 @@ class DistribmatTestHarness(PyAPITestHarness): # Plots #################### - plots_file = openmc.PlotsFile() + plots_file = openmc.Plots() plot = openmc.Plot(plot_id=1) plot.basis = 'xy' diff --git a/tests/test_filter_mesh_2d/results_true.dat b/tests/test_filter_mesh_2d/results_true.dat index 3e43ffe88..f4c597952 100644 --- a/tests/test_filter_mesh_2d/results_true.dat +++ b/tests/test_filter_mesh_2d/results_true.dat @@ -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 diff --git a/tests/test_filter_mesh_3d/results_true.dat b/tests/test_filter_mesh_3d/results_true.dat index 15724025c..88a522827 100644 --- a/tests/test_filter_mesh_3d/results_true.dat +++ b/tests/test_filter_mesh_3d/results_true.dat @@ -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 @@ -897,10 +897,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.083670E-01 +1.083669E-01 1.174340E-02 -3.904086E-02 -1.524189E-03 +3.904088E-02 +1.524190E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1444,7 +1444,7 @@ tally 1: 0.000000E+00 0.000000E+00 7.002118E-02 -4.902966E-03 +4.902965E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1476,9 +1476,9 @@ tally 1: 0.000000E+00 0.000000E+00 2.623543E-01 -4.112455E-02 -2.258488E-01 -5.100769E-02 +4.112454E-02 +2.258489E-01 +5.100771E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1504,11 +1504,11 @@ tally 1: 1.729718E-01 2.991925E-02 2.994456E-02 -8.966769E-04 +8.966764E-04 9.977770E-03 -9.955589E-05 +9.955590E-05 4.396029E-01 -6.352575E-02 +6.352573E-02 5.669837E-01 1.209384E-01 1.423672E-01 @@ -1528,7 +1528,7 @@ tally 1: 0.000000E+00 0.000000E+00 1.722215E-02 -2.966023E-04 +2.966024E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1540,9 +1540,9 @@ tally 1: 0.000000E+00 0.000000E+00 1.565669E-02 -2.451320E-04 +2.451318E-04 8.200689E-01 -2.392979E-01 +2.392978E-01 1.748649E-01 1.584562E-02 0.000000E+00 @@ -1561,8 +1561,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.036512E-02 -9.220404E-04 +3.036511E-02 +9.220402E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1575,11 +1575,11 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.998386E-02 +9.998387E-02 7.936690E-03 1.089115E+00 5.614559E-01 -4.805841E-02 +4.805840E-02 2.309610E-03 0.000000E+00 0.000000E+00 @@ -1801,7 +1801,7 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.448096E-01 +3.448095E-01 5.774877E-02 0.000000E+00 0.000000E+00 @@ -1934,7 +1934,7 @@ tally 1: 0.000000E+00 0.000000E+00 5.319541E-03 -2.829751E-05 +2.829752E-05 3.420304E-01 1.169848E-01 0.000000E+00 @@ -1999,10 +1999,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.896347E-02 -1.518152E-03 -1.048933E-01 -7.753481E-03 +3.896367E-02 +1.518168E-03 +1.048931E-01 +7.753447E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2033,10 +2033,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.396515E-03 -5.743285E-06 -8.372628E-02 -5.869222E-03 +2.396759E-03 +5.744454E-06 +8.372603E-02 +5.869219E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2045,16 +2045,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.409443E-02 -1.944319E-03 +4.409446E-02 +1.944321E-03 2.812104E-01 -7.907929E-02 +7.907926E-02 0.000000E+00 0.000000E+00 1.125733E-01 1.267274E-02 -3.364086E-01 -6.085431E-02 +3.364085E-01 +6.085429E-02 8.236284E-02 4.869311E-03 0.000000E+00 @@ -2087,9 +2087,9 @@ tally 1: 5.280988E-02 2.073790E+00 1.188596E+00 -9.609430E-01 +9.609431E-01 2.621642E-01 -4.350510E-01 +4.350509E-01 1.399885E-01 0.000000E+00 0.000000E+00 @@ -2103,24 +2103,24 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.412546E-04 -2.929565E-07 +5.411503E-04 +2.928436E-07 1.480967E+00 -5.223268E-01 +5.223269E-01 1.727443E-01 1.798769E-02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.254526E-01 -1.810099E-01 +4.254527E-01 +1.810100E-01 2.391190E-01 2.413267E-02 -3.823231E-01 -4.488287E-02 -4.156040E+00 -4.315161E+00 +3.823223E-01 +4.488260E-02 +4.156041E+00 +4.315163E+00 1.009424E+00 3.060875E-01 0.000000E+00 @@ -2151,10 +2151,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.052675E-02 -8.195093E-03 +9.052674E-02 +8.195092E-03 3.050953E-01 -3.658883E-02 +3.658881E-02 1.622477E-01 1.848987E-02 0.000000E+00 @@ -2172,9 +2172,9 @@ tally 1: 0.000000E+00 0.000000E+00 1.164981E-01 -1.357182E-02 +1.357181E-02 9.373673E-02 -4.377146E-03 +4.377147E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2380,7 +2380,7 @@ tally 1: 0.000000E+00 0.000000E+00 1.370265E-01 -1.583750E-02 +1.583751E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2505,14 +2505,14 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.602121E-02 +3.602120E-02 1.297527E-03 2.054694E-02 -4.221767E-04 +4.221768E-04 3.699789E-01 1.099867E-01 1.034262E-01 -6.886192E-03 +6.886191E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2575,12 +2575,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.613312E-01 -2.177880E-02 -4.750136E-01 -1.508283E-01 -5.109846E-02 -1.598242E-03 +1.613314E-01 +2.177882E-02 +4.750135E-01 +1.508282E-01 +5.109842E-02 +1.598239E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2611,10 +2611,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.936906E-01 -7.202020E-02 -1.714480E-01 -1.505050E-02 +3.936907E-01 +7.202022E-02 +1.714479E-01 +1.505049E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2626,7 +2626,7 @@ tally 1: 4.226996E-01 1.360325E-01 7.317899E-02 -5.355164E-03 +5.355165E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2652,16 +2652,16 @@ tally 1: 0.000000E+00 0.000000E+00 7.711190E-02 -5.946246E-03 +5.946245E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -2.946067E-02 -8.679308E-04 -1.124255E-01 +2.946064E-02 +8.679293E-04 +1.124256E-01 1.263950E-02 0.000000E+00 0.000000E+00 @@ -2683,10 +2683,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.561577E-01 +1.561576E-01 2.112454E-02 -1.640941E-01 -2.692689E-02 +1.640942E-01 +2.692690E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2697,10 +2697,10 @@ tally 1: 0.000000E+00 1.508419E-01 2.275329E-02 -2.887902E-01 -4.216076E-02 -4.015411E-01 -7.884729E-02 +2.887905E-01 +4.216084E-02 +4.015408E-01 +7.884715E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2717,10 +2717,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.595965E-02 +5.595964E-02 2.146289E-03 3.159701E-01 -3.538767E-02 +3.538768E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2751,13 +2751,13 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.403984E-02 -3.220777E-03 -1.220496E-01 +7.403983E-02 +3.220776E-03 +1.220497E-01 1.051103E-02 0.000000E+00 0.000000E+00 -4.308559E-02 +4.308558E-02 1.856368E-03 1.206585E-01 1.455847E-02 @@ -3088,9 +3088,9 @@ tally 1: 9.531928E-02 6.215764E-03 2.906510E-01 -2.666265E-02 -4.038687E-02 -1.631099E-03 +2.666266E-02 +4.038686E-02 +1.631098E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3117,8 +3117,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.367395E-03 -1.869768E-06 +1.367392E-03 +1.869762E-06 6.997755E-01 1.672455E-01 9.975381E-01 @@ -3157,7 +3157,7 @@ tally 1: 0.000000E+00 6.670089E-01 1.688817E-01 -8.251078E-02 +8.251077E-02 3.717992E-03 0.000000E+00 0.000000E+00 @@ -3187,8 +3187,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.683051E-03 -9.376148E-05 +9.683052E-03 +9.376150E-05 3.707367E-01 1.159281E-01 0.000000E+00 @@ -3230,7 +3230,7 @@ tally 1: 0.000000E+00 0.000000E+00 1.009880E-01 -9.392498E-03 +9.392497E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3243,12 +3243,12 @@ tally 1: 3.025673E-02 0.000000E+00 0.000000E+00 -2.075805E-02 -4.308965E-04 -8.573312E-01 -2.242081E-01 -2.267548E-01 -2.900095E-02 +2.075806E-02 +4.308970E-04 +8.573314E-01 +2.242082E-01 +2.267546E-01 +2.900091E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3263,7 +3263,7 @@ tally 1: 0.000000E+00 3.978837E-01 1.583114E-01 -7.475044E-01 +7.475045E-01 2.090484E-01 0.000000E+00 0.000000E+00 @@ -3273,14 +3273,14 @@ tally 1: 0.000000E+00 3.630182E-02 1.317822E-03 -6.960537E-02 -4.844908E-03 -3.721248E-03 -1.384769E-05 -7.406530E-02 -5.485669E-03 +6.960539E-02 +4.844911E-03 +3.721224E-03 +1.384751E-05 +7.406533E-02 +5.485672E-03 1.330296E+00 -6.633077E-01 +6.633075E-01 1.862835E-02 3.470153E-04 0.000000E+00 @@ -3298,7 +3298,7 @@ tally 1: 0.000000E+00 0.000000E+00 5.329778E-01 -1.118274E-01 +1.118275E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3365,8 +3365,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.471871E-02 -5.582886E-03 +7.471872E-02 +5.582887E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3533,7 +3533,7 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.501130E-02 +2.501129E-02 6.255649E-04 0.000000E+00 0.000000E+00 @@ -3567,7 +3567,7 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.907151E-02 +8.907152E-02 7.933735E-03 3.094070E-01 8.793386E-02 @@ -3665,9 +3665,9 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.420413E-02 -1.954005E-03 -9.389955E-01 +4.420414E-02 +1.954006E-03 +9.389954E-01 4.408852E-01 0.000000E+00 0.000000E+00 @@ -3731,8 +3731,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.028972E-02 -4.229428E-03 +9.028974E-02 +4.229429E-03 8.019636E-01 2.406005E-01 0.000000E+00 @@ -3813,8 +3813,8 @@ tally 1: 0.000000E+00 4.562052E-01 1.041492E-01 -6.039508E-02 -3.647565E-03 +6.039507E-02 +3.647564E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3845,8 +3845,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.680079E-01 -7.239471E-02 +3.680080E-01 +7.239472E-02 9.309308E-01 5.812760E-01 7.945599E-03 @@ -3855,12 +3855,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.567972E-02 -7.341014E-03 +8.567983E-02 +7.341033E-03 1.754088E+00 -8.632559E-01 -7.548732E-04 -5.698335E-07 +8.632560E-01 +7.547884E-04 +5.697055E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -3882,7 +3882,7 @@ tally 1: 1.211417E-01 1.467532E-02 1.144903E+00 -4.944035E-01 +4.944036E-01 7.558522E-01 3.387696E-01 0.000000E+00 @@ -3917,8 +3917,8 @@ tally 1: 0.000000E+00 1.257462E-01 1.456033E-02 -1.755760E-03 -3.082694E-06 +1.755790E-03 +3.082798E-06 0.000000E+00 0.000000E+00 1.027660E-02 @@ -3955,8 +3955,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.011081E-02 -9.066609E-04 +3.011069E-02 +9.066538E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4037,7 +4037,7 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.118695E-02 +5.118696E-02 2.620104E-03 0.000000E+00 0.000000E+00 @@ -4171,16 +4171,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -4.099507E-01 -6.290297E-02 -3.631685E-01 -1.318914E-01 +4.099509E-01 +6.290302E-02 +3.631683E-01 +1.318912E-01 0.000000E+00 0.000000E+00 1.023202E+00 7.786623E-01 -7.978888E-01 -2.156290E-01 +7.978887E-01 +2.156289E-01 2.410067E-01 5.808423E-02 0.000000E+00 @@ -4200,7 +4200,7 @@ tally 1: 0.000000E+00 0.000000E+00 8.728851E-03 -7.619283E-05 +7.619284E-05 1.582575E-01 2.504545E-02 0.000000E+00 @@ -4213,7 +4213,7 @@ tally 1: 0.000000E+00 1.698392E-01 1.770322E-02 -7.630963E-02 +7.630962E-02 2.320465E-03 0.000000E+00 0.000000E+00 @@ -4379,10 +4379,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.524617E-01 -6.373692E-02 -3.615407E-03 -1.307117E-05 +2.524618E-01 +6.373694E-02 +3.615369E-03 +1.307089E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4390,7 +4390,7 @@ tally 1: 0.000000E+00 0.000000E+00 9.262861E-03 -8.580059E-05 +8.580060E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4435,10 +4435,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.701983E-01 -2.896747E-02 -8.039213E-02 -6.462895E-03 +1.701984E-01 +2.896749E-02 +8.039207E-02 +6.462885E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4467,8 +4467,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.715403E-02 -4.509664E-03 +6.715405E-02 +4.509666E-03 4.465012E-01 1.993633E-01 0.000000E+00 @@ -4494,17 +4494,17 @@ tally 1: 0.000000E+00 0.000000E+00 2.157774E-03 -4.655987E-06 -6.310711E-02 -2.175397E-03 -8.322469E-02 +4.655990E-06 +6.310707E-02 +2.175394E-03 +8.322470E-02 3.984732E-03 -8.945208E-02 -4.272340E-03 -7.510697E-01 +8.945207E-02 +4.272339E-03 +7.510694E-01 2.592974E-01 -1.811101E-01 -3.280086E-02 +1.811100E-01 +3.280084E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4515,10 +4515,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.927050E-03 -8.567625E-06 -2.682269E-01 -7.194567E-02 +2.927144E-03 +8.568173E-06 +2.682268E-01 +7.194562E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4531,14 +4531,14 @@ tally 1: 0.000000E+00 3.678545E-02 1.353169E-03 -3.580129E-01 -9.576000E-02 -4.871555E-01 -9.900006E-02 +3.580128E-01 +9.575996E-02 +4.871561E-01 +9.900028E-02 1.399012E+00 -6.326647E-01 -4.954947E-01 -1.916585E-01 +6.326649E-01 +4.954942E-01 +1.916582E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4570,7 +4570,7 @@ tally 1: 0.000000E+00 0.000000E+00 4.262772E-01 -9.802531E-02 +9.802530E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4581,10 +4581,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.699970E-01 -4.178443E-02 -1.590778E-03 -2.530575E-06 +2.699969E-01 +4.178442E-02 +1.590867E-03 +2.530859E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4713,10 +4713,10 @@ tally 1: 1.613622E-03 0.000000E+00 0.000000E+00 -3.890880E-02 -1.513895E-03 -1.234219E+00 -4.999183E-01 +3.890902E-02 +1.513911E-03 +1.234218E+00 +4.999181E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4745,22 +4745,22 @@ tally 1: 4.742470E-02 3.209188E-02 1.029889E-03 -1.385335E-02 -1.919154E-04 -2.009712E-01 -3.766426E-02 -5.245829E-01 -7.576339E-02 +1.385333E-02 +1.919148E-04 +2.009713E-01 +3.766430E-02 +5.245828E-01 +7.576335E-02 0.000000E+00 0.000000E+00 4.241176E-01 9.055699E-02 3.230798E-01 -3.896400E-02 +3.896399E-02 2.621971E-01 -4.860490E-02 -4.089900E-03 -9.541983E-06 +4.860489E-02 +4.089938E-03 +9.542099E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4778,8 +4778,8 @@ tally 1: 1.046129E-01 1.094386E-02 1.524559E+00 -7.117854E-01 -7.244019E-01 +7.117855E-01 +7.244018E-01 2.009724E-01 1.834594E-02 3.365736E-04 @@ -4957,10 +4957,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.453315E-02 -2.112125E-04 -2.118498E-02 -4.488034E-04 +1.453317E-02 +2.112130E-04 +2.118496E-02 +4.488027E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -4992,11 +4992,11 @@ tally 1: 0.000000E+00 0.000000E+00 5.015914E-02 -2.515939E-03 -5.972803E-01 +2.515940E-03 +5.972802E-01 2.058844E-01 -1.137974E-02 -1.294985E-04 +1.137979E-02 +1.294997E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5020,17 +5020,17 @@ tally 1: 0.000000E+00 0.000000E+00 1.075776E-01 -1.157293E-02 -1.876736E-02 -3.142669E-04 +1.157294E-02 +1.876735E-02 +3.142665E-04 0.000000E+00 0.000000E+00 -8.266087E-02 -6.832819E-03 -8.619422E-02 -6.961732E-03 -1.219440E-01 -1.487034E-02 +8.266086E-02 +6.832818E-03 +8.619416E-02 +6.961721E-03 +1.219441E-01 +1.487035E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5076,9 +5076,9 @@ tally 1: 0.000000E+00 0.000000E+00 1.034037E-01 -3.976882E-03 -4.274866E-02 -1.827448E-03 +3.976885E-03 +4.274862E-02 +1.827445E-03 1.074496E-01 1.154542E-02 0.000000E+00 @@ -5089,12 +5089,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.693308E-02 -6.692039E-04 +2.693310E-02 +6.692041E-04 3.591875E-02 1.290157E-03 -8.685374E-02 -7.543573E-03 +8.685372E-02 +7.543569E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5105,11 +5105,11 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.358167E-02 -5.560954E-04 +2.358169E-02 +5.560962E-04 4.196949E-01 -8.821559E-02 -9.766237E-01 +8.821556E-02 +9.766238E-01 3.187064E-01 2.263564E+00 1.440716E+00 @@ -5127,8 +5127,8 @@ tally 1: 0.000000E+00 1.770925E-01 1.577698E-02 -3.206601E-02 -8.744270E-04 +3.206602E-02 +8.744271E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5142,7 +5142,7 @@ tally 1: 1.668276E-01 2.783144E-02 9.642655E-02 -9.273190E-03 +9.273189E-03 5.348043E-02 2.860156E-03 4.290530E-02 @@ -5159,9 +5159,9 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.084059E-01 -1.536167E-01 -5.000907E-01 +7.084057E-01 +1.536166E-01 +5.000909E-01 1.141659E-01 0.000000E+00 0.000000E+00 @@ -5193,20 +5193,20 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.751278E-02 -3.307719E-03 -4.702080E-02 -2.210956E-03 +5.751275E-02 +3.307717E-03 +4.702083E-02 +2.210958E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.784082E-02 -1.431928E-03 -2.013938E-02 -4.055947E-04 +3.784067E-02 +1.431916E-03 +2.013954E-02 +4.056009E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5230,7 +5230,7 @@ tally 1: 0.000000E+00 0.000000E+00 2.397100E-02 -5.746087E-04 +5.746090E-04 1.667122E-01 1.609363E-02 0.000000E+00 @@ -5274,7 +5274,7 @@ tally 1: 0.000000E+00 0.000000E+00 7.532992E-02 -5.674597E-03 +5.674596E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5321,13 +5321,13 @@ tally 1: 0.000000E+00 2.715682E-01 6.930003E-02 -1.711787E+00 +1.711788E+00 1.416936E+00 -4.750553E-01 -9.493584E-02 -4.064748E-01 -9.731062E-02 -5.521307E-01 +4.750552E-01 +9.493583E-02 +4.064749E-01 +9.731066E-02 +5.521306E-01 1.121121E-01 0.000000E+00 0.000000E+00 @@ -5363,10 +5363,10 @@ tally 1: 2.558641E-01 1.298371E-01 1.330104E-02 -5.996349E-01 -1.076801E-01 -1.715162E-01 -1.827797E-02 +5.996351E-01 +1.076802E-01 +1.715160E-01 +1.827795E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5381,16 +5381,16 @@ tally 1: 0.000000E+00 1.032011E-01 1.065047E-02 -2.415666E-01 -2.918472E-02 -4.165840E-02 +2.415665E-01 +2.918471E-02 +4.165841E-02 1.735423E-03 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.628620E-01 -9.960984E-02 +4.628619E-01 +9.960982E-02 3.325684E-01 5.701948E-02 0.000000E+00 @@ -5424,7 +5424,7 @@ tally 1: 0.000000E+00 0.000000E+00 1.420269E-01 -2.017164E-02 +2.017163E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5501,10 +5501,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.878870E-01 -8.287890E-02 -3.355938E-02 -1.126232E-03 +2.878871E-01 +8.287897E-02 +3.355929E-02 +1.126226E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5535,8 +5535,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.222164E-02 -4.938014E-04 +2.222160E-02 +4.937996E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5597,10 +5597,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.408839E-01 -9.930466E-03 +1.408841E-01 +9.930494E-03 1.266345E+00 -7.682957E-01 +7.682954E-01 0.000000E+00 0.000000E+00 1.019759E-02 @@ -5631,10 +5631,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.157485E-01 -2.724497E-02 -7.546768E-01 -2.070655E-01 +2.157489E-01 +2.724501E-02 +7.546765E-01 +2.070654E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5683,12 +5683,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.892564E-01 -3.581800E-02 -6.573175E-01 +1.892565E-01 +3.581801E-02 +6.573174E-01 3.473163E-01 1.641852E+00 -9.021845E-01 +9.021844E-01 2.844653E+00 1.857026E+00 3.432563E-02 @@ -5781,10 +5781,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -5.718543E-03 -3.270174E-05 -1.244175E-01 -1.547972E-02 +5.718522E-03 +3.270150E-05 +1.244176E-01 +1.547973E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5809,7 +5809,7 @@ tally 1: 0.000000E+00 1.165202E-01 6.930471E-03 -2.882402E-01 +2.882401E-01 4.938325E-02 1.786607E-02 3.191964E-04 @@ -5835,13 +5835,13 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.215623E-02 -4.908984E-04 +2.215622E-02 +4.908983E-04 7.663116E-02 -5.274653E-03 +5.274654E-03 2.330690E-01 5.432115E-02 -4.899884E-02 +4.899885E-02 2.400887E-03 2.509994E-01 3.312022E-02 @@ -5849,12 +5849,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -2.646169E-01 -2.722514E-02 +2.646162E-01 +2.722494E-02 2.779035E-01 -3.159895E-02 -2.470258E-01 -3.094096E-02 +3.159893E-02 +2.470259E-01 +3.094098E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5883,12 +5883,12 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.327759E-01 -1.698162E-02 +1.327761E-01 +1.698166E-02 0.000000E+00 0.000000E+00 8.606674E-02 -7.407484E-03 +7.407483E-03 1.553405E-01 1.453017E-02 0.000000E+00 @@ -5901,14 +5901,14 @@ tally 1: 0.000000E+00 1.685770E-02 2.841820E-04 -4.475530E-02 -2.003037E-03 +4.475531E-02 +2.003038E-03 7.510889E-01 3.262838E-01 1.518297E-01 1.402100E-02 1.948898E-01 -3.798205E-02 +3.798204E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5935,18 +5935,18 @@ tally 1: 0.000000E+00 1.375452E-01 1.835673E-02 -1.548402E-01 -2.397550E-02 -6.058355E-02 -1.850618E-03 -1.431855E-01 -2.050210E-02 -7.003130E-01 -2.735249E-01 -3.979720E-01 -1.307259E-01 -9.764192E-02 -9.533945E-03 +1.548403E-01 +2.397552E-02 +6.058351E-02 +1.850615E-03 +1.431856E-01 +2.050213E-02 +7.003137E-01 +2.735252E-01 +3.979721E-01 +1.307262E-01 +9.764118E-02 +9.533800E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5961,8 +5961,8 @@ tally 1: 3.559292E-02 8.969160E-01 4.355459E-01 -8.832719E-02 -7.801693E-03 +8.832720E-02 +7.801694E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -5995,7 +5995,7 @@ tally 1: 0.000000E+00 1.149703E+00 3.989107E-01 -8.049860E-01 +8.049861E-01 1.599684E-01 0.000000E+00 0.000000E+00 @@ -6177,10 +6177,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.355862E-01 -1.838362E-02 -4.229078E-03 -1.788510E-05 +1.355863E-01 +1.838365E-02 +4.228981E-03 +1.788428E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6195,10 +6195,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.929650E-02 -9.859794E-03 +9.929647E-02 +9.859789E-03 2.615062E-01 -3.533944E-02 +3.533945E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6212,7 +6212,7 @@ tally 1: 0.000000E+00 0.000000E+00 1.481609E-01 -2.195166E-02 +2.195167E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6229,10 +6229,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.071176E-01 -5.415798E-02 +3.071175E-01 +5.415795E-02 1.115403E+00 -3.834870E-01 +3.834871E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6300,7 +6300,7 @@ tally 1: 0.000000E+00 0.000000E+00 1.164369E-01 -1.355755E-02 +1.355756E-02 2.357411E-01 2.637254E-02 0.000000E+00 @@ -6361,8 +6361,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.200446E-02 -3.844553E-03 +6.200444E-02 +3.844551E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6427,8 +6427,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.297200E-01 -5.369804E-02 +3.297202E-01 +5.369813E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6448,9 +6448,9 @@ tally 1: 0.000000E+00 0.000000E+00 9.183632E-01 -2.857439E-01 -4.069857E-03 -1.656373E-05 +2.857440E-01 +4.069831E-03 +1.656352E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6499,11 +6499,11 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.853336E-01 -3.434853E-02 +1.853335E-01 +3.434852E-02 4.612134E-01 1.063957E-01 -1.223026E-01 +1.223027E-01 1.495794E-02 0.000000E+00 0.000000E+00 @@ -6519,10 +6519,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.750173E-01 -1.153950E-01 -2.136998E-01 -4.566760E-02 +3.750187E-01 +1.153951E-01 +2.136983E-01 +4.566698E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6540,7 +6540,7 @@ tally 1: 1.358408E-01 1.019608E-02 8.209316E-02 -3.505892E-03 +3.505893E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6571,10 +6571,10 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.078001E-01 +8.078002E-01 1.757558E-01 -5.722245E-01 -9.204133E-02 +5.722246E-01 +9.204135E-02 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6607,8 +6607,8 @@ tally 1: 0.000000E+00 1.354717E-01 9.718740E-03 -5.221741E-02 -2.726658E-03 +5.221740E-02 +2.726657E-03 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6807,9 +6807,9 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.663835E-02 -8.107319E-04 -1.574352E-01 +3.663834E-02 +8.107316E-04 +1.574353E-01 2.355445E-02 0.000000E+00 0.000000E+00 @@ -6848,7 +6848,7 @@ tally 1: 3.788668E-02 1.435401E-03 2.270802E-02 -5.156542E-04 +5.156541E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -6879,8 +6879,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -8.896789E-03 -7.915286E-05 +8.896790E-03 +7.915287E-05 4.847729E-02 2.350047E-03 2.905640E-01 @@ -7117,7 +7117,7 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.679763E-01 +3.679762E-01 1.354065E-01 0.000000E+00 0.000000E+00 @@ -7154,7 +7154,7 @@ tally 1: 3.727350E-02 1.389314E-03 1.316492E-02 -1.733151E-04 +1.733152E-04 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7947,8 +7947,8 @@ tally 1: 0.000000E+00 1.589438E-01 2.060098E-02 -8.883974E-03 -7.892500E-05 +8.883980E-03 +7.892509E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -7975,8 +7975,8 @@ tally 1: 0.000000E+00 1.085624E-02 1.178580E-04 -1.326034E-02 -1.758367E-04 +1.326035E-02 +1.758368E-04 0.000000E+00 0.000000E+00 2.901092E-02 @@ -8555,12 +8555,12 @@ tally 1: 0.000000E+00 1.155931E-01 1.336177E-02 -2.362143E-01 -5.579719E-02 -6.926634E-01 -2.428255E-01 -5.993455E-03 -3.592151E-05 +2.362142E-01 +5.579715E-02 +6.926635E-01 +2.428256E-01 +5.993460E-03 +3.592156E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -8589,8 +8589,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.171592E-02 -5.143173E-03 +7.171591E-02 +5.143172E-03 0.000000E+00 0.000000E+00 0.000000E+00 diff --git a/tests/test_iso_in_lab/inputs_true.dat b/tests/test_iso_in_lab/inputs_true.dat index 9a21b06f1..bd722c9f6 100644 --- a/tests/test_iso_in_lab/inputs_true.dat +++ b/tests/test_iso_in_lab/inputs_true.dat @@ -1 +1 @@ -e0409e0660d58857a6a96ff5cb539ccc41c82f0e443e8081ee00bbee7b6c81b0ad43c870950ae37d4a18c329067b09479a27aa171c3a3f5771f53b384496fe61 \ No newline at end of file +85faac9b8c725ec9242ebc3793b70dcd1c8e58aeb4296345aefd8031304263bd66eaad0c6f1c61a1c644b73f397699856ab3d76d2b397295176650b4069acc9e \ No newline at end of file diff --git a/tests/test_iso_in_lab/results_true.dat b/tests/test_iso_in_lab/results_true.dat index a860453c6..354ccb0f8 100644 --- a/tests/test_iso_in_lab/results_true.dat +++ b/tests/test_iso_in_lab/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.638451E-01 1.237712E-02 +9.638450E-01 1.237705E-02 diff --git a/tests/test_lattice_multiple/results_true.dat b/tests/test_lattice_multiple/results_true.dat index 318bd9235..5c00c4486 100644 --- a/tests/test_lattice_multiple/results_true.dat +++ b/tests/test_lattice_multiple/results_true.dat @@ -1,2 +1,2 @@ k-combined: -9.581523E-01 4.261823E-02 +9.581522E-01 4.261830E-02 diff --git a/tests/test_mg_basic/inputs_true.dat b/tests/test_mg_basic/inputs_true.dat index fdbdb1c96..3f83de760 100644 --- a/tests/test_mg_basic/inputs_true.dat +++ b/tests/test_mg_basic/inputs_true.dat @@ -1 +1 @@ -04b4a5099f0097bbe02983c67dea691d0d0d4ece7fb7c264b9b2c29955baa9e870b6fa999480da08ead1e5a0c078ae33ce1b0a5c8594ad465aedf9bf3933e104 \ No newline at end of file +2fdba76bad058eec6e43657692ef759de79c934076067d4ec5c9f2bdb131877e001f67e16b16bb14889e5e0a1ba84c780979b9d6772573aa6f82d979774c2af8 \ No newline at end of file diff --git a/tests/test_mg_max_order/inputs_true.dat b/tests/test_mg_max_order/inputs_true.dat index 937ceb462..63bdaab03 100644 --- a/tests/test_mg_max_order/inputs_true.dat +++ b/tests/test_mg_max_order/inputs_true.dat @@ -1 +1 @@ -322483933c38fe6ecfa41d632c7214b5cd35af4a56415872585914d9c775dc99171e918eebf3221ab6292689c37269b8c3ce5ff85b3633b5c05ee481bf1b212a \ No newline at end of file +60a35864ad71646309d7f1687ba0826d4d53a5b2e8babf73614362645205484bad3c0e7bf605ec0b11cadf58474b2e3d0a97bf2d9297f9118682c37ff0269afd \ No newline at end of file diff --git a/tests/test_mg_max_order/test_mg_max_order.py b/tests/test_mg_max_order/test_mg_max_order.py index d64956fbf..088f6914b 100644 --- a/tests/test_mg_max_order/test_mg_max_order.py +++ b/tests/test_mg_max_order/test_mg_max_order.py @@ -27,7 +27,7 @@ class MGNuclideInputSet(MGInputSet): # Define the materials file. self.materials.default_xs = '71c' - self.materials.add_materials((uo2, clad, water)) + self.materials += (uo2, clad, water) # Define surfaces. @@ -68,7 +68,7 @@ class MGNuclideInputSet(MGInputSet): geometry = openmc.Geometry() geometry.root_universe = root - self.geometry.geometry = geometry + self.geometry = geometry class MGMaxOrderTestHarness(PyAPITestHarness): def __init__(self, statepoint_name, tallies_present, mg=False): diff --git a/tests/test_mg_nuclide/inputs_true.dat b/tests/test_mg_nuclide/inputs_true.dat index eb643bbaf..e0af3352b 100644 --- a/tests/test_mg_nuclide/inputs_true.dat +++ b/tests/test_mg_nuclide/inputs_true.dat @@ -1 +1 @@ -c9f9e7211bfb2af58130bedfd64592d093b7bfa424953eba433ecf08940595a96b8de7a892f12d1ab465cebd8e5dd784114c1b1299b534ed329df92752c9ed1f \ No newline at end of file +0efba3dd7882fdd38756d0a8f01ff00d7a1abdaab6430b3f090f3339e552448453bbb733852b6bd6ff09608d923c282f168320f942fc2eb3a45610873c588734 \ No newline at end of file diff --git a/tests/test_mg_nuclide/results_true.dat b/tests/test_mg_nuclide/results_true.dat index 5e05e2451..55c2af813 100644 --- a/tests/test_mg_nuclide/results_true.dat +++ b/tests/test_mg_nuclide/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.317412E-01 5.926047E-03 +1.033731E+00 4.974463E-02 diff --git a/tests/test_mg_nuclide/test_mg_nuclide.py b/tests/test_mg_nuclide/test_mg_nuclide.py index deb784bad..89694eea2 100644 --- a/tests/test_mg_nuclide/test_mg_nuclide.py +++ b/tests/test_mg_nuclide/test_mg_nuclide.py @@ -12,21 +12,21 @@ class MGNuclideInputSet(MGInputSet): # Define materials needed for 1D/1G slab problem # This time do using nuclide, not macroscopic uo2 = openmc.Material(name='UO2', material_id=1) - uo2.set_density('g/cm3', 1.0) + uo2.set_density('sum', 1.0) uo2.add_nuclide("uo2_iso", 1.0) clad = openmc.Material(name='Clad', material_id=2) - clad.set_density('g/cm3', 1.0) + clad.set_density('sum', 1.0) clad.add_nuclide("clad_ang_mu", 1.0) - water_data = openmc.Nuclide('lwtr_iso_mu', '71c') + # water_data = openmc.Nuclide('lwtr_iso_mu', '71c') water = openmc.Material(name='LWTR', material_id=3) - water.set_density('g/cm3', 1.0) + water.set_density('sum', 1.0) water.add_nuclide("lwtr_iso_mu", 1.0) # Define the materials file. self.materials.default_xs = '71c' - self.materials.add_materials((uo2, clad, water)) + self.materials += (uo2, clad, water) # Define surfaces. @@ -67,7 +67,7 @@ class MGNuclideInputSet(MGInputSet): geometry = openmc.Geometry() geometry.root_universe = root - self.geometry.geometry = geometry + self.geometry = geometry class MGNuclideTestHarness(PyAPITestHarness): def __init__(self, statepoint_name, tallies_present, mg=False): diff --git a/tests/test_mg_tallies/inputs_true.dat b/tests/test_mg_tallies/inputs_true.dat index 304d2e888..41bbd2136 100644 --- a/tests/test_mg_tallies/inputs_true.dat +++ b/tests/test_mg_tallies/inputs_true.dat @@ -1 +1 @@ -ca8490e0e4549fed727ddc75b6d92cfe5162e11b905218a0afaa3ce2ee0763e2ff38074de27aaa678818624f49c5823650475dfa8f66f502a98fc03145399c0d \ No newline at end of file +6c437c3f9281c52a80a9b166971aa0f5db7ff8b6cf65c79b6d7bf294fad30cc7044f6a665cd9059f8580441bcbb581f7152ff5bccbc21fbcc407847ea6fe3306 \ No newline at end of file diff --git a/tests/test_mg_tallies/test_mg_tallies.py b/tests/test_mg_tallies/test_mg_tallies.py index c54fb4d32..3048f4a39 100644 --- a/tests/test_mg_tallies/test_mg_tallies.py +++ b/tests/test_mg_tallies/test_mg_tallies.py @@ -27,24 +27,15 @@ class MGTalliesTestHarness(PyAPITestHarness): mat_filter = openmc.Filter(type='material', bins=[1,2,3]) tally1 = openmc.Tally(tally_id=1) - tally1.add_filter(mesh_filter) - tally1.add_score('total') - tally1.add_score('absorption') - tally1.add_score('flux') - tally1.add_score('fission') - tally1.add_score('nu-fission') + tally1.filters = [mesh_filter] + tally1.scores = ['total', 'absorption', 'flux', + 'fission', 'nu-fission'] tally2 = openmc.Tally(tally_id=2) - tally2.add_filter(mat_filter) - tally2.add_filter(energy_filter) - tally2.add_filter(energyout_filter) - tally2.add_score('scatter') - tally2.add_score('nu-scatter') + tally2.filters = [mat_filter, energy_filter, energyout_filter] + tally2.scores = ['scatter', 'nu-scatter'] - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_mesh(mesh) - self._input_set.tallies.add_tally(tally1) - self._input_set.tallies.add_tally(tally2) + self._input_set.tallies = openmc.Tallies([tally1, tally2]) super(MGTalliesTestHarness, self)._build_inputs() diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index b94f64122..51fc95c60 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -53b1740921b71e4ead909ab9e4c25f7d43990fe7d7051fde6f66c39c0a6082177385640244010e1b9dbeaf5f34adf1627e9603088af729fadd6b589c19102edc \ No newline at end of file +3e7b4ee62e0a53b92d4241f33493786532934f20ebcf47d92825bb1ee2f67c52aa8e7832cf28a9911221f802da205fba2b23c7228899780089da69e21042743c \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index 82ce3acab..97bb853b6 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -23,7 +23,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'nu-scatter matrix', 'chi'] @@ -32,7 +32,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.build_library() # Initialize a tallies file - self._input_set.tallies = openmc.TalliesFile() + self._input_set.tallies = openmc.Tallies() self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 04e56658f..78ffa3faf 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -224a9e84e87c8a21385326d34ef27c046107d4a2ace6ee85d7a36142a3726e12532e2fc1a318ab707437e0b306a81c6d2b80c531d4c3210d4162242e6265ba70 \ No newline at end of file +2c078f650fed5fc241f42b2d7404fb7fae59d782102fad66b4cd2c8a4b1f266d64e8ce1ec0556117c2a2b1fe49aa583f340dc43df3ddc9320557aa97bb554c05 \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py index 1de21a603..681266186 100644 --- a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -24,7 +24,7 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize MGXS Library for a few cross section types # for one material-filled cell in the geometry - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'nu-scatter matrix', 'chi'] @@ -35,7 +35,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.build_library() # Initialize a tallies file - self._input_set.tallies = openmc.TalliesFile() + self._input_set.tallies = openmc.Tallies() self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index b94f64122..51fc95c60 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -53b1740921b71e4ead909ab9e4c25f7d43990fe7d7051fde6f66c39c0a6082177385640244010e1b9dbeaf5f34adf1627e9603088af729fadd6b589c19102edc \ No newline at end of file +3e7b4ee62e0a53b92d4241f33493786532934f20ebcf47d92825bb1ee2f67c52aa8e7832cf28a9911221f802da205fba2b23c7228899780089da69e21042743c \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/results_true.dat b/tests/test_mgxs_library_hdf5/results_true.dat index 629bf6015..e19b9ffa5 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -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] diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index 642073104..30be46b4c 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -24,7 +24,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'nu-scatter matrix', 'chi'] @@ -33,7 +33,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.build_library() # Initialize a tallies file - self._input_set.tallies = openmc.TalliesFile() + self._input_set.tallies = openmc.Tallies() self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() @@ -51,7 +51,7 @@ class MGXSTestHarness(PyAPITestHarness): # Load the MGXS library from the statepoint self.mgxs_lib.load_from_statepoint(sp) - + # Export the MGXS Library to an HDF5 file self.mgxs_lib.build_hdf5_store(directory='.') @@ -67,7 +67,7 @@ class MGXSTestHarness(PyAPITestHarness): outstr += str(f[key][...]) + '\n' key = 'material/{0}/{1}/std. dev.'.format(domain.id, mgxs_type) outstr += str(f[key][...]) + '\n' - + # Close the MGXS HDF5 file f.close() diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index b94f64122..51fc95c60 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -53b1740921b71e4ead909ab9e4c25f7d43990fe7d7051fde6f66c39c0a6082177385640244010e1b9dbeaf5f34adf1627e9603088af729fadd6b589c19102edc \ No newline at end of file +3e7b4ee62e0a53b92d4241f33493786532934f20ebcf47d92825bb1ee2f67c52aa8e7832cf28a9911221f802da205fba2b23c7228899780089da69e21042743c \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/results_true.dat b/tests/test_mgxs_library_no_nuclides/results_true.dat index b6cef05dc..442b8ac7b 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -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 diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py index 2afa9039e..381b5b87c 100644 --- a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -23,7 +23,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = False self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'nu-scatter matrix', 'chi'] @@ -32,7 +32,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.build_library() # Initialize a tallies file - self._input_set.tallies = openmc.TalliesFile() + self._input_set.tallies = openmc.Tallies() self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index f87bc242d..9436f03a0 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -c6a2a1c707bc723fd38bafd18efcfb22beaac0bd5953d7524ced1d47866cc1e1ee4152e39234d32a06fe43aff446fb12f8c5b62a44075607f274778b49110762 \ No newline at end of file +b035f783fa75ada619b0a58675913e318fef94e519c85cae6982f650d7655cb130f625572fde2058e005b490359180cb9d1e1095f5d35d41c9a0f8ff6e0dc3c1 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/results_true.dat b/tests/test_mgxs_library_nuclides/results_true.dat index 943df1d80..145521964 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -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 diff --git a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py index 173043cf0..c3e4f5f77 100644 --- a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py +++ b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py @@ -23,7 +23,7 @@ class MGXSTestHarness(PyAPITestHarness): energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) # Initialize MGXS Library for a few cross section types - self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry) self.mgxs_lib.by_nuclide = True self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'nu-scatter matrix', 'chi'] @@ -32,7 +32,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.build_library() # Initialize a tallies file - self._input_set.tallies = openmc.TalliesFile() + self._input_set.tallies = openmc.Tallies() self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() diff --git a/tests/test_plot/test_plot.py b/tests/test_plot/test_plot.py index 015577d21..606a1fd64 100644 --- a/tests/test_plot/test_plot.py +++ b/tests/test_plot/test_plot.py @@ -9,7 +9,7 @@ from testing_harness import TestHarness import h5py -from openmc import Executor +import openmc class PlotTestHarness(TestHarness): @@ -19,8 +19,7 @@ class PlotTestHarness(TestHarness): self._plot_names = plot_names def _run_openmc(self): - executor = Executor() - returncode = executor.plot_geometry(openmc_exec=self._opts.exe) + returncode = openmc.plot_geometry(openmc_exec=self._opts.exe) assert returncode == 0, 'OpenMC did not exit successfully.' def _test_output_created(self): diff --git a/tests/test_resonance_scattering/test_resonance_scattering.py b/tests/test_resonance_scattering/test_resonance_scattering.py index d977488bf..b752cf7f3 100644 --- a/tests/test_resonance_scattering/test_resonance_scattering.py +++ b/tests/test_resonance_scattering/test_resonance_scattering.py @@ -17,9 +17,8 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): mat.add_nuclide('Pu-239', 0.02) mat.add_nuclide('H-1', 20.0) - mats_file = openmc.MaterialsFile() + mats_file = openmc.Materials([mat]) mats_file.default_xs = '71c' - mats_file.add_material(mat) mats_file.export_to_xml() # Geometry @@ -35,9 +34,7 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): geometry = openmc.Geometry() geometry.root_universe = root_univ - geo_file = openmc.GeometryFile() - geo_file.geometry = geometry - geo_file.export_to_xml() + geometry.export_to_xml() # Settings nuclide = openmc.Nuclide('U-238', '71c') @@ -67,7 +64,7 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): res_scatt_ares.E_min = 1e-6 res_scatt_ares.E_max = 210e-6 - sets_file = openmc.SettingsFile() + sets_file = openmc.Settings() sets_file.batches = 10 sets_file.inactive = 5 sets_file.particles = 1000 diff --git a/tests/test_score_current/results_true.dat b/tests/test_score_current/results_true.dat index 461681c76..d3ac03a70 100644 --- a/tests/test_score_current/results_true.dat +++ b/tests/test_score_current/results_true.dat @@ -1 +1 @@ -e1bf6c8d9e29f4b6ec8a0eadb3802248eea1cc42fe17b2257ee28eabcdc63958073e226e04a2e751f92f12ef7cb8de330991de395707d9fab2a826ca6946181d \ No newline at end of file +a9310752363eb059ff40f16ac9716b41ccab6ec6607d29f498069318745e485d18d784264304cc2586865bd58cef7587203cc22a1d485c58ddd63c14c0defdb9 \ No newline at end of file diff --git a/tests/test_source/test_source.py b/tests/test_source/test_source.py index 9d303b06b..0abae4344 100644 --- a/tests/test_source/test_source.py +++ b/tests/test_source/test_source.py @@ -9,8 +9,6 @@ import numpy as np sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness import openmc -import openmc.stats -from openmc.source import Source class SourceTestHarness(PyAPITestHarness): @@ -18,8 +16,7 @@ class SourceTestHarness(PyAPITestHarness): mat1 = openmc.Material(material_id=1) mat1.set_density('g/cm3', 4.5) mat1.add_nuclide(openmc.Nuclide('U-235', '71c'), 1.0) - materials = openmc.MaterialsFile() - materials.add_material(mat1) + materials = openmc.Materials([mat1]) materials.export_to_xml() sphere = openmc.Sphere(surface_id=1, R=10.0, boundary_type='vacuum') @@ -31,9 +28,7 @@ class SourceTestHarness(PyAPITestHarness): root.add_cell(inside_sphere) geometry = openmc.Geometry() geometry.root_universe = root - geometry_xml = openmc.GeometryFile() - geometry_xml.geometry = geometry - geometry_xml.export_to_xml() + geometry.export_to_xml() # Create an array of different sources x_dist = openmc.stats.Uniform(-3., 3.) @@ -56,11 +51,11 @@ class SourceTestHarness(PyAPITestHarness): energy2 = openmc.stats.Watt(0.988, 2.249) energy3 = openmc.stats.Tabular(E, p, interpolation='histogram') - source1 = Source(spatial1, angle1, energy1, strength=0.5) - source2 = Source(spatial2, angle2, energy2, strength=0.3) - source3 = Source(spatial3, angle3, energy3, strength=0.2) + source1 = openmc.Source(spatial1, angle1, energy1, strength=0.5) + source2 = openmc.Source(spatial2, angle2, energy2, strength=0.3) + source3 = openmc.Source(spatial3, angle3, energy3, strength=0.2) - settings = openmc.SettingsFile() + settings = openmc.Settings() settings.batches = 10 settings.inactive = 5 settings.particles = 1000 diff --git a/tests/test_statepoint_restart/test_statepoint_restart.py b/tests/test_statepoint_restart/test_statepoint_restart.py index c842689d9..d39bf7cd5 100644 --- a/tests/test_statepoint_restart/test_statepoint_restart.py +++ b/tests/test_statepoint_restart/test_statepoint_restart.py @@ -5,8 +5,7 @@ import os import sys sys.path.insert(0, os.pardir) from testing_harness import TestHarness -from openmc.statepoint import StatePoint -from openmc.executor import Executor +import openmc class StatepointRestartTestHarness(TestHarness): @@ -50,17 +49,15 @@ class StatepointRestartTestHarness(TestHarness): statepoint = statepoint[0] # Run OpenMC - executor = Executor() - if self._opts.mpi_exec is not None: - returncode = executor.run_simulation(mpi_procs=self._opts.mpi_np, - restart_file=statepoint, - openmc_exec=self._opts.exe, - mpi_exec=self._opts.mpi_exec) + returncode = openmc.run(mpi_procs=self._opts.mpi_np, + restart_file=statepoint, + openmc_exec=self._opts.exe, + mpi_exec=self._opts.mpi_exec) else: - returncode = executor.run_simulation(openmc_exec=self._opts.exe, - restart_file=statepoint) + returncode = openmc.run(openmc_exec=self._opts.exe, + restart_file=statepoint) assert returncode == 0, 'OpenMC did not exit successfully.' diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index 657a9e77d..be789fc83 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -5e168146d91b7b5fadecb80a32df9edc906718fb2d70b68b4c18dbed0641739251a1c16177c9f4d47516dfd528ec930879534292ff0eb82af89eca2c3fa4a3e0 \ No newline at end of file +0597eff3fddbc45a09b5b324c9704e540b694b07c136f2040426fdcfe5ec544f036073e4afa34a5fb0fbd721a4c0a609b9b68bf17ce4ec78302023b46b71930c \ No newline at end of file diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index 4fab6c561..fd5eb91a1 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1 +1 @@ -f1b2b43197e1bbb305000d5a84c228361afb876d23ed866cdb073fe7410335c87fb16066c031d0e4397225321632566c00f48eac6187d59bdeab9a8c60986c3c \ No newline at end of file +9f14aaa1694489032b3ce193ad29ecf6ac8976c88c2dd6b26d4c30ae88348e249a9b702b1d39c22204350b8f3bd689800c1b6a6003f19c7bdaf64084a209a2cc \ No newline at end of file diff --git a/tests/test_tallies/test_tallies.py b/tests/test_tallies/test_tallies.py index 81e8641de..52d4084fd 100644 --- a/tests/test_tallies/test_tallies.py +++ b/tests/test_tallies/test_tallies.py @@ -4,7 +4,7 @@ import os import sys sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness -from openmc import Filter, Mesh, Tally, TalliesFile +from openmc import Filter, Mesh, Tally, Tallies from openmc.source import Source from openmc.stats import Box @@ -42,7 +42,8 @@ class TalliesTestHarness(PyAPITestHarness): mesh_2x2.lower_left = [-182.07, -182.07] mesh_2x2.upper_right = [182.07, 182.07] mesh_2x2.dimension = [2, 2] - mesh_filter = Filter(type='mesh', bins=(1,)) + mesh_filter = Filter(type='mesh') + mesh_filter.mesh = mesh_2x2 azimuthal_tally4 = Tally() azimuthal_tally4.filters = [azimuthal_filter2, mesh_filter] azimuthal_tally4.scores = ['flux'] @@ -170,33 +171,19 @@ class TalliesTestHarness(PyAPITestHarness): all_nuclide_tallies[0].estimator = 'tracklength' all_nuclide_tallies[0].estimator = 'collision' - self._input_set.tallies = TalliesFile() - self._input_set.tallies.add_tally(azimuthal_tally1) - self._input_set.tallies.add_tally(azimuthal_tally2) - self._input_set.tallies.add_tally(azimuthal_tally3) - self._input_set.tallies.add_tally(azimuthal_tally4) - self._input_set.tallies.add_tally(cellborn_tally) - self._input_set.tallies.add_tally(dg_tally) - self._input_set.tallies.add_tally(energy_tally) - self._input_set.tallies.add_tally(energyout_tally) - self._input_set.tallies.add_tally(transfer_tally) - self._input_set.tallies.add_tally(material_tally) - self._input_set.tallies.add_tally(mu_tally1) - self._input_set.tallies.add_tally(mu_tally2) - self._input_set.tallies.add_tally(mu_tally3) - self._input_set.tallies.add_tally(polar_tally1) - self._input_set.tallies.add_tally(polar_tally2) - self._input_set.tallies.add_tally(polar_tally3) - self._input_set.tallies.add_tally(polar_tally4) - self._input_set.tallies.add_tally(universe_tally) - [self._input_set.tallies.add_tally(t) for t in score_tallies] - [self._input_set.tallies.add_tally(t) for t in flux_tallies] - self._input_set.tallies.add_tally(scatter_tally1) - self._input_set.tallies.add_tally(scatter_tally2) - [self._input_set.tallies.add_tally(t) for t in total_tallies] - self._input_set.tallies.add_tally(questionable_tally) - [self._input_set.tallies.add_tally(t) for t in all_nuclide_tallies] - self._input_set.tallies.add_mesh(mesh_2x2) + self._input_set.tallies = Tallies() + self._input_set.tallies += ( + [azimuthal_tally1, azimuthal_tally2, azimuthal_tally3, + azimuthal_tally4, cellborn_tally, dg_tally, energy_tally, + energyout_tally, transfer_tally, material_tally, mu_tally1, + mu_tally2, mu_tally3, polar_tally1, polar_tally2, polar_tally3, + polar_tally4, universe_tally]) + self._input_set.tallies += score_tallies + self._input_set.tallies += flux_tallies + self._input_set.tallies += (scatter_tally1, scatter_tally2) + self._input_set.tallies += total_tallies + self._input_set.tallies.append(questionable_tally) + self._input_set.tallies += all_nuclide_tallies self._input_set.export() diff --git a/tests/test_tally_aggregation/inputs_true.dat b/tests/test_tally_aggregation/inputs_true.dat index 7b4276f59..055ac76fd 100644 --- a/tests/test_tally_aggregation/inputs_true.dat +++ b/tests/test_tally_aggregation/inputs_true.dat @@ -1 +1 @@ -530a5e969901e153531f74aed46246b1e8783a0e2f347e472f7554c9970152f45d85499f17d7df9c35c74fed6f78d449aa70bf0c1f8947cd34d3a829483a0055 \ No newline at end of file +f819f1b3564ca1df1e235f120f4bd65003cd80935fa8261f0a5982b7e7ec5b2e7497716673c142fab99f3fb26c174ac7a12e145b9a6f2caf707d2a07702f6eb2 \ No newline at end of file diff --git a/tests/test_tally_aggregation/results_true.dat b/tests/test_tally_aggregation/results_true.dat index f5efc1934..6c2d7a519 100644 --- a/tests/test_tally_aggregation/results_true.dat +++ b/tests/test_tally_aggregation/results_true.dat @@ -1 +1 @@ -0c46f4198850c6bedcd3294fbbed9a6814568344f39d389f0b05aa0198bf4bb8a8bac4c6aa698bf66879c3037d1352f2cf6d8dff479d5b64be41fd88d93d3a04 \ No newline at end of file +840d2648f9ba782926c71baa84e5a2ad31331e156740a3d1e9d86af8f1f0d301ef8c0f69474975d365dbcf8d229a68c62d3e60286d18045e5254373f4e1010bf \ No newline at end of file diff --git a/tests/test_tally_aggregation/test_tally_aggregation.py b/tests/test_tally_aggregation/test_tally_aggregation.py index 7d682b698..359afbe34 100644 --- a/tests/test_tally_aggregation/test_tally_aggregation.py +++ b/tests/test_tally_aggregation/test_tally_aggregation.py @@ -15,9 +15,6 @@ class TallyAggregationTestHarness(PyAPITestHarness): # The summary.h5 file needs to be created to read in the tallies self._input_set.settings.output = {'summary': True} - # Initialize the tallies file - tallies_file = openmc.TalliesFile() - # Initialize the nuclides u235 = openmc.Nuclide('U-235') u238 = openmc.Nuclide('U-238') @@ -33,7 +30,7 @@ class TallyAggregationTestHarness(PyAPITestHarness): tally.filters = [energy_filter, distrib_filter] tally.scores = ['nu-fission', 'total'] tally.nuclides = [u235, u238, pu239] - tallies_file.add_tally(tally) + tallies_file = openmc.Tallies([tally]) # Export tallies to file self._input_set.tallies = tallies_file diff --git a/tests/test_tally_arithmetic/inputs_true.dat b/tests/test_tally_arithmetic/inputs_true.dat index 1b6046f1a..d7b854a51 100644 --- a/tests/test_tally_arithmetic/inputs_true.dat +++ b/tests/test_tally_arithmetic/inputs_true.dat @@ -1 +1 @@ -57384883e37964076aa82c19fa542434331cdb09735d710485b5aa0ca3445d543729e40cb9c7b6a70e7101ef186923eb1ff6315c73b01ff257052838add68fc7 \ No newline at end of file +bb7e730630f7bb4694a27fd77c3c0171f70c78df2681acc26b0ef88bcff367523b11335f487b46269325adbcee7faeb756484af64055c3c91b0103f7ed962053 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/test_tally_arithmetic.py b/tests/test_tally_arithmetic/test_tally_arithmetic.py index cf8d012e8..8e2d2b349 100644 --- a/tests/test_tally_arithmetic/test_tally_arithmetic.py +++ b/tests/test_tally_arithmetic/test_tally_arithmetic.py @@ -16,7 +16,7 @@ class TallyArithmeticTestHarness(PyAPITestHarness): self._input_set.settings.output = {'summary': True} # Initialize the tallies file - tallies_file = openmc.TalliesFile() + tallies_file = openmc.Tallies() # Initialize the nuclides u235 = openmc.Nuclide('U-235') @@ -43,14 +43,13 @@ class TallyArithmeticTestHarness(PyAPITestHarness): tally.filters = [material_filter, energy_filter, distrib_filter] tally.scores = ['nu-fission', 'total'] tally.nuclides = [u235, pu239] - tallies_file.add_tally(tally) + tallies_file.append(tally) tally = openmc.Tally(name='tally 2') tally.filters = [energy_filter, mesh_filter] tally.scores = ['total', 'fission'] tally.nuclides = [u238, u235] - tallies_file.add_tally(tally) - tallies_file.add_mesh(mesh) + tallies_file.append(tally) # Export tallies to file self._input_set.tallies = tallies_file diff --git a/tests/test_tally_assumesep/results_true.dat b/tests/test_tally_assumesep/results_true.dat index e8ff199a0..7262a88a0 100644 --- a/tests/test_tally_assumesep/results_true.dat +++ b/tests/test_tally_assumesep/results_true.dat @@ -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 diff --git a/tests/test_tally_slice_merge/inputs_true.dat b/tests/test_tally_slice_merge/inputs_true.dat index 29f0f1d82..be2ec63dc 100644 --- a/tests/test_tally_slice_merge/inputs_true.dat +++ b/tests/test_tally_slice_merge/inputs_true.dat @@ -1 +1 @@ -8d1ab9e4add51b99045e990ac9c3dad9447e9720d811bc430d4bfdd7c2c035424bcb7750e4a4d0ec0460ea1ef4be46ac58372ed01d55f5d8cfeebbce75559066 \ No newline at end of file +bb4ae3b75445846bd5db05a06cc20e7589990154ccef8302f276cd8356630d585c513ebb6bfa99f9fc93dd2d30c42bfbb67dd3454134f4c9fcb3bac128d1f1c5 \ No newline at end of file diff --git a/tests/test_tally_slice_merge/test_tally_slice_merge.py b/tests/test_tally_slice_merge/test_tally_slice_merge.py index 79acf182d..85dd532c6 100644 --- a/tests/test_tally_slice_merge/test_tally_slice_merge.py +++ b/tests/test_tally_slice_merge/test_tally_slice_merge.py @@ -17,7 +17,7 @@ class TallySliceMergeTestHarness(PyAPITestHarness): self._input_set.settings.output = {'summary': True} # Initialize the tallies file - tallies_file = openmc.TalliesFile() + tallies_file = openmc.Tallies() # Define nuclides and scores to add to both tallies self.nuclides = ['U-235', 'U-238'] @@ -69,10 +69,8 @@ class TallySliceMergeTestHarness(PyAPITestHarness): for nuclide in self.nuclides: distribcell_tally.add_nuclide(nuclide) - # Add tallies to a TalliesFile - tallies_file = openmc.TalliesFile() - tallies_file.add_tally(tallies[0]) - tallies_file.add_tally(distribcell_tally) + # Add tallies to a Tallies object + tallies_file = openmc.Tallies((tallies[0], distribcell_tally)) # Export tallies to file self._input_set.tallies = tallies_file @@ -95,7 +93,7 @@ class TallySliceMergeTestHarness(PyAPITestHarness): # Slice the tallies by cell filter bins cell_filter_prod = itertools.product(tallies, self.cell_filters) - tallies = map(lambda tf: tf[0].get_slice(filters=[tf[1].type], + tallies = map(lambda tf: tf[0].get_slice(filters=[tf[1].type], filter_bins=[tf[1].get_bin(0)]), cell_filter_prod) # Slice the tallies by energy filter bins @@ -133,11 +131,11 @@ class TallySliceMergeTestHarness(PyAPITestHarness): # Extract the distribcell tally distribcell_tally = sp.get_tally(name='distribcell tally') - # Sum up a few subdomains from the distribcell tally - sum1 = distribcell_tally.summation(filter_type='distribcell', + # Sum up a few subdomains from the distribcell tally + sum1 = distribcell_tally.summation(filter_type='distribcell', filter_bins=[0,100,2000,30000]) # Sum up a few subdomains from the distribcell tally - sum2 = distribcell_tally.summation(filter_type='distribcell', + sum2 = distribcell_tally.summation(filter_type='distribcell', filter_bins=[500,5000,50000]) # Merge the distribcell tally slices diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 7d6dbc914..78e5553e8 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -13,9 +13,7 @@ import numpy as np sys.path.insert(0, os.path.join(os.pardir, os.pardir)) from input_set import InputSet, MGInputSet -from openmc.statepoint import StatePoint -from openmc.executor import Executor -import openmc.particle_restart as pr +import openmc class TestHarness(object): @@ -63,15 +61,13 @@ class TestHarness(object): self._cleanup() def _run_openmc(self): - executor = Executor() - if self._opts.mpi_exec is not None: - returncode = executor.run_simulation(mpi_procs=self._opts.mpi_np, - openmc_exec=self._opts.exe, - mpi_exec=self._opts.mpi_exec) + returncode = openmc.run(mpi_procs=self._opts.mpi_np, + openmc_exec=self._opts.exe, + mpi_exec=self._opts.mpi_exec) else: - returncode = executor.run_simulation(openmc_exec=self._opts.exe) + returncode = openmc.run(openmc_exec=self._opts.exe) assert returncode == 0, 'OpenMC did not exit successfully.' @@ -90,7 +86,7 @@ class TestHarness(object): """Digest info in the statepoint and return as a string.""" # Read the statepoint file. statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = StatePoint(statepoint) + sp = openmc.StatePoint(statepoint) # Write out k-combined. outstr = 'k-combined:\n' @@ -158,7 +154,7 @@ class CMFDTestHarness(TestHarness): """Digest info in the statepoint and return as a string.""" # Read the statepoint file. statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - sp = StatePoint(statepoint) + sp = openmc.StatePoint(statepoint) # Write out the eigenvalue and tallies. outstr = super(CMFDTestHarness, self)._get_results() @@ -195,13 +191,12 @@ class ParticleRestartTestHarness(TestHarness): 'mpi_exec': self._opts.mpi_exec}) # Initial run - executor = Executor() - returncode = executor.run_simulation(**args) + returncode = openmc.run(**args) assert returncode == 0, 'OpenMC did not exit successfully.' # Run particle restart args.update({'restart_file': self._sp_name}) - returncode = executor.run_simulation(**args) + returncode = openmc.run(**args) assert returncode == 0, 'OpenMC did not exit successfully.' def _test_output_created(self): @@ -216,7 +211,7 @@ class ParticleRestartTestHarness(TestHarness): """Digest info in the statepoint and return as a string.""" # Read the particle restart file. particle = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] - p = pr.Particle(particle) + p = openmc.Particle(particle) # Write out the properties. outstr = ''