Releases: openmc-dev/openmc
OpenMC 0.10.0
This release of OpenMC includes several new features, performance improvements, and bug fixes compared to version 0.9.0. Notably, a C API has been added that enables in-memory coupling of neutronics to other physics fields, e.g., burnup calculations and thermal-hydraulics. The C API is also backed by Python bindings in a new openmc.capi
package. Users should be forewarned that the C API is still in an experimental state and the interface is likely to undergo changes in future versions.
The Python API continues to improve over time; several backwards incompatible changes were made in the API which users of previous versions should take note of:
-
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:mat = openmc.Material() mat.add_nuclide('H1', 1.0) mat.isotropic = ['H1']
To treat all nuclides in a material this way, the
Material.make_isotropic_in_lab
method can still be used. -
The initializers for
openmc.Intersection
andopenmc.Union
now expect an iterable. -
Auto-generated unique IDs for classes now start from 1 rather than 10000.
NOTE: This is the last release of OpenMC that will support Python 2.7. Future releases of OpenMC will require Python 3.4 or later.
New Features
- 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
- Many performance/memory improvements
Bug Fixes
- 9374695 Fix energy group sampling for multi-group simulations
- a149ef4 Ensure mutable objects are not hashable
- 2c9b210 Preserve backwards compatibility for generated HDF5 libraries
- 8047f6c Handle units of division for tally arithmetic correctly
- 0beb4cb Compatibility with newer versions of Pandas
- f124bec Fix generating 0K data with openmc.data.njoy module
- 0c69153 Bugfix for generating thermal scattering data
- 61ecb47 Fix bugs in Python multipole objects
Contributors
This release contains new contributions from the following people:
OpenMC 0.9.0
This release of OpenMC is the first release to use a new native HDF5 cross section format rather than ACE format cross sections. Other significant new features include a nuclear data interface in the Python API (openmc.data
) a stochastic volume calculation capability, a random sphere packing algorithm that can handle packing fractions up to 60%, and a new XML parser with significantly better performance than the parser used previously.
CAUTION: With the new cross section format, the default energy units are now electronvolts (eV) rather than megaelectronvolts (MeV)! If you are specifying an energy filter for a tally, make sure you use units of eV now.
The Python API continues to improve over time; several backwards incompatible changes were made in the API which users of previous versions should take note of:
-
Each type of tally filter is now specified with a separate class. For example:
energy_filter = openmc.EnergyFilter([0.0, 0.625, 4.0, 1.0e6, 20.0e6])
-
Several attributes of the
Plot
class have changed (color
->color_by
andcol_spec
>colors
).Plot.colors
now accepts a dictionary mappingCell
orMaterial
instances to RGB 3-tuples or string colors names, e.g.:plot.colors = { fuel: 'yellow', water: 'blue' }
-
make_hexagon_region
is nowget_hexagonal_prism
-
Several changes in
Settings
attributes:weight
is now set asSettings.cutoff['weight']
- Shannon entropy is now specified by passing a
Mesh
toSettings.entropy_mesh
- Uniform fission site method is now specified by passing a
Mesh
toSettings.ufs_mesh
- All
sourcepoint_*
options are now specified in aSettings.sourcepoint
dictionary - Resonance scattering method is now specified as a dictionary in
Settings.resonance_scattering
- Multipole is now turned on by setting
Settings.temperature['multipole'] = True
- The
output_path
attribute is nowSettings.output['path']
-
All the
openmc.mgxs.Nu*
classes are gone. Instead, anu
argument was added to the constructor of the corresponding classes.
New Features
- Stochastic volume calculations
- Multi-delayed group cross section generation
- Ability to calculate multi-group cross sections over meshes
- Temperature interpolation on cross section data
- Nuclear data interface in Python API,
openmc.data
- Allow cutoff energy via
Settings.cutoff
- Ability to define fuel by enrichment (see
Material.add_element
) - Random sphere packing for TRISO particle generation,
openmc.model.pack_trisos
- Critical eigenvalue search,
openmc.search_for_keff
- Model container,
openmc.model.Model
- In-line plotting in Jupyter,
openmc.plot_inline
- Energy function tally filters,
openmc.EnergyFunctionFilter
- Replaced FoX XML parser with pugixml
- Cell/material instance counting,
Geometry.determine_paths
- Differential tallies (see
openmc.TallyDerivative
) - Consistent multi-group scattering matrices
- Improved documentation and new Jupyter notebooks
- OpenMOC compatibility module,
openmc.openmoc_compatible
Bug Fixes
- c5df6ce Fix mesh filter max iterator check
- 1cfa392 Reject external source only if 95% of sites are rejected
- 3353592 Fix bug in plotting meshlines
- 17c678d Make sure system_clock uses high-resolution timer
- 23ec0b8 Fix use of S(a,b) with multipole data
- 7eefb73 Fix several bugs in tally module
- 7880d4f Allow plotting calculation with no boundary conditions
- ad2d9ff Fix filter weight missing when scoring all nuclides
- 59fdcac Fix use of source files for fixed source calculations
- 9eff5b8 Fix thermal scattering bugs
- 7848a97 Fix combined k-eff estimator producing NaN
- f139ce8 Fix printing bug for tallies with AggregateNuclide
- b8ddfac Bugfix for short tracks near tally mesh edges
- ec3cfb5 Fix inconsistency in filter weights
- 5e9b06a Fix XML representation for verbosity
- c39990a Fix bug tallying reaction rates with multipole on
- c6b67e6 Fix fissionable source sampling bug
- 4895402 Check for void materials in tracklength tallies
- f0214f4 Fixes/improvements to the ARES algorithm
Contributors
This release contains new contributions from the following people:
OpenMC 0.8.0
This release of OpenMC includes a few new major features including the capability to perform neutron transport with multi-group cross section data as well as experimental support for the windowed multipole method being developed at MIT. Source sampling options have also been expanded significantly, with the option to supply arbitrary tabular and discrete distributions for energy, angle, and spatial coordinates.
The Python API has been significantly restructured in this release compared to version 0.7.1. Any scripts written based on the version 0.7.1 API will likely need to be rewritten. Some of the most visible changes include the following:
SettingsFile
is nowSettings
,MaterialsFile
is nowMaterials
, andTalliesFile
is nowTallies
.- The
GeometryFile
class no longer exists and is replaced by theGeometry
class which now has an export_to_xml()` method. - Source distributions are defined using the
Source
class and assigned to theSettings.source
property. - The
Executor
class no longer exists and is replaced byopenmc.run()
andopenmc.plot_geometry()
functions.
The Python API documentation has also been significantly expanded.
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
- Refactor of continuous-energy reaction data
- Improved documentation and new Jupyter notebooks
Bug Fixes
- 70daa76 Make sure MT=3 cross section is not used
- 40b05fe Ensure source bank is resampled for fixed source runs
- 9586ed3 Fix two hexagonal lattice bugs
- a855e8f Make sure graphite models don't error out on max events
- 7294a13 Fix incorrect check on cmfd.xml
- 12f2467 Ensure number of realizations is written to statepoint
- 0227f48 Fix bug when sampling multiple energy distributions
- 51deaa7 Prevent segfault when user specifies '18' on tally scores
- fed74b8 Prevent duplicate tally scores
- 8467aea Better threshold for allowable lost particles
- 493c6fd Fix type of return argument for h5pget_driver_f
Contributors
This release contains new contributions from the following people:
OpenMC 0.7.1
This release of OpenMC provides some substantial improvements over version 0.7.0. Non-simple cell regions can now be defined through the |
(union) and ~
(complement) operators. Similar changes in the Python API also allow complex cell regions to be defined. A true secondary particle bank now exists; this is crucial for photon transport (to be added in the next minor release). A rich API for multi-group cross section generation has been added via the openmc.mgxs
Python module.
Various improvements to tallies have also been made. It is now possible to explicitly specify that a collision estimator be used in a tally. A new delayedgroup
filter and delayed-nu-fission
score allow a user to obtain delayed fission neutron production rates filtered by delayed group. Finally, the new inverse-velocity
score may be useful for calculating kinetics parameters.
Caution! In previous versions, depending on how OpenMC was compiled binary output was either given in HDF5 or a flat binary format. With this version, all binary output is now HDF5 which means you must have HDF5 in order to install OpenMC. Please consult the user's guide for instructions on how to compile with HDF5.
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
- Performance improvements for binary search
- Performance improvements for reaction rate tallies
Bug Fixes
- 2993228 Bug with material filter when void material present
- d748406 Fix triggers on tallies with multiple filters
- c29a811 Correctly handle maximum transport energy
- 3edc238 Fixes in the nu-scatter score
- 629e3b2 Assume unspecified surface coefficients are zero in Python API
- 5dbe8b7 Fix energy filters for openmc-plot-mesh-tally
- ff66f41 Fixes in the openmc-plot-mesh-tally script
- 441fd4f Fix bug in kappa-fission score
- 7e5974a Allow fixed source simulations from Python API
Contributors
This release contains new contributions from the following people:
OpenMC 0.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
- Tally triggers
- Remove dependence on PETSc
- Significant OpenMP performance improvements
- Support for Fortran 2008 MPI interface
- Use of Travis CI for continuous integration
- Simplifications and improvements to test suite
Bug Fixes
- b5f7125 Fix bug in spherical harmonics tallies
- e6675b7 Ensure all constants are double precision
- 04e2c19 Fix potential bug in sample_nuclide routine
- 6121d97 Fix bugs related to particle track files
- 2f0e895 Fixes for nuclide specification in tallies
Contributors
This release contains new contributions from the following people:
OpenMC 0.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
- 26fb936 Fix problem with -t, --track command-line flag
- 2f07c03 Improved evaporation spectrum algorithm
- e6abb9d Fix segfault when tallying in a void material
- 291b45a Handle metastable nuclides in NNDC data and multiplicities in MT=5 data
Contributors
This release contains new contributions from the following people:
OpenMC 0.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
- 03e8903 Check for energy-dependent multiplicities in ACE files
- 4439de5 Fix distance-to-surface calculation for general plane surface
- 5808ed4 Account for differences in URR band probabilities at different energies
- 2e60c0e Allow zero atom/weight percents in materials
- 3e0870a Don't use PWD environment variable when setting path to input files
- dc47763 Handle probability table resampling correctly
- 01178bf Fix metastables nuclides in NNDC cross_sections.xml file
- 62ec431 Don't read tallies.xml when OpenMC is run in plotting mode
- 2a95ef7 Prevent segmentation fault on "current" score without mesh filter
- 93e4823 Check for negative values in probability tables
- 9d32299 Ensure installation of Python modules goes into correct directory
Contributors
This release contains new contributions from the following people:
OpenMC 0.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
- 41f7cab Fixed erroneous results from survival biasing
- 038736f Fix tallies over void materials
- 46f9e85 Check for negative values in probability tables
- d1ca351 Fixed sampling of angular distribution
- 0291c0f Fixed indexing error in plotting
- d7a7d0f Fix bug with specifying xs attribute
- 85b3cbd Fix out-of-bounds error with OpenMP threading
Contributors
This release contains new contributions from the following people:
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
- Expanded options for writing source bank
- Re-enabled ability to use source file as starting source
- S(a,b) recalculation avoided when same nuclide and S(a,b) table are accessed
Bug Fixes
- 32c03c4 Check for valid data in cross_sections.xml
- c71ef57 Fix bug in statepoint.py
- 8884fb9 Check for all ZAIDs for S(a,b) tables
- b38af09 Fix XML reading on multiple levels of input
- d28750c Fix bug in convert_xsdir.py
- cf567ca ENDF/B-VI data checked for compatibility
- 6b94613 Fix p_valid sampling inside of sample_energy
Contributors
This release contains new contributions from the following people:
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
- Test suite enhanced to test output with different compiler options
- Description of OpenMC development workflow added
- OpenMP shared-memory parallelism added
- Special run mode --tallies removed.
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.