FESTIM logo
MIT PSFC

FESTIM in 2026: what the code can do for tritium modelling

 

Rémi Delaporte-Mathurin, on behalf of the whole FESTIM community

50th Tritium Focus Group  |  Aiken, SC  |  October 2026

Diffuse, trap, react, release

PlasmaGrain boundariesimplantationnmulti-occupancyisotope exchangetrappinghydrideCover gasHenry's lawAdvectionn + ⁶Li → T + ⁴HeLiquid breederorPebble bed + purge gas (He + H₂)PermeationBarrier coatingCoolantGas enclosure, P(t)Pumpcconcentration jumps at every interface

One framework for solids, liquids, gases and the interfaces between them

Zoom in: the wall at atomic scale

DissociationSurface diffusionDiffusionTrapping at defectsRecombinationH₂, HD, HT, …DetrappingMulti-occupancy trappingIsotope exchangeImplantationImplantation damageTrapping at impuritiesHydride formationHDTisotope effectsvacancyimpurity

 

mobile hydrogen: diffusion, drift, sources

one equation per species

FESTIM on one slide

  • 1D, 2D, 3D, up to CAD-meshed components
  • Multi-material, multi-isotope, arbitrary species and reactions
  • Traps, surface kinetics, Sieverts / Henry, coupled heat transfer
  • Python API: physics vocabulary, no finite elements exposed
  • Built on FEniCSx, MPI-parallel
  • Open source (Apache 2.0), on conda-forge
import festim as F

model = F.HydrogenTransportProblem()
model.mesh = F.Mesh1D(np.linspace(0, 1e-3, 1001))

steel = F.Material(D_0=1e-7, E_D=0.2)
bulk = F.VolumeSubdomain1D(1, borders=[0, 1e-3], material=steel)
left = F.SurfaceSubdomain1D(1, x=0)
right = F.SurfaceSubdomain1D(2, x=1e-3)
model.subdomains = [bulk, left, right]

T = F.Species("T")
model.species = [T]
model.temperature = 600
model.boundary_conditions = [
    F.FixedConcentrationBC(left, value=1e20, species=T),
    F.FixedConcentrationBC(right, value=0, species=T),
]
model.exports = [F.SurfaceFlux(field=T, surface=right)]

model.initialise()
model.run()

What people use it for

Retention in a divertor monoblock

ARC breeding blanket

Heat exchanger contamination

Tritium permeator probe

TDS spectrum fitting

Hydrogen in a microstructure

Tritium inventory in ITER

ITER Organization

HISP, an open-source workflow built on FESTIM, with the ITER Organization: how much tritium stays in the wall, and how well can we get it out?

plasmafirst walldivertor4 m6 m8 m

■ tungsten   ■ boron co-deposit
HISP wall bins, from the open data

Plasma code outputs
fluxes, heat loads

Wall split in bins
first wall + divertor

1D FESTIM model
per bin, W or B

2-week DT scenarios
baking, GDC, DD

→

→

→

K. Dunnell, A. Lleal, E. A. Hodille, J. Dufour, R. Delaporte-Mathurin, T. Wauters, Hydrogen Inventory Simulations for PFCs (HISP), Nucl. Mater. Energy (2026)

Can you trust it?

Verification

  • 650+ tests on every push and pull request, on two DOLFINx versions
  • ~60 system tests against manufactured and exact solutions, 1D to 3D
  • The TMAP benchmark suite
  • Cross-checked against TMAP8, and independently against MHIMS and mHIT

Validation

  • 8 experimental campaigns: permeation, retention in damaged W, Be co-deposition, H in Ti, EUROFER
  • BABY-1L breeding campaign (MIT, ClLiF): calibrated on 4 runs, predicts 2 withheld runs without recalibration

H. Yang et al., in preparation

Every case is a runnable script. The report rebuilds from them, in public.

festim-vv-report.readthedocs.io

What's new: FESTIM 2

2019 to 2024  |  FESTIM 1

  • Legacy FEniCS
  • One mobile species + traps
  • Change of variable at interfaces
  • Validated against experiments

2024 to today  |  FESTIM 2

  • DOLFINx
  • Arbitrary species: H, D, T, HT, DT...
  • One field per material
  • ~11× faster, MPI-native

Dark, Delaporte-Mathurin, Dokken et al., FESTIM v2.0, Int. J. Hydrogen Energy 220 (2026)

And since this summer, v2.2

Gas enclosures and pumps

NEW

Permeation rigs, double-walled pipes, purged gaps, gloveboxes: a wall feeding a gas volume whose pressure feeds back on the wall.

 

  • Pressure is one extra unknown, solved together with the wall (implicit)
  • F.GasSpecies, F.Enclosure; surfaces exchange via Sieverts or surface reactions
  • A Pump is an opening on the enclosure; a purge stream is the same object
Pumped gap between two membranes

