Repository navigation
ForceFreeStates - BUGFIX! - Default the axis start to the fixed initialization - #514
Merged
Merged
Conversation
…alization The diagonal Frobenius start does not recover the axis limit it documented, and its m = 0 branch is an imaginary pair whose sign follows roundoff. frobenius_psi_max now defaults to 0, so that start is opt-in.
matt-pharr
approved these changes
Oct 9, 2026
matt-pharr
left a comment
Collaborator
There was a problem hiding this comment.
There are some silly claude-isms in the comments but I am going to let it slide since we are gonna want to do a full comment comb through in the coming weeks
Collaborator
|
CC @logan-nc IDK if you have heard of this before now but we are going to default frobenius axis init to off for the time being until the physical implications are better understood |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release note
diiid_n1Re(et[1]) +3.7e-6 and PE toroidal torque 5.09e-2 → 1.16e-4, resonant fields 0.2–0.6%, Solovev energies ≤0.03%, kinetic NTV torques ≤0.2%. Riccati Δ′ and SLAYER outputs do not move, nor do equilibrium scalars or local-stability profiles. (harness @ 1d07e9e)frobenius_psi_maxto at least the starting ψ_N to use the Frobenius start.0.01restores the previous behavior for every axis-started case.The default axis initialization is now the fixed start used by Fortran DCON (U₁ = 0, U₂ = I). The diagonal Frobenius start remains available by setting
frobenius_psi_maxabove the starting surface. That start's m = 0 branch is an imaginary conjugate pair, so the sign of its U₁ follows roundoff and shows up as a spurious toroidal torque. This PR essentially moves the repo back to a tried and true initialization while retaining the Frobenius initialization for those who want to fix it in the future.Regression report
Harness at
1d07e9e7e,developateb8e5f1bc(Alfven, 2 CPUs per case; 8 fordiiid_error_field). Every changed quantity is tied to the axis start; equilibrium, q, pressure, Mercier, singular-surface and vacuum-matrix quantities are identical.diiid_n1diiid_n1_riccatidiiid_slayer_n1solovev_n1solovev_multi_nsolovev_kinetic_calculatedsolovev_kinetic_nuzerosolovev_kinetic_ntvsolovev_kinetic_multiiondiiid_error_fieldNot run:
diiid_multi_n, both Galerkin cases,efit_fixedbdy_separatrix, both GGJ cases (expected unchanged).Notes for reviewers
Related to the issues brought up in #464 by demoting the Frobenius start to opt-in and removing the docstring claim that it behaves as a positive power of the starting ψ. The initialization itself is unchanged. This just moves the default to the legacy method until the Frobenius start is fully debugged.
On
examples/DIIID-like_ideal_exampleat ψ_N = 1e-4, an earlier fixed-versus-Frobenius comparison movedet[1]by about 5e-6 (0.8012318 to 0.8012355), the perturbed-equilibrium plasma energy by −0.06%, the surface energy by +0.04%, and the toroidal torque from +0.051 to +1.2e-4. Resonant fields moved by 0.15–0.2%. The Δ′ matrix was only compared between the two Frobenius branches, so the Riccati cases (diiid_n1_riccati,diiid_slayer_n1) should be treated as moving until the harness says otherwise.Harness cases expected to move:
diiid_n1,diiid_error_field,diiid_n1_riccati,diiid_slayer_n1,solovev_n1,solovev_multi_n, and the four Solov'ev kinetic cases. Unchanged:diiid_multi_n(already pinned to 0), both Galerkin DIII-D cases,efit_fixedbdy_separatrix, and both GGJ cases.