diff --git a/docs/source/conf.py b/docs/source/conf.py index ae8bfe6b5..834c47a40 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -27,7 +27,7 @@ except ImportError: MOCK_MODULES = ['numpy', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.ctypeslib', 'scipy', 'scipy.sparse', 'scipy.interpolate', 'scipy.integrate', 'scipy.optimize', 'scipy.special', - 'scipy.stats', 'h5py', 'pandas', 'uncertainties', + 'scipy.stats', 'h5py', 'pandas', 'uncertainties', 'matplotlib', 'matplotlib.pyplot','openmoc', 'openmc.data.reconstruct'] sys.modules.update((mod_name, MagicMock()) for mod_name in MOCK_MODULES) @@ -76,9 +76,9 @@ copyright = u'2011-2017, Massachusetts Institute of Technology' # built documents. # # The short X.Y version. -version = "0.9" +version = "0.10" # The full version, including alpha/beta/rc tags. -release = "0.9.0" +release = "0.10.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/source/pythonapi/capi.rst b/docs/source/pythonapi/capi.rst index 3c6300bb6..f35823399 100644 --- a/docs/source/pythonapi/capi.rst +++ b/docs/source/pythonapi/capi.rst @@ -1,6 +1,6 @@ ---------------------------------------------------- -:data:`openmc.capi` -- Python bindings to the C API ---------------------------------------------------- +-------------------------------------------------- +:mod:`openmc.capi` -- Python bindings to the C API +-------------------------------------------------- .. automodule:: openmc.capi @@ -12,25 +12,25 @@ Functions :nosignatures: :template: myfunction.rst - openmc.capi.calculate_volumes - openmc.capi.finalize - openmc.capi.find_cell - openmc.capi.find_material - openmc.capi.hard_reset - openmc.capi.init - openmc.capi.iter_batches - openmc.capi.keff - openmc.capi.load_nuclide - openmc.capi.next_batch - openmc.capi.num_realizations - openmc.capi.plot_geometry - openmc.capi.reset - openmc.capi.run - openmc.capi.run_in_memory - openmc.capi.simulation_init - openmc.capi.simulation_finalize - openmc.capi.source_bank - openmc.capi.statepoint_write + calculate_volumes + finalize + find_cell + find_material + hard_reset + init + iter_batches + keff + load_nuclide + next_batch + num_realizations + plot_geometry + reset + run + run_in_memory + simulation_init + simulation_finalize + source_bank + statepoint_write Classes ------- @@ -40,9 +40,9 @@ Classes :nosignatures: :template: myclass.rst - openmc.capi.Cell - openmc.capi.EnergyFilter - openmc.capi.MaterialFilter - openmc.capi.Material - openmc.capi.Nuclide - openmc.capi.Tally + Cell + EnergyFilter + MaterialFilter + Material + Nuclide + Tally diff --git a/docs/source/releasenotes.rst b/docs/source/releasenotes.rst index d647f1ff3..4cacd4a7f 100644 --- a/docs/source/releasenotes.rst +++ b/docs/source/releasenotes.rst @@ -1,59 +1,38 @@ .. _releasenotes: -============================== -Release Notes for OpenMC 0.9.0 -============================== +=============================== +Release Notes for OpenMC 0.10.0 +=============================== .. currentmodule:: openmc -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 (:mod:`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. +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 :mod:`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: -- Each type of tally filter is now specified with a separate class. For example:: +- To indicate that nuclides in a material should be treated such that elastic + scattering is isotropic in the laboratory system, there is a new + :attr:`Material.isotropic` property:: - energy_filter = openmc.EnergyFilter([0.0, 0.625, 4.0, 1.0e6, 20.0e6]) + mat = openmc.Material() + mat.add_nuclide('H1', 1.0) + mat.isotropic = ['H1'] -- Several attributes of the :class:`Plot` class have changed (``color`` -> - ``color_by`` and ``col_spec`` > ``colors``). :attr:`Plot.colors` now accepts a - dictionary mapping :class:`Cell` or :class:`Material` instances to RGB - 3-tuples or string colors names, e.g.:: +- The initializers for :class:`openmc.Intersection` and :class:`openmc.Union` + now expect an iterable. - plot.colors = { - fuel: 'yellow', - water: 'blue' - } +- Auto-generated unique IDs for classes now start from 1 rather than 10000. -- ``make_hexagon_region`` is now :func:`get_hexagonal_prism` -- Several changes in :class:`Settings` attributes: - - - ``weight`` is now set as ``Settings.cutoff['weight']`` - - Shannon entropy is now specified by passing a :class:`openmc.Mesh` to - :attr:`Settings.entropy_mesh` - - Uniform fission site method is now specified by passing a - :class:`openmc.Mesh` to :attr:`Settings.ufs_mesh` - - All ``sourcepoint_*`` options are now specified in a - :attr:`Settings.sourcepoint` dictionary - - Resonance scattering method is now specified as a dictionary in - :attr:`Settings.resonance_scattering` - - Multipole is now turned on by setting ``Settings.temperature['multipole'] = - True`` - - The ``output_path`` attribute is now ``Settings.output['path']`` - -- All the ``openmc.mgxs.Nu*`` classes are gone. Instead, a ``nu`` argument was - added to the constructor of the corresponding classes. +.. attention:: This is the last release of OpenMC that will support Python + 2.7. Future releases of OpenMC will require Python 3.4 or later. ------------------- System Requirements @@ -69,69 +48,34 @@ problem at hand (mostly on the number of nuclides and tallies in the problem). 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, :mod:`openmc.data` -- Allow cutoff energy via :attr:`Settings.cutoff` -- Ability to define fuel by enrichment (see :meth:`Material.add_element`) -- Random sphere packing for TRISO particle generation, - :func:`openmc.model.pack_trisos` -- Critical eigenvalue search, :func:`openmc.search_for_keff` -- Model container, :class:`openmc.model.Model` -- In-line plotting in Jupyter, :func:`openmc.plot_inline` -- Energy function tally filters, :class:`openmc.EnergyFunctionFilter` -- Replaced FoX XML parser with `pugixml `_ -- Cell/material instance counting, :meth:`Geometry.determine_paths` -- Differential tallies (see :class:`openmc.TallyDerivative`) -- Consistent multi-group scattering matrices -- Improved documentation and new Jupyter notebooks -- OpenMOC compatibility module, :mod:`openmc.openmoc_compatible` +- 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 --------- -- c5df6c_: Fix mesh filter max iterator check -- 1cfa39_: Reject external source only if 95% of sites are rejected -- 335359_: Fix bug in plotting meshlines -- 17c678_: Make sure system_clock uses high-resolution timer -- 23ec0b_: Fix use of S(a,b) with multipole data -- 7eefb7_: Fix several bugs in tally module -- 7880d4_: Allow plotting calculation with no boundary conditions -- ad2d9f_: Fix filter weight missing when scoring all nuclides -- 59fdca_: Fix use of source files for fixed source calculations -- 9eff5b_: Fix thermal scattering bugs -- 7848a9_: Fix combined k-eff estimator producing NaN -- f139ce_: Fix printing bug for tallies with AggregateNuclide -- b8ddfa_: Bugfix for short tracks near tally mesh edges -- ec3cfb_: Fix inconsistency in filter weights -- 5e9b06_: Fix XML representation for verbosity -- c39990_: Fix bug tallying reaction rates with multipole on -- c6b67e_: Fix fissionable source sampling bug -- 489540_: Check for void materials in tracklength tallies -- f0214f_: Fixes/improvements to the ARES algorithm +- 937469_: Fix energy group sampling for multi-group simulations +- a149ef_: Ensure mutable objects are not hashable +- 2c9b21_: Preserve backwards compatibility for generated HDF5 libraries +- 8047f6_: Handle units of division for tally arithmetic correctly +- 0beb4c_: Compatibility with newer versions of Pandas +- f124be_: Fix generating 0K data with openmc.data.njoy module +- 0c6915_: Bugfix for generating thermal scattering data +- 61ecb4_: Fix bugs in Python multipole objects -.. _c5df6c: https://github.com/mit-crpg/openmc/commit/c5df6c -.. _1cfa39: https://github.com/mit-crpg/openmc/commit/1cfa39 -.. _335359: https://github.com/mit-crpg/openmc/commit/335359 -.. _17c678: https://github.com/mit-crpg/openmc/commit/17c678 -.. _23ec0b: https://github.com/mit-crpg/openmc/commit/23ec0b -.. _7eefb7: https://github.com/mit-crpg/openmc/commit/7eefb7 -.. _7880d4: https://github.com/mit-crpg/openmc/commit/7880d4 -.. _ad2d9f: https://github.com/mit-crpg/openmc/commit/ad2d9f -.. _59fdca: https://github.com/mit-crpg/openmc/commit/59fdca -.. _9eff5b: https://github.com/mit-crpg/openmc/commit/9eff5b -.. _7848a9: https://github.com/mit-crpg/openmc/commit/7848a9 -.. _f139ce: https://github.com/mit-crpg/openmc/commit/f139ce -.. _b8ddfa: https://github.com/mit-crpg/openmc/commit/b8ddfa -.. _ec3cfb: https://github.com/mit-crpg/openmc/commit/ec3cfb -.. _5e9b06: https://github.com/mit-crpg/openmc/commit/5e9b06 -.. _c39990: https://github.com/mit-crpg/openmc/commit/c39990 -.. _c6b67e: https://github.com/mit-crpg/openmc/commit/c6b67e -.. _489540: https://github.com/mit-crpg/openmc/commit/489540 -.. _f0214f: https://github.com/mit-crpg/openmc/commit/f0214f +.. _937469: https://github.com/mit-crpg/openmc/commit/937469 +.. _a149ef: https://github.com/mit-crpg/openmc/commit/a149ef +.. _2c9b21: https://github.com/mit-crpg/openmc/commit/2c9b21 +.. _8047f6: https://github.com/mit-crpg/openmc/commit/8047f6 +.. _0beb4c: https://github.com/mit-crpg/openmc/commit/0beb4c +.. _f124be: https://github.com/mit-crpg/openmc/commit/f124be +.. _0c6915: https://github.com/mit-crpg/openmc/commit/0c6915 +.. _61ecb4: https://github.com/mit-crpg/openmc/commit/61ecb4 ------------ Contributors @@ -139,14 +83,19 @@ Contributors This release contains new contributions from the following people: +- `Brody Bassett `_ - `Will Boyd `_ +- `Guillaume Giudicelli `_ +- `Brittany Grayson `_ - `Sterling Harper `_ -- `Qingming He <906459647@qq.com>`_ - `Colin Josey `_ - `Travis Labossiere-Hickman `_ - `Jingang Liang `_ +- `Alex Lindsay `_ +- `Johnny Liu `_ - `Amanda Lund `_ +- `April Novak `_ - `Adam Nelson `_ +- `Jose Salcedo Perez `_ - `Paul Romano `_ - `Sam Shaner `_ -- `Jon Walsh `_ diff --git a/openmc/__init__.py b/openmc/__init__.py index 13dac05e7..9b13fa692 100644 --- a/openmc/__init__.py +++ b/openmc/__init__.py @@ -32,4 +32,4 @@ from . import examples # Import a few convencience functions that used to be here from openmc.model import get_rectangular_prism, get_hexagonal_prism -__version__ = '0.9.0' +__version__ = '0.10.0' diff --git a/src/constants.F90 b/src/constants.F90 index 3968781e9..331a644f0 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -9,7 +9,7 @@ module constants ! OpenMC major, minor, and release numbers integer, parameter :: VERSION_MAJOR = 0 - integer, parameter :: VERSION_MINOR = 9 + integer, parameter :: VERSION_MINOR = 10 integer, parameter :: VERSION_RELEASE = 0 integer, parameter :: & VERSION(3) = [VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE] diff --git a/src/output.F90 b/src/output.F90 index d09beda1b..f9660638a 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -79,7 +79,7 @@ contains ' Copyright | 2011-2017 Massachusetts Institute of Technology' write(UNIT=OUTPUT_UNIT, FMT=*) & ' License | http://openmc.readthedocs.io/en/latest/license.html' - write(UNIT=OUTPUT_UNIT, FMT='(11X,"Version | ",I1,".",I1,".",I1)') & + write(UNIT=OUTPUT_UNIT, FMT='(11X,"Version | ",I1,".",I2,".",I1)') & VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE #ifdef GIT_SHA1 write(UNIT=OUTPUT_UNIT, FMT='(10X,"Git SHA1 | ",A)') GIT_SHA1