English

PyNMC: An Open-Source Framework for Neutron Multiplicity Counting Simulation Coupling OpenMC, FREYA, and ALPHANSO

Instrumentation and Detectors 2026-05-19 v1 Computational Physics

Abstract

Neutron multiplicity counting (NMC) underpins plutonium assay in nuclear safeguards, arms control, and disarmament verification, but existing simulation tools are essentially limited to MCNPX-PoliMi [1] (export-controlled, MCNP license required) and ONMS [2] (open-source but built on Geant4 with no scripting API); other codes (RMC, MCNP-PTA) are institute-internal. We present PyNMC, an open-source, Python-native NMC simulation framework that couples OpenMC for transport with FREYA for event-by-event correlated prompt-neutron emission and ALPHANSO for native (α\alpha, n)-source estimates, together with collision-level time-tagged event recording and a Python shift-register post-processor cross-validated against ONMS. The framework is validated against the ESARDA Neutron Multiplicity Benchmark on bare 252^{252}Cf (c2-10, c2-100), the low-multiplication Pu metal case c3s (M = 1.12 from an independent k-eigenvalue calculation; ESARDA spec M = 1.08), and a 10 g PuO2 sample with an (α\alpha, n)-source term (c4s); an internal stress-test extension to a 100\approx 100 g Pu metal sample at M = 1.29 is reported alongside but lies beyond the ESARDA participant range. For c4s, ALPHANSO gives α\alpha = 0.78 with modern cross-section data; the reported benchmark comparison rescales the (α\alpha,n) rate to the ESARDA value α\alpha = 0.853. Simulated rates agree with point-model predictions for all cases, and with the published ESARDA participant-code scatter where participant results exist. The framework is shipped as a Docker container under the MIT license and is openly available on GitHub at github.com/cfichtlscherer/nmc.

Cite

@article{arxiv.2605.17440,
  title  = {PyNMC: An Open-Source Framework for Neutron Multiplicity Counting Simulation Coupling OpenMC, FREYA, and ALPHANSO},
  author = {Christopher Fichtlscherer},
  journal= {arXiv preprint arXiv:2605.17440},
  year   = {2026}
}