FESTIM meeting

January 2024

Agenda

  • General updates
  • FESTIM review paper
  • NumFOCUS application
  • Community tools

General updates

PRs merged into main

  • Documentation updates
  • Bug fixes
  • New features
    • Radioactive decay ☢️
    • Initial conditions for Heat transfer problems

General updates

Radioactive decay ☢️

import festim as F

my_model = F.Simulation()

my_model.sources = [
    F.RadioactiveDecay(
        decay_constant=1.78e-9,
        volume=1,
        fields="all",
        ),
    ]

⚠️ not in the fenicsx branch

General updates

PRs merged into fenicsx

  • CI changes
  • New features

General updates

Open PRs

  • Testing
  • Bug fixes
  • New features

General updates

FESTIM review paper

Submitted to International Journal of Hydrogen Energy

Paper repository

100% automated (kinda... 97%)

FESTIM review paper

Code description

  • Maths
  • Features
  • Code development

Gallery (lit. review)

  • TDS
  • 3D monoblocks
  • Breeding blankets

Code comparison

  • TMAP8
  • COMSOL (thanks Gabriele!)

V&V

  • Heat transfer
  • Trapping
  • Multi-material

FESTIM review paper

\(P(t)\)

permeation flux

Enclosure

\frac{dP(t)}{dt} \propto \varphi_\mathrm{permeation}\\ \varphi_\mathrm{permeation} \propto P(t)

→ coupled problem

solved with explicit method

ver-1a case TMAP8

class PressureExport(F.DerivedQuantity):
    def __init__(self, **kwargs):
        super().__init__(field="solute", **kwargs)
        self.title = "enclosure_pressure"
        self.data = []


    def compute(self):
        return float(left_bc.pressure)




class CustomHenrysBC(F.HenrysBC):
    def create_expression(self, T):
        value_BC = F.BoundaryConditionExpression(
            T,
            henrys_law,
            S_0=self.H_0,
            E_S=self.E_H,
            pressure=self.pressure,
        )
        self.expression = value_BC
        self.sub_expressions = [self.pressure]




class CustomSimulation(F.Simulation):
    def iterate(self):
        super().iterate()
        # Update pressure based on flux
        left_flux_val = left_flux.compute()
        old_pressure = float(left_bc.pressure)
        new_pressure = (
            old_pressure
            - (left_flux_val * encl_surf / encl_vol * R * self.T.T(0) / avogadro)
            * self.dt.value
        )
        left_bc.pressure.assign(new_pressure)

FESTIM review paper

\(P(t)\)

permeation flux

Enclosure

ver-1a case TMAP8

FESTIM review paper

ver-1c case TMAP8

FESTIM review paper

Mobile conc.

Total retention

Temperature

FESTIM review paper

NumFOCUS application

📅 28 Feb

Community

Discourse forum

festim.discourse.group

19 members!

60 stars on GitHub ⭐

FESTIM meeting Jan

By Remi Delaporte-Mathurin

FESTIM meeting Jan

  • 178