Skip to content

FIX: Run the known-issues cases with twins, and classify same-call twin flips as divergent - #31

Merged
thclark merged 4 commits into
mainfrom
improvements
Oct 27, 2026
Merged

thclark merged 4 commits into
mainfrom
improvements

Conversation

@thclark

@thclark thclark commented Oct 25, 2026

Copy link
Copy Markdown
Owner

Summary

  • Twins on the known-issues cases. All 21 cases in group = "known-issues" now run their five seeded 1-ULP twins (twins = true), so the study can tell XFOIL's own ill-conditioning from a translation difference. Updated the notes that list which groups carry twins: CLAUDE.md, testing.md and the fixtures README. Republished from the rerun, and corrected the known-issues index, which said these runs have no twins.
  • Classifier blind spot fixed (studies/study-support/records.rs). A twin's branch flip used to count only if it was in an earlier call. In naca64a010 N60 TYPE 2 at α 0, the twins flip ITRAN at iterations 11 and 12 of call 1 and then stop at iteration 14 or 15. Iteration 16 therefore had no recorded spread, and the parting there read as a mismatch. A parting at or after a twin's flip in the same call is now divergent.

Results

  • Known issues: 19 partings, all divergent. Before the fix, 18 were divergent and 1 was a mismatch. The six inviscid cases and the two closed-TE cases don't part at all.
  • Branch coverage: the same case, naca64a010_n60_type2_a0_re1e6, call 1, iteration 16, goes from MISMATCH to divergent. No other row changes. Its non-finite table picks up the corrected docs/validation/branch-coverage/ path.
  • Series cases: no row changes. The study had no mismatches before the fix, and the fix can only turn a mismatch into divergent.

Evidence the reclassified point is not a translation difference. yFoil and XFOIL agree through iteration 11. The twins flip ITRAN at 11 and 12, and yFoil's RMSBL moves by 1.35e-4 at 12, inside the twins' spread of 0.25. From then on, the relative RMSBL difference stays constant at about 2e-3 through iterations 14, 15 and 16: the iteration-12 difference decaying with RMSBL. Nothing new appears at iteration 16. Only the twins' record ends there.

Test plan

  • cargo fmt --check and cargo clippy --all-targets --all-features -- -D warnings
  • scripts/docs.sh build --clean, docs check clean
  • Reran the known-issues and branch-coverage comparisons with the fix and published them
  • CI

Every known-issues case now runs its five 1-ULP twins, so the study can
tell XFOIL's own ill-conditioning from a translation difference. Publish
run 2026-10-23T19-39-42Z and correct the parting section of the
known-issues index, which said the runs had no twins.
…l as divergent

The study classifier counted a twin's branch flip only from an earlier call.
In naca64a010 N60 TYPE 2 at alpha 0 the twins flip ITRAN at iterations 11
and 12 of call 1 and then stop at 14 or 15, so iteration 16 has no recorded
spread and the run's parting there read as a mismatch. A parting at or after
a twin's flip in the same call is now divergent. Republish the known-issues
and branch-coverage runs, the only rows it changes.
…reference

The known-issues fixtures and their twins are regenerated on the reference
of main (its fingerprint changed with the host-libm stage), and the study
rerun from them reproduces every table and figure byte for byte; only the
run's provenance changes, now a clean commit.
@thclark
thclark merged commit 363a9ae into main Oct 27, 2026
5 checks passed
@thclark
thclark deleted the improvements branch October 27, 2026 15:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant