You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#294 pins that generate_airfoils fits the contour it is handed, but only for the delta=0 contour: its test leaves delta_range unset and compares 1.dat against the direct LeastSquaresFit of the handed contour. Everything written per deflection — airfoils/{id}_d<delta>.dat, and the _cp/_cf node tables that share their geometry — has no test on its geometry at all.
The gap matters because the delta files inherit the base fit rather than recomputing it: generate_airfoil_aero takes kulfan_to_coordinates(base) and runs deform_section per delta (rotate about crease_frac, re-shrink_wrap at clearance=0, refit). On the SK100 the nine blown-up sections carried their deflected files with them, and 10_d10.dat is the case worth knowing: it looks normalised because a large chord rescaled it, while its lower surface is a constant min_clearance/chord. The existing coverage would not catch that — test/airfoil_aero/test_airfoil_aero.jl checks a flap's extrema(x) against [0, 1] within 0.01, which a rescaled blowup passes.
What is wanted:
A generate_airfoils run with a delta_range spanning both signs, over a contour that has been shrink-wrapped first (the adapters' actual input shape — test/airfoil_aero/data/test_airfoil.dat wrapped, as Fit the contour generate_airfoils is handed, not a second wrap of it #294's test does, needs no new fixture), asserting every written _d<delta>.dat against the deflected geometry it should be: thickness and chordwise extent of the same order as the base section, and the delta=0 file unchanged from the existing check.
Thickness as the measure rather than the bounding box, and the flap assertions in the deform_section testset moved onto it too, so a section rescaled by its chord cannot pass.
Ideally one case that would have failed before Fit the contour generate_airfoils is handed, not a second wrap of it #294, i.e. driven from a wrapped contour rather than an analytic Kulfan section, so the test is a regression on the double wrap across the whole delta grid and not only at zero.
The unregularised fit underneath is #295 and not in scope here; this is coverage for the route as it now stands.
#294 pins that
generate_airfoilsfits the contour it is handed, but only for the delta=0 contour: its test leavesdelta_rangeunset and compares1.datagainst the directLeastSquaresFitof the handed contour. Everything written per deflection —airfoils/{id}_d<delta>.dat, and the_cp/_cfnode tables that share their geometry — has no test on its geometry at all.The gap matters because the delta files inherit the base fit rather than recomputing it:
generate_airfoil_aerotakeskulfan_to_coordinates(base)and runsdeform_sectionper delta (rotate aboutcrease_frac, re-shrink_wrapatclearance=0, refit). On the SK100 the nine blown-up sections carried their deflected files with them, and10_d10.datis the case worth knowing: it looks normalised because a large chord rescaled it, while its lower surface is a constantmin_clearance/chord. The existing coverage would not catch that —test/airfoil_aero/test_airfoil_aero.jlchecks a flap'sextrema(x)against [0, 1] within 0.01, which a rescaled blowup passes.What is wanted:
generate_airfoilsrun with adelta_rangespanning both signs, over a contour that has been shrink-wrapped first (the adapters' actual input shape —test/airfoil_aero/data/test_airfoil.datwrapped, as Fit the contour generate_airfoils is handed, not a second wrap of it #294's test does, needs no new fixture), asserting every written_d<delta>.datagainst the deflected geometry it should be: thickness and chordwise extent of the same order as the base section, and the delta=0 file unchanged from the existing check.deform_sectiontestset moved onto it too, so a section rescaled by its chord cannot pass.The unregularised fit underneath is #295 and not in scope here; this is coverage for the route as it now stands.