Cross Sections & Nuclear Data

Understanding Nuclear Data in Serpent

Nuclear data libraries contain the fundamental physics information that drives Monte Carlo transport calculations. In Serpent, these libraries provide cross sections, angular distributions, energy spectra, and other nuclear reaction data needed to simulate neutron interactions.

Key Concept: Serpent automatically handles nuclear data library selection and temperature interpolation, making it much simpler to use than traditional Monte Carlo codes while maintaining the same level of physics accuracy.

Nuclear Data Libraries

Serpent supports several evaluated nuclear data libraries, with ENDF/B-VII.1 and ENDF/B-VIII.0 being the most commonly used for reactor physics applications:

Common Library Versions:

  • ENDF/B-VII.1: Widely validated, excellent for thermal reactors
  • ENDF/B-VIII.0: Latest evaluation with improved resonance data
  • JEFF-3.3: European evaluation, good for fast reactor applications
  • JENDL-4.0: Japanese evaluation with detailed fission data

Setting Up Nuclear Data

Serpent requires a nuclear data directory structure and proper environment setup. The code uses the SERPENT_DATA environment variable to locate nuclear data libraries.

Environment Configuration

bash
# Set nuclear data path (add to ~/.bashrc or equivalent)
export SERPENT_DATA="/path/to/serpent/data"

# Typical directory structure:
$SERPENT_DATA/
├── endfb71/          # ENDF/B-VII.1 libraries
│   ├── ace/          # Continuous energy data
│   ├── decay/        # Decay data
│   └── nfy/          # Fission yield data
├── endfb8/           # ENDF/B-VIII.0 libraries  
├── jeff33/           # JEFF-3.3 libraries
└── sab/              # Thermal scattering data
    ├── h-h2o.sab     # Light water
    ├── h-zrh.sab     # Zirconium hydride
    └── c-graphite.sab # Graphite

Note: Nuclear data libraries are typically several GB in size. Ensure you have adequate disk space and download them from the official Serpent website or your institution's nuclear data repository.

Specifying Data Libraries

In most cases, Serpent automatically selects appropriate nuclear data. You can specify particular libraries using the set acelib command:

text
% Specify nuclear data library
set acelib "/path/to/serpent/data/endfb71/ace/sss_endfb7u.xsdata"

% Alternative: Use specific library for temperature
set acelib "/path/to/serpent/data/endfb8/ace/sss_endfb8.xsdata"

% Thermal scattering library path
set sablib "/path/to/serpent/data/sab/"

% Decay and fission yield data
set declib "/path/to/serpent/data/endfb71/decay/"
set nfylib "/path/to/serpent/data/endfb71/nfy/"

Temperature-Dependent Cross Sections

Nuclear cross sections depend strongly on temperature due to Doppler broadening effects. Serpent handles temperature interpolation automatically when you specify material temperatures.

Material Temperature Specification

text
% Fuel at operating temperature
mat fuel -10.4 tmp 900  % 900 K (627°C)
92235.09c -0.031
92238.09c -0.969
8016.09c  -2.0

% Cladding at intermediate temperature  
mat clad -6.56 tmp 600  % 600 K (327°C)
40090.09c -0.9845
50120.09c -0.0155

% Moderator at operating temperature
mat water -0.714 tmp 574  % 574 K (301°C)
1001.09c  -0.111894
8016.09c  -0.888106

Best Practice: Always specify realistic operating temperatures. For PWR fuel, use 900-1200K; for cladding, use 600-700K; for water, use 570-590K. Serpent will automatically interpolate cross sections between available temperature points.

Temperature Treatment Options

text
% Enable on-the-fly Doppler broadening
set doppler 2  % Method 2: TMS (Recommended)

% Alternative methods:
% set doppler 0  % No Doppler broadening
% set doppler 1  % Constant cross section extrapolation  
% set doppler 3  % DBRC (Detailed Balance with Resonance Correction)

% Temperature tolerance
set tmplim 10.0  % Accept ±10K temperature difference

Thermal Scattering Data

For thermal neutron interactions with bound nuclei (like hydrogen in water), thermal scattering laws S(α,β) are essential. Serpent includes built-in thermal scattering libraries for common moderator materials.

Common Thermal Scattering Libraries

text
% Light water (most common)
mat water -1.0 tmp 574 moder lwtr 1001
1001.09c -0.111894
8016.09c -0.888106

% Heavy water
mat d2o -1.11 tmp 574 moder dwtr 1002
1002.09c -0.201133
8016.09c -0.798867

% Graphite moderator
mat graphite -2.25 tmp 900 moder grph 6000
6000.09c -1.0

% Polyethylene (neutron shielding)
mat poly -0.92 tmp 300 moder polyl 1001
1001.09c -0.143721
6000.09c -0.856279

% Thermal scattering library definitions
therm lwtr  lwj3.22t   % Light water S(α,β)
therm dwtr  dwj3.22t   % Heavy water S(α,β)
therm grph  grj3.22t   % Graphite S(α,β)
therm polyl polj3.22t  % H in polyethylene S(α,β)

Important: Always include thermal scattering data for hydrogen-containing materials in thermal systems. Omitting S(α,β) data can lead to significant errors in neutron thermalization and spectrum calculations.

Available Thermal Scattering Tables

Standard S(α,β) Libraries:

  • lwtr: Light water (H₂O) - most important
  • dwtr: Heavy water (D₂O)
  • grph: Graphite moderator
  • poly: Polyethylene (H in CH₂)
  • ben: Benzene (C₆H₆)
  • ZrH: Zirconium hydride
  • BeO: Beryllium oxide
  • Be: Metallic beryllium

Advanced Nuclear Data Options

Probability Tables for Unresolved Resonances

For accurate calculations in the unresolved resonance region (especially important in fast reactors), Serpent can use probability tables:

text
% Enable probability tables (default in Serpent 2)
set ures 1

% Probability table energy limits (optional)
set ureslim 1E-6 3E-1  % 1 eV to 300 keV

% Specific nuclides with probability tables
% (Serpent automatically uses PT data when available)

Memory and Performance Optimization

text
% Memory optimization for large calculations
set memfrac 0.9        % Use 90% of available memory
set sfbuf 100          % Sort buffer size (MB)

% Performance settings
set pcc 0              % Disable probability table cache for memory
set maxpop 100000      % Maximum population per cycle

% Shared memory (for parallel runs)
set shbuf 100000000    % Shared buffer size

Performance Tip: For large models, monitor memory usage and adjust buffer sizes accordingly. Serpent's memory requirements scale with problem size and the number of temperature points in your nuclear data.

Troubleshooting Nuclear Data Issues

Common Problems and Solutions

Error: "Nuclear data library not found"

  • Check SERPENT_DATA environment variable
  • Verify nuclear data library paths
  • Ensure cross section files have correct permissions

Error: "Temperature out of range"

  • Check material temperature specifications
  • Use set tmplim to increase tolerance
  • Verify available temperature points in nuclear data

Warning: "S(α,β) data not found"

  • Add thermal scattering libraries to material definitions
  • Check thermal scattering library path
  • Verify nuclide identifiers match S(α,β) data