ForceFreeStates - Repair or retire the Frobenius axis start
Maintainer thường phản hồi trong vòng 3 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
Hướng nghiên cứu
Start by reading compute_axis_init and the investigations in #440 and #460; the issue identifies the diagonal 2×2 truncation and regular-branch selection as suspects. Verify the start against its documented asymptotic limit on an analytic equilibrium, or make it opt-in and remove that promise. After #460 merges, carry forward the fixture-based tests and promote the @test_broken lines when they pass.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
compute_axis_init implements the Frobenius axis start [Glasser 2016 Eq. 51], whose docstring promises a solution behaving as ~ψ_low^(|m|/2). It does not deliver that limit at any starting surface anyone actually uses, and the resulting initial condition is wrong by enough to move — and on one configuration, to destroy — the free-boundary energies.
Two independent investigations have now measured this from different directions. #460 bounds where the start is used; neither it nor the superseded #440 repairs the start itself. This issue tracks the repair.
Evidence
Away from the axis (#460, DIII-D ideal example, against Fortran DCON):
| ψ_low | innermost coupling row, Julia/Fortran norm | lowest W_t, Julia vs Fortran |
|---|---|---|
| 1e-4 | 1.000 | 1e-4 |
| 0.01 | 1.010 | 0.03 % |
| 0.03 | 1.042 | 0.1 % |
| 0.10 | 1.243 | 2.3 % |
| 0.30 | 2.140 | 7 % |
At ψ_low = 0.01 (#440, synthetic diverted DIII-D-like ramp-up, q0 = 3.41, n = 1, no wall, ldp grid mpsi 128, riccati). The returned U₁ diagonal is 0.11…0.23 for m = −14…−3 and +6.1/−9.8/−13.7 for m = 3/4/5 — nowhere near ψ_low^(|m|/2). Consequences on that equilibrium:
- one eigenvalue of W_p passes through zero, and
et[1]reports a spurious −1e5 "instability" where Fortran DCON is stable; - on a clean neighbouring slice the same stiff eigenvalue is +2.76e5 against DCON's +1.61e4, a factor 17.
The second point is the important one: the eigenvalue is wrong everywhere in that scan, and the apparent "pole" is merely where it crosses zero. A threshold on the starting ψ does not address this.
Measured on #460's head (e93df8f0) with #440's fixture, which starts at exactly ψ_N = 0.01 and so stays on the Frobenius path under the frobenius_psi_max = 0.01 default:
| setting | et[1] | max eig W_p | negative W_p eigs |
|---|---|---|---|
default (frobenius_psi_max = 0.01) |
−1.29e5 | 4.70e3 | 1 |
frobenius_psi_max = 0 (fixed start) |
+1.504 | 1.6090e4 | 0 |
Fortran DCON on the same deck, same mlow/mhigh/psilim/dmlim: stiff W_p +1.6092e4, no negative eigenvalue.
Suspects
Both named in #440, neither investigated:
- the diagonal 2×2 truncation of A₀ —
compute_axis_initbuilds one 2×2 Frobenius block per mode from the diagonal entries of F̄⁻¹, K and G, discarding all mode coupling; - the regular-branch selection rule — the eigenvector of the 2×2 block is picked by dominant |U₁| component, with a fallback to U₁ = 1, U₂ = 0 when the second component underflows.
Resolution
Either the start delivers its documented asymptotic limit, verified against that limit on an analytic equilibrium, or it is demoted to an opt-in with the docstring's promise removed. The present situation — a start that is documented as asymptotically correct, used by default near the axis, and measurably not — is the part to end.
Once it is repaired, the @test_broken lines in the fixture-based test (to be carried forward from #440 after #460 merges) report an unexpected pass and should be promoted.
Caveats on the numbers above
- #440's fixture uses
grid_type = "ldp"withmpsi = 128, not the currentautodefault; the ψ_low = 0.01 numbers should be re-confirmed onautobefore anyone leans on them. - #440's regression table dates from 2026-09-02 and is stale against current
develop. The two-row table in this issue was measured 2026-09-17 on #460's head.
References
- #460 — bounds the Frobenius start by starting ψ (
frobenius_psi_max); the mitigation, not the repair. - #440 — superseded and closed; carries the full investigation, the DCON
crit(ψ)trace comparison and the scan figures.
- Ngôn ngữ chính
- Julia
- Star
- 11
- Fork
- 7
- Merge trung bình
- 3 ngày 22 giờ
- Pull request đã merge (30 ngày)
- 70
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của OpenFUSIONToolkit/GPEC
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
OpenFUSIONToolkit/GPEC#644 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 74/100
OpenFUSIONToolkit/GPEC#648 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
OpenFUSIONToolkit/GPEC#643 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
PerturbedEquilibrium - FEATURE - Complete the resistive perturbed-equilibrium workflow from Galerkin and matched resultsCó thể đã có người làm @matt-pharr đã nhận 3 ngày trước. Đang mởfeature
OpenFUSIONToolkit/GPEC#635 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 3 ngày
-
test
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
OpenFUSIONToolkit/GPEC#633 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của OpenFUSIONToolkit/GPEC
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
JuliaDiff/TaylorSeries.jl#445 ·
-
Prescribed ice velocities never get their halos filled, so ice is created at a periodic seamĐang mở🕷️ bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
CliMA/ClimaSeaIce.jl#203 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
JuliaPhysics/BeamletOptics.jl#221 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
release preparation spack
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Maintainer thường phản hồi trong vòng 1 ngày
-
30-minutes algorithm any-language codewars dart easy elixir hackerrank hacktoberfest haskell help wanted interview-prep julia leetcode lua open-source r scala students zig
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Huerte/algo-solutions-python#163 ·
Maintainer thường phản hồi trong vòng 1 ngày