Skip to content

Commit 044f811

Browse files
authored
Merge pull request #5 from harshabose/feat/e-mission-budget
Analysis E: site sweep, round-trip and one-way missions, SoC trace and checks
2 parents e407b45 + a482581 commit 044f811

16 files changed

Lines changed: 951 additions & 136 deletions

File tree

‎configs/README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ recommendation. Add scenarios by adding lines; refer to them by name in `study.y
234234
| `A`, `D`, `F`, `E`, `Q2` | grids and scenario lists for the quick analyses. `A` also takes `alpha_min_deg` and `cl_frac`: the wing angle-of-attack band the feasibility scan must stay inside (lower end of the lift fit; the angle where C_L = `cl_frac` x C_L,max, provisional because C_L,max is), and `vrs_enforce` (default `false`: the rotor V_c / v_h ratio is only reported; `true`: also infeasible when it is below `-descent.kappa`) |
235235
| `D` (more) | Entry is the AIRBRAKE exit at `max(AIRSPEED_MIN - 2, q_assist_speed_ms)` (`entry_convention` `tas`/`eas`). `ff_mode` (`lift_aware` is an oracle at tau 0 and scale 1), `theta_fw0_deg` (placeholder), `pit_lim_mode`, `enforce_alpha` (report-only checks always run), `alpha_gate_ms`, `sink_tol_ms`, `rotor_lag_s`, `v0_eas_ms` (diagnostic grid), `sens` (sensitivity sweeps), `recommendation` (`ensemble_n` a power of two, `percentile`, `corners`, `n_boot`), `trade`. `E.a_plan_fallback_ms2` is used when D gives no recommendation |
236236
| `Q2`, `E` (more) | `Q2` also takes `soc`, `conventions` (`tas`, `eas`: how `AIRSPEED_MIN` is read) and `feed_convention` (the one E reads), `isa_offset_k`, `n_speed`, `write_profile`. `E.a_fwd_mode` is `case` (Q2 at E's own site), `worst` (the Q2 grid) or `mission` (`a_fwd` in `mission.yaml`); `E.a_fwd_metric` is `min` or `equiv` |
237+
| `E` (sites) | `E.sites_amsl_m` (airfield elevations; the cruise altitude is the site plus `mission.profile.climb_height_m`) and `E.missions` (`round_trip`, `one_way`). The range is an output; `ranges_km` and the requirements are report points. `mission.yaml` no longer holds `cruise_amsl_m`, `ground_amsl_m`, `v_climb` or `v_glide` (omit the last two to use the cruise speed) and gains `climb_height_m`, `v_cruise_ref_amsl_m`, `payload_kg`, `t_drop_s` and `battery_window.soc_start` |
237238
| `C`, `B2` | ensemble size and seed, search seeds, population, iterations (`C` also `a_plan_source`) |
238239
| `B1` | scenarios, the altitude bands to sweep, the distance cap, the collocation mesh |
239240
| `sensitivity` | the scenario, the two Morris sizes, and whether to include the energy budget |

‎configs/mission.yaml‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@
22
# Same format and status words as vehicle.yaml. TBD = placeholder (draft only).
33

44
profile: # the idealised flight used by the energy budget (analysis E)
5-
cruise_amsl_m: {value: 1500.0, unit: "m", source: "cruise altitude above mean sea level; mission set (O-14)", status: TBD}
6-
ground_amsl_m: {value: 0.0, unit: "m", source: "take-off and landing elevation; mission set (O-14)", status: TBD}
5+
climb_height_m: {value: 200.0, unit: "m", source: "climb above the airfield; cruise altitude = site + this (the sites are swept in study.yaml, E.sites_amsl_m)", status: TBD}
76
isa_offset_k: {value: 0.0, unit: "K", source: "ISA temperature offset for the budget", status: TBD}
87
clearance_agl_m: {value: 30.0, unit: "m", source: "hover climb before the forward transition", status: TBD}
98
vz_takeoff: {value: 2.0, unit: "m/s", source: "vertical climb rate in take-off", status: TBD}
109
t_hover_pre: {value: 10.0, unit: "s", source: "hover on the pad before lift-off", status: TBD}
1110
a_fwd: {value: 1.5, unit: "m/s^2", source: "forward-transition acceleration; ASSUMED until analysis C", status: TBD}
12-
v_climb: {value: 20.0, unit: "m/s", source: "climb true airspeed", status: TBD}
1311
roc: {value: 2.5, unit: "m/s", source: "rate of climb", status: TBD}
14-
v_cruise: {value: 22.5, unit: "m/s", source: "cruise true airspeed; 22.5 TAS at the 1500 m reference altitude = 20.9 EAS (same as controller.cruise_stub.v_cruise)", status: TBD}
15-
v_glide: {value: 20.0, unit: "m/s", source: "pusher-off glide true airspeed in descent", status: TBD}
12+
v_cruise: {value: 22.5, unit: "m/s", source: "design true airspeed at v_cruise_ref_amsl_m (22.5 TAS at 1500 m = 20.9 EAS); at any other altitude the TAS follows from the density (same dynamic pressure). Same as controller.cruise_stub.v_cruise", status: TBD}
13+
v_cruise_ref_amsl_m: {value: 1500.0, unit: "m", source: "altitude where the design speeds hold", status: TBD}
14+
payload_kg: {value: 5.0, unit: "kg", source: "mass delivered at the destination; the return leg flies at vehicle mass minus this (O-12; 1 - 5/26.664 = 0.8125, scenario S-06)", status: TBD}
15+
t_drop_s: {value: 0.0, unit: "s", source: "hover at the destination for the drop, at the loaded mass", status: TBD}
16+
# v_climb, v_glide: omit to use the cruise speed, or add {value, unit, source, status} (design TAS at v_cruise_ref_amsl_m)
1617
h_bt_agl_m: {value: 30.0, unit: "m", source: "height above ground where the back-transition starts", status: TBD}
17-
soc_mean: {value: 0.6, unit: "-", source: "one mean state of charge used for all segment powers", status: TBD}
18+
soc_mean: {value: 0.6, unit: "-", source: "one mean state of charge used for all segment powers (the mean of the trace, 1.0 to 0.2)", status: TBD}
1819
t_go_around: {value: 60.0, unit: "s", source: "go-around hover time (reserve)", status: TBD}
1920
t_hold: {value: 0.0, unit: "s", source: "hold at the landing zone (reserve)", status: TBD}
2021
d_diversion_m: {value: 5000.0, unit: "m", source: "diversion distance (reserve)", status: TBD}
@@ -24,6 +25,7 @@ battery_window: # usable energy = eta_usable * soh * temp_factor * nominal ener
2425
eta_usable: {value: 0.8, unit: "-", source: "usable fraction of nominal energy; BMS and cut-off limits", status: TBD}
2526
soh: {value: 1.0, unit: "-", source: "state of health (1 = new)", status: TBD}
2627
temp_factor: {value: 1.0, unit: "-", source: "temperature derating (1 = 25 degC)", status: TBD}
28+
soc_start: {value: 1.0, unit: "-", source: "state of charge at take-off (a full pack); the usable energy is eta_usable of nominal, so the mission ends at 1 - eta_usable", status: TBD}
2729
soc_eod: {value: 0.1, unit: "-", source: "state of charge at end of discharge, for the hover power check", status: TBD}
2830

2931
descent: # analysis F

‎configs/study.yaml‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,9 @@ F: # landing descent profile
7070
scenarios: [S-01, S-02, S-03, S-05, S-06]
7171

7272
E: # energy budget
73-
cruise_amsl_m: [0, 1500, 2500, 5000] # one budget per cruise altitude (1500 m = reference)
74-
ranges_km: [50, 100, 150] # ranges shorter than the climb+descent distance are skipped
73+
sites_amsl_m: [0, 1500, 2500, 5000] # airfield elevations; cruise = site + mission.profile.climb_height_m
74+
missions: [round_trip, one_way] # the range is an OUTPUT; requirements are comparison columns
75+
ranges_km: [50, 100, 150] # report points: one-way distance, or the radius of a round trip
7576
a_plan_fallback_ms2: 2.5 # Q_TRANS_DECEL used when D gives no recommendation
7677
a_fwd_mode: case # forward-transition acceleration: case (Q2 at E's site) | worst (Q2 grid) | mission
7778
a_fwd_metric: min # min (worst over speed) | equiv (distance-equivalent constant a)

0 commit comments

Comments
 (0)