openmc-dev/openmc
OpenMC Monte Carlo Code
23 Releases
Latest: 7mo ago
OpenMC 0.15.3v0.15.3Latest
๐ Changes
- A new collision tracking feature enables detailed tracking of particle interactions (#3417)
- Added `openmc.Model.keff_search` method for automated criticality searches (#3569)
- Introduced automated workflow for mesh- or cell-based R2S calculations (#3508)
- Ability to source electron/positrons directly for charged particle simulations (#3404)
- Multi-group capability for kinetics parameter calculations with Iterated Fission Probability (#3425)
- Introduced a new `openmc.MeshMaterialFilter` class (#3406)
- Added support for distributed cell densities (#3546)
- Implemented a `openmc.WeightWindowsList` class that enables export to HDF5 (#3456)
- + 150 more
OpenMC 0.15.2v0.15.2
๐ Changes
- Remove errant `openmc.Settings.random_ray` check and removed of not useful warning in MG mode (#3344)
- Throw an error if a spherical harmonics order larger than 10 is provided. (#3354)
- Correcting the size of the displacement list in the SourceSite MPI interface object (#3356)
OpenMC 0.15.1v0.15.1
๐ Changes
- Numerous improvements have been made in the random ray solver:
- Calculation of Shannon entropy now works with random ray (#3030)
- Support for linear sources (#3072)
- Ability to slove for adjoint flux (#3191)
- Support randomized Quasi-Monte Carlo sampling (#3268)
- FW-CADIS weight window generation (#3273)
- Source region mesh subdivision(#3333)
- Several new composite surfaces have been added:
- + 149 more
OpenMC 0.15.0v0.15.0
๐ Changes
- When running OpenMC in volume calculation mode, only atomic weight ratio data is loaded from data files which reduces initialization time. (#2741)
- Introduced a `GeometryState` class in C++ to better separate particle and geometry data. (#2744))
- A new `openmc.MaterialFromFilter` class allows filtering tallies by which material a particle came from. (#2750)
- Implemented a `openmc.deplete.MicroXS.from_multigroup_flux` method that generates microscopic cross sections for depletion from a predetermined multigroup flux. (#2755)
- A new `openmc.MeshSource` class enables the specification of a source distribution over a mesh, where each mesh element has a different energy/angle/time distribution. (#2759)
- Improve performance of depletion solver by utilizing CSR sparse matrix representation. (#2764,
- Added a `openmc.CylindricalMesh.get_indices_at_coords` method that provides the mesh element index corresponding to a given point in space. (#2782)
- Added a `path` argument to the `openmc.deplete.Integrator.integrate` method. (#2784)
- + 143 more
OpenMC 0.14.0v0.14.0
๐ Changes
- The `openmc.deplete.MicroXS` class has been completely redesigned and improved. See further comments below under "New Features". (#2572, #2579, #2595, #2700)
- The `rectangular_prism` function has been replaced by the `openmc.model.RectangularPrism` class and the `hexagonal_prism` function has been replaced by the `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 `openmc.model.RectangularPrism` and
- The `Source` class has been refactored and split up into three separate classes: `openmc.IndependentSource`, `openmc.FileSource`, and `openmc.CompiledSource`. (#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)
- The `openmc.Material.decay_photon_energy` attribute has been replaced by the `openmc.Material.get_decay_photon_energy` method. (#2715)
- A new `openmc.ProjectionPlot` class enables the generation of orthographic or perspective projection plots. (#1926)
- The `openmc.model.RightCircularCylinder` class now supports optional filleted edges. (#2309)
- Continuous removal or feed of nuclides/elements between materials can now be modeled during depletion via the `openmc.deplete.abc.Integrator.add_transfer_rate` method. (#2358, #2564, #2626)
- + 107 more
OpenMC 0.13.3v0.13.3
๐ Changes
- Atomic mass data used in `openmc.data.atomic_mass` has been updated to AME 2020, which results in slightly different masses.
- Support was added for [MCPL](https://mctools.github.io/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](https://github.com/openmc-dev/openmc/pull/2116))
- Support was added for [NCrystal](https://github.com/mctools/ncrystal) thermal scattering materials. ([#2222](https://github.com/openmc-dev/openmc/pull/2222))
- The `openmc.CylindricalMesh` and `openmc.SphericalMesh` classes now have an `origin` attribute that changes the center of the mesh. ([#2256](https://github.com/openmc-dev/openmc/pull/2256))
- A new `openmc.model.Polygon` class allows defining generalized 2D polygons. ([#2266](https://github.com/openmc-dev/openmc/pull/2266))
- A new `openmc.data.decay_energy` function and `openmc.Material.get_decay_heat` method enable determination of decay heat from a single nuclide or material. ([#2287](https://github.com/openmc-dev/openmc/pull/2287))
- Full models can now be written as a single XML file rather than separate geometry, materials, settings, and tallies XML files. ([#2291](https://github.com/openmc-dev/openmc/pull/2291))
- Discrete distributions are now sampled using alias sampling, which is O(1) in time. ([#2329](https://github.com/openmc-dev/openmc/pull/2329))
- + 63 more
OpenMC 0.13.2v0.13.2
๐ Changes
- If you are building against libMesh for unstructured mesh tally support, version 1.6 or higher is now required.
- The `openmc.stats.Muir` class has been replaced by a `openmc.stats.muir` function that returns an instance of `openmc.stats.Normal`.
- The `openmc.Material.get_nuclide_atom_densities` method now takes an optional `nuclide` argument.
- Functions/methods in the `openmc.deplete` module now accept times in Julian years (`'a'`).
- The `openmc.Universe.plot` method now allows a pre-existing axes object to be passed in.
- Performance optimization for geometries with many complex regions.
- Performance optimization for depletion by avoiding deepcopies and caching reaction rates.
- The `openmc.RegularMesh` class now has a `from_domain` classmethod.
- + 33 more
OpenMC 0.13.1v0.13.1
๐ Changes
- The `openmc.deplete.Operator` class has been renamed `openmc.deplete.CoupledOperator`.
- The `openmc.deplete.ResultsList` class has been renamed to `openmc.deplete.Results` and no longer requires you to call the `from_hdf5()` method in order to create it; instead, you can directly instantiate it.
- A few methods that represent k-effective have been renamed for the sake of consistency:
- `openmc.StatePoint.k_combined` is now `openmc.StatePoint.keff`
- `openmc.deplete.ResultsList.get_eigenvalue` is now `openmc.deplete.Results.get_keff`
- The `openmc.stats.SphericalIndependent` class, which used to accept a distribution for `theta` now accepts a distribution for `cos_theta` instead in order to more easily handle the common case of specifying a uniform spatial distribution over a sphere (also see the new `openmc.stats.spherical_uniform` function).
- If you are building OpenMC from source, note that several of our CMake options have been changed:
- Two new composite surfaces: `openmc.model.IsogonalOctagon` and `openmc.model.CylinderSector`.
- + 71 more
OpenMC 0.13.0v0.13.0
๐ Changes
- Variance reduction using mesh-based weight windows is now possible with the `WeightWindows` class.
- Users can now model axis-aligned tori using the `XTorus`, `YTorus`, and `ZTorus` classes.
- DAGMC CAD-based geometries can now be placed in a universe using `DAGMCUniverse`, allowing users to combine CSG and CAD-based geometry in a single model.
- The C/C++ API has two new functions `openmc_properties_export` and `openmc_properties_import` with corresponding Python API bindings, `openmc.lib.export_properties` and `openmc.lib.import_properties`. These functions allow physical properties (temperatures, densities, material compositions) to be written to an HDF5 file and re-used for subsequent simulations.
- A new `openmc.stats.PowerLaw` univariate distribution
- The capabilities of the `Model` class have been substantially expanded (e.g., the `Model.deplete`, `Model.plot_geometry`, and `Model.rotate_cells` methods).
- A new `TimeFilter` class that allows tallies to be filtered by the particle's time, which is now tracked.
- The `Source` class now allows you to specify a time distribution.
- + 37 more
OpenMC 0.12.2v0.12.2
๐ Changes
- A new `CollisionFilter` class that allows tallies to be filtered by the number of collisions a particle has undergone.
- A `translation` attribute has been added to `MeshFilter` that allows a mesh to be translated from its original position before location checks are performed.
- The `UnstructuredMesh` class now supports libMesh unstructured meshes to enable better ingration with MOOSE-based applications.
- [Reset particle coordinates during find cell operation](https://github.com/openmc-dev/openmc/pull/1809)
- [Cover quadric edge case](https://github.com/openmc-dev/openmc/pull/1812)
- [Prevent divide-by-zero in bins_crossed methods for meshes](https://github.com/openmc-dev/openmc/pull/1816)
- [Fix for translational periodic boundary conditions](https://github.com/openmc-dev/openmc/pull/1820)
- [Fix angle sampling in CorrelatedAngleEnergy](https://github.com/openmc-dev/openmc/pull/1821)
- + 15 more
OpenMC 0.12.1v0.12.1
๐ Changes
- Boundary conditions have been refactored and generalized. Rotational periodic boundary conditions can now be applied to any N-fold symmetric geometry.
- External source distributions have been refactored and extended. Users writing their own C++ custom sources need to write a class that derives from `openmc::Source`. These changes have enabled new functionality, such as:
- Mixing more than one custom source library together
- Mixing a normal source with a custom source
- Using a file-based source for fixed source simulations
- Using a file-based source for eigenvalue simulations even when the number of particles doesn't match
- New capability to read and write a source file based on particles that cross a surface (known as a "surface source").
- Various improvements related to depletion:
- + 61 more
OpenMC 0.12.0v0.12.0
๐ Changes
- All surfaces now have a `rotate` method that allows them to be rotated.
- Several "composite" surfaces, which are actually composed of multiple surfaces but can be treated as a normal surface through the -/+ unary operators, have been added. These include:
- `openmc.model.RightCircularCylinder`
- `openmc.model.RectangularParallelepiped`
- `openmc.model.XConeOneSided` (and equivalent versions for y- and z-axes)
- Various improvements related to depletion:
- The matrix exponential solver can now be configured through the `solver` argument on depletion integrator classes.
- The `openmc.deplete.Chain.reduce` method can automatically reduce the number of nuclides in a depletion chain.
- + 72 more
OpenMC 0.11.0v0.11.0
๐ Changes
- `openmc.LegendreFilter`
- `openmc.SpatialLegendreFilter`
- `openmc.SphericalHarmonicsFilter`
- `openmc.ZernikeFilter`
- `openmc.ZernikeRadialFilter`
- White boundary conditions can be applied to surfaces
- Support for rectilinear meshes through `openmc.RectilinearMesh`.
- The `Geometry`, `Materials`, and `Settings` classes now have a `from_xml` method that will build an instance from an existing XML file.
- + 54 more
OpenMC 0.10.0v0.10.0
๐ Changes
- To indicate that nuclides in a material should be treated such that elastic scattering is isotropic in the laboratory system, there is a new `Material.isotropic` property:
- The initializers for `openmc.Intersection` and `openmc.Union` now expect an iterable.
- Auto-generated unique IDs for classes now start from 1 rather than 10000.
- Rotationally-periodic boundary conditions
- C API (with Python bindings) for in-memory coupling
- Improved correlation for Uranium enrichment
- Support for partial S(a,b) tables
- Improved handling of autogenerated IDs
- + 25 more
OpenMC 0.9.0v0.9.0
๐ Changes
- Each type of tally filter is now specified with a separate class. For example:
- Several attributes of the [`Plot`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Plot.html#openmc.Plot) class have changed (`color` -> `color_by` and `col_spec` > `colors`). `Plot.colors` now accepts a dictionary mapping [`Cell`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Cell.html#openmc.Cell) or [`Material`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Material.html#openmc.Material) instances to RGB 3-tuples or string colors names, e.g.:
- `make_hexagon_region` is now [`get_hexagonal_prism`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.get_hexagonal_prism.html#openmc.get_hexagonal_prism)
- Several changes in [`Settings`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Settings.html#openmc.Settings) attributes:
- `weight` is now set as `Settings.cutoff['weight']`
- Shannon entropy is now specified by passing a [`Mesh`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Mesh.html#openmc.Mesh) to `Settings.entropy_mesh`
- Uniform fission site method is now specified by passing a [`Mesh`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Mesh.html#openmc.Mesh) to `Settings.ufs_mesh`
- All `sourcepoint_*` options are now specified in a `Settings.sourcepoint` dictionary
- + 52 more
OpenMC 0.8.0v0.8.0
๐ Changes
- `SettingsFile` is now [`Settings`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Settings.html#openmc.Settings), `MaterialsFile` is now [`Materials`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Materials.html#openmc.Materials), and `TalliesFile` is now [`Tallies`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Tallies.html#openmc.Tallies).
- The `GeometryFile` class no longer exists and is replaced by the [`Geometry`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Geometry.html#openmc.Geometry) class which now has an export_to_xml()` method.
- Source distributions are defined using the [`Source`](http://openmc.readthedocs.io/en/latest/pythonapi/generated/openmc.Source.html#openmc.Source) class and assigned to the `Settings.source` property.
- The `Executor` class no longer exists and is replaced by `openmc.run()`and `openmc.plot_geometry()` functions.
โจ New Features
- Multi-group mode
- Vast improvements to the Python API
- Experimental windowed multipole capability
- Periodic boundary conditions
- Expanded source sampling options
- Distributed materials
- Subcritical multiplication support
- Improved method for reproducible URR table sampling
- + 2 more
๐ Bug Fixes
- 70daa76e0e9d0bd8163e5c9d306788dbd7cf30c6 Make sure MT=3 cross section is not used
- 40b05fe94e16731703ca758a55953d62f353fc7a Ensure source bank is resampled for fixed source runs
- 9586ed3c0718ce5fbfdacc551966a4de9e64fb42 Fix two hexagonal lattice bugs
- a855e8f1b04f3983b699422c9d938d21f2f3315c Make sure graphite models don't error out on max events
- 7294a1363485c64b4ee7cb1a5a8e4f0bb67d8ec7 Fix incorrect check on cmfd.xml
- 12f2467d6e3f529dba3ad8f88f11fb04588246bd Ensure number of realizations is written to statepoint
- 0227f4823080a686e8130df065762d8d855d6f3d Fix bug when sampling multiple energy distributions
- 51deaa7cbf4a5bc06bb9ddc0dd2beef830115333 Prevent segfault when user specifies '18' on tally scores
- + 3 more
๐ฆ Contributors
- This release contains new contributions from the following people:
- @wbinventor
- @friedmud
- @smharper
- @cjosey
- @liangjg
- @nelsonag
- @paulromano
- + 2 more
OpenMC 0.7.1v0.7.1
โจ New Features
- Support for complex cell regions (union and complement operators)
- Generic quadric surface type
- Improved handling of secondary particles
- Binary output is now solely HDF5
- `openmc.mgxs` Python module enabling multi-group cross section generation
- Collision estimator for tallies
- Delayed fission neutron production tallies with ability to filter by delayed group
- Inverse velocity tally score
- + 2 more
๐ Bug Fixes
- 2993228a12db933da376c0d8b9c63b9f99d60359 Bug with material filter when void material present
- d748406f20e52d74df5ae5c567d3cf7ce19bfeb6 Fix triggers on tallies with multiple filters
- c29a811f3e7dc8fe62e0341ab3df4d86696649a0 Correctly handle maximum transport energy
- 3edc2389e588f4f2348c00105a4fb067dbb54364 Fixes in the nu-scatter score
- 629e3b21569d990e00f76ca93a79366ab511816a Assume unspecified surface coefficients are zero in Python API
- 5dbe8b75db638b28b1d1714a47cc16b879061b36 Fix energy filters for openmc-plot-mesh-tally
- ff66f41d89fcb5dcd4b9c523bdfcc741d6bd4025 Fixes in the openmc-plot-mesh-tally script
- 441fd4f00dfb3cd6f79abc0ad2887b04dd5dbfd8 Fix bug in kappa-fission score
- + 1 more
๐ฆ Contributors
- This release contains new contributions from the following people:
- @bhermanmit
- @cjosey
- @kellyrowland
- @nelsonag
- @paulromano
- @samuelshaner
- @smharper
- + 2 more
OpenMC 0.7.0v0.7.0
โจ New Features
- Complete Python API
- Python 3 compatability for all scripts
- All scripts consistently named openmc-\* and installed together
- New 'distribcell' tally filter for repeated cells
- Ability to specify outer lattice universe
- XML input validation utility (openmc-validate-xml)
- Support for hexagonal lattices
- Material union energy grid method
- + 6 more
๐ Bug Fixes
- b5f71255a3d4f8aef14809ad99ce6a9182a93409 Fix bug in spherical harmonics tallies
- e6675b7d1e7b8d9b2d749443b2fd21d02e34bd4a Ensure all constants are double precision
- 04e2c1960b76ca6151402f22eb28ff0f446efa31 Fix potential bug in sample_nuclide routine
- 6121d97975d7aaafb06f5c77906049ecb211c6c6 Fix bugs related to particle track files
- 2f0e89508a1ebe13d46c1f43e445533a6e6fb791 Fixes for nuclide specification in tallies
๐ฆ Contributors
- This release contains new contributions from the following people:
- @bhermanmit
- @cjosey
- @mellis13
- @nelsonag
- @nhorelik
- @PaleNeutron
- @paulromano
- + 4 more
OpenMC 0.6.2v0.6.2
โจ New Features
- Meshline plotting capability
- Support for plotting cells/materials on middle universe levels
- Ability to model cells with no surfaces
- Compatibility with PETSc 3.5
- Compatability with OpenMPI 1.7/1.8
- Improved overall performance via logarithmic-mapped energy grid search
- Improved multi-threaded performance with atomic operations
- Support for fixed source problems with fissionable materials
๐ Bug Fixes
- 26fb936f2a086ec0a6157a9eedb2d6adfbb15936 Fix problem with -t, --track command-line flag
- 2f07c0371eaa0a12fca28da9cf49120c19c61e49 Improved evaporation spectrum algorithm
- e6abb9d57341951754e912f8137257350bf3cca8 Fix segfault when tallying in a void material
- 291b45a6469389db3c38e78e0c6c0d3886c5c312 Handle metastable nuclides in NNDC data and multiplicities in MT=5 data
๐ฆ Contributors
- This release contains new contributions from the following people:
- @bhermanmit
- @bunder
- @jdangerx
- @mellis13
- @nelsonag
- @nhorelik
- @paulromano
- + 3 more
OpenMC 0.6.1v0.6.1
โจ New Features
- Coarse mesh finite difference (CMFD) acceleration no longer requires PETSc
- Statepoint file numbering is now zero-padded
- Python scripts now compatible with Python 2 or 3
- Ability to run particle restarts in fixed source calculations
- Capability to filter box source by fissionable materials
- Nuclide/element names are now case insensitive in input files
- Improved treatment of resonance scattering for heavy nuclides
๐ Bug Fixes
- 03e890313dc9129954c78f77efca0214b7680d9f Check for energy-dependent multiplicities in ACE files
- 4439de571fe30fc26211018f94535e17b610c9f8 Fix distance-to-surface calculation for general plane surface
- 5808ed4c2df9ca8dfbcb8dcb8fd2982d99d2bf8a Account for differences in URR band probabilities at different energies
- 2e60c0ea6162a3961b4009a49ba67f1ed0bc0371 Allow zero atom/weight percents in materials
- 3e0870ac96988e5408741f05a356f1648de62f9d Don't use PWD environment variable when setting path to input files
- dc47763f66d7bc9373e385935199efe03fef13cc Handle probability table resampling correctly
- 01178bf08a3667a83c0b073ef63f41907ac2dd28 Fix metastables nuclides in NNDC cross_sections.xml file
- 62ec431e3be5e77b1ba9343935110190d7bc6358 Don't read tallies.xml when OpenMC is run in plotting mode
- + 3 more
๐ฆ Contributors
- This release contains new contributions from the following people:
- @bhermanmit
- @nelsonag
- @paulromano
- @smharper
- @walshjon
- @wbinventor
OpenMC 0.6.0v0.6.0
โจ New Features
- Legendre and spherical harmonic expansion tally scores
- CMake is now default build system
- Regression test suite based on CTests and NNDC cross sections
- FoX is now a git submodule
- Support for older cross sections (e.g. MCNP 66c)
- Progress bar for plots
- Expanded support for natural elements via <natural_elements> in settings.xml
๐ Bug Fixes
- 41f7cabe848ac46b0ac8ba108300c195679f8d66 Fixed erroneous results from survival biasing
- 038736f695d3318164866b4f910b154867f2ccb9 Fix tallies over void materials
- 46f9e85ce3feca51f53203672b6c2e72998c8b57 Check for negative values in probability tables
- d1ca3519f2c56e400311ed9d6fde91f62512da0b Fixed sampling of angular distribution
- 0291c0f047861629eaefb02a98d4ac9ee4471f38 Fixed indexing error in plotting
- d7a7d0f45c26d41dd772de204490b47bec2e27c5 Fix bug with <element> specifying xs attribute
- 85b3cbd82a8c72c426cfba489026a66a4d442531 Fix out-of-bounds error with OpenMP threading
๐ฆ Contributors
- This release contains new contributions from the following people:
- @bhermanmit
- @nelsonag
- @nhorelik
- @paulromano
- @smharper
- @walshjon
v0.5.4
โจ New Features
- Source sites outside geometry are resampled
- XML-Fortran backed replaced by FoX XML
- Ability to write particle track files
- Handle lost particles more gracefully (via particle track files)
- Multiple random number generator streams
- Mesh tally plotting utility converted to use Tkinter rather than PyQt
- Script added to download ACE data from NNDC
- Mixed ASCII/binary cross_sections.xml now allowed
- + 3 more
๐ Bug Fixes
- 32c03c44ae666702f4252c82249771763f1d6551 Check for valid data in cross_sections.xml
- c71ef57ddc4bf0dc5632fb259ccee8e56caa8855 Fix bug in statepoint.py
- 8884fb9e3f1657b2b5e0c5b4e8e4a3af5adfbe68 Check for all ZAIDs for S(a,b) tables
- b38af09b8201e982d77c9ce51b057f78c182d157 Fix XML reading on multiple levels of input
- d28750c34fdec59b3ce955865299eafe980cba16 Fix bug in convert_xsdir.py
- cf567cae7d2f8c5325f4696201c5574058cd7393 ENDF/B-VI data checked for compatibility
- 6b94613c24b127ad31fedf60e9a647e459223636 Fix p_valid sampling inside of sample_energy
๐ฆ Contributors
- This release contains new contributions from the following people:
- @bhermanmit
- @nelsonag
- @nhorelik
- @paulromano
- @smharper
- @tpviitan
- @walshjon
v0.5.3
โจ New Features
- Output interface enhanced to allow multiple files handles to be opened
- Particle restart file linked to output interface
- Particle restarts and state point restarts are both identified with the -r command line flag.
- Particle instance no longer global, passed to all physics routines
- Physics routines refactored to rely less on global memory, more arguments passed in
- CMFD routines refactored and now can compute dominance ratio on the fly
- PETSc 3.4.2 or higher must be used and compiled with fortran datatype support
- Memory leaks fixed except for ones from xml-fortran package
- + 4 more
๐ Bug Fixes
- Normalize direction vector after reflecting particle.
- Set blank default for cross section listing alias.
- Fix infinite loop with words greater than 80 characters in write_message.
- Check for valid secondary mode on S(a,b) tables.
- Fix bug where last process could have zero particles.
