1-D Fission Reactor Monte Carlo
A multigroup Monte Carlo neutron transport code for one-dimensional fission-reactor slabs, with a finite-difference diffusion solver for reference solutions, flux and current plots, and convergence studies.
PythonMonte CarloDiffusionNumPyNumbaMatplotlib
Overview
This project solves multigroup neutron transport in a 1-D assembly geometry representing UO₂ and MOX pin lattices. The Monte Carlo solver tracks individual neutron histories generation by generation to estimate k-effective, group fluxes, and currents.
A companion finite-difference diffusion eigenvalue solver provides deterministic reference solutions on the same mesh and cross-section data, useful for verification, mesh refinement studies, and comparing transport versus diffusion behavior.
What it does
Monte Carlo k-eigenvalue
History-based particle tracking with fission-source iteration, track-length flux tallies, and surface current scoring.
Diffusion reference
Paired multigroup finite-difference diffusion solver with power iteration, for verification and mesh studies.
Assembly slab geometry
1-D pin-cell and assembly models with UO₂ and MOX fuels, water, and control-rod materials in 2- and 7-group libraries.
Python + Numba
NumPy-based core with optional Numba kernels for faster tracking, plus Matplotlib analysis scripts.
Monte Carlo method
Each generation follows the classic fission-source iteration loop:
Fission birth & banking
Generations start from a fuel-region guess, then from a fission bank. Each history samples position, energy group (χ), and direction cosine μ.
Free flight & collisions
Path lengths are sampled from Σ_t. Particles either collide in a mesh cell (capture, fission, in-scatter, or down-scatter) or cross mesh and material interfaces.
Boundaries & tallies
Reflective or vacuum faces are applied per energy group. Track-length flux and signed surface currents accumulate every generation.
k-effective estimate
k is the fission-bank size divided by histories per generation. Inactive generations are skipped before averaging active-generation statistics.
Problem setups
Input decks cover 2-group and 7-group cross sections with configurations such as UO₂–UO₂, MOX–MOX, and UO₂–MOX assembly pairs. Mesh density is controlled by meshes-per-fuel-rod and meshes-per-water-rod settings in the deck.
Analysis scripts plot power-normalized fluxes and currents, run mesh and generation convergence studies, collapse 7-group results to 2-group, and explore extra configurations such as reflectors and control rods.
See the code
Full solvers, input decks, and plotting scripts are on GitHub.