Repository navigation
Conversation
examples/validate_lift_drag.jl parks the kite at 150 m, trims the ground wind per block until v_a reaches its target, averages V3Kite's lift, drag and span-mean AoA, and queries AWETrim's POST /aero_forces (both LEI-V3 ROMs, at the ROM trim and at V3Kite's AoA). Saved to output/lift_drag_validation.json; fly = false re-queries without flying. examples/show_validation.jl shows it as an HTML page in the browser. Both are in the identification menu and on its docs page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rror Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It carries the POST /aero_forces endpoint validate_lift_drag.jl needs. A branch only in the local checkout (not pushed yet) is checked out as it is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
…ridle lines lift_drag's drag holds only the bridle share SymbolicAWEModels lumps onto the wing nodes (about 30 % of it), while the ROM's C_D includes every bridle line. drag_parts splits the drag into VSM wing, bridle, tether and KCU; the old lift_drag value is kept as drag_lift_drag. show_validation.jl adds a table of the split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
AWETRIM_ROM names the ROM; InitParams sends it as rom_config_path (so it is in the request and cache keys), opt_init refuses a reply whose rom_config names another file (check_rom), and validate_lift_drag.jl queries only it. The test fake server echoes rom_config like AWETrim; the pinned keys move. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…attack show_validation.jl takes the deviation from the ROM trim instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ty band Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tuning-log entry with the 1.60/1.76 m results, and a warning on the page show_validation.jl writes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aerostructural2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…size retries The new ROM turns ~43 % less (physical for its geometry). Replaying the failed startup requests: a 36 x 15 box with a 32x14 guess starts 5, 6, 8, 8.25 m/s, 30x13 and 34x15 cover 7 m/s; startup_retry_guess_sizes tries them before the elevation offsets. The depower seed is flat at 1.5 m. 3.5 m/s still has no startup path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Builds V3Kite's structure for the gui project (no model compile) and reads AWETrim's system file with AWETrim's own Python: canopy, bridle, KCU, the airborne total, the wing mass the trim uses and the tether mass per metre. V3Kite flies 21.0 kg airborne; AWETrim 22.0 kg since it added the 2.58 kg bridle to the wing (1.62 kg in V3Kite), 19.4 kg before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AWETrim aa25dfc added its 2.58 kg bridle to the point-mass wing: 22.0 kg airborne against V3Kite's 21.0 kg (validate_masses.jl). Every /init now sends system_config_path = awetrim_system_config(), AWETrim's LEI-V3 system file with the bridle mass set to AWETRIM_BRIDLE_MASS = 1.62 kg, written to output/awetrim_system/ with the ROMs next to it; its content is part of the request key. At 12.62 kg Maasvlakte 5 m/s could not trim along any startup guess; a 26 x 11 guess converges, so it is the last size retry. 5 m/s flies: all 10 criteria, 6.1 kW, power ratio 0.99. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the 1.62 kg bridle the 4 m/s startup request has no solution under the pattern box at kv 0.0408; recorded and replayed in AWETrim it converges at kv 0.030 (and 0.025), not with any guess, seed, turn-radius or tether-length change. kv is a column of winch_table.yaml again (winch_kv): 0.030 at 3 and 4 m/s, 0.0408 from 5 m/s up. build_winch sets wc.kv from it, which the winch flies and the requests send. Flown at 4 m/s: all 10 criteria, 3.1 kW, power ratio 0.99. OPT_REQUEST_RECORD (off by default) appends every POST body to a file for exact replays. Fixes the startup_retry_guess_sizes test edc039a broke. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The recorded 3.5 m/s startup request converges at kv 0.019-0.022 and fails at 0.015-0.018 and 0.023-0.030. New 3.5 m/s row at 0.020, and 0.020 at 3 m/s (untested) so kv does not rise as the wind drops. Flown: all 10 criteria, 1.9 kW, power ratio 1.02. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….62 kg wing The recorded 9 m/s startup request has no solution at the startup f_max of 6696 N with the 1.62 kg bridle; it converges from 6900 N up with the full pattern box. 0.96 (6912 N) is the smallest step that does. Flown: all 10 criteria (max force included), 17.8 kW, power ratio 0.89. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the 1.62 kg bridle the recorded Maasvlakte 10 m/s startup request converges only with symmetric off AND no climb limit (or without the box or the bridle mass); force cap, kv, seed and guess do not help. New pattern_shape_wind_ref (12.5 m/s at 100 m) with pattern_symmetric_shape_high and pattern_climb_angle_max_shape_high, read by symmetric_at / climb_angle_max_at. Flown at 10 m/s: all 10 criteria, 18.1 kW, power ratio 0.85; paths centred within 2.4°. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the 12.62 kg wing the 11 m/s startup has no solution at 150 m; 160 m converges but fails the curvature gate (margin 0.79). FC_LowWind gets high_wind_speed (14.0 m/s at the reference height) and high_wind_l_tether (180 m); 10 m/s keeps 150 m. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kv 0.020 at f_low 350 N needs reel_in_beta >= 21.4. Logs the Cabauw rebuild and the startup failures at 4, 8, 9 and 10 m/s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When no startup seed converges, setup_with_startup sets the run up again with the tether startup_retry_length_steps longer (traj_opt.yaml: [20.0]), through the new l_tether run input; solve_startup throws StartupNoPath for that. Cabauw 4 m/s retries at 170 m and flies. high_wind_l_tether 180 -> 170: Maasvlakte 11 m/s flies there. Cabauw 8 m/s still fails laps >= 2.5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AWETrim's default floor of 0° leaves Cabauw 9 m/s without a startup solution: the depowered kite trims at -0.5 to +0.4°. box.angle_of_attack_min (traj_opt.yaml: -7.0) is sent with every /init as angle_of_attack_limits; unset, it is neither sent nor in the cache key. Cabauw 8 m/s flies with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aloft From 16.5 m/s at 100 m (only Cabauw 9 and 10 m/s) the box's azimuth cap is 45° (was 36) and its elevation half-span cap 20° (was 15); neither wind has a startup solution otherwise. startup_retry_length_steps [10, 20] gives 10 m/s its 180 m start. Their 30-32 s laps hold 2.0 laps, so the laps criterion is run.min_laps_high (2.0) from min_laps_high_wind (16.5 m/s). Both fly all 10 criteria: 15.0 and 15.2 kW. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A rerun skipped the failed startup seeds as cached but, since a skip cost no retry, spent its budget on new seeds walked outward, ~4 min of 422s per rerun at Cabauw 10 m/s. Each listed seed is now tried once, sent or skipped, so a rerun moves on to the next length at once. startup_seed_offsets is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Compares V3Kite's lift and drag with AWETrim's reduced-order model (ROM) at the same power-tape length and apparent wind speed. All AWETrim requests now use one ROM,
rom_config_aerostructural2.yaml. Needs AWETrim'sPOST /aero_forcesand that ROM file, both on awegroup/AWETrim#31.AWETRIM_ROM = "rom_config_aerostructural2.yaml"(insrc/awetrim_client.jl) is sent asrom_config_pathwith every/init. Until now RKC sent no ROM, and the server used its default, the flight-corrected ROM.opt_initthrows (check_rom) when the reply names another file or none.rom_configlike AWETrim.examples/validate_lift_drag.jlparks the kite at 150 m, using thesimple_auto_parking.jlsetup. Per point(tape, v_a)it trims the ground wind until v_a reaches the target, then averages lift, drag,span_mean_aoaand v_a over 10 s. It then queries/aero_forcesat the measured v_a, at the ROM's own trim.drag_parts).lift_drag's drag holds only the ~30 % of the bridle drag that SymbolicAWEModels lumps onto the wing nodes (lift_drag/total_drag: count all bridle-line drag as wing drag, split by segment V3Kite.jl#93, Store the drag of each segment, not only its share on the end points SymbolicAWEModels.jl#437). It is kept asdrag_lift_drag, with the tether and KCU drag.output/lift_drag_validation.json;fly = falsere-queries AWETrim without flying.examples/show_validation.jlshows the saved results as an HTML page in the browser:menu2) and on the identification docs page.bin/install_awetriminstalls AWETrim'sfeat/server-aero-forcesbranch until #31 is merged..JETLSConfig.toml.default: inferred-type inlay hints are switched off.Result with
rom_config_aerostructural2.yaml(L / D in N):All four points are inside this ROM's validity band (1.6–2.2 m of tape). Lift agrees within ±6 %; the ROM's drag is 7–12 % higher at every point.
Switch
BRANCHinbin/install_awetrimback todeveloponce awegroup/AWETrim#31 is merged.🤖 Generated with Claude Code