diff --git a/docs/source/releasenotes/0.13.2.rst b/docs/source/releasenotes/0.13.2.rst
index e9175358b..b0c9b0691 100644
--- a/docs/source/releasenotes/0.13.2.rst
+++ b/docs/source/releasenotes/0.13.2.rst
@@ -14,7 +14,7 @@ Notably, a capability has been added to compute the photon spectra from decay of
unstable nuclides. Alongside that, a new :data:`openmc.config` configuration
variable has been introduced that allows easier configuration of data sources.
Additionally, users can now perform cell or material rejection when sampling
-external source distributions. Finally,
+external source distributions.
------------------------------------
Compatibility Notes and Deprecations
diff --git a/docs/source/releasenotes/0.13.3.rst b/docs/source/releasenotes/0.13.3.rst
new file mode 100644
index 000000000..c2debbcb3
--- /dev/null
+++ b/docs/source/releasenotes/0.13.3.rst
@@ -0,0 +1,134 @@
+====================
+What's New in 0.13.3
+====================
+
+.. currentmodule:: openmc
+
+-------
+Summary
+-------
+
+This release of OpenMC includes many bug fixes, performance improvements, and
+several notable new features. Some of the highlights include support for MCPL
+source files, NCrystal thermal scattering materials, and a new
+:class:`openmc.stats.MeshSpatial` class that allows a source distribution to be
+specified over a mesh. Additionally, OpenMC now allows you to export your model
+as a single XML file rather than separate XML files for geometry, materials,
+settings, and tallies.
+
+------------------------------------
+Compatibility Notes and Deprecations
+------------------------------------
+
+- Atomic mass data used in :func:`openmc.data.atomic_mass` has been updated to
+ AME 2020, which results in slightly different masses.
+
+------------
+New Features
+------------
+
+- Support was added for `MCPL `_ files to be
+ used as external sources. Additionally, source points and surfaces sources can
+ be written as MCPL files instead of HDF5 files. (`#2116
+ `_)
+- Support was added for `NCrystal `_
+ thermal scattering materials. (`#2222
+ `_)
+- The :class:`~openmc.CylindricalMesh` and :class:`~openmc.SphericalMesh`
+ classes now have an ``origin`` attribute that changes the center of the mesh.
+ (`#2256 `_)
+- A new :class:`openmc.model.Polygon` class allows defining generalized 2D
+ polygons. (`#2266 `_)
+- A new :func:`openmc.data.decay_energy` function and
+ :meth:`openmc.Material.get_decay_heat` method enable determination of decay
+ heat from a single nuclide or material. (`#2287
+ `_)
+- Full models can now be written as a single XML file rather than separate
+ geometry, materials, settings, and tallies XML files. (`#2291
+ `_)
+- Discrete distributions are now sampled using alias sampling, which is O(1) in
+ time. (`#2329 `_)
+- The new :class:`openmc.stats.MeshSpatial` allows a spatial source distribution
+ to be specified with source strengths for each mesh element. (`#2334
+ `_)
+- The new :meth:`openmc.Geometry.get_surfaces_by_name` method returns a list of
+ matching surfaces in a geometry. (`#2347
+ `_)
+- A new :attr:`openmc.Settings.create_delayed_neutrons` attribute controls
+ whether delayed neutrons are created during a simulation. (`#2348
+ `_)
+- The :meth:`openmc.deplete.Results.export_to_materials` method now takes a
+ ``path`` argument. (`#2364 `_)
+- A new :meth:`openmc.EnergyFilter.get_tabular` method allows one to create a
+ tabular distribution based on tally results using an energy filter. (`#2371
+ `_)
+- Several methods in the :class:`openmc.Material` class that require a volume to
+ be set (e.g., :meth:`~openmc.Material.get_mass`) now accept a ``volume``
+ argument. (`#2412 `_)
+
+---------
+Bug Fixes
+---------
+
+- Fix for finding redundant surfaces (`#2263 `_)
+- Adds tolerance for temperatures slightly out of bounds (`#2265 `_)
+- Fix getter/setter for weight window bounds (`#2275 `_)
+- Make sure Chain.reduce preserves decay source (`#2283 `_)
+- Fix array shape for weight window bounds (`#2284 `_)
+- Fix for non-zero CDF start points in TSL data (`#2290 `_)
+- Fix a case where inelastic scattering yield is zero (`#2295 `_)
+- Prevent Compton profile out-of-bounds memory access (`#2297 `_)
+- Produce light particles from decay (`#2301 `_)
+- Fix zero runtime attributes in depletion statepoints (`#2302 `_)
+- Fix bug in openmc.Universe.get_nuclide_densities (`#2310 `_)
+- Only show print output from depletion on rank 0 (`#2311 `_)
+- Fix photon transport with no atomic relaxation data (`#2312 `_)
+- Fix for precedence in region expressions (`#2318 `_)
+- Allow source particles with energy below cutoff (`#2319 `_)
+- Fix IncidentNeutron.from_njoy for high temperatures (`#2320 `_)
+- Add capability to unset cell temperatures (`#2323 `_)
+- Fix in plot_xs when S(a,b) tables are present (`#2335 `_)
+- Various fixes for tally triggers (`#2344 `_)
+- Raise error when mesh is flat (`#2363 `_)
+- Don't call normalize inside Tabular.mean (`#2375 `_)
+- Avoid out-of-bounds access in inelastic scatter sampling (`#2378 `_)
+- Use correct direction for anisotropic fission (`#2381 `_)
+- Fix several thermal scattering nuclide assignments (`#2382 `_)
+- Fix _materials_by_id attribute in Model (`#2385 `_)
+- Updates to batch checks for simulation restarts (`#2390 `_)
+- write_data_to_vtk volume normalization correction (`#2397 `_)
+- Enable generation of JEFF 3.3 depletion chain (`#2410 `_)
+- Fix spherical to Cartesian coordinate conversion (`#2417 `_)
+- Handle zero photon cross sections in IncidentPhoton.from_ace (`#2433 `_)
+- Fix hybrid depletion when nuclides are not present (`#2436 `_)
+- Fix bug in cylindrical and spherical meshes (`#2439 `_)
+- Improvements to mesh radial boundary coincidence (`#2443 `_)
+
+------------
+Contributors
+------------
+
+- `Hunter Belanger `_
+- `Rémi Delaporte-Mathurin `_
+- `Christopher Fichtlscherer `_
+- `Valerio Giusti `_
+- `Chris Keckler `_
+- `Kalin Kiesling `_
+- `Thomas Kittelmann `_
+- `Erik Knudsen `_
+- `Colin Larmier `_
+- `Amanda Lund `_
+- `Jose Ignacio Marquez Damien `_
+- `Josh May `_
+- `Patrick Myers `_
+- `Baptiste Mouginot `_
+- `April Novak `_
+- `Matthew Nyberg `_
+- `Ethan Peterson `_
+- `Gavin Ridley `_
+- `Paul Romano `_
+- `Patrick Shriwise `_
+- `Jonathan Shimwell `_
+- `Paul Wilson `_
+- `Olek Yardas `_
+- `Jiankai Yu `_
diff --git a/docs/source/releasenotes/index.rst b/docs/source/releasenotes/index.rst
index 910737a41..30b6d51de 100644
--- a/docs/source/releasenotes/index.rst
+++ b/docs/source/releasenotes/index.rst
@@ -7,6 +7,7 @@ Release Notes
.. toctree::
:maxdepth: 1
+ 0.13.3
0.13.2
0.13.1
0.13.0
diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst
index 899e16506..ed02c5d9f 100644
--- a/docs/source/usersguide/install.rst
+++ b/docs/source/usersguide/install.rst
@@ -105,9 +105,9 @@ other information use:
.. note::
- It should be noted that by default OpenMC builds with ``-O2 -g`` flags which
- are equivalent to a CMake build type of `RelwithDebInfo`. In addition, MPI
- is OFF while OpenMP is ON.
+ It should be noted that by default OpenMC is built with
+ `-DCMAKE_BUILD_TYPE=RelwithDebInfo`. In addition, MPI is OFF while OpenMP is
+ ON.
It is recommended to install OpenMC with the Python API. Information about this
Spack recipe can be found with the following command:
@@ -133,17 +133,18 @@ following command:
configured defaults unless otherwise specfied in the specification on the
command line. In the above example, assuming the default options weren't
changed in Spack's package configuration, py-openmc will link against a
- non-optimized non-MPI openmc. Even if an optimized openmc was built
- separately, it will rebuild openmc with optimization OFF. Thus, if you are
- trying to link against dependencies that were configured different than
- defaults, ``^openmc[variants]`` will have to be present in the command.
+ non-MPI non-release build of openmc. Even if a release build of openmc was
+ built separately, it will rebuild openmc with the default build type. Thus,
+ if you are trying to link against dependencies that were configured
+ different than defaults, ``^openmc[variants]`` will have to be present in
+ the command.
-For a more performant build of OpenMC with optimization turned ON and MPI
-provided by OpenMPI, the following command can be used:
+For a release build of OpenMC with MPI support on (provided by OpenMPI), the
+following command can be used:
.. code-block:: sh
- spack install py-openmc+mpi ^openmc+optimize ^openmpi
+ spack install py-openmc +mpi ^openmpi ^openmc build_type=Release
.. note::
@@ -163,7 +164,7 @@ This can be observed using Spack's ``spec`` tool:
.. code-block::
- spack spec py-openmc+mpi ^openmc+optimize
+ spack spec py-openmc +mpi ^openmc build_type=Release
Once installed, environment/lmod modules can be generated or Spack's ``load``
feature can be used to access the installed packages.
@@ -277,7 +278,7 @@ Prerequisites
Lists) files instead of .h5 files for sources (external source
distribution, k-eigenvalue source distribution, and surface sources). To
turn this option on in the CMake configuration step, add the following
- option:
+ option::
cmake -DOPENMC_USE_MCPL=on ..
@@ -288,7 +289,7 @@ Prerequisites
on-the-fly approach. To use it `install
`_ and `initialize
`_
- NCrystal and turn on the option in the CMake configuration step:
+ NCrystal and turn on the option in the CMake configuration step::
cmake -DOPENMC_USE_NCRYSTAL=on ..
@@ -299,7 +300,7 @@ Prerequisites
be used, but the implementation is currently restricted to collision
estimators. In addition to turning this option on, the path to the libMesh
installation should be specified as part of the ``CMAKE_PREFIX_PATH``
- variable.::
+ variable::
cmake -DOPENMC_USE_LIBMESH=on -DOPENMC_USE_MPI=on -DCMAKE_PREFIX_PATH=/path/to/libmesh/installation ..
@@ -371,6 +372,10 @@ CMakeLists.txt Options
The following options are available in the CMakeLists.txt file:
+OPENMC_ENABLE_COVERAGE
+ Compile and link code instrumented for coverage analysis. This is typically
+ used in conjunction with gcov_. (Default: off)
+
OPENMC_ENABLE_PROFILE
Enables profiling using the GNU profiler, gprof. (Default: off)
@@ -385,22 +390,23 @@ OPENMC_USE_DAGMC
should also be defined as `DAGMC_ROOT` in the CMake configuration command.
(Default: off)
+OPENMC_USE_MCPL
+ Turns on support for reading MCPL_ source files and writing MCPL source points
+ and surface sources. (Default: off)
+
OPENMC_USE_NCRYSTAL
- Turns on support for NCrystal materials. NCrystal must be
- `installed `_ and
- `initialized `_.
+ Turns on support for NCrystal materials. NCrystal must be `installed
+ `_ and `initialized
+ `_.
(Default: off)
OPENMC_USE_LIBMESH
Enables the use of unstructured mesh tallies with libMesh_. (Default: off)
-OPENMC_ENABLE_COVERAGE
- Compile and link code instrumented for coverage analysis. This is typically
- used in conjunction with gcov_. (Default: off)
-
OPENMC_USE_MPI
- Turns on compiling with MPI (default: off). For further information on MPI options,
- please see the `FindMPI.cmake documentation `_.
+ Turns on compiling with MPI (Default: off). For further information on MPI
+ options, please see the `FindMPI.cmake documentation
+ `_.
To set any of these options (e.g., turning on profiling), the following form
should be used:
@@ -521,13 +527,7 @@ distribution/repository, run:
pip will first check that all :ref:`required third-party packages
` have been installed, and if they are not present,
they will be installed by downloading the appropriate packages from the Python
-Package Index (`PyPI `_). However, do note that since pip
-runs the ``setup.py`` script which requires NumPy, you will have to first
-install NumPy:
-
-.. code-block:: sh
-
- pip install numpy
+Package Index (`PyPI `_).
Installing in "Development" Mode
--------------------------------
diff --git a/include/openmc/version.h.in b/include/openmc/version.h.in
index e1c2b0541..a518e0d63 100644
--- a/include/openmc/version.h.in
+++ b/include/openmc/version.h.in
@@ -10,7 +10,7 @@ namespace openmc {
constexpr int VERSION_MAJOR {@OPENMC_VERSION_MAJOR@};
constexpr int VERSION_MINOR {@OPENMC_VERSION_MINOR@};
constexpr int VERSION_RELEASE {@OPENMC_VERSION_RELEASE@};
-constexpr bool VERSION_DEV {true};
+constexpr bool VERSION_DEV {false};
constexpr std::array VERSION {VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE};
// clang-format on
diff --git a/openmc/__init__.py b/openmc/__init__.py
index cbf4d9ae2..f94cd038f 100644
--- a/openmc/__init__.py
+++ b/openmc/__init__.py
@@ -38,4 +38,4 @@ from .config import *
from openmc.model import rectangular_prism, hexagonal_prism, Model
-__version__ = '0.13.3-dev'
+__version__ = '0.13.3'
diff --git a/openmc/deplete/results.py b/openmc/deplete/results.py
index 3602d6918..c9dc19816 100644
--- a/openmc/deplete/results.py
+++ b/openmc/deplete/results.py
@@ -398,6 +398,8 @@ class Results(list):
path : PathLike
Path to materials XML file to read. Defaults to 'materials.xml'.
+ .. versionadded:: 0.13.3
+
Returns
-------
mat_file : Materials
diff --git a/openmc/filter.py b/openmc/filter.py
index 3240c9e25..cc7bdd931 100644
--- a/openmc/filter.py
+++ b/openmc/filter.py
@@ -1349,6 +1349,8 @@ class EnergyFilter(RealFilter):
(e.g., a source spectrum) based on tally results that were obtained from
using an :class:`~openmc.EnergyFilter`.
+ .. versionadded:: 0.13.3
+
Parameters
----------
values : iterable of float
diff --git a/openmc/geometry.py b/openmc/geometry.py
index d01826a4d..ad86cc56b 100644
--- a/openmc/geometry.py
+++ b/openmc/geometry.py
@@ -537,6 +537,8 @@ class Geometry:
def get_surfaces_by_name(self, name, case_sensitive=False, matching=False):
"""Return a list of surfaces with matching names.
+ .. versionadded:: 0.13.3
+
Parameters
----------
name : str
diff --git a/openmc/model/model.py b/openmc/model/model.py
index 78f02242f..4202cf60b 100644
--- a/openmc/model/model.py
+++ b/openmc/model/model.py
@@ -644,6 +644,8 @@ class Model:
Exports a single model.xml file rather than separate files.
Defaults to True.
+ .. versionadded:: 0.13.3
+
Returns
-------
Path
diff --git a/openmc/model/surface_composite.py b/openmc/model/surface_composite.py
index 354a62883..25826723c 100644
--- a/openmc/model/surface_composite.py
+++ b/openmc/model/surface_composite.py
@@ -632,6 +632,8 @@ class ZConeOneSided(CompositeSurface):
class Polygon(CompositeSurface):
"""Create a polygon composite surface from a path of closed points.
+ .. versionadded:: 0.13.3
+
Parameters
----------
points : np.ndarray
@@ -927,7 +929,7 @@ class Polygon(CompositeSurface):
if group is None:
sidx = next(iter(neighbor_map))
return self._group_simplices(neighbor_map, group=[sidx])
- # Otherwise use the last simplex in the group
+ # Otherwise use the last simplex in the group
else:
sidx = group[-1]
# Remove current simplex from dictionary since it is in a group
diff --git a/openmc/tallies.py b/openmc/tallies.py
index 688369de0..1a27e1bd4 100644
--- a/openmc/tallies.py
+++ b/openmc/tallies.py
@@ -1436,6 +1436,8 @@ class Tally(IDManagerMixin):
dimensions. This will result in more than one dimension per filter
for the returned data array.
+ .. versionadded:: 0.13.3
+
Returns
-------
numpy.ndarray
diff --git a/src/output.cpp b/src/output.cpp
index ae0907d02..04e15b82d 100644
--- a/src/output.cpp
+++ b/src/output.cpp
@@ -360,6 +360,8 @@ void print_build_info()
std::string png(n);
std::string profiling(n);
std::string coverage(n);
+ std::string mcpl(n);
+ std::string ncrystal(n);
#ifdef PHDF5
phdf5 = y;
@@ -373,6 +375,12 @@ void print_build_info()
#ifdef LIBMESH
libmesh = y;
#endif
+#ifdef OPENMC_MCPL
+ mcpl = y;
+#endif
+#ifdef NCRYSTAL
+ ncrystal = y;
+#endif
#ifdef USE_LIBPNG
png = y;
#endif
@@ -396,6 +404,8 @@ void print_build_info()
fmt::print("PNG support: {}\n", png);
fmt::print("DAGMC support: {}\n", dagmc);
fmt::print("libMesh support: {}\n", libmesh);
+ fmt::print("MCPL support: {}\n", mcpl);
+ fmt::print("NCrystal support: {}\n", ncrystal);
fmt::print("Coverage testing: {}\n", coverage);
fmt::print("Profiling flags: {}\n", profiling);
}