diff --git a/.gitignore b/.gitignore index 133a5f626..0167ec78a 100644 --- a/.gitignore +++ b/.gitignore @@ -101,14 +101,18 @@ examples/jupyter/plots .coverage htmlcov -#macOS +# macOS *.DS_Store -#Dynamic Library +# Dynamic Library *.dylib +*.lib +*.dll -#Visual Studio CMake Project -/.vs/ +# Visual Studio CMake project +.vs/ +out/ CMakeSettings.json -/out/ -/openmc/lib/*.lib + +# Visual Studio Code configuration files +.vscode/ \ No newline at end of file diff --git a/README.md b/README.md index 57197c363..f0bb67989 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,7 @@ project started under the Computational Reactor Physics Group at MIT. Complete documentation on the usage of OpenMC is hosted on Read the Docs (both for the [latest release](http://openmc.readthedocs.io/en/stable/) and [developmental](http://openmc.readthedocs.io/en/latest/) version). If you are -interested in the project or would like to help and contribute, please send a -message to the OpenMC User's Group [mailing -list](https://groups.google.com/forum/?fromgroups=#!forum/openmc-users). +interested in the project, or would like to help and contribute, please get in touch on the OpenMC [discussion forum](https://openmc.discourse.group/). ## Installation @@ -35,11 +33,9 @@ citing the following publication: ## Troubleshooting If you run into problems compiling, installing, or running OpenMC, first check -the [Troubleshooting -section](http://openmc.readthedocs.io/en/stable/usersguide/troubleshoot.html) in +the [Troubleshooting section](http://openmc.readthedocs.io/en/stable/usersguide/troubleshoot.html) in the User's Guide. If you are not able to find a solution to your problem there, -please send a message to the User's Group [mailing -list](https://groups.google.com/forum/?fromgroups=#!forum/openmc-users). +please post to the [discussion forum](https://openmc.discourse.group/). ## Reporting Bugs diff --git a/docs/source/index.rst b/docs/source/index.rst index 198a9429e..ce3c5f77e 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -15,8 +15,8 @@ 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 `_. +information on OpenMC, feel free to post a message on the `OpenMC Discourse +Forum `_. .. admonition:: Recommended publication for citing :class: tip diff --git a/docs/source/io_formats/settings.rst b/docs/source/io_formats/settings.rst index 52b52f68c..09d7db123 100644 --- a/docs/source/io_formats/settings.rst +++ b/docs/source/io_formats/settings.rst @@ -462,9 +462,23 @@ attributes/sub-elements: :library: If this attribute is given, it indicates that the source is to be instantiated from an externally compiled source function. This source can be - as complex as is required to define the source for your problem. The only - requirement is that there is a function called ``sample_source()``. More - documentation on how to build sources can be found in :ref:`custom_source`. + as complex as is required to define the source for your problem. The library + has a few basic requirements: + + * It must contain a class that inherits from ``openmc::CustomSource``; + * The class must implement a function called ``sample()``; + * There must be an ``openmc_create_source()`` function that creates the source + as a unique pointer. This function can be used to pass parameters through to + the source from the XML, if needed. + + More documentation on how to build sources can be found in :ref:`custom_source`. + + *Default*: None + + :parameters: + If this attribute is given, it provides the parameters to pass through to the + class generated using the ``library`` parameter . More documentation on how to + build parametrized sources can be found in :ref:`parameterized_custom_source`. *Default*: None diff --git a/docs/source/publications.rst b/docs/source/publications.rst index 5691fd218..b4f4e6aeb 100644 --- a/docs/source/publications.rst +++ b/docs/source/publications.rst @@ -81,7 +81,7 @@ Coupling and Multi-physics 264-274 (2017). - Tianliang Hu, Liangzhu Cao, Hongchun Wu, Xianan Du, and Mingtao He, "`Coupled - neutrons and thermal-hydraulics simulation of molten salt reactors based on + neutronics and thermal-hydraulics simulation of molten salt reactors based on OpenMC/TANSY `_," *Ann. Nucl. Energy*, **109**, 260-276 (2017). diff --git a/docs/source/pythonapi/data.rst b/docs/source/pythonapi/data.rst index 9631f055f..95fdfeca9 100644 --- a/docs/source/pythonapi/data.rst +++ b/docs/source/pythonapi/data.rst @@ -60,8 +60,10 @@ Core Functions :template: myfunction.rst atomic_mass + atomic_weight dose_coefficients gnd_name + isotopes linearize thin water_density diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst index f890bb469..6dc35e66d 100644 --- a/docs/source/pythonapi/mgxs.rst +++ b/docs/source/pythonapi/mgxs.rst @@ -33,6 +33,7 @@ Multi-group Cross Sections openmc.mgxs.AbsorptionXS openmc.mgxs.CaptureXS openmc.mgxs.Chi + openmc.mgxs.Current openmc.mgxs.FissionXS openmc.mgxs.InverseVelocity openmc.mgxs.KappaFissionXS diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst index cbd1669fd..bc7a2214b 100644 --- a/docs/source/usersguide/install.rst +++ b/docs/source/usersguide/install.rst @@ -12,33 +12,35 @@ Installation and Configuration Installing on Linux/Mac with conda-forge ---------------------------------------- -Conda_ is an open source package management system and environment management -system for installing multiple versions of software packages and their -dependencies and switching easily between them. `conda-forge -`_ is a community-led conda channel of -installable packages. For instructions on installing conda, please consult their -`documentation -`_. - -Once you have `conda` installed on your system, add the `conda-forge` channel to -your configuration with: +`Conda `_ is an open source package management +system and environment management system for installing multiple versions of +software packages and their dependencies and switching easily between them. If +you have `conda` installed on your system, OpenMC can be installed via the +`conda-forge` channel. First, add the `conda-forge` channel with: .. code-block:: sh conda config --add channels conda-forge -Once the `conda-forge` channel has been enabled, OpenMC can then be installed -with: +To list the versions of OpenMC that are available on the `conda-forge` channel, +in your terminal window or an Anaconda Prompt run: + +.. code-block:: sh + + conda search openmc + +OpenMC can then be installed with: .. code-block:: sh - conda install openmc - -It is possible to list all of the versions of OpenMC available on your platform with: + conda create -n openmc-env openmc + +This will install OpenMC in a conda environment called `openmc-env`. To activate +the environment, run: .. code-block:: sh - conda search openmc --channel conda-forge + conda activate openmc-env .. _install_ppa: diff --git a/docs/source/usersguide/settings.rst b/docs/source/usersguide/settings.rst index a879fe6d1..340d4af00 100644 --- a/docs/source/usersguide/settings.rst +++ b/docs/source/usersguide/settings.rst @@ -182,42 +182,56 @@ Custom Sources It is often the case that one may wish to simulate a complex source distribution that is not possible to represent with the classes described above. For these -situations, it is possible to define a complex source with an externally defined -source function that is loaded at runtime. A simple example source is shown +situations, it is possible to define a complex source class containing an externally +defined source function that is loaded at runtime. A simple example source is shown below. .. code-block:: c++ - #include "openmc/random_lcg.h" - #include "openmc/source.h" - #include "openmc/particle.h" + #include // for unique_ptr - // you must have external C linkage here - extern "C" openmc::Particle::Bank sample_source(uint64_t* seed) { - openmc::Particle::Bank particle; - // weight - particle.particle = openmc::Particle::Type::neutron; - particle.wgt = 1.0; - // position - double angle = 2.0 * M_PI * openmc::prn(seed); - double radius = 3.0; - particle.r.x = radius * std::cos(angle); - particle.r.y = radius * std::sin(angle); - particle.r.z = 0.0; - // angle - particle.u = {1.0, 0.0, 0.0}; - particle.E = 14.08e6; - particle.delayed_group = 0; - return particle; + #include "openmc/random_lcg.h" + #include "openmc/source.h" + #include "openmc/particle.h" + + class Source : public openmc::CustomSource + { + openmc::Particle::Bank sample(uint64_t* seed) + { + openmc::Particle::Bank particle; + // weight + particle.particle = openmc::Particle::Type::neutron; + particle.wgt = 1.0; + // position + double angle = 2.0 * M_PI * openmc::prn(seed); + double radius = 3.0; + particle.r.x = radius * std::cos(angle); + particle.r.y = radius * std::sin(angle); + particle.r.z = 0.0; + // angle + particle.u = {1.0, 0.0, 0.0}; + particle.E = 14.08e6; + particle.delayed_group = 0; + return particle; + } + }; + + extern "C" std::unique_ptr openmc_create_source(std::string parameters) + { + return std::make_unique(); } The above source creates monodirectional 14.08 MeV neutrons that are distributed in a ring with a 3 cm radius. This routine is not particularly complex, but should serve as an example upon which to build more complicated sources. - .. note:: The function signature must be declared ``extern "C"``. + .. note:: The source class must inherit from ``openmc::CustomSource`` and + implement a ``sample()`` function. - .. note:: You should only use the openmc::prn() random number generator + .. note:: The ``openmc_create_source()`` function signature must be declared + ``extern "C"``. + + .. note:: You should only use the ``openmc::prn()`` random number generator. In order to build your external source, you will need to link it against the OpenMC shared library. This can be done by writing a CMakeLists.txt file: @@ -235,6 +249,58 @@ file in your build directory. Setting the :attr:`openmc.Source.library` attribute to the path of this shared library will indicate that it should be used for sampling source particles at runtime. +.. _parameterized_custom_source: + +Custom Parameterized Sources +---------------------------- + +Some custom sources may have values (parameters) that can be changed between +runs. This is supported by using the ``openmc_create_source()`` function to +pass parameters defined in the :attr:`openmc.Source.parameters` attribute to +the source class when it is created: + +.. code-block:: c++ + + #include // for unique_ptr + + #include "openmc/source.h" + #include "openmc/particle.h" + + class Source : public openmc::CustomSource { + public: + Source(double energy) : energy_{energy} { } + + // Samples from an instance of this class. + openmc::Particle::Bank sample(uint64_t* seed) + { + openmc::Particle::Bank particle; + // weight + particle.particle = openmc::Particle::Type::neutron; + particle.wgt = 1.0; + // position + particle.r.x = 0.0; + particle.r.y = 0.0; + particle.r.z = 0.0; + // angle + particle.u = {1.0, 0.0, 0.0}; + particle.E = this->energy_; + particle.delayed_group = 0; + + return particle; + } + + private: + double energy_; + }; + + extern "C" std::unique_ptr openmc_create_source(std::string parameter) { + double energy = std::stod(parameter); + return std::make_unique(energy); + } + +As with the basic custom source functionality, the custom source library +location must be provided in the :attr:`openmc.Source.library` attribute. + --------------- Shannon Entropy --------------- diff --git a/docs/source/usersguide/troubleshoot.rst b/docs/source/usersguide/troubleshoot.rst index 2be94f6a8..7fb5723d9 100644 --- a/docs/source/usersguide/troubleshoot.rst +++ b/docs/source/usersguide/troubleshoot.rst @@ -31,7 +31,8 @@ on. Create a new build directory and type the following commands: Now when you re-run your problem, it should report exactly where the program failed. If after reading the debug output, you are still unsure why the program -failed, send an email to the OpenMC User's Group `mailing list`_. +failed, post a message on the `OpenMC Discourse Forum +`_. ERROR: No cross_sections.xml file was specified in settings.xml or in the OPENMC_CROSS_SECTIONS environment variable. ********************************************************************************************************************* @@ -97,8 +98,8 @@ has a collision. For example, if you received this error at cycle 5, generation 5 1 4032 For large runs it is often advantageous to run only the offending particle by -using particle restart mode with the ``-s``, ``-particle``, or ``--particle`` -command-line options in conjunction with the particle restart files that are -created when particles are lost with this error. +using particle restart mode with the ``-r`` command-line option in conjunction +with the particle restart files that are created when particles are lost with +this error. .. _mailing list: https://groups.google.com/forum/?fromgroups=#!forum/openmc-users diff --git a/examples/custom_source/source_ring.cpp b/examples/custom_source/source_ring.cpp index d68122dd7..bc8a8a7f8 100644 --- a/examples/custom_source/source_ring.cpp +++ b/examples/custom_source/source_ring.cpp @@ -1,26 +1,36 @@ #include // for M_PI +#include // for unique_ptr #include "openmc/random_lcg.h" #include "openmc/source.h" #include "openmc/particle.h" -// you must have external C linkage here otherwise -// dlopen will not find the file -extern "C" openmc::Particle::Bank sample_source(uint64_t* seed) +class Source : public openmc::CustomSource { - openmc::Particle::Bank particle; - // wgt - particle.particle = openmc::Particle::Type::neutron; - particle.wgt = 1.0; - // position - double angle = 2. * M_PI * openmc::prn(seed); - double radius = 3.0; - particle.r.x = radius * std::cos(angle); - particle.r.y = radius * std::sin(angle); - particle.r.z = 0.0; - // angle - particle.u = {1.0, 0.0, 0.0}; - particle.E = 14.08e6; - particle.delayed_group = 0; - return particle; + openmc::Particle::Bank sample(uint64_t* seed) + { + openmc::Particle::Bank particle; + // wgt + particle.particle = openmc::Particle::Type::neutron; + particle.wgt = 1.0; + // position + double angle = 2.0 * M_PI * openmc::prn(seed); + double radius = 3.0; + particle.r.x = radius * std::cos(angle); + particle.r.y = radius * std::sin(angle); + particle.r.z = 0.0; + // angle + particle.u = {1.0, 0.0, 0.0}; + particle.E = 14.08e6; + particle.delayed_group = 0; + return particle; + } +}; + +// A function to create a unique pointer to an instance of this class when generated +// via a plugin call using dlopen/dlsym. +// You must have external C linkage here otherwise dlopen will not find the file +extern "C" std::unique_ptr openmc_create_source(std::string parameters) +{ + return std::make_unique(); } diff --git a/examples/jupyter/candu.ipynb b/examples/jupyter/candu.ipynb index 672d56f89..b078d8ac6 100644 --- a/examples/jupyter/candu.ipynb +++ b/examples/jupyter/candu.ipynb @@ -304,11 +304,11 @@ "metadata": {}, "outputs": [], "source": [ - "geom = openmc.Geometry(root_universe)\n", - "geom.export_to_xml()\n", + "geometry = openmc.Geometry(root_universe)\n", + "geometry.export_to_xml()\n", "\n", - "mats = openmc.Materials(geom.get_all_materials().values())\n", - "mats.export_to_xml()" + "materials = openmc.Materials(geometry.get_all_materials().values())\n", + "materials.export_to_xml()" ] }, { @@ -329,14 +329,14 @@ } ], "source": [ - "p = openmc.Plot.from_geometry(geom)\n", - "p.color_by = 'material'\n", - "p.colors = {\n", + "plot = openmc.Plot.from_geometry(geometry)\n", + "plot.color_by = 'material'\n", + "plot.colors = {\n", " fuel: 'black',\n", " clad: 'silver',\n", " heavy_water: 'blue'\n", "}\n", - "p.to_ipython_image()" + "plot.to_ipython_image()" ] }, { @@ -1078,8 +1078,8 @@ } ], "source": [ - "t = sp.get_tally()\n", - "t.get_pandas_dataframe()" + "output_tally = sp.get_tally()\n", + "output_tally.get_pandas_dataframe()" ] }, { @@ -1107,7 +1107,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/jupyter/hexagonal-lattice.ipynb b/examples/jupyter/hexagonal-lattice.ipynb index e0a48e236..f47b3bc60 100644 --- a/examples/jupyter/hexagonal-lattice.ipynb +++ b/examples/jupyter/hexagonal-lattice.ipynb @@ -36,8 +36,8 @@ "water.add_nuclide('O16', 1.0)\n", "water.set_density('g/cm3', 1.0)\n", "\n", - "mats = openmc.Materials((fuel, fuel2, water))\n", - "mats.export_to_xml()" + "materials = openmc.Materials((fuel, fuel2, water))\n", + "materials.export_to_xml()" ] }, { @@ -80,7 +80,7 @@ "metadata": {}, "outputs": [], "source": [ - "lat = openmc.HexLattice()" + "lattice = openmc.HexLattice()" ] }, { @@ -96,9 +96,9 @@ "metadata": {}, "outputs": [], "source": [ - "lat.center = (0., 0.)\n", - "lat.pitch = (1.25,)\n", - "lat.outer = outer_universe" + "lattice.center = (0., 0.)\n", + "lattice.pitch = (1.25,)\n", + "lattice.outer = outer_universe" ] }, { @@ -117,33 +117,63 @@ "name": "stdout", "output_type": "stream", "text": [ - " (0, 0)\n", - " (0,11) (0, 1)\n", - "(0,10) (1, 0) (0, 2)\n", - " (1, 5) (1, 1)\n", - "(0, 9) (2, 0) (0, 3)\n", - " (1, 4) (1, 2)\n", - "(0, 8) (1, 3) (0, 4)\n", - " (0, 7) (0, 5)\n", - " (0, 6)\n" + " (0, 0)\n", + " (0,17) (0, 1)\n", + " (0,16) (1, 0) (0, 2)\n", + "(0,15) (1,11) (1, 1) (0, 3)\n", + " (1,10) (2, 0) (1, 2)\n", + "(0,14) (2, 5) (2, 1) (0, 4)\n", + " (1, 9) (3, 0) (1, 3)\n", + "(0,13) (2, 4) (2, 2) (0, 5)\n", + " (1, 8) (2, 3) (1, 4)\n", + "(0,12) (1, 7) (1, 5) (0, 6)\n", + " (0,11) (1, 6) (0, 7)\n", + " (0,10) (0, 8)\n", + " (0, 9)\n" ] } ], "source": [ - "print(lat.show_indices(num_rings=3))" + "print(lattice.show_indices(num_rings=4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's set up a lattice where the first element in each ring is the big pin universe and all other elements are regular pin universes. From the diagram above, we see that the outer ring has 12 elements, the middle ring has 6, and the innermost degenerate ring has a single element." + "Let's set up a lattice where the first element in each ring is the big pin universe and all other elements are regular pin universes. \n", + "\n", + "From the diagram above, we see that the outer ring has 18 elements, the first ring has 12, and the second ring has 6 elements. The innermost ring of any hexagonal lattice will have only a single element. \n", + "\n", + "We build these rings through 'list concatenation' as follows: " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, + "outputs": [], + "source": [ + "outer_ring = [big_pin_universe] + [pin_universe]*17 # Adds up to 18\n", + "\n", + "ring_1 = [big_pin_universe] + [pin_universe]*11 # Adds up to 12\n", + "\n", + "ring_2 = [big_pin_universe] + [pin_universe]*5 # Adds up to 6\n", + "\n", + "inner_ring = [big_pin_universe]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now assign the rings (and the universes they contain) to our lattice. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -153,30 +183,34 @@ "\tID =\t4\n", "\tName =\t\n", "\tOrientation =\ty\n", - "\t# Rings =\t3\n", + "\t# Rings =\t4\n", "\t# Axial =\tNone\n", "\tCenter =\t(0.0, 0.0)\n", "\tPitch =\t(1.25,)\n", "\tOuter =\t3\n", "\tUniverses \n", - " 2\n", - " 1 1\n", - "1 2 1\n", - " 1 1\n", - "1 2 1\n", - " 1 1\n", - "1 1 1\n", - " 1 1\n", - " 1\n" + " 2\n", + " 1 1\n", + " 1 2 1\n", + "1 1 1 1\n", + " 1 2 1\n", + "1 1 1 1\n", + " 1 2 1\n", + "1 1 1 1\n", + " 1 1 1\n", + "1 1 1 1\n", + " 1 1 1\n", + " 1 1\n", + " 1\n" ] } ], "source": [ - "outer_ring = [big_pin_universe] + [pin_universe]*11\n", - "middle_ring = [big_pin_universe] + [pin_universe]*5\n", - "inner_ring = [big_pin_universe]\n", - "lat.universes = [outer_ring, middle_ring, inner_ring]\n", - "print(lat)" + "lattice.universes = [outer_ring, \n", + " ring_1, \n", + " ring_2,\n", + " inner_ring]\n", + "print(lattice)" ] }, { @@ -188,14 +222,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "outer_surface = openmc.ZCylinder(r=4.0, boundary_type='vacuum')\n", - "main_cell = openmc.Cell(fill=lat, region=-outer_surface)\n", - "geom = openmc.Geometry([main_cell])\n", - "geom.export_to_xml()" + "outer_surface = openmc.ZCylinder(r=5.0, boundary_type='vacuum')\n", + "main_cell = openmc.Cell(fill=lattice, region=-outer_surface)\n", + "geometry = openmc.Geometry([main_cell])\n", + "geometry.export_to_xml()" ] }, { @@ -207,30 +241,30 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p = openmc.Plot.from_geometry(geom)\n", - "p.color_by = 'material'\n", - "p.colors = colors = {\n", + "plot = openmc.Plot.from_geometry(geometry)\n", + "plot.color_by = 'material'\n", + "plot.colors = colors = {\n", " water: 'blue',\n", " fuel: 'olive',\n", " fuel2: 'yellow'\n", "}\n", - "p.to_ipython_image()" + "plot.to_ipython_image()" ] }, { @@ -251,28 +285,28 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQAgMAAAD90d5fAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///8AAP+AgAD//wDoUCWoAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+QIHAkpLvz/+XkAAAakSURBVHja7Z1NlqM6DIUrAy/B+2EJDHD6nEwyftnEW0Uv4Q2K/byl1LBPOpA/FbaxJEui445GqVbgQ/c6xjRgf3yQwoU5etpWpAggDBBKmF2IopNmuJCIXpbhQzIGA4YoxYVsiCm2whCj7MJqdCKQUAgJhi9BBMx3JYaELWVGvWBFsQQE22EYtS0Mx6gTDOF6vfdYRk0p6EJqSsEz+KUQCuGXQmFwSyEVwi2FxuCVQiyEV4qnQhg9GLLXgtHpF8IohVEIvRSy7RzrOQxqK2apRdWLYfsUNOt5DJpejguhWM9Ui6QX0/Yp8Naz1aLoxVaLoFeFWni9KtTC61WhFlqvKrWwelWphdWrSi2sXnUMXP9VaQnOlEq1cHrVMjB6VauF0cvVQ8qNuNoSjCn1jLIpApaUTXESkJIpXgJSMkWCUTJFxJKSKU4Gsm6KX3z7MII/xv8QiTnWTVke0gi2P4wjIlE2ZWnJZfMR7Pe542wCYcrSktNl+5+3z/vL589iAmGKl4KsmRJb8lRiUmgsJsqm7OQgeVOWlkxCPJSYFLpLlE0gTPFykLwpQQ4SNoXsJCE5550kJOf80veaJpx1PkhCMqYkTljsbiVrignExV9kd/VZ52Pf+SetkHM+8UXu6XcONKQmkL7XRcp5Jw1JOe+lIcNWEGlGynlx31POm0CcPCRuXl4eMmwDkWfEzUvB99h5E4jTgCybl9eADFtANBhR87KAqDSuZfMygTgdyPc27HUgQwGy/wn++IecSEFiBrzkOIGxLi5xj3XIAY5D4cAXl0hB4sZ1AiP1PbySQiUe0a1C4IXNAQ7bUYkkxCUseR7kCVyA4BKP6K0hfpk8wIvCESiBSzxisIYELUgwhuz0IJ0txOlB+hWI1O8EQLweZFiBSPVdABLnpHph0IYTOaHzyTokwNoPcHNUIoYojYeu0VlCnCakbw7iNSGDJUST8fihNANR/S3ef43tQJwupG8M4nUhQ2MQXcbtJ/+GUCDKvcq1X1lC9nC0eQJjaHoiDzmB8e0ejm/piSfELf4NdTsRl7hGH0NwN0ZRiTwEdx8ZlbCGeG3IEENO4NqP/mTBt8QbwoUEbUjYCCLfhLeCyPddIf3g2ONQRHrhS18fQcTPJynIAfXkCCqRh4QT0HT/WZXIQ8Sj0x7TT9G/IW/Iq0O8PmR4Q5Qh5/Pz8/H8hUjQIefzc2fHy+evYoIOmTZ/bH8GO84mGJB/p81/XT//mPf1fyFBh1w3v20/7/e242yCATle9/X1FOUmSzYxQxhq3Q7ydvDXo88mpiBCzuAgbwd/Pfps4g+F3IWYlbgpNEuUTUSQPRzFnj4Tifsxzgd5BkefTUSQ8pMj9RDE7cS7EJMSD4UmibKJJQRxY/RFIIj7yCaQx+Zn4PVkdjaxhIxAogO89nsm3pA3hAkxacImP8Z2+i6Trt7kpGVz+i2HwEACEfAYj+DgX27cxR2mehLkCI8R2ptNhD/00sHkIsjmcs7kwtTmEpsRbwgR4vQhLf334Bvyl0JMbtJsc7vJ5MaZyS1AjZuZJrdl272L/cJPFnhtSFuPlGwBkW/CQ1PPdy0gJo/D6TzYZ/KI4iYPW4pH19RTtg1BvC6jtUfenS6ktRcq2nmTxgTSzntaNhCvyTB9C9BpQtp7/bOd935NXpPe7IXv9H1GbCIF8Sm1pF/CjyEK0wk4PUi/AjnAy7IRKIFLpCDtzIjRziwlDc0c45bJl53Nx2TyI5NpnEwmpLKZWsvHFLiFzCRhMUQkvkOcDqT/Bmlnnrt25h5saD5IpwHpF5B2Zhs1mZy1oblsnTykjyDtzJRsMrF0Q/NwO2lIn4CYTMBuMpW8zaT4PvFF8en9XaoQ6YUK2lnXwWQZDJsFPSLnNZYmMVlkpZ01aWyW8HFykD4LMVlWyWSBKJulrpwUpF+BmCw/ZrKQms2ScEtTmNGvQkyW6TNZcNBm6UQnAekLEJPlLE0W5rRZYtTVQ0qWGC37arKArc1SvCaLCpssj2yz0LOrg5QbsIApKEtslhG3WRDdZGl3k0Xqa/TCqlWlF1qtCr3walXohVfrg99/URhcvShqsa0n2M7Xi8bgWU+ynasXUS2W9TTbmaWQC2GUQi+EYT3V9jmoEA6DWgqrEGopPAatFGYhtFK4DEop7EIopfAZ+FIqCsGXUsPA9mBdFQTXg3F6LbJgtQyM9301pCxYtVgYwSQYpRbWiUDWbellGKsUMcaK+SKmFyiijIxiglpdI9HGOmnGR/x7UUAsMUqIKRzLjN8fzmrGmhTuGQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wOC0yOFQwODo0MTo0NiswMTowMPgs44sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDgtMjhUMDg6NDE6NDYrMDE6MDCJcVs3AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Change the orientation of the lattice and re-export the geometry\n", - "lat.orientation = 'x'\n", - "geom.export_to_xml()\n", + "lattice.orientation = 'x'\n", + "geometry.export_to_xml()\n", "\n", "# Run OpenMC in plotting mode\n", - "p.to_ipython_image()" + "plot.to_ipython_image()" ] }, { @@ -284,27 +318,31 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " (0, 8) (0, 9) (0,10)\n", + " (0,12) (0,13) (0,14) (0,15)\n", "\n", - " (0, 7) (1, 4) (1, 5) (0,11)\n", + " (0,11) (1, 8) (1, 9) (1,10) (0,16)\n", "\n", - "(0, 6) (1, 3) (2, 0) (1, 0) (0, 0)\n", + " (0,10) (1, 7) (2, 4) (2, 5) (1,11) (0,17)\n", "\n", - " (0, 5) (1, 2) (1, 1) (0, 1)\n", + "(0, 9) (1, 6) (2, 3) (3, 0) (2, 0) (1, 0) (0, 0)\n", "\n", - " (0, 4) (0, 3) (0, 2)\n" + " (0, 8) (1, 5) (2, 2) (2, 1) (1, 1) (0, 1)\n", + "\n", + " (0, 7) (1, 4) (1, 3) (1, 2) (0, 2)\n", + "\n", + " (0, 6) (0, 5) (0, 4) (0, 3)\n" ] } ], "source": [ - "print(lat.show_indices(3, orientation='x'))" + "print(lattice.show_indices(4, orientation='x'))" ] }, { @@ -318,32 +356,32 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "main_cell.region = openmc.model.hexagonal_prism(\n", - " edge_length=3*lat.pitch[0],\n", + " edge_length=4*lattice.pitch[0],\n", " orientation='x',\n", " boundary_type='vacuum'\n", ")\n", - "geom.export_to_xml()\n", + "geometry.export_to_xml()\n", "\n", "# Run OpenMC in plotting mode\n", - "p.color_by = 'cell'\n", - "p.to_ipython_image()" + "plot.color_by = 'cell'\n", + "plot.to_ipython_image()" ] } ], @@ -364,7 +402,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/jupyter/pandas-dataframes.ipynb b/examples/jupyter/pandas-dataframes.ipynb index 7cc2d92e9..ddc8ee429 100644 --- a/examples/jupyter/pandas-dataframes.ipynb +++ b/examples/jupyter/pandas-dataframes.ipynb @@ -14,13 +14,11 @@ "outputs": [], "source": [ "import glob\n", - "\n", "from IPython.display import Image\n", "import matplotlib.pyplot as plt\n", "import scipy.stats\n", "import numpy as np\n", "import pandas as pd\n", - "\n", "import openmc\n", "%matplotlib inline" ] @@ -79,10 +77,10 @@ "outputs": [], "source": [ "# Instantiate a Materials collection\n", - "materials_file = openmc.Materials([fuel, water, zircaloy])\n", + "materials = openmc.Materials([fuel, water, zircaloy])\n", "\n", "# Export to \"materials.xml\"\n", - "materials_file.export_to_xml()" + "materials.export_to_xml()" ] }, { @@ -256,7 +254,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEVyEhLpgJFNv8T///98iBL0AAAAAWJLR0QDEQxM8gAAAAd0SU1FB+MHEhEuBAW6hPoAAAOeSURBVGje7ZtLkqowFIZPrAsDRz247YAluIosgYEO2h20q3AJDFyAA6wSVnkDCAnkBAK/lH0bTpVVX1mCmsfJRx5E7w6hXn/U64PFWKNkkaIriXNMQWajpNDAO9HJQqJzRmGeUpRLHkVeYOJAEnkut+qT5zxpI/EYtZE26qJI3Uy9x2NY4sOBFDafvNWYD2NSo/H9t6FbJRY+qv///E0GbnowNZGqgkxpX1xf4XkYLzWq+rureyRVpfGYUuBEok/VxI6SxJHFQ4MBi2sEsSoIKktqAlJREUVNhZmscTeMzWVN+4l084h082h6atHApG4/DTrar9AtVdiN1my/Rv9huxLXafJ5+u/G/lIOH1b/3fb9aWdRUKv/GiU9BlUi1vVfYlwm7V5s6j8u2p9UnfHZpsbjGnVOO07CcvxsMm2m06uB93rQbGHajJ++Sb+LW91/s6FBp4sh038njX8hcn3WP/7zP7o9/hf/P9ROEfb7R2ZiVI2fRZletfQkXiieSLSrRCq4u7Dwr28XriGkNt02/rWRLKylN8xaeHKjNJH6pJdHT/+Vbun9f/z3zHbamf13PyS9nP/uLOnlsczKGeO/h0m4RimycrT/fsZt//WQXg55/zWa0oWR3tV/u/7L5S/Wf6389Rr/9ZBeHrXIHliMtfSyuMZOldZX5bS7eBQKheSSXt6fLBWmjrR5Se/qvz7+6y4023/9pJfB0nTpW0uvNyar/5YhZJOpOmj7b2AjRanW29TDf3MD1T08pdelwqv/9viDS3pn89+0i6b/Zl2s/Nfwt9H+++6+8xOi678WPkuKR2IqbVB6o37/3Tv89zLWf33aL9p/5vHf/vzxSv8lxH9v1E7abWSk99pFznRH4eKj8Jevp5McWKxMl8HSX4alt0+Fnf7r4W9bdvwc478v8NeX++/I34+WH1p/cPtZeqD5C82fYP5Gxw90/Pot/jvVX1B/gv1t6YE+P4DPL+jz0+/x32nPz+jzOzp/AM9fCInNnyw90Pk7cP4Qnb9E509f56/T5o/R+Wt0/hydv4fXD5Ye6PoVuH6Grt/N47/+65ezzB+NWL9F14/R9Wt0/Rxev196oPtHwP0r8/iv//6d1X+x/WPw/jUhsf1zSw90/+YZ2z+K7l9d/RfbP43u34b3jy890PMLJ+z8xGv8d/r5kdV/sfNL6Pkp+PzW0gM9PwieX0TPT87rv5P2D/4M//U8v4ueH4bPL6Pnp98b/wAXomzv5H3x5AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wNy0xOFQyMjo0NjowNC0wNTowMEOkh1cAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDctMThUMjI6NDY6MDQtMDU6MDAy+T/rAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEVyEhLpgJFNv8T///98iBL0AAAAAWJLR0QDEQxM8gAAAAd0SU1FB+QIDwgKFMc0xewAAAOeSURBVGje7ZtLkqowFIZPrAsDRz247YAluIosgYEO2h20q3AJDFyAA6wSVnkDCAnkBAK/lH0bTpVVX1mCmsfJRx5E7w6hXn/U64PFWKNkkaIriXNMQWajpNDAO9HJQqJzRmGeUpRLHkVeYOJAEnkut+qT5zxpI/EYtZE26qJI3Uy9x2NY4sOBFDafvNWYD2NSo/H9t6FbJRY+qv///E0GbnowNZGqgkxpX1xf4XkYLzWq+rureyRVpfGYUuBEok/VxI6SxJHFQ4MBi2sEsSoIKktqAlJREUVNhZmscTeMzWVN+4l084h082h6atHApG4/DTrar9AtVdiN1my/Rv9huxLXafJ5+u/G/lIOH1b/3fb9aWdRUKv/GiU9BlUi1vVfYlwm7V5s6j8u2p9UnfHZpsbjGnVOO07CcvxsMm2m06uB93rQbGHajJ++Sb+LW91/s6FBp4sh038njX8hcn3WP/7zP7o9/hf/P9ROEfb7R2ZiVI2fRZletfQkXiieSLSrRCq4u7Dwr28XriGkNt02/rWRLKylN8xaeHKjNJH6pJdHT/+Vbun9f/z3zHbamf13PyS9nP/uLOnlsczKGeO/h0m4RimycrT/fsZt//WQXg55/zWa0oWR3tV/u/7L5S/Wf6389Rr/9ZBeHrXIHliMtfSyuMZOldZX5bS7eBQKheSSXt6fLBWmjrR5Se/qvz7+6y4023/9pJfB0nTpW0uvNyar/5YhZJOpOmj7b2AjRanW29TDf3MD1T08pdelwqv/9viDS3pn89+0i6b/Zl2s/Nfwt9H+++6+8xOi678WPkuKR2IqbVB6o37/3Tv89zLWf33aL9p/5vHf/vzxSv8lxH9v1E7abWSk99pFznRH4eKj8Jevp5McWKxMl8HSX4alt0+Fnf7r4W9bdvwc478v8NeX++/I34+WH1p/cPtZeqD5C82fYP5Gxw90/Pot/jvVX1B/gv1t6YE+P4DPL+jz0+/x32nPz+jzOzp/AM9fCInNnyw90Pk7cP4Qnb9E509f56/T5o/R+Wt0/hydv4fXD5Ye6PoVuH6Grt/N47/+65ezzB+NWL9F14/R9Wt0/Rxev196oPtHwP0r8/iv//6d1X+x/WPw/jUhsf1zSw90/+YZ2z+K7l9d/RfbP43u34b3jy890PMLJ+z8xGv8d/r5kdV/sfNL6Pkp+PzW0gM9PwieX0TPT87rv5P2D/4M//U8v4ueH4bPL6Pnp98b/wAXomzv5H3x5AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wOC0xNVQwNzoxMDoyMCswMTowML6m1KIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDgtMTVUMDc6MTA6MjArMDE6MDDP+2weAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] @@ -436,645 +434,829 @@ " %%%%%%%%%%%\n", "\n", " | The OpenMC Monte Carlo Code\n", - " Copyright | 2011-2019 MIT and OpenMC contributors\n", - " License | http://openmc.readthedocs.io/en/latest/license.html\n", - " Version | 0.11.0-dev\n", - " Git SHA1 | 61c911cffdae2406f9f4bc667a9a6954748bb70c\n", - " Date/Time | 2019-07-18 22:46:04\n", + " Copyright | 2011-2020 MIT and OpenMC contributors\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.12.0\n", + " Git SHA1 | 3d90a9f857ec72eae897e054d4225180f1fa4d93\n", + " Date/Time | 2020-08-15 07:10:20\n", " OpenMP Threads | 4\n", "\n", " Reading settings XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", " Reading geometry XML file...\n", - " Reading U235 from /opt/data/hdf5/nndc_hdf5_v15/U235.h5\n", - " Reading U238 from /opt/data/hdf5/nndc_hdf5_v15/U238.h5\n", - " Reading O16 from /opt/data/hdf5/nndc_hdf5_v15/O16.h5\n", - " Reading H1 from /opt/data/hdf5/nndc_hdf5_v15/H1.h5\n", - " Reading B10 from /opt/data/hdf5/nndc_hdf5_v15/B10.h5\n", - " Reading Zr90 from /opt/data/hdf5/nndc_hdf5_v15/Zr90.h5\n", - " Maximum neutron transport energy: 20000000.000000 eV for U235\n", + " Reading U235 from /home/master/data/nuclear/endfb71_hdf5/U235.h5\n", + " Reading U238 from /home/master/data/nuclear/endfb71_hdf5/U238.h5\n", + " Reading O16 from /home/master/data/nuclear/endfb71_hdf5/O16.h5\n", + " Reading H1 from /home/master/data/nuclear/endfb71_hdf5/H1.h5\n", + " Reading B10 from /home/master/data/nuclear/endfb71_hdf5/B10.h5\n", + " Reading Zr90 from /home/master/data/nuclear/endfb71_hdf5/Zr90.h5\n", + " Minimum neutron data temperature: 294.000000 K\n", + " Maximum neutron data temperature: 294.000000 K\n", " Reading tallies XML file...\n", + " Preparing distributed cell instances...\n", " Writing summary.h5 file...\n", + " Maximum neutron transport energy: 20000000.000000 eV for U235\n", " Initializing source particles...\n", "\n", " ====================> K EIGENVALUE SIMULATION <====================\n", "\n", " Bat./Gen. k Average k\n", " ========= ======== ====================\n", - " 1/1 0.55921\n", - " 2/1 0.63816\n", - " 3/1 0.68834\n", - " 4/1 0.71192\n", - " 5/1 0.67935\n", - " 6/1 0.68254\n", - " 7/1 0.65804 0.67029 +/- 0.01225\n", - " 8/1 0.66225 0.66761 +/- 0.00756\n", - " 9/1 0.66336 0.66655 +/- 0.00545\n", - " 10/1 0.70686 0.67461 +/- 0.00910\n", - " 11/1 0.71753 0.68176 +/- 0.01031\n", - " 12/1 0.66967 0.68004 +/- 0.00889\n", - " 13/1 0.67800 0.67978 +/- 0.00770\n", - " 14/1 0.65634 0.67718 +/- 0.00727\n", - " 15/1 0.66891 0.67635 +/- 0.00656\n", - " 16/1 0.66281 0.67512 +/- 0.00606\n", - " 17/1 0.68160 0.67566 +/- 0.00556\n", - " 18/1 0.63835 0.67279 +/- 0.00586\n", - " 19/1 0.66200 0.67202 +/- 0.00548\n", - " 20/1 0.67156 0.67199 +/- 0.00510\n", - " Triggers unsatisfied, max unc./thresh. is 68.3537 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 70089 --- greater than max batches\n", + " 1/1 0.53544\n", + " 2/1 0.62631\n", + " 3/1 0.63917\n", + " 4/1 0.67203\n", + " 5/1 0.69300\n", + " 6/1 0.64862\n", + " 7/1 0.63937 0.64399 +/- 0.00463\n", + " 8/1 0.67696 0.65498 +/- 0.01131\n", + " 9/1 0.63216 0.64928 +/- 0.00982\n", + " 10/1 0.70996 0.66141 +/- 0.01433\n", + " 11/1 0.69761 0.66745 +/- 0.01316\n", + " 12/1 0.68662 0.67019 +/- 0.01146\n", + " 13/1 0.64374 0.66688 +/- 0.01046\n", + " 14/1 0.69121 0.66958 +/- 0.00961\n", + " 15/1 0.72125 0.67475 +/- 0.01003\n", + " 16/1 0.72706 0.67950 +/- 0.01024\n", + " 17/1 0.69623 0.68090 +/- 0.00945\n", + " 18/1 0.70953 0.68310 +/- 0.00897\n", + " 19/1 0.69026 0.68361 +/- 0.00832\n", + " 20/1 0.68633 0.68379 +/- 0.00775\n", + " Triggers unsatisfied, max unc./thresh. is 75.24758750489383 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 84938 --- greater than max batches\n", " Creating state point statepoint.020.h5...\n", - " 21/1 0.67469 0.67216 +/- 0.00478\n", - " Triggers unsatisfied, max unc./thresh. is 63.9814 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 65503 --- greater than max batches\n", - " 22/1 0.69218 0.67334 +/- 0.00464\n", - " Triggers unsatisfied, max unc./thresh. is 64.4829 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 70692 --- greater than max batches\n", - " 23/1 0.72838 0.67639 +/- 0.00534\n", - " Triggers unsatisfied, max unc./thresh. is 65.1347 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 76371 --- greater than max batches\n", - " 24/1 0.68472 0.67683 +/- 0.00507\n", - " Triggers unsatisfied, max unc./thresh. is 61.6163 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 72140 --- greater than max batches\n", - " 25/1 0.66664 0.67632 +/- 0.00483\n", - " Triggers unsatisfied, max unc./thresh. is 59.0208 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 69675 --- greater than max batches\n", - " 26/1 0.65315 0.67522 +/- 0.00473\n", - " Triggers unsatisfied, max unc./thresh. is 56.5216 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 67094 --- greater than max batches\n", - " 27/1 0.63865 0.67356 +/- 0.00480\n", - " Triggers unsatisfied, max unc./thresh. is 53.8991 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 63918 --- greater than max batches\n", - " 28/1 0.68053 0.67386 +/- 0.00460\n", - " Triggers unsatisfied, max unc./thresh. is 51.504 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61017 --- greater than max batches\n", - " 29/1 0.71585 0.67561 +/- 0.00474\n", - " Triggers unsatisfied, max unc./thresh. is 49.3115 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58364 --- greater than max batches\n", - " 30/1 0.67268 0.67549 +/- 0.00455\n", - " Triggers unsatisfied, max unc./thresh. is 47.3457 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56046 --- greater than max batches\n", - " 31/1 0.67027 0.67529 +/- 0.00437\n", - " Triggers unsatisfied, max unc./thresh. is 48.2456 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60524 --- greater than max batches\n", - " 32/1 0.67324 0.67522 +/- 0.00421\n", - " Triggers unsatisfied, max unc./thresh. is 47.1077 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59922 --- greater than max batches\n", - " 33/1 0.66398 0.67481 +/- 0.00408\n", - " Triggers unsatisfied, max unc./thresh. is 45.4352 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57807 --- greater than max batches\n", - " 34/1 0.66373 0.67443 +/- 0.00395\n", - " Triggers unsatisfied, max unc./thresh. is 44.8243 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58273 --- greater than max batches\n", - " 35/1 0.68412 0.67476 +/- 0.00383\n", - " Triggers unsatisfied, max unc./thresh. is 43.7412 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57404 --- greater than max batches\n", - " 36/1 0.66026 0.67429 +/- 0.00374\n", - " Triggers unsatisfied, max unc./thresh. is 43.0549 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57471 --- greater than max batches\n", - " 37/1 0.67283 0.67424 +/- 0.00362\n", - " Triggers unsatisfied, max unc./thresh. is 42.9634 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59073 --- greater than max batches\n", - " 38/1 0.69507 0.67487 +/- 0.00356\n", - " Triggers unsatisfied, max unc./thresh. is 41.6527 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57259 --- greater than max batches\n", - " 39/1 0.68681 0.67522 +/- 0.00347\n", - " Triggers unsatisfied, max unc./thresh. is 40.4174 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55547 --- greater than max batches\n", - " 40/1 0.65886 0.67476 +/- 0.00340\n", - " Triggers unsatisfied, max unc./thresh. is 39.424 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54404 --- greater than max batches\n", - " 41/1 0.63736 0.67372 +/- 0.00347\n", - " Triggers unsatisfied, max unc./thresh. is 40.094 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57877 --- greater than max batches\n", - " 42/1 0.71800 0.67491 +/- 0.00358\n", - " Triggers unsatisfied, max unc./thresh. is 39.0603 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56457 --- greater than max batches\n", - " 43/1 0.67193 0.67484 +/- 0.00348\n", - " Triggers unsatisfied, max unc./thresh. is 38.8448 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57344 --- greater than max batches\n", - " 44/1 0.66680 0.67463 +/- 0.00340\n", - " Triggers unsatisfied, max unc./thresh. is 38.227 for absorption in tally 3\n" + " 21/1 0.68310 0.68375 +/- 0.00725\n", + " Triggers unsatisfied, max unc./thresh. is 71.20148627325992 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 81120 --- greater than max batches\n", + " 22/1 0.68679 0.68393 +/- 0.00681\n", + " Triggers unsatisfied, max unc./thresh. is 66.94650483064697 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 76197 --- greater than max batches\n", + " 23/1 0.67440 0.68340 +/- 0.00644\n", + " Triggers unsatisfied, max unc./thresh. is 63.553590826021285 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 72709 --- greater than max batches\n", + " 24/1 0.67483 0.68295 +/- 0.00611\n", + " Triggers unsatisfied, max unc./thresh. is 60.37873858685279 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69272 --- greater than max batches\n", + " 25/1 0.71558 0.68458 +/- 0.00602\n", + " Triggers unsatisfied, max unc./thresh. is 60.34535216026281 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 72837 --- greater than max batches\n", + " 26/1 0.71853 0.68620 +/- 0.00595\n", + " Triggers unsatisfied, max unc./thresh. is 59.60875760463032 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 74623 --- greater than max batches\n", + " 27/1 0.67455 0.68567 +/- 0.00570\n", + " Triggers unsatisfied, max unc./thresh. is 57.228951643423976 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 72059 --- greater than max batches\n", + " 28/1 0.69435 0.68605 +/- 0.00546\n", + " Triggers unsatisfied, max unc./thresh. is 56.194065573871285 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 72634 --- greater than max batches\n", + " 29/1 0.67706 0.68567 +/- 0.00524\n", + " Triggers unsatisfied, max unc./thresh. is 53.86022066923874 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69628 --- greater than max batches\n", + " 30/1 0.69294 0.68596 +/- 0.00504\n", + " Triggers unsatisfied, max unc./thresh. is 51.73413206858763 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66916 --- greater than max batches\n", + " 31/1 0.69108 0.68616 +/- 0.00484\n", + " Triggers unsatisfied, max unc./thresh. is 49.71174462484801 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64258 --- greater than max batches\n", + " 32/1 0.68089 0.68596 +/- 0.00466\n", + " Triggers unsatisfied, max unc./thresh. is 50.80993117627794 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69710 --- greater than max batches\n", + " 33/1 0.67698 0.68564 +/- 0.00450\n", + " Triggers unsatisfied, max unc./thresh. is 50.46659333785448 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 71318 --- greater than max batches\n", + " 34/1 0.68167 0.68551 +/- 0.00435\n", + " Triggers unsatisfied, max unc./thresh. is 48.852656603250665 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69216 --- greater than max batches\n", + " 35/1 0.67760 0.68524 +/- 0.00421\n", + " Triggers unsatisfied, max unc./thresh. is 48.5685583427197 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 70773 --- greater than max batches\n", + " 36/1 0.67628 0.68495 +/- 0.00408\n", + " Triggers unsatisfied, max unc./thresh. is 47.77661998216646 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 70766 --- greater than max batches\n", + " 37/1 0.66736 0.68440 +/- 0.00399\n", + " Triggers unsatisfied, max unc./thresh. is 46.57810773879176 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69430 --- greater than max batches\n", + " 38/1 0.71026 0.68519 +/- 0.00395\n", + " Triggers unsatisfied, max unc./thresh. is 45.876107560616674 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69458 --- greater than max batches\n", + " 39/1 0.67674 0.68494 +/- 0.00384\n", + " Triggers unsatisfied, max unc./thresh. is 45.30341918376721 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 69787 --- greater than max batches\n", + " 40/1 0.69360 0.68519 +/- 0.00373\n", + " Triggers unsatisfied, max unc./thresh. is 44.018056562863386 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 67821 --- greater than max batches\n", + " 41/1 0.70987 0.68587 +/- 0.00369\n", + " Triggers unsatisfied, max unc./thresh. is 42.781078099052785 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65893 --- greater than max batches\n", + " 42/1 0.68780 0.68592 +/- 0.00359\n", + " Triggers unsatisfied, max unc./thresh. is 41.60877069209228 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64063 --- greater than max batches\n", + " 43/1 0.69223 0.68609 +/- 0.00350\n", + " Triggers unsatisfied, max unc./thresh. is 42.44932759168626 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 68479 --- greater than max batches\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " WARNING: The estimated number of batches is 56996 --- greater than max batches\n", - " 45/1 0.65956 0.67425 +/- 0.00334\n", - " Triggers unsatisfied, max unc./thresh. is 37.2591 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55535 --- greater than max batches\n", - " 46/1 0.64705 0.67359 +/- 0.00332\n", - " Triggers unsatisfied, max unc./thresh. is 37.802 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58594 --- greater than max batches\n", - " 47/1 0.67729 0.67368 +/- 0.00324\n", - " Triggers unsatisfied, max unc./thresh. is 36.9727 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57419 --- greater than max batches\n", - " 48/1 0.68259 0.67389 +/- 0.00317\n", - " Triggers unsatisfied, max unc./thresh. is 36.3752 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56901 --- greater than max batches\n", - " 49/1 0.64395 0.67320 +/- 0.00317\n", - " Triggers unsatisfied, max unc./thresh. is 35.7676 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56296 --- greater than max batches\n", - " 50/1 0.68839 0.67354 +/- 0.00312\n", - " Triggers unsatisfied, max unc./thresh. is 34.977 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55058 --- greater than max batches\n", - " 51/1 0.71108 0.67436 +/- 0.00316\n", - " Triggers unsatisfied, max unc./thresh. is 34.453 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54608 --- greater than max batches\n", - " 52/1 0.66286 0.67411 +/- 0.00310\n", - " Triggers unsatisfied, max unc./thresh. is 33.9781 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54268 --- greater than max batches\n", - " 53/1 0.62666 0.67313 +/- 0.00319\n", - " Triggers unsatisfied, max unc./thresh. is 33.4946 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 53856 --- greater than max batches\n", - " 54/1 0.67124 0.67309 +/- 0.00313\n", - " Triggers unsatisfied, max unc./thresh. is 32.8639 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 52927 --- greater than max batches\n", - " 55/1 0.67741 0.67317 +/- 0.00306\n", - " Triggers unsatisfied, max unc./thresh. is 32.2922 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 52145 --- greater than max batches\n", - " 56/1 0.67182 0.67315 +/- 0.00300\n", - " Triggers unsatisfied, max unc./thresh. is 31.9136 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 51948 --- greater than max batches\n", - " 57/1 0.68764 0.67343 +/- 0.00296\n", - " Triggers unsatisfied, max unc./thresh. is 31.3059 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50969 --- greater than max batches\n", - " 58/1 0.72310 0.67436 +/- 0.00305\n", - " Triggers unsatisfied, max unc./thresh. is 30.8841 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50558 --- greater than max batches\n", - " 59/1 0.67689 0.67441 +/- 0.00299\n", - " Triggers unsatisfied, max unc./thresh. is 30.5895 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50534 --- greater than max batches\n", - " 60/1 0.65890 0.67413 +/- 0.00295\n", - " Triggers unsatisfied, max unc./thresh. is 30.0567 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 49693 --- greater than max batches\n", - " 61/1 0.69128 0.67443 +/- 0.00291\n", - " Triggers unsatisfied, max unc./thresh. is 29.8144 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 49784 --- greater than max batches\n", - " 62/1 0.65469 0.67409 +/- 0.00288\n", - " Triggers unsatisfied, max unc./thresh. is 29.3138 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 48986 --- greater than max batches\n", - " 63/1 0.71839 0.67485 +/- 0.00293\n", - " Triggers unsatisfied, max unc./thresh. is 28.9465 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 48604 --- greater than max batches\n", - " 64/1 0.69556 0.67520 +/- 0.00291\n", - " Triggers unsatisfied, max unc./thresh. is 29.1602 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50174 --- greater than max batches\n", - " 65/1 0.70067 0.67563 +/- 0.00289\n", - " Triggers unsatisfied, max unc./thresh. is 28.9248 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50204 --- greater than max batches\n", - " 66/1 0.67994 0.67570 +/- 0.00284\n", - " Triggers unsatisfied, max unc./thresh. is 28.7841 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50545 --- greater than max batches\n", - " 67/1 0.74539 0.67682 +/- 0.00301\n", - " Triggers unsatisfied, max unc./thresh. is 28.4946 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50346 --- greater than max batches\n", - " 68/1 0.67753 0.67683 +/- 0.00296\n", - " Triggers unsatisfied, max unc./thresh. is 28.1166 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 49810 --- greater than max batches\n", - " 69/1 0.69595 0.67713 +/- 0.00293\n", - " Triggers unsatisfied, max unc./thresh. is 28.0441 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50340 --- greater than max batches\n", - " 70/1 0.70621 0.67758 +/- 0.00292\n", - " Triggers unsatisfied, max unc./thresh. is 27.708 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 49908 --- greater than max batches\n", - " 71/1 0.71027 0.67807 +/- 0.00292\n", - " Triggers unsatisfied, max unc./thresh. is 27.2979 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 49187 --- greater than max batches\n", - " 72/1 0.63710 0.67746 +/- 0.00294\n", - " Triggers unsatisfied, max unc./thresh. is 27.3359 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 50071 --- greater than max batches\n", - " 73/1 0.70979 0.67794 +/- 0.00294\n", - " Triggers unsatisfied, max unc./thresh. is 29.5308 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59306 --- greater than max batches\n", - " 74/1 0.65957 0.67767 +/- 0.00291\n", - " Triggers unsatisfied, max unc./thresh. is 29.2344 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58976 --- greater than max batches\n", - " 75/1 0.66611 0.67751 +/- 0.00287\n", - " Triggers unsatisfied, max unc./thresh. is 28.8289 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58183 --- greater than max batches\n", - " 76/1 0.66033 0.67726 +/- 0.00284\n", - " Triggers unsatisfied, max unc./thresh. is 28.4986 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57670 --- greater than max batches\n", - " 77/1 0.68535 0.67738 +/- 0.00280\n", - " Triggers unsatisfied, max unc./thresh. is 28.2548 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57486 --- greater than max batches\n", - " 78/1 0.71920 0.67795 +/- 0.00282\n", - " Triggers unsatisfied, max unc./thresh. is 28.2853 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58410 --- greater than max batches\n", - " 79/1 0.67645 0.67793 +/- 0.00278\n", - " Triggers unsatisfied, max unc./thresh. is 27.9534 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57829 --- greater than max batches\n", - " 80/1 0.68300 0.67800 +/- 0.00275\n", - " Triggers unsatisfied, max unc./thresh. is 27.5813 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57060 --- greater than max batches\n", - " 81/1 0.69810 0.67826 +/- 0.00272\n", - " Triggers unsatisfied, max unc./thresh. is 27.2164 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56301 --- greater than max batches\n", - " 82/1 0.68213 0.67831 +/- 0.00269\n", - " Triggers unsatisfied, max unc./thresh. is 26.8628 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55570 --- greater than max batches\n", - " 83/1 0.68745 0.67843 +/- 0.00265\n", - " Triggers unsatisfied, max unc./thresh. is 26.5172 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54852 --- greater than max batches\n", - " 84/1 0.65239 0.67810 +/- 0.00264\n", - " Triggers unsatisfied, max unc./thresh. is 26.2016 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54241 --- greater than max batches\n" + " 44/1 0.69561 0.68633 +/- 0.00342\n", + " Triggers unsatisfied, max unc./thresh. is 41.34743776753899 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66680 --- greater than max batches\n", + " 45/1 0.67503 0.68605 +/- 0.00334\n", + " Triggers unsatisfied, max unc./thresh. is 40.97332186124358 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 67158 --- greater than max batches\n", + " 46/1 0.67290 0.68573 +/- 0.00328\n", + " Triggers unsatisfied, max unc./thresh. is 40.24678448931756 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66417 --- greater than max batches\n", + " 47/1 0.67355 0.68544 +/- 0.00321\n", + " Triggers unsatisfied, max unc./thresh. is 40.42620640829592 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 68645 --- greater than max batches\n", + " 48/1 0.71383 0.68610 +/- 0.00320\n", + " Triggers unsatisfied, max unc./thresh. is 39.90662320308606 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 68485 --- greater than max batches\n", + " 49/1 0.68389 0.68605 +/- 0.00313\n", + " Triggers unsatisfied, max unc./thresh. is 39.075369568753906 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 67188 --- greater than max batches\n", + " 50/1 0.73148 0.68706 +/- 0.00322\n", + " Triggers unsatisfied, max unc./thresh. is 38.57054567218653 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66951 --- greater than max batches\n", + " 51/1 0.69796 0.68730 +/- 0.00316\n", + " Triggers unsatisfied, max unc./thresh. is 38.21572703507316 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 67186 --- greater than max batches\n", + " 52/1 0.70691 0.68771 +/- 0.00312\n", + " Triggers unsatisfied, max unc./thresh. is 37.50971908717773 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66134 --- greater than max batches\n", + " 53/1 0.69104 0.68778 +/- 0.00306\n", + " Triggers unsatisfied, max unc./thresh. is 36.824732312223716 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65096 --- greater than max batches\n", + " 54/1 0.74368 0.68892 +/- 0.00320\n", + " Triggers unsatisfied, max unc./thresh. is 36.20814737643575 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64246 --- greater than max batches\n", + " 55/1 0.67371 0.68862 +/- 0.00315\n", + " Triggers unsatisfied, max unc./thresh. is 35.48607231512293 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62969 --- greater than max batches\n", + " 56/1 0.67846 0.68842 +/- 0.00310\n", + " Triggers unsatisfied, max unc./thresh. is 35.34421893287461 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63715 --- greater than max batches\n", + " 57/1 0.66351 0.68794 +/- 0.00307\n", + " Triggers unsatisfied, max unc./thresh. is 34.67062652878957 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62512 --- greater than max batches\n", + " 58/1 0.67049 0.68761 +/- 0.00303\n", + " Triggers unsatisfied, max unc./thresh. is 34.22135922543247 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62074 --- greater than max batches\n", + " 59/1 0.66967 0.68728 +/- 0.00299\n", + " Triggers unsatisfied, max unc./thresh. is 33.66881484408945 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61219 --- greater than max batches\n", + " 60/1 0.70271 0.68756 +/- 0.00295\n", + " Triggers unsatisfied, max unc./thresh. is 33.19914799505717 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60626 --- greater than max batches\n", + " 61/1 0.70035 0.68779 +/- 0.00291\n", + " Triggers unsatisfied, max unc./thresh. is 32.65594936729897 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59725 --- greater than max batches\n", + " 62/1 0.66274 0.68735 +/- 0.00289\n", + " Triggers unsatisfied, max unc./thresh. is 32.15622046485561 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58945 --- greater than max batches\n", + " 63/1 0.68607 0.68733 +/- 0.00284\n", + " Triggers unsatisfied, max unc./thresh. is 31.601225649282494 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57926 --- greater than max batches\n", + " 64/1 0.66518 0.68695 +/- 0.00282\n", + " Triggers unsatisfied, max unc./thresh. is 31.12129365572805 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57149 --- greater than max batches\n", + " 65/1 0.65999 0.68650 +/- 0.00281\n", + " Triggers unsatisfied, max unc./thresh. is 30.641988019531464 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56341 --- greater than max batches\n", + " 66/1 0.67843 0.68637 +/- 0.00276\n", + " Triggers unsatisfied, max unc./thresh. is 30.320463443580458 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56085 --- greater than max batches\n", + " 67/1 0.69295 0.68648 +/- 0.00272\n", + " Triggers unsatisfied, max unc./thresh. is 30.06051080038397 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56031 --- greater than max batches\n", + " 68/1 0.69158 0.68656 +/- 0.00268\n", + " Triggers unsatisfied, max unc./thresh. is 29.7400907913873 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 55727 --- greater than max batches\n", + " 69/1 0.69825 0.68674 +/- 0.00264\n", + " Triggers unsatisfied, max unc./thresh. is 29.278619659445805 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 54869 --- greater than max batches\n", + " 70/1 0.73637 0.68750 +/- 0.00271\n", + " Triggers unsatisfied, max unc./thresh. is 28.945044018568716 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 54464 --- greater than max batches\n", + " 71/1 0.64301 0.68683 +/- 0.00275\n", + " Triggers unsatisfied, max unc./thresh. is 28.73677928804667 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 54508 --- greater than max batches\n", + " 72/1 0.71506 0.68725 +/- 0.00274\n", + " Triggers unsatisfied, max unc./thresh. is 29.20796537704291 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57164 --- greater than max batches\n", + " 73/1 0.69203 0.68732 +/- 0.00270\n", + " Triggers unsatisfied, max unc./thresh. is 29.56297016014581 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59435 --- greater than max batches\n", + " 74/1 0.69208 0.68739 +/- 0.00267\n", + " Triggers unsatisfied, max unc./thresh. is 29.545241442413783 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60237 --- greater than max batches\n", + " 75/1 0.65717 0.68696 +/- 0.00266\n", + " Triggers unsatisfied, max unc./thresh. is 29.284013224166248 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60034 --- greater than max batches\n", + " 76/1 0.70992 0.68728 +/- 0.00265\n", + " Triggers unsatisfied, max unc./thresh. is 29.00034584995327 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59718 --- greater than max batches\n", + " 77/1 0.65590 0.68685 +/- 0.00264\n", + " Triggers unsatisfied, max unc./thresh. is 28.867967845905174 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60007 --- greater than max batches\n", + " 78/1 0.64439 0.68626 +/- 0.00267\n", + " Triggers unsatisfied, max unc./thresh. is 29.016012595317935 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61466 --- greater than max batches\n", + " 79/1 0.66295 0.68595 +/- 0.00265\n", + " Triggers unsatisfied, max unc./thresh. is 28.626245464278142 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60646 --- greater than max batches\n", + " 80/1 0.66672 0.68569 +/- 0.00263\n", + " Triggers unsatisfied, max unc./thresh. is 28.24218910063624 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59827 --- greater than max batches\n", + " 81/1 0.69110 0.68576 +/- 0.00260\n", + " Triggers unsatisfied, max unc./thresh. is 27.917349908027763 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59238 --- greater than max batches\n", + " 82/1 0.67481 0.68562 +/- 0.00257\n", + " Triggers unsatisfied, max unc./thresh. is 28.01946018168837 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60457 --- greater than max batches\n", + " 83/1 0.72216 0.68609 +/- 0.00258\n", + " Triggers unsatisfied, max unc./thresh. is 27.931394620754766 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60858 --- greater than max batches\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " 85/1 0.64990 0.67775 +/- 0.00263\n", - " Triggers unsatisfied, max unc./thresh. is 25.9705 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 53963 --- greater than max batches\n", - " 86/1 0.68586 0.67785 +/- 0.00260\n", - " Triggers unsatisfied, max unc./thresh. is 25.7908 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 53884 --- greater than max batches\n", - " 87/1 0.63453 0.67732 +/- 0.00262\n", - " Triggers unsatisfied, max unc./thresh. is 25.5271 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 53439 --- greater than max batches\n", - " 88/1 0.65402 0.67704 +/- 0.00261\n", - " Triggers unsatisfied, max unc./thresh. is 25.321 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 53221 --- greater than max batches\n", - " 89/1 0.69063 0.67720 +/- 0.00258\n", - " Triggers unsatisfied, max unc./thresh. is 25.8769 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56253 --- greater than max batches\n", - " 90/1 0.65729 0.67697 +/- 0.00256\n", - " Triggers unsatisfied, max unc./thresh. is 25.7648 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56431 --- greater than max batches\n", - " 91/1 0.72355 0.67751 +/- 0.00259\n", - " Triggers unsatisfied, max unc./thresh. is 25.5034 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55942 --- greater than max batches\n", - " 92/1 0.63010 0.67696 +/- 0.00262\n", - " Triggers unsatisfied, max unc./thresh. is 25.2708 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55565 --- greater than max batches\n", - " 93/1 0.68610 0.67707 +/- 0.00259\n", - " Triggers unsatisfied, max unc./thresh. is 24.9941 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54980 --- greater than max batches\n", - " 94/1 0.67618 0.67706 +/- 0.00256\n", - " Triggers unsatisfied, max unc./thresh. is 24.7139 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 54365 --- greater than max batches\n", - " 95/1 0.68946 0.67719 +/- 0.00253\n", - " Triggers unsatisfied, max unc./thresh. is 25.4371 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58240 --- greater than max batches\n", - " 96/1 0.70557 0.67751 +/- 0.00252\n", - " Triggers unsatisfied, max unc./thresh. is 25.5082 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59216 --- greater than max batches\n", - " 97/1 0.64689 0.67717 +/- 0.00252\n", - " Triggers unsatisfied, max unc./thresh. is 25.2374 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58603 --- greater than max batches\n", - " 98/1 0.70194 0.67744 +/- 0.00251\n", - " Triggers unsatisfied, max unc./thresh. is 25.393 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59972 --- greater than max batches\n", - " 99/1 0.68278 0.67750 +/- 0.00248\n", - " Triggers unsatisfied, max unc./thresh. is 25.5651 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61441 --- greater than max batches\n", - " 100/1 0.67066 0.67742 +/- 0.00246\n", - " Triggers unsatisfied, max unc./thresh. is 25.3552 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61079 --- greater than max batches\n", - " 101/1 0.64907 0.67713 +/- 0.00245\n", - " Triggers unsatisfied, max unc./thresh. is 25.3463 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61679 --- greater than max batches\n", - " 102/1 0.69810 0.67735 +/- 0.00243\n", - " Triggers unsatisfied, max unc./thresh. is 25.1877 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61544 --- greater than max batches\n", - " 103/1 0.70659 0.67764 +/- 0.00242\n", - " Triggers unsatisfied, max unc./thresh. is 24.9371 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60948 --- greater than max batches\n", - " 104/1 0.64152 0.67728 +/- 0.00243\n", - " Triggers unsatisfied, max unc./thresh. is 24.6848 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60330 --- greater than max batches\n", - " 105/1 0.68117 0.67732 +/- 0.00240\n", - " Triggers unsatisfied, max unc./thresh. is 24.4368 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59721 --- greater than max batches\n", - " 106/1 0.71963 0.67774 +/- 0.00242\n", - " Triggers unsatisfied, max unc./thresh. is 24.2091 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59200 --- greater than max batches\n", - " 107/1 0.69488 0.67790 +/- 0.00240\n", - " Triggers unsatisfied, max unc./thresh. is 23.9711 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58616 --- greater than max batches\n", - " 108/1 0.65697 0.67770 +/- 0.00238\n", - " Triggers unsatisfied, max unc./thresh. is 23.8071 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58384 --- greater than max batches\n", - " 109/1 0.70032 0.67792 +/- 0.00237\n", - " Triggers unsatisfied, max unc./thresh. is 23.5788 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57825 --- greater than max batches\n", - " 110/1 0.66571 0.67780 +/- 0.00235\n", - " Triggers unsatisfied, max unc./thresh. is 23.5035 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58009 --- greater than max batches\n", - " 111/1 0.69676 0.67798 +/- 0.00234\n", - " Triggers unsatisfied, max unc./thresh. is 23.3157 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57629 --- greater than max batches\n", - " 112/1 0.68219 0.67802 +/- 0.00231\n", - " Triggers unsatisfied, max unc./thresh. is 23.1525 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57361 --- greater than max batches\n", - " 113/1 0.69025 0.67813 +/- 0.00230\n", - " Triggers unsatisfied, max unc./thresh. is 23.0036 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57156 --- greater than max batches\n", - " 114/1 0.69241 0.67826 +/- 0.00228\n", - " Triggers unsatisfied, max unc./thresh. is 22.792 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56628 --- greater than max batches\n", - " 115/1 0.68646 0.67834 +/- 0.00226\n", - " Triggers unsatisfied, max unc./thresh. is 22.6864 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56620 --- greater than max batches\n", - " 116/1 0.69601 0.67850 +/- 0.00224\n", - " Triggers unsatisfied, max unc./thresh. is 22.5007 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 56203 --- greater than max batches\n", - " 117/1 0.68761 0.67858 +/- 0.00222\n", - " Triggers unsatisfied, max unc./thresh. is 22.3093 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 55749 --- greater than max batches\n", - " 118/1 0.71356 0.67889 +/- 0.00223\n", - " Triggers unsatisfied, max unc./thresh. is 22.6651 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58054 --- greater than max batches\n", - " 119/1 0.69850 0.67906 +/- 0.00221\n", - " Triggers unsatisfied, max unc./thresh. is 22.4712 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57570 --- greater than max batches\n", - " 120/1 0.70957 0.67933 +/- 0.00221\n", - " Triggers unsatisfied, max unc./thresh. is 22.3266 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57331 --- greater than max batches\n", - " 121/1 0.69643 0.67947 +/- 0.00220\n", - " Triggers unsatisfied, max unc./thresh. is 22.6029 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59269 --- greater than max batches\n", - " 122/1 0.67717 0.67945 +/- 0.00218\n", - " Triggers unsatisfied, max unc./thresh. is 22.4667 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59062 --- greater than max batches\n", - " 123/1 0.68419 0.67949 +/- 0.00216\n", - " Triggers unsatisfied, max unc./thresh. is 22.3764 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59089 --- greater than max batches\n", - " 124/1 0.69221 0.67960 +/- 0.00214\n", - " Triggers unsatisfied, max unc./thresh. is 22.3341 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59364 --- greater than max batches\n", - " 125/1 0.73940 0.68010 +/- 0.00218\n", - " Triggers unsatisfied, max unc./thresh. is 22.1478 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58868 --- greater than max batches\n", - " 126/1 0.66908 0.68001 +/- 0.00217\n", - " Triggers unsatisfied, max unc./thresh. is 22.0085 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58615 --- greater than max batches\n" + " 84/1 0.68429 0.68607 +/- 0.00254\n", + " Triggers unsatisfied, max unc./thresh. is 27.713137470531738 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60679 --- greater than max batches\n", + " 85/1 0.65458 0.68567 +/- 0.00254\n", + " Triggers unsatisfied, max unc./thresh. is 27.364539968246927 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59911 --- greater than max batches\n", + " 86/1 0.69966 0.68585 +/- 0.00252\n", + " Triggers unsatisfied, max unc./thresh. is 27.178113974435043 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59836 --- greater than max batches\n", + " 87/1 0.64776 0.68538 +/- 0.00253\n", + " Triggers unsatisfied, max unc./thresh. is 26.941566345072534 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59525 --- greater than max batches\n", + " 88/1 0.62737 0.68468 +/- 0.00259\n", + " Triggers unsatisfied, max unc./thresh. is 26.73959660667411 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59351 --- greater than max batches\n", + " 89/1 0.69779 0.68484 +/- 0.00257\n", + " Triggers unsatisfied, max unc./thresh. is 26.490234865810894 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58951 --- greater than max batches\n", + " 90/1 0.67312 0.68470 +/- 0.00254\n", + " Triggers unsatisfied, max unc./thresh. is 26.24036001465229 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58533 --- greater than max batches\n", + " 91/1 0.69289 0.68480 +/- 0.00251\n", + " Triggers unsatisfied, max unc./thresh. is 25.936795778335345 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57859 --- greater than max batches\n", + " 92/1 0.69884 0.68496 +/- 0.00249\n", + " Triggers unsatisfied, max unc./thresh. is 25.695465963215582 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57448 --- greater than max batches\n", + " 93/1 0.71351 0.68528 +/- 0.00248\n", + " Triggers unsatisfied, max unc./thresh. is 25.49001212499821 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57183 --- greater than max batches\n", + " 94/1 0.65602 0.68495 +/- 0.00248\n", + " Triggers unsatisfied, max unc./thresh. is 25.350859463183905 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57203 --- greater than max batches\n", + " 95/1 0.72223 0.68537 +/- 0.00248\n", + " Triggers unsatisfied, max unc./thresh. is 25.157803279393637 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56968 --- greater than max batches\n", + " 96/1 0.67930 0.68530 +/- 0.00246\n", + " Triggers unsatisfied, max unc./thresh. is 24.92205849077747 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56526 --- greater than max batches\n", + " 97/1 0.66201 0.68505 +/- 0.00244\n", + " Triggers unsatisfied, max unc./thresh. is 24.653967027285237 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 55925 --- greater than max batches\n", + " 98/1 0.71110 0.68533 +/- 0.00243\n", + " Triggers unsatisfied, max unc./thresh. is 24.566957281211884 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56134 --- greater than max batches\n", + " 99/1 0.69409 0.68542 +/- 0.00241\n", + " Triggers unsatisfied, max unc./thresh. is 24.581943149247135 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56807 --- greater than max batches\n", + " 100/1 0.71197 0.68570 +/- 0.00240\n", + " Triggers unsatisfied, max unc./thresh. is 24.444112571967217 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56769 --- greater than max batches\n", + " 101/1 0.71713 0.68603 +/- 0.00240\n", + " Triggers unsatisfied, max unc./thresh. is 24.18957776896016 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56179 --- greater than max batches\n", + " 102/1 0.68143 0.68598 +/- 0.00237\n", + " Triggers unsatisfied, max unc./thresh. is 23.97797098066553 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 55775 --- greater than max batches\n", + " 103/1 0.69936 0.68612 +/- 0.00235\n", + " Triggers unsatisfied, max unc./thresh. is 24.253000406602812 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57650 --- greater than max batches\n", + " 104/1 0.65247 0.68578 +/- 0.00235\n", + " Triggers unsatisfied, max unc./thresh. is 24.593482483379837 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59885 --- greater than max batches\n", + " 105/1 0.66517 0.68557 +/- 0.00234\n", + " Triggers unsatisfied, max unc./thresh. is 24.37904760701804 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59439 --- greater than max batches\n", + " 106/1 0.67814 0.68550 +/- 0.00232\n", + " Triggers unsatisfied, max unc./thresh. is 24.142311084988883 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58873 --- greater than max batches\n", + " 107/1 0.67788 0.68542 +/- 0.00229\n", + " Triggers unsatisfied, max unc./thresh. is 23.935477435724106 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58442 --- greater than max batches\n", + " 108/1 0.68016 0.68537 +/- 0.00227\n", + " Triggers unsatisfied, max unc./thresh. is 24.532504688648594 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61995 --- greater than max batches\n", + " 109/1 0.66963 0.68522 +/- 0.00226\n", + " Triggers unsatisfied, max unc./thresh. is 24.354532539671386 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61692 --- greater than max batches\n", + " 110/1 0.67556 0.68513 +/- 0.00224\n", + " Triggers unsatisfied, max unc./thresh. is 24.16165322902175 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61303 --- greater than max batches\n", + " 111/1 0.68273 0.68511 +/- 0.00222\n", + " Triggers unsatisfied, max unc./thresh. is 24.00069508298176 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61065 --- greater than max batches\n", + " 112/1 0.69505 0.68520 +/- 0.00220\n", + " Triggers unsatisfied, max unc./thresh. is 23.791656279909404 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60572 --- greater than max batches\n", + " 113/1 0.69385 0.68528 +/- 0.00218\n", + " Triggers unsatisfied, max unc./thresh. is 23.667941020219764 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60504 --- greater than max batches\n", + " 114/1 0.65352 0.68499 +/- 0.00218\n", + " Triggers unsatisfied, max unc./thresh. is 23.469658485546123 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 60045 --- greater than max batches\n", + " 115/1 0.68339 0.68497 +/- 0.00216\n", + " Triggers unsatisfied, max unc./thresh. is 23.259123161328624 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59514 --- greater than max batches\n", + " 116/1 0.65854 0.68474 +/- 0.00215\n", + " Triggers unsatisfied, max unc./thresh. is 23.06250977653337 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59044 --- greater than max batches\n", + " 117/1 0.66907 0.68460 +/- 0.00214\n", + " Triggers unsatisfied, max unc./thresh. is 22.874382198219536 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58608 --- greater than max batches\n", + " 118/1 0.68165 0.68457 +/- 0.00212\n", + " Triggers unsatisfied, max unc./thresh. is 22.709602691165983 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58283 --- greater than max batches\n", + " 119/1 0.70967 0.68479 +/- 0.00211\n", + " Triggers unsatisfied, max unc./thresh. is 22.509869996658225 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57769 --- greater than max batches\n", + " 120/1 0.65543 0.68453 +/- 0.00211\n", + " Triggers unsatisfied, max unc./thresh. is 22.422104322874098 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57822 --- greater than max batches\n", + " 121/1 0.67305 0.68444 +/- 0.00209\n", + " Triggers unsatisfied, max unc./thresh. is 22.32834321567902 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57838 --- greater than max batches\n", + " 122/1 0.68206 0.68441 +/- 0.00207\n", + " Triggers unsatisfied, max unc./thresh. is 22.155196965032374 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57435 --- greater than max batches\n", + " 123/1 0.71125 0.68464 +/- 0.00207\n", + " Triggers unsatisfied, max unc./thresh. is 21.96683678913398 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56945 --- greater than max batches\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " 127/1 0.66041 0.67985 +/- 0.00216\n", - " Triggers unsatisfied, max unc./thresh. is 21.8274 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58131 --- greater than max batches\n", - " 128/1 0.69395 0.67996 +/- 0.00214\n", - " Triggers unsatisfied, max unc./thresh. is 21.6537 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57678 --- greater than max batches\n", - " 129/1 0.68665 0.68002 +/- 0.00212\n", - " Triggers unsatisfied, max unc./thresh. is 21.7739 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58794 --- greater than max batches\n", - " 130/1 0.64849 0.67976 +/- 0.00212\n", - " Triggers unsatisfied, max unc./thresh. is 21.7492 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59134 --- greater than max batches\n", - " 131/1 0.69734 0.67990 +/- 0.00211\n", - " Triggers unsatisfied, max unc./thresh. is 21.59 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58738 --- greater than max batches\n", - " 132/1 0.69482 0.68002 +/- 0.00210\n", - " Triggers unsatisfied, max unc./thresh. is 21.4249 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58302 --- greater than max batches\n", - " 133/1 0.68884 0.68009 +/- 0.00208\n", - " Triggers unsatisfied, max unc./thresh. is 21.2587 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57853 --- greater than max batches\n", - " 134/1 0.63042 0.67971 +/- 0.00210\n", - " Triggers unsatisfied, max unc./thresh. is 21.1851 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57902 --- greater than max batches\n", - " 135/1 0.69209 0.67980 +/- 0.00209\n", - " Triggers unsatisfied, max unc./thresh. is 21.0525 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57623 --- greater than max batches\n", - " 136/1 0.69873 0.67995 +/- 0.00208\n", - " Triggers unsatisfied, max unc./thresh. is 20.9996 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57774 --- greater than max batches\n", - " 137/1 0.70270 0.68012 +/- 0.00207\n", - " Triggers unsatisfied, max unc./thresh. is 20.8455 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 57364 --- greater than max batches\n", - " 138/1 0.67295 0.68006 +/- 0.00205\n", - " Triggers unsatisfied, max unc./thresh. is 21.3716 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60752 --- greater than max batches\n", - " 139/1 0.63853 0.67975 +/- 0.00206\n", - " Triggers unsatisfied, max unc./thresh. is 21.2124 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60301 --- greater than max batches\n", - " 140/1 0.66645 0.67966 +/- 0.00205\n", - " Triggers unsatisfied, max unc./thresh. is 21.1279 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60268 --- greater than max batches\n", - " 141/1 0.70730 0.67986 +/- 0.00204\n", - " Triggers unsatisfied, max unc./thresh. is 20.9845 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59893 --- greater than max batches\n", - " 142/1 0.68838 0.67992 +/- 0.00203\n", - " Triggers unsatisfied, max unc./thresh. is 20.8774 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59719 --- greater than max batches\n", - " 143/1 0.64900 0.67970 +/- 0.00203\n", - " Triggers unsatisfied, max unc./thresh. is 21.3772 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 63069 --- greater than max batches\n", - " 144/1 0.64490 0.67945 +/- 0.00203\n", - " Triggers unsatisfied, max unc./thresh. is 21.2531 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62791 --- greater than max batches\n", - " 145/1 0.69221 0.67954 +/- 0.00201\n", - " Triggers unsatisfied, max unc./thresh. is 21.2049 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62956 --- greater than max batches\n", - " 146/1 0.69481 0.67965 +/- 0.00200\n", - " Triggers unsatisfied, max unc./thresh. is 21.0645 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62569 --- greater than max batches\n", - " 147/1 0.70394 0.67982 +/- 0.00200\n", - " Triggers unsatisfied, max unc./thresh. is 20.9156 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62125 --- greater than max batches\n", - " 148/1 0.69482 0.67992 +/- 0.00198\n", - " Triggers unsatisfied, max unc./thresh. is 20.7699 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61694 --- greater than max batches\n", - " 149/1 0.63886 0.67964 +/- 0.00199\n", - " Triggers unsatisfied, max unc./thresh. is 20.6366 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61331 --- greater than max batches\n", - " 150/1 0.69377 0.67973 +/- 0.00198\n", - " Triggers unsatisfied, max unc./thresh. is 20.5819 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61430 --- greater than max batches\n", - " 151/1 0.71045 0.67994 +/- 0.00198\n", - " Triggers unsatisfied, max unc./thresh. is 20.5417 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61612 --- greater than max batches\n", - " 152/1 0.66093 0.67982 +/- 0.00197\n", - " Triggers unsatisfied, max unc./thresh. is 20.4124 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61256 --- greater than max batches\n", - " 153/1 0.68564 0.67985 +/- 0.00196\n", - " Triggers unsatisfied, max unc./thresh. is 20.3025 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61010 --- greater than max batches\n", - " 154/1 0.66961 0.67979 +/- 0.00194\n", - " Triggers unsatisfied, max unc./thresh. is 20.2239 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60948 --- greater than max batches\n", - " 155/1 0.67099 0.67973 +/- 0.00193\n", - " Triggers unsatisfied, max unc./thresh. is 20.0962 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60584 --- greater than max batches\n", - " 156/1 0.72742 0.68004 +/- 0.00194\n", - " Triggers unsatisfied, max unc./thresh. is 19.9753 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60256 --- greater than max batches\n", - " 157/1 0.66458 0.67994 +/- 0.00193\n", - " Triggers unsatisfied, max unc./thresh. is 19.8852 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60109 --- greater than max batches\n", - " 158/1 0.69052 0.68001 +/- 0.00192\n", - " Triggers unsatisfied, max unc./thresh. is 19.7963 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59965 --- greater than max batches\n", - " 159/1 0.70643 0.68018 +/- 0.00192\n", - " Triggers unsatisfied, max unc./thresh. is 19.6991 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59766 --- greater than max batches\n", - " 160/1 0.68576 0.68022 +/- 0.00191\n", - " Triggers unsatisfied, max unc./thresh. is 19.6197 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59670 --- greater than max batches\n", - " 161/1 0.69854 0.68034 +/- 0.00190\n", - " Triggers unsatisfied, max unc./thresh. is 19.8287 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61341 --- greater than max batches\n", - " 162/1 0.65983 0.68020 +/- 0.00189\n", - " Triggers unsatisfied, max unc./thresh. is 20.0243 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62958 --- greater than max batches\n", - " 163/1 0.66316 0.68010 +/- 0.00188\n", - " Triggers unsatisfied, max unc./thresh. is 19.8975 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62560 --- greater than max batches\n", - " 164/1 0.66179 0.67998 +/- 0.00187\n", - " Triggers unsatisfied, max unc./thresh. is 19.895 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62940 --- greater than max batches\n", - " 165/1 0.70881 0.68016 +/- 0.00187\n", - " Triggers unsatisfied, max unc./thresh. is 19.8013 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62740 --- greater than max batches\n", - " 166/1 0.70729 0.68033 +/- 0.00187\n", - " Triggers unsatisfied, max unc./thresh. is 19.6876 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62410 --- greater than max batches\n", - " 167/1 0.71073 0.68052 +/- 0.00186\n", - " Triggers unsatisfied, max unc./thresh. is 19.5695 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 62046 --- greater than max batches\n" + " 124/1 0.65918 0.68443 +/- 0.00206\n", + " Triggers unsatisfied, max unc./thresh. is 21.78216358933223 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56467 --- greater than max batches\n", + " 125/1 0.68122 0.68440 +/- 0.00205\n", + " Triggers unsatisfied, max unc./thresh. is 21.681928420505304 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56418 --- greater than max batches\n", + " 126/1 0.66900 0.68427 +/- 0.00203\n", + " Triggers unsatisfied, max unc./thresh. is 21.60631058168512 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56492 --- greater than max batches\n", + " 127/1 0.66742 0.68414 +/- 0.00202\n", + " Triggers unsatisfied, max unc./thresh. is 21.468291123480988 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56234 --- greater than max batches\n", + " 128/1 0.66971 0.68402 +/- 0.00201\n", + " Triggers unsatisfied, max unc./thresh. is 21.313238544974386 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 55879 --- greater than max batches\n", + " 129/1 0.68183 0.68400 +/- 0.00199\n", + " Triggers unsatisfied, max unc./thresh. is 21.314008888585132 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56337 --- greater than max batches\n", + " 130/1 0.68403 0.68400 +/- 0.00197\n", + " Triggers unsatisfied, max unc./thresh. is 21.159444482258046 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 55971 --- greater than max batches\n", + " 131/1 0.69137 0.68406 +/- 0.00196\n", + " Triggers unsatisfied, max unc./thresh. is 21.24931160989673 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56899 --- greater than max batches\n", + " 132/1 0.67481 0.68399 +/- 0.00195\n", + " Triggers unsatisfied, max unc./thresh. is 21.164512281281944 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56893 --- greater than max batches\n", + " 133/1 0.70390 0.68414 +/- 0.00194\n", + " Triggers unsatisfied, max unc./thresh. is 21.084176856795946 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 56907 --- greater than max batches\n", + " 134/1 0.67961 0.68411 +/- 0.00192\n", + " Triggers unsatisfied, max unc./thresh. is 21.48684646255342 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59563 --- greater than max batches\n", + " 135/1 0.65362 0.68387 +/- 0.00192\n", + " Triggers unsatisfied, max unc./thresh. is 21.41235779526348 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59609 --- greater than max batches\n", + " 136/1 0.63946 0.68353 +/- 0.00194\n", + " Triggers unsatisfied, max unc./thresh. is 21.30299014546295 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59456 --- greater than max batches\n", + " 137/1 0.64818 0.68327 +/- 0.00194\n", + " Triggers unsatisfied, max unc./thresh. is 21.159761745415484 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 59107 --- greater than max batches\n", + " 138/1 0.68975 0.68331 +/- 0.00193\n", + " Triggers unsatisfied, max unc./thresh. is 21.000094566393475 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58659 --- greater than max batches\n", + " 139/1 0.67280 0.68324 +/- 0.00191\n", + " Triggers unsatisfied, max unc./thresh. is 20.853656171297644 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 58279 --- greater than max batches\n", + " 140/1 0.66857 0.68313 +/- 0.00190\n", + " Triggers unsatisfied, max unc./thresh. is 20.709591767033707 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57905 --- greater than max batches\n", + " 141/1 0.68175 0.68312 +/- 0.00189\n", + " Triggers unsatisfied, max unc./thresh. is 20.560813068689416 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57499 --- greater than max batches\n", + " 142/1 0.72210 0.68340 +/- 0.00190\n", + " Triggers unsatisfied, max unc./thresh. is 20.54814917791921 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57851 --- greater than max batches\n", + " 143/1 0.67361 0.68333 +/- 0.00188\n", + " Triggers unsatisfied, max unc./thresh. is 20.4177880049802 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 57536 --- greater than max batches\n", + " 144/1 0.65862 0.68315 +/- 0.00188\n", + " Triggers unsatisfied, max unc./thresh. is 21.229890183572195 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62654 --- greater than max batches\n", + " 145/1 0.69713 0.68325 +/- 0.00187\n", + " Triggers unsatisfied, max unc./thresh. is 21.34513800240435 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63792 --- greater than max batches\n", + " 146/1 0.72980 0.68358 +/- 0.00188\n", + " Triggers unsatisfied, max unc./thresh. is 21.60165210412777 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65801 --- greater than max batches\n", + " 147/1 0.70004 0.68370 +/- 0.00187\n", + " Triggers unsatisfied, max unc./thresh. is 21.596734424310384 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66237 --- greater than max batches\n", + " 148/1 0.68882 0.68374 +/- 0.00186\n", + " Triggers unsatisfied, max unc./thresh. is 21.447240534346236 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65783 --- greater than max batches\n", + " 149/1 0.70401 0.68388 +/- 0.00185\n", + " Triggers unsatisfied, max unc./thresh. is 21.424993974056104 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66106 --- greater than max batches\n", + " 150/1 0.72110 0.68413 +/- 0.00186\n", + " Triggers unsatisfied, max unc./thresh. is 21.27792348945665 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65654 --- greater than max batches\n", + " 151/1 0.65918 0.68396 +/- 0.00185\n", + " Triggers unsatisfied, max unc./thresh. is 21.378637401006184 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66734 --- greater than max batches\n", + " 152/1 0.67751 0.68392 +/- 0.00184\n", + " Triggers unsatisfied, max unc./thresh. is 21.25974745003047 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66446 --- greater than max batches\n", + " 153/1 0.69302 0.68398 +/- 0.00183\n", + " Triggers unsatisfied, max unc./thresh. is 21.16055371271148 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 66275 --- greater than max batches\n", + " 154/1 0.67102 0.68389 +/- 0.00182\n", + " Triggers unsatisfied, max unc./thresh. is 21.0227808264386 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65857 --- greater than max batches\n", + " 155/1 0.64427 0.68363 +/- 0.00183\n", + " Triggers unsatisfied, max unc./thresh. is 20.882547322553506 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65418 --- greater than max batches\n", + " 156/1 0.68488 0.68364 +/- 0.00181\n", + " Triggers unsatisfied, max unc./thresh. is 20.797424126850476 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 65318 --- greater than max batches\n", + " 157/1 0.67337 0.68357 +/- 0.00180\n", + " Triggers unsatisfied, max unc./thresh. is 20.67015745584828 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64948 --- greater than max batches\n", + " 158/1 0.66662 0.68346 +/- 0.00180\n", + " Triggers unsatisfied, max unc./thresh. is 20.568519956722266 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64734 --- greater than max batches\n", + " 159/1 0.62697 0.68309 +/- 0.00182\n", + " Triggers unsatisfied, max unc./thresh. is 20.47085213159483 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64540 --- greater than max batches\n", + " 160/1 0.68300 0.68309 +/- 0.00181\n", + " Triggers unsatisfied, max unc./thresh. is 20.34586209866351 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64168 --- greater than max batches\n", + " 161/1 0.68918 0.68313 +/- 0.00180\n", + " Triggers unsatisfied, max unc./thresh. is 20.23505377614212 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63881 --- greater than max batches\n", + " 162/1 0.70939 0.68330 +/- 0.00179\n", + " Triggers unsatisfied, max unc./thresh. is 20.21114215977674 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64138 --- greater than max batches\n", + " 163/1 0.69681 0.68338 +/- 0.00179\n", + " Triggers unsatisfied, max unc./thresh. is 20.163170350438893 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64241 --- greater than max batches\n", + " 164/1 0.66454 0.68326 +/- 0.00178\n", + " Triggers unsatisfied, max unc./thresh. is 20.109882525638955 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64306 --- greater than max batches\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " 168/1 0.69610 0.68061 +/- 0.00185\n", - " Triggers unsatisfied, max unc./thresh. is 19.4797 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61857 --- greater than max batches\n", - " 169/1 0.67141 0.68056 +/- 0.00184\n", - " Triggers unsatisfied, max unc./thresh. is 19.438 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61970 --- greater than max batches\n", - " 170/1 0.67727 0.68054 +/- 0.00183\n", - " Triggers unsatisfied, max unc./thresh. is 19.3208 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61599 --- greater than max batches\n", - " 171/1 0.64150 0.68030 +/- 0.00184\n", - " Triggers unsatisfied, max unc./thresh. is 19.2066 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61242 --- greater than max batches\n", - " 172/1 0.68758 0.68035 +/- 0.00183\n", - " Triggers unsatisfied, max unc./thresh. is 19.114 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61018 --- greater than max batches\n", - " 173/1 0.67126 0.68029 +/- 0.00182\n", - " Triggers unsatisfied, max unc./thresh. is 19.1545 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61644 --- greater than max batches\n", - " 174/1 0.65933 0.68017 +/- 0.00181\n", - " Triggers unsatisfied, max unc./thresh. is 19.0415 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 61281 --- greater than max batches\n", - " 175/1 0.70572 0.68032 +/- 0.00181\n", - " Triggers unsatisfied, max unc./thresh. is 18.9347 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60954 --- greater than max batches\n", - " 176/1 0.66175 0.68021 +/- 0.00180\n", - " Triggers unsatisfied, max unc./thresh. is 18.8337 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60660 --- greater than max batches\n", - " 177/1 0.68714 0.68025 +/- 0.00179\n", - " Triggers unsatisfied, max unc./thresh. is 18.7329 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60364 --- greater than max batches\n", - " 178/1 0.70181 0.68037 +/- 0.00178\n", - " Triggers unsatisfied, max unc./thresh. is 18.6297 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 60048 --- greater than max batches\n", - " 179/1 0.66700 0.68030 +/- 0.00177\n", - " Triggers unsatisfied, max unc./thresh. is 18.5239 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59711 --- greater than max batches\n", - " 180/1 0.68980 0.68035 +/- 0.00176\n", - " Triggers unsatisfied, max unc./thresh. is 18.4186 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59374 --- greater than max batches\n", - " 181/1 0.69586 0.68044 +/- 0.00176\n", - " Triggers unsatisfied, max unc./thresh. is 18.3816 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59473 --- greater than max batches\n", - " 182/1 0.68689 0.68048 +/- 0.00175\n", - " Triggers unsatisfied, max unc./thresh. is 18.2781 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59139 --- greater than max batches\n", - " 183/1 0.69257 0.68054 +/- 0.00174\n", - " Triggers unsatisfied, max unc./thresh. is 18.1773 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58819 --- greater than max batches\n", - " 184/1 0.69926 0.68065 +/- 0.00173\n", - " Triggers unsatisfied, max unc./thresh. is 18.2191 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59422 --- greater than max batches\n", - " 185/1 0.67801 0.68063 +/- 0.00172\n", - " Triggers unsatisfied, max unc./thresh. is 18.1184 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59096 --- greater than max batches\n", - " 186/1 0.67049 0.68058 +/- 0.00171\n", - " Triggers unsatisfied, max unc./thresh. is 18.0484 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58965 --- greater than max batches\n", - " 187/1 0.68164 0.68058 +/- 0.00170\n", - " Triggers unsatisfied, max unc./thresh. is 17.9808 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58848 --- greater than max batches\n", - " 188/1 0.66856 0.68052 +/- 0.00170\n", - " Triggers unsatisfied, max unc./thresh. is 17.9146 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58736 --- greater than max batches\n", - " 189/1 0.71850 0.68073 +/- 0.00170\n", - " Triggers unsatisfied, max unc./thresh. is 17.8551 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58665 --- greater than max batches\n", - " 190/1 0.67095 0.68067 +/- 0.00169\n", - " Triggers unsatisfied, max unc./thresh. is 17.8953 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59250 --- greater than max batches\n", - " 191/1 0.70857 0.68082 +/- 0.00169\n", - " Triggers unsatisfied, max unc./thresh. is 17.8197 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59068 --- greater than max batches\n", - " 192/1 0.65322 0.68067 +/- 0.00169\n", - " Triggers unsatisfied, max unc./thresh. is 17.8199 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59387 --- greater than max batches\n", - " 193/1 0.67888 0.68066 +/- 0.00168\n", - " Triggers unsatisfied, max unc./thresh. is 17.8072 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59620 --- greater than max batches\n", - " 194/1 0.72890 0.68092 +/- 0.00169\n", - " Triggers unsatisfied, max unc./thresh. is 17.7152 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59319 --- greater than max batches\n", - " 195/1 0.64688 0.68074 +/- 0.00169\n", - " Triggers unsatisfied, max unc./thresh. is 17.6252 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59029 --- greater than max batches\n", - " 196/1 0.68906 0.68078 +/- 0.00168\n", - " Triggers unsatisfied, max unc./thresh. is 17.5465 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58810 --- greater than max batches\n", - " 197/1 0.69381 0.68085 +/- 0.00167\n", - " Triggers unsatisfied, max unc./thresh. is 17.4939 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58764 --- greater than max batches\n", - " 198/1 0.70057 0.68095 +/- 0.00167\n", - " Triggers unsatisfied, max unc./thresh. is 17.4414 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58717 --- greater than max batches\n", - " 199/1 0.67868 0.68094 +/- 0.00166\n", - " Triggers unsatisfied, max unc./thresh. is 17.4394 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 59008 --- greater than max batches\n", - " 200/1 0.69190 0.68100 +/- 0.00165\n", - " Triggers unsatisfied, max unc./thresh. is 17.3511 for absorption in tally 3\n", - " WARNING: The estimated number of batches is 58712 --- greater than max batches\n", + " 165/1 0.68804 0.68329 +/- 0.00177\n", + " Triggers unsatisfied, max unc./thresh. is 20.033653897136055 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 64221 --- greater than max batches\n", + " 166/1 0.66078 0.68315 +/- 0.00176\n", + " Triggers unsatisfied, max unc./thresh. is 19.916131324861123 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63867 --- greater than max batches\n", + " 167/1 0.65762 0.68300 +/- 0.00176\n", + " Triggers unsatisfied, max unc./thresh. is 19.85097950868946 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63843 --- greater than max batches\n", + " 168/1 0.69267 0.68306 +/- 0.00175\n", + " Triggers unsatisfied, max unc./thresh. is 19.729436003984436 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63453 --- greater than max batches\n", + " 169/1 0.67859 0.68303 +/- 0.00174\n", + " Triggers unsatisfied, max unc./thresh. is 19.61178427698242 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63084 --- greater than max batches\n", + " 170/1 0.66545 0.68292 +/- 0.00173\n", + " Triggers unsatisfied, max unc./thresh. is 19.495197332905757 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62716 --- greater than max batches\n", + " 171/1 0.66716 0.68283 +/- 0.00172\n", + " Triggers unsatisfied, max unc./thresh. is 19.47044861415963 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62936 --- greater than max batches\n", + " 172/1 0.70008 0.68293 +/- 0.00172\n", + " Triggers unsatisfied, max unc./thresh. is 19.382801191970024 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62746 --- greater than max batches\n", + " 173/1 0.69417 0.68300 +/- 0.00171\n", + " Triggers unsatisfied, max unc./thresh. is 19.270038663528165 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62390 --- greater than max batches\n", + " 174/1 0.66458 0.68289 +/- 0.00170\n", + " Triggers unsatisfied, max unc./thresh. is 19.281533726364312 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62836 --- greater than max batches\n", + " 175/1 0.65867 0.68275 +/- 0.00170\n", + " Triggers unsatisfied, max unc./thresh. is 19.234847030404104 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62902 --- greater than max batches\n", + " 176/1 0.69631 0.68283 +/- 0.00169\n", + " Triggers unsatisfied, max unc./thresh. is 19.13381099709457 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62609 --- greater than max batches\n", + " 177/1 0.71142 0.68299 +/- 0.00169\n", + " Triggers unsatisfied, max unc./thresh. is 19.022563643493143 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62245 --- greater than max batches\n", + " 178/1 0.68640 0.68301 +/- 0.00168\n", + " Triggers unsatisfied, max unc./thresh. is 19.03176453708651 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62667 --- greater than max batches\n", + " 179/1 0.70448 0.68313 +/- 0.00167\n", + " Triggers unsatisfied, max unc./thresh. is 19.088395456136563 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63405 --- greater than max batches\n", + " 180/1 0.70538 0.68326 +/- 0.00167\n", + " Triggers unsatisfied, max unc./thresh. is 18.98864751831452 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63105 --- greater than max batches\n", + " 181/1 0.65591 0.68311 +/- 0.00166\n", + " Triggers unsatisfied, max unc./thresh. is 18.911017891051518 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62948 --- greater than max batches\n", + " 182/1 0.72818 0.68336 +/- 0.00167\n", + " Triggers unsatisfied, max unc./thresh. is 18.808510226366458 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62621 --- greater than max batches\n", + " 183/1 0.67896 0.68334 +/- 0.00167\n", + " Triggers unsatisfied, max unc./thresh. is 18.825142861337717 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63086 --- greater than max batches\n", + " 184/1 0.65442 0.68317 +/- 0.00166\n", + " Triggers unsatisfied, max unc./thresh. is 18.79514029258707 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63239 --- greater than max batches\n", + " 185/1 0.68885 0.68321 +/- 0.00165\n", + " Triggers unsatisfied, max unc./thresh. is 18.76276176864163 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63373 --- greater than max batches\n", + " 186/1 0.68893 0.68324 +/- 0.00165\n", + " Triggers unsatisfied, max unc./thresh. is 18.690155368597363 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63233 --- greater than max batches\n", + " 187/1 0.68918 0.68327 +/- 0.00164\n", + " Triggers unsatisfied, max unc./thresh. is 18.590144288270153 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62904 --- greater than max batches\n", + " 188/1 0.69854 0.68335 +/- 0.00163\n", + " Triggers unsatisfied, max unc./thresh. is 18.61460656150607 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63416 --- greater than max batches\n", + " 189/1 0.66324 0.68324 +/- 0.00162\n", + " Triggers unsatisfied, max unc./thresh. is 18.518608099237504 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 63106 --- greater than max batches\n", + " 190/1 0.69450 0.68331 +/- 0.00162\n", + " Triggers unsatisfied, max unc./thresh. is 18.425351661292233 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62812 --- greater than max batches\n", + " 191/1 0.68953 0.68334 +/- 0.00161\n", + " Triggers unsatisfied, max unc./thresh. is 18.328779429843646 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62491 --- greater than max batches\n", + " 192/1 0.66621 0.68325 +/- 0.00160\n", + " Triggers unsatisfied, max unc./thresh. is 18.28094973389564 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62500 --- greater than max batches\n", + " 193/1 0.71102 0.68339 +/- 0.00160\n", + " Triggers unsatisfied, max unc./thresh. is 18.19949730061142 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62275 --- greater than max batches\n", + " 194/1 0.65341 0.68324 +/- 0.00160\n", + " Triggers unsatisfied, max unc./thresh. is 18.159054737369345 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62328 --- greater than max batches\n", + " 195/1 0.70061 0.68333 +/- 0.00159\n", + " Triggers unsatisfied, max unc./thresh. is 18.082465954324594 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62131 --- greater than max batches\n", + " 196/1 0.69339 0.68338 +/- 0.00159\n", + " Triggers unsatisfied, max unc./thresh. is 18.043133483791827 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62186 --- greater than max batches\n", + " 197/1 0.64411 0.68318 +/- 0.00159\n", + " Triggers unsatisfied, max unc./thresh. is 18.019303623546417 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62347 --- greater than max batches\n", + " 198/1 0.66626 0.68309 +/- 0.00159\n", + " Triggers unsatisfied, max unc./thresh. is 17.968092739058083 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62316 --- greater than max batches\n", + " 199/1 0.67839 0.68306 +/- 0.00158\n", + " Triggers unsatisfied, max unc./thresh. is 17.91968515142146 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 62302 --- greater than max batches\n", + " 200/1 0.66459 0.68297 +/- 0.00157\n", + " Triggers unsatisfied, max unc./thresh. is 17.82970764669685 for absorption in\n", + " tally 3\n", + " WARNING: The estimated number of batches is 61996 --- greater than max batches\n", " Creating state point statepoint.200.h5...\n", "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 9.3777e-01 seconds\n", - " Reading cross sections = 8.7757e-01 seconds\n", - " Total time in simulation = 4.0652e+01 seconds\n", - " Time in transport only = 3.9022e+01 seconds\n", - " Time in inactive batches = 9.1120e-01 seconds\n", - " Time in active batches = 3.9741e+01 seconds\n", - " Time synchronizing fission bank = 4.0496e-02 seconds\n", - " Sampling source sites = 3.3700e-02 seconds\n", - " SEND/RECV source sites = 6.4404e-03 seconds\n", - " Time accumulating tallies = 2.0272e-03 seconds\n", - " Total time for finalization = 4.0896e-03 seconds\n", - " Total time elapsed = 4.1621e+01 seconds\n", - " Calculation Rate (inactive) = 13718.1 particles/second\n", - " Calculation Rate (active) = 12267.1 particles/second\n", + " Total time for initialization = 2.9309e-01 seconds\n", + " Reading cross sections = 2.8108e-01 seconds\n", + " Total time in simulation = 1.1321e+01 seconds\n", + " Time in transport only = 1.1242e+01 seconds\n", + " Time in inactive batches = 1.6721e-01 seconds\n", + " Time in active batches = 1.1153e+01 seconds\n", + " Time synchronizing fission bank = 2.2958e-02 seconds\n", + " Sampling source sites = 1.8701e-02 seconds\n", + " SEND/RECV source sites = 3.9403e-03 seconds\n", + " Time accumulating tallies = 9.9349e-04 seconds\n", + " Total time for finalization = 5.2200e-07 seconds\n", + " Total time elapsed = 1.1620e+01 seconds\n", + " Calculation Rate (inactive) = 74758.2 particles/second\n", + " Calculation Rate (active) = 43708.5 particles/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 0.68122 +/- 0.00150\n", - " k-effective (Track-length) = 0.68100 +/- 0.00165\n", - " k-effective (Absorption) = 0.68224 +/- 0.00159\n", - " Combined k-effective = 0.68162 +/- 0.00134\n", - " Leakage Fraction = 0.34047 +/- 0.00082\n", + " k-effective (Collision) = 0.68198 +/- 0.00141\n", + " k-effective (Track-length) = 0.68297 +/- 0.00157\n", + " k-effective (Absorption) = 0.68161 +/- 0.00145\n", + " Combined k-effective = 0.68209 +/- 0.00118\n", + " Leakage Fraction = 0.34033 +/- 0.00074\n", "\n" ] } @@ -1128,10 +1310,9 @@ "\tID =\t1\n", "\tName =\tmesh tally\n", "\tFilters =\tMeshFilter, EnergyFilter\n", - "\tNuclides =\ttotal \n", + "\tNuclides =\ttotal\n", "\tScores =\t['fission', 'nu-fission']\n", - "\tEstimator =\ttracklength\n", - "\n" + "\tEstimator =\ttracklength\n" ] } ], @@ -1159,13 +1340,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[0.16617932]]\n", + "[[[0.04508259]]\n", "\n", - " [[0.06455926]]\n", + " [[0.0221707 ]]\n", "\n", - " [[0.32266365]]\n", + " [[0.10763375]]\n", "\n", - " [[0.13355528]]]\n" + " [[0.05107401]]]\n" ] } ], @@ -1233,8 +1414,8 @@ " 0.00e+00\n", " 6.25e-01\n", " fission\n", - " 1.76e-04\n", - " 2.92e-05\n", + " 2.27e-04\n", + " 1.02e-05\n", " \n", " \n", " 1\n", @@ -1244,8 +1425,8 @@ " 0.00e+00\n", " 6.25e-01\n", " nu-fission\n", - " 4.28e-04\n", - " 7.12e-05\n", + " 5.54e-04\n", + " 2.50e-05\n", " \n", " \n", " 2\n", @@ -1255,8 +1436,8 @@ " 6.25e-01\n", " 2.00e+07\n", " fission\n", - " 6.67e-05\n", - " 6.94e-06\n", + " 7.19e-05\n", + " 1.82e-06\n", " \n", " \n", " 3\n", @@ -1266,8 +1447,8 @@ " 6.25e-01\n", " 2.00e+07\n", " nu-fission\n", - " 1.75e-04\n", - " 1.71e-05\n", + " 1.89e-04\n", + " 4.69e-06\n", " \n", " \n", " 4\n", @@ -1277,8 +1458,8 @@ " 0.00e+00\n", " 6.25e-01\n", " fission\n", - " 2.04e-04\n", - " 3.80e-05\n", + " 2.35e-04\n", + " 9.82e-06\n", " \n", " \n", " 5\n", @@ -1288,8 +1469,8 @@ " 0.00e+00\n", " 6.25e-01\n", " nu-fission\n", - " 4.96e-04\n", - " 9.27e-05\n", + " 5.71e-04\n", + " 2.39e-05\n", " \n", " \n", " 6\n", @@ -1299,8 +1480,8 @@ " 6.25e-01\n", " 2.00e+07\n", " fission\n", - " 5.76e-05\n", - " 6.97e-06\n", + " 6.88e-05\n", + " 1.61e-06\n", " \n", " \n", " 7\n", @@ -1310,8 +1491,8 @@ " 6.25e-01\n", " 2.00e+07\n", " nu-fission\n", - " 1.52e-04\n", - " 1.91e-05\n", + " 1.81e-04\n", + " 4.15e-06\n", " \n", " \n", " 8\n", @@ -1321,8 +1502,8 @@ " 0.00e+00\n", " 6.25e-01\n", " fission\n", - " 1.80e-04\n", - " 3.15e-05\n", + " 2.31e-04\n", + " 1.13e-05\n", " \n", " \n", " 9\n", @@ -1332,8 +1513,8 @@ " 0.00e+00\n", " 6.25e-01\n", " nu-fission\n", - " 4.38e-04\n", - " 7.68e-05\n", + " 5.63e-04\n", + " 2.76e-05\n", " \n", " \n", " 10\n", @@ -1343,8 +1524,8 @@ " 6.25e-01\n", " 2.00e+07\n", " fission\n", - " 7.19e-05\n", - " 9.68e-06\n", + " 6.95e-05\n", + " 1.76e-06\n", " \n", " \n", " 11\n", @@ -1354,8 +1535,8 @@ " 6.25e-01\n", " 2.00e+07\n", " nu-fission\n", - " 1.89e-04\n", - " 2.49e-05\n", + " 1.83e-04\n", + " 4.53e-06\n", " \n", " \n", " 12\n", @@ -1365,8 +1546,8 @@ " 0.00e+00\n", " 6.25e-01\n", " fission\n", - " 1.91e-04\n", - " 3.67e-05\n", + " 2.07e-04\n", + " 9.85e-06\n", " \n", " \n", " 13\n", @@ -1376,8 +1557,8 @@ " 0.00e+00\n", " 6.25e-01\n", " nu-fission\n", - " 4.66e-04\n", - " 8.93e-05\n", + " 5.04e-04\n", + " 2.40e-05\n", " \n", " \n", " 14\n", @@ -1387,8 +1568,8 @@ " 6.25e-01\n", " 2.00e+07\n", " fission\n", - " 6.78e-05\n", - " 9.81e-06\n", + " 6.48e-05\n", + " 1.45e-06\n", " \n", " \n", " 15\n", @@ -1398,8 +1579,8 @@ " 6.25e-01\n", " 2.00e+07\n", " nu-fission\n", - " 1.76e-04\n", - " 2.44e-05\n", + " 1.71e-04\n", + " 3.81e-06\n", " \n", " \n", " 16\n", @@ -1409,8 +1590,8 @@ " 0.00e+00\n", " 6.25e-01\n", " fission\n", - " 1.56e-04\n", - " 2.32e-05\n", + " 2.20e-04\n", + " 1.07e-05\n", " \n", " \n", " 17\n", @@ -1420,8 +1601,8 @@ " 0.00e+00\n", " 6.25e-01\n", " nu-fission\n", - " 3.81e-04\n", - " 5.65e-05\n", + " 5.37e-04\n", + " 2.60e-05\n", " \n", " \n", " 18\n", @@ -1431,8 +1612,8 @@ " 6.25e-01\n", " 2.00e+07\n", " fission\n", - " 6.28e-05\n", - " 8.06e-06\n", + " 6.76e-05\n", + " 1.78e-06\n", " \n", " \n", " 19\n", @@ -1442,8 +1623,8 @@ " 6.25e-01\n", " 2.00e+07\n", " nu-fission\n", - " 1.62e-04\n", - " 2.05e-05\n", + " 1.78e-04\n", + " 4.63e-06\n", " \n", " \n", "\n", @@ -1452,49 +1633,49 @@ "text/plain": [ " mesh 1 energy low [eV] energy high [eV] score mean \\\n", " x y z \n", - "0 1 1 1 0.00e+00 6.25e-01 fission 1.76e-04 \n", - "1 1 1 1 0.00e+00 6.25e-01 nu-fission 4.28e-04 \n", - "2 1 1 1 6.25e-01 2.00e+07 fission 6.67e-05 \n", - "3 1 1 1 6.25e-01 2.00e+07 nu-fission 1.75e-04 \n", - "4 2 1 1 0.00e+00 6.25e-01 fission 2.04e-04 \n", - "5 2 1 1 0.00e+00 6.25e-01 nu-fission 4.96e-04 \n", - "6 2 1 1 6.25e-01 2.00e+07 fission 5.76e-05 \n", - "7 2 1 1 6.25e-01 2.00e+07 nu-fission 1.52e-04 \n", - "8 3 1 1 0.00e+00 6.25e-01 fission 1.80e-04 \n", - "9 3 1 1 0.00e+00 6.25e-01 nu-fission 4.38e-04 \n", - "10 3 1 1 6.25e-01 2.00e+07 fission 7.19e-05 \n", - "11 3 1 1 6.25e-01 2.00e+07 nu-fission 1.89e-04 \n", - "12 4 1 1 0.00e+00 6.25e-01 fission 1.91e-04 \n", - "13 4 1 1 0.00e+00 6.25e-01 nu-fission 4.66e-04 \n", - "14 4 1 1 6.25e-01 2.00e+07 fission 6.78e-05 \n", - "15 4 1 1 6.25e-01 2.00e+07 nu-fission 1.76e-04 \n", - "16 5 1 1 0.00e+00 6.25e-01 fission 1.56e-04 \n", - "17 5 1 1 0.00e+00 6.25e-01 nu-fission 3.81e-04 \n", - "18 5 1 1 6.25e-01 2.00e+07 fission 6.28e-05 \n", - "19 5 1 1 6.25e-01 2.00e+07 nu-fission 1.62e-04 \n", + "0 1 1 1 0.00e+00 6.25e-01 fission 2.27e-04 \n", + "1 1 1 1 0.00e+00 6.25e-01 nu-fission 5.54e-04 \n", + "2 1 1 1 6.25e-01 2.00e+07 fission 7.19e-05 \n", + "3 1 1 1 6.25e-01 2.00e+07 nu-fission 1.89e-04 \n", + "4 2 1 1 0.00e+00 6.25e-01 fission 2.35e-04 \n", + "5 2 1 1 0.00e+00 6.25e-01 nu-fission 5.71e-04 \n", + "6 2 1 1 6.25e-01 2.00e+07 fission 6.88e-05 \n", + "7 2 1 1 6.25e-01 2.00e+07 nu-fission 1.81e-04 \n", + "8 3 1 1 0.00e+00 6.25e-01 fission 2.31e-04 \n", + "9 3 1 1 0.00e+00 6.25e-01 nu-fission 5.63e-04 \n", + "10 3 1 1 6.25e-01 2.00e+07 fission 6.95e-05 \n", + "11 3 1 1 6.25e-01 2.00e+07 nu-fission 1.83e-04 \n", + "12 4 1 1 0.00e+00 6.25e-01 fission 2.07e-04 \n", + "13 4 1 1 0.00e+00 6.25e-01 nu-fission 5.04e-04 \n", + "14 4 1 1 6.25e-01 2.00e+07 fission 6.48e-05 \n", + "15 4 1 1 6.25e-01 2.00e+07 nu-fission 1.71e-04 \n", + "16 5 1 1 0.00e+00 6.25e-01 fission 2.20e-04 \n", + "17 5 1 1 0.00e+00 6.25e-01 nu-fission 5.37e-04 \n", + "18 5 1 1 6.25e-01 2.00e+07 fission 6.76e-05 \n", + "19 5 1 1 6.25e-01 2.00e+07 nu-fission 1.78e-04 \n", "\n", " std. dev. \n", " \n", - "0 2.92e-05 \n", - "1 7.12e-05 \n", - "2 6.94e-06 \n", - "3 1.71e-05 \n", - "4 3.80e-05 \n", - "5 9.27e-05 \n", - "6 6.97e-06 \n", - "7 1.91e-05 \n", - "8 3.15e-05 \n", - "9 7.68e-05 \n", - "10 9.68e-06 \n", - "11 2.49e-05 \n", - "12 3.67e-05 \n", - "13 8.93e-05 \n", - "14 9.81e-06 \n", - "15 2.44e-05 \n", - "16 2.32e-05 \n", - "17 5.65e-05 \n", - "18 8.06e-06 \n", - "19 2.05e-05 " + "0 1.02e-05 \n", + "1 2.50e-05 \n", + "2 1.82e-06 \n", + "3 4.69e-06 \n", + "4 9.82e-06 \n", + "5 2.39e-05 \n", + "6 1.61e-06 \n", + "7 4.15e-06 \n", + "8 1.13e-05 \n", + "9 2.76e-05 \n", + "10 1.76e-06 \n", + "11 4.53e-06 \n", + "12 9.85e-06 \n", + "13 2.40e-05 \n", + "14 1.45e-06 \n", + "15 3.81e-06 \n", + "16 1.07e-05 \n", + "17 2.60e-05 \n", + "18 1.78e-06 \n", + "19 4.63e-06 " ] }, "execution_count": 20, @@ -1520,7 +1701,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1545,7 +1726,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -1554,7 +1735,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAU4AAAEWCAYAAAAJjn7zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X+YXVV97/H3Z2Yy+UVICEEMASVC4Bq0gsZIrfUqVInUGnsv1NBqseU+qS202voLbC9SHlPFtnLbivZJhYqIBi7qNbVpEYFWbWsg0IAEjIwBJDEJ5CchZCaZme/9Y6+hh5NzJmdN9pkzJ/N55dlP9tl7rb3WOWfmO2vvtfdaigjMzKxxHa2ugJlZu3HgNDPL5MBpZpbJgdPMLJMDp5lZJgdOM7NMDpxHIEmnS1oraY+kP5D0t5L+92Ec72OSvlBmHc3amXwf55FH0vXAMxHxh62uS9kkPQ78r4j4TqvrYuOXW5xHppcC61pdiVySulpdB7NGOHAeYSTdBbwZ+KykZyWdJumLkj6R9s+S9C1JuyTtkPQ9SR1p30clbUqn+OslnZu2XyXpyxVlvEPSunSMf5H08op9j0v6kKQHJe2WdIukSXXq+l5J/ybpWknbgasknSLpLknbJW2TdLOkGSn9TcBLgH9I7+0jafvZkv491ecBSW9qxmdrNsSB8wgTEecA3wMui4ijIuLHVUk+CGwEjgOOBz4GhKTTgcuA10bENOA84PHq40s6Dfgq8IF0jFUUgay7ItmvAYuAucDPAe8dpsqvAzakuiwDBHwSOAF4OXAScFV6b+8Bfgr8Snpvn5Y0B/hH4BPATOBDwNckHTfc52R2OBw4x58DwGzgpRFxICK+F8WF7gFgIjBf0oSIeDwiflIj/7uAf4yIOyLiAPAXwGTg9RVp/joifhYRO4B/AM4cpj4/i4i/iYj+iNgXET3p2H0R8TTwGeC/D5P/3cCqiFgVEYMRcQewBji/sY/DLJ8D5/jz50AP8G1JGyRdDhARPRStyKuApyStkHRCjfwnAE8MvYiIQeBJYE5Fmi0V688BRw1TnycrX0g6PpW9SdIzwJeBWcPkfylwYTpN3yVpF/AGij8OZk3hwDnORMSeiPhgRLwMeAfwR0PXMiPiKxHxBopgFMA1NQ7xs7QfAEmiOJ3eNNIqVb3+s7TtlRFxNEWLUsOkfxK4KSJmVCxTI+JTI6yP2SE5cI4zkt4u6dQU8HZTnKIPpns/z5E0EegF9gGDNQ5xK/DLks6VNIHimmkf8O8lVXEa8CywO12//HDV/q3Ayypefxn4FUnnSeqUNEnSmySdWFJ9zA7iwDn+zAO+QxGc/gP4XETcTXF981PANopT7RcBV1Rnjoj1FK3Av0lpf4Wis2Z/SfX7U+DVFEH9H4GvV+3/JPAn6bT8QxHxJLCYopPraYoW6Ifxz7Y1kW+ANzPL5L/KZmaZHDjNzDI5cJqZZXLgNDPL1BaDKnR3To7JXdPzMkmHTlMtt6NsBEVklwEwOII8I3n/o5Enat3hdKg8+VkYGMjP0zGCdkRmOSPrih1Brswsvexlf/SN5Cf6eee9eWps39HY53Hfg323R8SiwymvldoicE7ums7rT3x3Vp6YkP/WdKA/r4zO/F809R3IzhO9ffnlTOw+dKJqXZ3ZWaJ7QlZ67ct/LwzmB9vBZ/Zk59GUydl5YvczeelH8odzBH8Eoj/vZ3l13JldRrXtOwa45/aXNJS2c/ajwz0NNua1ReA0s7EvgMGaz0wceRw4zawUQXAgRnCJpA21pHNI0qI03mPP0CATZtb+Bhv81+5GvcUpqRO4DngLxbiQ90paGREPj3ZdzKw8QTAwTp5EbEWLcyHQExEb0vPNKyieNTazNjdINLS0u1Zc45zDC8dg3EgxCvgLSFoKLAWY1DVtdGpmZiNWjIbd/kGxEWO2cygilgPLAaZPfPH4+DbM2tyR0JpsRCsC5yaKgW+HnMjIB8E1szEigAPj5BpnKwLnvcA8SXMpAuYS4NdbUA8zK1EQPlVvlojol3QZcDvQCdwQEW03B7iZVQkYGB9xszXXOCNiFcW0smZ2hCieHBofxmznUKXo7mT/S2Zm5RnsGsGdVpl/LfdPz//4Jj+V/6x257P5efqn5D+rroH8H3sdyMwzfUp+GSN4vp9jj87P05///jsmTcxKP5JxB2LPs9l5suU92l6HGBjRyDftpy0Cp5mNfUXnkAOnmVnDivs4HTjNzLIMusVpZtY4tzjNzDIFYmCczMbjwGlmpfGpuplZhkDsj/zpV9qRA6eZlaK4Ad6n6mZmWcZL59D4+PNgZk0XIQaio6GlEYeaYkfSREm3pP2rJZ1cse+KtH29pPPStkmS7pH0gKR1kv60Iv0XJT0maW1azhyubm5xmllpBktqcTY4xc4lwM6IOFXSEuAa4F2S5lOMunYGcALwHUmnAX3AORHxrKQJwPcl/VNE/CAd78MRcVsj9XOL08xKUXQOdTW0NKCRKXYWAzem9duAcyUpbV8REX0R8RjQAyyMwtCD/xPSMqLxnNqixTk4oYO9L84bTOHAlPy/fB2ZM5uO5M6LvqMnZ+eZsG9SfkEjGFB2wt78QS4OTM372ztxZ/5oEoPd+e+/e3f+wCAjGeSkMzdP94TsMtSXPzAIg3n1Uv/htxQzO4dmSVpT8Xp5mvVhSCNT7DyfJg1XuRs4Nm3/QVXeOfB8S/Y+4FTguohYXZFumaQrgTuByyOi7gffFoHTzNrDQOOtiW0RsaCZdaklIgaAMyXNAL4h6RUR8RBwBbAF6KaYsuejwNX1juNTdTMrxdCTQ40sDWhkip3n00jqAqYD2xvJGxG7gLuBRen15nQq3wf8PcWlgrpGPXBKOknS3ZIeTj1b7x/tOphZcwxGR0NLA56fYkdSN0Vnz8qqNCuBi9P6BcBdERFp+5LU6z4XmAfcI+m41NJE0mSKjqcfpdez0/8C3gk8NFzlWnGq3g98MCLulzQNuE/SHVW9ZWbWZopBPsppi9WbYkfS1cCaiFgJXA/cJKkH2EERXEnpbgUepog3l0bEQAqON6brnB3ArRHxrVTkzZKOAwSsBd43XP1aMefQZmBzWt8j6RGKC7cOnGZtLBAHSnzkstYUOxFxZcV6L3BhnbzLgGVV2x4EzqqT/pycurW0cyjdsHoWsLrGvqXAUoDuKceMar3MLF8EDd/c3u5a9i4lHQV8DfhARDxTvT8ilkfEgohYMGHi1NGvoJllEoMNLu2uJS3OdNf+14CbI+LrraiDmZUrGD8tzlEPnKnX6nrgkYj4zGiXb2bNM14GMm7Fu/wF4D3AORUP1J/fgnqYWYkCMRiNLe2uFb3q34cj4CKHmb1AMT3w+HgYsS3e5cBE2P2yvMZx5/4mVaZC/wgeIZ+yJf8Z8n0z8//ODEzKP5mYsjW/nN5jmn/SohEMw9A/JW9sA4Cu5/KfVe84ujsr/eQfP5VdRij/M1Z3Xr3YX0ZbRuNmPM62CJxmNvYFNPpUUNtz4DSz0rjFaWaWIUJucZqZ5Sg6hzzLpZlZBvkGeDOzHEXnkK9xmpllGS9PDjlwmlkphp4cGg8cOM2sNBmTtbU1B04zK0UEHBh04DQza1hxqu7AaWaWxU8OjSHRAf1T80Z6ODA9v5yBiSMYTSLTgaPzf7C6d+Xn6RjIzsLe2fmthY4DeemfnTOCG6RH8LVMeSp/wA6NYGAU7c37oAen589moCn5o8lo50GTKgzvucNvKZZ9O5KkRcBfUUzW9oWI+FTV/onAl4DXUEwL/K6IeDztuwK4BBgA/iAibpc0CfguMJEi9t0WER9P6ecCK4BjgfuA90RE3aGCxke72sxGgUqbHjjNRHkd8DZgPnCRpPlVyS4BdkbEqcC1wDUp73yKGS/PoJg3/XPpeH3AORHxKuBMYJGks9OxrgGuTcfamY5dlwOnmZWmxDmHFgI9EbEhtfxWAIur0iwGbkzrtwHnphkmFgMrIqIvIh4DeoCFUXg2pZ+Qlkh5zknHIB3zncNVzoHTzEpR9Kp3NrQAsyStqViWVh1uDvBkxeuNaVvNNBHRD+ymONWum1dSp6S1wFPAHRGxOuXZlY5Rr6wXaNk1ztR0XgNsioi3t6oeZlaOzBvgt0XEgmbWp5aIGADOlDQD+IakVwBbco/Tyhbn+4FHWli+mZWsxFP1TcBJFa9PTNtqppHUBUyn6CQ6ZN6I2AXcTXENdDswIx2jXlkv0JLAKelE4JeBL7SifDMr31CvekmTtd0LzJM0V1I3RWfPyqo0K4GL0/oFwF0REWn7EkkTU2/5POAeScelliaSJgNvAX6U8tydjkE65jeHq1yrTtX/D/ARYFq9BOmax1KArunHjFK1zOxwlHUDfET0S7oMuJ3idqQbImKdpKuBNRGxkmKa8Zsk9QA7KIIrKd2twMNAP3BpRAxImg3cmC4TdgC3RsS3UpEfBVZI+gTwn+nYdbViXvW3A09FxH2S3lQvXUQsB5YDTJpzUvNvsDSzwxIh+kt8cigiVgGrqrZdWbHeC1xYJ+8yYFnVtgeBs+qk30DRk9+QVrQ4fwF4R5pLfRJwtKQvR8S7W1AXMyvReBkdadSvcUbEFRFxYkScTNG0vstB06z9lXyNc0xri0cuzaw9HAlBsREtDZwR8S/Av7SyDmZWDg9kPMZEJxyYltc/pBF0Jw1OyhsYoqM3/0rHwJT8wSf2HZWdhY59+T/Ak57Ofz+9L8r7oI96PLuIEek9Jv+9TH8ic8QSIDrzPufeF+cP8jFhT369JvTWHZ+ito5yrto1eI9m22uLwGlmY18E9HsgYzOzPD5VNzPL4GucZmYjEA6cZmZ53DlkZpYhwtc4zcwyiQH3qpuZ5fE1TjOzDGXPcjmWOXCaWTmiuM45Hjhwmllp3KtuZpYh3Dk0xnQEMWkgK4um9B86UbW9E7KSD07MH7BjJPWKA/k/jLE//6vdNzv//eQOjPLcCZ3ZZUwddtqsOgbzzxl7j8mv24S9eeVM3JU/YEfHgfzvJTpbE8B8qm5mlmm89KqPj3a1mTVdRBE4G1kaIWmRpPWSeiRdXmP/REm3pP2rJZ1cse+KtH29pPPStpMk3S3pYUnrJL2/Iv1VkjZJWpuW84erW6umB54h6TZJP5L0iKSfb0U9zKxcZU2dkWaivA54GzAfuEjS/KpklwA7I+JU4FrgmpR3PsW0PGdQzJv+uXS8fuCDETEfOBu4tOqY10bEmWl5wSRx1VrV4vwr4J8j4r8BrwIeaVE9zKxEEY0tDVgI9ETEhojYD6wAFlelWQzcmNZvA86VpLR9RUT0RcRjQA+wMCI2R8T9RT1jD0XcmTOS9znqgVPSdOCNpHmLI2J/ROwa7XqYWbkCMTjY0dACzJK0pmJZWnW4OcCTFa83cnCQez5NRPQDu4FjG8mbTuvPAlZXbL5M0oOSbpB0zHDvtRUtzrnA08DfS/pPSV+QdNB8ApKWDn2oA3v2jn4tzSxbNLgA2yJiQcWyfLTqKOko4GvAByLimbT588ApwJnAZuAvhztGKwJnF/Bq4PMRcRawFzjowm9ELB/6UDun5c/TYmajrNzOoU3ASRWvT0zbaqaR1AVMB7YPl1fSBIqgeXNEfP35qkdsjYiBiBgE/o7iUkFdrQicG4GNETHURL6NIpCaWbvLaHIewr3APElzJXVTdPasrEqzErg4rV8A3BURkbYvSb3uc4F5wD3p+uf1wCMR8ZnKA0maXfHyV4GHhqvcqN/HGRFbJD0p6fSIWA+cCzw82vUws/KVdR9nRPRLugy4HegEboiIdZKuBtZExEqKIHiTpB5gB0VwJaW7lSKu9AOXRsSApDcA7wF+KGltKupjqQf905LOpAjrjwO/M1z9WnUD/O8DN6e/JBuA32pRPcysJAEMDpZ3A3wKaKuqtl1Zsd4LXFgn7zJgWdW270Pth+kj4j05dWtJ4IyItcCCVpRtZk0SwDh5csiPXJpZafys+ljSEXROyxsc4eyTH88uZuu+aVnpDwzkDwqxZVdeGQCakp2FY0/ckZ1nT+/E/Dwbj85Kv39G/oAVE3eOYPCNZ/J/gwe681tLg515eSZvzRusBqDj2d7sPNrXl5dhBIOi1OTAaWaWo/Hn0NudA6eZlcctTjOzDAFRYq/6WObAaWYlcuA0M8vjU3Uzs0wOnGZmGXwDvJlZPt8Ab2aWy73qZmZ55BanmVmGxsfabHsOnGZWErlzaCzp6hzkmKOfy8pz/MRnDp2oyq79k7PSj2SQj1986YbsPHv68wffWPPES7LzTJyYN5AKwOTZz2al738kb1AQgL4Z2VnYPy3/F3hS/rgo2XFi26vyR2yZ9UB2Frr6MwcT6Sgp4LnFaWaWKX/wq7bkwGlm5RhH93G2YrI2JP2hpHWSHpL0VUmTWlEPMyuXorGloWNJiyStl9Qj6aCZcNNkbLek/avTXOlD+65I29dLOi9tO0nS3ZIeTvHn/RXpZ0q6Q9Kj6f+xNa+6pDnAHwALIuIVFBMxLRntephZE5Q0y6WkTuA64G3AfOAiSfOrkl0C7IyIU4FrgWtS3vkUMeUMYBHwuXS8fuCDETEfOBu4tOKYlwN3RsQ84E5qTFle6ZCBU9LvHyr6jkAXMDnNhTwF+FnJxzez9rYQ6ImIDRGxH1gBLK5Ksxi4Ma3fBpybpgBeDKyIiL6IeAzoARZGxOaIuB8gIvYAjwBzahzrRuCdw1WukRbn8cC9km5NTefDuogREZuAvwB+CmwGdkfEt6vTSVoqaY2kNf2783rUzaw1SjxVnwM8WfF6I/8V5A5KExH9wG7g2EbyptP6s4DVadPxEbE5rW+hiHt1HTJwRsSfUEzofj3wXuBRSX8m6ZRD5a0ltV4XA3OBE4Cpkt5do9zlEbEgIhZ0TR/BpDtmNrqC4pHLRhaYNdQwSsvS0aqmpKOArwEfiIiD7luMiENeUGioVz0iQtIWikjcDxwD3Cbpjoj4SGa9fwl4LCKeBpD0deD1wJczj2NmY03j93Fui4jhpgjfBJxU8frEtK1Wmo3pst90YPtweSVNoAiaN0fE1yvSbJU0OyI2S5oNPDVc5Ru5xvl+SfcBnwb+DXhlRPwu8Brgfx4qfw0/Bc6WNCWd9p9Lca3BzNpciafq9wLzJM2V1E3R2bOyKs1K4OK0fgFwV2otrgSWpF73uRRnzPekeHM98EhEfGaYY10MfHO4yjXS4pwJ/I+IeKJyY0QMSnp7A/lfICJWS7oNuJ+i9fqfwPLc45jZGFTWLMMR/ZIuA26nuPPmhohYJ+lqYE1ErKQIgjdJ6gF2kO7OSeluBR6miDGXRsSApDcA7wF+KGltKupjEbEK+BRwq6RLgCeAXxuufocMnBHx8WH2jailmI5Z97hm1qZKfOQyBbRVVduurFjvBS6sk3cZsKxq2/epMylSRGynOPttSFs8OTSpq5/TZw57yaEUb3/Rg1npv/LkwuwyJnfuz87T88ys7Dyvn5v/TPz9m086dKIqBw7kPa8/8zX53+PWR/Pff8eB/Js/DkzPzsKUTXm3Qh/9ZOYz5MDA5Pxf0wkH+vMylBDwcm5ub3dtETjNrE14IGMzszxucZqZ5XLgNDPL4GucZmYj4MBpZpZH42Qg45aMx2lm1s7c4jSz8vhU3cwsgzuHzMxGwIHTzCyTA6eZWePE+OlVb4vAORDimQN5E2G+deZD2eW8uGt3VvqXH7Mlu4yjOvuy87x8xtbsPFNHUM6+vd3ZeaYclV9Orhkn78rOs3Nj/ogdk7bm/zooc8yO3hl5g6IAdO7Lj0aD06fmZdhSwg02vsZpZjYCDpxmZpkcOM3M8oyXU/WmPTkk6QZJT0l6qGLbTEl3SHo0/V/2fO1m1krR4NLmmvnI5ReBRVXbLgfujIh5wJ3ptZkdCaLoVW9kaXdNC5wR8V2KCZQqLQZuTOs3Au9sVvlm1gIltjglLZK0XlKPpIMaWWkWy1vS/tWSTq7Yd0Xavl7SeRXbDzoTTtuvkrRJ0tq0nD9c3UZ7kI/jI2JzWt8CHF8voaSlQ5PV79+1b3RqZ2aHpazpgSV1AtcBbwPmAxdJml+V7BJgZ0ScClwLXJPyzqeY8fIMirPez6XjQe0z4SHXRsSZaVlVJw3QwtGR0vzHdT/CiFgeEQsiYkH3jMmjWDMzG7HyWpwLgZ6I2BAR+4EVFGeslSrPYG8Dzk1zpy8GVkREX0Q8BvSk49U7E8422oFzq6TZAOn/5k9daWajo9Gg2VjgnAM8WfF6Y9pWM01E9AO7gWMbzFvLZZIeTKfzw3Zcj3bgXAlcnNYvBr45yuWbWZOIrFP1WUOX4tKytLW15/PAKcCZwGbgL4dL3LT7OCV9FXgTxQe0Efg48CngVkmXAE8Av9as8s1s9GXcx7ktIhYMs38TcFLF6xPTtlppNkrqAqYD2xvM+wIR8fxzzZL+DvjWcOmbFjgj4qI6u85tVplm1mLl3aN5LzBP0lyKoLcE+PWqNENnsP8BXADcFREhaSXwFUmfAU4A5gH3DFeYpNkVHde/Cgw72EVbPDk0vWsf5x/3w6w8L+rak13Ov+09LSv9cd3PZpdxwfQ12Xn+5In8u7ZOn5Y/MMgvnf6j7Dx7MgdfeWJP/jMPu3+Sn0cjuAg1If9HhgnP5UWKwRH8xnX1Zo4kAmh/f16GKCnilXWYiH5JlwG3A53ADRGxTtLVwJqIWAlcD9wkqYeiw2dJyrtO0q3Aw0A/cGlEDEDtM+GIuB74tKQz0zt4HPid4erXFoHTzNpAyaMjpVuCVlVtu7JivRe4sE7eZcCyGttrnglHxHty6ubAaWblOQIep2yEA6eZleZIeJyyEQ6cZlaa8TI6kgOnmZXjCBn5qBEOnGZWHgdOM7PGDT05NB44cJpZaTQ4PiKnA6eZlcPXOM3M8vlU3cwslwOnmVketzjHkGkdfZwz9cdZea7f8QvZ5czu3pWV/kB0HjpRlft6X5qd5/hJ+aNPvHji7uw8m/ryB9M4qrMvK/3TvUdllzFhzt7sPPt7J2TnObAjb8ASgMFuZaWfkD8uDNGRVwZAdGf+aiu/jNoFl3OYsa4tAqeZtYHwI5dmZlnG032cTZs6o9Y0nJL+XNKP0rwe35A0o1nlm1kLRDS2tLlmzjn0RQ6ehvMO4BUR8XPAj4Ermli+mY2ysqYHHuuaFjhrTcMZEd9Os9EB/IBiLhAzOxKUO8vlmNbKa5y/DdxSb2ea9W4pwAlz8nuvzWz0jZfOodGeHhgASX9MMRfIzfXSRMTyiFgQEQuOmdmSappZJg02trS7UY9Ikt4LvB34jYgj4CqxmRWCUjuHJC2StF5Sj6TLa+yfKOmWtH+1pJMr9l2Rtq+XdF7F9oM6rdP2mZLukPRo+n/Ym5pHNXBKWgR8BHhHRDw3mmWbWfOV1TkkqRO4DngbMB+4SNL8qmSXADsj4lTgWuCalHc+xYyXZ1B0UH8uHQ9qd1oDXA7cGRHzgDvT67qaeTvSVynmOz5d0kZJlwCfBaYBd0haK+lvm1W+mbVAeZ1DC4GeiNgQEfuBFcDiqjSLgRvT+m3AuZKUtq+IiL6IeAzoScer2Wld41g3AsPOyd20zqE603Be36zyzKy1Mm+AnyVpTcXr5RGxvOL1HODJitcbgddVHeP5NGke9t3AsWn7D6ryzjlEfY6PiM1pfQtw/HCJ/eSQmZUjImcg420RsaCZ1RmpiAhp+D8BbRE4nx2cyPeeOyUrz2mTtmSX8/rJG7LSP9B3qD9iB5vRmX9pd9qE3uw8q3fOzc7zyqN/lp1nY2/ewCATOgayy+jszO+Gjb78W9j2z8gv5+ievKtdHf35/aF9M/IHLJm44em8DAP530tN5XX3bgJOqnh9YtpWK81GSV3AdGB7g3mrbZU0OyI2S5oNPDVcYt/nY2alKfHJoXuBeZLmSuqm6OxZWZVmJXBxWr8AuCvdqbMSWJJ63ecC84B7DlFe5bEuBr45XGIHTjMrRwCD0dhyqEMVTxheBtwOPALcGhHrJF0t6R0p2fXAsZJ6gD8i9YRHxDrgVuBh4J+BSyNiAOp2WgN8CniLpEeBX0qv62qLU3UzaxMl3pkdEauAVVXbrqxY7wUurJN3GbCsxvZandZExHbg3Ebr5sBpZqU5EgbwaIQDp5mVxtMDm5nlOEJGPmqEA6eZlaK4AX58RE4HTjMrzxEw8lEjHDjNrDRucZqZ5fA1TjOzXFnPqrc1B04zK49P1ceOTg1mD46xfeCo7HJe3j0lK/0g+YNirO3Ln5/u92b9a3aem3ctzM7zs77p2Xn29E/MSr9pd34Zfb3d2XkmH7MvO0/v/qnZeZ59aV6gmP7j7CLo7M3vcdn/kllZ6WNbCaEgjoxpMRrRFoHTzNqEW5xmZpnGR9xs6tQZNSdFSvs+KCkk5Z1PmNmYpsHBhpZ218xh5b5IjUmRJJ0EvBX4aRPLNrPRFhQ3wDeytLmmBc5hJkW6lmKmy3HSqDcbH0SgaGxpd6N6jVPSYmBTRDxQTEY3bNqlwFKAWSfk96qaWQscAUGxEaMWOCVNAT5GcZp+SGnGu+UAp7xy6vj4Nsza3TgJnKM5dcYpwFzgAUmPU0ygdL+kF49iHcysWcbRNc5Ra3FGxA+BFw29TsFzQURsG606mFlzHQk95o1o5u1I9SZFMrMjUhSn6o0sDZC0SNJ6ST2SLq+xf6KkW9L+1ZJOrth3Rdq+XtJ5hzqmpC9KekzS2rScOVzdmtbirDcpUsX+k5tVtpm1QFDaNU5JncB1wFuAjcC9klZGxMMVyS4BdkbEqZKWANcA75I0n2I64TOAE4DvSDot5RnumB+OiNsaqV9bPDk0Vft53aS858K3DUzILue7vXnPXe8YOC67jB39+c/Qf2nn2dl5tvYdnZ1n03P5z5GfdvRTWelfc+oT2WV86dHXZefpGMGsYfs68vN07R3+7pBqozV6kAYyT5nLqlZ5Z+oLgZ6I2AAgaQWwmGLK3yGLgavS+m3AZ1XcrrMYWBERfcBjafrgocEbDnXMhnhedTMrTcZ9nLMkralYllYdag7wZMXrjWlbzTRpHvbdwLHD5D3UMZdJelDStZKGbUW1RYvTzNpE46fq2yJiQTOrkukKYAvQTXEb5EeBq+sldovTzMoRAQODjS2Htgk4qeJWwgPVAAAHwElEQVT1iWlbzTSSuoDpwPZh8tY9ZkRsjkIf8Pf816l9TQ6cZlae8nrV7wXmSZorqZuis2dlVZqVwMVp/QLgroiItH1J6nWfC8wD7hnumJJmp/8FvBM4aHCiSj5VN7PylNSrHhH9ki4Dbgc6gRsiYp2kq4E1EbESuB64KXX+7KAIhKR0t1J0+vQDl0bEAECtY6Yib5Z0HMUsx2uB9w1XPwdOMytHACXeNRARq4BVVduurFjvBS6sk3cZsKyRY6bt5+TUzYHTzEoSEOPjySEHTjMrR9Box0/bc+A0s/KMk9GRHDjNrDwOnGZmORofwKPdOXCaWTkCGCfDyrVF4OyUmNbRmZVnz+BAdjlvzBvjg5V7839Ijp+wKzvP1gP5A3acOS1/LrxNz70yO8/P9uUNDPKdJ07PLmPf3vypU/RU5pcJdA3kDdgBEJmPkPTOzC9j6ubsLHTu3Z+VvrTBR9ziNDPLEe5VNzPLEhDj5D7OZo4Af4OkpyQ9VLX99yX9SNI6SZ9uVvlm1gKD0djS5prZ4vwi8FngS0MbJL2ZYuDQV0VEn6QX1clrZu3I1zgPT0R8t3IOkOR3gU+loZuIiLzhw81s7IoYN73qoz2s3GnAL6aJlf5V0mvrJZS0dGh06G3bx8eXYdb2SpysbSwb7c6hLmAmcDbwWuBWSS9LY+i9QEQspxiJmbNe1d3+n7TZES+IgfzbANvRaAfOjcDXU6C8R9IgMAt4epTrYWZlK3lYubFstE/V/x/wZoA0XWc3sG2U62BmzRKDjS1trmktTklfBd5EMZvdRuDjwA3ADekWpf3AxbVO082s/QQQ46TF2cxe9Yvq7Hp3s8o0sxYKD2RsZpZtvHQOqR3OlCU9DTxRY9csWnuN1OW7/COl/JdGxHGHcwBJ/0xRp0Zsi4hFh1NeK7VF4KxH0ppWTmrv8l3+eC5/PPO86mZmmRw4zcwytXvgXO7yXb7Lt9HW1tc4zcxaod1bnGZmo86B08wsU1sETkmLJK2X1CPp8hr7J0q6Je1fXWMc0MMp+yRJd0t6OI1a//4aad4kabektWm5sqzy0/Efl/TDdOw1NfZL0l+n9/+gpFeXWPbpFe9rraRnJH2gKk2p77/W7AGSZkq6Q9Kj6f9j6uS9OKV5VNLFJZb/52nmggclfUPSjDp5h/2uDqP8qyRtqviMz6+Td9jfFStJRIzpBegEfgK8jGJQkAeA+VVpfg/427S+BLilxPJnA69O69OAH9co/03At5r4GTwOzBpm//nAPwGiGLJvdRO/iy0UN0s37f0DbwReDTxUse3TwOVp/XLgmhr5ZgIb0v/HpPVjSir/rUBXWr+mVvmNfFeHUf5VwIca+H6G/V3xUs7SDi3OhUBPRGyIiP3ACorpNyotBm5M67cB50rKn4e1hojYHBH3p/U9wCPAnDKOXaLFwJei8ANghqTZTSjnXOAnEVHrKa7SRMR3gR1Vmyu/4xuBd9bIeh5wR0TsiIidwB1A9tMptcqPiG9HRH96+QPgxNzjHk75DWrkd8VK0A6Bcw7wZMXrjRwcuJ5Pk364dwPHll2RdAngLGB1jd0/L+kBSf8k6YySiw7g25Luk7S0xv5GPqMyLAG+WmdfM98/wPERMTTD+Bbg+BppRutz+G2KFn4th/quDsdl6VLBDXUuVYzW+x/32iFwjgmSjgK+BnwgIp6p2n0/xenrq4C/oRh3tExviIhXA28DLpX0xpKPf0iSuoF3AP+3xu5mv/8XiOK8tCX30Un6Y6AfuLlOkmZ9V58HTgHOBDYDf1nScW0E2iFwbgJOqnh9YtpWM42kLmA6sL2sCkiaQBE0b46Ir1fvj4hnIuLZtL4KmCCp0cEODikiNqX/nwK+QXFKVqmRz+hwvQ24PyK21qhfU99/snXo8kP6v9ZEf039HCS9F3g78BspeB+kge9qRCJia0QMRDFx+d/VOe5o/BwY7RE47wXmSZqbWj1LgJVVaVYCQz2oFwB31fvBzpWulV4PPBIRn6mT5sVD11QlLaT4XEsJ3JKmSpo2tE7RSfFQVbKVwG+m3vWzgd0Vp7VluYg6p+nNfP8VKr/ji4Fv1khzO/BWScekU9m3pm2HTdIi4CPAOyLiuTppGvmuRlp+5TXrX61z3EZ+V6wMre6damSh6DX+MUWP4R+nbVdT/BADTKI4hewB7gFeVmLZb6A4LXwQWJuW84H3Ae9LaS4D1lH0Yv4AeH2J5b8sHfeBVMbQ+68sX8B16fP5IbCg5M9/KkUgnF6xrWnvnyJAbwYOUFynu4TimvWdwKPAd4CZKe0C4AsVeX87/Rz0AL9VYvk9FNcPh34Ghu7iOAFYNdx3VVL5N6Xv9kGKYDi7uvx6vyteyl/8yKWZWaZ2OFU3MxtTHDjNzDI5cJqZZXLgNDPL5MBpZpbJgdPMLJMDp5lZJgdOK42k16ZBKCalp2jWSXpFq+tlVjbfAG+lkvQJiie5JgMbI+KTLa6SWekcOK1U6Rnpe4FeikcvB1pcJbPS+VTdynYscBTFaPmTWlwXs6Zwi9NKJWklxcjjcykGorisxVUyK11XqytgRw5JvwkciIivSOoE/l3SORFxV6vrZlYmtzjNzDL5GqeZWSYHTjOzTA6cZmaZHDjNzDI5cJqZZXLgNDPL5MBpZpbp/wP7mdM67LtJOQAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1600,10 +1781,9 @@ "\tID =\t2\n", "\tName =\tcell tally\n", "\tFilters =\tCellFilter\n", - "\tNuclides =\tU235 U238 \n", + "\tNuclides =\tU235 U238\n", "\tScores =\t['scatter']\n", - "\tEstimator =\ttracklength\n", - "\n" + "\tEstimator =\ttracklength\n" ] } ], @@ -1654,16 +1834,16 @@ " 1\n", " U235\n", " scatter\n", - " 3.80e-02\n", - " 1.33e-04\n", + " 3.81e-02\n", + " 4.13e-05\n", " \n", " \n", " 1\n", " 1\n", " U238\n", " scatter\n", - " 2.33e+00\n", - " 8.12e-03\n", + " 2.34e+00\n", + " 2.41e-03\n", " \n", " \n", "\n", @@ -1671,8 +1851,8 @@ ], "text/plain": [ " cell nuclide score mean std. dev.\n", - "0 1 U235 scatter 3.80e-02 1.33e-04\n", - "1 1 U238 scatter 2.33e+00 8.12e-03" + "0 1 U235 scatter 3.81e-02 4.13e-05\n", + "1 1 U238 scatter 2.34e+00 2.41e-03" ] }, "execution_count": 24, @@ -1704,8 +1884,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[0.00811746]\n", - " [0.00013266]]]\n" + "[[[2.41367509e-03]\n", + " [4.12533801e-05]]]\n" ] } ], @@ -1736,10 +1916,9 @@ "\tID =\t3\n", "\tName =\tdistribcell tally\n", "\tFilters =\tDistribcellFilter\n", - "\tNuclides =\ttotal \n", + "\tNuclides =\ttotal\n", "\tScores =\t['absorption', 'scatter']\n", - "\tEstimator =\ttracklength\n", - "\n" + "\tEstimator =\ttracklength\n" ] } ], @@ -1767,25 +1946,25 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[0.04347272]]\n", + "[[[0.0131914 ]]\n", "\n", - " [[0.04671736]]\n", + " [[0.01252949]]\n", "\n", - " [[0.04878286]]\n", + " [[0.01241481]]\n", "\n", - " [[0.03059582]]\n", + " [[0.01194961]]\n", "\n", - " [[0.04548096]]\n", + " [[0.01186091]]\n", "\n", - " [[0.04288085]]\n", + " [[0.0127257 ]]\n", "\n", - " [[0.02557663]]\n", + " [[0.01358576]]\n", "\n", - " [[0.0419826 ]]\n", + " [[0.0130368 ]]\n", "\n", - " [[0.05878954]]\n", + " [[0.014031 ]]\n", "\n", - " [[0.04217666]]]\n" + " [[0.0141883 ]]]\n" ] } ], @@ -1877,8 +2056,8 @@ " 3\n", " 279\n", " absorption\n", - " 6.26e-04\n", - " 4.62e-05\n", + " 7.11e-04\n", + " 1.10e-05\n", " \n", " \n", " 559\n", @@ -1891,8 +2070,8 @@ " 3\n", " 279\n", " scatter\n", - " 8.73e-02\n", - " 2.14e-03\n", + " 8.91e-02\n", + " 6.60e-04\n", " \n", " \n", " 560\n", @@ -1905,8 +2084,8 @@ " 3\n", " 280\n", " absorption\n", - " 6.15e-04\n", - " 3.12e-05\n", + " 6.75e-04\n", + " 1.02e-05\n", " \n", " \n", " 561\n", @@ -1919,8 +2098,8 @@ " 3\n", " 280\n", " scatter\n", - " 8.06e-02\n", - " 1.85e-03\n", + " 8.35e-02\n", + " 6.11e-04\n", " \n", " \n", " 562\n", @@ -1933,8 +2112,8 @@ " 3\n", " 281\n", " absorption\n", - " 6.36e-04\n", - " 4.24e-05\n", + " 6.10e-04\n", + " 1.02e-05\n", " \n", " \n", " 563\n", @@ -1947,8 +2126,8 @@ " 3\n", " 281\n", " scatter\n", - " 7.59e-02\n", - " 1.93e-03\n", + " 7.75e-02\n", + " 6.10e-04\n", " \n", " \n", " 564\n", @@ -1961,8 +2140,8 @@ " 3\n", " 282\n", " absorption\n", - " 5.30e-04\n", - " 2.75e-05\n", + " 5.67e-04\n", + " 9.88e-06\n", " \n", " \n", " 565\n", @@ -1975,8 +2154,8 @@ " 3\n", " 282\n", " scatter\n", - " 6.82e-02\n", - " 1.02e-03\n", + " 7.11e-02\n", + " 5.99e-04\n", " \n", " \n", " 566\n", @@ -1989,8 +2168,8 @@ " 3\n", " 283\n", " absorption\n", - " 4.67e-04\n", - " 2.84e-05\n", + " 5.06e-04\n", + " 9.35e-06\n", " \n", " \n", " 567\n", @@ -2003,8 +2182,8 @@ " 3\n", " 283\n", " scatter\n", - " 6.42e-02\n", - " 1.81e-03\n", + " 6.39e-02\n", + " 5.53e-04\n", " \n", " \n", " 568\n", @@ -2017,8 +2196,8 @@ " 3\n", " 284\n", " absorption\n", - " 4.52e-04\n", - " 2.13e-05\n", + " 4.35e-04\n", + " 8.22e-06\n", " \n", " \n", " 569\n", @@ -2031,8 +2210,8 @@ " 3\n", " 284\n", " scatter\n", - " 5.64e-02\n", - " 1.20e-03\n", + " 5.62e-02\n", + " 5.18e-04\n", " \n", " \n", " 570\n", @@ -2045,8 +2224,8 @@ " 3\n", " 285\n", " absorption\n", - " 3.85e-04\n", - " 1.99e-05\n", + " 3.73e-04\n", + " 7.90e-06\n", " \n", " \n", " 571\n", @@ -2059,8 +2238,8 @@ " 3\n", " 285\n", " scatter\n", - " 4.86e-02\n", - " 1.58e-03\n", + " 4.76e-02\n", + " 4.92e-04\n", " \n", " \n", " 572\n", @@ -2073,8 +2252,8 @@ " 3\n", " 286\n", " absorption\n", - " 2.84e-04\n", - " 2.16e-05\n", + " 2.98e-04\n", + " 7.30e-06\n", " \n", " \n", " 573\n", @@ -2087,8 +2266,8 @@ " 3\n", " 286\n", " scatter\n", - " 3.91e-02\n", - " 1.66e-03\n", + " 3.82e-02\n", + " 4.17e-04\n", " \n", " \n", " 574\n", @@ -2101,8 +2280,8 @@ " 3\n", " 287\n", " absorption\n", - " 2.17e-04\n", - " 2.15e-05\n", + " 2.05e-04\n", + " 5.96e-06\n", " \n", " \n", " 575\n", @@ -2115,8 +2294,8 @@ " 3\n", " 287\n", " scatter\n", - " 3.02e-02\n", - " 1.71e-03\n", + " 2.86e-02\n", + " 3.72e-04\n", " \n", " \n", " 576\n", @@ -2129,8 +2308,8 @@ " 3\n", " 288\n", " absorption\n", - " 1.50e-04\n", - " 1.42e-05\n", + " 1.22e-04\n", + " 4.12e-06\n", " \n", " \n", " 577\n", @@ -2143,8 +2322,8 @@ " 3\n", " 288\n", " scatter\n", - " 1.89e-02\n", - " 9.31e-04\n", + " 1.82e-02\n", + " 2.59e-04\n", " \n", " \n", "\n", @@ -2178,26 +2357,26 @@ " mean std. dev. \n", " \n", " \n", - "558 6.26e-04 4.62e-05 \n", - "559 8.73e-02 2.14e-03 \n", - "560 6.15e-04 3.12e-05 \n", - "561 8.06e-02 1.85e-03 \n", - "562 6.36e-04 4.24e-05 \n", - "563 7.59e-02 1.93e-03 \n", - "564 5.30e-04 2.75e-05 \n", - "565 6.82e-02 1.02e-03 \n", - "566 4.67e-04 2.84e-05 \n", - "567 6.42e-02 1.81e-03 \n", - "568 4.52e-04 2.13e-05 \n", - "569 5.64e-02 1.20e-03 \n", - "570 3.85e-04 1.99e-05 \n", - "571 4.86e-02 1.58e-03 \n", - "572 2.84e-04 2.16e-05 \n", - "573 3.91e-02 1.66e-03 \n", - "574 2.17e-04 2.15e-05 \n", - "575 3.02e-02 1.71e-03 \n", - "576 1.50e-04 1.42e-05 \n", - "577 1.89e-02 9.31e-04 " + "558 7.11e-04 1.10e-05 \n", + "559 8.91e-02 6.60e-04 \n", + "560 6.75e-04 1.02e-05 \n", + "561 8.35e-02 6.11e-04 \n", + "562 6.10e-04 1.02e-05 \n", + "563 7.75e-02 6.10e-04 \n", + "564 5.67e-04 9.88e-06 \n", + "565 7.11e-02 5.99e-04 \n", + "566 5.06e-04 9.35e-06 \n", + "567 6.39e-02 5.53e-04 \n", + "568 4.35e-04 8.22e-06 \n", + "569 5.62e-02 5.18e-04 \n", + "570 3.73e-04 7.90e-06 \n", + "571 4.76e-02 4.92e-04 \n", + "572 2.98e-04 7.30e-06 \n", + "573 3.82e-02 4.17e-04 \n", + "574 2.05e-04 5.96e-06 \n", + "575 2.86e-02 3.72e-04 \n", + "576 1.22e-04 4.12e-06 \n", + "577 1.82e-02 2.59e-04 " ] }, "execution_count": 28, @@ -2261,38 +2440,38 @@ " \n", " \n", " mean\n", - " 4.15e-04\n", - " 2.29e-05\n", + " 4.19e-04\n", + " 6.86e-06\n", " \n", " \n", " std\n", - " 2.33e-04\n", - " 9.14e-06\n", + " 2.41e-04\n", + " 2.51e-06\n", " \n", " \n", " min\n", - " 1.84e-05\n", - " 3.31e-06\n", + " 1.68e-05\n", + " 1.07e-06\n", " \n", " \n", " 25%\n", - " 2.08e-04\n", - " 1.58e-05\n", + " 2.06e-04\n", + " 5.09e-06\n", " \n", " \n", " 50%\n", - " 4.10e-04\n", - " 2.24e-05\n", + " 3.98e-04\n", + " 6.90e-06\n", " \n", " \n", " 75%\n", - " 6.25e-04\n", - " 2.93e-05\n", + " 6.17e-04\n", + " 8.44e-06\n", " \n", " \n", " max\n", - " 8.87e-04\n", - " 5.06e-05\n", + " 8.70e-04\n", + " 1.52e-05\n", " \n", " \n", "\n", @@ -2303,13 +2482,13 @@ " \n", " \n", "count 2.89e+02 2.89e+02\n", - "mean 4.15e-04 2.29e-05\n", - "std 2.33e-04 9.14e-06\n", - "min 1.84e-05 3.31e-06\n", - "25% 2.08e-04 1.58e-05\n", - "50% 4.10e-04 2.24e-05\n", - "75% 6.25e-04 2.93e-05\n", - "max 8.87e-04 5.06e-05" + "mean 4.19e-04 6.86e-06\n", + "std 2.41e-04 2.51e-06\n", + "min 1.68e-05 1.07e-06\n", + "25% 2.06e-04 5.09e-06\n", + "50% 3.98e-04 6.90e-06\n", + "75% 6.17e-04 8.44e-06\n", + "max 8.70e-04 1.52e-05" ] }, "execution_count": 29, @@ -2342,7 +2521,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 0.3531165056829588\n" + "Mann-Whitney Test p-value: 0.47449458604689265\n" ] } ], @@ -2378,7 +2557,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 2.835784441937541e-42\n" + "Mann-Whitney Test p-value: 2.499381683224802e-42\n" ] } ], @@ -2412,18 +2591,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/romano/.pyenv/versions/3.7.0/lib/python3.7/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \n", + ":4: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " after removing the cwd from sys.path.\n" + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " scatter['rel. err.'] = scatter['std. dev.'] / scatter['mean']\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 32, @@ -2432,7 +2611,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -2461,7 +2640,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 33, @@ -2470,7 +2649,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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3bs333zzDQBffPEF3bt3p2vXrtx88807H1I0bdo0TjjhBM4//3zat28PwOmnn07nzp057LDDGDVq1M5Y6tevz5/+9Cc6d+5Mnz59mDVrFj179qRNmzaMH1/2y7Y6gxARKWTLli106tRp5/yPP/7Iqaee+otyd9xxB1999RW1atXip59+omHDhlx++eXUr19/50OFTjnlFC6++GKGDBnC6NGjufrqq3nllVe45ppruOaaaxg8eDAjR4782XZnzZrFwoULad26NQCjR4+mUaNGbNmyha5du3LWWWfRuHFjNm3aRM+ePfn73//OGWecwZ///GfefPNNFi1axJAhQ5LGXBI6gxARKaROnTrMmzdv5+vWW29NWq5Dhw5ccMEFPPXUU2RmJv++PWPGDM4//3wALrroIt5///2dy8855xyAnet36Nat287kAMGZSseOHenevTvLly/n888/ByA7O5t+/foB0L59e44//niysrJo3749y5YtK/0BCClBiIiU0oQJE7jiiiuYM2cOnTt3Jj8/f5d1gjsAilevXr2d09OmTWPq1KnMmDGD+fPnc/jhh7N161YgeG7Fju1lZGRQq1atndOpxLIrShAiIqWQSCRYvnw5J5xwAnfeeSc//fQTGzdupEGDBmzYsGFnuR49evDMM88AwcOEjjnmGAC6d+/Oiy++CLBzfTLr1q1jjz32oG7duixevJiZM2em8V39nK5BiEillkq31CjE43EuvPBC1q1bh7tz3XXX0bBhQ0455RTOPvtsXn31VR544AFGjBjBpZdeyl133UXTpk157LHHALjvvvu48MILueeeexg4cCC777570v3069ePkSNH0qFDBw4++GC6d+9eYe/RCj8uryrr0qWL5+TkRB2GlEBRfdwr6z8FSb9PP/2UQw45JOow0m7z5s3UqVMHM+OZZ55h3LhxvPpqsoElyk+yY2tmc9w96SPxdAYhIhKBOXPmcOWVV+LuNGzYkNGjR0cd0i8oQYiIRODYY49l/vz5UYdRLF2kFpFKpzo1fVcWpTmmShAiUqnUrl2bNWvWKEmUI3dnzZo11K5du0T11MQkIpVKy5Ytyc3NRQ8AK1+1a9emZcuWJaqjBCEilUpWVtbP7iKW6ChBSJWibrEiFUfXIEREJKm0nUGY2WjgZGCVu7cLlz0LHBwWaQj85O6dktRdBmwA4kB+UTdx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\n", "text/plain": [ "
" ] @@ -2508,7 +2687,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/jupyter/pincell.ipynb b/examples/jupyter/pincell.ipynb index 7d0f4e65a..0f11ca655 100644 --- a/examples/jupyter/pincell.ipynb +++ b/examples/jupyter/pincell.ipynb @@ -168,22 +168,13 @@ "cell_type": "code", "execution_count": 7, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/sam/openmc/openmc/openmc/mixin.py:71: IDWarning: Another Material instance already exists with id=2.\n", - " warn(msg, IDWarning)\n" - ] - } - ], + "outputs": [], "source": [ - "zirconium = openmc.Material(2, \"zirconium\")\n", + "zirconium = openmc.Material(name=\"zirconium\")\n", "zirconium.add_element('Zr', 1.0)\n", "zirconium.set_density('g/cm3', 6.6)\n", "\n", - "water = openmc.Material(3, \"h2o\")\n", + "water = openmc.Material(name=\"h2o\")\n", "water.add_nuclide('H1', 2.0)\n", "water.add_nuclide('O16', 1.0)\n", "water.set_density('g/cm3', 1.0)" @@ -218,7 +209,7 @@ "metadata": {}, "outputs": [], "source": [ - "mats = openmc.Materials([uo2, zirconium, water])" + "materials = openmc.Materials([uo2, zirconium, water])" ] }, { @@ -245,10 +236,10 @@ } ], "source": [ - "mats = openmc.Materials()\n", - "mats.append(uo2)\n", - "mats += [zirconium, water]\n", - "isinstance(mats, list)" + "materials = openmc.Materials()\n", + "materials.append(uo2)\n", + "materials += [zirconium, water]\n", + "isinstance(materials, list)" ] }, { @@ -275,7 +266,7 @@ " \r\n", " \r\n", " \r\n", - " \r\n", + " \r\n", " \r\n", " \r\n", " \r\n", @@ -283,7 +274,7 @@ " \r\n", " \r\n", " \r\n", - " \r\n", + " \r\n", " \r\n", " \r\n", " \r\n", @@ -294,7 +285,7 @@ } ], "source": [ - "mats.export_to_xml()\n", + "materials.export_to_xml()\n", "!cat materials.xml" ] }, @@ -330,7 +321,7 @@ " \r\n", " \r\n", " \r\n", - " \r\n", + " \r\n", " \r\n", " \r\n", " \r\n", @@ -338,7 +329,7 @@ " \r\n", " \r\n", " \r\n", - " \r\n", + " \r\n", " \r\n", " \r\n", " \r\n", @@ -353,7 +344,7 @@ "water.remove_nuclide('O16')\n", "water.add_element('O', 1.0)\n", "\n", - "mats.export_to_xml()\n", + "materials.export_to_xml()\n", "!cat materials.xml" ] }, @@ -386,14 +377,14 @@ "text": [ "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " ...\n", " \n", " \n", @@ -493,7 +484,7 @@ "metadata": {}, "outputs": [], "source": [ - "sph = openmc.Sphere(r=1.0)" + "sphere = openmc.Sphere(r=1.0)" ] }, { @@ -511,8 +502,8 @@ "metadata": {}, "outputs": [], "source": [ - "inside_sphere = -sph\n", - "outside_sphere = +sph" + "inside_sphere = -sphere\n", + "outside_sphere = +sphere" ] }, { @@ -555,7 +546,7 @@ "outputs": [], "source": [ "z_plane = openmc.ZPlane(z0=0)\n", - "northern_hemisphere = -sph & +z_plane" + "northern_hemisphere = -sphere & +z_plane" ] }, { @@ -663,7 +654,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -672,7 +663,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -702,7 +693,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -711,7 +702,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -741,7 +732,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 26, @@ -750,7 +741,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -787,9 +778,9 @@ "metadata": {}, "outputs": [], "source": [ - "fuel_or = openmc.ZCylinder(r=0.39)\n", - "clad_ir = openmc.ZCylinder(r=0.40)\n", - "clad_or = openmc.ZCylinder(r=0.46)" + "fuel_outer_radius = openmc.ZCylinder(r=0.39)\n", + "clad_inner_radius = openmc.ZCylinder(r=0.40)\n", + "clad_outer_radius = openmc.ZCylinder(r=0.46)" ] }, { @@ -805,9 +796,9 @@ "metadata": {}, "outputs": [], "source": [ - "fuel_region = -fuel_or\n", - "gap_region = +fuel_or & -clad_ir\n", - "clad_region = +clad_ir & -clad_or" + "fuel_region = -fuel_outer_radius\n", + "gap_region = +fuel_outer_radius & -clad_inner_radius\n", + "clad_region = +clad_inner_radius & -clad_outer_radius" ] }, { @@ -821,27 +812,16 @@ "cell_type": "code", "execution_count": 29, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/sam/openmc/openmc/openmc/mixin.py:71: IDWarning: Another Cell instance already exists with id=1.\n", - " warn(msg, IDWarning)\n", - "/home/sam/openmc/openmc/openmc/mixin.py:71: IDWarning: Another Cell instance already exists with id=2.\n", - " warn(msg, IDWarning)\n" - ] - } - ], + "outputs": [], "source": [ - "fuel = openmc.Cell(1, 'fuel')\n", + "fuel = openmc.Cell(name='fuel')\n", "fuel.fill = uo2\n", "fuel.region = fuel_region\n", "\n", - "gap = openmc.Cell(2, 'air gap')\n", + "gap = openmc.Cell(name='air gap')\n", "gap.region = gap_region\n", "\n", - "clad = openmc.Cell(3, 'clad')\n", + "clad = openmc.Cell(name='clad')\n", "clad.fill = zirconium\n", "clad.region = clad_region" ] @@ -879,9 +859,9 @@ "metadata": {}, "outputs": [], "source": [ - "water_region = +left & -right & +bottom & -top & +clad_or\n", + "water_region = +left & -right & +bottom & -top & +clad_outer_radius\n", "\n", - "moderator = openmc.Cell(4, 'moderator')\n", + "moderator = openmc.Cell(name='moderator')\n", "moderator.fill = water\n", "moderator.region = water_region" ] @@ -928,7 +908,7 @@ "metadata": {}, "outputs": [], "source": [ - "water_region = box & +clad_or" + "water_region = box & +clad_outer_radius" ] }, { @@ -949,10 +929,10 @@ "text": [ "\r\n", "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", " \r\n", " \r\n", " \r\n", @@ -965,14 +945,14 @@ } ], "source": [ - "root = openmc.Universe(cells=(fuel, gap, clad, moderator))\n", + "root_universe = openmc.Universe(cells=(fuel, gap, clad, moderator))\n", "\n", - "geom = openmc.Geometry()\n", - "geom.root_universe = root\n", + "geometry = openmc.Geometry()\n", + "geometry.root_universe = root_universe\n", "\n", "# or...\n", - "geom = openmc.Geometry(root)\n", - "geom.export_to_xml()\n", + "geometry = openmc.Geometry(root_universe)\n", + "geometry.export_to_xml()\n", "!cat geometry.xml" ] }, @@ -991,8 +971,9 @@ "metadata": {}, "outputs": [], "source": [ + "# Create a point source\n", "point = openmc.stats.Point((0, 0, 0))\n", - "src = openmc.Source(space=point)" + "source = openmc.Source(space=point)" ] }, { @@ -1009,7 +990,7 @@ "outputs": [], "source": [ "settings = openmc.Settings()\n", - "settings.source = src\n", + "settings.source = source\n", "settings.batches = 100\n", "settings.inactive = 10\n", "settings.particles = 1000" @@ -1065,8 +1046,8 @@ "source": [ "cell_filter = openmc.CellFilter(fuel)\n", "\n", - "t = openmc.Tally(1)\n", - "t.filters = [cell_filter]" + "tally = openmc.Tally(1)\n", + "tally.filters = [cell_filter]" ] }, { @@ -1082,8 +1063,8 @@ "metadata": {}, "outputs": [], "source": [ - "t.nuclides = ['U235']\n", - "t.scores = ['total', 'fission', 'absorption', '(n,gamma)']" + "tally.nuclides = ['U235']\n", + "tally.scores = ['total', 'fission', 'absorption', '(n,gamma)']" ] }, { @@ -1105,7 +1086,7 @@ "\r\n", "\r\n", " \r\n", - " 1\r\n", + " 3\r\n", " \r\n", " \r\n", " 1\r\n", @@ -1117,7 +1098,7 @@ } ], "source": [ - "tallies = openmc.Tallies([t])\n", + "tallies = openmc.Tallies([tally])\n", "tallies.export_to_xml()\n", "!cat tallies.xml" ] @@ -1168,165 +1149,164 @@ "\n", " | The OpenMC Monte Carlo Code\n", " Copyright | 2011-2020 MIT and OpenMC contributors\n", - " License | http://openmc.readthedocs.io/en/latest/license.html\n", - " Version | 0.12.0-dev\n", - " Git SHA1 | dd74b2f43f1d2060486de2823ee30058b8971dbd\n", - " Date/Time | 2020-03-03 13:58:53\n", - " MPI Processes | 1\n", - " OpenMP Threads | 8\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.12.0\n", + " Git SHA1 | 3d90a9f857ec72eae897e054d4225180f1fa4d93\n", + " Date/Time | 2020-08-25 14:58:51\n", + " OpenMP Threads | 4\n", "\n", " Reading settings XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", " Reading geometry XML file...\n", - " Reading U235 from /home/sam/openmc/libs/nndc_hdf5/U235.h5\n", - " Reading U238 from /home/sam/openmc/libs/nndc_hdf5/U238.h5\n", - " Reading O16 from /home/sam/openmc/libs/nndc_hdf5/O16.h5\n", - " Reading Zr90 from /home/sam/openmc/libs/nndc_hdf5/Zr90.h5\n", - " Reading Zr91 from /home/sam/openmc/libs/nndc_hdf5/Zr91.h5\n", - " Reading Zr92 from /home/sam/openmc/libs/nndc_hdf5/Zr92.h5\n", - " Reading Zr94 from /home/sam/openmc/libs/nndc_hdf5/Zr94.h5\n", - " Reading Zr96 from /home/sam/openmc/libs/nndc_hdf5/Zr96.h5\n", - " Reading H1 from /home/sam/openmc/libs/nndc_hdf5/H1.h5\n", - " Reading O17 from /home/sam/openmc/libs/nndc_hdf5/O17.h5\n", - " Reading c_H_in_H2O from /home/sam/openmc/libs/nndc_hdf5/c_H_in_H2O.h5\n", - " Maximum neutron transport energy: 20000000.000000 eV for U235\n", + " Reading U235 from /home/master/data/nuclear/endfb71_hdf5/U235.h5\n", + " Reading U238 from /home/master/data/nuclear/endfb71_hdf5/U238.h5\n", + " Reading O16 from /home/master/data/nuclear/endfb71_hdf5/O16.h5\n", + " Reading Zr90 from /home/master/data/nuclear/endfb71_hdf5/Zr90.h5\n", + " Reading Zr91 from /home/master/data/nuclear/endfb71_hdf5/Zr91.h5\n", + " Reading Zr92 from /home/master/data/nuclear/endfb71_hdf5/Zr92.h5\n", + " Reading Zr94 from /home/master/data/nuclear/endfb71_hdf5/Zr94.h5\n", + " Reading Zr96 from /home/master/data/nuclear/endfb71_hdf5/Zr96.h5\n", + " Reading H1 from /home/master/data/nuclear/endfb71_hdf5/H1.h5\n", + " Reading O17 from /home/master/data/nuclear/endfb71_hdf5/O17.h5\n", + " Reading c_H_in_H2O from /home/master/data/nuclear/endfb71_hdf5/c_H_in_H2O.h5\n", " Minimum neutron data temperature: 294.000000 K\n", " Maximum neutron data temperature: 294.000000 K\n", " Reading tallies XML file...\n", " Preparing distributed cell instances...\n", " Writing summary.h5 file...\n", + " Maximum neutron transport energy: 20000000.000000 eV for U235\n", " Initializing source particles...\n", "\n", " ====================> K EIGENVALUE SIMULATION <====================\n", "\n", " Bat./Gen. k Average k\n", " ========= ======== ====================\n", - " 1/1 1.32572\n", - " 2/1 1.46138\n", - " 3/1 1.46068\n", - " 4/1 1.39592\n", - " 5/1 1.37519\n", - " 6/1 1.38777\n", - " 7/1 1.50242\n", - " 8/1 1.42042\n", - " 9/1 1.47458\n", - " 10/1 1.49148\n", - " 11/1 1.39339\n", - " 12/1 1.40637 1.39988 +/- 0.00649\n", - " 13/1 1.42972 1.40983 +/- 0.01063\n", - " 14/1 1.46319 1.42317 +/- 0.01531\n", - " 15/1 1.41538 1.42161 +/- 0.01196\n", - " 16/1 1.38163 1.41494 +/- 0.01182\n", - " 17/1 1.41257 1.41461 +/- 0.01000\n", - " 18/1 1.43455 1.41710 +/- 0.00901\n", - " 19/1 1.33136 1.40757 +/- 0.01241\n", - " 20/1 1.41560 1.40837 +/- 0.01113\n", - " 21/1 1.38911 1.40662 +/- 0.01021\n", - " 22/1 1.28621 1.39659 +/- 0.01370\n", - " 23/1 1.45693 1.40123 +/- 0.01343\n", - " 24/1 1.46839 1.40603 +/- 0.01333\n", - " 25/1 1.46738 1.41012 +/- 0.01306\n", - " 26/1 1.43977 1.41197 +/- 0.01236\n", - " 27/1 1.44066 1.41366 +/- 0.01173\n", - " 28/1 1.39358 1.41254 +/- 0.01112\n", - " 29/1 1.39142 1.41143 +/- 0.01057\n", - " 30/1 1.38525 1.41012 +/- 0.01012\n", - " 31/1 1.38025 1.40870 +/- 0.00973\n", - " 32/1 1.45348 1.41074 +/- 0.00949\n", - " 33/1 1.35893 1.40848 +/- 0.00935\n", - " 34/1 1.32332 1.40493 +/- 0.00963\n", - " 35/1 1.46285 1.40725 +/- 0.00952\n", - " 36/1 1.33760 1.40457 +/- 0.00953\n", - " 37/1 1.41117 1.40482 +/- 0.00917\n", - " 38/1 1.45574 1.40664 +/- 0.00903\n", - " 39/1 1.43472 1.40760 +/- 0.00876\n", - " 40/1 1.30110 1.40405 +/- 0.00918\n", - " 41/1 1.41765 1.40449 +/- 0.00889\n", - " 42/1 1.45300 1.40601 +/- 0.00874\n", - " 43/1 1.40491 1.40597 +/- 0.00847\n", - " 44/1 1.42053 1.40640 +/- 0.00823\n", - " 45/1 1.38805 1.40588 +/- 0.00801\n", - " 46/1 1.34293 1.40413 +/- 0.00798\n", - " 47/1 1.35441 1.40279 +/- 0.00787\n", - " 48/1 1.29370 1.39991 +/- 0.00818\n", - " 49/1 1.48467 1.40209 +/- 0.00826\n", - " 50/1 1.41759 1.40248 +/- 0.00806\n", - " 51/1 1.37151 1.40172 +/- 0.00790\n", - " 52/1 1.42403 1.40225 +/- 0.00773\n", - " 53/1 1.38826 1.40193 +/- 0.00755\n", - " 54/1 1.48944 1.40392 +/- 0.00764\n", - " 55/1 1.41452 1.40415 +/- 0.00747\n", - " 56/1 1.47337 1.40566 +/- 0.00746\n", - " 57/1 1.35700 1.40462 +/- 0.00738\n", - " 58/1 1.40305 1.40459 +/- 0.00722\n", - " 59/1 1.41608 1.40482 +/- 0.00708\n", - " 60/1 1.47254 1.40618 +/- 0.00706\n", - " 61/1 1.36847 1.40544 +/- 0.00696\n", - " 62/1 1.34103 1.40420 +/- 0.00694\n", - " 63/1 1.39510 1.40403 +/- 0.00681\n", - " 64/1 1.40228 1.40399 +/- 0.00668\n", - " 65/1 1.29401 1.40200 +/- 0.00686\n", - " 66/1 1.42693 1.40244 +/- 0.00675\n", - " 67/1 1.36447 1.40177 +/- 0.00666\n", - " 68/1 1.37498 1.40131 +/- 0.00656\n", - " 69/1 1.36958 1.40077 +/- 0.00647\n", - " 70/1 1.38585 1.40053 +/- 0.00637\n", - " 71/1 1.42133 1.40087 +/- 0.00627\n", - " 72/1 1.44900 1.40164 +/- 0.00622\n", - " 73/1 1.37696 1.40125 +/- 0.00613\n", - " 74/1 1.48851 1.40261 +/- 0.00619\n", - " 75/1 1.38933 1.40241 +/- 0.00610\n", - " 76/1 1.41780 1.40264 +/- 0.00601\n", - " 77/1 1.41054 1.40276 +/- 0.00592\n", - " 78/1 1.38194 1.40246 +/- 0.00584\n", - " 79/1 1.38446 1.40219 +/- 0.00576\n", - " 80/1 1.37504 1.40181 +/- 0.00569\n", - " 81/1 1.40550 1.40186 +/- 0.00561\n", - " 82/1 1.49785 1.40319 +/- 0.00569\n", - " 83/1 1.35613 1.40255 +/- 0.00565\n", - " 84/1 1.41786 1.40275 +/- 0.00557\n", - " 85/1 1.38444 1.40251 +/- 0.00550\n", - " 86/1 1.40459 1.40254 +/- 0.00543\n", - " 87/1 1.39923 1.40249 +/- 0.00536\n", - " 88/1 1.44540 1.40304 +/- 0.00532\n", - " 89/1 1.45962 1.40376 +/- 0.00530\n", - " 90/1 1.37057 1.40335 +/- 0.00525\n", - " 91/1 1.38115 1.40307 +/- 0.00519\n", - " 92/1 1.35758 1.40252 +/- 0.00516\n", - " 93/1 1.34508 1.40182 +/- 0.00514\n", - " 94/1 1.31471 1.40079 +/- 0.00519\n", - " 95/1 1.41434 1.40095 +/- 0.00513\n", - " 96/1 1.33895 1.40023 +/- 0.00512\n", - " 97/1 1.44716 1.40077 +/- 0.00509\n", - " 98/1 1.38455 1.40058 +/- 0.00503\n", - " 99/1 1.52127 1.40194 +/- 0.00516\n", - " 100/1 1.35488 1.40141 +/- 0.00513\n", + " 1/1 1.42066\n", + " 2/1 1.39831\n", + " 3/1 1.46207\n", + " 4/1 1.44888\n", + " 5/1 1.42595\n", + " 6/1 1.35549\n", + " 7/1 1.36717\n", + " 8/1 1.45095\n", + " 9/1 1.36061\n", + " 10/1 1.36554\n", + " 11/1 1.36973\n", + " 12/1 1.44276 1.40625 +/- 0.03652\n", + " 13/1 1.35512 1.38920 +/- 0.02711\n", + " 14/1 1.54216 1.42744 +/- 0.04277\n", + " 15/1 1.39353 1.42066 +/- 0.03382\n", + " 16/1 1.38650 1.41497 +/- 0.02820\n", + " 17/1 1.38760 1.41106 +/- 0.02415\n", + " 18/1 1.38413 1.40769 +/- 0.02118\n", + " 19/1 1.39088 1.40582 +/- 0.01877\n", + " 20/1 1.47468 1.41271 +/- 0.01815\n", + " 21/1 1.45695 1.41673 +/- 0.01690\n", + " 22/1 1.40308 1.41559 +/- 0.01547\n", + " 23/1 1.40821 1.41503 +/- 0.01424\n", + " 24/1 1.32301 1.40845 +/- 0.01473\n", + " 25/1 1.36702 1.40569 +/- 0.01399\n", + " 26/1 1.30968 1.39969 +/- 0.01440\n", + " 27/1 1.38099 1.39859 +/- 0.01357\n", + " 28/1 1.42103 1.39984 +/- 0.01285\n", + " 29/1 1.39741 1.39971 +/- 0.01216\n", + " 30/1 1.36548 1.39800 +/- 0.01166\n", + " 31/1 1.41573 1.39884 +/- 0.01112\n", + " 32/1 1.39788 1.39880 +/- 0.01061\n", + " 33/1 1.35942 1.39709 +/- 0.01028\n", + " 34/1 1.40483 1.39741 +/- 0.00985\n", + " 35/1 1.39418 1.39728 +/- 0.00944\n", + " 36/1 1.41492 1.39796 +/- 0.00910\n", + " 37/1 1.49392 1.40151 +/- 0.00945\n", + " 38/1 1.45114 1.40329 +/- 0.00928\n", + " 39/1 1.42619 1.40408 +/- 0.00899\n", + " 40/1 1.35249 1.40236 +/- 0.00885\n", + " 41/1 1.35401 1.40080 +/- 0.00870\n", + " 42/1 1.40220 1.40084 +/- 0.00842\n", + " 43/1 1.36437 1.39974 +/- 0.00824\n", + " 44/1 1.33642 1.39787 +/- 0.00821\n", + " 45/1 1.36953 1.39706 +/- 0.00801\n", + " 46/1 1.30034 1.39438 +/- 0.00824\n", + " 47/1 1.44097 1.39564 +/- 0.00811\n", + " 48/1 1.37981 1.39522 +/- 0.00790\n", + " 49/1 1.34870 1.39403 +/- 0.00779\n", + " 50/1 1.41247 1.39449 +/- 0.00761\n", + " 51/1 1.33382 1.39301 +/- 0.00756\n", + " 52/1 1.37043 1.39247 +/- 0.00740\n", + " 53/1 1.38754 1.39236 +/- 0.00723\n", + " 54/1 1.40160 1.39257 +/- 0.00707\n", + " 55/1 1.37511 1.39218 +/- 0.00692\n", + " 56/1 1.38589 1.39204 +/- 0.00677\n", + " 57/1 1.40630 1.39234 +/- 0.00663\n", + " 58/1 1.29944 1.39041 +/- 0.00677\n", + " 59/1 1.40019 1.39061 +/- 0.00663\n", + " 60/1 1.42384 1.39127 +/- 0.00653\n", + " 61/1 1.36502 1.39076 +/- 0.00643\n", + " 62/1 1.37042 1.39037 +/- 0.00631\n", + " 63/1 1.42295 1.39098 +/- 0.00622\n", + " 64/1 1.40042 1.39116 +/- 0.00611\n", + " 65/1 1.36382 1.39066 +/- 0.00602\n", + " 66/1 1.31659 1.38934 +/- 0.00606\n", + " 67/1 1.36101 1.38884 +/- 0.00597\n", + " 68/1 1.46359 1.39013 +/- 0.00601\n", + " 69/1 1.41012 1.39047 +/- 0.00591\n", + " 70/1 1.27411 1.38853 +/- 0.00613\n", + " 71/1 1.45399 1.38960 +/- 0.00612\n", + " 72/1 1.40455 1.38984 +/- 0.00603\n", + " 73/1 1.33020 1.38890 +/- 0.00601\n", + " 74/1 1.44599 1.38979 +/- 0.00598\n", + " 75/1 1.34985 1.38917 +/- 0.00592\n", + " 76/1 1.36183 1.38876 +/- 0.00584\n", + " 77/1 1.41080 1.38909 +/- 0.00576\n", + " 78/1 1.43991 1.38984 +/- 0.00573\n", + " 79/1 1.35613 1.38935 +/- 0.00566\n", + " 80/1 1.31659 1.38831 +/- 0.00568\n", + " 81/1 1.51344 1.39007 +/- 0.00587\n", + " 82/1 1.38404 1.38999 +/- 0.00579\n", + " 83/1 1.39613 1.39007 +/- 0.00571\n", + " 84/1 1.43037 1.39061 +/- 0.00566\n", + " 85/1 1.47316 1.39172 +/- 0.00569\n", + " 86/1 1.39220 1.39172 +/- 0.00561\n", + " 87/1 1.44400 1.39240 +/- 0.00558\n", + " 88/1 1.42419 1.39281 +/- 0.00552\n", + " 89/1 1.30930 1.39175 +/- 0.00556\n", + " 90/1 1.46976 1.39273 +/- 0.00557\n", + " 91/1 1.38334 1.39261 +/- 0.00550\n", + " 92/1 1.35260 1.39212 +/- 0.00546\n", + " 93/1 1.38505 1.39204 +/- 0.00539\n", + " 94/1 1.38290 1.39193 +/- 0.00533\n", + " 95/1 1.42597 1.39233 +/- 0.00528\n", + " 96/1 1.41624 1.39261 +/- 0.00523\n", + " 97/1 1.42053 1.39293 +/- 0.00518\n", + " 98/1 1.36268 1.39258 +/- 0.00513\n", + " 99/1 1.39175 1.39258 +/- 0.00507\n", + " 100/1 1.38148 1.39245 +/- 0.00502\n", " Creating state point statepoint.100.h5...\n", "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 9.7663e-01 seconds\n", - " Reading cross sections = 8.7037e-01 seconds\n", - " Total time in simulation = 1.8046e+00 seconds\n", - " Time in transport only = 1.7523e+00 seconds\n", - " Time in inactive batches = 2.0849e-01 seconds\n", - " Time in active batches = 1.5961e+00 seconds\n", - " Time synchronizing fission bank = 6.7422e-03 seconds\n", - " Sampling source sites = 4.9715e-03 seconds\n", - " SEND/RECV source sites = 1.1323e-03 seconds\n", - " Time accumulating tallies = 5.3810e-04 seconds\n", - " Total time for finalization = 5.1810e-04 seconds\n", - " Total time elapsed = 2.7828e+00 seconds\n", - " Calculation Rate (inactive) = 47962.8 particles/second\n", - " Calculation Rate (active) = 56386.7 particles/second\n", + " Total time for initialization = 6.9022e-01 seconds\n", + " Reading cross sections = 6.7913e-01 seconds\n", + " Total time in simulation = 1.7892e+00 seconds\n", + " Time in transport only = 1.7650e+00 seconds\n", + " Time in inactive batches = 1.5005e-01 seconds\n", + " Time in active batches = 1.6391e+00 seconds\n", + " Time synchronizing fission bank = 4.2308e-03 seconds\n", + " Sampling source sites = 3.4593e-03 seconds\n", + " SEND/RECV source sites = 6.2601e-04 seconds\n", + " Time accumulating tallies = 9.5555e-05 seconds\n", + " Total time for finalization = 7.4948e-05 seconds\n", + " Total time elapsed = 2.4836e+00 seconds\n", + " Calculation Rate (inactive) = 66645.8 particles/second\n", + " Calculation Rate (active) = 54907.5 particles/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.39737 +/- 0.00470\n", - " k-effective (Track-length) = 1.40141 +/- 0.00513\n", - " k-effective (Absorption) = 1.39596 +/- 0.00308\n", - " Combined k-effective = 1.39719 +/- 0.00286\n", + " k-effective (Collision) = 1.39516 +/- 0.00457\n", + " k-effective (Track-length) = 1.39245 +/- 0.00502\n", + " k-effective (Absorption) = 1.40443 +/- 0.00333\n", + " Combined k-effective = 1.40145 +/- 0.00319\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -1354,12 +1334,12 @@ "text": [ " ============================> TALLY 1 <============================\r\n", "\r\n", - " Cell 1\r\n", + " Cell 3\r\n", " U235\r\n", - " Total Reaction Rate 0.731003 +/- 0.00253759\r\n", - " Fission Rate 0.547587 +/- 0.00210114\r\n", - " Absorption Rate 0.657406 +/- 0.0024539\r\n", - " (n,gamma) 0.109821 +/- 0.000368054\r\n" + " Total Reaction Rate 0.726151 +/- 0.00251702\r\n", + " Fission Rate 0.543836 +/- 0.00205084\r\n", + " Absorption Rate 0.652874 +/- 0.002424\r\n", + " (n,gamma) 0.10904 +/- 0.000385793\r\n" ] } ], @@ -1382,12 +1362,12 @@ "metadata": {}, "outputs": [], "source": [ - "p = openmc.Plot()\n", - "p.filename = 'pinplot'\n", - "p.width = (pitch, pitch)\n", - "p.pixels = (200, 200)\n", - "p.color_by = 'material'\n", - "p.colors = {uo2: 'yellow', water: 'blue'}" + "plot = openmc.Plot()\n", + "plot.filename = 'pinplot'\n", + "plot.width = (pitch, pitch)\n", + "plot.pixels = (200, 200)\n", + "plot.color_by = 'material'\n", + "plot.colors = {uo2: 'yellow', water: 'blue'}" ] }, { @@ -1413,14 +1393,14 @@ " 1.26 1.26\r\n", " 200 200\r\n", " \r\n", - " \r\n", + " \r\n", " \r\n", "\r\n" ] } ], "source": [ - "plots = openmc.Plots([p])\n", + "plots = openmc.Plots([plot])\n", "plots.export_to_xml()\n", "!cat plots.xml" ] @@ -1467,12 +1447,11 @@ "\n", " | The OpenMC Monte Carlo Code\n", " Copyright | 2011-2020 MIT and OpenMC contributors\n", - " License | http://openmc.readthedocs.io/en/latest/license.html\n", - " Version | 0.12.0-dev\n", - " Git SHA1 | dd74b2f43f1d2060486de2823ee30058b8971dbd\n", - " Date/Time | 2020-03-03 13:58:56\n", - " MPI Processes | 1\n", - " OpenMP Threads | 8\n", + " License | https://docs.openmc.org/en/latest/license.html\n", + " Version | 0.12.0\n", + " Git SHA1 | 3d90a9f857ec72eae897e054d4225180f1fa4d93\n", + " Date/Time | 2020-08-25 14:58:54\n", + " OpenMP Threads | 4\n", "\n", " Reading settings XML file...\n", " Reading cross sections XML file...\n", @@ -1534,7 +1513,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAgMAAADQNkYNAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEUAAP9yEhL//////wAZPRNOAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+QDAw06OBFn074AAAI7SURBVGje7ZmxkcIwEEUhcAnuhxIIEIGvAwioxiU4QASU4GougA4gsM6SfNxh766sfx7N3Ix+zJv9X7KxtLtaZWVlZWWl1Fr12sQQpXLaRRMRTKFe2kbk+Na8POpNkbbmWlMqtkwxRsJllIotMxQ56F7neWX8LmrdGtNpPWc//Z4cLsbpfp6xN85XNRA904Sd2V/stXlJ16EFcL4O7Q/SnUPOrK/9xfzSvQ44K0dFhjLCmq0nRYYyvDPrq2rfka4RnVlfoyJ9GdGZ9XUdI89aWGYbpTITNUKYgvLlnXFhSsqXd7bjEcKXc8YhvYEjhdzY/Db9lUKebP4+/b6lkK7m8nNRhDAlE8WFoREuig/DpKej+DAbGmGiuDAUUsgItWR8ejZ/yaZ3+SmET+/zL4JIC8Ys2VpI7/JPkSKEbCnkyiNPCilDyI5A+AVzSzZFVAhRBCKssVvlBRB5W8iNwZCThDymiLyT5F5iSCsh3RSRN5/cfgwxoiikkpFmgqgwopZAPmTkcxnkKCO3BZDQs088/RhykpFHRjLyP5AE70uadz/Z/1iK/2TgYwF9klJ8K4GPeJrTBXDsSXMeS3O2RA69wNEaOMAD1wTgMgJceYCLVZobH3IVBS68wLUauLwDLQKgEYG0O4CmCtC6ARpEQBsKaXYBLTWgcQe0B4EmJNLqBBqqQNsWaA4jLWig0Q2005GmPTAaAAYQyJgDGKYgIxtgMISMn4AhFzJKAwZ2yFgQGT4iI86srKysrD/rC4LWcCSWwIp+AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTAzLTAzVDEzOjU4OjU2KzAwOjAw73cO+QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wMy0wM1QxMzo1ODo1NiswMDowMJ4qtkUAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAgMAAADQNkYNAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEUAAP9yEhL//////wAZPRNOAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+QIGQ86Nr0vrD0AAAI7SURBVGje7ZmxkcIwEEUhcAnuhxIIEIGvAwioxiU4QASU4GougA4gsM6SfNxh766sfx7N3Ix+zJv9X7KxtLtaZWVlZWWl1Fr12sQQpXLaRRMRTKFe2kbk+Na8POpNkbbmWlMqtkwxRsJllIotMxQ56F7neWX8LmrdGtNpPWc//Z4cLsbpfp6xN85XNRA904Sd2V/stXlJ16EFcL4O7Q/SnUPOrK/9xfzSvQ44K0dFhjLCmq0nRYYyvDPrq2rfka4RnVlfoyJ9GdGZ9XUdI89aWGYbpTITNUKYgvLlnXFhSsqXd7bjEcKXc8YhvYEjhdzY/Db9lUKebP4+/b6lkK7m8nNRhDAlE8WFoREuig/DpKej+DAbGmGiuDAUUsgItWR8ejZ/yaZ3+SmET+/zL4JIC8Ys2VpI7/JPkSKEbCnkyiNPCilDyI5A+AVzSzZFVAhRBCKssVvlBRB5W8iNwZCThDymiLyT5F5iSCsh3RSRN5/cfgwxoiikkpFmgqgwopZAPmTkcxnkKCO3BZDQs088/RhykpFHRjLyP5AE70uadz/Z/1iK/2TgYwF9klJ8K4GPeJrTBXDsSXMeS3O2RA69wNEaOMAD1wTgMgJceYCLVZobH3IVBS68wLUauLwDLQKgEYG0O4CmCtC6ARpEQBsKaXYBLTWgcQe0B4EmJNLqBBqqQNsWaA4jLWig0Q2005GmPTAaAAYQyJgDGKYgIxtgMISMn4AhFzJKAwZ2yFgQGT4iI86srKysrD/rC4LWcCSWwIp+AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA4LTI1VDE0OjU4OjU0KzAxOjAwkH0c4gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOC0yNVQxNDo1ODo1NCswMTowMOEgpF4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -1563,7 +1542,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAgMAAADQNkYNAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEUAAP9yEhL//////wAZPRNOAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+QDAw06OBFn074AAAI7SURBVGje7ZmxkcIwEEUhcAnuhxIIEIGvAwioxiU4QASU4GougA4gsM6SfNxh766sfx7N3Ix+zJv9X7KxtLtaZWVlZWWl1Fr12sQQpXLaRRMRTKFe2kbk+Na8POpNkbbmWlMqtkwxRsJllIotMxQ56F7neWX8LmrdGtNpPWc//Z4cLsbpfp6xN85XNRA904Sd2V/stXlJ16EFcL4O7Q/SnUPOrK/9xfzSvQ44K0dFhjLCmq0nRYYyvDPrq2rfka4RnVlfoyJ9GdGZ9XUdI89aWGYbpTITNUKYgvLlnXFhSsqXd7bjEcKXc8YhvYEjhdzY/Db9lUKebP4+/b6lkK7m8nNRhDAlE8WFoREuig/DpKej+DAbGmGiuDAUUsgItWR8ejZ/yaZ3+SmET+/zL4JIC8Ys2VpI7/JPkSKEbCnkyiNPCilDyI5A+AVzSzZFVAhRBCKssVvlBRB5W8iNwZCThDymiLyT5F5iSCsh3RSRN5/cfgwxoiikkpFmgqgwopZAPmTkcxnkKCO3BZDQs088/RhykpFHRjLyP5AE70uadz/Z/1iK/2TgYwF9klJ8K4GPeJrTBXDsSXMeS3O2RA69wNEaOMAD1wTgMgJceYCLVZobH3IVBS68wLUauLwDLQKgEYG0O4CmCtC6ARpEQBsKaXYBLTWgcQe0B4EmJNLqBBqqQNsWaA4jLWig0Q2005GmPTAaAAYQyJgDGKYgIxtgMISMn4AhFzJKAwZ2yFgQGT4iI86srKysrD/rC4LWcCSWwIp+AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTAzLTAzVDEzOjU4OjU2KzAwOjAw73cO+QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wMy0wM1QxMzo1ODo1NiswMDowMJ4qtkUAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAgMAAADQNkYNAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEUAAP9yEhL//////wAZPRNOAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+QIGQ86Nr0vrD0AAAI7SURBVGje7ZmxkcIwEEUhcAnuhxIIEIGvAwioxiU4QASU4GougA4gsM6SfNxh766sfx7N3Ix+zJv9X7KxtLtaZWVlZWWl1Fr12sQQpXLaRRMRTKFe2kbk+Na8POpNkbbmWlMqtkwxRsJllIotMxQ56F7neWX8LmrdGtNpPWc//Z4cLsbpfp6xN85XNRA904Sd2V/stXlJ16EFcL4O7Q/SnUPOrK/9xfzSvQ44K0dFhjLCmq0nRYYyvDPrq2rfka4RnVlfoyJ9GdGZ9XUdI89aWGYbpTITNUKYgvLlnXFhSsqXd7bjEcKXc8YhvYEjhdzY/Db9lUKebP4+/b6lkK7m8nNRhDAlE8WFoREuig/DpKej+DAbGmGiuDAUUsgItWR8ejZ/yaZ3+SmET+/zL4JIC8Ys2VpI7/JPkSKEbCnkyiNPCilDyI5A+AVzSzZFVAhRBCKssVvlBRB5W8iNwZCThDymiLyT5F5iSCsh3RSRN5/cfgwxoiikkpFmgqgwopZAPmTkcxnkKCO3BZDQs088/RhykpFHRjLyP5AE70uadz/Z/1iK/2TgYwF9klJ8K4GPeJrTBXDsSXMeS3O2RA69wNEaOMAD1wTgMgJceYCLVZobH3IVBS68wLUauLwDLQKgEYG0O4CmCtC6ARpEQBsKaXYBLTWgcQe0B4EmJNLqBBqqQNsWaA4jLWig0Q2005GmPTAaAAYQyJgDGKYgIxtgMISMn4AhFzJKAwZ2yFgQGT4iI86srKysrD/rC4LWcCSWwIp+AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA4LTI1VDE0OjU4OjU0KzAxOjAwkH0c4gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOC0yNVQxNDo1ODo1NCswMTowMOEgpF4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -1574,7 +1553,7 @@ } ], "source": [ - "p.to_ipython_image()" + "plot.to_ipython_image()" ] } ], @@ -1595,7 +1574,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/jupyter/post-processing.ipynb b/examples/jupyter/post-processing.ipynb index 889e16877..44a2c2d4e 100644 --- a/examples/jupyter/post-processing.ipynb +++ b/examples/jupyter/post-processing.ipynb @@ -17,7 +17,6 @@ "from IPython.display import Image\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "\n", "import openmc" ] }, @@ -75,10 +74,10 @@ "outputs": [], "source": [ "# Instantiate a Materials collection\n", - "materials_file = openmc.Materials([fuel, water, zircaloy])\n", + "materials = openmc.Materials([fuel, water, zircaloy])\n", "\n", "# Export to \"materials.xml\"\n", - "materials_file.export_to_xml()" + "materials.export_to_xml()" ] }, { @@ -208,23 +207,18 @@ "outputs": [], "source": [ "# OpenMC simulation parameters\n", - "batches = 100\n", - "inactive = 10\n", - "particles = 5000\n", - "\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 = openmc.Settings()\n", + "settings.batches = 100\n", + "settings.inactive = 10\n", + "settings.particles = 5000\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(space=uniform_dist)\n", + "settings.source = openmc.Source(space=uniform_dist)\n", "\n", "# Export to \"settings.xml\"\n", - "settings_file.export_to_xml()" + "settings.export_to_xml()" ] }, { @@ -271,7 +265,7 @@ "outputs": [], "source": [ "# Instantiate an empty Tallies object\n", - "tallies_file = openmc.Tallies()" + "tallies = openmc.Tallies()" ] }, { @@ -293,7 +287,7 @@ "tally = openmc.Tally(name='flux')\n", "tally.filters = [mesh_filter]\n", "tally.scores = ['flux', 'fission']\n", - "tallies_file.append(tally)" + "tallies.append(tally)" ] }, { @@ -303,7 +297,7 @@ "outputs": [], "source": [ "# Export to \"tallies.xml\"\n", - "tallies_file.export_to_xml()" + "tallies.export_to_xml()" ] }, { @@ -977,7 +971,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/jupyter/search.ipynb b/examples/jupyter/search.ipynb index bfdc20695..6c3e2169e 100644 --- a/examples/jupyter/search.ipynb +++ b/examples/jupyter/search.ipynb @@ -47,6 +47,7 @@ "# Create the model. `ppm_Boron` will be the parametric variable.\n", "\n", "def build_model(ppm_Boron):\n", + " \n", " # Create the pin materials\n", " fuel = openmc.Material(name='1.6% Fuel')\n", " fuel.set_density('g/cm3', 10.31341)\n", @@ -95,24 +96,25 @@ " moderator_cell.region = +clad_outer_radius & (+min_x & -max_x & +min_y & -max_y)\n", "\n", " # Create root Universe\n", - " root_universe = openmc.Universe(name='root universe', universe_id=0)\n", + " root_universe = openmc.Universe(name='root universe')\n", " root_universe.add_cells([fuel_cell, clad_cell, moderator_cell])\n", "\n", " # Create Geometry and set root universe\n", " geometry = openmc.Geometry(root_universe)\n", " \n", - " # Finish with the settings file\n", + " # Instantiate a Settings object\n", " settings = openmc.Settings()\n", + " \n", + " # Set simulation parameters\n", " settings.batches = 300\n", " settings.inactive = 20\n", " settings.particles = 1000\n", - " settings.run_mode = 'eigenvalue'\n", - "\n", + " \n", " # Create an initial uniform spatial source distribution over fissionable zones\n", " bounds = [-0.63, -0.63, -10, 0.63, 0.63, 10.]\n", " uniform_dist = openmc.stats.Box(bounds[:3], bounds[3:], only_fissionable=True)\n", " settings.source = openmc.source.Source(space=uniform_dist)\n", - "\n", + " \n", " # We dont need a tallies file so dont waste the disk input/output time\n", " settings.output = {'tallies': False}\n", " \n", @@ -129,7 +131,7 @@ "\n", "To perform the search we imply call the `openmc.search_for_keff` function and pass in the relvant arguments. For our purposes we will be passing in the model building function (`build_model` defined above), a bracketed range for the expected critical Boron concentration (1,000 to 2,500 ppm), the tolerance, and the method we wish to use. \n", "\n", - "Instead of the bracketed range we could have used a single initial guess, but have elected not to in this example. Finally, due to the high noise inherent in using as few histories as are used in this example, our tolerance on the final keff value will be rather large (1.e-2) and a bisection method will be used for the search." + "Instead of the bracketed range we could have used a single initial guess, but have elected not to in this example. Finally, due to the high noise inherent in using as few histories as are used in this example, our tolerance on the final keff value will be rather large (1.e-2) and the default 'bisection' method will be used for the search." ] }, { @@ -137,148 +139,27 @@ "execution_count": 3, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "Iteration: 1; Guess of 1.00e+03 produced a keff of 1.08853 +/- 0.00158\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 2; Guess of 2.50e+03 produced a keff of 0.95372 +/- 0.00148\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 3; Guess of 1.75e+03 produced a keff of 1.01328 +/- 0.00169\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 4; Guess of 2.12e+03 produced a keff of 0.98150 +/- 0.00158\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 5; Guess of 1.94e+03 produced a keff of 0.99886 +/- 0.00146\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 6; Guess of 1.84e+03 produced a keff of 1.00759 +/- 0.00162\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 7; Guess of 1.89e+03 produced a keff of 1.00063 +/- 0.00166\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 8; Guess of 1.91e+03 produced a keff of 0.99970 +/- 0.00150\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/mixin.py:71: IDWarning: Another Universe instance already exists with id=0.\n", - " warn(msg, IDWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 9; Guess of 1.90e+03 produced a keff of 0.99935 +/- 0.00164\n", - "Critical Boron Concentration: 1902 ppm\n" + "Iteration: 1; Guess of 1.00e+03 produced a keff of 1.08504 +/- 0.00169\n", + "Iteration: 2; Guess of 2.50e+03 produced a keff of 0.95243 +/- 0.00158\n", + "Iteration: 3; Guess of 1.75e+03 produced a keff of 1.01269 +/- 0.00163\n", + "Iteration: 4; Guess of 2.12e+03 produced a keff of 0.98165 +/- 0.00155\n", + "Iteration: 5; Guess of 1.94e+03 produced a keff of 0.99773 +/- 0.00158\n", + "Iteration: 6; Guess of 1.84e+03 produced a keff of 1.00872 +/- 0.00170\n", + "Iteration: 7; Guess of 1.89e+03 produced a keff of 1.00462 +/- 0.00154\n", + "Iteration: 8; Guess of 1.91e+03 produced a keff of 1.00202 +/- 0.00154\n", + "Iteration: 9; Guess of 1.93e+03 produced a keff of 0.99816 +/- 0.00155\n", + "Critical Boron Concentration: 1926 ppm\n" ] } ], "source": [ "# Perform the search\n", "crit_ppm, guesses, keffs = openmc.search_for_keff(build_model, bracket=[1000., 2500.],\n", - " tol=1e-2, bracketed_method='bisect',\n", - " print_iterations=True)\n", + " tol=1e-2, print_iterations=True)\n", "\n", "print('Critical Boron Concentration: {:4.0f} ppm'.format(crit_ppm))" ] @@ -297,7 +178,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -344,7 +225,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/jupyter/triso.ipynb b/examples/jupyter/triso.ipynb index 1934433e9..882463efc 100644 --- a/examples/jupyter/triso.ipynb +++ b/examples/jupyter/triso.ipynb @@ -143,7 +143,7 @@ "metadata": {}, "outputs": [], "source": [ - "trisos = [openmc.model.TRISO(outer_radius, triso_univ, c) for c in centers]" + "trisos = [openmc.model.TRISO(outer_radius, triso_univ, center) for center in centers]" ] }, { @@ -199,7 +199,7 @@ } ], "source": [ - "centers = np.vstack([t.center for t in trisos])\n", + "centers = np.vstack([triso.center for triso in trisos])\n", "print(centers.min(axis=0))\n", "print(centers.max(axis=0))" ] @@ -293,20 +293,20 @@ } ], "source": [ - "univ = openmc.Universe(cells=[box])\n", + "universe = openmc.Universe(cells=[box])\n", "\n", - "geom = openmc.Geometry(univ)\n", - "geom.export_to_xml()\n", + "geometry = openmc.Geometry(universe)\n", + "geometry.export_to_xml()\n", "\n", - "mats = list(geom.get_all_materials().values())\n", - "openmc.Materials(mats).export_to_xml()\n", + "materials = list(geometry.get_all_materials().values())\n", + "openmc.Materials(materials).export_to_xml()\n", "\n", "settings = openmc.Settings()\n", "settings.run_mode = 'plot'\n", "settings.export_to_xml()\n", "\n", - "p = openmc.Plot.from_geometry(geom)\n", - "p.to_ipython_image()" + "plot = openmc.Plot.from_geometry(geometry)\n", + "plot.to_ipython_image()" ] }, { @@ -334,9 +334,9 @@ } ], "source": [ - "p.color_by = 'material'\n", - "p.colors = {graphite: 'gray'}\n", - "p.to_ipython_image()" + "plot.color_by = 'material'\n", + "plot.colors = {graphite: 'gray'}\n", + "plot.to_ipython_image()" ] } ], @@ -357,7 +357,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/examples/parameterized_custom_source/CMakeLists.txt b/examples/parameterized_custom_source/CMakeLists.txt new file mode 100644 index 000000000..3024e90cf --- /dev/null +++ b/examples/parameterized_custom_source/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.3 FATAL_ERROR) +project(openmc_sources CXX) +add_library(parameterized_source SHARED parameterized_source_ring.cpp) +find_package(OpenMC REQUIRED) +if (OpenMC_FOUND) + message(STATUS "Found OpenMC: ${OpenMC_DIR}") +endif() +target_link_libraries(parameterized_source OpenMC::libopenmc) diff --git a/examples/parameterized_custom_source/README.md b/examples/parameterized_custom_source/README.md new file mode 100644 index 000000000..9116fadea --- /dev/null +++ b/examples/parameterized_custom_source/README.md @@ -0,0 +1,23 @@ +# Building a Parameterized Custom Source + +To run this example, you first need to compile the custom source library, which +requires headers from OpenMC. A CMakeLists.txt file has been set up for you that +will search for OpenMC and build the custom library. To build the source +library, you can run: + + mkdir build && cd build + OPENMC_ROOT= cmake .. + make + +After this, you can build the model by running `python build_xml.py`. In the XML +files that are created, you should see a reference to build/libparameterized_source.so, +the custom source library that was built by CMake, and values in the parameters +attribute. The model is also set up with a mesh tally of the flux, so once you run +`openmc`, you will get a statepoint file with the tally results in it. Running +`python show_flux.py` will pull in the results from the statepoint file and display +them. If all worked well, you should see a ring "imprint" as well as a higher flux to +the right side (since the custom source has all particles moving in the positive x +direction). + +Once built, you can edit the parameters attribute on the source to change the radius of +the sampled ring or the energy of the sampled particles. diff --git a/examples/parameterized_custom_source/build_xml.py b/examples/parameterized_custom_source/build_xml.py new file mode 100644 index 000000000..5edb204df --- /dev/null +++ b/examples/parameterized_custom_source/build_xml.py @@ -0,0 +1,37 @@ +import openmc + +# Create a single material +iron = openmc.Material() +iron.set_density('g/cm3', 5.0) +iron.add_element('Fe', 1.0) +mats = openmc.Materials([iron]) +mats.export_to_xml() + +# Create a 5 cm x 5 cm box filled with iron +box = openmc.model.rectangular_prism(10.0, 10.0, boundary_type='vacuum') +cell = openmc.Cell(fill=iron, region=box) +geometry = openmc.Geometry([cell]) +geometry.export_to_xml() + +# Tell OpenMC we're going to use our custom source +settings = openmc.Settings() +settings.run_mode = 'fixed source' +settings.batches = 10 +settings.particles = 1000 +source = openmc.Source() +source.library = 'build/libparameterized_source.so' +source.parameters = 'radius=3.0, energy=14.08e6' +settings.source = source +settings.export_to_xml() + +# Finally, define a mesh tally so that we can see the resulting flux +mesh = openmc.RegularMesh() +mesh.lower_left = (-5.0, -5.0) +mesh.upper_right = (5.0, 5.0) +mesh.dimension = (50, 50) + +tally = openmc.Tally() +tally.filters = [openmc.MeshFilter(mesh)] +tally.scores = ['flux'] +tallies = openmc.Tallies([tally]) +tallies.export_to_xml() diff --git a/examples/parameterized_custom_source/parameterized_source_ring.cpp b/examples/parameterized_custom_source/parameterized_source_ring.cpp new file mode 100644 index 000000000..c88333e15 --- /dev/null +++ b/examples/parameterized_custom_source/parameterized_source_ring.cpp @@ -0,0 +1,66 @@ +#include // for M_PI +#include // for unique_ptr +#include + +#include "openmc/random_lcg.h" +#include "openmc/source.h" +#include "openmc/particle.h" + +class Source : public openmc::CustomSource +{ + public: + Source(double radius, double energy) : radius_(radius), energy_(energy) { } + + // Defines a function that can create a unique pointer to a new instance of this class + // by extracting the parameters from the provided string. + static std::unique_ptr from_string(std::string parameters) + { + std::unordered_map parameter_mapping; + + std::stringstream ss(parameters); + std::string parameter; + while (std::getline(ss, parameter, ',')) { + parameter.erase(0, parameter.find_first_not_of(' ')); + std::string key = parameter.substr(0, parameter.find_first_of('=')); + std::string value = parameter.substr(parameter.find_first_of('=') + 1, parameter.length()); + parameter_mapping[key] = value; + } + + double radius = std::stod(parameter_mapping["radius"]); + double energy = std::stod(parameter_mapping["energy"]); + return std::make_unique(radius, energy); + } + + // Samples from an instance of this class. + openmc::Particle::Bank sample(uint64_t* seed) + { + openmc::Particle::Bank particle; + // wgt + particle.particle = openmc::Particle::Type::neutron; + particle.wgt = 1.0; + // position + double angle = 2.0 * M_PI * openmc::prn(seed); + double radius = this->radius_; + particle.r.x = radius * std::cos(angle); + particle.r.y = radius * std::sin(angle); + particle.r.z = 0.0; + // angle + particle.u = {1.0, 0.0, 0.0}; + particle.E = this->energy_; + particle.delayed_group = 0; + + return particle; + } + + private: + double radius_; + double energy_; +}; + +// A function to create a unique pointer to an instance of this class when generated +// via a plugin call using dlopen/dlsym. +// You must have external C linkage here otherwise dlopen will not find the file +extern "C" std::unique_ptr openmc_create_source(std::string parameters) +{ + return Source::from_string(parameters); +} diff --git a/examples/parameterized_custom_source/show_flux.py b/examples/parameterized_custom_source/show_flux.py new file mode 100644 index 000000000..6f5494301 --- /dev/null +++ b/examples/parameterized_custom_source/show_flux.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import openmc + +# Get the flux from the statepoint +with openmc.StatePoint('statepoint.10.h5') as sp: + flux = sp.tallies[1].mean + flux.shape = (50, 50) + +# Plot the flux +fig, ax = plt.subplots() +ax.imshow(flux, origin='lower', extent=(-5.0, 5.0, -5.0, 5.0)) +ax.set_xlabel('x [cm]') +ax.set_ylabel('y [cm]') +plt.show() diff --git a/include/openmc/geometry.h b/include/openmc/geometry.h index 6fd0d1ad9..0ad891269 100644 --- a/include/openmc/geometry.h +++ b/include/openmc/geometry.h @@ -18,7 +18,7 @@ namespace openmc { namespace model { extern int root_universe; //!< Index of root universe -extern int n_coord_levels; //!< Number of CSG coordinate levels +extern "C" int n_coord_levels; //!< Number of CSG coordinate levels extern std::vector overlap_check_count; diff --git a/include/openmc/mesh.h b/include/openmc/mesh.h index eed36c7f8..b7dcb017b 100644 --- a/include/openmc/mesh.h +++ b/include/openmc/mesh.h @@ -298,6 +298,9 @@ public: //! Add a score to the mesh instance void add_score(std::string score) const; + //! Remove a score from the mesh instance + void remove_score(std::string score) const; + //! Set data for a score void set_score_data(const std::string& score, std::vector values, diff --git a/include/openmc/plot.h b/include/openmc/plot.h index 76fc462c3..28c395bca 100644 --- a/include/openmc/plot.h +++ b/include/openmc/plot.h @@ -184,7 +184,7 @@ T PlotBase::get_map() const { // local variables bool found_cell = find_cell(p, 0); j = p.n_coord_ - 1; - if (level >=0) {j = level + 1;} + if (level >= 0) { j = level; } if (found_cell) { data.set_value(y, x, p, j); } diff --git a/include/openmc/position.h b/include/openmc/position.h index 2be72b27c..3046f6163 100644 --- a/include/openmc/position.h +++ b/include/openmc/position.h @@ -63,6 +63,11 @@ struct Position { return std::sqrt(x*x + y*y + z*z); } + //! Reflect a direction across a normal vector + //! \param[in] other Vector to reflect across + //! \result Reflected vector + Position reflect(Position n) const; + //! Rotate the position based on a rotation matrix Position rotate(const std::vector& rotation) const; @@ -89,6 +94,13 @@ inline Position operator/(Position a, Position b) { return a /= b; } inline Position operator/(Position a, double b) { return a /= b; } inline Position operator/(double a, Position b) { return b /= a; } +inline Position Position::reflect(Position n) const { + const double projection = n.dot(*this); + const double magnitude = n.dot(n); + n *= (2.0 * projection / magnitude); + return *this - n; +} + inline bool operator==(Position a, Position b) {return a.x == b.x && a.y == b.y && a.z == b.z;} diff --git a/include/openmc/reaction.h b/include/openmc/reaction.h index dd6de245f..2bf6d6e96 100644 --- a/include/openmc/reaction.h +++ b/include/openmc/reaction.h @@ -44,8 +44,18 @@ public: // Non-member functions //============================================================================== +//! Return reaction name given an ENDF MT value +// +//! \param[in] mt ENDF MT value +//! \return Name of the corresponding reaction std::string reaction_name(int mt); +//! Return reaction type (MT value) given a reaction name +// +//! \param[in] name Reaction name +//! \return Corresponding reaction type (MT value) +int reaction_type(std::string name); + } // namespace openmc #endif // OPENMC_REACTION_H diff --git a/include/openmc/source.h b/include/openmc/source.h index 78e4043b9..529cb1836 100644 --- a/include/openmc/source.h +++ b/include/openmc/source.h @@ -59,6 +59,15 @@ private: UPtrDist energy_; //!< Energy distribution }; +class CustomSource { + public: + virtual ~CustomSource() {} + + virtual Particle::Bank sample(uint64_t* seed) = 0; +}; + +typedef std::unique_ptr create_custom_source_t(std::string parameters); + //============================================================================== // Functions //============================================================================== diff --git a/openmc/data/data.py b/openmc/data/data.py index 4a3ebbf32..db9972afe 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -236,10 +236,8 @@ def atomic_mass(isotope): for element in ['C', 'Zn', 'Pt', 'Os', 'Tl']: isotope_zero = element.lower() + '0' _ATOMIC_MASS[isotope_zero] = 0. - for iso, abundance in NATURAL_ABUNDANCE.items(): - if re.match(r'{}\d+'.format(element), iso): - _ATOMIC_MASS[isotope_zero] += abundance * \ - _ATOMIC_MASS[iso.lower()] + for iso, abundance in isotopes(element): + _ATOMIC_MASS[isotope_zero] += abundance * _ATOMIC_MASS[iso.lower()] # Get rid of metastable information if '_' in isotope: @@ -257,7 +255,7 @@ def atomic_weight(element): Parameters ---------- element : str - Name of element, e.g. 'H', 'U' + Element symbol (e.g., 'H') or name (e.g., 'helium') Returns ------- @@ -266,9 +264,8 @@ def atomic_weight(element): """ weight = 0. - for nuclide, abundance in NATURAL_ABUNDANCE.items(): - if re.match(r'{}\d+'.format(element), nuclide): - weight += atomic_mass(nuclide) * abundance + for nuclide, abundance in isotopes(element): + weight += atomic_mass(nuclide) * abundance if weight > 0.: return weight else: @@ -404,6 +401,41 @@ def gnd_name(Z, A, m=0): return '{}{}'.format(ATOMIC_SYMBOL[Z], A) +def isotopes(element): + """Return naturally-occurring isotopes and their abundances + + Parameters + ---------- + element : str + Element symbol (e.g., 'H') or name (e.g., 'helium') + + Returns + ------- + list + A list of tuples of (isotope, abundance) + + Raises + ------ + ValueError + If the element name is not recognized + + """ + # Convert name to symbol if needed + if len(element) > 2: + symbol = ELEMENT_SYMBOL.get(element.lower()) + if symbol is None: + raise ValueError('Element name "{}" not recognised'.format(element)) + element = symbol + + # Get the nuclides present in nature + result = [] + for kv in sorted(NATURAL_ABUNDANCE.items()): + if re.match(r'{}\d+'.format(element), kv[0]): + result.append(kv) + + return result + + def zam(name): """Return tuple of (atomic number, mass number, metastable state) diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index b940994e0..d0adbc4fe 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -16,7 +16,7 @@ import openmc.checkvalue as cv from openmc.mixin import EqualityMixin from openmc.stats import Discrete, Tabular from . import HDF5_VERSION, HDF5_VERSION_MAJOR, endf -from .data import K_BOLTZMANN, ATOMIC_SYMBOL, EV_PER_MEV, NATURAL_ABUNDANCE +from .data import K_BOLTZMANN, ATOMIC_SYMBOL, EV_PER_MEV, isotopes from .ace import Table, get_table, Library from .angle_energy import AngleEnergy from .function import Tabulated1D, Function1D @@ -29,14 +29,14 @@ from .thermal_angle_energy import (CoherentElasticAE, IncoherentElasticAE, _THERMAL_NAMES = { 'c_Al27': ('al', 'al27', 'al-27'), - 'c_Al_in_Sapphire': ('asap00',), + 'c_Al_in_Sapphire': ('asap00', 'asap'), 'c_Be': ('be', 'be-metal', 'be-met', 'be00'), 'c_BeO': ('beo',), 'c_Be_in_BeO': ('bebeo', 'be-beo', 'be-o', 'be/o', 'bbeo00'), 'c_Be_in_Be2C': ('bebe2c',), 'c_C6H6': ('benz', 'c6h6'), 'c_C_in_SiC': ('csic', 'c-sic'), - 'c_Ca_in_CaH2': ('cah', 'cah00'), + 'c_Ca_in_CaH2': ('cah', 'cah00', 'cacah2'), 'c_D_in_D2O': ('dd2o', 'd-d2o', 'hwtr', 'hw', 'dhw00'), 'c_D_in_D2O_ice': ('dice',), 'c_Fe56': ('fe', 'fe56', 'fe-56'), @@ -51,20 +51,20 @@ _THERMAL_NAMES = { 'c_H_in_H2O': ('hh2o', 'h-h2o', 'lwtr', 'lw', 'lw00'), 'c_H_in_H2O_solid': ('hice', 'h-ice', 'ice00'), 'c_H_in_C5O2H8': ('lucite', 'c5o2h8', 'h-luci'), - 'c_H_in_Mesitylene': ('mesi00',), - 'c_H_in_Toluene': ('tol00',), + 'c_H_in_Mesitylene': ('mesi00', 'mesi'), + 'c_H_in_Toluene': ('tol00', 'tol'), 'c_H_in_YH2': ('hyh2', 'h-yh2'), 'c_H_in_ZrH': ('hzrh', 'h-zrh', 'h-zr', 'h/zr', 'hzr', 'hzr00'), 'c_Mg24': ('mg', 'mg24', 'mg00'), - 'c_O_in_Sapphire': ('osap00',), + 'c_O_in_Sapphire': ('osap00', 'osap'), 'c_O_in_BeO': ('obeo', 'o-beo', 'o-be', 'o/be', 'obeo00'), 'c_O_in_D2O': ('od2o', 'o-d2o', 'ohw00'), 'c_O_in_H2O_ice': ('oice', 'o-ice'), 'c_O_in_UO2': ('ouo2', 'o-uo2', 'o2-u', 'o2/u', 'ouo200'), 'c_N_in_UN': ('n-un',), - 'c_ortho_D': ('orthod', 'orthoD', 'dortho', 'od200'), - 'c_ortho_H': ('orthoh', 'orthoH', 'hortho', 'oh200'), - 'c_Si28': ('si00',), + 'c_ortho_D': ('orthod', 'orthoD', 'dortho', 'od200', 'ortod'), + 'c_ortho_H': ('orthoh', 'orthoH', 'hortho', 'oh200', 'ortoh'), + 'c_Si28': ('si00', 'sili'), 'c_Si_in_SiC': ('sisic', 'si-sic'), 'c_SiO2_alpha': ('sio2', 'sio2a'), 'c_SiO2_beta': ('sio2b',), @@ -722,10 +722,9 @@ class ThermalScattering(EqualityMixin): else: if element + '0' not in table.nuclides: table.nuclides.append(element + '0') - for isotope in sorted(NATURAL_ABUNDANCE): - if re.match(r'{}\d+'.format(element), isotope): - if isotope not in table.nuclides: - table.nuclides.append(isotope) + for isotope, _ in isotopes(element): + if isotope not in table.nuclides: + table.nuclides.append(isotope) return table diff --git a/openmc/deplete/chain.py b/openmc/deplete/chain.py index 88ccd95ef..e7cec9d71 100644 --- a/openmc/deplete/chain.py +++ b/openmc/deplete/chain.py @@ -147,9 +147,9 @@ def replace_missing(product, decay_data): Z, A, state = openmc.data.zam(product) symbol = openmc.data.ATOMIC_SYMBOL[Z] - # Replace neutron with proton - if Z == 0 and A == 1: - return 'H1' + # Replace neutron with nothing + if Z == 0: + return None # First check if ground state is available if state: diff --git a/openmc/element.py b/openmc/element.py index 1a258715f..6a808df62 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -4,7 +4,8 @@ import re from xml.etree import ElementTree as ET import openmc.checkvalue as cv -from openmc.data import NATURAL_ABUNDANCE, atomic_mass +from openmc.data import NATURAL_ABUNDANCE, atomic_mass, \ + isotopes as natural_isotopes class Element(str): @@ -119,10 +120,7 @@ class Element(str): cv.check_greater_than('enrichment', enrichment, 0., equality=True) # Get the nuclides present in nature - natural_nuclides = set() - for nuclide in sorted(NATURAL_ABUNDANCE.keys()): - if re.match(r'{}\d+'.format(self), nuclide): - natural_nuclides.add(nuclide) + natural_nuclides = {name for name, abundance in natural_isotopes(self)} # Create dict to store the expanded nuclides and abundances abundances = OrderedDict() diff --git a/openmc/geometry.py b/openmc/geometry.py index 3becde9a7..e7d981d7b 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -568,7 +568,8 @@ class Geometry: # Iterate through all cells contained in the geometry for cell in self.get_all_cells().values(): # Recursively remove redundant surfaces from regions - cell.region.remove_redundant_surfaces(redundant_surfaces) + if cell.region: + cell.region.remove_redundant_surfaces(redundant_surfaces) def determine_paths(self, instances_only=False): """Determine paths through CSG tree for cells and materials. diff --git a/openmc/lib/__init__.py b/openmc/lib/__init__.py index 92fd1730d..8a2d3cf7b 100644 --- a/openmc/lib/__init__.py +++ b/openmc/lib/__init__.py @@ -12,7 +12,7 @@ functions or objects in :mod:`openmc.lib`, for example: """ -from ctypes import CDLL, c_bool +from ctypes import CDLL, c_bool, c_int import os import sys @@ -42,6 +42,9 @@ else: def _dagmc_enabled(): return c_bool.in_dll(_dll, "dagmc_enabled").value +def _coord_levels(): + return c_int.in_dll(_dll, "n_coord_levels").value + from .error import * from .core import * from .nuclide import * diff --git a/openmc/material.py b/openmc/material.py index 323cb1f14..0d4fec808 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -1079,6 +1079,10 @@ class Material(IDManagerMixin): new_density = np.sum([dens for dens in mass_per_cc.values()]) new_mat.set_density('g/cm3', new_density) + # If any of the involved materials is depletable, the new material is + # depletable + new_mat.depletable = any(mat.depletable for mat in materials) + return new_mat @classmethod diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index e1c44c352..d9518e78d 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -412,7 +412,7 @@ class Library: if self.correction == 'P0' and legendre_order > 0: msg = 'The P0 correction will be ignored since the ' \ 'scattering order {} is greater than '\ - 'zero'.format(self.legendre_order) + 'zero'.format(legendre_order) warn(msg, RuntimeWarning) self.correction = None elif self.scatter_format == 'histogram': @@ -1090,7 +1090,7 @@ class Library: subdomain=subdomain) if 'beta' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'nu-fission') + mymgxs = self.get_mgxs(domain, 'beta') xsdata.set_beta_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuclide], subdomain=subdomain) @@ -1402,11 +1402,15 @@ class Library: if self.domain_type == 'material': # Fill all appropriate Cells with new Material for cell in all_cells: - if cell.fill.id == domain.id: + if isinstance(cell.fill, openmc.Material) and cell.fill.id == domain.id: cell.fill = material elif self.domain_type == 'cell': for cell in all_cells: + if not isinstance(cell.fill, openmc.Material): + warn('If the library domain includes a lattice or universe cell ' + 'in conjunction with a consituent cell of that lattice/universe, ' + 'the multi-group simulation will fail') if cell.id == domain.id: cell.fill = material diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 78828c9de..5525a6da0 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -36,7 +36,8 @@ MGXS_TYPES = ( 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', - 'prompt-nu-fission matrix' + 'prompt-nu-fission matrix', + 'current' ) # Supported domain types @@ -507,7 +508,8 @@ class MGXS: self._tallies[key] = openmc.Tally(name=self.name) self._tallies[key].scores = [score] self._tallies[key].estimator = estimator - self._tallies[key].filters = [domain_filter] + if score != 'current': + self._tallies[key].filters = [domain_filter] # If a tally trigger was specified, add it to each tally if self.tally_trigger: @@ -558,7 +560,10 @@ class MGXS: domain_type = self.domain_type[4:-1] else: domain_type = self.domain_type - filter_type = _DOMAIN_TO_FILTER[domain_type] + if self._rxn_type == 'current': + filter_type = openmc.MeshSurfaceFilter + else: + filter_type = _DOMAIN_TO_FILTER[domain_type] domain_filter = self.xs_tally.find_filter(filter_type) return domain_filter.num_bins @@ -691,7 +696,7 @@ class MGXS: Parameters ---------- - mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', 'chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', 'prompt-nu-fission matrix'} + mgxs_type : {'total', 'transport', 'nu-transport', 'absorption', 'capture', 'fission', 'nu-fission', 'kappa-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'multiplicity matrix', 'nu-fission matrix', 'chi', 'chi-prompt', 'inverse-velocity', 'prompt-nu-fission', 'prompt-nu-fission matrix', 'current'} The type of multi-group cross section object to return domain : openmc.Material or openmc.Cell or openmc.Universe or openmc.RegularMesh The domain for spatial homogenization @@ -769,6 +774,8 @@ class MGXS: elif mgxs_type == 'prompt-nu-fission matrix': mgxs = NuFissionMatrixXS(domain, domain_type, energy_groups, prompt=True) + elif mgxs_type == 'current': + mgxs = Current(domain, domain_type, energy_groups) mgxs.by_nuclide = by_nuclide mgxs.name = name @@ -4153,7 +4160,7 @@ class ScatterMatrixXS(MatrixMGXS): if self.correction == 'P0' and legendre_order > 0: msg = 'The P0 correction will be ignored since the ' \ 'scattering order {} is greater than '\ - 'zero'.format(self.legendre_order) + 'zero'.format(legendre_order) warnings.warn(msg, RuntimeWarning) self.correction = None elif self.scatter_format == SCATTER_HISTOGRAM: @@ -5891,3 +5898,472 @@ class InverseVelocity(MGXS): else: raise ValueError('Unable to return the units of InverseVelocity' ' for xs_type other than "macro"') + + +class MeshSurfaceMGXS(MGXS): + """An abstract multi-group cross section for some energy group structure + on the surfaces of a mesh domain. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute surface- and energy-integrated multi-group cross + sections for multi-group neutronics calculations. + + .. note:: Users should instantiate the subclasses of this abstract class. + + Parameters + ---------- + domain : openmc.RegularMesh + The domain for spatial homogenization + domain_type : {'mesh'} + The domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + Unused in MeshSurfaceMGXS + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + Unused in MeshSurfaceMGXS + domain : Mesh + Domain for spatial homogenization + domain_type : {'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section + 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 : 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 : int + The number of subdomains is equal to the number of mesh surfaces times + two to account for both the incoming and outgoing current from the + mesh cell surfaces. + num_nuclides : int + Unused in MeshSurfaceMGXS + nuclides : Iterable of str or 'sum' + Unused in MeshSurfaceMGXS + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + """ + + def __init__(self, domain=None, domain_type=None, energy_groups=None, + by_nuclide=False, name=''): + super(MeshSurfaceMGXS, self).__init__(domain, domain_type, energy_groups, + by_nuclide, name) + self._estimator = ['analog'] + self._valid_estimators = ['analog'] + + @property + def scores(self): + return [self.rxn_type] + + @property + def domain(self): + return self._domain + + @property + def domain_type(self): + return self._domain_type + + @domain.setter + def domain(self, domain): + cv.check_type('domain', domain, openmc.RegularMesh) + self._domain = domain + + # Assign a domain type + if self.domain_type is None: + self._domain_type = 'mesh' + + @domain_type.setter + def domain_type(self, domain_type): + cv.check_value('domain type', domain_type, 'mesh') + self._domain_type = domain_type + + @property + def filters(self): + group_edges = self.energy_groups.group_edges + energy_filter = openmc.EnergyFilter(group_edges) + mesh = _DOMAIN_TO_FILTER[self.domain_type](self.domain).mesh + meshsurface_filter = openmc.MeshSurfaceFilter(mesh) + filters = [[meshsurface_filter, energy_filter]] + + return self._add_angle_filters(filters) + + @property + def xs_tally(self): + if self._xs_tally is None: + if self.tallies is None: + msg = 'Unable to get xs_tally since tallies have ' \ + 'not been loaded from a statepoint' + raise ValueError(msg) + + self._xs_tally = self.rxn_rate_tally + self._compute_xs() + + return self._xs_tally + + def load_from_statepoint(self, statepoint): + """Extracts tallies in an OpenMC StatePoint with the data needed to + compute multi-group cross sections. + + This method is needed to compute cross section data from tallies + in an OpenMC StatePoint object. + + .. note:: The statepoint must first be linked with a :class:`openmc.Summary` + object. + + Parameters + ---------- + statepoint : openmc.StatePoint + An OpenMC StatePoint object with tally data + Raises + ------ + ValueError + When this method is called with a statepoint that has not been + linked with a summary object. + """ + + cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) + + if statepoint.summary is None: + msg = 'Unable to load data from a statepoint which has not been ' \ + 'linked with a summary file' + raise ValueError(msg) + + filters= [] + filter_bins = [] + + # Clear any tallies previously loaded from a statepoint + if self.loaded_sp: + self._tallies = None + self._xs_tally = None + self._rxn_rate_tally = None + self._loaded_sp = False + + # Find, slice and store Tallies from StatePoint + # The tally slicing is needed if tally merging was used + for tally_type, tally in self.tallies.items(): + sp_tally = statepoint.get_tally( + tally.scores, tally.filters, tally.nuclides, + estimator=tally.estimator, exact_filters=True) + sp_tally = sp_tally.get_slice( + tally.scores, filters, filter_bins, tally.nuclides) + sp_tally.sparse = self.sparse + self.tallies[tally_type] = sp_tally + + self._loaded_sp = True + + def get_xs(self, groups='all', subdomains='all', nuclides='all', + xs_type='macro', order_groups='increasing', + value='mean', squeeze=True, **kwargs): + r"""Returns an array of multi-group cross sections. + + This method constructs a 3D NumPy array for the requested + multi-group cross section data for one or more subdomains + (1st dimension), energy groups (2nd dimension), and nuclides + (3rd dimension). + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + Unused in MeshSurfaceMGXS, its value will be ignored. The nuclides + dimension of the resultant array will always have a length of 1. + xs_type: {'macro'} + The 'macro'/'micro' distinction does not apply to MeshSurfaceMGXS. + The calculation of a 'micro' xs_type is omited in this class. + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. + value : {'mean', 'std_dev', 'rel_err'} + A string for the type of value to return. Defaults to 'mean'. + squeeze : bool + A boolean representing whether to eliminate the extra dimensions + of the multi-dimensional array to be returned. Defaults to True. + Returns + ------- + 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. + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + """ + + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro']) + + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if not isinstance(subdomains, str): + cv.check_iterable_type('subdomains', subdomains, Integral, + max_depth=3) + + filters.append(_DOMAIN_TO_FILTER[self.domain_type]) + subdomain_bins = [] + for subdomain in subdomains: + subdomain_bins.append(subdomain) + filter_bins.append(tuple(subdomain_bins)) + + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Construct list of energy group bounds tuples for all requested groups + if not isinstance(groups, str): + cv.check_iterable_type('groups', groups, Integral) + filters.append(openmc.EnergyFilter) + energy_bins = [] + for group in groups: + energy_bins.append( + (self.energy_groups.get_group_bounds(group),)) + filter_bins.append(tuple(energy_bins)) + + # Eliminate the trivial score dimension + xs = np.squeeze(xs, axis=len(xs.shape) - 1) + xs = np.nan_to_num(xs) + + if groups == 'all': + num_groups = self.num_groups + else: + num_groups = len(groups) + + # Reshape tally data array with separate axes for domain and energy + # Accomodate the polar and azimuthal bins if needed + num_surfaces = 4 * self.domain.n_dimension + num_subdomains = int(xs.shape[0] / (num_groups * self.num_polar * + self.num_azimuthal * num_surfaces)) + if self.num_polar > 1 or self.num_azimuthal > 1: + new_shape = (self.num_polar, self.num_azimuthal, num_subdomains, + num_groups, num_surfaces) + else: + new_shape = (num_subdomains, num_groups, num_surfaces) + new_shape += xs.shape[1:] + new_xs = np.zeros(new_shape) + for cell in range(num_subdomains): + for g in range(num_groups): + for s in range(num_surfaces): + new_xs[cell,g,s] = \ + xs[cell*num_surfaces*num_groups+s*num_groups+g] + xs = new_xs + + # Reverse data if user requested increasing energy groups since + # tally data is stored in order of increasing energies + if order_groups == 'increasing': + xs = xs[..., ::-1, :, :] + + if squeeze: + # We want to squeeze out everything but the polar, azimuthal, + # and energy group data. + xs = self._squeeze_xs(xs) + + return xs + + def get_pandas_dataframe(self, groups='all', nuclides='all', + xs_type='macro', paths=True): + """Build a Pandas DataFrame for the MGXS data. + + This method leverages :meth:`openmc.Tally.get_pandas_dataframe`, but + renames the columns with terminology appropriate for cross section data. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest. Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + Unused in MeshSurfaceMGXS, its value will be ignored. The nuclides + dimension of the resultant array will always have a length of 1. + xs_type: {'macro'} + 'micro' unused in MeshSurfaceMGXS. + paths : bool, optional + Construct columns for distribcell tally filters (default is True). + The geometric information in the Summary object is embedded into + a Multi-index column with a geometric "path" to each distribcell + instance. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame for the cross section data. + + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + """ + + if not isinstance(groups, str): + cv.check_iterable_type('groups', groups, Integral) + cv.check_value('xs_type', xs_type, ['macro']) + + df = self.xs_tally.get_pandas_dataframe(paths=paths) + + # Remove the score column since it is homogeneous and redundant + df = df.drop('score', axis=1, level=0) + + # Convert azimuthal, polar, energy in and energy out bin values in to + # bin indices + columns = self._df_convert_columns_to_bins(df) + + # Select out those groups the user requested + if not isinstance(groups, str): + if 'group in' in df: + df = df[df['group in'].isin(groups)] + if 'group out' in df: + df = df[df['group out'].isin(groups)] + + mesh_str = 'mesh {0}'.format(self.domain.id) + col_key = (mesh_str, 'surf') + surfaces = df.pop(col_key) + df.insert(len(self.domain.dimension), col_key, surfaces) + if len(self.domain.dimension) == 1: + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'surf')] + + columns, inplace=True) + elif len(self.domain.dimension) == 2: + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), + (mesh_str, 'surf')] + columns, inplace=True) + elif len(self.domain.dimension) == 3: + df.sort_values(by=[(mesh_str, 'x'), (mesh_str, 'y'), + (mesh_str, 'z'), (mesh_str, 'surf')] + columns, inplace=True) + + return df + + +class Current(MeshSurfaceMGXS): + r"""A current multi-group cross section. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute surface- and energy-integrated + multi-group current cross sections for multi-group neutronics calculations. At + a minimum, one needs to set the :attr:`Current.energy_groups` and + :attr:`Current.domain` properties. Tallies for the appropriate + reaction rates over the specified domain are generated automatically via the + :attr:`Current.tallies` property, which can then be appended to a + :class:`openmc.Tallies` instance. + + For post-processing, the :meth:`MGXS.load_from_statepoint` will pull in the + necessary data to compute multi-group cross sections from a + :class:`openmc.StatePoint` instance. The derived multi-group cross section + can then be obtained from the :attr:`Current.xs_tally` property. + For a spatial domain :math:`S` and energy group :math:`[E_g,E_{g-1}]`, the + total cross section is calculated as: + + .. math:: + \frac{\int_{r \in S} dS \int_{E_g}^{E_{g-1}} dE \; + J(r, E)}{\int_{r \in S} dS \int_{E_g}^{E_{g-1}} dE}. + + Parameters + ---------- + domain : openmc.RegularMesh + The domain for spatial homogenization + domain_type : ('mesh'} + The domain type for spatial homogenization + groups : openmc.mgxs.EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + Unused in MeshSurfaceMGXS + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + name : str, optional + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + Unused in MeshSurfaceMGXS + domain : openmc.RegularMesh + Domain for spatial homogenization + domain_type : {'mesh'} + Domain type for spatial homogenization + energy_groups : openmc.mgxs.EnergyGroups + Energy group structure for energy condensation + tally_trigger : openmc.Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section + scores : list of str + The scores in each tally used to compute the multi-group cross section + filters : list of openmc.Filter + The filters in each tally used to compute the multi-group cross section + tally_keys : list of str + The keys into the tallies dictionary for each tally used to compute + the multi-group cross section + estimator : {'analog'} + The tally estimator used to compute the multi-group cross section + tallies : collections.OrderedDict + OpenMC tallies needed to compute the multi-group cross section. The keys + are strings listed in the :attr:`TotalXS.tally_keys` property and values + are instances of :class:`openmc.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 : 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 : int + The number of subdomains is equal to the number of mesh surfaces times + two to account for both the incoming and outgoing current from the + mesh cell surfaces. + num_nuclides : int + Unused in MeshSurfaceMGXS + nuclides : Iterable of str or 'sum' + Unused in MeshSurfaceMGXS + sparse : bool + Whether or not the MGXS' tallies use SciPy's LIL sparse matrix format + for compressed data storage + loaded_sp : bool + Whether or not a statepoint file has been loaded with tally data + derived : bool + Whether or not the MGXS is merged from one or more other MGXS + hdf5_key : str + The key used to index multi-group cross sections in an HDF5 data store + """ + + def __init__(self, domain=None, domain_type=None, + groups=None, by_nuclide=False, name=''): + super(Current, self).__init__(domain, domain_type, + groups, by_nuclide, name) + self._rxn_type = 'current' diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index c8eafd4a1..c2a4a9db7 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -349,6 +349,18 @@ class XSdata: def chi_delayed(self): return self._chi_delayed + @property + def beta(self): + return self._beta + + @property + def decay_rate(self): + return self._decay_rate + + @property + def inverse_velocity(self): + return self._inverse_velocity + @property def num_orders(self): if self._order is None: diff --git a/openmc/source.py b/openmc/source.py index cc749c324..22952b4a5 100644 --- a/openmc/source.py +++ b/openmc/source.py @@ -22,6 +22,8 @@ class Source: Source file from which sites should be sampled library : str Path to a custom source library + parameters : str + Parameters to be provided to the custom source library .. versionadded:: 0.12 strength : float @@ -41,6 +43,8 @@ class Source: Source file from which sites should be sampled library : str or None Path to a custom source library + parameters : str + Parameters to be provided to the custom source library strength : float Strength of the source particle : {'neutron', 'photon'} @@ -49,12 +53,13 @@ class Source: """ def __init__(self, space=None, angle=None, energy=None, filename=None, - library=None, strength=1.0, particle='neutron'): + library=None, parameters=None, strength=1.0, particle='neutron'): self._space = None self._angle = None self._energy = None self._file = None self._library = None + self._parameters = None if space is not None: self.space = space @@ -66,6 +71,8 @@ class Source: self.file = filename if library is not None: self.library = library + if parameters is not None: + self.parameters = parameters self.strength = strength self.particle = particle @@ -77,6 +84,10 @@ class Source: def library(self): return self._library + @property + def parameters(self): + return self._parameters + @property def space(self): return self._space @@ -107,6 +118,11 @@ class Source: cv.check_type('library', library_name, str) self._library = library_name + @parameters.setter + def parameters(self, parameters_path): + cv.check_type('parameters', parameters_path, str) + self._parameters = parameters_path + @space.setter def space(self, space): cv.check_type('spatial distribution', space, Spatial) @@ -150,6 +166,8 @@ class Source: element.set("file", self.file) if self.library is not None: element.set("library", self.library) + if self.parameters is not None: + element.set("parameters", self.parameters) if self.space is not None: element.append(self.space.to_xml_element()) if self.angle is not None: @@ -191,6 +209,10 @@ class Source: if library is not None: source.library = library + parameters = get_text(elem, 'parameters') + if parameters is not None: + source.parameters = parameters + space = elem.find('space') if space is not None: source.space = Spatial.from_xml_element(space) diff --git a/scripts/openmc-plot-mesh-tally b/scripts/openmc-plot-mesh-tally index 6716b6609..fad2df418 100755 --- a/scripts/openmc-plot-mesh-tally +++ b/scripts/openmc-plot-mesh-tally @@ -26,7 +26,7 @@ _COMBOBOX_SELECTED = '<>' class MeshPlotter(tk.Frame): def __init__(self, parent, filename): - super().__init__(self, parent) + super().__init__(parent) self.labels = { 'Cell': 'Cell:', diff --git a/src/cell.cpp b/src/cell.cpp index 6c2bbf6bd..6ca39749f 100644 --- a/src/cell.cpp +++ b/src/cell.cpp @@ -779,7 +779,7 @@ CSGCell::contains_complex(Position r, Direction u, int32_t on_surface) const // DAGMC Cell implementation //============================================================================== #ifdef DAGMC -DAGCell::DAGCell() : Cell{} {}; +DAGCell::DAGCell() : Cell{} { simple_ = true; }; std::pair DAGCell::distance(Position r, Direction u, int32_t on_surface, Particle* p) const diff --git a/src/mesh.cpp b/src/mesh.cpp index 82bacdcf5..c7d6ba7b4 100644 --- a/src/mesh.cpp +++ b/src/mesh.cpp @@ -2015,6 +2015,34 @@ UnstructuredMesh::add_score(std::string score) const { auto score_tags = this->get_score_tags(score); } +void UnstructuredMesh::remove_score(std::string score) const { + auto value_name = score + "_mean"; + moab::Tag tag; + moab::ErrorCode rval = mbi_->tag_get_handle(value_name.c_str(), tag); + if (rval != moab::MB_SUCCESS) return; + + rval = mbi_->tag_delete(tag); + if (rval != moab::MB_SUCCESS) { + auto msg = fmt::format("Failed to delete mesh tag for the score {}" + " on unstructured mesh {}", score, id_); + fatal_error(msg); + } + + auto std_dev_name = score + "_std_dev"; + rval = mbi_->tag_get_handle(std_dev_name.c_str(), tag); + if (rval != moab::MB_SUCCESS) { + auto msg = fmt::format("Std. Dev. mesh tag does not exist for the score {}" + " on unstructured mesh {}", score, id_); + } + + rval = mbi_->tag_delete(tag); + if (rval != moab::MB_SUCCESS) { + auto msg = fmt::format("Failed to delete mesh tag for the score {}" + " on unstructured mesh {}", score, id_); + fatal_error(msg); + } +} + void UnstructuredMesh::set_score_data(const std::string& score, std::vector values, diff --git a/src/nuclide.cpp b/src/nuclide.cpp index 59c631167..d388ed4ab 100644 --- a/src/nuclide.cpp +++ b/src/nuclide.cpp @@ -237,6 +237,16 @@ Nuclide::Nuclide(hid_t group, const std::vector& temperature) // section should be determined from a normal reaction cross section, we // need to get the index of the reaction. if (temps_to_read.size() > 0) { + // Make sure inelastic flags are consistent for different temperatures + for (int i = 0; i < urr_data_.size() - 1; ++i) { + if (urr_data_[i].inelastic_flag_ != urr_data_[i+1].inelastic_flag_) { + fatal_error(fmt::format("URR inelastic flag is not consistent for " + "multiple temperatures in nuclide {}. This most likely indicates " + "a problem in how the data was processed.", name_)); + } + } + + if (urr_data_[0].inelastic_flag_ > 0) { for (int i = 0; i < reactions_.size(); i++) { if (reactions_[i]->mt_ == urr_data_[0].inelastic_flag_) { diff --git a/src/particle.cpp b/src/particle.cpp index a983b6600..0b5067165 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -410,7 +410,7 @@ Particle::cross_surface() // TODO: off-by-one const auto& surf {model::surfaces[i_surface - 1].get()}; if (settings::verbosity >= 10 || trace_) { - write_message(" Crossing surface {}", surf->id_); + write_message(1, " Crossing surface {}", surf->id_); } if (surf->bc_ == Surface::BoundaryType::VACUUM && (settings::run_mode != RunMode::PLOTTING)) { @@ -437,7 +437,7 @@ Particle::cross_surface() // Display message if (settings::verbosity >= 10 || trace_) { - write_message(" Leaked out of surface {}", surf->id_); + write_message(1, " Leaked out of surface {}", surf->id_); } return; @@ -502,7 +502,7 @@ Particle::cross_surface() // Diagnostic message if (settings::verbosity >= 10 || trace_) { - write_message(" Reflected from surface {}", surf->id_); + write_message(1, " Reflected from surface {}", surf->id_); } return; @@ -556,7 +556,7 @@ Particle::cross_surface() // Diagnostic message if (settings::verbosity >= 10 || trace_) { - write_message(" Hit periodic boundary on surface {}", surf->id_); + write_message(1, " Hit periodic boundary on surface {}", surf->id_); } return; } diff --git a/src/plot.cpp b/src/plot.cpp index 283207a42..20c3c986e 100644 --- a/src/plot.cpp +++ b/src/plot.cpp @@ -41,14 +41,21 @@ IdData::IdData(size_t h_res, size_t v_res) void IdData::set_value(size_t y, size_t x, const Particle& p, int level) { - Cell* c = model::cells[p.coord_[level].cell].get(); - data_(y,x,0) = c->id_; + // set cell data + if (p.n_coord_ <= level) { + data_(y, x, 0) = NOT_FOUND; + } else { + data_(y, x, 0) = model::cells.at(p.coord_.at(level).cell)->id_; + } + + // set material data + Cell* c = model::cells.at(p.coord_.at(p.n_coord_ - 1).cell).get(); if (p.material_ == MATERIAL_VOID) { - data_(y,x,1) = MATERIAL_VOID; + data_(y, x, 1) = MATERIAL_VOID; return; - } else if (c->type_ != Fill::UNIVERSE) { - Material* m = model::materials[p.material_].get(); - data_(y,x,1) = m->id_; + } else if (c->type_ == Fill::MATERIAL) { + Material* m = model::materials.at(p.material_).get(); + data_(y, x, 1) = m->id_; } } @@ -62,10 +69,10 @@ PropertyData::PropertyData(size_t h_res, size_t v_res) void PropertyData::set_value(size_t y, size_t x, const Particle& p, int level) { - Cell* c = model::cells[p.coord_[level].cell].get(); + Cell* c = model::cells.at(p.coord_.at(p.n_coord_ - 1).cell).get(); data_(y,x,0) = (p.sqrtkT_ * p.sqrtkT_) / K_BOLTZMANN; if (c->type_ != Fill::UNIVERSE && p.material_ != MATERIAL_VOID) { - Material* m = model::materials[p.material_].get(); + Material* m = model::materials.at(p.material_).get(); data_(y,x,1) = m->density_gpcc_; } } diff --git a/src/reaction.cpp b/src/reaction.cpp index 3b80aa10d..5d3e85b5b 100644 --- a/src/reaction.cpp +++ b/src/reaction.cpp @@ -87,7 +87,7 @@ Reaction::Reaction(hid_t group, const std::vector& temperatures) // Non-member functions //============================================================================== -const std::unordered_map REACTION_NAME_MAP { +std::unordered_map REACTION_NAME_MAP { {SCORE_FLUX, "flux"}, {SCORE_TOTAL, "total"}, {SCORE_SCATTER, "scatter"}, @@ -150,6 +150,55 @@ const std::unordered_map REACTION_NAME_MAP { {N_PD, "(n,pd)"}, {N_PT, "(n,pt)"}, {N_DA, "(n,da)"}, + {N_5N, "(n,5n)"}, + {N_6N, "(n,6n)"}, + {N_2NT, "(n,2nt)"}, + {N_TA, "(n,ta)"}, + {N_4NP, "(n,4np)"}, + {N_3ND, "(n,3nd)"}, + {N_NDA, "(n,nda)"}, + {N_2NPA, "(n,2npa)"}, + {N_7N, "(n,7n)"}, + {N_8N, "(n,8n)"}, + {N_5NP, "(n,5np)"}, + {N_6NP, "(n,6np)"}, + {N_7NP, "(n,7np)"}, + {N_4NA, "(n,4na)"}, + {N_5NA, "(n,5na)"}, + {N_6NA, "(n,6na)"}, + {N_7NA, "(n,7na)"}, + {N_4ND, "(n,4nd)"}, + {N_5ND, "(n,5nd)"}, + {N_6ND, "(n,6nd)"}, + {N_3NT, "(n,3nt)"}, + {N_4NT, "(n,4nt)"}, + {N_5NT, "(n,5nt)"}, + {N_6NT, "(n,6nt)"}, + {N_2N3HE, "(n,2n3He)"}, + {N_3N3HE, "(n,3n3He)"}, + {N_4N3HE, "(n,4n3He)"}, + {N_3N2P, "(n,3n2p)"}, + {N_3N3A, "(n,3n3a)"}, + {N_3NPA, "(n,3npa)"}, + {N_DT, "(n,dt)"}, + {N_NPD, "(n,npd)"}, + {N_NPT, "(n,npt)"}, + {N_NDT, "(n,ndt)"}, + {N_NP3HE, "(n,np3He)"}, + {N_ND3HE, "(n,nd3He)"}, + {N_NT3HE, "(n,nt3He)"}, + {N_NTA, "(n,nta)"}, + {N_2N2P, "(n,2n2p)"}, + {N_P3HE, "(n,p3He)"}, + {N_D3HE, "(n,d3He)"}, + {N_3HEA, "(n,3Hea)"}, + {N_4N2P, "(n,4n2p)"}, + {N_4N2A, "(n,4n2a)"}, + {N_4NPA, "(n,4npa)"}, + {N_3P, "(n,3p)"}, + {N_N3P, "(n,n3p)"}, + {N_3N2PA, "(n,3n2pa)"}, + {N_5N2P, "(n,5n2p)"}, {201, "(n,Xn)"}, {202, "(n,Xgamma)"}, {N_XP, "(n,Xp)"}, @@ -174,32 +223,100 @@ const std::unordered_map REACTION_NAME_MAP { {HEATING_LOCAL, "heating-local"}, }; -std::string reaction_name(int mt) +std::unordered_map REACTION_TYPE_MAP; + +void initialize_maps() { - if (N_N1 <= mt && mt <= N_N40) { - return fmt::format("(n,n{})", mt - 50); - } else if (534 <= mt && mt <= 572) { - return fmt::format("photoelectric, {} subshell", SUBSHELLS[mt - 534]); - } else if (N_P0 <= mt && mt < N_PC) { - return fmt::format("(n,p{})", mt - N_P0); - } else if (N_D0 <= mt && mt < N_DC) { - return fmt::format("(n,d{})", mt - N_D0); - } else if (N_T0 <= mt && mt < N_TC) { - return fmt::format("(n,t{})", mt - N_T0); - } else if (N_3HE0 <= mt && mt < N_3HEC) { - return fmt::format("(n,3He{})", mt - N_3HE0); - } else if (N_A0 <= mt && mt < N_AC) { - return fmt::format("(n,a{})", mt - N_A0); - } else if (N_2N0 <= mt && mt < N_2NC) { - return fmt::format("(n,2n{})", mt - N_2N0); - } else { - auto it = REACTION_NAME_MAP.find(mt); - if (it != REACTION_NAME_MAP.end()) { - return it->second; - } else { - return fmt::format("MT={}", mt); + // Add level reactions to name map + for (int level = 0; level <= 48; ++level) { + if (level >= 1 && level <= 40) { + REACTION_NAME_MAP[50 + level] = fmt::format("(n,n{})", level); } + REACTION_NAME_MAP[600 + level] = fmt::format("(n,p{})", level); + REACTION_NAME_MAP[650 + level] = fmt::format("(n,d{})", level); + REACTION_NAME_MAP[700 + level] = fmt::format("(n,t{})", level); + REACTION_NAME_MAP[750 + level] = fmt::format("(n,3He{})", level); + REACTION_NAME_MAP[800 + level] = fmt::format("(n,a{})", level); + if (level <= 15) { + REACTION_NAME_MAP[875 + level] = fmt::format("(n,2n{})", level); + } + } + + // Create photoelectric subshells + for (int mt = 534; mt <= 572; ++mt) { + REACTION_NAME_MAP[mt] = fmt::format("photoelectric, {} subshell", + SUBSHELLS[mt - 534]); + } + + // Invert name map to create type map + for (const auto& kv : REACTION_NAME_MAP) { + REACTION_TYPE_MAP[kv.second] = kv.first; } } +std::string reaction_name(int mt) +{ + // Initialize remainder of name map and all of type map + if (REACTION_TYPE_MAP.empty()) initialize_maps(); + + // Get reaction name from map + auto it = REACTION_NAME_MAP.find(mt); + if (it != REACTION_NAME_MAP.end()) { + return it->second; + } else { + return fmt::format("MT={}", mt); + } +} + +int reaction_type(std::string name) +{ + // Initialize remainder of name map and all of type map + if (REACTION_TYPE_MAP.empty()) initialize_maps(); + + // (n,total) exists in REACTION_TYPE_MAP for MT=1, but we need this to return + // the special SCORE_TOTAL score + if (name == "(n,total)") return SCORE_TOTAL; + + // Check if type map has an entry for this reaction name + auto it = REACTION_TYPE_MAP.find(name); + if (it != REACTION_TYPE_MAP.end()) { + return it->second; + } + + // Alternate names for several reactions + if (name == "elastic") { + return ELASTIC; + } else if (name == "n2n") { + return N_2N; + } else if (name == "n3n") { + return N_3N; + } else if (name == "n4n") { + return N_4N; + } else if (name == "H1-production") { + return N_XP; + } else if (name == "H2-production") { + return N_XD; + } else if (name == "H3-production") { + return N_XT; + } else if (name == "He3-production") { + return N_X3HE; + } else if (name == "He4-production") { + return N_XA; + } + + // Assume the given string is a reaction MT number. Make sure it's a natural + // number then return. + int MT = 0; + try { + MT = std::stoi(name); + } catch (const std::invalid_argument& ex) { + throw std::invalid_argument("Invalid tally score \"" + name + "\". See the docs " + "for details: https://docs.openmc.org/en/stable/usersguide/tallies.html#scores"); + } + if (MT < 1) + throw std::invalid_argument("Invalid tally score \"" + name + "\". See the docs " + "for details: https://docs.openmc.org/en/stable/usersguide/tallies.html#scores"); + return MT; +} + } // namespace openmc diff --git a/src/source.cpp b/src/source.cpp index e2cdace01..4f4ad117b 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -5,6 +5,7 @@ #endif #include // for move +#include // for unique_ptr #ifdef HAS_DYNAMIC_LINKING #include // for dlopen, dlsym, dlclose, dlerror @@ -44,9 +45,9 @@ std::vector external_sources; namespace { -using sample_t = Particle::Bank (*)(uint64_t* seed); -sample_t custom_source_function; void* custom_source_library; +std::string custom_source_parameters; +std::unique_ptr custom_source; } @@ -94,6 +95,10 @@ SourceDistribution::SourceDistribution(pugi::xml_node node) fatal_error(fmt::format("Source library '{}' does not exist.", settings::path_source_library)); } + + if (check_for_node(node, "parameters")) { + custom_source_parameters = get_node_value(node, "parameters", false, true); + } } else { // Spatial distribution for external source @@ -366,17 +371,21 @@ void load_custom_source_library() // reset errors dlerror(); - // get the function from the library - using sample_t = Particle::Bank (*)(uint64_t* seed); - custom_source_function = reinterpret_cast(dlsym(custom_source_library, "sample_source")); + // get the function to create the CustomSource from the library + auto create_custom_source = reinterpret_cast( + dlsym(custom_source_library, "openmc_create_source")); // check for any dlsym errors auto dlsym_error = dlerror(); if (dlsym_error) { + std::string error_msg = fmt::format("Couldn't open the openmc_create_source symbol: {}", dlsym_error); dlclose(custom_source_library); - fatal_error(fmt::format("Couldn't open the sample_source symbol: {}", dlsym_error)); + fatal_error(error_msg); } + // create a pointer to an instance of the CustomSource + custom_source = create_custom_source(custom_source_parameters); + #else fatal_error("Custom source libraries have not yet been implemented for " "non-POSIX systems"); @@ -385,6 +394,11 @@ void load_custom_source_library() void close_custom_source_library() { + if (custom_source.get()) { + // Make sure the custom source is destroyed before we close it's libary. + custom_source.reset(); + } + #ifdef HAS_DYNAMIC_LINKING dlclose(custom_source_library); #else @@ -395,7 +409,8 @@ void close_custom_source_library() Particle::Bank sample_custom_source_library(uint64_t* seed) { - return custom_source_function(seed); + // sample from the instance of the CustomSource + return custom_source->sample(seed); } void fill_source_bank_custom_source() diff --git a/src/state_point.cpp b/src/state_point.cpp index bf249aa98..409a6ba7d 100644 --- a/src/state_point.cpp +++ b/src/state_point.cpp @@ -687,6 +687,8 @@ void read_source_bank(hid_t group_id) void write_unstructured_mesh_results() { for (auto& tally : model::tallies) { + + std::vector tally_scores; for (auto filter_idx : tally->filters()) { auto& filter = model::tally_filters[filter_idx]; if (filter->type() != "mesh") continue; @@ -741,6 +743,7 @@ void write_unstructured_mesh_results() { std::string score_name = tally->score_name(i_score); auto score_str = fmt::format("{}_{}", score_name, nuclide_name); + tally_scores.push_back(score_str); umesh->set_score_data(score_str, mean_vec, std_dev_vec); } } @@ -754,6 +757,8 @@ void write_unstructured_mesh_results() { w); // Write the unstructured mesh and data to file umesh->write(filename); + + for (const auto& score : tally_scores) { umesh->remove_score(score); } } } } diff --git a/src/surface.cpp b/src/surface.cpp index f5a7f9f5f..f2faa3efe 100644 --- a/src/surface.cpp +++ b/src/surface.cpp @@ -172,11 +172,9 @@ Surface::reflect(Position r, Direction u, Particle* p) const // Determine projection of direction onto normal and squared magnitude of // normal. Direction n = normal(r); - const double projection = n.dot(u); - const double magnitude = n.dot(n); // Reflect direction according to normal. - return u -= (2.0 * projection / magnitude) * n; + return u.reflect(n); } Direction @@ -279,7 +277,13 @@ Direction DAGSurface::reflect(Position r, Direction u, Particle* p) const { Expects(p); p->history_.reset_to_last_intersection(); - p->last_dir_ = Surface::reflect(r, u, p); + moab::ErrorCode rval; + moab::EntityHandle surf = dagmc_ptr_->entity_by_index(2, dag_index_); + double pnt[3] = {r.x, r.y, r.z}; + double dir[3]; + rval = dagmc_ptr_->get_angle(surf, pnt, dir, &p->history_); + MB_CHK_ERR_CONT(rval); + p->last_dir_ = u.reflect(dir); return p->last_dir_; } diff --git a/src/tallies/tally.cpp b/src/tallies/tally.cpp index 7ae53dc9f..0131592f8 100644 --- a/src/tallies/tally.cpp +++ b/src/tallies/tally.cpp @@ -65,189 +65,6 @@ double global_tally_collision; double global_tally_tracklength; double global_tally_leakage; -int -score_str_to_int(std::string score_str) -{ - if (score_str == "flux") - return SCORE_FLUX; - - if (score_str == "total" || score_str == "(n,total)") - return SCORE_TOTAL; - - if (score_str == "scatter") - return SCORE_SCATTER; - - if (score_str == "nu-scatter") - return SCORE_NU_SCATTER; - - if (score_str == "absorption") - return SCORE_ABSORPTION; - - if (score_str == "fission" || score_str == "18") - return SCORE_FISSION; - - if (score_str == "nu-fission") - return SCORE_NU_FISSION; - - if (score_str == "decay-rate") - return SCORE_DECAY_RATE; - - if (score_str == "delayed-nu-fission") - return SCORE_DELAYED_NU_FISSION; - - if (score_str == "prompt-nu-fission") - return SCORE_PROMPT_NU_FISSION; - - if (score_str == "kappa-fission") - return SCORE_KAPPA_FISSION; - - if (score_str == "inverse-velocity") - return SCORE_INVERSE_VELOCITY; - - if (score_str == "fission-q-prompt") - return SCORE_FISS_Q_PROMPT; - - if (score_str == "fission-q-recoverable") - return SCORE_FISS_Q_RECOV; - - if (score_str == "heating") - return HEATING; - - if (score_str == "heating-local") - return HEATING_LOCAL; - - if (score_str == "current") - return SCORE_CURRENT; - - if (score_str == "events") - return SCORE_EVENTS; - - if (score_str == "elastic" || score_str == "(n,elastic)") - return ELASTIC; - - if (score_str == "n2n" || score_str == "(n,2n)") - return N_2N; - - if (score_str == "n3n" || score_str == "(n,3n)") - return N_3N; - - if (score_str == "n4n" || score_str == "(n,4n)") - return N_4N; - - if (score_str == "(n,2nd)") - return N_2ND; - if (score_str == "(n,na)") - return N_NA; - if (score_str == "(n,n3a)") - return N_N3A; - if (score_str == "(n,2na)") - return N_2NA; - if (score_str == "(n,3na)") - return N_3NA; - if (score_str == "(n,np)") - return N_NP; - if (score_str == "(n,n2a)") - return N_N2A; - if (score_str == "(n,2n2a)") - return N_2N2A; - if (score_str == "(n,nd)") - return N_ND; - if (score_str == "(n,nt)") - return N_NT; - if (score_str == "(n,n3He)") - return N_N3HE; - if (score_str == "(n,nd2a)") - return N_ND2A; - if (score_str == "(n,nt2a)") - return N_NT2A; - if (score_str == "(n,3nf)") - return N_3NF; - if (score_str == "(n,2np)") - return N_2NP; - if (score_str == "(n,3np)") - return N_3NP; - if (score_str == "(n,n2p)") - return N_N2P; - if (score_str == "(n,npa)") - return N_NPA; - if (score_str == "(n,n1)") - return N_N1; - if (score_str == "(n,nc)") - return N_NC; - if (score_str == "(n,gamma)") - return N_GAMMA; - if (score_str == "(n,p)") - return N_P; - if (score_str == "(n,d)") - return N_D; - if (score_str == "(n,t)") - return N_T; - if (score_str == "(n,3He)") - return N_3HE; - if (score_str == "(n,a)") - return N_A; - if (score_str == "(n,2a)") - return N_2A; - if (score_str == "(n,3a)") - return N_3A; - if (score_str == "(n,2p)") - return N_2P; - if (score_str == "(n,pa)") - return N_PA; - if (score_str == "(n,t2a)") - return N_T2A; - if (score_str == "(n,d2a)") - return N_D2A; - if (score_str == "(n,pd)") - return N_PD; - if (score_str == "(n,pt)") - return N_PT; - if (score_str == "(n,da)") - return N_DA; - if (score_str == "(n,Xp)" || score_str == "H1-production") - return N_XP; - if (score_str == "(n,Xd)" || score_str == "H2-production") - return N_XD; - if (score_str == "(n,Xt)" || score_str == "H3-production") - return N_XT; - if (score_str == "(n,X3He)" || score_str == "He3-production") - return N_X3HE; - if (score_str == "(n,Xa)" || score_str == "He4-production") - return N_XA; - if (score_str == "damage-energy") - return DAMAGE_ENERGY; - if (score_str == "coherent-scatter") - return COHERENT; - if (score_str == "incoherent-scatter") - return INCOHERENT; - if (score_str == "pair-production") - return PAIR_PROD; - if (score_str == "photoelectric") - return PHOTOELECTRIC; - - // So far we have not identified this score string. Check to see if it is a - // deprecated score. - if (score_str.rfind("scatter-", 0) == 0 - || score_str.rfind("nu-scatter-", 0) == 0 - || score_str.rfind("total-y", 0) == 0 - || score_str.rfind("flux-y", 0) == 0) - fatal_error(score_str + " is no longer an available score"); - - // Assume the given string is a reaction MT number. Make sure it's a natural - // number then return. - int MT; - try { - MT = std::stoi(score_str); - } catch (const std::invalid_argument& ex) { - throw std::invalid_argument("Invalid tally score \"" + score_str + "\". See the docs " - "for details: https://docs.openmc.org/en/stable/usersguide/tallies.html#scores"); - } - if (MT < 1) - throw std::invalid_argument("Invalid tally score \"" + score_str + "\". See the docs " - "for details: https://docs.openmc.org/en/stable/usersguide/tallies.html#scores"); - return MT; -} - //============================================================================== // Tally object implementation //============================================================================== @@ -593,7 +410,8 @@ Tally::set_scores(const std::vector& scores) fatal_error("Cannot tally " + score_str + "with a delayedgroup filter"); } - auto score = score_str_to_int(score_str); + // Determine integer code for score + int score = reaction_type(score_str); switch (score) { case SCORE_FLUX: diff --git a/tests/regression_tests/mgxs_library_condense/inputs_true.dat b/tests/regression_tests/mgxs_library_condense/inputs_true.dat index 5aedd383d..8e649ea82 100644 --- a/tests/regression_tests/mgxs_library_condense/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_condense/inputs_true.dat @@ -50,7 +50,12 @@ - + + 2 2 + -100.0 -100.0 + 100.0 100.0 + + 1 @@ -68,15 +73,12 @@ 0.0 20000000.0 - + + 1 + + 1 2 3 4 5 6 - - 2 - - - 3 - 1 2 total @@ -384,793 +386,67 @@ analog + 66 2 + total + current + analog + + 1 2 total flux tracklength - - 1 65 2 + + 1 69 2 total delayed-nu-fission tracklength - - 1 65 52 - total - delayed-nu-fission - analog - - 1 65 5 + 1 69 52 total delayed-nu-fission analog + 1 69 5 + total + delayed-nu-fission + analog + + 1 2 total nu-fission tracklength - - 1 65 2 - total - delayed-nu-fission - tracklength - - 1 65 2 + 1 69 2 total delayed-nu-fission tracklength - 1 65 2 + 1 69 2 + total + delayed-nu-fission + tracklength + + + 1 69 2 total decay-rate tracklength - + 1 2 total flux analog - - 1 65 2 5 - total - delayed-nu-fission - analog - - 80 2 - total - flux - tracklength - - - 80 2 - total - total - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - total - tracklength - - - 80 2 - total - flux - analog - - - 80 5 6 - total - scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - total - tracklength - - - 80 2 - total - flux - analog - - - 80 5 6 - total - nu-scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - absorption - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - absorption - tracklength - - - 80 2 - total - fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - nu-fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - kappa-fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - scatter - tracklength - - - 80 2 - total - flux - analog - - - 80 2 - total - nu-scatter - analog - - - 80 2 - total - flux - analog - - - 80 2 5 28 - total - scatter - analog - - - 80 2 - total - flux - analog - - - 80 2 5 28 - total - nu-scatter - analog - - - 80 2 5 - total - nu-scatter - analog - - - 80 2 5 - total - scatter - analog - - - 80 2 - total - flux - analog - - - 80 2 5 - total - nu-fission - analog - - - 80 2 5 - total - scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - scatter - tracklength - - - 80 2 5 28 - total - scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - scatter - tracklength - - - 80 2 5 28 - total - scatter - analog - - - 80 2 5 - total - nu-scatter - analog - - - 80 52 - total - nu-fission - analog - - - 80 5 - total - nu-fission - analog - - - 80 52 - total - prompt-nu-fission - analog - - - 80 5 - total - prompt-nu-fission - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - inverse-velocity - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - prompt-nu-fission - tracklength - - - 80 2 - total - flux - analog - - - 80 2 5 - total - prompt-nu-fission - analog - - - 80 2 - total - flux - tracklength - - - 80 65 2 - total - delayed-nu-fission - tracklength - - - 80 65 52 - total - delayed-nu-fission - analog - - - 80 65 5 - total - delayed-nu-fission - analog - - - 80 2 - total - nu-fission - tracklength - - - 80 65 2 - total - delayed-nu-fission - tracklength - - - 80 65 2 - total - delayed-nu-fission - tracklength - - - 80 65 2 - total - decay-rate - tracklength - - - 80 2 - total - flux - analog - - - 80 65 2 5 - total - delayed-nu-fission - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - total - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - total - tracklength - - - 159 2 - total - flux - analog - - - 159 5 6 - total - scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - total - tracklength - - - 159 2 - total - flux - analog - - - 159 5 6 - total - nu-scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - absorption - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - absorption - tracklength - - - 159 2 - total - fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - nu-fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - kappa-fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - scatter - tracklength - - - 159 2 - total - flux - analog - - - 159 2 - total - nu-scatter - analog - - - 159 2 - total - flux - analog - - - 159 2 5 28 - total - scatter - analog - - - 159 2 - total - flux - analog - - - 159 2 5 28 - total - nu-scatter - analog - - - 159 2 5 - total - nu-scatter - analog - - - 159 2 5 - total - scatter - analog - - - 159 2 - total - flux - analog - - - 159 2 5 - total - nu-fission - analog - - - 159 2 5 - total - scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - scatter - tracklength - - - 159 2 5 28 - total - scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - scatter - tracklength - - - 159 2 5 28 - total - scatter - analog - - - 159 2 5 - total - nu-scatter - analog - - - 159 52 - total - nu-fission - analog - - - 159 5 - total - nu-fission - analog - - - 159 52 - total - prompt-nu-fission - analog - - - 159 5 - total - prompt-nu-fission - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - inverse-velocity - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - prompt-nu-fission - tracklength - - - 159 2 - total - flux - analog - - - 159 2 5 - total - prompt-nu-fission - analog - - - 159 2 - total - flux - tracklength - - - 159 65 2 - total - delayed-nu-fission - tracklength - - - 159 65 52 - total - delayed-nu-fission - analog - - - 159 65 5 - total - delayed-nu-fission - analog - - - 159 2 - total - nu-fission - tracklength - - - 159 65 2 - total - delayed-nu-fission - tracklength - - - 159 65 2 - total - delayed-nu-fission - tracklength - - - 159 65 2 - total - decay-rate - tracklength - - - 159 2 - total - flux - analog - - - 159 65 2 5 + 1 69 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_condense/results_true.dat b/tests/regression_tests/mgxs_library_condense/results_true.dat index d4aa6b811..55c8c834a 100644 --- a/tests/regression_tests/mgxs_library_condense/results_true.dat +++ b/tests/regression_tests/mgxs_library_condense/results_true.dat @@ -1,273 +1,344 @@ - material group in nuclide mean std. dev. -0 1 1 total 0.453624 0.021053 - material group in nuclide mean std. dev. -0 1 1 total 0.4074 0.021863 - material group in nuclide mean std. dev. -0 1 1 total 0.4074 0.021863 - material group in nuclide mean std. dev. -0 1 1 total 0.064903 0.004313 - material group in nuclide mean std. dev. -0 1 1 total 0.028048 0.00458 - material group in nuclide mean std. dev. -0 1 1 total 0.036855 0.002622 - material group in nuclide mean std. dev. -0 1 1 total 0.090649 0.00641 - material group in nuclide mean std. dev. -0 1 1 total 7.137954e+06 507363.467231 - material group in nuclide mean std. dev. -0 1 1 total 0.388721 0.01783 - material group in nuclide mean std. dev. -0 1 1 total 0.389304 0.023076 - material group in group out legendre nuclide mean std. dev. -0 1 1 1 P0 total 0.389304 0.023146 -1 1 1 1 P1 total 0.046224 0.005907 -2 1 1 1 P2 total 0.017984 0.002883 -3 1 1 1 P3 total 0.006628 0.002457 - material group in group out legendre nuclide mean std. dev. -0 1 1 1 P0 total 0.389304 0.023146 -1 1 1 1 P1 total 0.046224 0.005907 -2 1 1 1 P2 total 0.017984 0.002883 -3 1 1 1 P3 total 0.006628 0.002457 - material group in group out nuclide mean std. dev. -0 1 1 1 total 1.0 0.066111 - material group in group out nuclide mean std. dev. -0 1 1 1 total 0.085835 0.005592 - material group in group out nuclide mean std. dev. -0 1 1 1 total 1.0 0.066111 - material group in group out legendre nuclide mean std. dev. -0 1 1 1 P0 total 0.388721 0.031279 -1 1 1 1 P1 total 0.046155 0.006407 -2 1 1 1 P2 total 0.017957 0.003039 -3 1 1 1 P3 total 0.006618 0.002480 - material group in group out legendre nuclide mean std. dev. -0 1 1 1 P0 total 0.388721 0.040482 -1 1 1 1 P1 total 0.046155 0.007097 -2 1 1 1 P2 total 0.017957 0.003262 -3 1 1 1 P3 total 0.006618 0.002518 - material group out nuclide mean std. dev. -0 1 1 total 1.0 0.046071 - material group out nuclide mean std. dev. -0 1 1 total 1.0 0.051471 - material group in nuclide mean std. dev. -0 1 1 total 4.996730e-07 3.650633e-08 - material group in nuclide mean std. dev. -0 1 1 total 0.090004 0.006367 - material group in group out nuclide mean std. dev. -0 1 1 1 total 0.084542 0.005716 - material delayedgroup group in nuclide mean std. dev. -0 1 1 1 total 0.000021 0.000001 -1 1 2 1 total 0.000110 0.000008 -2 1 3 1 total 0.000107 0.000007 -3 1 4 1 total 0.000249 0.000017 -4 1 5 1 total 0.000112 0.000007 -5 1 6 1 total 0.000046 0.000003 - material delayedgroup group out nuclide mean std. dev. -0 1 1 1 total 0.0 0.000000 -1 1 2 1 total 1.0 0.869128 -2 1 3 1 total 1.0 1.414214 -3 1 4 1 total 1.0 0.360359 -4 1 5 1 total 0.0 0.000000 -5 1 6 1 total 0.0 0.000000 - material delayedgroup group in nuclide mean std. dev. -0 1 1 1 total 0.000227 0.000020 -1 1 2 1 total 0.001214 0.000108 -2 1 3 1 total 0.001184 0.000104 -3 1 4 1 total 0.002752 0.000240 -4 1 5 1 total 0.001231 0.000105 -5 1 6 1 total 0.000512 0.000044 - material delayedgroup group in nuclide mean std. dev. -0 1 1 1 total 0.013355 0.001207 -1 1 2 1 total 0.032600 0.002866 -2 1 3 1 total 0.121083 0.010442 -3 1 4 1 total 0.305910 0.025627 -4 1 5 1 total 0.861934 0.068281 -5 1 6 1 total 2.895065 0.230223 - material delayedgroup group in group out nuclide mean std. dev. -0 1 1 1 1 total 0.000000 0.000000 -1 1 2 1 1 total 0.000384 0.000236 -2 1 3 1 1 total 0.000179 0.000180 -3 1 4 1 1 total 0.000730 0.000188 -4 1 5 1 1 total 0.000000 0.000000 -5 1 6 1 1 total 0.000000 0.000000 - material group in nuclide mean std. dev. -0 2 1 total 0.311594 0.013793 - material group in nuclide mean std. dev. -0 2 1 total 0.280977 0.015683 - material group in nuclide mean std. dev. -0 2 1 total 0.280977 0.015683 - material group in nuclide mean std. dev. -0 2 1 total 0.00221 0.000286 - material group in nuclide mean std. dev. -0 2 1 total 0.00221 0.000286 - material group in nuclide mean std. dev. -0 2 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 2 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 2 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 2 1 total 0.309384 0.013551 - material group in nuclide mean std. dev. -0 2 1 total 0.307987 0.029308 - material group in group out legendre nuclide mean std. dev. -0 2 1 1 P0 total 0.307987 0.029308 -1 2 1 1 P1 total 0.030617 0.007464 -2 2 1 1 P2 total 0.018911 0.004323 -3 2 1 1 P3 total 0.006235 0.003338 - material group in group out legendre nuclide mean std. dev. -0 2 1 1 P0 total 0.307987 0.029308 -1 2 1 1 P1 total 0.030617 0.007464 -2 2 1 1 P2 total 0.018911 0.004323 -3 2 1 1 P3 total 0.006235 0.003338 - material group in group out nuclide mean std. dev. -0 2 1 1 total 1.0 0.095039 - material group in group out nuclide mean std. dev. -0 2 1 1 total 0.0 0.0 - material group in group out nuclide mean std. dev. -0 2 1 1 total 1.0 0.095039 - material group in group out legendre nuclide mean std. dev. -0 2 1 1 P0 total 0.309384 0.032376 -1 2 1 1 P1 total 0.030756 0.007617 -2 2 1 1 P2 total 0.018997 0.004420 -3 2 1 1 P3 total 0.006263 0.003364 - material group in group out legendre nuclide mean std. dev. -0 2 1 1 P0 total 0.309384 0.043735 -1 2 1 1 P1 total 0.030756 0.008159 -2 2 1 1 P2 total 0.018997 0.004775 -3 2 1 1 P3 total 0.006263 0.003417 - material group out nuclide mean std. dev. -0 2 1 total 0.0 0.0 - material group out nuclide mean std. dev. -0 2 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 2 1 total 5.454762e-07 4.949807e-08 - material group in nuclide mean std. dev. -0 2 1 total 0.0 0.0 - material group in group out nuclide mean std. dev. -0 2 1 1 total 0.0 0.0 - material delayedgroup group in nuclide mean std. dev. -0 2 1 1 total 0.0 0.0 -1 2 2 1 total 0.0 0.0 -2 2 3 1 total 0.0 0.0 -3 2 4 1 total 0.0 0.0 -4 2 5 1 total 0.0 0.0 -5 2 6 1 total 0.0 0.0 - material delayedgroup group out nuclide mean std. dev. -0 2 1 1 total 0.0 0.0 -1 2 2 1 total 0.0 0.0 -2 2 3 1 total 0.0 0.0 -3 2 4 1 total 0.0 0.0 -4 2 5 1 total 0.0 0.0 -5 2 6 1 total 0.0 0.0 - material delayedgroup group in nuclide mean std. dev. -0 2 1 1 total 0.0 0.0 -1 2 2 1 total 0.0 0.0 -2 2 3 1 total 0.0 0.0 -3 2 4 1 total 0.0 0.0 -4 2 5 1 total 0.0 0.0 -5 2 6 1 total 0.0 0.0 - material delayedgroup group in nuclide mean std. dev. -0 2 1 1 total 0.0 0.0 -1 2 2 1 total 0.0 0.0 -2 2 3 1 total 0.0 0.0 -3 2 4 1 total 0.0 0.0 -4 2 5 1 total 0.0 0.0 -5 2 6 1 total 0.0 0.0 - material delayedgroup group in group out nuclide mean std. dev. -0 2 1 1 1 total 0.0 0.0 -1 2 2 1 1 total 0.0 0.0 -2 2 3 1 1 total 0.0 0.0 -3 2 4 1 1 total 0.0 0.0 -4 2 5 1 1 total 0.0 0.0 -5 2 6 1 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 3 1 total 0.904999 0.043964 - material group in nuclide mean std. dev. -0 3 1 total 0.494581 0.046763 - material group in nuclide mean std. dev. -0 3 1 total 0.494581 0.046763 - material group in nuclide mean std. dev. -0 3 1 total 0.00606 0.000555 - material group in nuclide mean std. dev. -0 3 1 total 0.00606 0.000555 - material group in nuclide mean std. dev. -0 3 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 3 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 3 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 3 1 total 0.898938 0.043493 - material group in nuclide mean std. dev. -0 3 1 total 0.903415 0.043959 - material group in group out legendre nuclide mean std. dev. -0 3 1 1 P0 total 0.903415 0.043586 -1 3 1 1 P1 total 0.410417 0.015877 -2 3 1 1 P2 total 0.143301 0.007187 -3 3 1 1 P3 total 0.008739 0.003571 - material group in group out legendre nuclide mean std. dev. -0 3 1 1 P0 total 0.903415 0.043586 -1 3 1 1 P1 total 0.410417 0.015877 -2 3 1 1 P2 total 0.143301 0.007187 -3 3 1 1 P3 total 0.008739 0.003571 - material group in group out nuclide mean std. dev. -0 3 1 1 total 1.0 0.056867 - material group in group out nuclide mean std. dev. -0 3 1 1 total 0.0 0.0 - material group in group out nuclide mean std. dev. -0 3 1 1 total 1.0 0.056867 - material group in group out legendre nuclide mean std. dev. -0 3 1 1 P0 total 0.898938 0.067118 -1 3 1 1 P1 total 0.408384 0.028127 -2 3 1 1 P2 total 0.142591 0.010824 -3 3 1 1 P3 total 0.008696 0.003588 - material group in group out legendre nuclide mean std. dev. -0 3 1 1 P0 total 0.898938 0.084369 -1 3 1 1 P1 total 0.408384 0.036475 -2 3 1 1 P2 total 0.142591 0.013525 -3 3 1 1 P3 total 0.008696 0.003622 - material group out nuclide mean std. dev. -0 3 1 total 0.0 0.0 - material group out nuclide mean std. dev. -0 3 1 total 0.0 0.0 - material group in nuclide mean std. dev. -0 3 1 total 5.773007e-07 5.322133e-08 - material group in nuclide mean std. dev. -0 3 1 total 0.0 0.0 - material group in group out nuclide mean std. dev. -0 3 1 1 total 0.0 0.0 - material delayedgroup group in nuclide mean std. dev. -0 3 1 1 total 0.0 0.0 -1 3 2 1 total 0.0 0.0 -2 3 3 1 total 0.0 0.0 -3 3 4 1 total 0.0 0.0 -4 3 5 1 total 0.0 0.0 -5 3 6 1 total 0.0 0.0 - material delayedgroup group out nuclide mean std. dev. -0 3 1 1 total 0.0 0.0 -1 3 2 1 total 0.0 0.0 -2 3 3 1 total 0.0 0.0 -3 3 4 1 total 0.0 0.0 -4 3 5 1 total 0.0 0.0 -5 3 6 1 total 0.0 0.0 - material delayedgroup group in nuclide mean std. dev. -0 3 1 1 total 0.0 0.0 -1 3 2 1 total 0.0 0.0 -2 3 3 1 total 0.0 0.0 -3 3 4 1 total 0.0 0.0 -4 3 5 1 total 0.0 0.0 -5 3 6 1 total 0.0 0.0 - material delayedgroup group in nuclide mean std. dev. -0 3 1 1 total 0.0 0.0 -1 3 2 1 total 0.0 0.0 -2 3 3 1 total 0.0 0.0 -3 3 4 1 total 0.0 0.0 -4 3 5 1 total 0.0 0.0 -5 3 6 1 total 0.0 0.0 - material delayedgroup group in group out nuclide mean std. dev. -0 3 1 1 1 total 0.0 0.0 -1 3 2 1 1 total 0.0 0.0 -2 3 3 1 1 total 0.0 0.0 -3 3 4 1 1 total 0.0 0.0 -4 3 5 1 1 total 0.0 0.0 -5 3 6 1 1 total 0.0 0.0 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.689569 0.031419 +2 1 2 1 1 total 0.699649 0.037450 +1 2 1 1 1 total 0.714582 0.039410 +3 2 2 1 1 total 0.703950 0.032472 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.439891 0.034895 +2 1 2 1 1 total 0.439954 0.039793 +1 2 1 1 1 total 0.464255 0.041680 +3 2 2 1 1 total 0.448543 0.035418 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.439891 0.034895 +2 1 2 1 1 total 0.439954 0.039793 +1 2 1 1 1 total 0.464255 0.041680 +3 2 2 1 1 total 0.448543 0.035418 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.022628 0.001277 +2 1 2 1 1 total 0.023156 0.001846 +1 2 1 1 1 total 0.025056 0.002068 +3 2 2 1 1 total 0.023894 0.001806 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.011639 0.001313 +2 1 2 1 1 total 0.011902 0.001887 +1 2 1 1 1 total 0.013610 0.002138 +3 2 2 1 1 total 0.012379 0.001964 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.010989 0.000600 +2 1 2 1 1 total 0.011254 0.000888 +1 2 1 1 1 total 0.011446 0.000917 +3 2 2 1 1 total 0.011515 0.001091 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.027048 0.001467 +2 1 2 1 1 total 0.027679 0.002173 +1 2 1 1 1 total 0.028152 0.002239 +3 2 2 1 1 total 0.028305 0.002664 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 2.128551e+06 116174.136443 +2 1 2 1 1 total 2.179625e+06 171863.153028 +1 2 1 1 1 total 2.216815e+06 177355.380518 +3 2 2 1 1 total 2.229909e+06 211056.365380 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.666941 0.030331 +2 1 2 1 1 total 0.676493 0.035733 +1 2 1 1 1 total 0.689526 0.037499 +3 2 2 1 1 total 0.680056 0.031192 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.666776 0.041465 +2 1 2 1 1 total 0.681119 0.037897 +1 2 1 1 1 total 0.680135 0.040329 +3 2 2 1 1 total 0.673685 0.034317 + mesh 1 group in group out legendre nuclide mean std. dev. + x y z +0 1 1 1 1 1 P0 total 0.666776 0.040502 +1 1 1 1 1 1 P1 total 0.249678 0.015165 +2 1 1 1 1 1 P2 total 0.084904 0.007439 +3 1 1 1 1 1 P3 total 0.004671 0.003362 +8 1 2 1 1 1 P0 total 0.681119 0.037746 +9 1 2 1 1 1 P1 total 0.259694 0.013458 +10 1 2 1 1 1 P2 total 0.093376 0.006988 +11 1 2 1 1 1 P3 total 0.009055 0.004266 +4 2 1 1 1 1 P0 total 0.680135 0.039913 +5 2 1 1 1 1 P1 total 0.250326 0.013593 +6 2 1 1 1 1 P2 total 0.094891 0.008015 +7 2 1 1 1 1 P3 total 0.012214 0.002309 +12 2 2 1 1 1 P0 total 0.673685 0.034716 +13 2 2 1 1 1 P1 total 0.255408 0.014000 +14 2 2 1 1 1 P2 total 0.087139 0.006220 +15 2 2 1 1 1 P3 total 0.005092 0.005661 + mesh 1 group in group out legendre nuclide mean std. dev. + x y z +0 1 1 1 1 1 P0 total 0.666776 0.040502 +1 1 1 1 1 1 P1 total 0.249678 0.015165 +2 1 1 1 1 1 P2 total 0.084904 0.007439 +3 1 1 1 1 1 P3 total 0.004671 0.003362 +8 1 2 1 1 1 P0 total 0.681119 0.037746 +9 1 2 1 1 1 P1 total 0.259694 0.013458 +10 1 2 1 1 1 P2 total 0.093376 0.006988 +11 1 2 1 1 1 P3 total 0.009055 0.004266 +4 2 1 1 1 1 P0 total 0.680135 0.039913 +5 2 1 1 1 1 P1 total 0.250326 0.013593 +6 2 1 1 1 1 P2 total 0.094891 0.008015 +7 2 1 1 1 1 P3 total 0.012214 0.002309 +12 2 2 1 1 1 P0 total 0.673685 0.034716 +13 2 2 1 1 1 P1 total 0.255408 0.014000 +14 2 2 1 1 1 P2 total 0.087139 0.006220 +15 2 2 1 1 1 P3 total 0.005092 0.005661 + mesh 1 group in group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 1.0 0.070099 +2 1 2 1 1 1 total 1.0 0.062344 +1 2 1 1 1 1 total 1.0 0.062771 +3 2 2 1 1 1 total 1.0 0.049705 + mesh 1 group in group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.028673 0.004228 +2 1 2 1 1 1 total 0.026964 0.003732 +1 2 1 1 1 1 total 0.026070 0.003550 +3 2 2 1 1 1 total 0.024753 0.003145 + mesh 1 group in group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 1.0 0.070099 +2 1 2 1 1 1 total 1.0 0.062344 +1 2 1 1 1 1 total 1.0 0.062771 +3 2 2 1 1 1 total 1.0 0.049705 + mesh 1 group in group out legendre nuclide mean std. dev. + x y z +0 1 1 1 1 1 P0 total 0.666941 0.055729 +1 1 1 1 1 1 P1 total 0.249740 0.020867 +2 1 1 1 1 1 P2 total 0.084925 0.008895 +3 1 1 1 1 1 P3 total 0.004673 0.003374 +8 1 2 1 1 1 P0 total 0.676493 0.055277 +9 1 2 1 1 1 P1 total 0.257931 0.020458 +10 1 2 1 1 1 P2 total 0.092742 0.008898 +11 1 2 1 1 1 P3 total 0.008994 0.004272 +4 2 1 1 1 1 P0 total 0.689526 0.057267 +5 2 1 1 1 1 P1 total 0.253783 0.020306 +6 2 1 1 1 1 P2 total 0.096202 0.009899 +7 2 1 1 1 1 P3 total 0.012383 0.002451 +12 2 2 1 1 1 P0 total 0.680056 0.045995 +13 2 2 1 1 1 P1 total 0.257823 0.018090 +14 2 2 1 1 1 P2 total 0.087963 0.007367 +15 2 2 1 1 1 P3 total 0.005140 0.005719 + mesh 1 group in group out legendre nuclide mean std. dev. + x y z +0 1 1 1 1 1 P0 total 0.666941 0.072742 +1 1 1 1 1 1 P1 total 0.249740 0.027238 +2 1 1 1 1 1 P2 total 0.084925 0.010703 +3 1 1 1 1 1 P3 total 0.004673 0.003390 +8 1 2 1 1 1 P0 total 0.676493 0.069529 +9 1 2 1 1 1 P1 total 0.257931 0.026022 +10 1 2 1 1 1 P2 total 0.092742 0.010612 +11 1 2 1 1 1 P3 total 0.008994 0.004308 +4 2 1 1 1 1 P0 total 0.689526 0.071784 +5 2 1 1 1 1 P1 total 0.253783 0.025809 +6 2 1 1 1 1 P2 total 0.096202 0.011596 +7 2 1 1 1 1 P3 total 0.012383 0.002571 +12 2 2 1 1 1 P0 total 0.680056 0.057080 +13 2 2 1 1 1 P1 total 0.257823 0.022170 +14 2 2 1 1 1 P2 total 0.087963 0.008567 +15 2 2 1 1 1 P3 total 0.005140 0.005725 + mesh 1 group out nuclide mean std. dev. + x y z +0 1 1 1 1 total 1.0 0.121554 +2 1 2 1 1 total 1.0 0.216579 +1 2 1 1 1 total 1.0 0.183339 +3 2 2 1 1 total 1.0 0.153219 + mesh 1 group out nuclide mean std. dev. + x y z +0 1 1 1 1 total 1.0 0.115075 +2 1 2 1 1 total 1.0 0.214629 +1 2 1 1 1 total 1.0 0.193610 +3 2 2 1 1 total 1.0 0.149674 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 5.326584e-07 4.351904e-08 +2 1 2 1 1 total 5.450392e-07 5.612731e-08 +1 2 1 1 1 total 5.715661e-07 6.214803e-08 +3 2 2 1 1 total 5.509404e-07 4.361226e-08 + mesh 1 group in nuclide mean std. dev. + x y z +0 1 1 1 1 total 0.026854 0.001457 +2 1 2 1 1 total 0.027482 0.002158 +1 2 1 1 1 total 0.027951 0.002224 +3 2 2 1 1 total 0.028105 0.002647 + mesh 1 group in group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.028472 0.004077 +2 1 2 1 1 1 total 0.026236 0.003570 +1 2 1 1 1 1 total 0.025851 0.003683 +3 2 2 1 1 1 total 0.024301 0.002974 + mesh 1 group in nuclide mean std. dev. + x y surf +3 1 1 x-max in 1 total 4.570 0.073566 +2 1 1 x-max out 1 total 4.566 0.097365 +1 1 1 x-min in 1 total 0.000 0.000000 +0 1 1 x-min out 1 total 0.000 0.000000 +7 1 1 y-max in 1 total 4.544 0.163303 +6 1 1 y-max out 1 total 4.524 0.143457 +5 1 1 y-min in 1 total 0.000 0.000000 +4 1 1 y-min out 1 total 0.000 0.000000 +19 1 2 x-max in 1 total 4.446 0.192083 +18 1 2 x-max out 1 total 4.448 0.134907 +17 1 2 x-min in 1 total 0.000 0.000000 +16 1 2 x-min out 1 total 0.000 0.000000 +23 1 2 y-max in 1 total 0.000 0.000000 +22 1 2 y-max out 1 total 0.000 0.000000 +21 1 2 y-min in 1 total 4.524 0.143457 +20 1 2 y-min out 1 total 4.544 0.163303 +11 2 1 x-max in 1 total 0.000 0.000000 +10 2 1 x-max out 1 total 0.000 0.000000 +9 2 1 x-min in 1 total 4.566 0.097365 +8 2 1 x-min out 1 total 4.570 0.073566 +15 2 1 y-max in 1 total 4.422 0.100270 +14 2 1 y-max out 1 total 4.424 0.145141 +13 2 1 y-min in 1 total 0.000 0.000000 +12 2 1 y-min out 1 total 0.000 0.000000 +27 2 2 x-max in 1 total 0.000 0.000000 +26 2 2 x-max out 1 total 0.000 0.000000 +25 2 2 x-min in 1 total 4.448 0.134907 +24 2 2 x-min out 1 total 4.446 0.192083 +31 2 2 y-max in 1 total 0.000 0.000000 +30 2 2 y-max out 1 total 0.000 0.000000 +29 2 2 y-min in 1 total 4.424 0.145141 +28 2 2 y-min out 1 total 4.422 0.100270 + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.000006 3.337014e-07 +1 1 1 1 2 1 total 0.000033 1.744448e-06 +2 1 1 1 3 1 total 0.000032 1.680053e-06 +3 1 1 1 4 1 total 0.000075 3.832256e-06 +4 1 1 1 5 1 total 0.000034 1.657860e-06 +5 1 1 1 6 1 total 0.000014 6.911218e-07 +12 1 2 1 1 1 total 0.000006 4.935854e-07 +13 1 2 1 2 1 total 0.000034 2.586377e-06 +14 1 2 1 3 1 total 0.000033 2.493442e-06 +15 1 2 1 4 1 total 0.000076 5.693867e-06 +16 1 2 1 5 1 total 0.000034 2.461606e-06 +17 1 2 1 6 1 total 0.000014 1.026406e-06 +6 2 1 1 1 1 total 0.000006 5.092712e-07 +7 2 1 1 2 1 total 0.000034 2.652677e-06 +8 2 1 1 3 1 total 0.000033 2.547698e-06 +9 2 1 1 4 1 total 0.000077 5.777683e-06 +10 2 1 1 5 1 total 0.000035 2.451184e-06 +11 2 1 1 6 1 total 0.000014 1.023674e-06 +18 2 2 1 1 1 total 0.000006 6.058589e-07 +19 2 2 1 2 1 total 0.000034 3.154428e-06 +20 2 2 1 3 1 total 0.000033 3.028038e-06 +21 2 2 1 4 1 total 0.000077 6.857868e-06 +22 2 2 1 5 1 total 0.000034 2.893043e-06 +23 2 2 1 6 1 total 0.000014 1.208895e-06 + mesh 1 delayedgroup group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.0 0.000000 +1 1 1 1 2 1 total 0.0 0.000000 +2 1 1 1 3 1 total 0.0 0.000000 +3 1 1 1 4 1 total 1.0 1.414214 +4 1 1 1 5 1 total 0.0 0.000000 +5 1 1 1 6 1 total 0.0 0.000000 +12 1 2 1 1 1 total 0.0 0.000000 +13 1 2 1 2 1 total 1.0 1.414214 +14 1 2 1 3 1 total 0.0 0.000000 +15 1 2 1 4 1 total 1.0 0.867638 +16 1 2 1 5 1 total 0.0 0.000000 +17 1 2 1 6 1 total 0.0 0.000000 +6 2 1 1 1 1 total 0.0 0.000000 +7 2 1 1 2 1 total 0.0 0.000000 +8 2 1 1 3 1 total 1.0 1.414214 +9 2 1 1 4 1 total 0.0 0.000000 +10 2 1 1 5 1 total 0.0 0.000000 +11 2 1 1 6 1 total 0.0 0.000000 +18 2 2 1 1 1 total 0.0 0.000000 +19 2 2 1 2 1 total 1.0 1.414214 +20 2 2 1 3 1 total 0.0 0.000000 +21 2 2 1 4 1 total 1.0 1.414214 +22 2 2 1 5 1 total 0.0 0.000000 +23 2 2 1 6 1 total 0.0 0.000000 + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.000227 0.000016 +1 1 1 1 2 1 total 0.001217 0.000083 +2 1 1 1 3 1 total 0.001189 0.000081 +3 1 1 1 4 1 total 0.002771 0.000185 +4 1 1 1 5 1 total 0.001247 0.000082 +5 1 1 1 6 1 total 0.000518 0.000034 +12 1 2 1 1 1 total 0.000227 0.000023 +13 1 2 1 2 1 total 0.001215 0.000119 +14 1 2 1 3 1 total 0.001185 0.000115 +15 1 2 1 4 1 total 0.002755 0.000266 +16 1 2 1 5 1 total 0.001234 0.000117 +17 1 2 1 6 1 total 0.000513 0.000049 +6 2 1 1 1 1 total 0.000227 0.000024 +7 2 1 1 2 1 total 0.001213 0.000124 +8 2 1 1 3 1 total 0.001183 0.000120 +9 2 1 1 4 1 total 0.002748 0.000275 +10 2 1 1 5 1 total 0.001228 0.000119 +11 2 1 1 6 1 total 0.000511 0.000050 +18 2 2 1 1 1 total 0.000227 0.000028 +19 2 2 1 2 1 total 0.001210 0.000149 +20 2 2 1 3 1 total 0.001179 0.000144 +21 2 2 1 4 1 total 0.002732 0.000330 +22 2 2 1 5 1 total 0.001214 0.000143 +23 2 2 1 6 1 total 0.000505 0.000059 + mesh 1 delayedgroup group in nuclide mean std. dev. + x y z +0 1 1 1 1 1 total 0.013357 0.000929 +1 1 1 1 2 1 total 0.032589 0.002199 +2 1 1 1 3 1 total 0.121106 0.008007 +3 1 1 1 4 1 total 0.306140 0.019650 +4 1 1 1 5 1 total 0.862764 0.052685 +5 1 1 1 6 1 total 2.897892 0.177498 +12 1 2 1 1 1 total 0.013356 0.001330 +13 1 2 1 2 1 total 0.032598 0.003165 +14 1 2 1 3 1 total 0.121086 0.011554 +15 1 2 1 4 1 total 0.305948 0.028460 +16 1 2 1 5 1 total 0.862070 0.076649 +17 1 2 1 6 1 total 2.895530 0.258195 +6 2 1 1 1 1 total 0.013355 0.001389 +7 2 1 1 2 1 total 0.032601 0.003293 +8 2 1 1 3 1 total 0.121079 0.011980 +9 2 1 1 4 1 total 0.305874 0.029310 +10 2 1 1 5 1 total 0.861802 0.077464 +11 2 1 1 6 1 total 2.894617 0.261360 +18 2 2 1 1 1 total 0.013354 0.001670 +19 2 2 1 2 1 total 0.032610 0.003972 +20 2 2 1 3 1 total 0.121059 0.014468 +21 2 2 1 4 1 total 0.305680 0.035462 +22 2 2 1 5 1 total 0.861087 0.093863 +23 2 2 1 6 1 total 2.892185 0.316700 + mesh 1 delayedgroup group in group out nuclide mean std. dev. + x y z +0 1 1 1 1 1 1 total 0.000000 0.000000 +1 1 1 1 2 1 1 total 0.000000 0.000000 +2 1 1 1 3 1 1 total 0.000000 0.000000 +3 1 1 1 4 1 1 total 0.000201 0.000201 +4 1 1 1 5 1 1 total 0.000000 0.000000 +5 1 1 1 6 1 1 total 0.000000 0.000000 +12 1 2 1 1 1 1 total 0.000000 0.000000 +13 1 2 1 2 1 1 total 0.000250 0.000250 +14 1 2 1 3 1 1 total 0.000000 0.000000 +15 1 2 1 4 1 1 total 0.000477 0.000293 +16 1 2 1 5 1 1 total 0.000000 0.000000 +17 1 2 1 6 1 1 total 0.000000 0.000000 +6 2 1 1 1 1 1 total 0.000000 0.000000 +7 2 1 1 2 1 1 total 0.000000 0.000000 +8 2 1 1 3 1 1 total 0.000220 0.000220 +9 2 1 1 4 1 1 total 0.000000 0.000000 +10 2 1 1 5 1 1 total 0.000000 0.000000 +11 2 1 1 6 1 1 total 0.000000 0.000000 +18 2 2 1 1 1 1 total 0.000000 0.000000 +19 2 2 1 2 1 1 total 0.000226 0.000226 +20 2 2 1 3 1 1 total 0.000000 0.000000 +21 2 2 1 4 1 1 total 0.000226 0.000226 +22 2 2 1 5 1 1 total 0.000000 0.000000 +23 2 2 1 6 1 1 total 0.000000 0.000000 diff --git a/tests/regression_tests/mgxs_library_condense/test.py b/tests/regression_tests/mgxs_library_condense/test.py index 167772e2f..a7e60617f 100644 --- a/tests/regression_tests/mgxs_library_condense/test.py +++ b/tests/regression_tests/mgxs_library_condense/test.py @@ -24,7 +24,15 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.num_delayed_groups = 6 self.mgxs_lib.legendre_order = 3 - self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.domain_type = 'mesh' + + # Instantiate a tally mesh + mesh = openmc.RegularMesh(mesh_id=1) + mesh.dimension = [2, 2] + mesh.lower_left = [-100., -100.] + mesh.width = [100., 100.] + + self.mgxs_lib.domains = [mesh] self.mgxs_lib.build_library() # Add tallies diff --git a/tests/regression_tests/mgxs_library_distribcell/test.py b/tests/regression_tests/mgxs_library_distribcell/test.py index 9fe567388..3b601161a 100644 --- a/tests/regression_tests/mgxs_library_distribcell/test.py +++ b/tests/regression_tests/mgxs_library_distribcell/test.py @@ -22,8 +22,10 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib = openmc.mgxs.Library(self._model.geometry) self.mgxs_lib.by_nuclide = False - # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + # Test all relevant MGXS types + relevant_MGXS_TYPES = [item for item in openmc.mgxs.MGXS_TYPES + if item != 'current'] + self.mgxs_lib.mgxs_types = tuple(relevant_MGXS_TYPES) + \ openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.num_delayed_groups = 6 diff --git a/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat b/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat index 5aedd383d..8e649ea82 100644 --- a/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_hdf5/inputs_true.dat @@ -50,7 +50,12 @@ - + + 2 2 + -100.0 -100.0 + 100.0 100.0 + + 1 @@ -68,15 +73,12 @@ 0.0 20000000.0 - + + 1 + + 1 2 3 4 5 6 - - 2 - - - 3 - 1 2 total @@ -384,793 +386,67 @@ analog + 66 2 + total + current + analog + + 1 2 total flux tracklength - - 1 65 2 + + 1 69 2 total delayed-nu-fission tracklength - - 1 65 52 - total - delayed-nu-fission - analog - - 1 65 5 + 1 69 52 total delayed-nu-fission analog + 1 69 5 + total + delayed-nu-fission + analog + + 1 2 total nu-fission tracklength - - 1 65 2 - total - delayed-nu-fission - tracklength - - 1 65 2 + 1 69 2 total delayed-nu-fission tracklength - 1 65 2 + 1 69 2 + total + delayed-nu-fission + tracklength + + + 1 69 2 total decay-rate tracklength - + 1 2 total flux analog - - 1 65 2 5 - total - delayed-nu-fission - analog - - 80 2 - total - flux - tracklength - - - 80 2 - total - total - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - total - tracklength - - - 80 2 - total - flux - analog - - - 80 5 6 - total - scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - total - tracklength - - - 80 2 - total - flux - analog - - - 80 5 6 - total - nu-scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - absorption - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - absorption - tracklength - - - 80 2 - total - fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - nu-fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - kappa-fission - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - scatter - tracklength - - - 80 2 - total - flux - analog - - - 80 2 - total - nu-scatter - analog - - - 80 2 - total - flux - analog - - - 80 2 5 28 - total - scatter - analog - - - 80 2 - total - flux - analog - - - 80 2 5 28 - total - nu-scatter - analog - - - 80 2 5 - total - nu-scatter - analog - - - 80 2 5 - total - scatter - analog - - - 80 2 - total - flux - analog - - - 80 2 5 - total - nu-fission - analog - - - 80 2 5 - total - scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - scatter - tracklength - - - 80 2 5 28 - total - scatter - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - scatter - tracklength - - - 80 2 5 28 - total - scatter - analog - - - 80 2 5 - total - nu-scatter - analog - - - 80 52 - total - nu-fission - analog - - - 80 5 - total - nu-fission - analog - - - 80 52 - total - prompt-nu-fission - analog - - - 80 5 - total - prompt-nu-fission - analog - - - 80 2 - total - flux - tracklength - - - 80 2 - total - inverse-velocity - tracklength - - - 80 2 - total - flux - tracklength - - - 80 2 - total - prompt-nu-fission - tracklength - - - 80 2 - total - flux - analog - - - 80 2 5 - total - prompt-nu-fission - analog - - - 80 2 - total - flux - tracklength - - - 80 65 2 - total - delayed-nu-fission - tracklength - - - 80 65 52 - total - delayed-nu-fission - analog - - - 80 65 5 - total - delayed-nu-fission - analog - - - 80 2 - total - nu-fission - tracklength - - - 80 65 2 - total - delayed-nu-fission - tracklength - - - 80 65 2 - total - delayed-nu-fission - tracklength - - - 80 65 2 - total - decay-rate - tracklength - - - 80 2 - total - flux - analog - - - 80 65 2 5 - total - delayed-nu-fission - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - total - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - total - tracklength - - - 159 2 - total - flux - analog - - - 159 5 6 - total - scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - total - tracklength - - - 159 2 - total - flux - analog - - - 159 5 6 - total - nu-scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - absorption - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - absorption - tracklength - - - 159 2 - total - fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - nu-fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - kappa-fission - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - scatter - tracklength - - - 159 2 - total - flux - analog - - - 159 2 - total - nu-scatter - analog - - - 159 2 - total - flux - analog - - - 159 2 5 28 - total - scatter - analog - - - 159 2 - total - flux - analog - - - 159 2 5 28 - total - nu-scatter - analog - - - 159 2 5 - total - nu-scatter - analog - - - 159 2 5 - total - scatter - analog - - - 159 2 - total - flux - analog - - - 159 2 5 - total - nu-fission - analog - - - 159 2 5 - total - scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - scatter - tracklength - - - 159 2 5 28 - total - scatter - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - scatter - tracklength - - - 159 2 5 28 - total - scatter - analog - - - 159 2 5 - total - nu-scatter - analog - - - 159 52 - total - nu-fission - analog - - - 159 5 - total - nu-fission - analog - - - 159 52 - total - prompt-nu-fission - analog - - - 159 5 - total - prompt-nu-fission - analog - - - 159 2 - total - flux - tracklength - - - 159 2 - total - inverse-velocity - tracklength - - - 159 2 - total - flux - tracklength - - - 159 2 - total - prompt-nu-fission - tracklength - - - 159 2 - total - flux - analog - - - 159 2 5 - total - prompt-nu-fission - analog - - - 159 2 - total - flux - tracklength - - - 159 65 2 - total - delayed-nu-fission - tracklength - - - 159 65 52 - total - delayed-nu-fission - analog - - - 159 65 5 - total - delayed-nu-fission - analog - - - 159 2 - total - nu-fission - tracklength - - - 159 65 2 - total - delayed-nu-fission - tracklength - - - 159 65 2 - total - delayed-nu-fission - tracklength - - - 159 65 2 - total - decay-rate - tracklength - - - 159 2 - total - flux - analog - - - 159 65 2 5 + 1 69 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_hdf5/results_true.dat b/tests/regression_tests/mgxs_library_hdf5/results_true.dat index 7ef172574..b479c139a 100644 --- a/tests/regression_tests/mgxs_library_hdf5/results_true.dat +++ b/tests/regression_tests/mgxs_library_hdf5/results_true.dat @@ -1,366 +1,212 @@ domain=1 type=total -[4.14825464e-01 6.60169863e-01] -[2.27929104e-02 4.75189000e-02] +[5.38564635e-01 1.45554552e+00] +[2.15102394e-02 1.74671506e-01] domain=1 type=transport -[3.63092031e-01 6.44850709e-01] -[2.38384842e-02 4.76746410e-02] +[3.10133076e-01 1.09725336e+00] +[2.65671384e-02 1.80883943e-01] domain=1 type=nu-transport -[3.63092031e-01 6.44850709e-01] -[2.38384842e-02 4.76746410e-02] +[3.10133076e-01 1.09725336e+00] +[2.65671384e-02 1.80883943e-01] domain=1 type=absorption -[2.74078431e-02 2.64510714e-01] -[2.69249666e-03 2.33670618e-02] +[8.45377250e-03 9.45269817e-02] +[7.33458615e-04 9.19713128e-03] domain=1 type=capture -[1.98445482e-02 7.17193458e-02] -[2.64330389e-03 2.52078411e-02] +[6.06155218e-03 3.99297631e-02] +[7.22875857e-04 7.50886804e-03] domain=1 type=fission -[7.56329484e-03 1.92791369e-01] -[5.08483893e-04 1.71059103e-02] +[2.39222032e-03 5.45972186e-02] +[8.69881114e-05 5.15800900e-03] domain=1 type=nu-fission -[1.94317397e-02 4.69774728e-01] -[1.32297610e-03 4.16819717e-02] +[6.15310797e-03 1.33037043e-01] +[2.31371327e-04 1.25685205e-02] domain=1 type=kappa-fission -[1.47456979e+06 3.72868925e+07] -[9.92353624e+04 3.30837549e+06] +[4.66497048e+05 1.05593971e+07] +[1.70456489e+04 9.97586814e+05] domain=1 type=scatter -[3.87417621e-01 3.95659148e-01] -[2.06257342e-02 2.51250448e-02] +[5.30110862e-01 1.36101853e+00] +[2.09707684e-02 1.66399963e-01] domain=1 type=nu-scatter -[3.85188361e-01 4.12389370e-01] -[2.69456191e-02 1.54252759e-02] +[5.26423506e-01 1.38428396e+00] +[3.53738379e-02 1.81243556e-01] domain=1 type=scatter matrix -[[[3.84199430e-01 5.18702806e-02 2.00688439e-02 9.47771502e-03] - [9.88930322e-04 -2.07234582e-04 -1.03366173e-04 2.34290606e-04]] +[[[5.09394630e-01 2.28431559e-01 8.87144474e-02 9.90358757e-03] + [1.70288754e-02 5.08756263e-03 -1.29619140e-03 -2.29397464e-03]] - [[9.24639842e-04 -7.67704913e-04 4.93788836e-04 -1.71497217e-04] - [4.11464730e-01 1.64817268e-02 6.37149004e-03 -1.04991213e-02]]] -[[[2.70010116e-02 6.98254837e-03 2.84649498e-03 2.23351961e-03] - [4.82419410e-04 1.49010765e-04 1.84316299e-04 1.28173102e-04]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [1.38428396e+00 3.32283490e-01 7.20522379e-02 -1.03495292e-02]]] +[[[3.32592286e-02 1.55923841e-02 8.46899584e-03 3.36789772e-03] + [2.33802794e-03 1.01739476e-03 6.77938532e-04 7.77067821e-04]] - [[9.24883397e-04 7.67907131e-04 4.93918903e-04 1.71542390e-04] - [1.52449343e-02 4.50172764e-03 1.05507486e-02 1.04381870e-02]]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [1.81243556e-01 4.54455205e-02 1.40301767e-02 1.06726205e-02]]] domain=1 type=nu-scatter matrix -[[[3.84199430e-01 5.18702806e-02 2.00688439e-02 9.47771502e-03] - [9.88930322e-04 -2.07234582e-04 -1.03366173e-04 2.34290606e-04]] +[[[5.09394630e-01 2.28431559e-01 8.87144474e-02 9.90358757e-03] + [1.70288754e-02 5.08756263e-03 -1.29619140e-03 -2.29397464e-03]] - [[9.24639842e-04 -7.67704913e-04 4.93788836e-04 -1.71497217e-04] - [4.11464730e-01 1.64817268e-02 6.37149004e-03 -1.04991213e-02]]] -[[[2.70010116e-02 6.98254837e-03 2.84649498e-03 2.23351961e-03] - [4.82419410e-04 1.49010765e-04 1.84316299e-04 1.28173102e-04]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [1.38428396e+00 3.32283490e-01 7.20522379e-02 -1.03495292e-02]]] +[[[3.32592286e-02 1.55923841e-02 8.46899584e-03 3.36789772e-03] + [2.33802794e-03 1.01739476e-03 6.77938532e-04 7.77067821e-04]] - [[9.24883397e-04 7.67907131e-04 4.93918903e-04 1.71542390e-04] - [1.52449343e-02 4.50172764e-03 1.05507486e-02 1.04381870e-02]]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [1.81243556e-01 4.54455205e-02 1.40301767e-02 1.06726205e-02]]] domain=1 type=multiplicity matrix [[1.00000000e+00 1.00000000e+00] - [1.00000000e+00 1.00000000e+00]] -[[7.85164550e-02 6.87184271e-01] - [1.41421356e+00 4.11303488e-02]] + [0.00000000e+00 1.00000000e+00]] +[[7.36409657e-02 1.86006410e-01] + [0.00000000e+00 1.52524077e-01]] domain=1 type=nu-fission matrix -[[2.01424221e-02 0.00000000e+00] - [4.54366342e-01 0.00000000e+00]] -[[3.14909051e-03 0.00000000e+00] - [2.74255160e-02 0.00000000e+00]] +[[6.38661278e-03 0.00000000e+00] + [1.42604897e-01 0.00000000e+00]] +[[1.95163368e-03 0.00000000e+00] + [2.53807844e-02 0.00000000e+00]] domain=1 type=scatter probability matrix -[[9.97432606e-01 2.56739409e-03] - [2.24215247e-03 9.97757848e-01]] -[[7.82243018e-02 1.25560869e-03] - [2.24310192e-03 4.10531468e-02]] +[[9.67651757e-01 3.23482428e-02] + [0.00000000e+00 1.00000000e+00]] +[[7.02365009e-02 4.55825691e-03] + [0.00000000e+00 1.52524077e-01]] domain=1 type=consistent scatter matrix -[[[3.86422967e-01 5.21704775e-02 2.01849914e-02 9.53256688e-03] - [9.94653712e-04 -2.08433942e-04 -1.03964400e-04 2.35646553e-04]] +[[[5.12962708e-01 2.30031618e-01 8.93358517e-02 9.97295769e-03] + [1.71481549e-02 5.12319869e-03 -1.30527063e-03 -2.31004289e-03]] - [[8.87128136e-04 -7.36559899e-04 4.73756321e-04 -1.64539748e-04] - [3.94772020e-01 1.58130798e-02 6.11300510e-03 -1.00731826e-02]]] -[[[3.66286904e-02 7.76748967e-03 3.13767805e-03 2.32683668e-03] - [4.89318749e-04 1.50458419e-04 1.85500930e-04 1.29783343e-04]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [1.36101853e+00 3.26698857e-01 7.08412681e-02 -1.01755864e-02]]] +[[[4.24038637e-02 1.95589805e-02 9.65642635e-03 3.42897188e-03] + [2.50979721e-03 1.05693435e-03 6.85887105e-04 7.91226772e-04]] - [[8.89289900e-04 7.38354757e-04 4.74910776e-04 1.64940700e-04] - [2.98710065e-02 4.44330993e-03 1.01307463e-02 1.00367467e-02]]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [2.66048427e-01 6.51550937e-02 1.72051955e-02 1.05966869e-02]]] domain=1 type=consistent nu-scatter matrix -[[[3.86422967e-01 5.21704775e-02 2.01849914e-02 9.53256688e-03] - [9.94653712e-04 -2.08433942e-04 -1.03964400e-04 2.35646553e-04]] +[[[5.12962708e-01 2.30031618e-01 8.93358517e-02 9.97295769e-03] + [1.71481549e-02 5.12319869e-03 -1.30527063e-03 -2.31004289e-03]] - [[8.87128136e-04 -7.36559899e-04 4.73756321e-04 -1.64539748e-04] - [3.94772020e-01 1.58130798e-02 6.11300510e-03 -1.00731826e-02]]] -[[[4.75627021e-02 8.78140568e-03 3.51522199e-03 2.44425169e-03] - [8.40606499e-04 2.07733706e-04 1.98782933e-04 2.07523215e-04]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [1.36101853e+00 3.26698857e-01 7.08412681e-02 -1.01755864e-02]]] +[[[5.67894665e-02 2.58748694e-02 1.16844724e-02 3.50673899e-03] + [4.05870125e-03 1.42310215e-03 7.27590183e-04 9.00370534e-04]] - [[1.53780011e-03 1.27679627e-03 8.21237084e-04 2.85222881e-04] - [3.39988353e-02 4.49065920e-03 1.01338659e-02 1.00452944e-02]]] + [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] + [3.37453083e-01 8.20253589e-02 2.03166620e-02 1.07097407e-02]]] domain=1 type=chi [1.00000000e+00 0.00000000e+00] -[4.60705491e-02 0.00000000e+00] +[1.21553680e-01 0.00000000e+00] domain=1 type=chi-prompt [1.00000000e+00 0.00000000e+00] -[5.14714842e-02 0.00000000e+00] +[1.15074880e-01 0.00000000e+00] domain=1 type=inverse-velocity -[5.70932437e-08 2.85573948e-06] -[4.68793809e-09 2.44216369e-07] +[5.82407705e-08 2.93916338e-06] +[3.57468034e-09 3.31327050e-07] domain=1 type=prompt-nu-fission -[1.92392209e-02 4.66718979e-01] -[1.30950644e-03 4.14108425e-02] +[6.09158918e-03 1.32171675e-01] +[2.28563531e-04 1.24867659e-02] domain=1 type=prompt-nu-fission matrix -[[2.01424221e-02 0.00000000e+00] - [4.45819054e-01 0.00000000e+00]] -[[3.14909051e-03 0.00000000e+00] - [2.86750876e-02 0.00000000e+00]] +[[6.38661278e-03 0.00000000e+00] + [1.41378615e-01 0.00000000e+00]] +[[1.95163368e-03 0.00000000e+00] + [2.44103846e-02 0.00000000e+00]] +domain=1 type=current +[[[0.00000000e+00 0.00000000e+00 3.85400000e+00 3.80400000e+00 + 0.00000000e+00 0.00000000e+00 3.74600000e+00 3.80200000e+00] + [0.00000000e+00 0.00000000e+00 7.12000000e-01 7.66000000e-01 + 0.00000000e+00 0.00000000e+00 7.78000000e-01 7.42000000e-01]] + + [[3.80400000e+00 3.85400000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 3.70400000e+00 3.65000000e+00] + [7.66000000e-01 7.12000000e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.20000000e-01 7.72000000e-01]] + + [[0.00000000e+00 0.00000000e+00 3.70600000e+00 3.74600000e+00 + 3.80200000e+00 3.74600000e+00 0.00000000e+00 0.00000000e+00] + [0.00000000e+00 0.00000000e+00 7.42000000e-01 7.00000000e-01 + 7.42000000e-01 7.78000000e-01 0.00000000e+00 0.00000000e+00]] + + [[3.74600000e+00 3.70600000e+00 0.00000000e+00 0.00000000e+00 + 3.65000000e+00 3.70400000e+00 0.00000000e+00 0.00000000e+00] + [7.00000000e-01 7.42000000e-01 0.00000000e+00 0.00000000e+00 + 7.72000000e-01 7.20000000e-01 0.00000000e+00 0.00000000e+00]]] +[[[0.00000000e+00 0.00000000e+00 8.57088093e-02 5.04579032e-02 + 0.00000000e+00 0.00000000e+00 1.33551488e-01 1.58789168e-01] + [0.00000000e+00 0.00000000e+00 4.61952378e-02 5.35350353e-02 + 0.00000000e+00 0.00000000e+00 5.23832034e-02 3.81313519e-02]] + + [[5.04579032e-02 8.57088093e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.39089899e-01 8.87693641e-02] + [5.35350353e-02 4.61952378e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.14728827e-02 4.66261729e-02]] + + [[0.00000000e+00 0.00000000e+00 1.32838248e-01 1.90383823e-01 + 1.58789168e-01 1.33551488e-01 0.00000000e+00 0.00000000e+00] + [0.00000000e+00 0.00000000e+00 2.35372046e-02 2.54950976e-02 + 3.81313519e-02 5.23832034e-02 0.00000000e+00 0.00000000e+00]] + + [[1.90383823e-01 1.32838248e-01 0.00000000e+00 0.00000000e+00 + 8.87693641e-02 1.39089899e-01 0.00000000e+00 0.00000000e+00] + [2.54950976e-02 2.35372046e-02 0.00000000e+00 0.00000000e+00 + 4.66261729e-02 4.14728827e-02 0.00000000e+00 0.00000000e+00]]] domain=1 type=delayed-nu-fission -[[4.31687649e-06 1.06974147e-04] - [2.69760050e-05 5.52167849e-04] - [2.84366794e-05 5.27147626e-04] - [7.42603126e-05 1.18190938e-03] - [4.14908415e-05 4.84567103e-04] - [1.70015984e-05 2.02983424e-04]] -[[2.89748551e-07 9.49155602e-06] - [1.85003750e-06 4.89925096e-05] - [1.97097929e-06 4.67725252e-05] - [5.22610328e-06 1.04867938e-04] - [2.99830754e-06 4.29944540e-05] - [1.22654681e-06 1.80102229e-05]] +[[1.36657452e-06 3.02943589e-05] + [8.57921019e-06 1.56370222e-04] + [9.06240193e-06 1.49284664e-04] + [2.37319215e-05 3.34708794e-04] + [1.33192402e-05 1.37226149e-04] + [5.45629246e-06 5.74835423e-05]] +[[5.09659449e-08 2.86202444e-06] + [3.58145203e-07 1.47728954e-05] + [3.99793526e-07 1.41034954e-05] + [1.12997191e-06 3.16212248e-05] + [7.16321720e-07 1.29642809e-05] + [2.91301483e-07 5.43069083e-06]] domain=1 type=chi-delayed [[0.00000000e+00 0.00000000e+00] - [1.00000000e+00 0.00000000e+00] - [1.00000000e+00 0.00000000e+00] + [0.00000000e+00 0.00000000e+00] + [0.00000000e+00 0.00000000e+00] [1.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] - [8.69127748e-01 0.00000000e+00] + [0.00000000e+00 0.00000000e+00] + [0.00000000e+00 0.00000000e+00] [1.41421356e+00 0.00000000e+00] - [3.60359016e-01 0.00000000e+00] [0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] domain=1 type=beta -[[2.22155945e-04 2.27713711e-04] - [1.38824446e-03 1.17538858e-03] - [1.46341397e-03 1.12212853e-03] - [3.82159878e-03 2.51590670e-03] - [2.13520982e-03 1.03148823e-03] - [8.74939592e-04 4.32086725e-04]] -[[1.80847601e-05 2.46946655e-05] - [1.14688936e-04 1.27466313e-04] - [1.21787671e-04 1.21690467e-04] - [3.21434951e-04 2.72840272e-04] - [1.82980530e-04 1.11860871e-04] - [7.48900063e-05 4.68581181e-05]] +[[2.22095001e-04 2.27713713e-04] + [1.39428891e-03 1.17538859e-03] + [1.47281699e-03 1.12212855e-03] + [3.85689990e-03 2.51590676e-03] + [2.16463619e-03 1.03148827e-03] + [8.86753895e-04 4.32086742e-04]] +[[9.07215649e-06 1.93631017e-05] + [6.26713584e-05 9.99464126e-05] + [6.94548765e-05 9.54175694e-05] + [1.94563984e-04 2.13934228e-04] + [1.21876271e-04 8.77101834e-05] + [4.95946084e-05 3.67414816e-05]] domain=1 type=decay-rate -[[1.34450193e-02 1.33360001e-02] - [3.20638663e-02 3.27389978e-02] - [1.22136025e-01 1.20780007e-01] - [3.15269336e-01 3.02780066e-01] - [8.89232587e-01 8.49490287e-01] - [2.98940409e+00 2.85300088e+00]] -[[1.08439455e-03 1.44623725e-03] - [2.65795038e-03 3.55041661e-03] - [1.02955036e-02 1.30981202e-02] - [2.71748571e-02 3.28353145e-02] - [7.93682889e-02 9.21238900e-02] - [2.66253283e-01 3.09396760e-01]] +[[1.34479215e-02 1.33360001e-02] + [3.20491028e-02 3.27389978e-02] + [1.22162808e-01 1.20780007e-01] + [3.15480592e-01 3.02780066e-01] + [8.89723658e-01 8.49490289e-01] + [2.99112795e+00 2.85300089e+00]] +[[5.47700122e-04 1.13399549e-03] + [1.53954980e-03 2.78388383e-03] + [6.44048392e-03 1.02702443e-02] + [1.86178714e-02 2.57461915e-02] + [6.12200714e-02 7.22344077e-02] + [2.04036637e-01 2.42598218e-01]] domain=1 type=delayed-nu-fission matrix [[[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] - [2.53814444e-03 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [1.18579136e-03 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [4.82335163e-03 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]]] -[[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [1.56094521e-03 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [1.18610370e-03 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [1.23402593e-03 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]]] -domain=2 type=total -[3.13737667e-01 3.00821380e-01] -[1.55819228e-02 2.80524816e-02] -domain=2 type=transport -[2.75508079e-01 3.12035015e-01] -[1.77418859e-02 3.23843473e-02] -domain=2 type=nu-transport -[2.75508079e-01 3.12035015e-01] -[1.77418859e-02 3.23843473e-02] -domain=2 type=absorption -[1.57499139e-03 5.40037825e-03] -[3.22547917e-04 6.18139027e-04] -domain=2 type=capture -[1.57499139e-03 5.40037825e-03] -[3.22547917e-04 6.18139027e-04] -domain=2 type=fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=2 type=nu-fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=2 type=kappa-fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=2 type=scatter -[3.12162675e-01 2.95421002e-01] -[1.53219435e-02 2.74455213e-02] -domain=2 type=nu-scatter -[3.10120713e-01 2.96264249e-01] -[3.37881037e-02 4.37922226e-02] -domain=2 type=scatter matrix -[[[3.10120713e-01 3.82295876e-02 2.07449405e-02 7.96429620e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [2.96264249e-01 -1.12136353e-02 8.83656566e-03 -3.27006707e-03]]] -[[[3.37881037e-02 8.48399649e-03 4.69561034e-03 3.73162234e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [4.37922226e-02 1.61803653e-02 1.15039636e-02 7.32884528e-03]]] -domain=2 type=nu-scatter matrix -[[[3.10120713e-01 3.82295876e-02 2.07449405e-02 7.96429620e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [2.96264249e-01 -1.12136353e-02 8.83656566e-03 -3.27006707e-03]]] -[[[3.37881037e-02 8.48399649e-03 4.69561034e-03 3.73162234e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [4.37922226e-02 1.61803653e-02 1.15039636e-02 7.32884528e-03]]] -domain=2 type=multiplicity matrix -[[1.00000000e+00 0.00000000e+00] - [0.00000000e+00 1.00000000e+00]] -[[1.08778697e-01 0.00000000e+00] - [0.00000000e+00 1.42427173e-01]] -domain=2 type=nu-fission matrix -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=2 type=scatter probability matrix -[[1.00000000e+00 0.00000000e+00] - [0.00000000e+00 1.00000000e+00]] -[[1.08778697e-01 0.00000000e+00] - [0.00000000e+00 1.42427173e-01]] -domain=2 type=consistent scatter matrix -[[[3.12162675e-01 3.84813069e-02 2.08815337e-02 8.01673640e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [2.95421002e-01 -1.11817183e-02 8.81141444e-03 -3.26075959e-03]]] -[[[3.72534020e-02 8.74305414e-03 4.83468236e-03 3.77642683e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [5.02358893e-02 1.61616720e-02 1.14951123e-02 7.31312479e-03]]] -domain=2 type=consistent nu-scatter matrix -[[[3.12162675e-01 3.84813069e-02 2.08815337e-02 8.01673640e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [2.95421002e-01 -1.11817183e-02 8.81141444e-03 -3.26075959e-03]]] -[[[5.04070429e-02 9.69345878e-03 5.34169556e-03 3.87580585e-03] - [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00] - [6.55288678e-02 1.62399493e-02 1.15634161e-02 7.32785650e-03]]] -domain=2 type=chi -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=2 type=chi-prompt -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=2 type=inverse-velocity -[5.99597928e-08 2.98549016e-06] -[4.55308451e-09 3.41701982e-07] -domain=2 type=prompt-nu-fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=2 type=prompt-nu-fission matrix -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=2 type=delayed-nu-fission -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=2 type=chi-delayed -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=2 type=beta -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=2 type=decay-rate -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=2 type=delayed-nu-fission matrix -[[[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] + [1.22628106e-03 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] @@ -377,200 +223,7 @@ domain=2 type=delayed-nu-fission matrix [0.00000000e+00 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]]] -domain=3 type=total -[6.64572194e-01 2.05238389e+00] -[3.12147473e-02 2.24342890e-01] -domain=3 type=transport -[2.83322749e-01 1.49973953e+00] -[3.52061127e-02 2.30902118e-01] -domain=3 type=nu-transport -[2.83322749e-01 1.49973953e+00] -[3.52061127e-02 2.30902118e-01] -domain=3 type=absorption -[6.90399488e-04 3.16872537e-02] -[4.41475703e-05 3.74655812e-03] -domain=3 type=capture -[6.90399488e-04 3.16872537e-02] -[4.41475703e-05 3.74655812e-03] -domain=3 type=fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=3 type=nu-fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=3 type=kappa-fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=3 type=scatter -[6.63881795e-01 2.02069663e+00] -[3.11726794e-02 2.20604438e-01] -domain=3 type=nu-scatter -[6.71269157e-01 2.03538818e+00] -[2.61863693e-02 2.58060310e-01] -domain=3 type=scatter matrix -[[[6.39901439e-01 3.81167422e-01 1.52391887e-01 9.14802163e-03] - [3.13677176e-02 8.75772258e-03 -2.56790088e-03 -3.78480261e-03]] - - [[4.43343102e-04 3.99960385e-04 3.19562684e-04 2.13846954e-04] - [2.03494484e+00 5.09940476e-01 1.11174601e-01 2.49884339e-02]]] -[[[2.47091210e-02 1.62432637e-02 8.15627711e-03 3.88856186e-03] - [1.72811278e-03 9.25670435e-04 1.01398468e-03 8.17075512e-04]] - - [[4.44850361e-04 4.01320154e-04 3.20649120e-04 2.14573982e-04] - [2.57799870e-01 5.12359026e-02 1.30198161e-02 8.31235196e-03]]] -domain=3 type=nu-scatter matrix -[[[6.39901439e-01 3.81167422e-01 1.52391887e-01 9.14802163e-03] - [3.13677176e-02 8.75772258e-03 -2.56790088e-03 -3.78480261e-03]] - - [[4.43343102e-04 3.99960385e-04 3.19562684e-04 2.13846954e-04] - [2.03494484e+00 5.09940476e-01 1.11174601e-01 2.49884339e-02]]] -[[[2.47091210e-02 1.62432637e-02 8.15627711e-03 3.88856186e-03] - [1.72811278e-03 9.25670435e-04 1.01398468e-03 8.17075512e-04]] - - [[4.44850361e-04 4.01320154e-04 3.20649120e-04 2.14573982e-04] - [2.57799870e-01 5.12359026e-02 1.30198161e-02 8.31235196e-03]]] -domain=3 type=multiplicity matrix -[[1.00000000e+00 1.00000000e+00] - [1.00000000e+00 1.00000000e+00]] -[[3.86091908e-02 6.76673480e-02] - [1.41421356e+00 1.35929207e-01]] -domain=3 type=nu-fission matrix -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=3 type=scatter probability matrix -[[9.53271028e-01 4.67289720e-02] - [2.17817469e-04 9.99782183e-01]] -[[3.60184962e-02 2.54736726e-03] - [2.18820864e-04 1.35884974e-01]] -domain=3 type=consistent scatter matrix -[[[6.32859281e-01 3.76972649e-01 1.50714804e-01 9.04734705e-03] - [3.10225138e-02 8.66134326e-03 -2.53964096e-03 -3.74315061e-03]] - - [[4.40143026e-04 3.97073448e-04 3.17256062e-04 2.12303394e-04] - [2.02025649e+00 5.06259696e-01 1.10372136e-01 2.48080660e-02]]] -[[[3.81421848e-02 2.37145043e-02 1.06635009e-02 3.86848985e-03] - [2.23201039e-03 9.99377011e-04 1.00968851e-03 8.26439590e-04]] - - [[4.44773843e-04 4.01251123e-04 3.20593966e-04 2.14537073e-04] - [3.52193929e-01 7.91402819e-02 1.84875925e-02 8.77085752e-03]]] -domain=3 type=consistent nu-scatter matrix -[[[6.32859281e-01 3.76972649e-01 1.50714804e-01 9.04734705e-03] - [3.10225138e-02 8.66134326e-03 -2.53964096e-03 -3.74315061e-03]] - - [[4.40143026e-04 3.97073448e-04 3.17256062e-04 2.12303394e-04] - [2.02025649e+00 5.06259696e-01 1.10372136e-01 2.48080660e-02]]] -[[[4.52974133e-02 2.78247077e-02 1.21478698e-02 3.88422859e-03] - [3.06407542e-03 1.15855774e-03 1.02420876e-03 8.64382873e-04]] - - [[7.65033031e-04 6.90171798e-04 5.51437493e-04 3.69014387e-04] - [4.46600759e-01 1.04874946e-01 2.38091367e-02 9.39676938e-03]]] -domain=3 type=chi -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=3 type=chi-prompt -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=3 type=inverse-velocity -[6.02207835e-08 3.04495548e-06] -[3.78043705e-09 3.60007679e-07] -domain=3 type=prompt-nu-fission -[0.00000000e+00 0.00000000e+00] -[0.00000000e+00 0.00000000e+00] -domain=3 type=prompt-nu-fission matrix -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=3 type=delayed-nu-fission -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=3 type=chi-delayed -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=3 type=beta -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=3 type=decay-rate -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] -domain=3 type=delayed-nu-fission matrix -[[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]]] -[[[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] - - [[0.00000000e+00 0.00000000e+00] - [0.00000000e+00 0.00000000e+00]] + [1.22965527e-03 0.00000000e+00]] [[0.00000000e+00 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] diff --git a/tests/regression_tests/mgxs_library_hdf5/test.py b/tests/regression_tests/mgxs_library_hdf5/test.py index 9811ab215..2f3c9d149 100644 --- a/tests/regression_tests/mgxs_library_hdf5/test.py +++ b/tests/regression_tests/mgxs_library_hdf5/test.py @@ -28,7 +28,15 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.num_delayed_groups = 6 self.mgxs_lib.legendre_order = 3 - self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.domain_type = 'mesh' + + # Instantiate a tally mesh + mesh = openmc.RegularMesh(mesh_id=1) + mesh.dimension = [2, 2] + mesh.lower_left = [-100., -100.] + mesh.width = [100., 100.] + + self.mgxs_lib.domains = [mesh] self.mgxs_lib.build_library() # Add tallies @@ -54,8 +62,8 @@ class MGXSTestHarness(PyAPITestHarness): for domain in self.mgxs_lib.domains: for mgxs_type in self.mgxs_lib.mgxs_types: outstr += 'domain={0} type={1}\n'.format(domain.id, mgxs_type) - avg_key = 'material/{0}/{1}/average'.format(domain.id, mgxs_type) - std_key = 'material/{0}/{1}/std. dev.'.format(domain.id, mgxs_type) + avg_key = 'mesh/{}/{}/average'.format(domain.id, mgxs_type) + std_key = 'mesh/{}/{}/std. dev.'.format(domain.id, mgxs_type) outstr += '{}\n{}\n'.format(f[avg_key][...], f[std_key][...]) # Hash the results if necessary diff --git a/tests/regression_tests/mgxs_library_mesh/inputs_true.dat b/tests/regression_tests/mgxs_library_mesh/inputs_true.dat index f0f93d43c..1f3c1ff6e 100644 --- a/tests/regression_tests/mgxs_library_mesh/inputs_true.dat +++ b/tests/regression_tests/mgxs_library_mesh/inputs_true.dat @@ -53,7 +53,10 @@ 3 - + + 1 + + 1 2 3 4 5 6 @@ -363,61 +366,67 @@ analog + 66 2 + total + current + analog + + 1 2 total flux tracklength - - 1 65 2 + + 1 69 2 total delayed-nu-fission tracklength - - 1 65 2 - total - delayed-nu-fission - analog - - 1 65 5 + 1 69 2 total delayed-nu-fission analog + 1 69 5 + total + delayed-nu-fission + analog + + 1 2 total nu-fission tracklength - - 1 65 2 - total - delayed-nu-fission - tracklength - - 1 65 2 + 1 69 2 total delayed-nu-fission tracklength - 1 65 2 + 1 69 2 + total + delayed-nu-fission + tracklength + + + 1 69 2 total decay-rate tracklength - + 1 2 total flux analog - - 1 65 2 5 + + 1 69 2 5 total delayed-nu-fission analog diff --git a/tests/regression_tests/mgxs_library_mesh/results_true.dat b/tests/regression_tests/mgxs_library_mesh/results_true.dat index f1ff29d6c..cbcbcb239 100644 --- a/tests/regression_tests/mgxs_library_mesh/results_true.dat +++ b/tests/regression_tests/mgxs_library_mesh/results_true.dat @@ -178,6 +178,40 @@ 2 1 2 1 1 1 total 0.032188 0.002420 1 2 1 1 1 1 total 0.032304 0.002073 3 2 2 1 1 1 total 0.031336 0.001614 + mesh 1 group in nuclide mean std. dev. + x y surf +3 1 1 x-max in 1 total 0.1892 0.011302 +2 1 1 x-max out 1 total 0.2738 0.093735 +1 1 1 x-min in 1 total 0.0000 0.000000 +0 1 1 x-min out 1 total 0.0000 0.000000 +7 1 1 y-max in 1 total 0.1724 0.009114 +6 1 1 y-max out 1 total 0.2358 0.041204 +5 1 1 y-min in 1 total 0.0000 0.000000 +4 1 1 y-min out 1 total 0.0000 0.000000 +19 1 2 x-max in 1 total 0.1822 0.011922 +18 1 2 x-max out 1 total 0.1778 0.010514 +17 1 2 x-min in 1 total 0.0000 0.000000 +16 1 2 x-min out 1 total 0.0000 0.000000 +23 1 2 y-max in 1 total 0.0000 0.000000 +22 1 2 y-max out 1 total 0.0000 0.000000 +21 1 2 y-min in 1 total 0.2358 0.041204 +20 1 2 y-min out 1 total 0.1724 0.009114 +11 2 1 x-max in 1 total 0.0000 0.000000 +10 2 1 x-max out 1 total 0.0000 0.000000 +9 2 1 x-min in 1 total 0.2738 0.093735 +8 2 1 x-min out 1 total 0.1892 0.011302 +15 2 1 y-max in 1 total 0.1894 0.012331 +14 2 1 y-max out 1 total 0.2290 0.038756 +13 2 1 y-min in 1 total 0.0000 0.000000 +12 2 1 y-min out 1 total 0.0000 0.000000 +27 2 2 x-max in 1 total 0.0000 0.000000 +26 2 2 x-max out 1 total 0.0244 0.024400 +25 2 2 x-min in 1 total 0.1778 0.010514 +24 2 2 x-min out 1 total 0.1822 0.011922 +31 2 2 y-max in 1 total 0.0000 0.000000 +30 2 2 y-max out 1 total 0.0236 0.023600 +29 2 2 y-min in 1 total 0.2290 0.038756 +28 2 2 y-min out 1 total 0.1894 0.012331 mesh 1 delayedgroup group in nuclide mean std. dev. x y z 0 1 1 1 1 1 total 0.000007 4.734745e-07 diff --git a/tests/regression_tests/mgxs_library_no_nuclides/test.py b/tests/regression_tests/mgxs_library_no_nuclides/test.py index 506ac238f..f005c095e 100644 --- a/tests/regression_tests/mgxs_library_no_nuclides/test.py +++ b/tests/regression_tests/mgxs_library_no_nuclides/test.py @@ -19,8 +19,10 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib = openmc.mgxs.Library(self._model.geometry) self.mgxs_lib.by_nuclide = False - # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + \ + # Test all relevant MGXS types + relevant_MGXS_TYPES = [item for item in openmc.mgxs.MGXS_TYPES + if item != 'current'] + self.mgxs_lib.mgxs_types = tuple(relevant_MGXS_TYPES) + \ openmc.mgxs.MDGXS_TYPES self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.num_delayed_groups = 6 diff --git a/tests/regression_tests/mgxs_library_nuclides/test.py b/tests/regression_tests/mgxs_library_nuclides/test.py index c64c27709..87a65723c 100644 --- a/tests/regression_tests/mgxs_library_nuclides/test.py +++ b/tests/regression_tests/mgxs_library_nuclides/test.py @@ -17,8 +17,11 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._model.geometry) self.mgxs_lib.by_nuclide = True - # Test all MGXS types - self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES + + # Test relevant all MGXS types + relevant_MGXS_TYPES = [item for item in openmc.mgxs.MGXS_TYPES + if item != 'current'] + self.mgxs_lib.mgxs_types = tuple(relevant_MGXS_TYPES) self.mgxs_lib.energy_groups = energy_groups self.mgxs_lib.legendre_order = 3 self.mgxs_lib.domain_type = 'material' diff --git a/tests/regression_tests/source_dlopen/source_sampling.cpp b/tests/regression_tests/source_dlopen/source_sampling.cpp index eaf8b74d9..ea74afdd9 100644 --- a/tests/regression_tests/source_dlopen/source_sampling.cpp +++ b/tests/regression_tests/source_dlopen/source_sampling.cpp @@ -1,11 +1,14 @@ #include +#include + #include "openmc/random_lcg.h" #include "openmc/source.h" #include "openmc/particle.h" -// you must have external C linkage here otherwise -// dlopen will not find the file -extern "C" openmc::Particle::Bank sample_source(uint64_t *seed) { +class Source : openmc::CustomSource +{ + openmc::Particle::Bank sample(uint64_t *seed) + { openmc::Particle::Bank particle; // wgt particle.particle = openmc::Particle::Type::neutron; @@ -20,4 +23,13 @@ extern "C" openmc::Particle::Bank sample_source(uint64_t *seed) { particle.E = 14.08e6; particle.delayed_group = 0; return particle; + } +}; + +// A function to create a unique pointer to an instance of this class when generated +// via a plugin call using dlopen/dlsym. +// You must have external C linkage here otherwise dlopen will not find the file +extern "C" std::unique_ptr openmc_create_source(std::string parameters) +{ + return std::make_unique(); } diff --git a/tests/regression_tests/source_parameterized_dlopen/__init__.py b/tests/regression_tests/source_parameterized_dlopen/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/regression_tests/source_parameterized_dlopen/inputs_true.dat b/tests/regression_tests/source_parameterized_dlopen/inputs_true.dat new file mode 100644 index 000000000..f4a0eba73 --- /dev/null +++ b/tests/regression_tests/source_parameterized_dlopen/inputs_true.dat @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + fixed source + 1000 + 10 + 0 + + diff --git a/tests/regression_tests/source_parameterized_dlopen/parameterized_source_sampling.cpp b/tests/regression_tests/source_parameterized_dlopen/parameterized_source_sampling.cpp new file mode 100644 index 000000000..3b0875bb0 --- /dev/null +++ b/tests/regression_tests/source_parameterized_dlopen/parameterized_source_sampling.cpp @@ -0,0 +1,38 @@ +#include "openmc/source.h" +#include "openmc/particle.h" + +class Source : public openmc::CustomSource { + public: + Source(double energy) : energy_(energy) { } + + // Samples from an instance of this class. + openmc::Particle::Bank sample(uint64_t* seed) + { + openmc::Particle::Bank particle; + // wgt + particle.particle = openmc::Particle::Type::neutron; + particle.wgt = 1.0; + // position + particle.r.x = 0.0; + particle.r.y = 0.0; + particle.r.z = 0.0; + // angle + particle.u = {1.0, 0.0, 0.0}; + particle.E = this->energy_; + particle.delayed_group = 0; + + return particle; + } + + private: + double energy_; +}; + +// A function to create a unique pointer to an instance of this class when generated +// via a plugin call using dlopen/dlsym. +// You must have external C linkage here otherwise dlopen will not find the file +extern "C" std::unique_ptr openmc_create_source(std::string parameter) +{ + double energy = std::stod(parameter); + return std::make_unique(energy); +} diff --git a/tests/regression_tests/source_parameterized_dlopen/results_true.dat b/tests/regression_tests/source_parameterized_dlopen/results_true.dat new file mode 100644 index 000000000..e69de29bb diff --git a/tests/regression_tests/source_parameterized_dlopen/test.py b/tests/regression_tests/source_parameterized_dlopen/test.py new file mode 100644 index 000000000..c613cde4b --- /dev/null +++ b/tests/regression_tests/source_parameterized_dlopen/test.py @@ -0,0 +1,75 @@ +from pathlib import Path +import os +import shutil +import subprocess +import textwrap + +import openmc +import pytest + +from tests.testing_harness import PyAPITestHarness + + +@pytest.fixture +def compile_source(request): + """Compile the external source""" + + # Get build directory and write CMakeLists.txt file + openmc_dir = Path(str(request.config.rootdir)) / 'build' + with open('CMakeLists.txt', 'w') as f: + f.write(textwrap.dedent(""" + cmake_minimum_required(VERSION 3.3 FATAL_ERROR) + project(openmc_sources CXX) + add_library(source SHARED parameterized_source_sampling.cpp) + find_package(OpenMC REQUIRED HINTS {}) + target_link_libraries(source OpenMC::libopenmc) + """.format(openmc_dir))) + + # Create temporary build directory and change to there + local_builddir = Path('build') + local_builddir.mkdir(exist_ok=True) + os.chdir(str(local_builddir)) + + # Run cmake/make to build the shared libary + subprocess.run(['cmake', os.path.pardir], check=True) + subprocess.run(['make'], check=True) + os.chdir(os.path.pardir) + + yield + + # Remove local build directory when test is complete + shutil.rmtree('build') + os.remove('CMakeLists.txt') + + +@pytest.fixture +def model(): + model = openmc.model.Model() + natural_lead = openmc.Material(name="natural_lead") + natural_lead.add_element('Pb', 1.0) + natural_lead.set_density('g/cm3', 11.34) + model.materials.append(natural_lead) + + # geometry + surface_sph1 = openmc.Sphere(r=100, boundary_type='vacuum') + cell_1 = openmc.Cell(fill=natural_lead, region=-surface_sph1) + model.geometry = openmc.Geometry([cell_1]) + + # settings + model.settings.batches = 10 + model.settings.inactive = 0 + model.settings.particles = 1000 + model.settings.run_mode = 'fixed source' + + # custom source from shared library + source = openmc.Source() + source.library = 'build/libsource.so' + source.parameters = '1e3' + model.settings.source = source + + return model + + +def test_dlopen_source(compile_source, model): + harness = PyAPITestHarness('statepoint.10.h5', model) + harness.main() diff --git a/tests/unit_tests/test_data_misc.py b/tests/unit_tests/test_data_misc.py index 8244ca7f0..6a81fb1e0 100644 --- a/tests/unit_tests/test_data_misc.py +++ b/tests/unit_tests/test_data_misc.py @@ -84,6 +84,7 @@ def test_atomic_mass(): def test_atomic_weight(): assert openmc.data.atomic_weight('C') == 12.011115164864455 + assert openmc.data.atomic_weight('carbon') == 12.011115164864455 with pytest.raises(ValueError): openmc.data.atomic_weight('Qt') @@ -106,6 +107,17 @@ def test_gnd_name(): assert openmc.data.gnd_name(95, 242, 10) == ('Am242_m10') +def test_isotopes(): + hydrogen_isotopes = [('H1', 0.99984426), ('H2', 0.00015574)] + assert openmc.data.isotopes('H') == hydrogen_isotopes + assert openmc.data.isotopes('hydrogen') == hydrogen_isotopes + assert openmc.data.isotopes('Al') == [('Al27', 1.0)] + assert openmc.data.isotopes('Aluminum') == [('Al27', 1.0)] + assert openmc.data.isotopes('aluminium') == [('Al27', 1.0)] + with pytest.raises(ValueError): + openmc.data.isotopes('Чорнобиль') + + def test_zam(): assert openmc.data.zam('H1') == (1, 1, 0) assert openmc.data.zam('Zr90') == (40, 90, 0)