diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f6e1654..5c872947 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,12 @@ own `_d.dat` filename tag instead of the `delta_suffix` one the files were written under, which spells a minus sign `m` and a decimal point `p`, so `delta=-10` or `delta=2.5` found no `.dat` and drew nothing. +- `generate_airfoils` fits the contour it is handed rather than shrink-wrapping it a + second time. Both adapters wrap before they call, with the `wrap_method` their + settings name, so the second wrap discarded that setting and degenerated the Kulfan + fit: on the SK100's 45 mesh sections nine came out with `.dat` coordinates at 1e2 to + 1e4 instead of 0..1, and any consumer mapping the mesh onto a structure rejected the + geometry. ## VortexStepMethod v5.1.0 2026-09-11 @@ -29,12 +35,6 @@ ### Fixed -- `generate_airfoils` fits the contour it is handed rather than shrink-wrapping it a - second time. Both adapters wrap before they call, with the `wrap_method` their - settings name, so the second wrap discarded that setting and degenerated the Kulfan - fit: on the SK100's 45 mesh sections nine came out with `.dat` coordinates at 1e2 to - 1e4 instead of 0..1, and any consumer mapping the mesh onto a structure rejected the - geometry. - The `NONLIN` solver backtracks along each Newton step instead of always taking it whole, so it converges past stall where the full step used to cycle: on the `test/solver/solver_test_wing.yaml` wing at 26.6° it stopped 3.6% below `LOOP`'s diff --git a/test/airfoil_aero/test_airfoil_aero.jl b/test/airfoil_aero/test_airfoil_aero.jl index 70399ce8..cd09c3f5 100644 --- a/test/airfoil_aero/test_airfoil_aero.jl +++ b/test/airfoil_aero/test_airfoil_aero.jl @@ -283,8 +283,7 @@ end aero_solver=NeuralFoilSolver(model_size="medium"), verbose=false) @test ok == [1] _, written_y = read_dat_coords(joinpath(out, "airfoils", "1.dat")) - # A second shrink wrap inflates the section by its own clearance, 0.006, which is - # three orders of magnitude above the resampling error this tolerance allows. + # A second shrink wrap inflates the section by its clearance, 0.006 — 60x this bound. @test maximum(abs, collect(extrema(written_y)) .- collect(extrema(fitted_y))) < 1e-4 end