feat: Reynolds type modes (1/2/3) across solver, UI, and Python API#12
Merged
aeronauty-flexcompute merged 8 commits intomainfrom Mar 23, 2026
Merged
feat: Reynolds type modes (1/2/3) across solver, UI, and Python API#12aeronauty-flexcompute merged 8 commits intomainfrom
aeronauty-flexcompute merged 8 commits intomainfrom
Conversation
- Remove unused useCallback import in DistributionPanel - Suppress unused NumericTextInput in SolvePanel (kept for future use) - Remove unused AUTO_GROUP_INVARIANT_FIELDS import in polarDetection - Add missing is_outlier field in test fixture - Fix CellStyle return type in DataExplorerPanel - Fix Datum cast in DataExplorerPanel correlogram hover Made-with: Cursor
Implements XFOIL polar Type 2 (fixed Re*sqrt(CL)) and Type 3 (fixed Re*CL) in the Rust solver. The effective Reynolds number is recomputed each viscous iteration based on the current CL, matching the original Fortran behaviour. Type 1 (constant Re) remains the default. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Threads the re_type parameter (1/2/3) through analyze_faithful, analyze_faithful_batch, and get_bl_distribution. Returns reynolds_eff in all result dicts so callers can see the effective Re used. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds re_type parameter (default 1) to solve(), polar(), and bl_distribution(). Adds reynolds_eff field to SolveResult. All existing behaviour is unchanged (Type 1 default). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
18 new tests covering: - Re_eff formula verification for Type 2 and Type 3 - Type 2 produces different CL/CD than Type 1 - Default re_type=1 matches omitted parameter - Batch and parallel consistency - Inviscid solve returns reynolds_eff=None - BL distribution with Type 2 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: expose XFOIL Type 2/3 polar modes (variable Re)
Expose XFOIL's ReType (constant Re, fixed Re√CL, fixed Re·CL) in the UI as a three-button toggle under the Reynolds Number input. Mode 1 is the default. Threads re_type through WASM bindings, sweep engine, and airfoil store. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e modes - UI version 1.1.2 → 1.1.3, Python version 1.1.4 → 1.1.5 - Add changelog entry for Mode 1/2/3 Reynolds type selector with tour slide - Add ShowMe micro-tour (reTypeModes) for guided walkthrough of the feature - Document re_type and reynolds_eff in Python API docs (python-api.mdx) - Add data-tour attribute for ShowMe targeting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Summary
re_typeparameter onsolve(),polar(), andbl_distribution();reynolds_efffield onSolveResultre_typethreaded throughanalyze_airfoil_faithfulto the UI solverTest plan
cargo test -p rustfoil-xfoil)test_solver.py::TestReType)test_api.py)tsc --noEmit)🤖 Generated with Claude Code