Example: Simple Criticality Calculation

What you'll learn

After the first pin · 9 / 1416 min read
  • Build a 3×3 pin array as a pin universe inside a lat=1 lattice inside a global cell.
  • Close the model with reflective planes, marked by the * prefix, and a zero-importance cell beyond them.
  • Set up the eigenvalue calculation with kcode and spread the starting fission sites over several ksrc points.
  • Say why reflective boundaries push k-effective above 1.0 and flatten the power across all nine pins.
  • Check convergence afterwards: inactive cycles, k-effective uncertainty, and agreement between the three k estimators.

Before you start

Problem Description

This example demonstrates a fundamental criticality calculation using MCNP. We model a 3×3 array of fuel pins with water moderation and reflective boundary conditions. This configuration serves as a concise introduction to criticality calculations while covering neutron multiplication, moderation, and the universe/lattice geometry system.

Physically the model is nine 4.5% UO₂ pins in Zircaloy cladding at standard pressurized water reactor dimensions, moderated by light water carrying the S(α,β) thermal scattering treatment, with reflecting boundaries on every face. Those boundaries are what make the 3×3 array stand in for an infinite one: a neutron leaving the outside of the array re-enters as though a tenth pin were there, so the nine pins behave like the interior of a lattice rather than like a small isolated cluster.

On the calculation side, kcode drives the eigenvalue solve, several ksrc points seed the initial fission distribution across the array rather than at one spot, mt supplies the bound-hydrogen scattering data, and the geometry is built from nested universes rather than nine separately written pins. That last choice is the reason this deck scales: going from 3×3 to 17×17 is an edit to the lattice extent, not 280 new cell cards.

Complete Input File

Hover over any highlighted section in the input to see what it does and why each parameter was chosen. On mobile, tap to show the explanation.

mcnp — hover sections to explore
3x3 Fuel Pin Array Criticality Problem
c Cell Cards
c Universe 1: fuel pin
10 1 -10.4 -1 u=1 imp:n=1 $ UO2 fuel
11 0 1 -2 u=1 imp:n=1 $ Gap (void)
12 2 -6.56 2 -3 u=1 imp:n=1 $ Zircaloy clad
13 3 -0.998 3 u=1 imp:n=1 $ Water moderator (fills to lattice boundary)
c Universe 2: 3x3 array
20 0 20 -21 -22 23 lat=1 u=2 imp:n=1
fill=-1:1 -1:1 0:0
1 1 1
1 1 1
1 1 1
c Global problem cell with reflective boundary
30 0 30 -31 -32 33 fill=2 imp:n=1
31 0 -30:31:32:-33 imp:n=0
c Surface Cards
1 cz 0.4096
2 cz 0.4178
3 cz 0.4750
c Lattice pitch (pin pitch = 1.26 cm → 0.63 cm half pitch)
20 px -0.630
21 px 0.630
22 py 0.630
23 py -0.630
c Problem boundary (array span = 3 × 1.26 cm)
*30 px -1.89
*31 px 1.89
*32 py 1.89
*33 py -1.89
c Data Cards
m1 92235.70c 0.045
92238.70c 0.95
8016.70c 2.0
m2 40090.70c 0.5145 $ Natural Zr, atom fractions
40091.70c 0.1122
40092.70c 0.1715
40094.70c 0.1738
40096.70c 0.0280
m3 1001.70c 2.0
8016.70c 1.0
mt3 lwtr.10t
c Criticality settings
kcode 5000 1.0 50 300
ksrc 0 0 0 1.26 0 0 -1.26 0 0 0 1.26 0 0 -1.26 0
c Output control
prdmp j 50 1 1

Annotated MCNP Input

Hover over any highlighted section in the code to see a detailed explanation. Tap on mobile.

Pin-cell geometry (u=1)
3×3 lattice (u=2)
Global cells
Fuel pin surfaces
Lattice pitch planes
Reflective boundaries
UO₂ fuel material
Zircaloy cladding
Water + thermal scattering
KCODE settings
KSRC initial source
Output control

Expected Results and Analysis

k-effective should come out above 1.0, and it is worth being precise about why. Nothing leaks out of a reflected model, so what this calculation reports is k wearing the label k-effective, and the fuel is fresh with no fission products holding it down. A real core built from this lattice would sit lower — leakage and burnable poisons and control absorption all subtract — which is exactly the point of the comparison.

Inside the cell the thermal flux peaks in the water and dips in the pellet, because the fuel absorbs thermal neutrons faster than they can diffuse inward. Across the nine pins, though, the power should be nearly flat: reflecting boundaries mean no pin is closer to an edge than any other, so any tilt you see in the output points to a fission source that has not converged rather than to physics.

For a geometry this small and symmetric, fifty inactive cycles is enough to converge the source, and 250 active cycles of 5,000 neutrons should bring the uncertainty on k below 0.001. The convergence check available here is the agreement of the three k estimators — collision, absorption, and track length — which should fall within their combined uncertainty. The ten statistical tests do not apply, because they operate on a tally and this deck has none.

Model Extensions and Studies

Because the geometry is built from universes, the cheapest experiments are changes to the lattice rather than to the cells. Growing the array to 5×5, 7×7, or a full 17×17 shows how little k moves once the boundaries are reflecting — the answer is already the infinite-lattice answer at 3×3, which is itself the lesson. Changing the pin pitch is more interesting, because it changes the moderation ratio and traces the curve that explains why a pressurized water reactor is built under-moderated. Replacing selected positions with burnable absorber rods or guide tubes turns the flat power distribution into a shaped one.

The physics studies each need one more thing added to the deck. Temperature coefficients need both Doppler-broadened fuel data and a colder or hotter moderator, since the two effects have opposite magnitudes and the same sign. Void analysis reduces the water density. Boron worth adds a soluble absorber to the moderator material and measures the reactivity difference. And the burn card turns the single eigenvalue into a history, which is where the model stops being a five-minute run.

Do not report a number from this deck as a keff. Reflecting boundaries give k, and the difference is the entire leakage term — the thing that decides whether a real core of a given size is critical. The cross sections are room-temperature .70c data as well, which describes a cold core rather than an operating one, so any conclusion about power operation needs temperature-dependent libraries first.

The material compositions here are simplified enough for an eigenvalue but not for detailed reaction rates, and the deck carries no tallies at all. Spatial flux and power distributions need f4 and f7 added — and since the pins live in a lattice, those tallies need sd volumes, because MCNP cannot compute the volume of a cell that exists in nine places.

Card semantics on this page follow MCNP6.3.1 Theory & User Manual (LA-UR-24-24602 Rev. 1), §5.8.10 KCODE: Criticality Source and §2.8.3 Recommendations for Making a Good Criticality Calculation.

Full reference list on the attribution page.

Check yourself

  • Nest a pin universe inside a lat=1 lattice inside a global cell?
  • Close the model with *-prefixed reflective planes and a zero-importance cell beyond them?
  • Set up kcode, and spread ksrc points through the fissile region rather than onto a surface?
  • Say why reflective boundaries raise k-effective and flatten the power across the pins?
  • Check inactive cycles, k-effective uncertainty, and agreement between the three estimators?