MCNP Guide
MCNP Example: PWR Fuel Assembly Model
What you'll learn
- Assemble a 17×17 assembly from three universes: fuel pin, guide tube, and the lattice that arranges them.
- Write a seventeen-row
fillmap at the right pitch, and check that every row has exactly 17 entries. - Score both a cell flux with
f4and a pin-by-pin map withfmesh. - Predict the result before running it: leakage from a bare assembly, flux spikes at the water-filled guide tubes, and fourfold symmetry in the mesh map.
- Isolate the leakage by rerunning with the four outer surfaces made reflective.
Before you start
Problem Description
This example models a 17×17 PWR fuel assembly using the MCNP universe and lattice system. Three universes are defined — fuel pin, guide tube, and lattice — then placed in a global assembly container with a thin water reflector.
The dimensions follow from the pin. A pin pitch of 1.26 cm repeated seventeen times gives an assembly 21.42 cm across, and a water layer 0.79 cm thick surrounds it on all four sides — half of the 1.58 cm gap that separates neighboring assemblies in a real core. Twenty-five of the 289 lattice positions hold water-filled guide tubes rather than fuel. Two tallies come out: an f4 cell flux for the assembly as a whole, and an fmesh map fine enough to resolve the flux pin by pin.
Complete Input File
Hover over any highlighted block to see how each part of the assembly model works.
c PWR 17x17 Fuel Assembly Modelc ---- Universe 1: Fuel pin ----1 1 -10.4 -1 imp:n=1 u=1 $ UO2 fuel2 2 -0.0001 1 -2 imp:n=1 u=1 $ Helium gap3 3 -6.56 2 -3 imp:n=1 u=1 $ Zircaloy-4 cladding4 4 -0.998 3 imp:n=1 u=1 $ Water (fills to lattice boundary)c ---- Universe 2: Guide tube (water column) ----11 4 -0.998 -5 imp:n=1 u=212 4 -0.998 5 imp:n=1 u=2 $ Water (fills to lattice boundary)c ---- Universe 3: 17×17 assembly lattice ----21 0 -21 22 -23 24 lat=1 u=3 imp:n=1fill=-8:8 -8:8 0:01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 11 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 11 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1c ---- Assembly container and water reflector ----31 0 -31 32 -33 34 41 -42 fill=3 imp:n=132 4 -0.998 (31:-32:33:-34)-35 36 -37 38 41 -42 imp:n=1 $ Water reflector33 0 35:-36:37:-38:-41:42 imp:n=0 $ Outside voidc ---- Surface Cards ----c Fuel pin surfaces1 cz 0.40962 cz 0.41783 cz 0.4750c Guide tube surface5 cz 0.6020c Lattice pitch (P = 1.26 cm -> 0.63 cm half pitch)21 px 0.63022 px -0.63023 py 0.63024 py -0.630c Assembly boundary (17 x 1.26 = 21.42 cm pitch)31 px 10.7132 px -10.7133 py 10.7134 py -10.71c Reflector boundary35 px 11.5036 px -11.5037 py 11.5038 py -11.50c Axial slice, reflecting (makes the model 2-D and cell volumes finite)*41 pz 0.0*42 pz 1.0c ---- Data Cards ----m1 92235.70c 0.045 $ 4.5% enriched UO2 (atom fractions)92238.70c 0.9558016.70c 2.0m2 2004.70c 1.0 $ Helium fill gasm3 40090.70c 0.5145 $ Zirconium, natural (atom fractions)40091.70c 0.112240092.70c 0.171540094.70c 0.173840096.70c 0.0280m4 1001.70c 2.0 $ Light water8016.70c 1.0mt4 lwtr.10t $ S(a,b) thermal scatteringc Criticality settingskcode 10000 1.0 50 250ksrc 0 0 0.5 2 2 0.5 -2 -2 0.5 2 -2 0.5 -2 2 0.5c Talliesf4:n 1 $ Track-length flux, summed over all 264 fuel pinse4 1e-9 1e-8 1e-7 1e-6 1e-5 1e-4 1e-3 1e-20.1 1 2 3 4 5 6 7 8 9 10sd4 139.15 $ 264 x pi x 0.4096^2 x 1 cm (see notes)fmesh14:n geom=xyzorigin=-10.71 -10.71 0imesh=10.71 jmesh=10.71 kmesh=1iints=17 jints=17 kints=1
Annotated MCNP Input
Hover over any highlighted section to see a detailed explanation. Tap on mobile.
Lattices fail differently from ordinary geometry, and the failures are quiet. Count the entries in every fill row before running: seventeen rows of seventeen, and a row with sixteen entries does not produce an error message but does shift every element after it. Repeated structures also need sd on any tally that divides by volume, because MCNP cannot compute the volume of a cell that exists in 289 places.
Spread the ksrc points across the assembly rather than putting them all at the center, since a fission source that starts in one corner of a lattice takes many cycles to spread out, and the inactive cycles are what pay for that. Then use the symmetry of the fmesh map as your check: the guide tube pattern is fourfold symmetric, so the flux map must be too. An asymmetric map means either a typo in the fill or a source that has not converged, and it is the most sensitive detector of both.
What to Expect
Read the geometry before you read the answer. This is one bare assembly — 21.42 cm across, 0.79 cm of water on each face, vacuum beyond, and reflecting top and bottom so it behaves as an infinitely tall column. It is not a reactor and it will not come out near critical.
Expect k-effective somewhere around 0.5 to 0.7, and expect leakage rather than the fuel to be what puts it there. The migration length in a pressurized water reactor lattice is about 7 cm — from M² = D1/Σr1 + D2/Σa2 ≈ 48 + 4 cm² — so this assembly is only about three migration lengths across in each of two directions. A one-group estimate with k∞ ≈ 1.4 gives B²M² ≈ 1.5 and lands near 0.55. Treat that as an order-of-magnitude check rather than a prediction: diffusion theory is being pushed well outside its comfort zone on a system this small, and the various two-group and Fermi-age forms disagree with each other by more than 0.2.
The single most instructive thing you can do with this deck is run it twice. Put an asterisk on surfaces 35 through 38 to make them reflective and run it again. The gap between the two numbers is the leakage, and it is much larger than most people guess. What the second run gives you is not quite the pin cell's k∞, though. Reflecting at the outside of the water layer models an infinite array of assemblies separated by 1.58 cm water gaps, which is better moderated than a bare lattice, so expect a few percent above the 1.3 to 1.5 quoted on the pin-cell page.
The 0.79 cm water layer deserves a moment on its own. It is roughly two thermal mean free paths, so it does reflect — but nowhere near saturation, which for water takes something closer to 7 cm. It buys perhaps a centimeter of reflector savings against a 10 cm shortfall, which is why the bare assembly stays so far below critical.
Power tilts down toward the edge of the assembly, not up. Peripheral pins in a real core sit next to more water and more fuel; here they sit a centimeter from a vacuum boundary, so the mesh map should peak in the middle and fall away at the periphery. That is the opposite of the edge-peaking seen in a reflected core, and noticing which one you have is a good test of whether you understand the model in front of you.
Superimposed on that tilt, the flux spikes locally at the 25 water-filled guide tube positions, which moderate well and absorb little. Remember that the mesh scores flux rather than power: the guide tubes will be the brightest cells on the map and they produce no power at all. An fmesh with no fm card is a flux map, and an fm multiplier applied to a mesh uses one material everywhere, so it cannot convert this map into a power map either.
Model Extensions
The cheapest additions reuse the universe machinery already in the deck. A burnable poison rod is a fourth universe that replaces water in selected guide tubes; multiple enrichment zones need only more fuel universes and a different fill map; and the center position, which currently holds water, carries a steel instrument thimble in the real assembly. None of these change the structure of the input — they add universes and edit the map. Axial detail is a bigger step, because replacing the reflecting top and bottom planes with real nozzles and a plenum means the model is no longer a uniform column and the flux develops an axial shape worth tallying.
Going to a full core adds a level rather than a universe: a lattice of assemblies, each of which is itself a lattice of pins, with different enrichments assigned per assembly universe. Two things bite at that scale. Structural components like grid spacers and nozzles start to matter for the neutron balance, and tallies in the peripheral assemblies converge slowly because few source particles reach them — which is where weight windows earn their keep. The variance reduction page covers that case.
Card semantics on this page follow MCNP6.3.1 Theory & User Manual (LA-UR-24-24602 Rev. 1), §5.5.5 Repeated Structures and §5.9.15 SD: Segment Divisor.
Full reference list on the attribution page.
Check yourself
- Assemble a 17×17 lattice from three universes: fuel pin, guide tube, and the lattice itself?
- Write a seventeen-row
fillmap and check that every row has exactly 17 entries? - Score both an
f4cell flux and anfmeshpin-by-pin map? - Predict leakage, guide-tube flux spikes, and fourfold symmetry before you run it?
- Isolate the leakage by rerunning with the four outer surfaces made reflective?