FRED

May 1, 2026 · View on GitHub

Fast reactor fuel behaviour code

Open-source Fortran code uses the SUNDIALS library for numerical modelling of base irradiation of a fast reactor fuel pin, accounting for fuel and clad heat transfer, fuel and clad stress-strain conditions, fuel and clad thermal expansion and creep, fuel swelling and fission gas release, evolution of inner gas pressure and composition as well as evolution of fuel-clad gap conductance. Algebraic and ordinary differential equations are solved by finite-difference method on a structured r-z cylindrical mesh using the SUNDIALS library.

As the input, FRED takes time-dependent axial profile of power density assuming flat power distribution over the radius, time-dependent axial profile of clad outer temperature, as-manufactured fuel and clad dimensions, mesh specification, as well as several constants for material properties and flags to activate specific models.

The typical dataset of the calculational results includes time-dependent radial and axial maps of fuel and clad deformations, stresses, and temperatures; axial profiles of fuel-clad gap conductance, contact pressure, burnup, fuel and clad dimensions.

Available materials:

  • Fuel: MOX.
  • Clad: AIM1 stainless steel, T91 stainless steel.
  • Inner gas: helium, argon

Installation

1. Compile the Fortran code

Prerequisites: gfortran (≥ 9). SUNDIALS v7 is vendored in the repository under SUNDIALS/INSTDIR/ — no separate installation is required.

  1. Open Makefile and set the gfortran path at the top to match your system:
    F90    = /path/to/gfortran
    
  2. Compile:
    make
    
    This produces the executable FRED1.5.1.x in the repository root.

2. Install the Python post-processing package (pyfred)

pyfred provides utilities for reading FRED output files and generating standard plots. It is recommended to install it in a dedicated virtual environment. Popular options:

# conda / mamba
conda create -n fred-dev python=3.11
conda activate fred-dev

# or venv (stdlib)
python -m venv .venv
source .venv/bin/activate

Then install pyfred from the repository root (where pyproject.toml lives):

pip install -e .

The -e flag installs in editable mode so any local changes to pyfred/ take effect immediately. To also install optional development dependencies (pytest):

pip install -e ".[dev]"

Installation on Merlin7 (PSI HPC)

Merlin7 uses the Environment Modules system. Load the GNU toolchain before compiling:

module load PrgEnv-gnu

Then compile as usual:

make

For pyfred, create a conda environment (conda is available on Merlin7 via the anaconda module or a user install):

module load Anaconda3          # or your local conda initialisation
conda create -n fred-dev python=3.11
conda activate fred-dev
pip install -e .

Getting started — ESFR pin example

The examples/ESFR_pin/ directory contains a complete, realistic workflow for a European Sodium Fast Reactor (ESFR) fuel pin, split into three sequential cases.
Run them in this order:

StepDirectoryDescription
1examples/ESFR_pin/base_irradiation/Base irradiation up to 600 days
2examples/ESFR_pin/ULOF_transient/Unprotected Loss Of Flow (ULOF) transient restarted from the irradiated pin
3examples/ESFR_pin/UTOP_transient/Unprotected Transient Over Power (UTOP) transient restarted from the irradiated pin

Each case directory contains:

  • fred.inp — FRED input deck
  • run.sh — shell script that runs FRED and then generates post-processing plots
  • README.md — detailed description of boundary conditions and reference results
  • ref_results/ — reference plots for comparison

To run a case:

cd examples/ESFR_pin/base_irradiation   # or ULOF_transient / UTOP_transient
bash run.sh

run.sh will:

  1. Delete any previous outfrd* and rstfrd* files.
  2. Execute FRED1.5.1.x in the case directory.
  3. Call plot_results.py (via pyfred) to produce comparison plots in ref_results/.

Refer to the README.md inside each case directory for a full description of the input boundary conditions and expected output.