| MCNP | |
|---|---|
| Developer | LANL |
| Stable release | MCNP6.3.1 / September 18, 2025 [1] |
| Written in | Fortran 90,C++ |
| Operating system | Cross-platform |
| Type | Computational physics |
| License | Restricted distribution (U.S. export controlled) |
| Website | mcnp |
Monte Carlo N-Particle Transport (MCNP) [2] is a general-purpose, continuous-energy, generalized-geometry, time-dependent, Monte Carlo radiation transport code designed to track many particle types over broad ranges of energies and is developed by Los Alamos National Laboratory. Specific areas of application include, but are not limited to, radiation protection and dosimetry, radiation shielding, radiography, medical physics, nuclear criticality safety, detector design and analysis, nuclear oil well logging, accelerator target design, fission and fusion reactor design, decontamination and decommissioning. The code treats an arbitrary three-dimensional configuration of materials in geometric cells bounded by first- and second-degree surfaces and fourth-degree elliptical tori.
Point-wise cross section data are typically used, although group-wise data also are available. For neutrons, all reactions given in a particular cross-section evaluation (such as the evaluated nuclear data files from ENDF) are accounted for. Thermal neutrons are described by both the free gas and S(α,β) models. For photons, the code accounts for incoherent and coherent scattering, the possibility of fluorescent emission after photoelectric absorption, absorption in pair production with local emission of annihilation radiation, and bremsstrahlung. A continuous-slowing-down model is used for electron transport that includes positrons, k x-rays, and bremsstrahlung but does not include external or self-induced fields.
Features of MCNP include a general source, criticality source, and surface source; geometry and output tally plotters; a collection of variance reduction techniques; a flexible tally structure; and an extensive collection of cross-section data.
MCNP tracks the results of its simulation through "tallies". When applied to a surface, a cell or a region of space in general they can track the following quantities: surface current and flux, volume flux (track length), point or ring detectors, particle heating, fission heating, pulse height tally for energy or charge deposition, mesh tallies, and radiography tallies.
MCNP is commonly used in situations where direct experimental measurement is impractical, cost-prohibitive, or impossible. Its applications include the analysis and design of radiation shielding, nuclear systems, detectors, and radiation sources. The code is distributed with evaluated nuclear data libraries and supports verification and validation activities through benchmark comparisons and regression testing. MCNP's predictive capabilities are considered to be highly reliable by the international community, based on its performance with verification and validation test suites, comparisons to its predecessor codes, automated testing and large amount of work that has been done using it in the past 60 years.
The software is subject to US nuclear technology export controls [3]
The Monte Carlo method for radiation particle transport has its origins at LANL dates back to 1946. [4] The creators of these methods were Stanislaw Ulam, John von Neumann, Robert Richtmyer, and Nicholas Metropolis. [5] Monte Carlo for radiation transport was conceived by Stanislaw Ulam in 1946 while playing Solitaire while recovering from an illness. "After spending a lot of time trying to estimate success by combinatorial calculations, I wondered whether a more practical method...might be to lay it out say one hundred times and simply observe and count the number of successful plays." In 1947, John von Neumann sent a letter to Robert Richtmyer proposing the use of a statistical method to solve neutron diffusion and multiplication problems in fission devices. [6] His letter contained an 81-step pseudo code and was the first formulation of a Monte Carlo computation for an electronic computing machine. Von Neumann's assumptions were: time-dependent, continuous-energy, spherical but radially-varying, one fissionable material, isotropic scattering and fission production, and fission multiplicities of 2, 3, or 4. He suggested 100 neutrons each to be run for 100 collisions and estimated the computational time to be five hours on ENIAC. [7] Richtmyer proposed suggestions to allow for multiple fissionable materials, no fission spectrum energy dependence, single neutron multiplicity, and running the computation for computer time and not for the number of collisions. The code was finalized in December 1947. The first calculations were run in April/May 1948 on ENIAC.
While waiting for ENIAC to be physically relocated, Enrico Fermi invented a mechanical device called FERMIAC [8] to trace neutron movements through fissionable materials by the Monte Carlo method. Monte Carlo methods for particle transport have been driving computational developments since the beginning of modern computers; this continues today.
In the 1950s and 1960s, these new methods were organized into a series of special-purpose Monte Carlo codes, including MCS, MCN, MCP, and MCG. These codes were able to transport neutrons and photons for specialized LANL applications. In 1977, these separate codes were combined to create the first generalized Monte Carlo radiation particle transport code, MCNP. [9] [10] The first release of the MCNP code was version 3 and was released in 1983. It is distributed by the Radiation Safety Information Computational Center in Oak Ridge, TN.
Monte Carlo N-Particle eXtended (MCNPX) was developed at Los Alamos National Laboratory to extend MCNP capabilities to a broader range of particle types, including nucleons and heavy ions over wide energy ranges. MCNPX and MCNP5 were historically developed as separate code branches to address different application needs.
MCNP6 represents the merger of MCNP5 and MCNPX into a unified code base, combining their respective capabilities into a single, maintained software package.
The accuracy of Monte Carlo radiation transport simulations depends on multiple factors, including the physical models employed, the quality of the underlying nuclear and atomic data, problem geometry, and the statistical convergence of calculated tallies. As a result, the performance of MCNP is typically assessed through benchmarking and verification and validation (V&V) studies. [11]
Monte Carlo transport codes, including MCNP, are commonly evaluated by comparing simulation results against experimental data and well-characterized benchmark problems. Independent reviews and validation efforts reported in the technical literature examine MCNP’s performance in contexts such as criticality safety, radiation shielding, detector response, reactor physics, medical physics, and space radiation environments.
As part of its development and release process, MCNP is accompanied by formal verification and validation testing. [11] These activities include regression testing and standardized test problems designed to assess numerical consistency and implementation correctness across successive code versions. Verification activities also include comparisons against analytic or semi-analytic solutions for simplified transport problems, which are used to confirm the correctness of numerical implementations and algorithmic behavior in limiting cases. For nuclear criticality safety and related applications, MCNP calculations are exercised against collections of benchmark models derived from the International Criticality Safety Benchmark Evaluation Project (ICSBEP) Handbook, which provides experimentally based reference values for quantities such as k effective. [12]
Benchmarking and validation studies typically assess agreement with experimental measurements for specific observables and configurations and may include inter-code comparisons to explore differences in physical models, data libraries, and numerical methods. Such studies are intended to characterize code behavior within defined application domains and energy regimes, rather than to establish universal performance hierarchies among Monte Carlo transport codes.