MCNP Guide
Universes and Lattices
Efficient modeling of repeated structures
Why Use Universes?
Nuclear systems contain many identical components. Instead of defining hundreds of fuel pins individually, universes let you create one template and reuse it everywhere.
Key Benefits
Efficiency
Define once, use everywhere
Consistency
All instances identical
Maintenance
Change template, update all
Memory
Reduced input file size
Creating Your First Universe
A universe is a complete geometry template. Let's build a simple fuel pin universe step by step.
Step 1: Define Surfaces
c Fuel pin surfaces
1 cz 0.4095 $ Fuel radius
2 cz 0.4178 $ Gap radius
3 cz 0.4750 $ Clad radiusStep 2: Create Universe Cells
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 $ Helium gap
12 2 -6.56 2 -3 u=1 imp:n=1 $ Zircaloy clad
13 3 -0.714 3 u=1 imp:n=1 $ Water (infinite)The `u=1` parameter assigns all cells to universe 1. Cell 13 extends to infinity, ensuring the universe fills all space.
Step 3: Use the Universe
c Place fuel pin in assembly
20 0 10 -11 12 -13 fill=1 imp:n=1 $ Pin location
c Boundary surfaces
10 px -0.63 $ Pin boundaries
11 px 0.63 $ (1.26 cm pitch)
12 py -0.63
13 py 0.63The `fill=1` parameter places universe 1 inside the cell boundaries.
Multiple Universe Types
Real assemblies need different components. Create separate universes for each type, then mix them as needed.
c Universe 1: Fuel pin (already defined)
c Universe 2: Guide tube
20 2 -6.56 -4 u=2 imp:n=1 $ Steel tube
21 3 -0.714 4 u=2 imp:n=1 $ Water inside
c Universe 3: Water hole
30 3 -0.714 u=3 imp:n=1 $ Pure water
c Additional surface
4 cz 0.612 $ Guide tube radiusEach universe serves a specific purpose: fuel pins for power, guide tubes for control rods, water holes for neutron moderation.
Rectangular Lattices
For regular arrays, lattices automatically place universes in a grid pattern. This is perfect for fuel assemblies.
Simple 3×3 Lattice
c 3x3 lattice universe
100 0 20 -21 22 -23 lat=1 u=10 imp:n=1
fill=0:2 0:2 0:0 $ 3x3 grid (indices 0-2)
1 1 1 $ Row 0: fuel-fuel-fuel
1 2 1 $ Row 1: fuel-guide-fuel
1 1 1 $ Row 2: fuel-fuel-fuel
c Lattice boundaries
20 px -1.89 $ Left edge (-3 × 0.63)
21 px 1.89 $ Right edge
22 py -1.89 $ Bottom edge
23 py 1.89 $ Top edgeThe `lat=1` creates a rectangular lattice. Numbers in the fill data specify which universe goes in each grid position.
Using the Lattice
c Place 3x3 assembly in reactor
200 0 30 -31 32 -33 fill=10 imp:n=1 $ Assembly location
c Assembly boundaries
30 px -2.5 $ Assembly box
31 px 2.5
32 py -2.5
33 py 2.5Realistic PWR Assembly
Let's create a simplified 5×5 PWR assembly with proper guide tube placement.
c 5x5 PWR assembly
300 0 40 -41 42 -43 lat=1 u=20 imp:n=1
fill=0:4 0:4 0:0 $ 5x5 grid
1 1 1 1 1 $ Row 0: all fuel
1 1 2 1 1 $ Row 1: guide tube in center
1 2 3 2 1 $ Row 2: guide-instrument-guide
1 1 2 1 1 $ Row 3: guide tube in center
1 1 1 1 1 $ Row 4: all fuel
c Assembly boundaries (5 × 1.26 cm pitch)
40 px -3.15 $ Half-width
41 px 3.15
42 py -3.15
43 py 3.15This pattern places guide tubes at strategic locations for control rod insertion and includes an instrument tube in the center.
Positioning and Transformations
Universes can be positioned anywhere using translation vectors or transformation cards.
Translation Vectors
c Place assemblies at different positions
400 0 -50 51 -52 53 fill=20 (0 0 0) imp:n=1 $ Assembly 1
401 0 -54 55 -56 57 fill=20 (10 0 0) imp:n=1 $ Assembly 2
402 0 -58 59 -60 61 fill=20 (0 10 0) imp:n=1 $ Assembly 3
403 0 -62 63 -64 65 fill=20 (10 10 0) imp:n=1 $ Assembly 4Translation vectors in parentheses specify the (x,y,z) offset for each universe placement.
Best Practices
Universe Design
- • Make outermost cell infinite
- • Use consistent surface numbering
- • Keep universes simple and focused
- • Document universe purpose clearly
Lattice Design
- • Check lattice boundaries carefully
- • Verify fill pattern matches intent
- • Use consistent indexing (0-based)
- • Test with simple cases first
Common Mistakes
- • Forgetting to make outermost universe cell infinite
- • Mismatching lattice boundaries with fill dimensions
- • Using wrong universe numbers in fill data
- • Overlapping or undefined geometry regions
Quick Start Guide
Follow these steps to create your first universe-based model:
- Design your component: Identify what geometry you want to repeat
- Create surfaces: Define all boundaries needed for the component
- Build universe cells: Add u=N parameter to assign cells to universe N
- Make infinite boundary: Ensure outermost cell extends to infinity
- Use the universe: Place it with fill=N in other cells
- Test and verify: Check geometry with visualization tools