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.
- Open
Makefileand set the gfortran path at the top to match your system:F90 = /path/to/gfortran - Compile:
This produces the executablemakeFRED1.5.1.xin 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:
| Step | Directory | Description |
|---|---|---|
| 1 | examples/ESFR_pin/base_irradiation/ | Base irradiation up to 600 days |
| 2 | examples/ESFR_pin/ULOF_transient/ | Unprotected Loss Of Flow (ULOF) transient restarted from the irradiated pin |
| 3 | examples/ESFR_pin/UTOP_transient/ | Unprotected Transient Over Power (UTOP) transient restarted from the irradiated pin |
Each case directory contains:
fred.inp— FRED input deckrun.sh— shell script that runs FRED and then generates post-processing plotsREADME.md— detailed description of boundary conditions and reference resultsref_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:
- Delete any previous
outfrd*andrstfrd*files. - Execute
FRED1.5.1.xin the case directory. - Call
plot_results.py(viapyfred) to produce comparison plots inref_results/.
Refer to the README.md inside each case directory for a full description of the input boundary conditions and expected output.