Two membranes with a pumped gap. Pump on: gap pressure 25 Pa → 0, hydrogen reaching the second membrane down ~5 orders of magnitude.

Fast lanes: grain boundaries

NEW

Subdomains can now be one dimension lower than the mesh: grain boundaries, thin films, coolant channels.

Here: hydrogen reaches depth through the boundary network long before the bulk front arrives.

gb = F.VolumeSubdomain(
    id=2,
    material=gb_material,
    dim=1,  # a line in a 2D mesh
    locator=on_boundaries,
)

Much of this built by FESTIM Fellow Ian Wojtowicz (U. Minnesota)

Drift terms

NEW

Hydrogen does not only follow its own gradient: it drifts with temperature, electric potential, stress, and flow.

 

Soret (thermodiffusion)  SoretTerm

Electromigration  ElectromigrationTerm

Stress-assisted diffusion

Advection  AdvectionTerm

Long requested by users. Each drift is one more term in the weak form, so it works with multi-material, manifolds, enclosures and coupled heat transfer.

Hydride formation

IN PROGRESS

v2.2 makes reaction classes generic: hydrogen in solid solution and in hydrides become two species linked by user-defined reactions.

 

Nucleation2003004005000200400time (s)Growth150200250300040008000time (s)Dissolution02040050100time (s)H in solution (wt.ppm)

HNGD model written as custom Reaction classes, no hydride-specific solver. FESTIM runs of the three test cases of Passelaigue et al., J. Nucl. Mater. 544 (2021).

Getters and storage beds are natural next targets.

Work by Chirag Khurana (MIT)  |  festim-dev/FESTIM issue #1123

Multiphysics, multi-code coupling

OpenMC: tritium source

Tritium generation from OpenMC

OpenFOAM: velocity

Velocity field from OpenFOAM

FESTIM: tritium

Tritium concentration from FESTIM

openmc2dolfinx and foam2dolfinx pass fields straight into FESTIM.

ARC breeding blanket: ~243 mg tritium inventory  |  Dark, Sircar, Bae, Dokken & Delaporte-Mathurin, arXiv:2608.05398

And up to the fuel cycle: FESTIM components plug into PathSim system models

Teaser on interfaces

In FESTIM 2,  users now have several modelling options for the interface condition

Equilibrium

continuous chemical potential (Sieverts)

Kinetic

finite-rate exchange across the interface

Surface reaction

recombination, dissociation, isotope exchange

When is equilibrium wrong, and what does it change?

Next talk: James Dark, MIT PSFC

A community project

Map of FESTIM docs users

30+  contributors

30+  institutions

8k  forum views / month

Apache 2.0

NumFOCUS affiliated

Interactive tutorials, nothing to install: festim-workshop.readthedocs.io

conda install -c conda-forge festim  |  Monthly dev meetings, open to all  |  Discourse and Slack

The FESTIM Fellowship

From FESTIM user to FESTIM expert in your organisation, by working on your own project with the development team.

Your project

A real application drives the learning

~10 weeks

At least 25% of your time, alongside your job

Remote or at MIT

Weekly 1:1 time with lead developers

No fees

Supported by your employer

Fellows leave with at least one of:

  • A robust, reproducible simulation of their application
  • A contribution to the FESTIM codebase, or a new V&V case
  • FESTIM integrated into a wider modelling workflow

"Even though it's quite nice to be the FESTIM 2 expert on site (!!!), I would absolutely recommend the programme to my colleagues."

Tez Orr, UKAEA, first FESTIM Fellow

Our 2026 Fellows

Tez Orr  First Fellow

Now UKAEA's resident FESTIM expert, contributing to LIBRTI and STEP

UKAEA

Arpan Sircar  Summer

Tritium uptake in sweep gases from lithium ceramic blankets

ORNL

Ian Wojtowicz  Summer

Hydrogen retention in topologically complex multi-material geometries

University of Minnesota

Emre Yildirim  Summer

Macro2Micro: taking FESTIM through the length scales

Type One Energy

Christopher Soika  Fall

HCPB breeding blanket tritium transport model in FESTIM 2, on site at MIT PSFC

Gauss Fusion

Andrea Di Maio  Fall

Periodic boundary conditions and component-to-system coupling with PathSim

KIT

Want to join the next cohort? Come find James or me this week.

FESTIM logo

Thank you

Questions?

github.com/festim-dev/FESTIM

festim.readthedocs.io  |  festim-workshop.readthedocs.io

Try it in your browser: the workshop tutorials run on Binder, no install

Fellowship: festim.readthedocs.io/en/latest/fellowship.html

Next: James Dark, kinetic interface models with FESTIM

MIT PSFC

TFG 2026 FESTIM

By Remi Delaporte-Mathurin

TFG 2026 FESTIM

FESTIM status update, 50th Tritium Focus Group, Aiken SC, October 2026

  • 53