====================
What's New in 0.10.0
====================

.. currentmodule:: openmc

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:

- 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::

    mat = openmc.Material()
    mat.add_nuclide('H1', 1.0)
    mat.isotropic = ['H1']

  To treat all nuclides in a material this way, the
  :meth:`Material.make_isotropic_in_lab` method can still be used.

- The initializers for :class:`openmc.Intersection` and :class:`openmc.Union`
  now expect an iterable.

- Auto-generated unique IDs for classes now start from 1 rather than 10000.

.. 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
-------------------

There are no special requirements for running the OpenMC code. As of this
release, OpenMC has been tested on a variety of Linux distributions and Mac
OS X. Numerous users have reported working builds on Microsoft Windows, but your
mileage may vary. Memory requirements will vary depending on the size of the
problem at hand (mostly on the number of nuclides and tallies in the problem).

------------
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
---------

- 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

.. _937469: https://github.com/openmc-dev/openmc/commit/937469
.. _a149ef: https://github.com/openmc-dev/openmc/commit/a149ef
.. _2c9b21: https://github.com/openmc-dev/openmc/commit/2c9b21
.. _8047f6: https://github.com/openmc-dev/openmc/commit/8047f6
.. _0beb4c: https://github.com/openmc-dev/openmc/commit/0beb4c
.. _f124be: https://github.com/openmc-dev/openmc/commit/f124be
.. _0c6915: https://github.com/openmc-dev/openmc/commit/0c6915
.. _61ecb4: https://github.com/openmc-dev/openmc/commit/61ecb4

------------
Contributors
------------

This release contains new contributions from the following people:

- `Brody Bassett <brbass@umich.edu>`_
- `Will Boyd <wbinventor@gmail.com>`_
- `Guillaume Giudicelli <g_giud@mit.edu>`_
- `Brittany Grayson <graybri3@isu.edu>`_
- `Sterling Harper <sterlingmharper@gmail.com>`_
- `Colin Josey <cjosey@mit.edu>`_
- `Travis Labossiere-Hickman <tjlaboss@mit.edu>`_
- `Jingang Liang <liangjg2008@gmail.com>`_
- `Alex Lindsay <alexlindsay239@gmail.com>`_
- `Johnny Liu <johnny16.21@gmail.com>`_
- `Amanda Lund <alund@anl.gov>`_
- `April Novak <novak@berkeley.edu>`_
- `Adam Nelson <nelsonag@umich.edu>`_
- `Jose Salcedo Perez <salcedop@mit.edu>`_
- `Paul Romano <paul.k.romano@gmail.com>`_
- `Sam Shaner <samuelshaner@gmail.com>`_
