Skip to content

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

Open

Description

@k-yoshimi

Summary

set_usigmav_nf (trx/libnf.f90:322-343) fits a natural cubic spline (SPL1D, ID=0) through the linear svnf_* 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions