mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Merge branch 'develop' into ccfe-spp-2
This commit is contained in:
commit
13dadf9c24
69 changed files with 3379 additions and 3973 deletions
16
.gitignore
vendored
16
.gitignore
vendored
|
|
@ -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/
|
||||
10
README.md
10
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
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ OpenMC was originally developed by members of the `Computational Reactor Physics
|
|||
Group <http://crpg.mit.edu>`_ at the `Massachusetts Institute of Technology
|
||||
<http://web.mit.edu>`_ 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 <https://groups.google.com/forum/?fromgroups=#!forum/openmc-users>`_.
|
||||
information on OpenMC, feel free to post a message on the `OpenMC Discourse
|
||||
Forum <https://openmc.discourse.group/>`_.
|
||||
|
||||
.. admonition:: Recommended publication for citing
|
||||
:class: tip
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <https://doi.org/10.1016/j.anucene.2017.05.002>`_,"
|
||||
*Ann. Nucl. Energy*, **109**, 260-276 (2017).
|
||||
|
||||
|
|
|
|||
|
|
@ -60,8 +60,10 @@ Core Functions
|
|||
:template: myfunction.rst
|
||||
|
||||
atomic_mass
|
||||
atomic_weight
|
||||
dose_coefficients
|
||||
gnd_name
|
||||
isotopes
|
||||
linearize
|
||||
thin
|
||||
water_density
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
<https://conda-forge.github.io/>`_ is a community-led conda channel of
|
||||
installable packages. For instructions on installing conda, please consult their
|
||||
`documentation
|
||||
<https://docs.conda.io/projects/conda/en/latest/user-guide/install/>`_.
|
||||
|
||||
Once you have `conda` installed on your system, add the `conda-forge` channel to
|
||||
your configuration with:
|
||||
`Conda <http://conda.pydata.org/docs/>`_ 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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <memory> // 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<Source> openmc_create_source(std::string parameters)
|
||||
{
|
||||
return std::make_unique<Source>();
|
||||
}
|
||||
|
||||
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 <memory> // 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<Source> openmc_create_source(std::string parameter) {
|
||||
double energy = std::stod(parameter);
|
||||
return std::make_unique<Source>(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
|
||||
---------------
|
||||
|
|
|
|||
|
|
@ -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
|
||||
<https://openmc.discourse.group/>`_.
|
||||
|
||||
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
|
|||
<trace>5 1 4032</trace>
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,26 +1,36 @@
|
|||
#include <cmath> // for M_PI
|
||||
#include <memory> // 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<Source> openmc_create_source(std::string parameters)
|
||||
{
|
||||
return std::make_unique<Source>();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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": [
|
||||
"<IPython.core.display.Image object>"
|
||||
]
|
||||
},
|
||||
"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": "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\n",
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Image object>"
|
||||
]
|
||||
},
|
||||
"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": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQBAMAAABykSv/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEX///+TUVD//wCAgAA4vPIAAP/pte6jAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+QIHAkpLvz/+XkAAAiBSURBVHja7Z3rddw6DISNDkR3ICkVrCpwjtNB3H8rNznxPkQBu3xgCAqX83fOMfkJszJFUtTb29DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQULlCA7XgoBYgk5OCNCmJFxBqAzINkFS14WiQLS8g1ApkclIQeEm8gFA7kGmApKgdBzhbXkAoaut9mflOaBhTu4K8LwvfLx2jGcjfxtl+KRk4jihZyz8du6VkTI1AlkXol5aBA+Ebj/ulZzQpyLIIzSsaqJI8grzvWp8hBgxE5HhoXtHAZUvmuDWvaOBA6AnHd/OKBjBbd5CFk7IBBHnO8bd5RQOYLXrBoSpkSdyAvEoWBASRLS8gZAOiny0WZNs2viO1BhAkMCDbJvSr2sD9cycGZNuEftUbuIEjA7J+t36Je6Vg4ECCFYh2thiQbROSomDAQMgORDdb4Qiy3lqPkqJhBFRJvICQJYhmttyABEsQzWx5ASEOpNXtVzNbwRZEryQ8yBrFYVE0MCBkDaKVLQGkzTBeEyQIIE0erDSzJYI0eNTVBCEZBKaoSZ1sBXsQnZJ4AaEeQDSy5QbEggOSregvvrcBmdVByITjQFKfLSMO/Y0pVhwxiW6yWnIoP12RHYfuFIQlh+b0FplyKE6dPoC8W4DMWiDGHHobU6w5Hkl0kmXFobQuSvYcOrsgzIP1V3N9tqgvkPKSuAGxv2ftQMqzxYKsF6FBlFEPQgzIys7dQo07SGm2OBBp8hZo1IMw45NVmE5HGtWjFG7AKK3UII3qgSMDclvsi68j0qgGCf2BlGWLAbmt9cWBQBq1INQjSEm23ICEHkEKskV9guSXxA1I6BMkP1ssyHpt4xK1jjTqQKhXkNxsBRbEeqxVUBIBZOWvYqvRbz4ICSC2zyMF2RJBFqFxoFEFEkSQ9opA8rLlBYR6BsnJVugZJKckXkDiZJlOxtdsTKGuOCq2oXXGUb4zsKMfyD/NZSDUG0fpCLg/jsKHkg45iqYgdsmy7v9d+dmiLjkKtnN0ypH/cmKHP5B/mvNAqFeO3LWrfjky10U75sjaBXFLlnWfeaVnyw1Ip7feGORltugsIK9K4gaE+6++bvxWCwsj+X8iA7IKc7QmRioIMSDSrLmJkTpwZECu6xWHy2VipIIwI9/rcgXi3eJ8I3EETGcCmf4PIOEIst7+1mXfho0R0rLlBYTOBTL5BwnnAglJBTkDyJQD0u/tVwYJZwMJWSDX8l7iRkyMFBDiQXod/crZCgLIyl8s6+cRuSQSCPDUkHwjAYREkD+X5bKwam9EnZzyQDpSAkg4I0hwDELnBJleFuRdr/EfP/WMj5clARbk81PReAUCvGd9fgr9KjNeZIugHGy/So3nIGAOpl/lxtNswX7o19Z/6hkfT0AIzRH3q8rYkUxiQTAc+35VGh9iScA/kEPoaw0JhJAcX38U9aveELJFOI6vbz32S8PgQfAcj/3SMdhswX7ov+6t/77+fJWMDwaEGnDc+qVmfByzBbvxfu30cNdRMT4OJWlSkO/r+KlnHEBgyfqKJFzeUuOQLTcgqHvWr7j133xOSo34vkUcyCrsqEg1fjBX8XaBlYw7yCSCrMIMZrJhAcKMe1dhcjzd+MHE4ZoULeNhDCyBSMsV6YYBCHkAmd5Qp4YYgAQUyBcj4ZdbZjyABNgZFa1BJj8gwQdI8APiJlpuQNzcfv38Q3QzRHEzaPQzjKcjyDkfrDiQUz7qupl88DMd5AbEzZSpn0lsWLZ+Ha4idlnBzUKPn6U3wpPce4VcDH0AOffytJsNA362cBCe5KeesePYb6pxs83Jz8YzApMoGvueTs9Bzrs50812WT8bmAlYEkXFvTwky88mfz8gwPsWDmTKAznXq0luXhbz8/oeCSDSBHy3L1S6ecXVz0vHdDaQKQdkvf2tqO42RhKIm6MS/Bxe4QbEzQEvfkDoCNLv7Xf6P4C4OSjMz9FtDEivo9/nIG6ON/Rz4CQxID0pNVl+QNwck+vn4GI3IG4O9/Zz3Dr1S3LnSEiWn08S+PlIBHVKkvoowoJ0RBKyQdx82sbPx4aoP5I9R2Ky/HyQy88n0qgzkqg7ycnqbRdEKAZx82FHPyDUM0hGsvx8jtYPCIkg/Mwm0ohAspLl5yPabj5r7udD88SCXJcrKt5Gzjf2IJnJEh5KOgDJ5eBBtpuEOCCMShDqEyQ7WX5AUMdzVILkc6BOtagDKSiIH5C3HkFKOEDnjOQb1SDUH0hRskDnjOQb1SCY4znyjbkyWfzalXAV2zyPFBYEc85IvlEPwq+LrlzbSGOuTVYvC7wKINQXSHGy/ID0sQtirk5WJxtTFArSxe6t+pvvY7bswqVwz9qBWJHUj0/ibNmQ1A8YjyAmP5OgBYI6ZySfoy5ZxhtTgl5BhDfh2nNUgxhuTJl3Tddy2G3n2HPUg5ARScRRnSyrddGIo74gVkcoBH0QsiCJ21RIlh8Qk2wBkuUIhOxBVJL1bGfgJuzBqDYQBTE5ZwQDQgKINJ3e6rANLZDrQsYl7pWCgQExOGcEkiyLc0ZAIGQLopYsg+M5MAVxBEKWIIrJ8gPS/HgOULIcgdARpIvDNqpK0hhEl4MDWaM4LIoGDoSsQJST1fqcERwIezyH0CvVByttDn5ddIM/6qoXpPECLxCk7fEcuGQ5AiELEECy/IC8zJaqgUvWy/uWsoEryItzRmZlAwjydGPKrG7AksXuMT80rmjgQEgkmSEGKllPtnOADBQIO70VN65poDikjSkhBIgBK4iwvhCC0K9aAwfCbkyZj91SMnAc3HYOpldaBhCEDs2zvdIxJiDIW2goJIcfEGrHMQ2QJLUDwXL4AaFWHBMYpFlJ0Bx+QKgNxzRAktUGBM/hB4RacEwNQJqUpAXH0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0JBb/Qdzkh5bG3T0BgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wOC0yOFQwODo0MTo0NiswMTowMPgs44sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDgtMjhUMDg6NDE6NDYrMDE6MDCJcVs3AAAAAElFTkSuQmCC\n",
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Image object>"
|
||||
]
|
||||
},
|
||||
"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,
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -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,
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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,
|
||||
|
|
|
|||
8
examples/parameterized_custom_source/CMakeLists.txt
Normal file
8
examples/parameterized_custom_source/CMakeLists.txt
Normal file
|
|
@ -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)
|
||||
23
examples/parameterized_custom_source/README.md
Normal file
23
examples/parameterized_custom_source/README.md
Normal file
|
|
@ -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=<path_to_openmc_install> 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.
|
||||
37
examples/parameterized_custom_source/build_xml.py
Normal file
37
examples/parameterized_custom_source/build_xml.py
Normal file
|
|
@ -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()
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
#include <cmath> // for M_PI
|
||||
#include <memory> // for unique_ptr
|
||||
#include <unordered_map>
|
||||
|
||||
#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<Source> from_string(std::string parameters)
|
||||
{
|
||||
std::unordered_map<std::string, std::string> 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<Source>(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<Source> openmc_create_source(std::string parameters)
|
||||
{
|
||||
return Source::from_string(parameters);
|
||||
}
|
||||
14
examples/parameterized_custom_source/show_flux.py
Normal file
14
examples/parameterized_custom_source/show_flux.py
Normal file
|
|
@ -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()
|
||||
|
|
@ -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<int64_t> overlap_check_count;
|
||||
|
||||
|
|
|
|||
|
|
@ -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<double> values,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<double>& 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;}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<CustomSource> create_custom_source_t(std::string parameters);
|
||||
|
||||
//==============================================================================
|
||||
// Functions
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 *
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ _COMBOBOX_SELECTED = '<<ComboboxSelected>>'
|
|||
|
||||
class MeshPlotter(tk.Frame):
|
||||
def __init__(self, parent, filename):
|
||||
super().__init__(self, parent)
|
||||
super().__init__(parent)
|
||||
|
||||
self.labels = {
|
||||
'Cell': 'Cell:',
|
||||
|
|
|
|||
|
|
@ -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<double, int32_t>
|
||||
DAGCell::distance(Position r, Direction u, int32_t on_surface, Particle* p) const
|
||||
|
|
|
|||
28
src/mesh.cpp
28
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<double> values,
|
||||
|
|
|
|||
|
|
@ -237,6 +237,16 @@ Nuclide::Nuclide(hid_t group, const std::vector<double>& 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_) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
23
src/plot.cpp
23
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_;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
165
src/reaction.cpp
165
src/reaction.cpp
|
|
@ -87,7 +87,7 @@ Reaction::Reaction(hid_t group, const std::vector<int>& temperatures)
|
|||
// Non-member functions
|
||||
//==============================================================================
|
||||
|
||||
const std::unordered_map<int, std::string> REACTION_NAME_MAP {
|
||||
std::unordered_map<int, std::string> REACTION_NAME_MAP {
|
||||
{SCORE_FLUX, "flux"},
|
||||
{SCORE_TOTAL, "total"},
|
||||
{SCORE_SCATTER, "scatter"},
|
||||
|
|
@ -150,6 +150,55 @@ const std::unordered_map<int, std::string> 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<int, std::string> REACTION_NAME_MAP {
|
|||
{HEATING_LOCAL, "heating-local"},
|
||||
};
|
||||
|
||||
std::string reaction_name(int mt)
|
||||
std::unordered_map<std::string, int> 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
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#endif
|
||||
|
||||
#include <algorithm> // for move
|
||||
#include <memory> // for unique_ptr
|
||||
|
||||
#ifdef HAS_DYNAMIC_LINKING
|
||||
#include <dlfcn.h> // for dlopen, dlsym, dlclose, dlerror
|
||||
|
|
@ -44,9 +45,9 @@ std::vector<SourceDistribution> 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<CustomSource> 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<sample_t>(dlsym(custom_source_library, "sample_source"));
|
||||
// get the function to create the CustomSource from the library
|
||||
auto create_custom_source = reinterpret_cast<create_custom_source_t*>(
|
||||
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()
|
||||
|
|
|
|||
|
|
@ -687,6 +687,8 @@ void read_source_bank(hid_t group_id)
|
|||
void write_unstructured_mesh_results() {
|
||||
|
||||
for (auto& tally : model::tallies) {
|
||||
|
||||
std::vector<std::string> 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); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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_;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<std::string>& 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:
|
||||
|
|
|
|||
|
|
@ -50,7 +50,12 @@
|
|||
</settings>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<tallies>
|
||||
<filter id="1" type="material">
|
||||
<mesh id="1">
|
||||
<dimension>2 2</dimension>
|
||||
<lower_left>-100.0 -100.0</lower_left>
|
||||
<width>100.0 100.0</width>
|
||||
</mesh>
|
||||
<filter id="1" type="mesh">
|
||||
<bins>1</bins>
|
||||
</filter>
|
||||
<filter id="2" type="energy">
|
||||
|
|
@ -68,15 +73,12 @@
|
|||
<filter id="52" type="energy">
|
||||
<bins>0.0 20000000.0</bins>
|
||||
</filter>
|
||||
<filter id="65" type="delayedgroup">
|
||||
<filter id="66" type="meshsurface">
|
||||
<bins>1</bins>
|
||||
</filter>
|
||||
<filter id="69" type="delayedgroup">
|
||||
<bins>1 2 3 4 5 6</bins>
|
||||
</filter>
|
||||
<filter id="80" type="material">
|
||||
<bins>2</bins>
|
||||
</filter>
|
||||
<filter id="159" type="material">
|
||||
<bins>3</bins>
|
||||
</filter>
|
||||
<tally id="1">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
|
|
@ -384,793 +386,67 @@
|
|||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="52">
|
||||
<filters>66 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>current</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="53">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="53">
|
||||
<filters>1 65 2</filters>
|
||||
<tally id="54">
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="54">
|
||||
<filters>1 65 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="55">
|
||||
<filters>1 65 5</filters>
|
||||
<filters>1 69 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="56">
|
||||
<filters>1 69 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="57">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="57">
|
||||
<filters>1 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="58">
|
||||
<filters>1 65 2</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="59">
|
||||
<filters>1 65 2</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="60">
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="60">
|
||||
<tally id="61">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="61">
|
||||
<filters>1 65 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="62">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="63">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="64">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="65">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="66">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="67">
|
||||
<filters>80 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="68">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="69">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="70">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="71">
|
||||
<filters>80 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="72">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="73">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="74">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="75">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="76">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="77">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="78">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="79">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="80">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="81">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="82">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>kappa-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="83">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="84">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="85">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="86">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="87">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="88">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="89">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="90">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="91">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="92">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="93">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="94">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="95">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="96">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="97">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="98">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="99">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="100">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="101">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="102">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="103">
|
||||
<filters>80 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="104">
|
||||
<filters>80 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="105">
|
||||
<filters>80 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="106">
|
||||
<filters>80 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="107">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="108">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>inverse-velocity</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="109">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="110">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="111">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="112">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="113">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="114">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="115">
|
||||
<filters>80 65 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="116">
|
||||
<filters>80 65 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="117">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="118">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="119">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="120">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="121">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="122">
|
||||
<filters>80 65 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="123">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="124">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="125">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="126">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="127">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="128">
|
||||
<filters>159 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="129">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="130">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="131">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="132">
|
||||
<filters>159 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="133">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="134">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="135">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="136">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="137">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="138">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="139">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="140">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="141">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="142">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="143">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>kappa-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="144">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="145">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="146">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="147">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="148">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="149">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="150">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="151">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="152">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="153">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="154">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="155">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="156">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="157">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="158">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="159">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="160">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="161">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="162">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="163">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="164">
|
||||
<filters>159 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="165">
|
||||
<filters>159 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="166">
|
||||
<filters>159 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="167">
|
||||
<filters>159 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="168">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="169">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>inverse-velocity</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="170">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="171">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="172">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="173">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="174">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="175">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="176">
|
||||
<filters>159 65 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="177">
|
||||
<filters>159 65 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="178">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="179">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="180">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="181">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="182">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="183">
|
||||
<filters>159 65 2 5</filters>
|
||||
<filters>1 69 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -50,7 +50,12 @@
|
|||
</settings>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<tallies>
|
||||
<filter id="1" type="material">
|
||||
<mesh id="1">
|
||||
<dimension>2 2</dimension>
|
||||
<lower_left>-100.0 -100.0</lower_left>
|
||||
<width>100.0 100.0</width>
|
||||
</mesh>
|
||||
<filter id="1" type="mesh">
|
||||
<bins>1</bins>
|
||||
</filter>
|
||||
<filter id="2" type="energy">
|
||||
|
|
@ -68,15 +73,12 @@
|
|||
<filter id="52" type="energy">
|
||||
<bins>0.0 20000000.0</bins>
|
||||
</filter>
|
||||
<filter id="65" type="delayedgroup">
|
||||
<filter id="66" type="meshsurface">
|
||||
<bins>1</bins>
|
||||
</filter>
|
||||
<filter id="69" type="delayedgroup">
|
||||
<bins>1 2 3 4 5 6</bins>
|
||||
</filter>
|
||||
<filter id="80" type="material">
|
||||
<bins>2</bins>
|
||||
</filter>
|
||||
<filter id="159" type="material">
|
||||
<bins>3</bins>
|
||||
</filter>
|
||||
<tally id="1">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
|
|
@ -384,793 +386,67 @@
|
|||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="52">
|
||||
<filters>66 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>current</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="53">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="53">
|
||||
<filters>1 65 2</filters>
|
||||
<tally id="54">
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="54">
|
||||
<filters>1 65 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="55">
|
||||
<filters>1 65 5</filters>
|
||||
<filters>1 69 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="56">
|
||||
<filters>1 69 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="57">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="57">
|
||||
<filters>1 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="58">
|
||||
<filters>1 65 2</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="59">
|
||||
<filters>1 65 2</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="60">
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="60">
|
||||
<tally id="61">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="61">
|
||||
<filters>1 65 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="62">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="63">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="64">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="65">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="66">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="67">
|
||||
<filters>80 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="68">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="69">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="70">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="71">
|
||||
<filters>80 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="72">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="73">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="74">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="75">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="76">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="77">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="78">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="79">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="80">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="81">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="82">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>kappa-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="83">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="84">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="85">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="86">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="87">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="88">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="89">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="90">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="91">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="92">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="93">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="94">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="95">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="96">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="97">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="98">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="99">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="100">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="101">
|
||||
<filters>80 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="102">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="103">
|
||||
<filters>80 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="104">
|
||||
<filters>80 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="105">
|
||||
<filters>80 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="106">
|
||||
<filters>80 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="107">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="108">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>inverse-velocity</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="109">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="110">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="111">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="112">
|
||||
<filters>80 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="113">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="114">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="115">
|
||||
<filters>80 65 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="116">
|
||||
<filters>80 65 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="117">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="118">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="119">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="120">
|
||||
<filters>80 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="121">
|
||||
<filters>80 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="122">
|
||||
<filters>80 65 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="123">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="124">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="125">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="126">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="127">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="128">
|
||||
<filters>159 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="129">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="130">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>total</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="131">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="132">
|
||||
<filters>159 5 6</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="133">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="134">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="135">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="136">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>absorption</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="137">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="138">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="139">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="140">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="141">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="142">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="143">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>kappa-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="144">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="145">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="146">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="147">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="148">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="149">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="150">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="151">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="152">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="153">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="154">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="155">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="156">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="157">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="158">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="159">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="160">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="161">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="162">
|
||||
<filters>159 2 5 28</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="163">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-scatter</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="164">
|
||||
<filters>159 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="165">
|
||||
<filters>159 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="166">
|
||||
<filters>159 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="167">
|
||||
<filters>159 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="168">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="169">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>inverse-velocity</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="170">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="171">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="172">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="173">
|
||||
<filters>159 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>prompt-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="174">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="175">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="176">
|
||||
<filters>159 65 52</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="177">
|
||||
<filters>159 65 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="178">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="179">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="180">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="181">
|
||||
<filters>159 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="182">
|
||||
<filters>159 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="183">
|
||||
<filters>159 65 2 5</filters>
|
||||
<filters>1 69 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
|
|
|
|||
|
|
@ -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]]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -53,7 +53,10 @@
|
|||
<filter id="28" type="legendre">
|
||||
<order>3</order>
|
||||
</filter>
|
||||
<filter id="65" type="delayedgroup">
|
||||
<filter id="66" type="meshsurface">
|
||||
<bins>1</bins>
|
||||
</filter>
|
||||
<filter id="69" type="delayedgroup">
|
||||
<bins>1 2 3 4 5 6</bins>
|
||||
</filter>
|
||||
<tally id="1">
|
||||
|
|
@ -363,61 +366,67 @@
|
|||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="52">
|
||||
<filters>66 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>current</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="53">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="53">
|
||||
<filters>1 65 2</filters>
|
||||
<tally id="54">
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="54">
|
||||
<filters>1 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="55">
|
||||
<filters>1 65 5</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="56">
|
||||
<filters>1 69 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="57">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="57">
|
||||
<filters>1 65 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="58">
|
||||
<filters>1 65 2</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="59">
|
||||
<filters>1 65 2</filters>
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="60">
|
||||
<filters>1 69 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="60">
|
||||
<tally id="61">
|
||||
<filters>1 2</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="61">
|
||||
<filters>1 65 2 5</filters>
|
||||
<tally id="62">
|
||||
<filters>1 69 2 5</filters>
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -1,11 +1,14 @@
|
|||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
#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<Source> openmc_create_source(std::string parameters)
|
||||
{
|
||||
return std::make_unique<Source>();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<geometry>
|
||||
<cell id="1" material="1" region="-1" universe="1" />
|
||||
<surface boundary="vacuum" coeffs="0.0 0.0 0.0 100" id="1" type="sphere" />
|
||||
</geometry>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<materials>
|
||||
<material id="1" name="natural_lead">
|
||||
<density units="g/cm3" value="11.34" />
|
||||
<nuclide ao="0.014" name="Pb204" />
|
||||
<nuclide ao="0.241" name="Pb206" />
|
||||
<nuclide ao="0.221" name="Pb207" />
|
||||
<nuclide ao="0.524" name="Pb208" />
|
||||
</material>
|
||||
</materials>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<settings>
|
||||
<run_mode>fixed source</run_mode>
|
||||
<particles>1000</particles>
|
||||
<batches>10</batches>
|
||||
<inactive>0</inactive>
|
||||
<source library="build/libsource.so" parameters="1e3" strength="1.0" />
|
||||
</settings>
|
||||
|
|
@ -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<Source> openmc_create_source(std::string parameter)
|
||||
{
|
||||
double energy = std::stod(parameter);
|
||||
return std::make_unique<Source>(energy);
|
||||
}
|
||||
75
tests/regression_tests/source_parameterized_dlopen/test.py
Normal file
75
tests/regression_tests/source_parameterized_dlopen/test.py
Normal file
|
|
@ -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()
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue