Nucleide

Tritium Transport

1D tritium diffusion-trapping equations, the McNabb-Foster trap kinetics, surface boundary taxonomy, and the analytic permeation gates.

Nucleide covers activation (ALARA/FISPACT/R2S) but has nothing on tritium inventory and permeation in fusion materials. This page pins the spec-phase equation set for a scoped 1D kernel: Fickian diffusion of a mobile population c_m coupled to N McNabb–Foster trap speciesmcnabb-1963, with caller-supplied temperature and surface laws. The nucleide-tritium kernel implements this equation set; the T1–T2/G1–G9 labels below are the analytic-gate contract its tests replay, mirroring the E1–E4/O-gate pattern of the point-kinetics page. Equations are textbook (Crank; McNabb–Foster; Oriani; Shewmon)crank-1975mcnabb-1963 oriani-1970shewmon-2016 — no simulator source was read to produce them.

Overview

A 1D slab 0 ≤ x ≤ L holds mobile tritium c_m(x, t) plus trapped populations c_{t,j}(x, t) for trap species j = 1..N (vacancies, dislocations, grain boundaries — distinguished only by their rate data). Tritium moves by Fickian diffusion with a caller-supplied diffusivity D(T), parks in traps with temperature-dependent trapping/detrapping rates, and enters or leaves through surface laws (fixed concentration, Sieverts equilibrium, recombination flux, or symmetry). Temperature is a caller-supplied profile T(x, t); there is no heat solve in v1. Series stacks of slabs — multi-layer walls such as W/Cu/CuCrZr first walls — extend the same equations layer-by-layer with linear interface conditions (L1: Sieverts or Henry) or the vented-sink recombination law (L3) and the series-resistance steady state (L2).

Code shape

The crate mirrors the kinetics layout: params.rs (transport and trap data with validating constructors), bc.rs (the surface-law taxonomy), solve.rs (the implicit stepper plus closed-form gate helpers), layers.rs (multi-layer series stacks with Sieverts/Henry interface conditions plus the vented-sink recombination law), and error.rs (a #[non_exhaustive] error enum with the crate Result alias).

Mathematical details

T1 — Mobile balance

∂cm∂t=∂∂x ⁣(D(T) ∂cm∂x)−∑j=1N∂ct,j∂t+S(x,t).(T1)\frac{\partial c_m}{\partial t} = \frac{\partial}{\partial x}\!\left(D(T)\,\frac{\partial c_m}{\partial x}\right) - \sum_{j=1}^{N}\frac{\partial c_{t,j}}{\partial t} + S(x, t). \tag{T1}

S is a caller-supplied volumetric source (mol/m³/s); initial profiles c_m(x, 0) and c_{t,j}(x, 0) are caller-supplied (default zero).

T2 — McNabb–Foster trap kinetics

Per trap species with site density N_j (mol/m³):

∂ct,j∂t=kj(T) cm (Nj−ct,j)−pj(T) ct,j.(T2)\frac{\partial c_{t,j}}{\partial t} = k_j(T)\,c_m\,(N_j - c_{t,j}) - p_j(T)\,c_{t,j}. \tag{T2}

At equilibrium (∂/∂t = 0) each species sits on its Langmuir isotherm

ct,j=NjKjcm1+Kjcm,Kj=kj/pj,(T2-eq)c_{t,j} = \frac{N_j K_j c_m}{1 + K_j c_m}, \qquad K_j = k_j / p_j, \tag{T2-eq}

with occupancy θ_j = K_j c_m / (1 + K_j c_m).

Caller-supplied Arrhenius stance

The kernel ships no material property tables — the same stance as kinetics delayed data. Every coefficient is caller data, constant or Arrhenius in the caller-supplied temperature:

D(T)=D0e−ED/RT,kj(T)=kj0e−Ekj/RT,pj(T)=pj0e−Epj/RT,KS(T)=KS0e−ES/RT.(T-Arr)D(T) = D_0 e^{-E_D/RT}, \qquad k_j(T) = k_{j0} e^{-E_{kj}/RT}, \qquad p_j(T) = p_{j0} e^{-E_{pj}/RT}, \qquad K_S(T) = K_{S0} e^{-E_S/RT}. \tag{T-Arr}

Trap site densities N_j are static in v1 (no damage-created intrinsic trap evolution).

Boundary-condition taxonomy

At each surface (n the outward normal, J = −D∂c_m/∂n the outward flux)shewmon-2016:

  • Dirichlet: c_m = c̄ (prescribed surface concentration).
  • Sieverts: c_m = K_S(T)√p (diatomic-gas equilibrium at gas pressure p; the linear Henry variant c_m = K_H p is a named alternative).
  • Recombination: J = K_r(T)\,c_m² (surface recombination to molecules; nonlinear Robin condition).
  • ZeroFlux: J = 0 (symmetry midplane or impermeable wall).

G1 — Steady linear profile

Steady trap-free T1 with constant D, S = 0, and Dirichlet ends c(0) = c0, c(L) = cL gives d²c/dx² = 0, hence

c(x)=c0+(cL−c0) x/L,Jss=D (c0−cL)/L,I=(c0+cL) L/2.(G1)c(x) = c_0 + (c_L - c_0)\,x/L, \qquad J_{ss} = D\,(c_0 - c_L)/L, \qquad I = (c_0 + c_L)\,L/2. \tag{G1}

I is the mobile inventory per unit area. Pinned in fixtures/tritium/g1_steady.json (algebraic, tolerance 1e-12).

G2 — Permeation transient and time lag

With c(0,t) = c0, c(L,t) = 0, c(x,0) = 0, splitting off the G1 steady profile leaves a homogeneous heat equation solved by separation of variables (eigenfunctions sin(nπx/L), eigenvalues Dn²π²/L²)crank-1975. The outlet flux is

J(L,t)Jss=1+2∑n=1∞(−1)ne−Dn2π2t/L2.(G2)\frac{J(L,t)}{J_{ss}} = 1 + 2\sum_{n=1}^{\infty}(-1)^n e^{-D n^2 \pi^2 t / L^2}. \tag{G2}

Cumulative permeation Q(t) = ∫₀ᵗ J dt asymptotes to J_ss(t − t_lag) with

tlag=L2/6D,(G2-lag)t_{lag} = L^2 / 6D, \tag{G2-lag}

the breakthrough-curve intercept. Pinned in fixtures/tritium/g2_timelag.json at seven log-spaced times (series cut at |term| < 1e-18; solver replay tolerance 1e-6).

G3a — Low-occupancy (Oriani) limit

For K_j c_m ≪ 1, (T2-eq) linearizes to c_{t,j} ≈ N_jK_jc_moriani-1970; under local equilibrium T1+T2 collapse to (1 + ΣN_jK_j)∂c_m/∂t = D∇²c_m, i.e.

Deff=D/(1+KN)(single trap).(G3a)D_{eff} = D / (1 + KN) \quad \text{(single trap)}. \tag{G3a}

Pinned in fixtures/tritium/g3a_oriani.json (KN = 3, D_eff = D/4; algebraic, tolerance 1e-12).

G3b — Saturated limit

For K_j c_m ≫ 1, c_{t,j} → N_j: traps sit full, the mobile steady state is G1, and the trapped load follows the isotherm pointwise. Pinned in fixtures/tritium/g3b_saturated.json with the exact trapped inventory 2L(1 − ln 2) (algebraic, tolerance 1e-12) — evaluated at Kc = 1 at x = 0 (occupancy 0.5 falling to 0), so the gate pins the full-isotherm integral with the saturated asymptote N·L as its limiting interpretation.

G3c — Irreversible limit

For p_j → 0 at fixed mobile c_m, (T2) integrates directly (with c_t(0) = 0):

ct(t)=N (1−e−kcmt).(G3c)c_t(t) = N\,(1 - e^{-k c_m t}). \tag{G3c}

Pinned in fixtures/tritium/g3c_irreversible.json at seven times (algebraic, tolerance 1e-12).

G4 — Sieverts steady state

Sieverts ends c(0) = K_S√p₁, c(L) = K_S√p₂ reduce the trap-free steady state to G1 between those concentrations, with permeability Φ = D·K_S:

J=Φ (p1−p2)/L.(G4)J = \Phi\,(\sqrt{p_1} - \sqrt{p_2}) / L. \tag{G4}

Pinned in fixtures/tritium/g4_sieverts.json (algebraic, tolerance 1e-12).

G5 — Recombination steady state

With a recombination outlet the steady problem is nonlinear, but the mobile profile stays affine in the recombination face values (the steady system is linear for frozen faces), so the kernel pins each face-adjacent response with unit-perturbation Thomas solves: one end closes in closed form from K_r cf² + g(1−b) cf − g·a = 0, two ends by Newton iteration with the analytic Jacobian. G5a (Dirichlet + recombination, trap-free, S = 0) asserts the linear (c0, c_s) profile, flux, and inventory at 1e-12; G5b asserts the K_r → ∞ recovery of the G1 Dirichlet end. The recombination transient has no such algebraic oracle and closes per step instead (G6).

G6 — Recombination transient

The recombination transient admits no closed form. The face law K_r cf² = g(c_adj − cf) makes every implicit θ-step nonlinear, and the face quadratic couples to the time derivative through the step matrix: the separation-of-variables trick behind G2 needs a linear problem, and the frozen-face affine reduction behind G5 needs no time derivative, so neither extends. The kernel instead reuses the G5 affine face-response construction inside each θ-step: for frozen traps the step is linear in the mobile profile with the face values as sources (M c = r + Q f), so one base Thomas solve plus one sensitivity column P = M⁻¹Q per recombination end (rebuilt only when dt changes) makes the profile affine in the faces, c = base + P f. Trap-free steps close each face in closed form (one end) or by Newton iteration with the analytic Jacobian (two ends, warm-started from the previous step); steps with traps fuse the face iterate into the trap-Picard loop, sharing rtol/atol. A face Newton that exhausts its cap fails the step with the existing not-converged error (hard fail, no dt retry).

Because no algebraic oracle exists, the G6a–G6d gates are asymptotic and self-convergence — honestly weaker than the G1–G5 algebraic gates:

  • G6a (long-time asymptote): Dirichlet + recombination from a clean slab lands on the G5a steady state: 1e-6 relative on the outlet flux, the flux balance |F_L + F_R|, and the G5a linear profile at 1e-9, at t = 60·t_lag ≈ 44·τ₁ — τ₁ = L²/(D y₁²) the slowest mode of the problem linearized about the steady face value (y₁ the first positive root of y·cos y + (2K_r c_s L/D)·sin y = 0), so the slowest mode has decayed to e⁻⁴⁴ and only the asymptote is gated.
  • G6b (K_r continuity): K_r → ∞ recovers the G2 Dirichlet transient (outlet-flux series at 1e-6), matching the G5b steady limit; K_r → 0 recovers the zero-flux transient (profile at 1e-5 absolute against the leading-order K_r c_f² t leak).
  • G6c (mass balance): recombination leaks, so the discrete invariant Iᵏ − Iᵏ⁻¹ = dt·[θRᵏ + (1−θ)Rᵏ⁻¹] with R = −(F_L + F_R) closes against the reported K_r cf² faces to roundoff (1e-12 relative).
  • G6d (self-convergence): dt-halving on a fixed recombination case shows the θ-method order on two successive halvings — ≈ 2 for Crank–Nicolson (pinned band 1.5–2.5), ≈ 1 for backward Euler (pinned band 0.7–1.3). The band is measured where truncation error dominates: the t = 0 corner kink excites Crank–Nicolson fine-mode ringing that decays only as |g| → 1 on modes with λ·dt ≫ 2, so coarse-dt errors at late time are ringing, not truncation.
  • G6e (independent cross-check): self-convergence cannot catch a spatial-discretization or face-formula bug that is consistent across refinements, so G6e compares the mid-transient trajectory at t = 0.5/1/2·t_lag against an independent solver — the method of lines with second-order central differences on a node-centred grid (ghost-node recombination end) and a hand-rolled explicit RK4 — that shares no discretization, face closure, or integrator with the kernel. The trap-free G6a slab plus a trap-coupled variant agree with the production transient at 1.5e-4 relative on the mobile-profile max-norm (6e-4 on the trapped profile; outlet flux within 5e-3 relative or 1e-3·J_ss absolute), ≈5x headroom over the measured cross-method error.

Positivity under the face clamp (cf ≥ 0) is asserted for one- and two-recombination-end transients on a coarse grid.

Multi-layer series stacks

A LayerStack chains N ≥ 1 slabs — e.g. a W/Cu/CuCrZr first-wall stack — each carrying (T1–T2) with its own coefficients D_k, K_k, trap species, temperature, and source. Internal interfaces close through a linear local-equilibrium law: the potential u = c_m / K and the flux J = −D ∂c_m/∂x are continuous — the Sieverts potential u = c_m / K_S [Pa¹ᐟ²] at a Sieverts interface, the Henry potential u = c_m / K_H [Pa] (Henry constant K_H [mol/m³/Pa]) at a Henry interface,

u∣k−=u∣k+,Dk ∂cm∂x∣k−=Dk+1 ∂cm∂x∣k+.(L1)u\big|_{k^-} = u\big|_{k^+}, \qquad D_k\,\frac{\partial c_m}{\partial x}\bigg|_{k^-} = D_{k+1}\,\frac{\partial c_m}{\partial x}\bigg|_{k^+}. \tag{L1}

Each layer’s K is caller data: the layer solubility plays K_S or K_H according to the law declared at the adjacent interface (one law per gap). A gap may instead carry the vented-sink recombination law (L3, G10): a single face concentration x ≥ 0 with half-cell fluxes J_L = g_L (c_L − x), J_R = g_R (x − c_R) (g = 2D/dx per side, no solubility involved) and the desorption sink K_r x² venting from the face,

JL−JR=Krx2.(L3)J_L - J_R = K_r x^2. \tag{L3}

The K_r → 0 limit is a continuous-concentration joint, not a Sieverts law; a non-positive permeation drive has no nonnegative root and is a clear error. The flux-continuous product law (J = K_r x_0 x_1) is rejected by construction — it admits a spurious insulated root and no symmetric root, so no spelling for it exists. Away from vented gaps the steady state is the series-resistance network over the per-layer permeabilities Φ_k = D_k K_k: u(x) is piecewise linear with constant flux

J=u(0)−u(L)∑kLk/Φk.(L2)J = \frac{u(0) - u(L)}{\sum_k L_k / \Phi_k}. \tag{L2}

The discrete form keeps the mobile concentration as the unknown and writes every interior face flux as J_f = (c_i/K_i − c_{i+1}/K_{i+1}) / R_f with face resistance R_f = dx_k/(2Φ_k) + dx_{k+1}/(2Φ_{k+1}) — linear in the neighbouring cell values, so the linear interface condition (Sieverts or Henry — the resistance form is law-agnostic) folds directly into the tridiagonal θ-step matrix (the spike outcome: no interface Newton is needed, unlike the nonlinear recombination faces of G5/G6). A vented gap instead CUTs the matrix (block-diagonal; each block sees a Dirichlet cut face): the adjacent-cell values stay affine in the face value, so the scalar residual R(x) = P − Q·x − K_r·x² = 0 closes in closed form x = 2P/(√(Q²+4K_rP)+Q); coupled faces (several gaps, or recombination outer ends alongside) close by Newton iteration with the analytic Jacobian. Within one uniform layer it reduces to the landed arithmetic-mean face. Outer ends reuse the landed surface taxonomy unchanged, including recombination ends through the same face-response construction. A one-layer stack dispatches to the landed single-slab kernel and reproduces it exactly (the G7c anchor).

Series wall (L1–L2): piecewise-linear u = c/K_S with one constant flux J across both interfaces.

G7 — Multi-layer steady state

The layered steady system is linear (for frozen recombination faces), so the algebraic gates carry over at G5-style tolerances:

  • G7a (series resistance): a 2-layer stack with contrasting D and K_S matches the (L2) closed form at 1e-12 relative on the fluxes, and every interior face — including the material interface — carries the same flux to roundoff (with a 1e-18 absolute floor, since the fluxes are ~1e-7 and plain relative roundoff would be unmeetable); the discrete profile is the exact piecewise-linear u(x) at the nodes.
  • G7b (N-layer continuity): a 3-layer stack holds interface flux continuity and the half-cell-corrected interface potentials to roundoff against the closed form.
  • G7c (single-layer recovery): a 1-layer stack reproduces the landed kernel field-by-field, exactly (the layered entry dispatches to it).
  • G7d (transparent interface): a 2-layer stack with identical D and K_S in both layers is a plain slab; the layered path itself (not the dispatch) matches the landed kernel to roundoff.
  • G7e (recombination outer end): the layered face-response construction closes a recombination outlet against the same series resistance; the flux matches the closed form from J = K_r (K_{S,n} u_L)^2 with u(0) − u(L) = J·R at 1e-12 relative.

G8 — Multi-layer transient

The transient reuses the landed θ-stepper with the interface fluxes inside the step matrix; recombination outer ends close per step through the face-response construction on the layered matrix. No algebraic transient oracle exists, so the gates mirror G6:

  • G8a (self-convergence): dt-halving on the 2-layer stack shows the θ-method order on two successive halvings — Crank–Nicolson in the band 1.5–2.5, backward Euler in 0.7–1.3 — measured in the same resolved band as G6d (the stack’s finest-mode scale and lag time set it; measured orders sit at ≈2.0 and ≈1.0).
  • G8b (long-time asymptote): the 2-layer transient from a clean slab lands on the layered steady state at t = 60·max_k(L_k²/6D_k), within 1e-6 relative on the outlet flux and 1e-9 on the profile, for both a Dirichlet and a recombination outlet.
  • G8c (mass balance): with one θ-step per output interval the discrete balance Iᵏ − Iᵏ⁻¹ = dt·[θRᵏ + (1−θ)Rᵏ⁻¹], R = −(F_L + F_R), closes against the reported boundary fluxes to roundoff — internal interface fluxes cancel in the sum, so the landed G6c identity carries over.

Positivity is asserted on the layered transient with different trap species per layer (per-cell trap counts follow the owning layer), and the clear error surface (recombination interfaces, malformed stacks and states) is gated in-crate.

G9 — Henry internal interfaces

The linear Henry law shares the (L1) construction — u = c_m/K_H continuous with continuous flux, folding into the same tridiagonal θ-step matrix with K_H in place of K_S — so the steady gates carry over at G7-class tolerances (the G7c single-layer recovery anchor is unchanged):

  • G9a (Henry series resistance): a 2-layer stack joined by one Henry interface matches the (L2) closed form at 1e-12 relative on the fluxes (1e-18 absolute floor), every interior face carries the same flux to roundoff, the discrete profile is the exact piecewise-linear Henry potential at the nodes, and the half-cell-corrected interface potential agrees from each side of the gap.
  • G9b (mixed laws): a 3-layer stack with one Sieverts and one Henry interface holds flux continuity across both interface laws to roundoff against the same series-resistance closed form, with the interface potentials pinned from each side.

G10 — Vented-sink recombination interfaces

A vented-sink gap (L3) desorbs K_r x² from its single face concentration, so — unlike the linear gaps — it carries a flux jump, not flux continuity. The CUT-matrix construction closes each gap against the adjacent blocks: one gap in closed form, coupled faces by Newton. The gates are synthetic stacks with hand-derived closed forms (each Dirichlet-bounded block is nodally exact for linear profiles, so the discrete residual is the continuum quadratic to roundoff):

  • G10a (closed form): a 2-layer stack with one vented gap matches the continuum root of R(x) = D₁(c₀−x)/L₁ − D₂(x−cN)/L₂ − K_r·x² at 1e-12 on the face value, fluxes, and block-linear profile, with the gap residual and the outer balance F_L + F_R + K_r·x² = 0 at the same tolerance.
  • G10b (rate limits): K_r → ∞ pins the upstream block to its Dirichlet-terminated profile; K_r → 0 recovers the uncut slab on identical layers and holds joint-continuous c (no K-ratio jump) on contrasting solubilities — the continuous joint, not Sieverts.
  • G10c (mixed laws): a 4-layer stack with one interface of each law holds flux continuity across both linear gaps to roundoff while the vented gap closes the scalar quadratic against the super-block resistances at 1e-12.
  • G10d/G10e (coupled Newton): two vented gaps, or a vented gap plus a recombination outer end, close by Newton — residuals pin the Newton contract and the outer balance closes modulo the residuals.
  • G10f/G10g (traps and errors): traps evaluate on the owning layer’s isotherm behind the vented close; zero drive fails loudly (no nonnegative root).

G11 — Vented-sink transient

The transient reuses the θ-stepper on the CUT matrix with the G6 face-coupling moved interior: one sensitivity column per vent face per dt span, per-step close (closed form for a lone gap, warm-started Newton for coupled faces — fused into the trap Picard loop), and the discrete balance closed against the reported boundary fluxes plus the desorption sinks from the recorded gap faces. A lone gap follows the G6 clamping stance per step; the steady P ≤ 0 loud error stands:

  • G11a (mass balance): trap-free, one θ-step per output — the balance with the desorption sink closes to roundoff.
  • G11b (self-convergence): dt-halving shows the θ-method order in the resolved band (Crank–Nicolson on the spike’s pinned pair, backward Euler on both pairs).
  • G11c (long-time asymptote): the vented transient lands on the vented steady state (fluxes at 1e-6, profile at 1e-9).
  • G11d (trap fusion): the trap-coupled transient closes the mobile-plus-trapped balance with the desorption sink.

Invariants

  • Positivity: nonneg initial data, boundary data, and source imply c_m, c_{t,j} ≥ 0 (maximum-principle consequence). The future discrete scheme must preserve it.
  • Mass conservation: d/dt[I_m + ΣI_{t,j}] = J(0,t) − J(L,t) + ∫S dx with J = −D∂c_m/∂x. The future scheme must satisfy it to roundoff.

Algorithm

The discretization is a 1D cell-centred finite-volume grid with implicit θ-stepping in the kinetics solve.rs pattern (diffusion implicit, traps via the exact per-cell backward-Euler map with Picard coupling to rtol/atol). Each implicit step is a tridiagonal solve through the shared linalg::tridiag Thomas module the kernel landing added behind the workspace facade. Gate-to-test mapping: G1/G3a/G3b/G3c/G4 replay as algebraic assertions (1e-12), G2 as a transient solve (1e-6), G5 as the recombination steady-state face construction (G5a algebraic at 1e-12, G5b recovery at 1e-6), G6 as the recombination transient (G6a–G6d asymptotic + self-convergence gates with in-test closed forms, plus the G6e independent method-of-lines cross-check), G7/G8/G9 as the multi-layer gates (series-resistance closed forms at 1e-12 with roundoff-level interface continuity pins, including Henry-interface and mixed-law stacks; transient asymptote + self-convergence + mass balance), G10/G11 as the vented-sink recombination-interface gates (scalar-quadratic closed forms at 1e-12, Newton-contract residuals for coupled faces, transient balance with the desorption sink plus asymptote + self-convergence + trap fusion), plus positivity and mass-balance invariant checks.

Worked example: G1 slab

With D = 1e-9 m²/s, L = 1e-3 m, c0 = 1.0, cL = 0.0 mol/m³, (G1) gives c = [1.0, 0.75, 0.5, 0.25, 0.0] at x/L = [0, 0.25, 0.5, 0.75, 1], J_ss = 1e-6 mol/m²/s, and I = 5e-4 mol/m². The same slab switched to the G2 transient breaks through at t_lag = L²/6D ≈ 166.67 s: the outlet flux is still ≈2.3e-3 J_ss at t = 31.6 s and reaches 0.9999 J_ss by t = 1000 s, exactly the fixtures/tritium/g2_timelag.json vector.

Assumptions and limitations

  • 1D only: multi-D FEM and heat coupling are explicitly out — that is FESTIM’s reason to exist, and FESTIM is never a dependency. Heterogeneous series stacks in 1D (multi-layer, Sieverts/Henry interfaces) are in scope (G7–G9); in-plane multi-material geometry is not.
  • Prescribed temperature: T(x, t) is caller data; no heat solve.
  • Caller-supplied properties: diffusivities, solubilities, trapping rates, and surface constants ship as caller data; no vendored tables.
  • Linear plus vented-sink interface laws: internal interfaces close through a linear law — Sieverts (c/K_S continuous) or Henry (c/K_H continuous) — with continuous flux, or through the vented-sink recombination law (single face concentration with the K_r x² desorption jump); reverse or zero drive on a vented gap is a clear error, and trap-species discontinuities across interfaces enter only through caller data. The flux-continuous product law has no spelling by construction.
  • Single mobile species: tritium only; H/D co-diffusion and isotope exchange are out.
  • Static traps: N_j fixed; damage-driven intrinsic trap creation is deferred to a later design (the T2 form already covers both).
  • Equilibrium surfaces: Dirichlet/Sieverts ends assume fast surface kinetics; finite-rate surface processes enter only via recombination.
  • G6 transient gates: the recombination steady state is pinned (G5a/G5b); the recombination transient closes per θ-step (G6a–G6d asymptotic + self-convergence gates, plus the G6e independent method-of-lines cross-check) — no closed-form transient oracle exists, and none is claimed.
  • Thin facades only: nucleide.tritium (Python) and tritiumBreakthrough (WASM) expose the landed kernel; no new physics past T1–T2/G1–G11.

Validation

  • Analytic replay (landed): Rust fixture tests plus tests/test_tritium.py assert the G1–G4 fixtures at the pinned tolerances and replay G5/G6 and the multi-layer G7/G8/G9/G10/G11 gates as in-test closed forms (synthetic stacks with hand-derived series-resistance and vented-sink oracles; the multi-layer goldens live in unit tests, not fixtures/tritium/), following the kinetics oracle pattern. No validation/*_vs_*.py script exists — there is no external oracle to wire, so none was added.
  • No external probe: a FESTIM cross-check, if ever attempted, stays a loud-SKIP probe. Do not add FESTIM/FEniCS to the validation container: the conda weight is intolerable for an optional nicety, and the analytic gates stand alone.
  • validation/ is untouched by this spec change.

Adjacent capabilities Nucleide does not implement: multi-D finite-element tritium transport with heat coupling (the FESTIM capability envelope); plasma-facing implantation-profile and breeding-blanket (TBR) coupling models; gas-driven permeation experiment analysis beyond the Sieverts / recombination surface laws pinned here.

References

  1. [crank-1975]The Mathematics of Diffusion— Clarendon Press, Oxford, 2nd edition (1975)↩
  2. [mcnabb-1963]A new analysis of the diffusion of hydrogen in iron and ferritic steels— Transactions of the Metallurgical Society of AIME 227, 618–627 (1963)↩
  3. [shewmon-2016]Diffusion in Solids— Springer / The Minerals, Metals & Materials Series, 2nd edition (2016)↩