FESTIM v2.0: Upgraded framework for multi-species hydrogen transport
Remi Delaporte-Mathurin, James Dark, Jorgen Dokken, Huihua Yang, Kaelyn Dunnell, Chirag Khurana, Ethan Peterson
FEniCS 2026 | June, 2026 | Paris, France
Nuclear Fusion
+
+
Deuterium
Tritium
+
+
Helium
neutron
Fusion
The tritium issue
The tritium issue
The maths behind FESTIM
Diffusion-reaction

or
At interfaces
Hard
Very hard!
Flux continuity
Conservation of chemical potential
FESTIM Evolution Timeline
2019 - 2024
FESTIM ≤ 1
- Based on Legacy FEniCS
- Initial development and validation
- Established core H-transport models
2024 - Today
FESTIM 2
- Migration to DOLFINx
- New multi-species paradigm
- Improved performance & scalability
- Modern FEniCS ecosystem integration
FESTIM2 in a nutshell github.com/festim-dev/festim
User friendly - Intuitive, Python API easy to use
Apache 2.0 license - Suitable for academic and commercial
Easy install - conda install -c conda-forge festim
Online tutorials - Dozens of tutorials
Online documentation - Auto-generated
8,000+ forum views/month - Public, searchable Q&A
27+ institutions - Adopted by universities, labs and industry
30+ contributors - Open to new developers and users
Monthly dev meetings - Community-driven roadmap
130+ Slack users - Active developer and user support
Built on FEniCSx - Proven FEM backend, 1.5M+ downloads
5 team members at MIT - more around the world
On GitHub - Transparent, version-controlled development
NumFOCUS affiliation - Backed by a sustainability non-profit
CI/CD workflows - Rigorous testing and streamlined releases
Performance
FEniCSx - JIT to fast C++ rapid assembly
High-performance solvers - PETSc back-end
Built for HPC - Native MPI, runs on 1000’s of cores
Tuned control - Custom meshes, solvers, finite elements
Fast I/O - Parallel mesh loading, low memory footprint
Usability
Sustainability
Community






Examples
The FESTIM team at MIT and beyond
University of Cambridge
Simula Research Laboratory

FESTIM is used worldwide

Docs users
Fusion machine developers
Research organisations

Average person in this room
- knows maths
- knows how to code
Us

- can't read greek
- Not FEM experts
import festim as F
import numpy as np
my_model = F.HydrogenTransportProblem()
my_model.mesh = F.Mesh1D(vertices=np.linspace(0, 1, num=1001))
mat = F.Material(D_0=1, E_D=0.0)
volume_subdomain = F.VolumeSubdomain1D(id=1, borders=[0, 1], material=mat)
boundary_left = F.SurfaceSubdomain1D(id=1, x=0)
boundary_right = F.SurfaceSubdomain1D(id=2, x=1)
my_model.subdomains = [volume_subdomain, boundary_left, boundary_right]
H = F.Species("H")
my_model.species = [H]
my_model.temperature = 300
my_model.boundary_conditions = [
F.FixedConcentrationBC(subdomain=boundary_left, value=1, species=H),
F.FixedConcentrationBC(subdomain=boundary_right, value=0, species=H),
]
my_model.settings = F.Settings(atol=1e-10, rtol=1e-10, final_time=2)
my_model.settings.stepsize = F.Stepsize(0.05, milestones=[0.05, 0.1, 0.2, 0.5, 1]) # s
profile = F.Profile1DExport(field=H, subdomain=volume_subdomain, times=my_model.settings.stepsize.milestones)
my_model.exports = [
F.VTXSpeciesExport(
field=H,
filename="hydrogen_concentration.bp",
),
profile,
]
my_model.initialise()
my_model.run()Before FEniCSx....
Change of variable method
With FEniCSx
Mixed formulation


With FEniCSx
Mixed formulation


Submesh 1
Submesh 2
With FEniCSx
Mixed formulation


1. Penalty method
2. Nitsche method
Dark, James, Rémi Delaporte-Mathurin, Jørgen S. Dokken, et al. “FESTIM v2.0: Upgraded Framework for Multi-Species Hydrogen Transport and Enhanced Performance.” International Journal of Hydrogen Energy 220 (March 2026): 153987. https://doi.org/10.1016/j.ijhydene.2026.153987.

Please redirect complex maths questions to this guy!
With FEniCSx


Mixed formulation


With FEniCSx
Mixed formulation
- No need for change of variable
- but requires a penalty term
- Provides flexibility on interface physics
- Flux interface conditions
- Multi-species reactions



The mixed formulation is great for multiphysics


velocity, temperature, turbulent viscosity...
tritium production
Heat source
Temperature
Neutronics
Thermo-hydraulics
Tritium transport
Using FESTIM for estimating tritium contamination in a heat exchanger



On the Horizon
Computes gas pressure dynamically.
Development already underway.
Discontinuous Galerkin for diffusion-advection.
Eg. coupling 1D and 2D problems.
Enhanced troubleshooting.
Flux conditions beyond Dirichlet.
New visual companion tool.
More workshops and meetups.
Seamless tool integration.
Thank you for your attention!
Any questions?

FEniCS 2026
By Remi Delaporte-Mathurin
FEniCS 2026
- 321