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.

text
% ========================================
% 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.

text
% ========================================
% 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.22t

Step 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.

text
% ========================================
% 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_pin

Lattice 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.

text
% ========================================
% 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 boundaries

Step 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.

text
% ========================================
% 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  % Hotter

Burnup 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:

text
% ========================================
% 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 only

Step 7: Advanced Analysis Features

Assembly Burnup Calculation

text
% 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_in

Detector and Flux Mapping

text
% 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 gtclad

Production 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

matlab
% 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;