Repository navigation
fix: reference-matched native drag decomposition - #40
Merged
aeronauty-flexcompute merged 2 commits intoOct 14, 2026
Merged
aeronauty-flexcompute merged 2 commits into
aeronauty-flexcompute merged 2 commits into
Conversation
This was referenced Oct 14, 2026
aeronauty-flexcompute
merged commit Oct 14, 2026
8ca9796
into
codex/preserve-run-cache
3 checks passed
This was referenced Oct 14, 2026
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.
The native drag decomposition skipped low-Rtheta stations, clamped signed shear and used absolute x distance, so it disagreed with XFOIL’s actual CDf/CD−CDf report even though total CD matched. Replace those heuristics with CDCALC’s signed freestream projection, preserve surface y coordinates in the faithful force bridge, and gate both component outputs.
XFOIL’s polar-file CDp is a different surface-pressure integral; this PR explicitly compares the native
cd_pressure = CD−CDffield with the matching final iteration report. It does not redefine that API or add a new pressure-integral output.Measured evidence:
PR impact
Base/merge base: #39 at ad4a361. Head: 5a056e4. Twelve incremental files; inherited gate/cache/docs/flap slices are separate reviews.
Source-confirmed route: faithful
update_force_state→canonical_force_statecarries physical U, density-weighted Cf and actual surface y → sharedcompute_forces_from_canonical_state→ signedcompute_row_friction_drag→ native/CLI CDf and CD−CDf output. The shared canonical integrator can also reach existing legacy callers; legacy station-based integration and general legacy-engine validity remain outside the reference claim. No new public Rust signature is introduced by this slice.Gate route: final converged XFOIL iteration CDf/CD−CDf → native serial and batch comparisons. A negative test distinguishes that report from polar-file CDp and rejects missing component output. The WASM bridge does not expose these component fields, but its coefficients/Cp still pass the complete existing binding gate. Tests do not establish arbitrary geometry/Mach, experimental physical accuracy, global derivatives or interacting multi-element flow. The advisory reference scan is capped.
Changelog, Versions & Docs
Final-head Linux CI passed: run38557641634, rust/python and Bugbot green. Base/merge base and impact were refreshed after the flap follow-up.