You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
trx/libnf.f90: the reactivity spline (linear sigma-v vs log10 T) returns negative values for D-He3 / T-He3 and is 5-11x off for D-T below 4 keV #271
set_usigmav_nf (trx/libnf.f90:322-343) fits a natural cubic spline (SPL1D, ID=0) through the linearsvnf_* values against log10(T), and sigmav_nf evaluates it with SPL1DF. The tables span five decades over ten points, so the spline overshoots between knots: it returns negative reactivities for D-He3 and T-He3 and is off by 5–11× for D-T below ~4 keV. trm/libsigma.f90:45-83 splines log10(σv) and exponentiates, which has none of this.
Found during the review of #269 by the domain reviewer; reproduced here with lib/libspl1d.f90 and the tables copied from libnf.f90 (300 log-spaced temperatures in [1, 1000) keV):
table
negative samples
minimum
at
svnf_dhe3
37 / 300
−1.6e-20 cm³/s
3.4 keV
svnf_the3
53 / 300
−4.9e-21 cm³/s
6.9 keV
svnf_dd, svnf_dt, svnf_tt
0
—
—
D-T against Bosch-Hale (NF 32 (1992) 611), both in cm³/s:
T [keV]
spline
Bosch-Hale
ratio
1.5
3.57e-19
6.92e-20
5.2
2.5
7.74e-20
8.43e-19
0.09
3.0
6.85e-19
1.87e-18
0.37
4.0
5.05e-18
5.97e-18
0.84
10
1.10e-16
1.14e-16
0.97
50
8.70e-16
8.65e-16
1.01
Effect
tr_pnf (trx/trpnf.f90:84-89) uses RATE_NF=sigmav_nf(id_nf,PT1) per radial cell. A negative rate makes SNF negative: reactants are created, products destroyed, and PNF_NSNNFNR becomes a negative power, over parts of the 2–7 keV range (minima reproduced at 3.4 keV for D-He3 and 6.9 keV for T-He3) — temperatures any edge profile crosses. For D-T (model_pnf=1) the sign is right but the edge contribution is wrong by up to 11×. Independent of #236 (the cm³/s → m³/s factor) and of #269, which keep the interpolation as is.
Suggested fix
Spline LOG10(svnf_*) in set_usigmav_nf and return 10**value in sigmav_nf (the trm/libsigma.f90 pattern), keeping the *1.D-6 of #269; or replace the ten-point tables with the Bosch-Hale parametrisation. Either changes model_pnf>0 results below ~10 keV, so it needs the lead's confirmation, like the rest of the fusion-path fixes (#236, #269).
Test
sigmav_nf(id, T) >= 0 for all 13 channels over [1, 1000) keV (fails today for dhe31/32, the31..36), and sigmav_nf(id_nf_dt, T) within 25 % of Bosch-Hale at 1.5, 2.5, 3, 10, 50 keV (fails today at 1.5 and 2.5).
Activity