All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project uses Semantic Versioning as a guide.
- Add piece-wise linear spatial distribution for source definition, from @ilhamv
- Add overriding option N_active, from @ilhamv
- Add MC/DC-VVP project documentation with verification case narratives, published results, and VVP result-generation and publication steps in the release checklist, from @ilhamv
- Update GPU transport support for the current MC/DC data model and Harmonize runtime, including GPU-compatible state access, particle-bank operations, array accessors, and torus intersections, from @braxtoncuneo.
- Show previously published documentation versions in the documentation version switcher, from @ilhamv
0.15.2 - 2026-08-15
- Anticipate empty census-based tallies in batch runs for correct tally recombination, from @ilhamv
- Prevent independent runs with different problem sizes from sharing mutable problem-dependent Numba types, and preserve Python-managed
__pycache__directories during startup, from @ilhamv
- Add
rebuild_numba_support.pyand the-r/--rebuilddeveloper option for regenerating Numba support (mcdc_get, mcdc_set, numba_types.py) after object model changes, from @ilhamv
- Generate shared Numba support independently of simulation preparation and create problem-dependent dtypes locally through pure factories, from @ilhamv
- Organize example documentation under the User Guide and contribution documentation under the Developer Guide, from @ilhamv
0.15.1 - 2026-08-12
- Prevent unbounded dependency resolution from selecting incompatible releases that break MC/DC by adding explicit upper bounds for all build, runtime, documentation, and development dependencies, from @ilhamv
- Add a dedicated CARRE project page, from @ilhamv
- Add the release policy and checklist, from @ilhamv
- Add the one-sentence-per-line convention for documentation source, from @ilhamv
- Hide flyout in Read the Docs, from @ilhamv
0.15.0 - 2026-08-11
- Add
NeutronMultigroupDataand hybrid neutron multigroup transport with material-local physical energy grids and energy-representation policies, together with theMaterial.multigroup()convenience interface, from @ilhamv - Add manually triggered unit and serial regression compatibility testing for Python 3.11, 3.12, and 3.14 while retaining Python 3.13 for automatic testing, from @ilhamv
- Add PEP 561-compatible inline type information and strict Pyright checks for the public Python API, from @ilhamv
- Breaking: Unify native and neutron multigroup materials under one non-polymorphic
Materialand runtime layout, replacingMaterialMGand the separate native and multigroup material structures, from @ilhamv - Group transport techniques under
simulation.technique, from @ilhamv - Breaking: Encapsulate MC/DC model building and execution within an explicit
mcdc.Simulationinstance, replacing the global simulation state and interface from @ilhamv - Modernize and reorganize the documentation around distinct user, API reference, theory, project, and developer paths; adopt the PyData Sphinx Theme; and expand the architecture and extension guidance from @ilhamv
- Move model-specific finalization into simulation compilation and reserve runtime preparation for framework-level packing and execution setup from @ilhamv
- Move regression tests from the custom
run.pyharness to pytest-based collection and reporting from @massimolarsen - Breaking: Require Python 3.11 or newer and designate Python 3.13 as the primary automatic test version, from @ilhamv
- Run Black and Pyright with Python 3.14 while keeping Black output compatible with every supported Python version, from @ilhamv
- Adopt a three-month seasonal cycle for minor releases while continuing to publish patch releases as needed, from @ilhamv
- Remove the legacy
install.shinstallation helper, from @ilhamv
0.14.2 - 2026-07-15
- Fix 2D-vector setter writes nothing (- instead of =) from @steps-re
- Fix delayed neutrons are never sampled (transport/physics/neutron/native.py, fission()) from @steps-re
- Fix delayed emission time uses β instead of λ (transport/physics/neutron/native.py, fission())from @steps-re
- Fix swapped transverse-basis branches (transport/distribution.py, sample_direction()) from @steps-re
- Fix divide-by-zero for a -z reference (transport/distribution.py, sample_white_direction()) from @steps-re
- Fix tally polar_reference corrupted (object_/tally.py) from @steps-re
- Add layered documentation philosophy
- Tally spatial filter and scoring upgrades from @massimolarsen and @ilhamv
- Add partial current scores
- Add cell-filtered (and surface-cell-combo) support for current scores
- Improved checks and error messages in tally-building user interface
- Unit test upgrades
- Combined
object_andtransportunit test for more efficient fixture reuse from @massimolarsen - Replace bare assert np.isclose with proper np.testing.assert_allclose from @steps-re
- Combined
0.14.1 - 2026-07-04
- Documentation and packaging metadata fixes
0.14.0 - 2026-07-04
- CHANGELOG.md
- Data library generator upgrade from @melekderman
- Electron data based on EPRDATA14 ACE-format
- Improved organization for multi-particle data
- Breaking: Redesigned the tabulated data infrastructure from @ilhamv and @melekderman.
- Added support for histogram, linear, semilog-x, semilog-y, and log-log interpolation
- Added optional auxiliary arrays for helper data (e.g., CDFs in distributions)
- Expanded use throughout distributions and reactions
- Unit test upgrade from @massimolarsen
- Migrated from partial use of pytest to a fully pytest-based test suite
- Documentation updates
mcdc.Sourcedocumentation from @ilhamv
- Minor README and pull request template updates
- GitHub workflow for automatically marking stale issues
- Update CITATION.cff
- Automatic version updates on README, Sphinx docs, and pyproject. Version checker on CITATION
- Docker compatibility issue from @melekderman
0.13.0 - 2026-06-12
This release marks the final development phase under CEMeNT and the beginning of development under CARRE. A significant refactor was completed to improve ease of use, maintainability, and extensibility, restructuring the codebase to support future features and capabilities.
Major refactoring included:
- implementation of
code_factory, which generates Numba- and GPU-compatible data structures from Python class objects; and - reorganization of functions into a module-based architecture with well-defined interfaces.
GPU support is currently being updated to match the refactored architecture. The pre-refactor implementation, available in the cement branch, retains full GPU support. Complete GPU support for the refactored codebase (including both AMD and NVIDIA GPUs) is targeted for v0.15.0 or v0.16.0.
code_factoryfrom @ilhamv- ACEtk-based data library generator from @ilhamv
- Multi-particle transport and physics model interfaces from @ilhamv
- ACE-based continuous-energy neutron physics from @ilhamv
- Element data library for electron transport from @melekderman
- Single-scattering electron transport from @melekderman
- Axis-aligned torus surfaces from @Talen-Ayers
- General cylinder surface from @melekderman
- Axis-aligned cone surfaces from @melekderman
- Docker support from @melekderman
- Pull request and issue templates from @nglaser3
- Unit tests for distribution sampling from @massimolarsen
- Redesigned weight window implementation from @nglaser3
- Numba-optimized visualizer from @gunnarrl
- Documentation updates from @melekderman
The following features were temporarily removed during the refactor:
- Domain decomposition
- iQMC
- UQ
- Compressed sensing
- Branchless collision
- Derivative Source Method
- Initial Condition bank
The pre-refactor implementation remains available in the cement branch as a reference for these features. They will be reintroduced incrementally in future releases.
- Multi-table distribution table selection sampling from @melekderman