NSE EOS Jacobians use cubic derivatives when linear interpolation is selected

Chiusa
#2,074 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@zingale ci sta già lavorando.

Dal 5/10/2026.

  • #2110 di @zingale — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
cpp
Ambito
backend

Direzione di ricerca

Inizia in nse_tabular/nse_table.H negli intervalli interessati 429-440, 496-539 e 549-592, quindi segui i chiamanti in nse_tabular/nse_eos.H. Riproduci le derivate segnalate con i valori forniti di T, rho e Ye usando l'interpolazione lineare e verifica i controlli alle differenze finite sia nella modalità lineare sia in quella cubica, lontano dai confini delle celle.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

ai-code-audit nse

Reviewed commit: 3ac0bda4f00da3eed0446beadfc1cd5c51b99a40

Suggested priority: Medium

Affected code: nse_tabular/nse_table.H:429-440, nse_tabular/nse_table.H:496-539, nse_tabular/nse_table.H:549-592; callers in nse_tabular/nse_eos.H.

Description

nse_interp() honors network.nse_table_interp_linear, but nse_interp_dT() and nse_interp_drho() always differentiate the cubic interpolant. The EOS inversion routines therefore use derivatives of a different composition function from the one used to evaluate their residuals.

Reproduction

Set linear interpolation and use T=5.18e9 K, rho=1.23e9 g/cm^3, Ye=0.472. Compare the returned abar derivatives to centered finite differences of nse_interp() with relative perturbation 1e-5:

Derivative Reported Finite difference
dabar/dT -1.072562604210832e-9 -1.097834698172967e-9
dabar/drho 3.987522835638749e-10 4.095838820409504e-10

The discrepancies are approximately 2.3% and 2.6%. With cubic interpolation selected, the same check agrees closely.

Expected behavior / suggested fix

Differentiate the selected interpolant, or explicitly select matching value/derivative routines within the inversions. Add finite-difference checks in both modes, away from cell boundaries.

Impact and validation: An inconsistent Newton Jacobian can impair convergence. The derivative mismatch is reproduced; a linear-mode inversion failure is not claimed. See reproduction-output.txt

reproduction-output.txt

.

Lingua principale
C++
Stelle
44
Fork
47
Merge medio
5g 5h
PR unite (30g)
6

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di AMReX-Astro/Microphysics

Tutte le issue di AMReX-Astro/Microphysics

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.