Remi Delaporte-Mathurin, MIT, USA
James Dark, CEA, France
Thomas Fuerst, INL, USA
FESTIM & HTM contributors
AMPMI 2024, Helsinki, Finland
Example: McNabb & Foster model
We need to solve this
We need to know this
Arrhenius law
Two examples: HTM and FESTIM
Lack of transparency
Duplication of work
Slow development
Reproducibility
Solution: open-source
Difficult to share
From
2020
review
Original paper
Review #1
Review #2
(citing #1)
13.1
11.7
Even trusted organisations like ITER can make mistakes
Conversion errors
Automated unit conversion
Wrong references
Bibtex integration
Error propagation from other reviews
Only data from original papers
Fitting errors
Automated fitting
Open-source
Permanent errors in paper
Obsolete reviews
Lack of transparency
import h_transport_materials as htm
# filter only tungsten and H
diffusivities = htm.diffusivities.filter(
material="tungsten", isotope="h")
htm.plotting.plot(diffusivities)
import matplotlib.pyplot as plt
plt.yscale("log")
plt.title("Tungsten diffusivity")
Filter by:
Properties
45+ materials
160 references
438 properties
Current version v0.16
import h_transport_materials as htm
from h_transport_materials import Diffusivity, Solubility
u = htm.ureg
causey_diffusivity = Diffusivity(
D_0=0.93e-4 * u.m**2 * u.s**-1,
E_D=2.8 * u.eV * u.particle**-1,
range=(900 * u.K, 1473 * u.K),
source="causey_interaction_1989",
isotope="H",
)
atsumi_diffusivity = Diffusivity(
D_0=1.69 * u.cm**2 * u.s**-1,
E_D=251 * u.kJ * u.mol**-1,
range=(500 * u.degC, 900 * u.degC),
isotope="D",
source="atsumi_absorption_1988",
note="Equation 5 of Atsumi's paper",
)
atsumi_solubility = Solubility(
S_0=1.9e-1 * u.mol * u.m**-3 * u.Pa**-0.5,
E_S=-19.2 * u.kJ * u.mol**-1,
range=(850 * u.degC, 1050 * u.degC),
source="atsumi_absorption_1988",
isotope="H",
)
properties = [causey_diffusivity, atsumi_diffusivity, atsumi_solubility]
for prop in properties:
prop.material = htm.CARBON
htm.database += properties
Example HTM source file
import h_transport_materials as htm
htm.diffusivities
.filter(material="tungsten")
.to_latex_table()
Use HTM to generate LaTeX tables
HTM
MOOSE
COMSOL
Experimental analysis
FESTIM
Material properties
User inputs
Heat transfer model
Hydrogen transport model
FESTIM
Outputs
User inputs
Heat transfer model
Hydrogen transport model
FESTIM
Outputs
FEniCS
McNabb & Foster
Multi-occupancy trapping
Multi-isotope transport
Pick & Sonnenberg
2022
2019
Start of development
Open-source
Oct 2023
v1.0 release
2024
conda install -c conda-forge fenics
pip install festim
Easy 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()
📈5 years of development
📑13+ publications
🗣️110+ citations
🧑💻16+ contributors
🏛️25+ institutions using the code
🧑💻30+ Slack members
⭐80+ stars on GitHub
3 workshops
Evolution of GitHub stars
Open source
SOFE workshop
New reference paper
8 private companies
10 universities
16 research organisations
James Dark et al 2021 Nucl. Fusion 61 116076
courtesy of K. Dunnell (MIT)
courtesy of K. Dunnell (MIT)
Velocity
Temperature
Tritium concentration
Benedikt & Day, (2017) Fusion Engineering and Design
see Zibrov and Schmid, NME, 2024
for complete description
PAV Tritium Extraction System
TDS
PFC
Breeding blankets
No barrier
Barrier
Permeation barriers
Surface kinetics analysis
AMPMI website: "The meeting fosters global collaboration for fusion R&D in the public and private sectors"
FESTIM community
Evolution of HTM properties
fork
fork
pull request
FESTIM
Jane
FESTIM
John
FESTIM
festim-dev
pull request
✅
❌
FESTIM (available at festim.readthedocs.io)
HTM (available at h-transport-materials.readthedocs.io)
❌Open-source is not:
⭐What open-source needs for fusion: