diff --git a/docs/requirements-rtd.txt b/docs/requirements-rtd.txt index 652f880ff..15345247e 100644 --- a/docs/requirements-rtd.txt +++ b/docs/requirements-rtd.txt @@ -1,2 +1,3 @@ sphinx-numfig jupyter +sphinxcontrib-katex diff --git a/docs/source/capi/index.rst b/docs/source/capi/index.rst index 354ee2878..90bef1909 100644 --- a/docs/source/capi/index.rst +++ b/docs/source/capi/index.rst @@ -341,7 +341,7 @@ Functions :param int32_t index: Index in the materials array :param double* denity: Pointer to a density - :return Return status (negative if an error occurs) + :return: Return status (negative if an error occurs) :rtype: int .. c:function:: int openmc_material_get_id(int32_t index, int32_t* id) diff --git a/docs/source/conf.py b/docs/source/conf.py index 22446213a..a24f9b398 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -49,10 +49,10 @@ sys.path.insert(0, os.path.abspath('../..')) # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon', - 'sphinx.ext.mathjax', 'sphinx.ext.autosummary', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode', + 'sphinxcontrib.katex', 'sphinx_numfig', 'notebook_sphinxext'] if not on_rtd: @@ -71,17 +71,17 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = u'OpenMC' -copyright = u'2011-2018, Massachusetts Institute of Technology and OpenMC contributors' +project = 'OpenMC' +copyright = '2011-2019, Massachusetts Institute of Technology and OpenMC contributors' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = "0.10" +version = "0.11" # The full version, including alpha/beta/rc tags. -release = "0.10.0" +release = "0.11.0-dev" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -208,8 +208,8 @@ htmlhelp_basename = 'openmcdoc' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ - ('index', 'openmc.tex', u'OpenMC Documentation', - u'OpenMC contributors', 'manual'), + ('index', 'openmc.tex', 'OpenMC Documentation', + 'OpenMC contributors', 'manual'), ] latex_elements = { diff --git a/docs/source/index.rst b/docs/source/index.rst index 4071b9794..5500890e2 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -35,7 +35,7 @@ list `_. quickinstall examples/index - releasenotes + releasenotes/index methods/index usersguide/index devguide/index diff --git a/docs/source/methods/neutron_physics.rst b/docs/source/methods/neutron_physics.rst index 465929ba0..60d3c1468 100644 --- a/docs/source/methods/neutron_physics.rst +++ b/docs/source/methods/neutron_physics.rst @@ -1177,12 +1177,12 @@ parts as such: .. math:: :label: divide-pdf + \begin{aligned} p(v_T, \mu) &= f_1(v_T, \mu) f_2(v_T) \\ - f_1(v_T, \mu) &= \frac{4\sigma_s}{\sqrt{\pi} C'} \frac{ \sqrt{v_n^2 + v_T^2 - 2v_n v_T \mu}}{v_n + v_T} \\ - f_2(v_T) &= (v_n + v_T) \beta^3 v_T^2 \exp \left ( -\beta^2 v_T^2 \right ). + \end{aligned} In general, any probability distribution function of the form :math:`p(x) = f_1(x) f_2(x)` with :math:`f_1(x)` bounded can be sampled by sampling diff --git a/docs/source/methods/photon_physics.rst b/docs/source/methods/photon_physics.rst index 2d9a62ef3..4494fc643 100644 --- a/docs/source/methods/photon_physics.rst +++ b/docs/source/methods/photon_physics.rst @@ -50,10 +50,12 @@ The differential cross section for Rayleigh scattering is given by .. math:: :label: coherent-xs + \begin{aligned} \frac{d\sigma(E,E',\mu)}{d\mu} &= \pi r_e^2 ( 1 + \mu^2 )~\left| F(x,Z) + F' + iF'' \right|^2 \\ &= \pi r_e^2 ( 1 + \mu^2 ) \left [ ( F(x,Z) + F'(E) )^2 + F''(E)^2 \right ] + \end{aligned} where :math:`F(x,Z)` is a form factor as a function of the momentum transfer :math:`x` and the atomic number :math:`Z` and the term :math:`F' + iF''` @@ -93,7 +95,7 @@ mass, and the coefficient :math:`a` can be shown to be .. math:: :label: omega - a = \frac{m_e c^2}{\sqrt{2}hc} \approx 29.14329~\unicode{x212B}, + a = \frac{m_e c^2}{\sqrt{2}hc} \approx 2.914329\times10^{-9}~\text{m} where :math:`m_e` is the mass of the electron, :math:`c` is the speed of light in a vacuum, and :math:`h` is Planck's constant. Using :eq:`momentum-transfer`, @@ -371,9 +373,11 @@ where .. math:: :label: mu-pdf-factors + \begin{aligned} \psi(\mu_{-}) &= \frac{(1 - \beta_{-}^2)(1 - \mu_{-}^2)}{(1 - \beta_{-}\mu_{-})^2}, \\ g(\mu_{-}) &= \frac{1 - \beta_{-}^2}{2 (1 - \beta_{-}\mu_{-})^2}. + \end{aligned} In the interval :math:`[-1, 1]`, :math:`g(\mu_{-})` is a normalized PDF and :math:`\psi(\mu_{-})` satisfies the condition :math:`0 < \psi(\mu_{-}) < 1`. @@ -450,10 +454,12 @@ The Coulomb correction, given by .. math:: :label: coulomb-correction + \begin{aligned} f_C = \alpha^{2}Z^{2} \big[&(1 + \alpha^{2}Z^{2})^{-1} + 0.202059 - 0.03693\alpha^{2}Z^{2} + 0.00835\alpha^{4}Z^{4} \\ &- 0.00201\alpha^{6}Z^{6} + 0.00049\alpha^{8}Z^{8} - 0.00012\alpha^{10}Z^{10} + 0.00003\alpha^{12}Z^{12}\big] + \end{aligned} is introduced to correct for the fact that the Bethe-Heitler differential cross section was derived using the Born approximation, which treats the Coulomb @@ -469,9 +475,11 @@ approximations of the screening functions can be derived: .. math:: :label: screening-functions + \begin{aligned} \Phi_1 &= 2 - 2\ln(1 + b^2) - 4b\arctan(b^{-1}) + 4\ln(Rm_{e}c/\hbar) \\ \Phi_2 &= \frac{4}{3} - 2\ln(1 + b^2) + 2b^2 \left[ 4 - 4b\arctan(b^{-1}) - 3\ln(1 + b^{-2}) \right] + 4\ln(Rm_{e}c/\hbar) + \end{aligned} where @@ -492,10 +500,12 @@ upper boundary of :math:`\epsilon` will be shifted below .. math:: :label: correcting-factor + \begin{aligned} F_0(k, Z) =~& (0.1774 + 12.10\alpha Z - 11.18\alpha^{2}Z^{2})(2/k)^{1/2} \\ &+ (8.523 + 73.26\alpha Z - 44.41\alpha^{2}Z^{2})(2/k) \\ &- (13.52 + 121.1\alpha Z - 96.41\alpha^{2}Z^{2})(2/k)^{3/2} \\ &+ (8.946 + 62.05\alpha Z - 63.41\alpha^{2}Z^{2})(2/k)^{2}. + \end{aligned} To aid sampling, the differential cross section used to sample :math:`\epsilon` (minus the normalization constant) can now be expressed in the form @@ -512,23 +522,29 @@ where .. math:: :label: u + \begin{aligned} u_1 &= \frac{2}{3} \left(\frac{1}{2} - \frac{1}{k}\right)^2 \phi_1(1/2), \\ u_2 &= \phi_2(1/2), + \end{aligned} .. math:: :label: phi + \begin{aligned} \phi_1(\epsilon) &= \frac{1}{2}(3\Phi_1 - \Phi_2) - 4f_{C}(Z) + F_0(k, Z), \\ \phi_2(\epsilon) &= \frac{1}{4}(3\Phi_1 + \Phi_2) - 4f_{C}(Z) + F_0(k, Z), + \end{aligned} and .. math:: :label: pi + \begin{aligned} \pi_1(\epsilon) &= \frac{3}{2} \left(\frac{1}{2} - \frac{1}{k}\right)^{-3} \left(\frac{1}{2} - \epsilon\right)^2, \\ \pi_2(\epsilon) &= \frac{1}{2} \left(\frac{1}{2} - \frac{1}{k}\right)^{-1}. + \end{aligned} The functions in :eq:`phi` are non-negative and maximum at :math:`\epsilon = 1/2`. In the interval :math:`(\epsilon_{\text{min}}, \epsilon_{\text{max}})`, @@ -545,10 +561,12 @@ sample the reduced electron energy :math:`\epsilon`: .. math:: + \begin{aligned} \epsilon &= \frac{1}{2} + \left(\frac{1}{2} - \frac{1}{k}\right) (2\xi_1 - 1)^{1/3} ~~~~&\text{if}~~ i = 1 \\ \epsilon &= \frac{1}{k} + \left(\frac{1}{2} - \frac{1}{k}\right) 2\xi_1 ~~~~&\text{if}~~ i = 2. + \end{aligned} 3. If :math:`\xi_2 \le \phi_i(\epsilon)/\phi_i(1/2)`, accept :math:`\epsilon`. Otherwise, repeat the sampling from step 1. @@ -701,10 +719,12 @@ in Salvat_, .. math:: :label: positron-factor + \begin{aligned} F_{\text{p}}(Z,T) = & 1 - \text{exp}(-1.2359\times 10^{-1}t + 6.1274\times 10^{-2}t^2 - 3.1516\times 10^{-2}t^3 \\ & + 7.7446\times 10^{-3}t^4 - 1.0595\times 10^{-3}t^5 + 7.0568\times 10^{-5}t^6 \\ & - 1.8080\times 10^{-6}t^7), + \end{aligned} where @@ -840,8 +860,10 @@ defined as .. math:: :label: density-effect-li + \begin{aligned} l_i &= (\bar{\nu}_i^2 + 2/3f_i)^{1/2} ~~~~&\text{for}~~ \bar{\nu}_i > 0 \\ l_n &= f_n^{1/2} ~~~~&\text{for}~~ \bar{\nu}_n = 0, + \end{aligned} where the second case applies to conduction electrons. For a conductor, :math:`f_n` is given by :math:`n_c/Z`, where :math:`n_c` is the effective diff --git a/docs/source/pythonapi/capi.rst b/docs/source/pythonapi/capi.rst index 38ce61fb3..cacc5472e 100644 --- a/docs/source/pythonapi/capi.rst +++ b/docs/source/pythonapi/capi.rst @@ -44,8 +44,8 @@ Classes EnergyFilter MaterialFilter Material - Mesh MeshFilter MeshSurfaceFilter Nuclide + RegularMesh Tally diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 8abb52528..87d0d2a24 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -36,9 +36,7 @@ or class. .. tip:: Users are strongly encouraged to use the Python API to generate input files and analyze results. -------- -Modules -------- +.. rubric:: Modules .. toctree:: :maxdepth: 1 diff --git a/docs/source/releasenotes.rst b/docs/source/releasenotes/0.10.0.rst similarity index 97% rename from docs/source/releasenotes.rst rename to docs/source/releasenotes/0.10.0.rst index d5ea6c58c..e847fd0be 100644 --- a/docs/source/releasenotes.rst +++ b/docs/source/releasenotes/0.10.0.rst @@ -1,8 +1,6 @@ -.. _releasenotes: - -=============================== -Release Notes for OpenMC 0.10.0 -=============================== +==================== +What's New in 0.10.0 +==================== .. currentmodule:: openmc diff --git a/docs/source/releasenotes/0.11.0.rst b/docs/source/releasenotes/0.11.0.rst new file mode 100644 index 000000000..0bf44be3d --- /dev/null +++ b/docs/source/releasenotes/0.11.0.rst @@ -0,0 +1,102 @@ +==================== +What's New in 0.11.0 +==================== + +.. note:: + These release notes are for a future release of OpenMC and are still subject + to change. The new features and bug fixes documented here reflect the + current status of the ``develop`` branch of OpenMC. + +.. currentmodule:: openmc + +------- +Summary +------- + +This release of OpenMC adds several major new features: :ref:`depletion +`, photon transport, and support for CAD geometries +through DAGMC. In addition, the core codebase has been rewritten in C++14 (it +was previously written in Fortran 2008). This makes compiling the code +cosiderably simpler as no Fortran compiler is needed. + +Functional expansion tallies are now supported through several new tally filters +that can be arbitrarily combined: + +- :class:`openmc.LegendreFilter` +- :class:`openmc.SpatialLegendreFilter` +- :class:`openmc.SphericalHarmonicsFilter` +- :class:`openmc.ZernikeFilter` +- :class:`openmc.ZernikeRadialFilter` + +Note that these filters replace the use expansion scores like ``scatter-P1``. +Instead, a normal ``scatter`` score should be used along with a +:class:`openmc.LegendreFilter`. + +The interface for random sphere packing has been significantly improved. A new +:func:`openmc.model.pack_spheres` function takes a region and generates a +random, non-overlapping configuration of spheres within the region. + +------------ +New Features +------------ + +- The :class:`Geometry`, :class:`Materials`, and :class:`Settings` classes now + have a ``from_xml`` method that will build an instance from an existing XML + file. +- Predefined energy group structures can be found in + :data:`openmc.mgxs.GROUP_STRUCTURES`. +- New tally scores: ``H1-production``, ``H2-production``, ``H3-production``, + ``He3-production``, ``He4-production``, ``heating``, and ``damage-energy`` +- Switched to cell-based neighor lists (`PR 1140 + `_) +- Two new probability distributions that can be used for source distributions: + :class:`openmc.stats.Normal` and :class:`openmc.stats.Muir` +- The :mod:`openmc.data` module now supports reading and sampling from ENDF File + 32 resonance covariance data (`PR 1024 + `_). + +--------- +Bug Fixes +--------- + +- `Fix reading ASCII ACE tables in Python 3 `_ +- `Fix bug for distributed temperatures `_ +- `Fix bug for distance to boundary in complex cells `_ +- `Bug fixes for precursor decay rate tallies `_ +- `Check for invalid surface IDs in region expression `_ +- `Support for 32-bit operating systems `_ +- `Avoid segfault from unused nuclides `_ +- `Avoid overflow when broadcasting tally results `_ + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Brody Bassett `_ +- `Will Boyd `_ +- `Andrew Davis `_ +- `Guillaume Giudicelli `_ +- `Brittany Grayson `_ +- `Zhuoran Han `_ +- `Sterling Harper `_ +- `Andrew Johnson `_ +- `Colin Josey `_ +- `Shikhar Kumar `_ +- `Travis Labossiere-Hickman `_ +- `Matias Lavista `_ +- `Jingang Liang `_ +- `Alex Lindsay `_ +- `Johnny Liu `_ +- `Amanda Lund `_ +- `Jan Malec `_ +- `Isaac Meyer `_ +- `April Novak `_ +- `Adam Nelson `_ +- `Jose Salcedo Perez `_ +- `Paul Romano `_ +- `Sam Shaner `_ +- `Jonathan Shimwell `_ +- `Patrick Shriwise `_ +- `John Tramm `_ diff --git a/docs/source/releasenotes/0.4.0.rst b/docs/source/releasenotes/0.4.0.rst new file mode 100644 index 000000000..b24365669 --- /dev/null +++ b/docs/source/releasenotes/0.4.0.rst @@ -0,0 +1,34 @@ +=================== +What's New in 0.4.0 +=================== + +------------------- +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 as well as +Mac OS X. However, it has not been tested yet on any releases of Microsoft +Windows. Memory requirements will vary depending on the size of the problem at +hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- The probability table method for treatment of energy self-shielding in the + unresolved resonance range has been implemented and is now turned on by + default. +- Calculation of Shannon entropy for assessing convergence of the fission source + distribution. +- Ability to compile with the PGI Fortran compiler. +- Ability to run on IBM BlueGene/P machines. +- Completely rewrote how nested universes are handled. Geometry is now much more + robust. + +--------- +Bug Fixes +--------- + +- Many geometry errors have been fixed. The Monte Carlo performance benchmark + can now be successfully run in OpenMC. diff --git a/docs/source/releasenotes/0.4.1.rst b/docs/source/releasenotes/0.4.1.rst new file mode 100644 index 000000000..8ec96897e --- /dev/null +++ b/docs/source/releasenotes/0.4.1.rst @@ -0,0 +1,53 @@ +=================== +What's New in 0.4.1 +=================== + +------------------- +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 as well as +Mac OS X. However, it has not been tested yet on any releases of Microsoft +Windows. Memory requirements will vary depending on the size of the problem at +hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- A batching method has been implemented so that statistics can be calculated + based on multiple generations instead of a single generation. This can help to + overcome problems with underpredicted variance in problems where there is + correlation between successive fission source iterations. +- Users now have the option to select a non-unionized energy grid for problems + with many nuclides where the use of a unionized grid is not feasible. +- Improved plotting capability (Nick Horelik). The plotting input is now in + ``plots.xml`` instead of ``plot.xml``. +- Added multiple estimators for k-effective and added a global tally for + leakage. +- Moved cross section-related output into cross_sections.out. +- Improved timing capabilities. +- Can now use more than 2**31 - 1 particles per generation. +- Improved fission bank synchronization method. This also necessitated changing + the source bank to be of type Bank rather than of type Particle. +- Added HDF5 output (not complete yet). +- Major changes to tally implementation. + +--------- +Bug Fixes +--------- + +- `b206a8`_: Fixed subtle error in the sampling of energy distributions. +- `800742`_: Fixed error in sampling of angle and rotating angles. +- `a07c08`_: Fixed bug in linear-linear interpolation during sampling energy. +- `a75283`_: Fixed energy and energyout tally filters to support many bins. +- `95cfac`_: Fixed error in cell neighbor searches. +- `83a803`_: Fixed bug related to probability tables. + +.. _b206a8: https://github.com/mit-crpg/openmc/commit/b206a8 +.. _800742: https://github.com/mit-crpg/openmc/commit/800742 +.. _a07c08: https://github.com/mit-crpg/openmc/commit/a07c08 +.. _a75283: https://github.com/mit-crpg/openmc/commit/a75283 +.. _95cfac: https://github.com/mit-crpg/openmc/commit/95cfac +.. _83a803: https://github.com/mit-crpg/openmc/commit/83a803 diff --git a/docs/source/releasenotes/0.4.2.rst b/docs/source/releasenotes/0.4.2.rst new file mode 100644 index 000000000..c0d399301 --- /dev/null +++ b/docs/source/releasenotes/0.4.2.rst @@ -0,0 +1,54 @@ +=================== +What's New in 0.4.2 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Ability to specify void materials. +- Option to not reduce tallies across processors at end of each batch. +- Uniform fission site method for reducing variance on local tallies. +- Reading/writing binary source files. +- Added more messages for or high verbosity. +- Estimator for diffusion coefficient. +- Ability to specify 'point' source type. +- Ability to change random number seed. +- Users can now specify units='sum' on a tag. This tells the code that + the total material density is the sum of the atom fractions listed for each + nuclide on the material. + +--------- +Bug Fixes +--------- + +- a27f8f_: Fixed runtime error bug when using Intel compiler with DEBUG on. +- afe121_: Fixed minor bug in fission bank algorithms. +- e0968e_: Force re-evaluation of cross-sections when each particle is born. +- 298db8_: Fixed bug in surface currents when using energy-in filter. +- 2f3bbe_: Fixed subtle bug in S(a,b) cross section calculation. +- 671f30_: Fixed surface currents on mesh not encompassing geometry. +- b2c40e_: Fixed bug in incoming energy filter for track-length tallies. +- 5524fd_: Mesh filter now works with track-length tallies. +- d050c7_: Added Bessel's correction to make estimate of variance unbiased. +- 2a5b9c_: Fixed regression in plotting. + +.. _a27f8f: https://github.com/mit-crpg/openmc/commit/a27f8f +.. _afe121: https://github.com/mit-crpg/openmc/commit/afe121 +.. _e0968e: https://github.com/mit-crpg/openmc/commit/e0968e +.. _298db8: https://github.com/mit-crpg/openmc/commit/298db8 +.. _2f3bbe: https://github.com/mit-crpg/openmc/commit/2f3bbe +.. _671f30: https://github.com/mit-crpg/openmc/commit/671f30 +.. _b2c40e: https://github.com/mit-crpg/openmc/commit/b2c40e +.. _5524fd: https://github.com/mit-crpg/openmc/commit/5524fd +.. _d050c7: https://github.com/mit-crpg/openmc/commit/d050c7 +.. _2a5b9c: https://github.com/mit-crpg/openmc/commit/2a5b9c diff --git a/docs/source/releasenotes/0.4.3.rst b/docs/source/releasenotes/0.4.3.rst new file mode 100644 index 000000000..7ef12198d --- /dev/null +++ b/docs/source/releasenotes/0.4.3.rst @@ -0,0 +1,51 @@ +=================== +What's New in 0.4.3 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Option to report confidence intervals for tally results. +- Rotation and translation for filled cells. +- Ability to explicitly specify for tallies. +- Ability to store state points and use them to restart runs. +- Fixed source calculations (no subcritical multiplication however). +- Expanded options for external source distribution. +- Ability to tally reaction rates for individual nuclides within a material. +- Reduced memory usage by removing redundant storage or some cross-sections. +- 3bd35b_: Log-log interpolation for URR probability tables. +- Support to specify labels on tallies (nelsonag_). + +--------- +Bug Fixes +--------- + +- 33f29a_: Handle negative values in probability table. +- 1c472d_: Fixed survival biasing with probability tables. +- 3c6e80_: Fixed writing tallies with no filters. +- 460ef1_: Invalid results for duplicate tallies. +- 0069d5_: Fixed bug with 0 inactive batches. +- 7af2cf_: Fixed bug in score_analog_tallies. +- 85a60e_: Pick closest angular distribution for law 61. +- 3212f5_: Fixed issue with blank line at beginning of XML files. + +.. _nelsonag: https://github.com/nelsonag +.. _33f29a: https://github.com/mit-crpg/openmc/commit/33f29a +.. _1c472d: https://github.com/mit-crpg/openmc/commit/1c472d +.. _3c6e80: https://github.com/mit-crpg/openmc/commit/3c6e80 +.. _3bd35b: https://github.com/mit-crpg/openmc/commit/3bd35b +.. _0069d5: https://github.com/mit-crpg/openmc/commit/0069d5 +.. _7af2cf: https://github.com/mit-crpg/openmc/commit/7af2cf +.. _460ef1: https://github.com/mit-crpg/openmc/commit/460ef1 +.. _85a60e: https://github.com/mit-crpg/openmc/commit/85a60e +.. _3212f5: https://github.com/mit-crpg/openmc/commit/3212f5 diff --git a/docs/source/releasenotes/0.4.4.rst b/docs/source/releasenotes/0.4.4.rst new file mode 100644 index 000000000..d700e610d --- /dev/null +++ b/docs/source/releasenotes/0.4.4.rst @@ -0,0 +1,43 @@ +=================== +What's New in 0.4.4 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Ability to write state points when using . +- Real-time XML validation in GNU Emacs with RELAX NG schemata. +- Writing state points every n batches with +- Suppress creation of summary.out and cross_sections.out by default with option + to turn them on with tag in settings.xml file. +- Ability to create HDF5 state points. +- Binary source file is now part of state point file by default. +- Enhanced state point usage and added state point Python scripts. +- Turning confidence intervals on affects k-effective. +- Option to specify for tally meshes. + +--------- +Bug Fixes +--------- + +- 4654ee_: Fixed plotting with void cells. +- 7ee461_: Fixed bug with multi-line input using type='word'. +- 792eb3_: Fixed degrees of freedom for confidence intervals. +- 7fd617_: Fixed bug with restart runs in parallel. +- dc4a8f_: Fixed bug with fixed source restart runs. + +.. _4654ee: https://github.com/mit-crpg/openmc/commit/4654ee +.. _7ee461: https://github.com/mit-crpg/openmc/commit/7ee461 +.. _792eb3: https://github.com/mit-crpg/openmc/commit/792eb3 +.. _7fd617: https://github.com/mit-crpg/openmc/commit/7fd617 +.. _dc4a8f: https://github.com/mit-crpg/openmc/commit/dc4a8f diff --git a/docs/source/releasenotes/0.5.0.rst b/docs/source/releasenotes/0.5.0.rst new file mode 100644 index 000000000..443216e33 --- /dev/null +++ b/docs/source/releasenotes/0.5.0.rst @@ -0,0 +1,49 @@ +=================== +What's New in 0.5.0 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- All user input options that formerly accepted "off" or "on" should now be + "false" or "true" (the proper XML schema datatype). +- The element is deprecated and was replaced with . +- Added 'events' score that returns number of events that scored to a tally. +- Restructured tally filter implementation and user input. +- Source convergence acceleration via CMFD (implemented with PETSc). +- Ability to read source files in parallel when number of particles is greater + than that number of source sites. +- Cone surface types. + +--------- +Bug Fixes +--------- + +- 737b90_: Coincident surfaces from separate universes / particle traveling + tangent to a surface. +- a819b4_: Output of surface neighbors in summary.out file. +- b11696_: Reading long attribute lists in XML input. +- 2bd46a_: Search for tallying nuclides when no default_xs specified. +- 7a1f08_: Fix word wrapping when writing messages. +- c0e3ec_: Prevent underflow when compiling with MPI=yes and DEBUG=yes. +- 6f8d9d_: Set default tally labels. +- 6a3a5e_: Fix problem with corner-crossing in lattices. + +.. _737b90: https://github.com/mit-crpg/openmc/commit/737b90 +.. _a819b4: https://github.com/mit-crpg/openmc/commit/a819b4 +.. _b11696: https://github.com/mit-crpg/openmc/commit/b11696 +.. _2bd46a: https://github.com/mit-crpg/openmc/commit/2bd46a +.. _7a1f08: https://github.com/mit-crpg/openmc/commit/7a1f08 +.. _c0e3ec: https://github.com/mit-crpg/openmc/commit/c0e3ec +.. _6f8d9d: https://github.com/mit-crpg/openmc/commit/6f8d9d +.. _6a3a5e: https://github.com/mit-crpg/openmc/commit/6a3a5e diff --git a/docs/source/releasenotes/0.5.1.rst b/docs/source/releasenotes/0.5.1.rst new file mode 100644 index 000000000..6fa584fcf --- /dev/null +++ b/docs/source/releasenotes/0.5.1.rst @@ -0,0 +1,43 @@ +=================== +What's New in 0.5.1 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Absorption and combined estimators for k-effective. +- Natural elements can now be specified in materials using rather than + . +- Support for multiple S(a,b) tables in a single material (e.g. BeO). +- Test suite using Python nosetests. +- Proper install capability with 'make install'. +- Lattices can now be 2 or 3 dimensions. +- New scatter-PN score type. +- New kappa-fission score type. +- Ability to tally any reaction by specifying MT. + +--------- +Bug Fixes +--------- + +- 94103e_: Two checks for outgoing energy filters. +- e77059_: Fix reaction name for MT=849. +- b0fe88_: Fix distance to surface for cones. +- 63bfd2_: Fix tracklength tallies with cell filter and universes. +- 88daf7_: Fix analog tallies with survival biasing. + +.. _94103e: https://github.com/mit-crpg/openmc/commit/94103e +.. _e77059: https://github.com/mit-crpg/openmc/commit/e77059 +.. _b0fe88: https://github.com/mit-crpg/openmc/commit/b0fe88 +.. _63bfd2: https://github.com/mit-crpg/openmc/commit/63bfd2 +.. _88daf7: https://github.com/mit-crpg/openmc/commit/88daf7 diff --git a/docs/source/releasenotes/0.5.2.rst b/docs/source/releasenotes/0.5.2.rst new file mode 100644 index 000000000..ba6374ea7 --- /dev/null +++ b/docs/source/releasenotes/0.5.2.rst @@ -0,0 +1,55 @@ +=================== +What's New in 0.5.2 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Python script for mesh tally plotting +- Isotopic abundances based on IUPAC 2009 when using +- Particle restart files for debugging +- Code will abort after certain number of lost particles (defaults to 10) +- Region outside lattice can be filled with material (void by default) +- 3D voxel plots +- Full HDF5/PHDF5 support (including support in statepoint.py) +- Cell overlap checking with -g command line flag (or when plotting) + +--------- +Bug Fixes +--------- + +- 7632f3_: Fixed bug in statepoint.py for multiple generations per batch. +- f85ac4_: Fix infinite loop bug in error module. +- 49c36b_: Don't convert surface ids if surface filter is for current tallies. +- 5ccc78_: Fix bug in reassignment of bins for mesh filter. +- b1f52f_: Fixed bug in plot color specification. +- eae7e5_: Fixed many memory leaks. +- 10c1cc_: Minor CMFD fixes. +- afdb50_: Add compatibility for XML comments without whitespace. +- a3c593_: Fixed bug in use of free gas scattering for H-1. +- 3a66e3_: Fixed bug in 2D mesh tally implementation. +- ab0793_: Corrected PETSC_NULL references to their correct types. +- 182ebd_: Use analog estimator with energyout filter. + +.. _7632f3: https://github.com/mit-crpg/openmc/commit/7632f3 +.. _f85ac4: https://github.com/mit-crpg/openmc/commit/f85ac4 +.. _49c36b: https://github.com/mit-crpg/openmc/commit/49c36b +.. _5ccc78: https://github.com/mit-crpg/openmc/commit/5ccc78 +.. _b1f52f: https://github.com/mit-crpg/openmc/commit/b1f52f +.. _eae7e5: https://github.com/mit-crpg/openmc/commit/eae7e5 +.. _10c1cc: https://github.com/mit-crpg/openmc/commit/10c1cc +.. _afdb50: https://github.com/mit-crpg/openmc/commit/afdb50 +.. _a3c593: https://github.com/mit-crpg/openmc/commit/a3c593 +.. _3a66e3: https://github.com/mit-crpg/openmc/commit/3a66e3 +.. _ab0793: https://github.com/mit-crpg/openmc/commit/ab0793 +.. _182ebd: https://github.com/mit-crpg/openmc/commit/182ebd diff --git a/docs/source/releasenotes/0.5.3.rst b/docs/source/releasenotes/0.5.3.rst new file mode 100644 index 000000000..a7305da71 --- /dev/null +++ b/docs/source/releasenotes/0.5.3.rst @@ -0,0 +1,47 @@ +=================== +What's New in 0.5.3 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +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 +--------- + +- 2b1e8a_: Normalize direction vector after reflecting particle. +- 5853d2_: Set blank default for cross section listing alias. +- e178c7_: Fix infinite loop with words greater than 80 characters in write_message. +- c18a6e_: Check for valid secondary mode on S(a,b) tables. +- 82c456_: Fix bug where last process could have zero particles. + +.. _2b1e8a: https://github.com/mit-crpg/openmc/commit/2b1e8a +.. _5853d2: https://github.com/mit-crpg/openmc/commit/5853d2 +.. _e178c7: https://github.com/mit-crpg/openmc/commit/e178c7 +.. _c18a6e: https://github.com/mit-crpg/openmc/commit/c18a6e +.. _82c456: https://github.com/mit-crpg/openmc/commit/82c456 diff --git a/docs/source/releasenotes/0.5.4.rst b/docs/source/releasenotes/0.5.4.rst new file mode 100644 index 000000000..36d9ec4d5 --- /dev/null +++ b/docs/source/releasenotes/0.5.4.rst @@ -0,0 +1,62 @@ +=================== +What's New in 0.5.4 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +New Features +------------ + +- Source sites outside geometry are resampled +- XML-Fortran backend 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 +--------- + +- 32c03c_: Check for valid data in cross_sections.xml +- c71ef5_: Fix bug in statepoint.py +- 8884fb_: Check for all ZAIDs for S(a,b) tables +- b38af0_: Fix XML reading on multiple levels of input +- d28750_: Fix bug in convert_xsdir.py +- cf567c_: ENDF/B-VI data checked for compatibility +- 6b9461_: Fix p_valid sampling inside of sample_energy + +.. _32c03c: https://github.com/mit-crpg/openmc/commit/32c03c +.. _c71ef5: https://github.com/mit-crpg/openmc/commit/c71ef5 +.. _8884fb: https://github.com/mit-crpg/openmc/commit/8884fb +.. _b38af0: https://github.com/mit-crpg/openmc/commit/b38af0 +.. _d28750: https://github.com/mit-crpg/openmc/commit/d28750 +.. _cf567c: https://github.com/mit-crpg/openmc/commit/cf567c +.. _6b9461: https://github.com/mit-crpg/openmc/commit/6b9461 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Nick Horelik `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Tuomas Viitanen `_ +- `Jon Walsh `_ diff --git a/docs/source/releasenotes/0.6.0.rst b/docs/source/releasenotes/0.6.0.rst new file mode 100644 index 000000000..63e234583 --- /dev/null +++ b/docs/source/releasenotes/0.6.0.rst @@ -0,0 +1,57 @@ +=================== +What's New in 0.6.0 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +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 in settings.xml + +--------- +Bug Fixes +--------- + +- 41f7ca_: Fixed erroneous results from survival biasing +- 038736_: Fix tallies over void materials +- 46f9e8_: Check for negative values in probability tables +- d1ca35_: Fixed sampling of angular distribution +- 0291c0_: Fixed indexing error in plotting +- d7a7d0_: Fix bug with specifying xs attribute +- 85b3cb_: Fix out-of-bounds error with OpenMP threading + +.. _41f7ca: https://github.com/mit-crpg/openmc/commit/41f7ca +.. _038736: https://github.com/mit-crpg/openmc/commit/038736 +.. _46f9e8: https://github.com/mit-crpg/openmc/commit/46f9e8 +.. _d1ca35: https://github.com/mit-crpg/openmc/commit/d1ca35 +.. _0291c0: https://github.com/mit-crpg/openmc/commit/0291c0 +.. _d7a7d0: https://github.com/mit-crpg/openmc/commit/d7a7d0 +.. _85b3cb: https://github.com/mit-crpg/openmc/commit/85b3cb + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Nick Horelik `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Jon Walsh `_ diff --git a/docs/source/releasenotes/0.6.1.rst b/docs/source/releasenotes/0.6.1.rst new file mode 100644 index 000000000..a8c59aa51 --- /dev/null +++ b/docs/source/releasenotes/0.6.1.rst @@ -0,0 +1,63 @@ +=================== +What's New in 0.6.1 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +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 +--------- + +- 03e890_: Check for energy-dependent multiplicities in ACE files +- 4439de_: Fix distance-to-surface calculation for general plane surface +- 5808ed_: Account for differences in URR band probabilities at different energies +- 2e60c0_: Allow zero atom/weight percents in materials +- 3e0870_: Don't use PWD environment variable when setting path to input files +- dc4776_: Handle probability table resampling correctly +- 01178b_: Fix metastables nuclides in NNDC cross_sections.xml file +- 62ec43_: Don't read tallies.xml when OpenMC is run in plotting mode +- 2a95ef_: Prevent segmentation fault on "current" score without mesh filter +- 93e482_: Check for negative values in probability tables + +.. _03e890: https://github.com/mit-crpg/openmc/commit/03e890 +.. _4439de: https://github.com/mit-crpg/openmc/commit/4439de +.. _5808ed: https://github.com/mit-crpg/openmc/commit/5808ed +.. _2e60c0: https://github.com/mit-crpg/openmc/commit/2e60c0 +.. _3e0870: https://github.com/mit-crpg/openmc/commit/3e0870 +.. _dc4776: https://github.com/mit-crpg/openmc/commit/dc4776 +.. _01178b: https://github.com/mit-crpg/openmc/commit/01178b +.. _62ec43: https://github.com/mit-crpg/openmc/commit/62ec43 +.. _2a95ef: https://github.com/mit-crpg/openmc/commit/2a95ef +.. _93e482: https://github.com/mit-crpg/openmc/commit/93e482 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Jon Walsh `_ +- `Will Boyd `_ diff --git a/docs/source/releasenotes/0.6.2.rst b/docs/source/releasenotes/0.6.2.rst new file mode 100644 index 000000000..6fe6c28da --- /dev/null +++ b/docs/source/releasenotes/0.6.2.rst @@ -0,0 +1,56 @@ +=================== +What's New in 0.6.2 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +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 +--------- + +- 26fb93_: Fix problem with -t, --track command-line flag +- 2f07c0_: Improved evaporation spectrum algorithm +- e6abb9_: Fix segfault when tallying in a void material +- 291b45_: Handle metastable nuclides in NNDC data and multiplicities in MT=5 data + +.. _26fb93: https://github.com/mit-crpg/openmc/commit/26fb93 +.. _2f07c0: https://github.com/mit-crpg/openmc/commit/2f07c0 +.. _e6abb9: https://github.com/mit-crpg/openmc/commit/e6abb9 +.. _291b45: https://github.com/mit-crpg/openmc/commit/291b45 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Will Boyd `_ +- `Matt Ellis `_ +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Nicholas Horelik `_ +- `Anton Leontiev `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Jon Walsh `_ +- `John Xia `_ diff --git a/docs/source/releasenotes/0.7.0.rst b/docs/source/releasenotes/0.7.0.rst new file mode 100644 index 000000000..8f86631ea --- /dev/null +++ b/docs/source/releasenotes/0.7.0.rst @@ -0,0 +1,65 @@ +=================== +What's New in 0.7.0 +=================== + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +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 +--------- + +- b5f712_: Fix bug in spherical harmonics tallies +- e6675b_: Ensure all constants are double precision +- 04e2c1_: Fix potential bug in sample_nuclide routine +- 6121d9_: Fix bugs related to particle track files +- 2f0e89_: Fixes for nuclide specification in tallies + +.. _b5f712: https://github.com/mit-crpg/openmc/commit/b5f712 +.. _e6675b: https://github.com/mit-crpg/openmc/commit/e6675b +.. _04e2c1: https://github.com/mit-crpg/openmc/commit/04e2c1 +.. _6121d9: https://github.com/mit-crpg/openmc/commit/6121d9 +.. _2f0e89: https://github.com/mit-crpg/openmc/commit/2f0e89 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Will Boyd `_ +- `Matt Ellis `_ +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Nicholas Horelik `_ +- `Colin Josey `_ +- `William Lyu `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Anthony Scopatz `_ +- `Jon Walsh `_ diff --git a/docs/source/releasenotes/0.7.1.rst b/docs/source/releasenotes/0.7.1.rst new file mode 100644 index 000000000..5ee2c9f69 --- /dev/null +++ b/docs/source/releasenotes/0.7.1.rst @@ -0,0 +1,89 @@ +=================== +What's New in 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. + +------------------- +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, Mac OS X, +and Microsoft Windows 7. Memory requirements will vary depending on the size of +the problem at hand (mostly on the number of nuclides in the problem). + +------------ +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 +--------- + +- 299322_: Bug with material filter when void material present +- d74840_: Fix triggers on tallies with multiple filters +- c29a81_: Correctly handle maximum transport energy +- 3edc23_: Fixes in the nu-scatter score +- 629e3b_: Assume unspecified surface coefficients are zero in Python API +- 5dbe8b_: Fix energy filters for openmc-plot-mesh-tally +- ff66f4_: Fixes in the openmc-plot-mesh-tally script +- 441fd4_: Fix bug in kappa-fission score +- 7e5974_: Allow fixed source simulations from Python API + +.. _299322: https://github.com/mit-crpg/openmc/commit/299322 +.. _d74840: https://github.com/mit-crpg/openmc/commit/d74840 +.. _c29a81: https://github.com/mit-crpg/openmc/commit/c29a81 +.. _3edc23: https://github.com/mit-crpg/openmc/commit/3edc23 +.. _629e3b: https://github.com/mit-crpg/openmc/commit/629e3b +.. _5dbe8b: https://github.com/mit-crpg/openmc/commit/5dbe8b +.. _ff66f4: https://github.com/mit-crpg/openmc/commit/ff66f4 +.. _441fd4: https://github.com/mit-crpg/openmc/commit/441fd4 +.. _7e5974: https://github.com/mit-crpg/openmc/commit/7e5974 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Will Boyd `_ +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Colin Josey `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Kelly Rowland `_ +- `Sam Shaner `_ +- `Jon Walsh `_ diff --git a/docs/source/releasenotes/0.8.0.rst b/docs/source/releasenotes/0.8.0.rst new file mode 100644 index 000000000..bd8a89a64 --- /dev/null +++ b/docs/source/releasenotes/0.8.0.rst @@ -0,0 +1,94 @@ +=================== +What's New in 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 now ``Settings``, ``MaterialsFile`` is now ``Materials``, + and ``TalliesFile`` is now ``Tallies``. +- The ``GeometryFile`` class no longer exists and is replaced by the + ``Geometry`` class which now has an ``export_to_xml()`` method. +- Source distributions are defined using the ``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. + +The Python API documentation has also been significantly expanded. + +------------------- +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 +------------ + +- 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 +--------- + +- 70daa7_: Make sure MT=3 cross section is not used +- 40b05f_: Ensure source bank is resampled for fixed source runs +- 9586ed_: Fix two hexagonal lattice bugs +- a855e8_: Make sure graphite models don't error out on max events +- 7294a1_: Fix incorrect check on cmfd.xml +- 12f246_: Ensure number of realizations is written to statepoint +- 0227f4_: Fix bug when sampling multiple energy distributions +- 51deaa_: Prevent segfault when user specifies '18' on tally scores +- fed74b_: Prevent duplicate tally scores +- 8467ae_: Better threshold for allowable lost particles +- 493c6f_: Fix type of return argument for h5pget_driver_f + +.. _70daa7: https://github.com/mit-crpg/openmc/commit/70daa7 +.. _40b05f: https://github.com/mit-crpg/openmc/commit/40b05f +.. _9586ed: https://github.com/mit-crpg/openmc/commit/9586ed +.. _a855e8: https://github.com/mit-crpg/openmc/commit/a855e8 +.. _7294a1: https://github.com/mit-crpg/openmc/commit/7294a1 +.. _12f246: https://github.com/mit-crpg/openmc/commit/12f246 +.. _0227f4: https://github.com/mit-crpg/openmc/commit/0227f4 +.. _51deaa: https://github.com/mit-crpg/openmc/commit/51deaa +.. _fed74b: https://github.com/mit-crpg/openmc/commit/fed74b +.. _8467ae: https://github.com/mit-crpg/openmc/commit/8467ae +.. _493c6f: https://github.com/mit-crpg/openmc/commit/493c6f + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Will Boyd `_ +- `Derek Gaston `_ +- `Sterling Harper `_ +- `Colin Josey `_ +- `Jingang Liang `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Kelly Rowland `_ +- `Sam Shaner `_ diff --git a/docs/source/releasenotes/0.9.0.rst b/docs/source/releasenotes/0.9.0.rst new file mode 100644 index 000000000..478c57096 --- /dev/null +++ b/docs/source/releasenotes/0.9.0.rst @@ -0,0 +1,150 @@ +=================== +What's New in 0.9.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. + +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 :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.:: + + plot.colors = { + fuel: 'yellow', + water: 'blue' + } + +- ``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. + +------------------- +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 +------------ + +- 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` + +--------- +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 + +.. _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 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Will Boyd `_ +- `Sterling Harper `_ +- `Qingming He <906459647@qq.com>`_ +- `Colin Josey `_ +- `Travis Labossiere-Hickman `_ +- `Jingang Liang `_ +- `Amanda Lund `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Sam Shaner `_ +- `Jon Walsh `_ diff --git a/docs/source/releasenotes/index.rst b/docs/source/releasenotes/index.rst new file mode 100644 index 000000000..320ea9ca0 --- /dev/null +++ b/docs/source/releasenotes/index.rst @@ -0,0 +1,28 @@ +.. _releasenotes: + +============= +Release Notes +============= + +.. toctree:: + :maxdepth: 1 + + 0.11.0 + 0.10.0 + 0.9.0 + 0.8.0 + 0.7.1 + 0.7.0 + 0.6.2 + 0.6.1 + 0.6.0 + 0.5.4 + 0.5.3 + 0.5.2 + 0.5.1 + 0.5.0 + 0.4.4 + 0.4.3 + 0.4.2 + 0.4.1 + 0.4.0 diff --git a/docs/source/usersguide/basics.rst b/docs/source/usersguide/basics.rst index 2dd91ee0f..dbf63136c 100644 --- a/docs/source/usersguide/basics.rst +++ b/docs/source/usersguide/basics.rst @@ -100,7 +100,7 @@ that roughly correspond to elements in the XML files. For example, the :class:`openmc.Geometry` for ``geometry.xml``, :class:`openmc.Materials` for ``materials.xml``, :class:`openmc.Settings` for ``settings.xml``, and so on. To create a model then, one creates instances of these classes and then uses the -``export_to_xml()`` method, e.g. :meth:`Geometry.export_to_xml`. Most scripts +``export_to_xml()`` method, e.g., :meth:`Geometry.export_to_xml`. Most scripts that generate a full model will look something like the following: .. code-block:: Python @@ -120,7 +120,7 @@ that generate a full model will look something like the following: ... settings.export_to_xml() -One a model has been created and exported to XML, a simulation can be run either +Once a model has been created and exported to XML, a simulation can be run either by calling :ref:`scripts_openmc` directly from a shell or by using the :func:`openmc.run()` function from Python. diff --git a/docs/source/usersguide/depletion.rst b/docs/source/usersguide/depletion.rst new file mode 100644 index 000000000..5dd98406e --- /dev/null +++ b/docs/source/usersguide/depletion.rst @@ -0,0 +1,53 @@ +.. _usersguide_depletion: + +========= +Depletion +========= + +OpenMC supports coupled depletion, or burnup, calculations through the +:mod:`openmc.deplete` Python module. OpenMC solves the transport equation to +obtain transmutation reaction rates, and then the reaction rates are used to +solve a set of transmutation equations that determine the evolution of nuclide +densities within a material. The nuclide densities predicted as some future time +are then used to determine updated reaction rates, and the process is repeated +for as many timesteps as are requested. + +The depletion module is designed such that the flux/reaction rate solution (the +transport "operator") is completely isolated from the solution of the +transmutation equations and the method used for advancing time. At present, the +:mod:`openmc.deplete` module offers a single transport operator, +:class:`openmc.deplete.Operator` (which uses the OpenMC transport solver), but +in principle additional operator classes based on other transport codes could be +implemented and no changes to the depletion solver itself would be needed. The +operator class requires a :class:`openmc.Geometry` instance and a +:class:`openmc.Settings` instance:: + + geom = openmc.Geometry() + settings = openmc.Settings() + ... + + op = openmc.deplete.Operator(geom, settings) + +:mod:`openmc.deplete` supports multiple time-integration methods for determining +material compositions over time. Each method appears as a different function. +For example, :func:`openmc.deplete.integrator.cecm` runs a depletion calculation +using the CE/CM algorithm (deplete over a timestep using the middle-of-step +reaction rates). An instance of :class:`openmc.deplete.Operator` is passed to +one of these functions along with the power level and timesteps:: + + power = 1200.0e6 + days = 24*60*60 + timesteps = [10.0*days, 10.0*days, 10.0*days] + openmc.deplete.cecm(op, power, timesteps) + +The coupled transport-depletion problem is executed, and once it is done a +``depletion_results.h5`` file is written. The results can be analyzed using the +:class:`openmc.deplete.ResultsList` class. This class has methods that allow for +easy retrieval of k-effective, nuclide concentrations, and reaction rates over +time:: + + results = openmc.deplete.ResultsList("depletion_results.h5") + time, keff = results.get_eigenvalue() + +Note that the coupling between the transport solver and the transmutation solver +happens in-memory rather than by reading/writing files on disk. diff --git a/docs/source/usersguide/index.rst b/docs/source/usersguide/index.rst index d22acba50..fab353c77 100644 --- a/docs/source/usersguide/index.rst +++ b/docs/source/usersguide/index.rst @@ -20,6 +20,7 @@ essential aspects of using OpenMC to perform simulations. settings tallies plots + depletion scripts processing parallel diff --git a/include/openmc/constants.h b/include/openmc/constants.h index 49f980cc2..6b2e6f63b 100644 --- a/include/openmc/constants.h +++ b/include/openmc/constants.h @@ -20,8 +20,9 @@ using double_4dvec = std::vector>>>; // OpenMC major, minor, and release numbers constexpr int VERSION_MAJOR {0}; -constexpr int VERSION_MINOR {10}; +constexpr int VERSION_MINOR {11}; constexpr int VERSION_RELEASE {0}; +constexpr bool VERSION_DEV {true}; constexpr std::array VERSION {VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE}; // HDF5 data format diff --git a/openmc/data/photon.py b/openmc/data/photon.py index da576b5c8..0d0e52753 100644 --- a/openmc/data/photon.py +++ b/openmc/data/photon.py @@ -929,13 +929,12 @@ class IncidentPhoton(EqualityMixin): The point-wise heating cross section is calculated as: .. math:: - \sigma_{Hx}(E) &= (E - \overline{E}_x(E)) \cdot \sigma_x(E), x \in \left\{I, PP, PE \right\} - - \overline{E}_I(E) &= \frac {\int E' \sigma_I (E,E',\mu) d\mu} {\int \sigma_I (E,E',\mu) d\mu} - - \overline{E}_{PP} &= 2 m_e c^2 = 1.022 \times 10^6 eV - + \begin{aligned} + \sigma_{Hx}(E) &= (E - \overline{E}_x(E)) \cdot \sigma_x(E), x \in \left\{I, PP, PE \right\} \\ + \overline{E}_I(E) &= \frac {\int E' \sigma_I (E,E',\mu) d\mu} {\int \sigma_I (E,E',\mu) d\mu} \\ + \overline{E}_{PP} &= 2 m_e c^2 = 1.022 \times 10^6 eV \\ \overline{E}_{PE} &= E(\text{fluorescent photons}) + \end{aligned} The differential cross section representation for incoherent scattering can be found in the theory manual. diff --git a/openmc/deplete/integrator/cecm.py b/openmc/deplete/integrator/cecm.py index 42024863a..b1bcec448 100644 --- a/openmc/deplete/integrator/cecm.py +++ b/openmc/deplete/integrator/cecm.py @@ -17,15 +17,13 @@ def cecm(operator, timesteps, power=None, power_density=None, print_out=True): midpoint on corrector. This algorithm is mathematically defined as: .. math:: - y' &= A(y, t) y(t) - - A_p &= A(y_n, t_n) - - y_m &= \text{expm}(A_p h/2) y_n - - A_c &= A(y_m, t_n + h/2) - + \begin{aligned} + y' &= A(y, t) y(t) \\ + A_p &= A(y_n, t_n) \\ + y_m &= \text{expm}(A_p h/2) y_n \\ + A_c &= A(y_m, t_n + h/2) \\ y_{n+1} &= \text{expm}(A_c h) y_n + \end{aligned} Parameters ---------- diff --git a/openmc/deplete/integrator/celi.py b/openmc/deplete/integrator/celi.py index 0ba86d585..e7b801499 100644 --- a/openmc/deplete/integrator/celi.py +++ b/openmc/deplete/integrator/celi.py @@ -12,10 +12,12 @@ def _celi_f1(chain, rates): return 5/12 * chain.form_matrix(rates[0]) + \ 1/12 * chain.form_matrix(rates[1]) + def _celi_f2(chain, rates): return 1/12 * chain.form_matrix(rates[0]) + \ 5/12 * chain.form_matrix(rates[1]) + def celi(operator, timesteps, power=None, power_density=None, print_out=True): r"""Deplete using the CE/LI CFQ4 algorithm. @@ -27,16 +29,14 @@ def celi(operator, timesteps, power=None, power_density=None, interpolation on corrector. This algorithm is mathematically defined as: .. math:: - y' &= A(y, t) y(t) - - A_0 &= A(y_n, t_n) - - y_p &= \text{expm}(h A_0) y_n - - A_1 &= A(y_p, t_n + h) - + \begin{aligned} + y' &= A(y, t) y(t) \\ + A_0 &= A(y_n, t_n) \\ + y_p &= \text{expm}(h A_0) y_n \\ + A_1 &= A(y_p, t_n + h) \\ y_{n+1} &= \text{expm}(\frac{h}{12} A_0 + \frac{5h}{12} A1) \text{expm}(\frac{5h}{12} A_0 + \frac{h}{12} A1) y_n + \end{aligned} Parameters ---------- @@ -90,6 +90,7 @@ def celi(operator, timesteps, power=None, power_density=None, # Create results, write to disk Results.save(operator, x, op_results, [t, t], p, i_res + len(timesteps)) + def celi_inner(operator, vec, p, i, i_res, t, dt, print_out): """ The inner loop of CE/LI CFQ4. diff --git a/openmc/deplete/integrator/cf4.py b/openmc/deplete/integrator/cf4.py index e93b22d5c..fecb91751 100644 --- a/openmc/deplete/integrator/cf4.py +++ b/openmc/deplete/integrator/cf4.py @@ -11,22 +11,26 @@ from ..results import Results def _cf4_f1(chain, rates): return 1/2 * chain.form_matrix(rates) + def _cf4_f2(chain, rates): return -1/2 * chain.form_matrix(rates[0]) + \ chain.form_matrix(rates[1]) + def _cf4_f3(chain, rates): return 1/4 * chain.form_matrix(rates[0]) + \ 1/6 * chain.form_matrix(rates[1]) + \ 1/6 * chain.form_matrix(rates[2]) + \ -1/12 * chain.form_matrix(rates[3]) + def _cf4_f4(chain, rates): return -1/12 * chain.form_matrix(rates[0]) + \ 1/6 * chain.form_matrix(rates[1]) + \ 1/6 * chain.form_matrix(rates[2]) + \ 1/4 * chain.form_matrix(rates[3]) + def cf4(operator, timesteps, power=None, power_density=None, print_out=True): r"""Deplete using the CF4 algorithm. @@ -35,22 +39,17 @@ def cf4(operator, timesteps, power=None, power_density=None, print_out=True): This algorithm is mathematically defined as: .. math:: - F_1 &= h A(y_0) - - y_1 &= \text{expm}(1/2 F_1) y_0 - - F_2 &= h A(y_1) - - y_2 &= \text{expm}(1/2 F_2) y_0 - - F_3 &= h A(y_2) - - y_3 &= \text{expm}(-1/2 F_1 + F_3) y_1 - - F_4 &= h A(y_3) - + \begin{aligned} + F_1 &= h A(y_0) \\ + y_1 &= \text{expm}(1/2 F_1) y_0 \\ + F_2 &= h A(y_1) \\ + y_2 &= \text{expm}(1/2 F_2) y_0 \\ + F_3 &= h A(y_2) \\ + y_3 &= \text{expm}(-1/2 F_1 + F_3) y_1 \\ + F_4 &= h A(y_3) \\ y_4 &= \text{expm}( 1/4 F_1 + 1/6 F_2 + 1/6 F_3 - 1/12 F_4) \text{expm}(-1/12 F_1 + 1/6 F_2 + 1/6 F_3 + 1/4 F_4) y_0 + \end{aligned} Parameters ---------- diff --git a/openmc/deplete/integrator/epc_rk4.py b/openmc/deplete/integrator/epc_rk4.py index 3789f3698..58c4d08f7 100644 --- a/openmc/deplete/integrator/epc_rk4.py +++ b/openmc/deplete/integrator/epc_rk4.py @@ -25,21 +25,16 @@ def epc_rk4(operator, timesteps, power=None, power_density=None, print_out=True) This algorithm is mathematically defined as: .. math:: - F_1 &= h A(y_0) - - y_1 &= \text{expm}(1/2 F_1) y_0 - - F_2 &= h A(y_1) - - y_2 &= \text{expm}(1/2 F_2) y_0 - - F_3 &= h A(y_2) - - y_3 &= \text{expm}(F_3) y_0 - - F_4 &= h A(y_3) - + \begin{aligned} + F_1 &= h A(y_0) \\ + y_1 &= \text{expm}(1/2 F_1) y_0 \\ + F_2 &= h A(y_1) \\ + y_2 &= \text{expm}(1/2 F_2) y_0 \\ + F_3 &= h A(y_2) \\ + y_3 &= \text{expm}(F_3) y_0 \\ + F_4 &= h A(y_3) \\ y_4 &= \text{expm}(1/6 F_1 + 1/3 F_2 + 1/3 F_3 + 1/6 F_4) y_0 + \end{aligned} Parameters ---------- diff --git a/openmc/deplete/integrator/leqi.py b/openmc/deplete/integrator/leqi.py index 9d221e877..66b0c253a 100644 --- a/openmc/deplete/integrator/leqi.py +++ b/openmc/deplete/integrator/leqi.py @@ -16,12 +16,14 @@ def _leqi_f1(chain, inputs): dt_l, dt = inputs[2], inputs[3] return -dt / (12 * dt_l) * f1 + (dt + 6 * dt_l) / (12 * dt_l) * f2 + def _leqi_f2(chain, inputs): f1 = chain.form_matrix(inputs[0]) f2 = chain.form_matrix(inputs[1]) dt_l, dt = inputs[2], inputs[3] return -5 * dt / (12 * dt_l) * f1 + (5 * dt + 6 * dt_l) / (12 * dt_l) * f2 + def _leqi_f3(chain, inputs): f1 = chain.form_matrix(inputs[0]) f2 = chain.form_matrix(inputs[1]) @@ -31,6 +33,7 @@ def _leqi_f3(chain, inputs): (dt**2 + 6*dt*dt_l + 5*dt_l**2) / (12 * dt_l * (dt + dt_l)) * f2 + \ dt_l / (12 * (dt + dt_l)) * f3 + def _leqi_f4(chain, inputs): f1 = chain.form_matrix(inputs[0]) f2 = chain.form_matrix(inputs[1]) @@ -40,6 +43,7 @@ def _leqi_f4(chain, inputs): (dt**2 + 2*dt*dt_l + dt_l**2) / (12 * dt_l * (dt + dt_l)) * f2 + \ (4 * dt * dt_l + 5 * dt_l**2) / (12 * dt_l * (dt + dt_l)) * f3 + def leqi(operator, timesteps, power=None, power_density=None, print_out=True): r"""Deplete using the LE/QI CFQ4 algorithm. @@ -50,29 +54,22 @@ def leqi(operator, timesteps, power=None, power_density=None, print_out=True): interpolation on corrector. This algorithm is mathematically defined as: .. math:: - y' &= A(y, t) y(t) - - A_{last} &= A(y_{n-1}, t_n - h_1) - - A_0 &= A(y_n, t_n) - - F_1 &= \frac{-h_2^2}{12h_1} A_{last} + \frac{h_2(6h_1+h_2)}{12h_1} A_0 - - F_2 &= \frac{-5h_2^2}{12h_1} A_{last} + \frac{h_2(6h_1+5h_2)}{12h_1} A_0 - - y_p &= \text{expm}(F_2) \text{expm}(F_1) y_n - - A_1 &= A(y_p, t_n + h_2) - + \begin{aligned} + y' &= A(y, t) y(t) \\ + A_{last} &= A(y_{n-1}, t_n - h_1) \\ + A_0 &= A(y_n, t_n) \\ + F_1 &= \frac{-h_2^2}{12h_1} A_{last} + \frac{h_2(6h_1+h_2)}{12h_1} A_0 \\ + F_2 &= \frac{-5h_2^2}{12h_1} A_{last} + \frac{h_2(6h_1+5h_2)}{12h_1} A_0 \\ + y_p &= \text{expm}(F_2) \text{expm}(F_1) y_n \\ + A_1 &= A(y_p, t_n + h_2) \\ F_3 &= \frac{-h_2^3}{12 h_1 (h_1 + h_2)} A_{last} + \frac{h_2 (5 h_1^2 + 6 h_2 h_1 + h_2^2)}{12 h_1 (h_1 + h_2)} A_0 + - \frac{h_2 h_1)}{12 (h_1 + h_2)} A_1 - + \frac{h_2 h_1)}{12 (h_1 + h_2)} A_1 \\ F_4 &= \frac{-h_2^3}{12 h_1 (h_1 + h_2)} A_{last} + \frac{h_2 (h_1^2 + 2 h_2 h_1 + h_2^2)}{12 h_1 (h_1 + h_2)} A_0 + - \frac{h_2 (5 h_1^2 + 4 h_2 h_1)}{12 h_1 (h_1 + h_2)} A_1 - + \frac{h_2 (5 h_1^2 + 4 h_2 h_1)}{12 h_1 (h_1 + h_2)} A_1 \\ y_{n+1} &= \text{expm}(F_4) \text{expm}(F_3) y_n + \end{aligned} It is initialized using the CE/LI algorithm. diff --git a/openmc/deplete/integrator/predictor.py b/openmc/deplete/integrator/predictor.py index f670a125e..6872ae6ef 100644 --- a/openmc/deplete/integrator/predictor.py +++ b/openmc/deplete/integrator/predictor.py @@ -15,11 +15,11 @@ def predictor(operator, timesteps, power=None, power_density=None, mathematically defined as: .. math:: - y' &= A(y, t) y(t) - - A_p &= A(y_n, t_n) - + \begin{aligned} + y' &= A(y, t) y(t) \\ + A_p &= A(y_n, t_n) \\ y_{n+1} &= \text{expm}(A_p h) y_n + \end{aligned} Parameters ---------- diff --git a/openmc/mgxs/mdgxs.py b/openmc/mgxs/mdgxs.py index 14bc524ee..2d1e75e81 100644 --- a/openmc/mgxs/mdgxs.py +++ b/openmc/mgxs/mdgxs.py @@ -906,6 +906,7 @@ class ChiDelayed(MDGXS): .. math:: + \begin{aligned} \langle \nu^d \sigma_{f,g' \rightarrow g} \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) \nu^d \sigma_f (r, E') \psi(r, E', \Omega')\\ @@ -914,6 +915,7 @@ class ChiDelayed(MDGXS): E') \psi(r, E', \Omega') \\ \chi_g^d &= \frac{\langle \nu^d \sigma_{f,g' \rightarrow g} \phi \rangle} {\langle \nu^d \sigma_f \phi \rangle} + \end{aligned} Parameters ---------- @@ -1547,6 +1549,7 @@ class Beta(MDGXS): .. math:: + \begin{aligned} \langle \nu^d \sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \chi(E) \nu^d \sigma_f (r, E') \psi(r, E', \Omega') \\ @@ -1555,6 +1558,7 @@ class Beta(MDGXS): \sigma_f (r, E') \psi(r, E', \Omega') \\ \beta_{d,g} &= \frac{\langle \nu^d \sigma_f \phi \rangle} {\langle \nu \sigma_f \phi \rangle} + \end{aligned} NOTE: The Beta MGXS is the delayed neutron fraction computed directly from the nuclear data. Often the delayed neutron fraction is @@ -1735,6 +1739,7 @@ class DecayRate(MDGXS): .. math:: + \begin{aligned} \langle \lambda_d \nu^d \sigma_f \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_0^\infty dE' \int_0^\infty dE \; \lambda_d \nu^d \sigma_f (r, E') \psi(r, E', \Omega') \\ @@ -1743,6 +1748,7 @@ class DecayRate(MDGXS): \sigma_f (r, E') \psi(r, E', \Omega') \\ \lambda_d &= \frac{\langle \lambda_d \nu^d \sigma_f \phi \rangle} {\langle \nu^d \sigma_f \phi \rangle} + \end{aligned} Parameters ---------- @@ -2501,6 +2507,7 @@ class DelayedNuFissionMatrixXS(MatrixMDGXS): .. math:: + \begin{aligned} \langle \nu\sigma_{f,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) \nu\sigma_f^d (r, E') \psi(r, E', \Omega')\\ @@ -2508,6 +2515,7 @@ class DelayedNuFissionMatrixXS(MatrixMDGXS): \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ \nu\sigma_{f,g'\rightarrow g} &= \frac{\langle \nu\sigma_{f,g'\rightarrow g}^d \phi \rangle}{\langle \phi \rangle} + \end{aligned} Parameters diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d3d39e0f6..1c8f00f6e 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -2591,6 +2591,7 @@ class TransportXS(MGXS): .. math:: + \begin{aligned} \langle \sigma_t \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \sigma_t (r, E) \psi (r, E, \Omega) \\ @@ -2603,6 +2604,7 @@ class TransportXS(MGXS): \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ \sigma_{tr} &= \frac{\langle \sigma_t \phi \rangle - \langle \sigma_{s1} \phi \rangle}{\langle \phi \rangle} + \end{aligned} To incorporate the effect of scattering multiplication in the above relation, the `nu` parameter can be set to `True`. @@ -3549,7 +3551,8 @@ class ScatterMatrixXS(MatrixMGXS): .. math:: - \langle \sigma_{s,\ell,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr + \begin{aligned} + \langle \sigma}_{s,\ell,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; P_\ell (\Omega \cdot \Omega') \sigma_s (r, E' \rightarrow E, \Omega' \cdot \Omega) \psi(r, E', \Omega')\\ @@ -3557,6 +3560,7 @@ class ScatterMatrixXS(MatrixMGXS): \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ \sigma_{s,\ell,g'\rightarrow g} &= \frac{\langle \sigma_{s,\ell,g'\rightarrow g} \phi \rangle}{\langle \phi \rangle} + \end{aligned} If the order is zero and a :math:`P_0` transport-correction is applied (default), the scattering matrix elements are: @@ -4699,6 +4703,7 @@ class MultiplicityMatrixXS(MatrixMGXS): .. math:: + \begin{aligned} \langle \upsilon \sigma_{s,g'\rightarrow g} \phi \rangle &= \int_{r \in D} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \sum_i \upsilon_i \sigma_i (r, E' \rightarrow @@ -4710,6 +4715,7 @@ class MultiplicityMatrixXS(MatrixMGXS): \upsilon_{g'\rightarrow g} &= \frac{\langle \upsilon \sigma_{s,g'\rightarrow g} \rangle}{\langle \sigma_{s,g'\rightarrow g} \rangle} + \end{aligned} where :math:`\upsilon_i` is the multiplicity for the :math:`i`-th reaction. @@ -4866,6 +4872,7 @@ class ScatterProbabilityMatrix(MatrixMGXS): .. math:: + \begin{aligned} \langle \sigma_{s,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{4\pi} d\Omega \int_{E_g}^{E_{g-1}} dE \; \sigma_{s} (r, E' \rightarrow E, \Omega' @@ -4877,6 +4884,7 @@ class ScatterProbabilityMatrix(MatrixMGXS): P_{s,g'\rightarrow g} &= \frac{\langle \sigma_{s,g'\rightarrow g} \phi \rangle}{\langle \sigma_{s,g'} \phi \rangle} + \end{aligned} Parameters ---------- @@ -5032,6 +5040,7 @@ class NuFissionMatrixXS(MatrixMGXS): .. math:: + \begin{aligned} \langle \nu\sigma_{f,g'\rightarrow g} \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_{E_{g'}}^{E_{g'-1}} dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ @@ -5039,6 +5048,7 @@ class NuFissionMatrixXS(MatrixMGXS): \int_{E_g}^{E_{g-1}} dE \; \psi (r, E, \Omega) \\ \nu\sigma_{f,g'\rightarrow g} &= \frac{\langle \nu\sigma_{f,g'\rightarrow g} \phi \rangle}{\langle \phi \rangle} + \end{aligned} Parameters ---------- @@ -5183,6 +5193,7 @@ class Chi(MGXS): .. math:: + \begin{aligned} \langle \nu\sigma_{f,g' \rightarrow g} \phi \rangle &= \int_{r \in V} dr \int_{4\pi} d\Omega' \int_0^\infty dE' \int_{E_g}^{E_{g-1}} dE \; \chi(E) \nu\sigma_f (r, E') \psi(r, E', \Omega')\\ @@ -5191,6 +5202,7 @@ class Chi(MGXS): E') \psi(r, E', \Omega') \\ \chi_g &= \frac{\langle \nu\sigma_{f,g' \rightarrow g} \phi \rangle} {\langle \nu\sigma_f \phi \rangle} + \end{aligned} This class can also be used to gather a prompt-chi (which only includes the outgoing energy spectrum of prompt neutrons). This is accomplished by diff --git a/src/output.cpp b/src/output.cpp index bbc2588ac..dff39c15f 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -75,7 +75,7 @@ void title() " Copyright | 2011-2019 MIT and OpenMC contributors\n" << " License | http://openmc.readthedocs.io/en/latest/license.html\n" << " Version | " << VERSION_MAJOR << '.' << VERSION_MINOR << '.' - << VERSION_RELEASE << '\n'; + << VERSION_RELEASE << (VERSION_DEV ? "-dev" : "") << '\n'; #ifdef GIT_SHA1 std::cout << " Git SHA1 | " << GIT_SHA1 << '\n'; #endif