Conversation
…onfiguration file mention
Replaces the fragile per-station inscribed-circle solver (independent bounded fixed-point + unvalidated optimizer fallback) with predictor- corrector continuation, fixing both the tangency-violation bug and the LE-circle kink. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…continuation tracer CamberBuilder's CAMBER_METHOD_INSCRIBED_CIRCLES previously solved each displayed circle independently from a narrow bounded search window seeded by a naive midpoint guess, falling back to an unvalidated soft-penalty optimizer whenever that failed -- which happened for nearly every station near the leading edge on real airfoils, producing circles that visibly crossed the surface by up to ~3% of chord instead of being tangent to it. CamberMedialAxis.trace() replaces this with predictor-corrector arc-length continuation: a continuously-refined nose start (independent of the existing discrete getLeRadius marker, which is left untouched) is traced outward using true arc-length (sphere) continuation with 2D Newton correction at each step, falling back to a blended handoff to the naive midpoint construction only for whatever stretch near the trailing edge continuation can't reach. Measured worst-case tangency error dropped from up to 2.9e-2 chord to under 5e-4 chord across NACA0012/2315 and a heavily cambered real section (MW-166-39-44-43), and the camberline is now a continuous curve through the nose rather than kinking at the LE circle. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CST's "modified CST" fit is a standard Kulfan-style upper/lower-surface parametrization, not a camber/thickness one -- so CAMBER_METHOD_CST's clearance-circle refinement and CAMBER_METHOD_LEGACY's naive midpoint were both just less accurate stand-ins for what the medial-axis tracer now does properly for every contour, regardless of how it's parametrized. CamberBuilder.build() drops the method parameter (and le_id, which was already unused) and always returns the inscribed-circle/medial-axis result; CAMBER_METHOD_LEGACY, CAMBER_METHOD_CST, and the CST-specific clearance-circle machinery (_build_cst, _prepare_clearance_samples, _side_clearance_radius, _clearance_radius) are deleted. The naive upper/lower midpoint construction itself stays as a private _build_naive_midline helper -- it's still needed to seed the tracer's trailing-edge blend fallback, just no longer exposed as something a caller can choose. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New selectable engine family where topology (O/C, H later), tunnel shape (legacy/circular), and volume algorithm (TFI/elliptic/hyperbolic) are orthogonal first-class choices; exact spline-point wall distribution and an analytically perpendicular near-wall block are hard requirements. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…hinning Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Meshing.py wiring (settings field, getter, dispatch) is left unstaged because the file carries unrelated WIP; it accompanies this commit logically. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wiring in ToolboxPagesMeshing.py, ToolBox.py, and ToolboxPages.py is left unstaged because those files carry unrelated WIP; it accompanies this commit logically. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…red TEs A straight seam inverts near-wall cells on cambered/reflexed airfoils (MW-166). The seam is now a quadratic Bezier leaving the TE along the wedge exterior bisector and bending onto the centroid-ray seam point. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Checkpoint of the in-progress v3.0 refactor: new quad-pipeline and metric modules (QuadLayout/Monitor/Pipeline/Quality/Redistribute, MetricTriangulation, ToolboxPagesMetricTests) with their tests, plus the accompanying updates across the meshing/graphics modules. Also ignores all __pycache__ directories and boundary_layer_code/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The meshing toolbox page is trimmed to the metric-based engine and gains the new Structured engine group (topology, tunnel shape, TFI variant, ortho block, outer-boundary controls). Windtunnel dispatches engine='structured' to StructuredEngine. This commit mixes the ongoing panel refactor with the structured-engine wiring because both live in the same regions of these files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
naca0012, naca2315, and MW-166-39-44-43 are copied from the gitignored lib_AE/ and boundary_layer_code/ trees so the camber and structured tests run on a fresh clone. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rthogonality forcing Thomas-Middlecoff control functions frozen from the initial grid preserve boundary clustering; periodic xi lets the O-grid seam relax with its near-wall nodes anchored to the TE-bisector positions; simplified Sorenson-style forcing drives mesh lines orthogonal onto the farfield. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds StructuredMeshSettings.algorithm with elliptic iteration/relaxation controls, engine dispatch through a shared _volume_fill, and the 'Elliptic (Winslow + TM)' entry in the algorithm selector. The elliptic wall anchor is generalized from the seam to all columns after the blunt base corner inverted the same way the TE wedge did. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Marches along smoothed front normals with implicit variable-coefficient layer smoothing (strength ~ (step/local spacing)^2, cyclic for O-grids), continues while each cell band stays valid up to a height-fraction cap, and fills the remainder with a TFI boundary-value solve onto the exact outer distribution; backs the hand-off point off on inversion, with pure TFI as the logged last resort. Constant-coefficient smoothing, straight guidance blends, and TFI-target guidance were all tried and fold on cambered airfoils - recorded in the plan's execution notes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds StructuredMeshSettings.hyperbolic_fraction_cap/hyperbolic_smoothing, engine dispatch through _volume_fill (computing wall normals via OrthoLayers for the march), and the 'Hyperbolic (marching)' entry in the algorithm selector. With the ortho block active, the march runs from the rim using finite-difference normals only (the rim is no longer the exact contour, so spline_data/contour_slice are withheld from that call). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…moothing Laplacian is under-relaxed 4-neighbor averaging; elliptic delegates to GridElliptic.solve on the sub-grid from the last frozen row, reusing the phase-2 solver in its smoothing role; angle-based uses the Thales-circle projection (locus of points subtending a right angle over two neighbors) to relax each node toward its four right-angle target positions. All three are wrapped in a quality guard that reverts to the original grid whenever a pass would lower min(abs(cell jacobian)) - confirmed to actually fire on real TFI grids where near-wall quality is already tight. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds StructuredMeshSettings.smoother/smoother_iterations and applies GridSmoothers.smooth after the volume fill (before the inverted-cell guard) with frozen_rows = 1 + ortho_layers for the main block and 1 for the wake strip, logging quality before/after. GUI gains a Smoother combo (default None) and iterations spinbox. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <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.
progress new meshing architecture