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
These are the #591 items that remain after the v2.0 parity PRs.
A9, kinetic_format = "rates-v1" (Fortran PR 345). This is an input capability, not a fix.
In Fortran, a 9-column kinetic table supplies lnΛ, ν_i and ν_e (s⁻¹), which replace the internal collision model. The values are log-interpolated with pchip and must be positive.
In Julia, _read_kinetic_table hardcodes 6 columns. The work needs a kinetic_format key next to kinetic_group in [Equilibrium], and a branch for supplied rates in kinetic_profile_splines and resolve_ntv_species.
A13, the singular-coupling overlap (Fortran PRs 330 and 185). Fortran now exports W^H·V, so that the overlap is V^H·W·b. Julia exports a dominant-mode overlap V^H·b̃ in root-area-weighted units (ResonantCoupling.jl). Check whether the two are equivalent; Julia has no per-model or local-window SVD.
Inner quadrature accounting (analogue of Fortran PRs 312, 314 and 334). The pitch and energy integrals discard their error estimates (PitchIntegration.jl, EnergyIntegration.jl), so check_psi_quadrature_convergence sees only the outer ψ error. v2.0 adds a hard stop on a non-finite torque; this item adds reporting of inner-integral convergence.
Docs pass (Fortran PRs 282 and 266): mirror the PENTRC rotation and harmonic sign statements in docs/src/conventions.md.
A15: check the FastInterpolations endpoint derivative under a large constant offset (Fortran PR 308). If it shows the same cancellation, file it upstream.
Fortran's SVD was in a weighted basis, so its exported vectors had to be W^H·V.
Julia takes the SVD of C_resonant_area_weighted_field, which acts on b̃ (the root-area-weighted field), and the overlap V^H·b̃ uses that same basis.
test/runtests_dominant_coupling.jl:97 already checks that U * (σ .* overlap) reproduces the solve's resonant field to 1e-8. That is the same check Fortran's deleted test script ran.
Line 118 checks windowed overlaps rebuilt from the saved file.
forcing_overlap carries units (T), which was PR 185's other point.
Inner quadrature accounting.
Fortran's silent failures were LSODE stops. Julia's pitch and energy integrals are QuadGK calls with no evaluation cap, so they either converge or keep running until QuadGK's default cap, which in practice means a very slow run rather than a wrong answer.
Adding a cap plus a warning would create the silent truncation Fortran had to fix.
Spline end slopes (A15, Fortran PR 308).cubic_interp + deriv1 on x³ − x/2 plus a constant offset gives end-slope errors of 5e-8 at an offset of 1e6 and 1e-3 at 1e10. The unavoidable limit, machine epsilon × offset / grid spacing, is about 2e-4 at 1e10, and Julia stays within a few times it. There is no cancellation like the one Fortran fixed.
Activity
logan-nc commentedon Nov 2, 2026
Copied from #627 for the record: the #624 items that #627 closes without code changes, and why.
#624 items closed without code
C_resonant_area_weighted_field, which acts on b̃ (the root-area-weighted field), and the overlap V^H·b̃ uses that same basis.test/runtests_dominant_coupling.jl:97already checks thatU * (σ .* overlap)reproduces the solve's resonant field to 1e-8. That is the same check Fortran's deleted test script ran.forcing_overlapcarries units (T), which was PR 185's other point.cubic_interp+deriv1on x³ − x/2 plus a constant offset gives end-slope errors of 5e-8 at an offset of 1e6 and 1e-3 at 1e10. The unavoidable limit, machine epsilon × offset / grid spacing, is about 2e-4 at 1e10, and Julia stays within a few times it. There is no cancellation like the one Fortran fixed.