Remi Delaporte-Mathurin
User inputs
Heat transfer model
Hydrogen transport model
FESTIM
Outputs
2019
We need a new tool!
Problem: predict T retention and permeation
W
Cu
CuCrZr
Particle and heat fluxes
Convection
14 mm
2022
License Apache 2.0
✅ More transparency
✅ More collaborations
✅ More flexibility
2019
We need a numerical tool
Problem: predict T retention and permeation
W
Cu
CuCrZr
Particle and heat fluxes
Convection
14 mm
2022
License Apache 2.0
✅ More transparency
✅ More collaborations
✅ More flexibility
Oct 2023
2019
We need a numerical tool
Problem: predict T retention and permeation
W
Cu
CuCrZr
Particle and heat fluxes
Convection
14 mm
2022
Oct 2023
April 2024
Non-profit organisation supporting open source software for science and research
More info at numfocus.org
2019
We need a numerical tool
Problem: predict T retention and permeation
W
Cu
CuCrZr
Particle and heat fluxes
Convection
14 mm
2022
Oct 2023
April 2024
Non-profit organisation supporting open source software for science and research
More info at numfocus.org
Jonathan Dufour
CEA, France
+ many other contributors
fork
fork
pull request
FESTIM
Jane
FESTIM
John
FESTIM
festim-dev
pull request
✅
❌
The code is missing a feature?
Just add it!
Found a bug?
Report it and we'll fix it!
Documentation
and installation instructions
conda install -c conda-forge fenics
pip install festim
Two lines to install!
import festim as F
import numpy as np
my_model = F.Simulation()
my_model.mesh = F.MeshFromVertices(
vertices=np.linspace(0, 1e-6, num=1001)
)
my_model.materials = F.Material(id=1, D_0=1.9e-7, E_D=0.2)
my_model.T = 500 # K
my_model.boundary_conditions = [
F.DirichletBC(
surfaces=[1, 2],
value=1e15, # H/m3/s
field=0
)
]
my_model.settings = F.Settings(
absolute_tolerance=1e10,
relative_tolerance=1e-10,
final_time=100 # s
)
my_model.dt = F.Stepsize(0.1) # s
my_model.initialise()
my_model.run()
The FESTIM-workshop offers dozens of tutorials
Available at:
github.com/festim-dev/FESTIM-workshop
Runs in your browser without installing anything!
UKAEA Aug 2024
To date, 4 user workshops have been organised, covering:
UKAEA Aug 2024
~60 attendees in total!
Installation instructions
User guide
festim-vv-report.readthedocs.io
14 verification cases (4 in progress)
6 validation cases (5 in progress)
governing equations
exact solutions
parameters (sources, BCs, ICs)
FESTIM
computed solutions
solve
run
compare
⚠️sometimes very complex!
governing equations
manufactured solutions
source terms, BCs and ICs
FESTIM
computed solutions
compare
Effective-diffusion through a slab
2D multi-material
Exact
Computed concentration
Transparent
Reproducible
Version control
8 private companies
13 universities
18 research organisations
📈5 years of development
📑14+ publications
🗣️110+ citations
🧑💻20+ contributors
🏛️26+ institutions using the code
🧑💻70+ Slack members
⭐90+ stars on GitHub
🧑💻4 workshops
Evolution of GitHub stars
Open source
SOFE
New reference paper
Kyoto Fusioneering
UKAEA
IPP
No barrier
with barrier
Permeation barrier
Substrate
High H pressure
Low H pressure
Permeation flux
James Dark et al 2021 Nucl. Fusion 61 116076
K. Dunnell (MIT)
Velocity
Temperature
Tritium concentration
C. Weaver (MIT)
① neutrons are generated
② tritium is created from nuclear reactions
③ tritium is transported in the salt
④ tritium is released into the gas phase
⑤ tritium is collected and counted
Paper is progress...
New in v1.3!
V&V available at
github.com/KulaginVladimir/FESTIM-SurfaceKinetics-Validation
Text
Benedikt & Day, (2017) Fusion Engineering and Design
I want multi-isotopes😠
tRaPs aT iNtErFaCeS! 🫠
I only trust multi-level occupancy trapping 🥴
What about the diffusion of intersitials?! 🤔
Traps can diffuse! 😠
2022
2019
Start of development
open source
2023
v1.0 release
2024
Parallel scaling issues
Technical debt
Legacy FEniCS deprecated
Current interface condition does not scale well
Many hard coded foundations
Implementation of new features is more complex
Bugs not being fixed
Can't take advantage of new features
FEniCSx
Multi-isotope transport
New mesh types
Validation on PFCs
Chemical reactions
External physics integration
Anisotropic diffusion
Multilevel trapping
Massively parallel
Chemical reactions
Multi-species transport
Finite element engine upgrade
Graphical user interface?
see Zibrov and Schmid, NME, 2024
for complete description
Pull request under review #878
FESTIM 1
with dolfinx
1 mesh for the whole domain
1 mesh for the whole domain
Submesh 1
Submesh 2
VectorFunctionSpace \(V\) (eg. 3 components)
Function \(u\) (eg. 3 components)
VectorFunctionSpace \(V_1\)
\(V_2\)
Function \(u_1\) (eg. 2 comps.)
\(u_2\) (eg. 3 comps.)
1 function for the whole domain
1 function per subdomain
same underlying equations!
Can be represented by festim.Reaction
my_model.species = [
mobile_H,
mobile_D,
trapped_H,
trapped_D,
]
my_model.reactions = [
F.Reaction(
k_0=k_0,
E_k=0.39,
p_0=1e13,
E_p=1.2,
reactant1=mobile_H,
reactant2=empty_trap,
product=trapped_H,
volume=my_subdomain,
),
F.Reaction(
k_0=k_0,
E_k=0.39,
p_0=1e13,
E_p=1.2,
reactant1=mobile_D,
reactant2=empty_trap,
product=trapped_D,
volume=my_subdomain,
),
F.Reaction(
k_0=k_0,
E_k=0.1,
p_0=k_0,
E_p=0.1,
reactant1=mobile_H,
reactant2=trapped_D,
product=[mobile_D, trapped_H],
volume=my_subdomain,
),
]
Usual trapping reactions
Swapping reaction
4 species are defined
\( \mathrm{H} \) = mobile H
\( \mathrm{D} \) = mobile D
\( [\mathrm{H}_x\mathrm{D}_y] \) = \(x\) H and \(y\) D in trap
When is FESTIM 2 released?
Anonymous FESTIM dev
We don't know. But it'll be sooner if you help us!
Anonymous FESTIM user
🚀FESTIM benefits from the community
🚀The community benefits from FESTIM
What FESTIM needs to thrive?
More external contributions!
💵Funding: no project currently supports FESTIM dev
🧑💻Code: only 3 core developers (only one permanent)