SERPENT Guide
Tutorial: Fuel Assembly
Overview
This tutorial demonstrates building a realistic 17×17 PWR fuel assembly in Serpent. We'll create a heterogeneous model with fuel pins, guide tubes, instrument tubes, and water gaps, showing how to use lattice structures and multiple materials effectively.
Advanced Modeling: This tutorial builds on the pin cell example, introducing lattice structures, multiple pin types, spatial burnup tracking, and assembly-level neutronics. Perfect preparation for full-core modeling.
Assembly Specifications
17×17 PWR Assembly:
- 264 fuel pins with 4.5% enrichment
- 24 guide tubes for control rod insertion
- 1 central instrument tube
- Pin pitch: 1.26 cm
- Assembly pitch: 21.504 cm
- Active fuel height: 365.76 cm
- Water gaps between assemblies
Step 1: Pin Type Definitions
We start by defining different pin types as separate universes. This modular approach makes it easy to create the assembly lattice and modify individual components.
% ========================================
% 17x17 PWR Assembly - Pin Universes
% ========================================
% Standard fuel pin universe
pin fuel_pin
fuel 0.4096 % Fuel pellet radius
gap 0.4178 % He gap outer radius
clad 0.4750 % Clad outer radius
water % Moderator
% Guide tube universe (for control rods)
pin guide_tube
water 0.5715 % Inner radius (larger than fuel)
gtclad 0.6350 % Guide tube wall
water % Moderator outside
% Instrument tube universe (central position)
pin instr_tube
water 0.5590 % Inner radius
itclad 0.6050 % Instrument tube wall
water % Moderator outside
% Water hole universe (corner positions)
pin water_hole
water % Just water (no solid structures)Universe Concept: Each pin type is defined as a separate universe that can be placed at lattice positions. This approach allows easy modification of pin designs and simplifies the assembly layout definition.
Step 2: Material Definitions
Define all materials used in the assembly, including different structural materials for guide tubes and instrument tubes.
% ========================================
% 17x17 PWR Assembly - Materials
% ========================================
% UO2 fuel with 4.5% enrichment
mat fuel -10.4 tmp 900 vol 164250.0
92235.09c 0.045 % 4.5 at% U-235
92238.09c 0.955 % 95.5 at% U-238
8016.09c 2.0 % Stoichiometric oxygen (2 atoms per UO2)
% Helium gap
mat gap -0.0018 tmp 600
2004.09c -1.0 % Helium-4
% Zircaloy-4 cladding
mat clad -6.56 tmp 600
40090.09c -0.9845 % Zirconium
50120.09c -0.0155 % Tin
% Guide tube material (Zircaloy-4)
mat gtclad -6.56 tmp 574
40090.09c -0.9845 % Same as fuel clad
50120.09c -0.0155 % but cooler temperature
% Instrument tube (Stainless steel 304)
mat itclad -8.0 tmp 574
26000.09c -0.6898 % Iron
24000.09c -0.1900 % Chromium
28000.09c -0.0950 % Nickel
14000.09c -0.0100 % Silicon
25055.09c -0.0200 % Manganese
% Light water moderator
mat water -0.714 tmp 574 moder lwtr 1001
1001.09c -0.111894 % Hydrogen
8016.09c -0.888106 % Oxygen
% Borated water (1000 ppm boron)
mat borated_water -0.7149 tmp 574 moder lwtr 1001
1001.09c -0.111671 % Hydrogen (slightly less)
8016.09c -0.885789 % Oxygen
5010.09c -0.000219 % B-10 (natural abundance)
5011.09c -0.000962 % B-11
% Thermal scattering library for H in light water
therm lwtr lwj3.22tStep 3: Assembly Lattice Definition
Create the 17×17 lattice structure showing the arrangement of different pin types. This uses Serpent's lattice functionality to build complex geometries efficiently.
% ========================================
% 17x17 PWR Assembly - Lattice Structure
% ========================================
% Define 17x17 lattice with pin assignments (row 17 at top)
lat assembly 1 0.0 0.0 17 17 1.26
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin instr_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pinLattice Benefits: Using lattice structures dramatically simplifies geometry input while maintaining full geometric detail. Changes to pin designs automatically propagate throughout the assembly.
Step 4: Assembly Container and Boundaries
Define the assembly container and boundary conditions. We'll use reflective boundaries to simulate an infinite array of identical assemblies.
% ========================================
% 17x17 PWR Assembly - Container Geometry
% ========================================
% Assembly boundaries
surf assy_left px -10.752 % Half assembly pitch
surf assy_right px 10.752 % Half assembly pitch
surf assy_front py -10.752 % Half assembly pitch
surf assy_back py 10.752 % Half assembly pitch
surf assy_bottom pz -182.88 % Half active height
surf assy_top pz 182.88 % Half active height
% Container cells
cell 100 0 fill assembly +assy_left -assy_right +assy_front -assy_back +assy_bottom -assy_top
cell 200 0 outside
% Boundary conditions
set bc 2 % Reflective boundariesStep 5: Spatial Burnup Zones
For realistic assembly analysis, we need spatial resolution for burnup calculations. This example shows how to divide the assembly into zones for detailed burnup tracking.
% ========================================
% Spatial Burnup Resolution
% ========================================
% Modify fuel material definition for burnup zones
% Central region (high flux)
mat fuel_center -10.4 tmp 900 vol 54750.0 burn 1
92235.09c -0.045
92238.09c -0.955
8016.09c -2.0
% Middle region
mat fuel_middle -10.4 tmp 900 vol 54750.0 burn 2
92235.09c -0.045
92238.09c -0.955
8016.09c -2.0
% Outer region (lower flux)
mat fuel_outer -10.4 tmp 900 vol 54750.0 burn 3
92235.09c -0.045
92238.09c -0.955
8016.09c -2.0
% Redefine fuel pin with burnup zones
pin fuel_pin_detailed
fuel_center 0.2048 % Inner fuel zone
fuel_middle 0.3096 % Middle fuel zone
fuel_outer 0.4096 % Outer fuel zone
gap 0.4178 % He gap
clad 0.4750 % Cladding
water % Moderator
% Alternative: Axial burnup zones
mat fuel_bottom -10.4 tmp 850 vol 54750.0 burn 4 % Cooler
mat fuel_top -10.4 tmp 950 vol 54750.0 burn 5 % HotterBurnup Strategy: Divide fuel into zones based on expected flux gradients. More zones provide better spatial resolution but increase computational cost. 3-5 zones per assembly are typical for production calculations.
Step 6: Complete Assembly Input
Here's the complete assembly input file with all components integrated:
% ========================================
% 17x17 PWR Assembly Model
% Complete Serpent Input File
% ========================================
set title "17x17 PWR Assembly with Control Rod Guide Tubes"
% ========================================
% MATERIALS
% ========================================
mat fuel -10.4 tmp 900 burn 1
92235.09c -0.045
92238.09c -0.955
8016.09c -2.0
mat gap -0.0018 tmp 600
2004.09c -1.0
mat clad -6.56 tmp 600
40090.09c -0.9845
50120.09c -0.0155
mat gtclad -6.56 tmp 574
40090.09c -0.9845
50120.09c -0.0155
mat itclad -8.0 tmp 574
26000.09c -0.6898
24000.09c -0.1900
28000.09c -0.0950
14000.09c -0.0100
25055.09c -0.0200
mat water -0.714 tmp 574 moder lwtr 1001
1001.09c -0.111894
8016.09c -0.888106
therm lwtr lwj3.22t
% ========================================
% PIN DEFINITIONS
% ========================================
pin fuel_pin
fuel 0.4096
gap 0.4178
clad 0.4750
water
pin guide_tube
water 0.5715
gtclad 0.6350
water
pin instr_tube
water 0.5590
itclad 0.6050
water
% ========================================
% ASSEMBLY LATTICE
% ========================================
lat assembly 1 0.0 0.0 17 17 1.26
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin instr_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin guide_tube fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin guide_tube fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin fuel_pin
% ========================================
% ASSEMBLY GEOMETRY
% ========================================
surf assy_left px -10.752
surf assy_right px 10.752
surf assy_front py -10.752
surf assy_back py 10.752
surf assy_bottom pz -182.88
surf assy_top pz 182.88
cell 100 0 fill assembly +assy_left -assy_right +assy_front -assy_back +assy_bottom -assy_top
cell 200 0 outside
% ========================================
% CALCULATION SETTINGS
% ========================================
set bc 2 % Reflective boundaries
set pop 30000 400 100 % Particles, active cycles, inactive cycles
set tms 1 % Temperature-dependent XS
set doppler 2 % Doppler broadening
set ures 1 % Unresolved resonances
set entropy 1
set entropymat fuel
% ========================================
% OUTPUT CONTROL
% ========================================
set his 1 % History output
set pcc 0 % Memory optimization
set power 17.3 % Assembly power (MW)
set powdens 1 fuel % Power in fuel onlyStep 7: Advanced Analysis Features
Assembly Burnup Calculation
% Add burnup calculation to assembly model
set power 17.3 % Assembly thermal power (MW)
set powdens 1 fuel % Normalize power to fuel
% PWR burnup schedule (days)
dep daystep
10 20 30 50 100 200 365 365 90 % Cycle 1
10 20 30 50 100 200 365 365 90 % Cycle 2
10 20 30 50 100 200 365 365 90 % Cycle 3
% Write nuclide inventories to file
set inventory inventory.out
% Optional: define named branches elsewhere and activate them here
% dep branch boron_off
% dep branch control_rods_inDetector and Flux Mapping
% Pin-by-pin power distribution
det pin_power
dm fuel
dx -10.752 10.752 17 % 17 x-bins (one per pin row)
dy -10.752 10.752 17 % 17 y-bins (one per pin column)
% Energy spectrum in different regions
det thermal_flux
dm fuel
de 1E-11 0.625 % Thermal energy range
det fast_flux
dm fuel
de 0.625 20.0 % Fast energy range
% Surface currents at assembly boundaries
det left_current ds assy_left 1
det right_current ds assy_right 1
det front_current ds assy_front 1
det back_current ds assy_back 1
% Flux tally in guide tubes (useful for rod worth studies)
det guide_flux
dm gtcladProduction Tip: For full-core calculations, generate few-group cross sections from assembly calculations using set microxs andset b1 for diffusion code coupling.
Step 8: Results and Validation
Expected Assembly Results
Typical 17×17 PWR Assembly:
- k-infinity (BOL): ~1.28-1.32
- Assembly power: 15-20 MW thermal
- Peak/average power: ~1.15-1.25
- Thermal utilization: ~0.88-0.92
- Fast leakage: ~0.02-0.05
MATLAB Post-Processing
% Load assembly results
res = importdata('assembly_res.m');
det = importdata('assembly_det0.m');
% Pin power distribution analysis
pin_power = reshape(det.DET_RESULT(:,11), 17, 17);
% Plot power map
figure;
imagesc(pin_power);
colorbar;
title('Pin Power Distribution');
xlabel('Pin Column');
ylabel('Pin Row');
% Calculate power peaking factors
max_power = max(pin_power(:));
avg_power = mean(pin_power(:));
peaking_factor = max_power / avg_power;
fprintf('Peak/Average Power Ratio: %.3f\n', peaking_factor);
% Assembly k-infinity evolution during burnup
burnup = res.BURNUP;
kinf = res.INF_KEFF(:,1);
figure;
plot(burnup, kinf);
xlabel('Burnup (MWd/kgU)');
ylabel('k-infinity');
title('Assembly Reactivity vs Burnup');
grid on;