mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 05:35:49 -04:00
Co-authored-by: Patrick Shriwise <pshriwise@gmail.com> Co-authored-by: Paul Romano <paul.k.romano@gmail.com>
284 lines
17 KiB
ReStructuredText
284 lines
17 KiB
ReStructuredText
====================
|
|
What's New in 0.14.0
|
|
====================
|
|
|
|
.. currentmodule:: openmc
|
|
|
|
-------
|
|
Summary
|
|
-------
|
|
|
|
This release of OpenMC includes many bug fixes, performance improvements, and
|
|
several notable new features. Some of the highlights include projection plots,
|
|
pulse height tallies for photons, weight window generation, and an ability to
|
|
specify continuous removal or feed of nuclides/elements during depletion.
|
|
Additionally, one of the longstanding annoyances of depletion calculations,
|
|
namely the need to include initial "dilute" nuclides, has been eliminated. There
|
|
are also a wide array of general improvements in the Python API.
|
|
|
|
------------------------------------
|
|
Compatibility Notes and Deprecations
|
|
------------------------------------
|
|
|
|
- The :class:`openmc.deplete.MicroXS` has been completely redesigned and
|
|
improved. See further comments below under "New Features". (`#2572
|
|
<https://github.com/openmc-dev/openmc/pull/2572>`_, `#2579
|
|
<https://github.com/openmc-dev/openmc/pull/2579>`_, `#2595
|
|
<https://github.com/openmc-dev/openmc/pull/2595>`_, `#2700
|
|
<https://github.com/openmc-dev/openmc/pull/2700>`_)
|
|
- The ``rectangular_prism`` function has been replaced by the
|
|
:class:`openmc.model.RectangularPrism` class and the ``hexagonal_prism``
|
|
function has been replaced by the :class:`openmc.model.HexagonalPrism` class.
|
|
Note that whereas the ``rectangular_prism`` and ``hexagonal_prism`` functions
|
|
returned a region representing the interior of the prism, the new
|
|
:class:`~openmc.model.RectangularPrism` and
|
|
:class:`~openmc.model.HexagonalPrism` classes return composite surfaces, so
|
|
you need to use the unary ``-`` or ``+`` operators to obtain a region that can
|
|
be assigned to a cell. (`#2739
|
|
<https://github.com/openmc-dev/openmc/pull/2739>`_)
|
|
- The ``Source`` class has been refactored and split up into three separate
|
|
classes: :class:`~openmc.IndependentSource`, :class:`~openmc.FileSource`, and
|
|
:class:`~openmc.CompiledSource`. (`#2524
|
|
<https://github.com/openmc-dev/openmc/pull/2524>`_)
|
|
- The ``vertices`` and ``centroids`` attributes on mesh classes now always
|
|
return Cartesian coordinates and the shape of the returned arrays has changed
|
|
to allow `ijk` indexing using a tuple (i.e., `xyz = vertices[i, j, k]`).
|
|
(`#2711 <https://github.com/openmc-dev/openmc/pull/2711>`_)
|
|
- The :attr:`openmc.Material.decay_photon_energy` attribute has been replaced by
|
|
the :meth:`openmc.Material.get_decay_photon_energy` method. (`#2715
|
|
<https://github.com/openmc-dev/openmc/pull/2715>`_)
|
|
|
|
------------
|
|
New Features
|
|
------------
|
|
|
|
- A new :class:`openmc.WireframeRayTracePlot` class enables the generation of orthographic or
|
|
perspective projection plots. (`#1926
|
|
<https://github.com/openmc-dev/openmc/pull/1926>`_)
|
|
- The :class:`openmc.model.RightCircularCylinder` class now supports optional
|
|
filleted edges. (`#2309 <https://github.com/openmc-dev/openmc/pull/2309>`_)
|
|
- Continuous removal or feed of nuclides/elements between materials can now be
|
|
modeled during depletion via the
|
|
:meth:`openmc.deplete.abc.Integrator.add_transfer_rate` method. (`#2358
|
|
<https://github.com/openmc-dev/openmc/pull/2358>`_, `#2564
|
|
<https://github.com/openmc-dev/openmc/pull/2564>`_, `#2626
|
|
<https://github.com/openmc-dev/openmc/pull/2626>`_)
|
|
- The MAGIC method for global weight window generation has been implemented as
|
|
part of the C++ API. (`#2359
|
|
<https://github.com/openmc-dev/openmc/pull/2359>`_)
|
|
- A new capability for pulse height tallies (currently limited to photons) has
|
|
been added and can be used via the "pulse-height" tally score. (`#2452
|
|
<https://github.com/openmc-dev/openmc/pull/2452>`_)
|
|
- A :class:`openmc.model.CruciformPrism` class has been added that provides a
|
|
generalized cruciform prism composite surface. (`#2457
|
|
<https://github.com/openmc-dev/openmc/pull/2457>`_)
|
|
- Type hints have been added in various places throughout the Python API.
|
|
(`#2462 <https://github.com/openmc-dev/openmc/pull/2462>`_, `#2467
|
|
<https://github.com/openmc-dev/openmc/pull/2467>`_, `#2468
|
|
<https://github.com/openmc-dev/openmc/pull/2468>`_, `#2470
|
|
<https://github.com/openmc-dev/openmc/pull/2470>`_, `#2471
|
|
<https://github.com/openmc-dev/openmc/pull/2471>`_, `#2601
|
|
<https://github.com/openmc-dev/openmc/pull/2601>`_)
|
|
- Voxel plots can now be generated through the :meth:`openmc.Plot.to_vtk`
|
|
method. (`#2464 <https://github.com/openmc-dev/openmc/pull/2464>`_)
|
|
- The :class:`openmc.mgxs.EnergyGroups` class now allows you to alternatively
|
|
pass a string of the group structure name (e.g., "CCFE-709") instead of the
|
|
energy group boundaries. (`#2466
|
|
<https://github.com/openmc-dev/openmc/pull/2466>`_)
|
|
- Several enhancements have been made to the :meth:`openmc.Universe.plot` method
|
|
(addition of axis labels with units, ability to show legend and/or outlines, automatic
|
|
determination of origin/width, ability to pass total number of pixels).
|
|
(`#2472 <https://github.com/openmc-dev/openmc/pull/2472>`_, `#2482
|
|
<https://github.com/openmc-dev/openmc/pull/2482>`_, `#2483
|
|
<https://github.com/openmc-dev/openmc/pull/2483>`_, `#2492
|
|
<https://github.com/openmc-dev/openmc/pull/2492>`_, `#2513
|
|
<https://github.com/openmc-dev/openmc/pull/2513>`_, `#2575
|
|
<https://github.com/openmc-dev/openmc/pull/2575>`_)
|
|
- Functionality in the Python dealing with bounding boxes now relies on a new
|
|
:class:`openmc.BoundingBox` class. (`#2475
|
|
<https://github.com/openmc-dev/openmc/pull/2475>`_)
|
|
- Users now have more flexibility in specifying nuclides and reactions in the
|
|
:func:`openmc.plot_xs` function. (`#2478
|
|
<https://github.com/openmc-dev/openmc/pull/2478>`_)
|
|
- The import time of the :mod:`openmc` Python module has been improved by
|
|
deferring the import of matplotlib. (`#2488
|
|
<https://github.com/openmc-dev/openmc/pull/2488>`_)
|
|
- Mesh clases in the Python API now support a ``bounding_box`` property. (`#2507
|
|
<https://github.com/openmc-dev/openmc/pull/2507>`_, `#2620
|
|
<https://github.com/openmc-dev/openmc/pull/2620>`_, `#2621
|
|
<https://github.com/openmc-dev/openmc/pull/2621>`_)
|
|
- The ``Source`` class has been refactored and split up into three separate
|
|
classes: :class:`~openmc.IndependentSource`, :class:`~openmc.FileSource`, and
|
|
:class:`~openmc.CompiledSource`. (`#2524
|
|
<https://github.com/openmc-dev/openmc/pull/2524>`_)
|
|
- Support was added for curvilinear elements when exporting cylindrical and
|
|
spherical meshes to VTK. (`#2533
|
|
<https://github.com/openmc-dev/openmc/pull/2533>`_)
|
|
- The :class:`openmc.Tally` class now has a
|
|
:attr:`~openmc.Tally.multiply_density` attribute that indicates whether
|
|
reaction rate tallies should include the number density of the nuclide of
|
|
interest. (`#2539 <https://github.com/openmc-dev/openmc/pull/2539>`_)
|
|
- The :func:`~openmc.wwinp_to_wws` function now supports ``wwinp`` files with
|
|
cylindrical or spherical meshes. (`#2556
|
|
<https://github.com/openmc-dev/openmc/pull/2556>`_)
|
|
- Depletion no longer relies on adding initial "dilute" nuclides to each
|
|
depletable material in order to compute reaction rates. (`#2559
|
|
<https://github.com/openmc-dev/openmc/pull/2559>`_, `#2568
|
|
<https://github.com/openmc-dev/openmc/pull/2568>`_)
|
|
- The :class:`openmc.deplete.Results` class now has
|
|
:meth:`~openmc.deplete.Results.get_mass` (`#2565
|
|
<https://github.com/openmc-dev/openmc/pull/2565>`_),
|
|
:meth:`~openmc.deplete.Results.get_activity` (`#2617
|
|
<https://github.com/openmc-dev/openmc/pull/2617>`_), and
|
|
:meth:`~openmc.deplete.Results.get_decay_heat` (`#2625
|
|
<https://github.com/openmc-dev/openmc/pull/2625>`_) methods.
|
|
- The :meth:`openmc.deplete.StepResult.save` method now supports a ``path``
|
|
argument. (`#2567 <https://github.com/openmc-dev/openmc/pull/2567>`_)
|
|
- The :class:`openmc.deplete.MicroXS` has been completely redesigned and
|
|
improved. First, it no longer relies on the :mod:`openmc.mgxs` module, no
|
|
longer subclasses :class:`pandas.DataFrame`, and doesn't require adding
|
|
initial "dilute" nuclides into material compositions. It now enables users to
|
|
specify an energy group structure to collect multigroup cross sections,
|
|
specify nuclides/reactions, and works with mesh domains in addition to the
|
|
existing domains. A new :func:`openmc.deplete.get_microxs_and_flux` function
|
|
was added that improves the workflow for calculating microscopic cross
|
|
sections along with fluxes. Altogether, these changes make it straightforward
|
|
to switch between coupled and independent operators for depletion/activation
|
|
calculations. (`#2572 <https://github.com/openmc-dev/openmc/pull/2572>`_,
|
|
`#2579 <https://github.com/openmc-dev/openmc/pull/2579>`_, `#2595
|
|
<https://github.com/openmc-dev/openmc/pull/2595>`_, `#2700
|
|
<https://github.com/openmc-dev/openmc/pull/2700>`_)
|
|
- The :class:`openmc.Geometry` class now has ``merge_surfaces`` and
|
|
``surface_precision`` arguments. (`#2602
|
|
<https://github.com/openmc-dev/openmc/pull/2602>`_)
|
|
- Several predefined energy group structures have been added ("MPACT-51",
|
|
"MPACT-60", "MPACT-69", "SCALE-252"). (`#2614
|
|
<https://github.com/openmc-dev/openmc/pull/2614>`_)
|
|
- When running a depletion calculation, you are now allowed to include nuclides
|
|
in the initial material compositions that do not have neutron cross sections
|
|
(decay-only nuclides). (`#2616
|
|
<https://github.com/openmc-dev/openmc/pull/2616>`_)
|
|
- The :class:`~openmc.CylindricalMesh` and :class:`~openmc.SphericalMesh`
|
|
classes can now be fully formed using the constructor. (`#2619
|
|
<https://github.com/openmc-dev/openmc/pull/2619>`_)
|
|
- A time cutoff can now be specified in the :attr:`openmc.Settings.cutoff`
|
|
attribute. (`#2631 <https://github.com/openmc-dev/openmc/pull/2631>`_)
|
|
- The :meth:`openmc.Material.add_element` method now supports a
|
|
``cross_sections`` argument that allows a cross section data source to be
|
|
specified. (`#2633 <https://github.com/openmc-dev/openmc/pull/2633>`_)
|
|
- The :class:`~openmc.Cell` class now has a :meth:`~openmc.Cell.plot` method.
|
|
(`#2648 <https://github.com/openmc-dev/openmc/pull/2648>`_)
|
|
- The :class:`~openmc.Geometry` class now has a :meth:`~openmc.Geometry.plot`
|
|
method. (`#2661 <https://github.com/openmc-dev/openmc/pull/2661>`_)
|
|
- When weight window checks are performed can now be explicitly specified with
|
|
the :attr:`openmc.Settings.weight_window_checkpoints` attribute. (`#2670
|
|
<https://github.com/openmc-dev/openmc/pull/2670>`_)
|
|
- The :class:`~openmc.Settings` class now has a
|
|
:attr:`~openmc.Settings.max_write_lost_particles` attribute that can limit the
|
|
number of lost particle files written. (`#2688
|
|
<https://github.com/openmc-dev/openmc/pull/2688>`_)
|
|
- The :class:`~openmc.deplete.CoupledOperator` class now has a
|
|
``diff_volume_method`` argument that specifies how the volume of new materials
|
|
should be determined. (`#2691
|
|
<https://github.com/openmc-dev/openmc/pull/2691>`_)
|
|
- The :meth:`openmc.DAGMCUniverse.bounding_region` method now has a
|
|
``padding_distance`` argument. (`#2701
|
|
<https://github.com/openmc-dev/openmc/pull/2701>`_)
|
|
- A new :meth:`openmc.Material.get_decay_photon_energy` method replaces the
|
|
:attr:`decay_photon_energy` attribute and includes an ability to eliminate
|
|
low-importance points. This is facilitated by a new
|
|
:meth:`openmc.stats.Discrete.clip` method. (`#2715
|
|
<https://github.com/openmc-dev/openmc/pull/2715>`_)
|
|
- The :meth:`openmc.model.Model.differentiate_depletable_mats` method allows
|
|
depletable materials to be differentiated independent of the depletion
|
|
calculation itself. (`#2718
|
|
<https://github.com/openmc-dev/openmc/pull/2718>`_)
|
|
- Albedos can now be specified on surface boundary conditions. (`#2724
|
|
<https://github.com/openmc-dev/openmc/pull/2724>`_)
|
|
|
|
---------
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Enable use of NCrystal materials in plot_xs (`#2435 <https://github.com/openmc-dev/openmc/pull/2435>`_)
|
|
- Avoid segfault from extern "C" std::string (`#2455 <https://github.com/openmc-dev/openmc/pull/2455>`_)
|
|
- Fix several issues with the Model class (`#2465 <https://github.com/openmc-dev/openmc/pull/2465>`_)
|
|
- Provide alternative batch estimation message (`#2479 <https://github.com/openmc-dev/openmc/pull/2479>`_)
|
|
- Correct index check for remove_tally (`#2494 <https://github.com/openmc-dev/openmc/pull/2494>`_)
|
|
- Support for NCrystal material in from_xml_element (`#2496 <https://github.com/openmc-dev/openmc/pull/2496>`_)
|
|
- Fix compilation with gcc 5 (`#2498 <https://github.com/openmc-dev/openmc/pull/2498>`_)
|
|
- Fixed in the Tally::add_filter method (`#2501 <https://github.com/openmc-dev/openmc/pull/2501>`_)
|
|
- Fix meaning of "masking" for plots (`#2510 <https://github.com/openmc-dev/openmc/pull/2510>`_)
|
|
- Fix description of statepoint.batches in Settings class (`#2514 <https://github.com/openmc-dev/openmc/pull/2514>`_)
|
|
- Reorder list initialization of Plot constructor (`#2519 <https://github.com/openmc-dev/openmc/pull/2519>`_)
|
|
- Added mkdir to cwd argument in Model.run (`#2523 <https://github.com/openmc-dev/openmc/pull/2523>`_)
|
|
- Fix export of spherical coordinates in SphericalMesh (`#2538 <https://github.com/openmc-dev/openmc/pull/2538>`_)
|
|
- Add virtual destructor on PlottableInterface (`#2541 <https://github.com/openmc-dev/openmc/pull/2541>`_)
|
|
- Ensure parent directory is created during depletion (`#2543 <https://github.com/openmc-dev/openmc/pull/2543>`_)
|
|
- Fix potential out-of-bounds access in TimeFilter (`#2532 <https://github.com/openmc-dev/openmc/pull/2532>`_)
|
|
- Remove use of sscanf for reading surface coefficients (`#2574 <https://github.com/openmc-dev/openmc/pull/2574>`_)
|
|
- Fix torus intersection bug (`#2589 <https://github.com/openmc-dev/openmc/pull/2589>`_)
|
|
- Multigroup per-thread cache fixes (`#2591 <https://github.com/openmc-dev/openmc/pull/2591>`_)
|
|
- Bank surface source particles in all active cycles (`#2592 <https://github.com/openmc-dev/openmc/pull/2592>`_)
|
|
- Fix for muir standard deviation (`#2598 <https://github.com/openmc-dev/openmc/pull/2598>`_)
|
|
- Check for zero fission cross section (`#2600 <https://github.com/openmc-dev/openmc/pull/2600>`_)
|
|
- XML read fixes in Plot classes (`#2623 <https://github.com/openmc-dev/openmc/pull/2623>`_)
|
|
- Added infinity check in VolumeCalculation (`#2634 <https://github.com/openmc-dev/openmc/pull/2634>`_)
|
|
- Fix sampling issue in Mixture distributions (`#2658 <https://github.com/openmc-dev/openmc/pull/2658>`_)
|
|
- Prevent segfault in distance to boundary calculation (`#2659 <https://github.com/openmc-dev/openmc/pull/2659>`_)
|
|
- Several CylindricalMesh fixes (`#2676
|
|
<https://github.com/openmc-dev/openmc/pull/2676>`_, `#2680
|
|
<https://github.com/openmc-dev/openmc/pull/2680>`_, `#2684
|
|
<https://github.com/openmc-dev/openmc/pull/2684>`_, `#2710
|
|
<https://github.com/openmc-dev/openmc/pull/2710>`_)
|
|
- Add type checks on Intersection, Union, Complement (`#2685 <https://github.com/openmc-dev/openmc/pull/2685>`_)
|
|
- Fixed typo in CF4Integrator docstring (`#2704 <https://github.com/openmc-dev/openmc/pull/2704>`_)
|
|
- Ensure property setters are used in CylindricalMesh and SphericalMesh (`#2709 <https://github.com/openmc-dev/openmc/pull/2709>`_)
|
|
- Fix sample_external_source bug (`#2713 <https://github.com/openmc-dev/openmc/pull/2713>`_)
|
|
- Fix localization issue affecting openmc-plotter (`#2723 <https://github.com/openmc-dev/openmc/pull/2723>`_)
|
|
- Correct openmc.lib wrapper for evaluate_legendre (`#2729 <https://github.com/openmc-dev/openmc/pull/2729>`_)
|
|
- Bug fix in Region.from_expression during tokenization (`#2733 <https://github.com/openmc-dev/openmc/pull/2733>`_)
|
|
- Fix bug in temperature interpolation (`#2734 <https://github.com/openmc-dev/openmc/pull/2734>`_)
|
|
- Check for invalid domain IDs in volume calculations (`#2742 <https://github.com/openmc-dev/openmc/pull/2742>`_)
|
|
- Skip boundary condition check for volume calculations (`#2743 <https://github.com/openmc-dev/openmc/pull/2743>`_)
|
|
- Fix loop over coordinates for source domain rejection (`#2751 <https://github.com/openmc-dev/openmc/pull/2751>`_)
|
|
|
|
------------
|
|
Contributors
|
|
------------
|
|
|
|
- `April Novak <https://github.com/aprilnovak>`_
|
|
- `Baptiste Mouginot <https://github.com/bam241>`_
|
|
- `Ben Collins <https://github.com/bscollin>`_
|
|
- `Chritopher Billingham <https://github.com/cadarache2014>`_
|
|
- `Christopher Fichtlscherer <https://github.com/cfichtlscherer>`_
|
|
- `Christina Cai <https://github.com/christinacai123>`_
|
|
- `Lorenzo Chierici <https://github.com/church89>`_
|
|
- `Huw Rhys Jones <https://github.com/dubway420>`_
|
|
- `Emilio Castro <https://github.com/ecasglez>`_
|
|
- `Erik Knudsen <https://github.com/ebknudsen>`_
|
|
- `Ethan Peterson <https://github.com/eepeterson>`_
|
|
- `Egor Afanasenko <https://github.com/egor1abs>`_
|
|
- `Paul Wilson <https://github.com/gonuke>`_
|
|
- `Gavin Ridley <https://github.com/gridley>`_
|
|
- `Hunter Belanger <https://github.com/HunterBelanger>`_
|
|
- `Jack Fletcher <https://github.com/j-fletcher>`_
|
|
- `John Vincent Cauilan <https://github.com/johvincau>`_
|
|
- `Josh May <https://github.com/joshmay1>`_
|
|
- `John Tramm <https://github.com/jtramm>`_
|
|
- `Kevin McLaughlin <https://github.com/kevinm387>`_
|
|
- `Yue Jin <https://github.com/kingyue737>`_
|
|
- `Lewis Gross <https://github.com/lewisgross1296>`_
|
|
- `Luke Labrie-Cleary <https://github.com/LukeLabie>`_
|
|
- `Patrick Myers <https://github.com/myerspat>`_
|
|
- `Nicola Rizzi <https://github.com/nicriz>`_
|
|
- `Yuvraj Jain <https://github.com/nutcasev15>`_
|
|
- `Paul Romano <https://github.com/paulromano>`_
|
|
- `Patrick Shriwise <https://github.com/pshriwise>`_
|
|
- `Rosie Barker <https://github.com/rlbarker>`_
|
|
- `Jonathan Shimwell <https://github.com/Shimwell>`_
|
|
- `John Tchakerian <https://github.com/stchaker>`_
|
|
- `Travis Labossiere-Hickman <https://github.com/tjlaboss>`_
|
|
- `Xinyan Wang <https://github.com/XinyanBradley>`_
|
|
- `Olek Yardas <https://github.com/yardasol>`_
|
|
- `Zoe Prieto <https://github.com/zoeprieto>`_
|