Executive design review · 23 August 2026

Bdx

200 N-class small turbojet (provisional; EA recommends 180-210 N) UAV with conventional horizontal tail · baseline-to-optimized evidence with an embedded model of the actual exported mesh.

12/12 preliminary-design gates pass
328km/h dash
0.25hours endurance
2.56m span
20.8kg MTOW
Loading embedded mesh…
01 · Decision view

Mission fit and flight-worthiness

Headline values come from the optimized aircraft’s own artifacts. Every gate below carries one-line evidence and a source path; the green state is not inferred from a stage’s top-level flag alone.

Ready for wider review

The concept meets the encoded mission and all current preliminary-design gates. This is a traceable conceptual design verdict—not an airworthiness certification.

Concept source: designs/bdx/design.yaml · Optimized spec: results/bdx/optimized/design.yaml

bdx — Elite Aerosports BDX (standard 2.65 m sport jet)

1. Intent and configuration summary

Provisional parametric reconstruction of the standard Elite Aerosports EA BDX RC sport turbine jet, initialized for future use as the canonical aero-design source behind the Elodin rc-jet example (per the BDX handoff document). Configuration: single-turbine sport jet; pointed nose; faired canopy blending into a dorsal spine; deep mid-body with flat belly and strong aft upsweep to a high exhaust; low-mid trapezoidal wing with modest LE sweep and near-straight trailing edge; conventional swept horizontal tail mounted high on the tail cone; one large, heavily raked centerline fin blended into the dorsal spine. Excluded variants: BDXL, BDXs, IND/UAS.

This bundle is a geometry checkpoint, not a validated flight-dynamics model. Every value below carries a provenance class following the handoff's convention: A manufacturer-supported, B independent corroboration, C engineering derivation, D placeholder.

2. Sources and view classification

Source Classification Use
scratch/bdx/EA_BDX_Elodin_Aero_Handoff.md Requirements/corrections handoff (2026-08-23) Manufacturer facts, evidence classes, work-package intent
Elodin BDX_Simulation_Whitepaper.md (github.com/elodin-sys/elodin@main) Prior sim documentation Class-D priors only (endurance, stall target, TSFC); its wing area/tail estimates are superseded by this trace
scratch/bdx/bdx-top-bottom-and-sides.webp Four-view BDXL livery sheet (orthographic) Primary trace. Top-right sub-view = top view (canopy visible) → sketch-top.png. Bottom-left sub-view = fuselage+fin side profile (nose left) → sketch-side.png. Top-left sub-view = bottom view (cross-check only). Bottom-right = mirrored side profile (cross-check only)
scratch/bdx/bdx-side.webp BDXL 3/4 side render (mild perspective) Qualitative cross-check of side silhouette, stab height, exhaust
scratch/bdx/bdx-1.webp Photo, front-3/4, standard-BDX-class airframe Wing vertical position, dihedral, inlet location cross-check
scratch/bdx/bdx-2.webp Render, top-3/4 (standard BDX scheme) Planform-family and fin-shape cross-check
scratch/bdx/bdx-3.webp Photo, rear-3/4, airframe labeled BDXL Stab mounting height, fin shape cross-check

PNG conversion record: all .webp sources decoded with Pillow, EXIF orientation applied (none present), converted to RGB PNG. sketch-top.png and sketch-side.png are crops of the two primary sub-views from the livery sheet; overlapping pixels of the sheet's central logo text were replaced with the local background gray (documented scrub, 418 px / 40 px). Both outputs verified to start with the PNG signature 89 50 4E 47 0D 0A 1A 0A. No usable front view was supplied, so sketch-front.png does not exist and section curvature is inferred (see §7).

Variant caveat: the orthographic sheet and two photos depict the BDXL, the stretched family variant; the handoff scopes this concept to the standard BDX. Family lines are shared (confirmed against bdx-2), so the sheet is used for shape ratios only, anchored to standard-BDX absolute span/length, and every sheet-derived ratio carries a widened tolerance for variant drift.

3. Requirement record

Requirement Value (SI) Source / conversion Class Status in bundle
Wingspan 2.65 m (104 in) EA product page via handoff A wing.span_m, hard prior
Overall length 2.80 m (110 in) EA product page via handoff A fuselage.length_m, hard prior
Listed weight 18.14–19.05 kg (40–42 lb), state unknown EA via handoff A mass.operating_empty_mass_kg: 18.6 (midpoint); state ambiguity documented, not resolved
Recommended thrust 180–210 N EA via handoff A 200 N placeholder engine within band
Main fuel cell 6.0 L → 4.8 kg at 800 kg/m³ EA via handoff; 6.0 L × 0.80 kg/L A (volume), C (mass) mass.fuel_mass_kg: 4.8 initial guess, sized mode; flag any sized fuel > 4.8 kg
Advertised speed > 200 mph = 89.41 m/s = M≈0.26 SL EA marketing via handoff (not a measured map) A (claim) mission.dash_mach_cap: 0.30 cap above claim
CG guidance "back of wing tube" EA via handoff A (text) Converted to 1.42 m via reconstructed planform (§5), class C
Aerobatic capability qualitative ("highly aerobatic, forgiving") EA via handoff A (qualitative) mission.limit_positive_g: 6.0 / -3.0 inferred sport-class practice (C)
Endurance 900 s Whitepaper "15–20 min typical", low end D mission.endurance_s
Stall speed ≤ 25 m/s Whitepaper claim D mission.stall_speed_max_mps target, easily met by reconstructed wing
Airfoil unpublished Handoff §2 (BD-5 lineage does not establish BDX section) NACA 0012 explicitly labeled surrogate
Construction composite sandwich, carbon tubes (wing tube 38.1 × 34 × 1220 mm listed) EA via handoff A Not modeled; aluminum wingbox surrogate retained (§6)

4. Coordinate, scale, and rectification method

  • Convention: x/L = 0 at nose tip, x/L = 1 at tail; positive y centerline → right wingtip; vertical datum z = 0 at the nose tip center, positive up. All station z_offset_m values, wing.z_root_m, htail.z_m, and vtail.z_root_m share this datum.
  • The livery sheet was segmented by background subtraction (saturation > 38 or value < 118/ > 226 against the smooth gray gradient), connected components labeled, and interior holes filled. Each of the four panels has its own scale; every measurement is normalized by that panel's own nose-to-tail pixel length before conversion to meters with L = 2.80 m (class A).
  • Panel lengths: top view 342 px, bottom view 333 px, side views 415/414 px.
  • Edges (wing/stab LE and TE) are least-squares line fits over the straight segments of the silhouette boundary; left/right semi-span fits agreed to 0.1° on wing LE sweep.
  • Not rectified: the sheet is treated as orthographic as drawn (bootstrap — approximate agent image-space measurement, no four-point control or grid scale available). Oblique photos/renders were used only as qualitative cross-checks, never for numbers.

5. Measurement and inference record

Scale: 1 px(top) = 8.19 mm, 1 px(side) = 6.75 mm at L = 2.80 m. Base pixel uncertainty ±2 px plus variant drift is folded into the stated tolerances.

Planform (top view trace, sketch-top.png)

Item Ratio (of L) Value @ L=2.80 Tol Provenance
Span / length 0.953 (top), 0.964 (bottom view) measured (sheet, BDXL)
Span (adopted) 0.9464 2.65 m ±0.03 L prior A anchored; sheet within 2%
Wing root chord (centerline extrapolation) 0.2348 0.657 m ±0.020 L measured
Wing taper (trapezoid fit at tip) 0.53 ±0.07 measured (tip rounded; fit 0.52–0.55)
Wing LE sweep +12.5° ±3.0° measured (fits +12.44/+12.51)
Wing TE sweep −0.8° (≈straight) info measured; encoded via root chord + taper
Wing root LE station 0.4021 1.126 m ±0.035 L measured (LE root fairing blends 0.35–0.42 L)
Derived wing area 1.332 m² output C; supersedes whitepaper 0.75 m² estimate (wing loading ~143 g/dm² — normal turbine-jet band)
Derived AR / MAC 5.27 / 0.518 m output C
Stab span 0.4649 1.302 m ±0.03 L measured
Stab root chord (centerline) 0.1578 0.442 m ±0.015 L measured
Stab LE sweep / TE sweep +23.2° / −0.6° ±3° measured
Stab taper 0.38 ±0.06 measured (rounded tip; 0.35–0.39)
Stab root LE station 0.8218 2.301 m ±0.02 L measured

Side profile (side view trace, sketch-side.png)

Fuselage loft at shared stations — widths from top view, heights and centerline offsets from side view (z datum: nose tip center, up positive):

x/L Width m Height m z_offset m Provenance
0.00 0 0 0.000 measured (point)
0.10 0.180 0.223 +0.037 measured
0.223 0.254 0.330 +0.077 Studio re-trace (user): windshield break moved forward and raised from the agent's 0.25 L / 0.256 m pre-windshield station
0.33 0.254 0.385 +0.105 measured (canopy top just aft of windshield; width still forward of the wing-root fairing)
0.64 0.356 0.440 +0.141 width measured near max (0.66 L); height inferred ±10% (fin-root blend ambiguity)
0.78 0.277 0.424 +0.131 height/z inferred (deck under fin estimated by spine→nozzle interpolation)
0.92 0.160 0.279 +0.173 width inferred (stab occludes; taper interpolation); height/z inferred as above
1.00 0.060 0.060 +0.280 measured (exhaust nub center +0.104 L; nozzle Ø ≈ 0.09 m traced, 0.06 adopted)

Other side-view items:

Item Value Tol Provenance
Belly line flat from 0.10–0.78 L, then boattail upsweep to tail measured
Fin root LE station 1.85 m (0.66 L) ±0.10 m measured (LE leaves spine; blend 0.63–0.68 L)
Fin root chord (along deck to rudder TE root ≈0.99 L) 0.92 m ±0.10 m measured, deck line inferred
Fin span above deck 0.40 m ±0.06 m measured (tip plateau 0.93–0.985 L)
Fin LE sweep 62° from fin span axis ±5° measured
Fin tip chord 0.154 m → taper 0.17 ±0.05 measured
Fin cant 0° (single centerline fin) ±3° measured (top view symmetry)

Inferences beyond the sketch (not visible/derivable from views)

Item Value Rationale Class
Wing vertical position wing.z_root_m +0.03 m photos (bdx-1): wing exits lower third of body C, ±0.05
Dihedral photos: flat aerobatic wing C
Twist 0° root / −1° tip small washout consistent with advertised forgiving stall; not visible in views D
Stab height htail.z_m +0.24 m photos (bdx-3, bdx-side): stab high on tail cone under fin; also required for the root chord to stay inside the upswept aft loft C, ±0.06
Stab incidence unknown; trim solved downstream D
Section powers belly bottom_power 2.5–3.0 mid-body, else ellipse 2.0 flat wide belly visible in bottom view/photos; no front view — within the supported split-super-ellipse range of the 2026-08-20 parameter audit C/D
Engine dims/mass Ø0.120 m, 0.350 m, 2.6 kg typical published values of the 180–210 N class; no engine identified D
Engine fuel flow 0.006667 kg/s max whitepaper TSFC 0.12 kg/(N·h) × 200 N ÷ 3600 D
Thrust line engine.z_m +0.17 m traced exhaust-line region; informational for internal installation C
OEM CG 1.42 m "back of wing tube": tube near max-thickness band 30–40% root chord / ~35% MAC of the reconstructed planform → 1.32–1.46 m C, ±0.08; must be re-measured on hardware
Equipment bay 0.60–1.10 m EA guidance to build/battery forward; bay 0.50×0.20×0.16 m C
Fuel tank centroid 1.45 m main cell near CG/wing tube C, bounds 1.30–1.70 in sketch block
mass.systems_kg 3.0, avionics_kg 0.5 eight-servo + retract + ECU class estimate D
Static margin band 0.05–0.15 conventional-tail sport-jet practice D
Cruise CL 0.18 / M 0.12 ~40 m/s level flight at ~23 kg gross, reconstructed area, 300 m C from D inputs

Unit conversions shown: 104 in = 2.6416 ≈ 2.65 m; 110 in = 2.794 ≈ 2.80 m; 40–42 lb = 18.14–19.05 kg; 200 mph = 89.408 m/s = 173.8 kt; 6.0 L × 0.80 kg/L = 4.8 kg; 0.12 kg/(N·h) × 200 N = 24 kg/h = 0.006667 kg/s.

6. Template defaults retained (dotted paths, rationale)

  • engine.thrust_lapse_*, engine.tsfc_part_*, engine.tsfc_mach_k, engine.min_throttle, engine.fuel_density_kg_m3 — solver calibration constants; a sketch proves nothing about them (skill rule: do not retune from a sketch).
  • fuselage.nose_fine_ratio, fuselage.tail_fine_ratio — legacy once explicit stations are active; kept at template values.
  • wing.t_over_c: 0.12 — surrogate thickness (BD-5 heritage is 12%, but the BDX section is unpublished); htail.t_over_c: 0.10, vtail.t_over_c: 0.07 typical thin tail surfaces (0.07 chosen below template's 0.10 for the thin blended fin; still a class-D assumption).
  • mission.safety_factor: 1.5, mission.reserve_fuel_fraction: 0.08 — template defaults; no BDX data.
  • mission.cl_max: 1.2 declared on section basis (class C): conservative against published NACA 0012/2412 section maxima at Re 0.5–1.5×10⁶; the schema's documented 0.9 × cos(quarter-sweep) conversion yields aircraft CLmax ≈ 1.06. Replaces the template's aircraft-basis 1.2 (class D), which overstated the corner-case lift target and pushed the +6 g structures load solve past the 12° linear-VLM honesty domain. No BDX stall measurement exists either way; stall claims remain assumption-labeled.
  • structures.* — full template block including Al7050 material: the real airframe is composite sandwich with carbon tubes, but no laminate schedule is published, so the calibrated aluminum wingbox surrogate is retained deliberately (handoff §19). Do not present structural margins as BDX truth.
  • mass.landing_gear_fraction: 0.035, mass.contingency_fraction: 0.08 — template defaults.
  • solver.* — template numerical controls, including np_shift_mac: 0.04305 and cm_washout_per_deg: 0.00362 (calibrated at the template's 32° sweep reference; the balance model scales across this concept's envelope).

7. Visible or known features not representable in the schema

  • Flush side/belly inlets near the wing root (visible in bdx-1): no inlet component exists; internal-flow and inlet drag effects are absent.
  • Canopy is modeled only as loft height/z-offset (no separate transparent component).
  • Ventral strakes / aft belly fences hinted in bdx-side: not modeled.
  • Landing gear, gear doors (visible in photos): not modeled.
  • Exhaust pipe nub beyond the tail cone: folded into the last station.
  • Blended fin-root fairing: the dorsal blend is represented as a plain trapezoid fin with a long root chord; the builder derives the fin attachment height from the body (≈ +0.26 m), slightly below the sheet's visual fin base (+0.34 m), so the rendered fin sits marginally lower than the livery art.
  • Control surfaces (ailerons, elevator, rudder, flaps with published mm throws): geometry hinge data insufficient; flight_dynamics left disabled. Converting published throws to hinge angles is Priority-0 follow-up work per the handoff.
  • No front view: cross-section curvature (super-ellipse powers) is inferred from photos; expect section-shape error until a front view or hardware measurement exists.
  • Sheet depicts the BDXL variant; standard-BDX proportions may differ within the widened tolerances recorded above.

8. Geometry-checkpoint iteration log

  • Iteration 1: initial authored bundle. All geometry gates passed (readback.matches_spec, stl_bbox.ok, mesh_checks.ok, packing.ok, empty error queue, shape fidelity ok). Visual mismatch: windshield/canopy rise too gradual — stations at 0.25/0.42 L interpolated the canopy top ~0.07 m low around 0.31 L versus the side trace.
  • Iteration 2: source fix — replaced the 0.42 L station with the measured canopy-top station at 0.33 L (w 0.254, h 0.385, z +0.105); the 0.33→0.64 interpolation now reproduces the measured 0.405 m height at 0.42 L. All gates pass again (ok: true, readback match, STL bbox 2.80 × 2.65 × 0.746 m, 16/16 mesh checks, packing ok, empty error queue). Three-view windshield/canopy silhouette now within the recorded station tolerances; remaining known deviations are the documented fin-attachment height (builder-derived +0.26 m vs sheet +0.34 m) and the straight-trapezoid dorsal blend. Loop stopped at iteration 2 of 3.
  • Iteration 3 (Studio review): user re-traced in Design Studio — station 3 moved from 0.25 L (h 0.256, z +0.040) to 0.223 L (h 0.330, z +0.077), sharpening the windshield break. The Studio save serialized the schema and dropped optional sketch-contract fields; treatment: inspiration, hard_scale: 3, fidelity_weight: 1, and the measured fin_* priors were restored from this brief's measurement record before the pre-MDO geometry checkpoint. No other value changed.
  • Iteration 4 (structures-gate investigation): first full pipeline run passed 11/12 gates; the structures gate failed honestly — the ±g load case flies a corner condition targeting 79.2% of aircraft CLmax, and with the template-defaulted aircraft-basis CLmax 1.2 the +6 g solve required α = 12.45°, past the 12° linear-VLM domain (strength itself had large margin: failure index −0.92, tip deflection 4 mm). Fix: declare cl_max: 1.2 on section basis (see §6), lowering the corner-case target to CL ≈ 0.84 (α ≈ 11°) while preserving the +6 g/−3 g aerobatic requirement.

Sketch measurement worksheet

Generated by open-air Design Studio. Preserve source/inference notes in the brief above this section.

Rectification and scale

  • top: source not supplied; control points not rectified (no four-point control set); fuselage 24.50 grid squares; 0.11429 m/grid square.
  • side: source not supplied; control points not rectified (no four-point control set); fuselage 24.50 grid squares; 0.11429 m/grid square.
  • front: source not supplied; control points not rectified (no four-point control set); fuselage 24.50 grid squares; 0.11429 m/grid square.

Measured geometry and tolerances

Quantity Measured value Tolerance
Fuselage length 2.8000 m source scale
Fuselage maximum width 0.3600 m station envelope
Fuselage maximum height 0.4400 m station envelope
Wing span 2.6500 m source grid resolution
Wing root chord 0.6570 m source grid resolution
Wing tip chord 0.3482 m derived from taper
Wing span / length 0.946429 ±0.0300
Wing root chord / length 0.234643 ±0.0200
Wing leading-edge sweep 12.5000 deg ±3.0000 deg
Wing taper 0.530000 ±0.0700
Wing root LE 1.1260 m source grid resolution
Wing root LE / length 0.402143 ±0.0350
Fin count 1 centerline or symmetric pair
Fin span 0.4000 m document source tolerance
Fin root chord 0.9200 m document source tolerance
Fin tip chord 0.1564 m derived from taper
Fin leading-edge sweep 62.0000 deg document source tolerance
Fin cant 0.0000 deg document source tolerance
Fin root location (x, y, z) (1.8500, 0.0000, 0.2600) m document source tolerance

Fuselage stations

x/L Width (m) Height (m) z offset (m) Side power Top power Bottom power
0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000
0.10000 0.18000 0.22300 0.03700 2.00000 2.00000 2.50000
0.22294 0.25400 0.33039 0.07719 2.00000 2.00000 3.00000
0.33000 0.25400 0.38500 0.10500 2.00000 2.00000 3.00000
0.64000 0.35600 0.44000 0.14100 2.00000 2.00000 3.00000
0.78000 0.27700 0.42400 0.13100 2.00000 2.00000 2.50000
0.92000 0.16000 0.27900 0.17300 2.00000 2.00000 2.00000
1.00000 0.06000 0.06000 0.28000 2.00000 2.00000 2.00000

Inference record

Document every value inferred rather than directly traced (including hidden-view dimensions, airfoil, gauges, material, propulsion assumptions, and tolerances) in the narrative above.

Requirements scorecard

RequirementTargetPredictedVerdict
Engine200 N-class small turbojet (provisional; EA recommends 180-210 N)200 N-class small turbojet (provisional; EA recommends 180-210 N)MET
Payload0.0 kg0.0 kgMET
Endurance0.25 h0.25 hMET
Dashmaximize; M ≤ 0.30328 km/h · M 0.27MET
Configurationsketch envelope2.56 m span · 13.6° sweepMET
Tier C · artifact truth
PASS · Schema

Source and delivered specifications deserialize and preserve invariant engine/payload requirements.

source=yes; optimized=yes; engine requirement=yes; payload requirement=yes

design.yaml · Upstream response: Correct design.yaml values or schema violations; never patch generated JSON.
Tier C · artifact truth
PASS · Geometry truth

The exported mesh—not only the intended parameters—matches the requested aircraft.

read-back=yes; bbox=yes; mesh checks=16

optimized/geometry.json · Upstream response: Fix OpenVSP construction, section placement, or source geometry, then rerun geometry.
Tier A · design feasibility
PASS · Packing

Engine, payload, and fuel occupy non-overlapping usable volume.

fuel-volume margin 0.106 m³; engine/payload clear

optimized/geometry.json · Upstream response: Move/resize bays, increase body or tank volume, or reduce required fuel.
Tier A · design feasibility
PASS · Balance

Measured static margin is inside the mission band at full and reserve fuel.

independently measured SM full 0.148; reserve 0.128 MAC

optimized/aero.json · Upstream response: Adjust wing, payload, fuel, or engine longitudinal stations; recalibrate NP only with OAS evidence.
Tier A · design feasibility
PASS · Pitch trim

The aircraft closes lift and pitching moment at its selected wing twist or tail incidence.

tail incidence -1.689° vs spec -1.690°; CM residual 0.0000

optimized/aero.json · Upstream response: Adjust twist/tail incidence, airfoil moment, CG/wing station, or OAS-backed calibration.
Tier A · design feasibility
PASS · Stall

Wing loading remains compatible with the documented CLmax assumption.

Vstall 16.816 m/s ≤ 25.0 m/s at CLmax 1.20

optimized/aero.json · Upstream response: Increase wing area, reduce MTOW, or change CLmax only with aerodynamic evidence.
Tier A · design feasibility
PASS · Directional stability

Cant-corrected vertical-tail volume is in the conceptual stability band.

cant-corrected fin volume Vv 0.0476 in [0.02, 0.09]

optimized/aero.json · Upstream response: Adjust fin area, moment arm, cant, or CG—not the acceptance band.
Tier A · design feasibility
PASS · Structures

The OAS wingbox survives the positive limit load with the encoded safety factor.

+6g failure index -0.923; CL 0.842/0.842; lift closed=yes; mass closed=yes; tip deflection 0.004 m

optimized/structures.json · Upstream response: Increase skin/spar gauge, section depth, or material capability; reduce load only by changing requirements.
Tier A · design feasibility
PASS · Endurance & thrust

The closed fuel budget meets endurance and installed thrust covers modeled drag.

0.25 h; cruise/dash thrust ≥ buildup drag

optimized/aero.json + baseline/mdo.json · Upstream response: Trade fuel, mass, drag, cruise condition, wing geometry, or propulsion assumptions upstream.
Tier B · model consistency
PASS · MDO honesty

The selected optimum is feasible and reproduces in independent OAS verification.

feasible=yes; driver=yes; post-delivery verify=yes; calibration=yes; frozen=yes; 18 starts

baseline/mdo.json · Upstream response: Fix scaling, bounds, derivatives, or the surrogate/OAS mismatch; do not trust driver success alone.
Tier C · artifact truth
PASS · Shape fidelity

Delivered proportions stay inside the hard identity bound and every soft-prior departure is explained.

span/L 0.92; root/L 0.21; sweep 13.6°; 5 scored shape departures; 6 total audit records (Clamping to the sketch edge worsens the weighted objective by 0.0002 and costs 0.04 m/s dash.; Clamping to the sketch edge worsens the weighted objective by 0.0014 and costs 0.30 m/s dash.)

optimized/design.yaml + baseline/mdo.json · Upstream response: Fix unjustified departures or the upstream physics; never widen the hard identity bound silently.
Tier B · model consistency
PASS · Cross-checks & traceability

Required analytical identities and declared-scope solver checks pass, method spread is disclosed, and headline values reproduce from same-phase artifacts.

core 12/12; VSPAERO/OAS CLα ratio 0.976; NP method spread 0.008 MAC (diagnostic); report Mach 0.268 vs recomputed 0.268; MTOW report/aero/MDO 20.797/20.797/20.797 kg; L/D report/aero/MDO 5.007/5.007/5.007

optimized/validation.json + optimized/report.json · Upstream response: Use the failed validation check name to fix its upstream model or calibration.
02 · Visual evidence

Artifact, performance, loads, and margins

The first figure and interactive hero are rendered from the exported STL itself. The remaining figures expose the numerical story: what changed, where drag and mass live, and how close the design sits to its constraints.

Artifact truth

Exported-aircraft three-view

Exported-aircraft three-view
Orthographic projections drawn from the optimized STL, not from design parameters.
Design intent

Concept sketch · side

Concept sketch · side
Version-controlled source sketch shown beside the artifact-derived three-view for direct shape-fidelity review.
Design intent

Concept sketch · top

Concept sketch · top
Version-controlled source sketch shown beside the artifact-derived three-view for direct shape-fidelity review.
Design evolution

Baseline versus optimized

Baseline versus optimized
Same-unit comparisons expose the performance gain and its mass, fuel, and geometry trades.
Balance

CG travel and evaluated neutral point

CG travel and evaluated neutral point
Full- and reserve-fuel CG stations are shown against the static-margin-derived allowable band.
Aerodynamics

OAS aerodynamic polar

OAS aerodynamic polar
Lift and drag behavior from the optimized wing model over the analyzed angle-of-attack range.
Mass properties

Mass breakdown

Mass breakdown
Delivered mass buildup, including payload, fuel, propulsion, airframe, systems, and contingency.
Aerodynamics

Parasite-drag buildup

Parasite-drag buildup
Explicit component contributions prevent a single unexplained CD0 from hiding the performance budget.
Loads

Spanwise lift reference

Spanwise lift reference
Spanwise lift distribution with an elliptic reference for rapid shape and load sanity checking.
Optimization

Constraint margins

Constraint margins
Positive bars are feasible margins; bars near zero identify active design drivers.
03 · Design evolution

From source or sketch to delivered design

The baseline is the aircraft as drawn; the optimizer answers what it presented. Both columns below are read from their own phase artifacts — the two phases are different aircraft and are never mixed inside one number. The delivered configuration is checked by a separate OAS solve; stability evidence is labeled by method.

Artifact truth · baseline

Baseline aircraft three-view

Baseline three-view
Orthographic projections drawn from the baseline STL — the as-drawn aircraft before any optimization.
Baseline phase evidence

What the baseline presented

  • Static margin 0.204 MAC sits above the 0.05–0.15 design band (measured NP 1.526 m).
  • Pitch trim closes with tail incidence at -1.22° against a +0.00° spec setting.
  • Stall 15.3 m/s against the 25 m/s requirement, from effective CLmax 1.07.
  • Thrust-limited dash 85.1 m/s (M 0.25 vs cap 0.30).
  • Endurance 923 s against the 900 s target (met).
  • Wingbox at ±limit load: +g KS -0.95, −g KS -0.96 (negative values are margin).

Evidence: results/bdx/baseline/{aero,sizing,structures}.json

What the optimizer changed, and the effect

QuantityBaselineOptimizedChange
Wing span2.650 m2.562 m-0.088 m (-3.3%)
Wing area1.332 m²1.108 m²-0.224 m² (-16.8%)
Aspect ratio5.275.93+0.66 (+12.4%)
Taper0.5300.456-0.074
LE sweep12.5 deg13.6 deg+1.1 deg
AirfoilNACA 0012NACA 2412changed
Thickness t/c0.1200.090-0.030
Tip twist-1.00 deg-1.00 degunchanged
MTOW20.81 kg20.80 kg-0.02 kg (-0.1%)
Fuel2.21 kg2.20 kg-0.02 kg (-0.8%)
Dash speed307 km/h328 km/h+22 km/h (+7.1%)
Endurance0.26 h0.25 h-0.01 h (-2.4%)
Cruise L/D5.195.01-0.19 (-3.6%)
Stall speed15.3 m/s16.8 m/s+1.5 m/s (+9.8%)
Static margin (full)0.204 MAC0.148 MAC-0.056 MAC
Trim tail incidence-1.22 deg-1.69 deg-0.47 deg

Sketch envelope

Mission, topology, and proportions become a validated, version-controlled concept specification.

Sized baseline

Fuel and MTOW close at 0.26 h; artifact geometry and OAS models establish the reference.

Multi-start MDO

18 starts maximize dash inside shape, trim, balance, packing, stall, and structure constraints.

Verified optimum

Separate OAS and mesh-truth checks produce the 328 km/h delivered configuration.

Delivery starts

StartDashEnduranceMTOWFeasible
0325 km/h0.38 h22.0 kgyes
1323 km/h2.96 h43.9 kgyes
2324 km/h2.82 h42.1 kgyes
3326 km/h1.62 h31.0 kgyes
4328 km/h0.25 h20.8 kgyes
5328 km/h0.32 h21.5 kgyes
0328 km/h0.25 h20.8 kgyes
1328 km/h1.25 h27.9 kgyes
2326 km/h3.07 h44.6 kgyes
3326 km/h3.13 h45.3 kgyes
4328 km/h0.45 h22.5 kgyes
5328 km/h1.26 h29.9 kgyes
0328 km/h0.25 h20.8 kgyes
1324 km/h3.18 h45.8 kgyes
2327 km/h2.90 h42.8 kgyes
3326 km/h2.33 h37.2 kgyes
4328 km/h0.34 h21.6 kgyes
5328 km/h0.95 h27.0 kgyes

Static-margin closure

AttemptInternal bandEvaluated full / reserveVerdict
0[0.05,0.15]0.195 / 0.181RE-RUN
1[0.05199999999999953,0.1479999999999995]0.152 / 0.132RE-RUN
2[0.052000000000000005,0.148]0.148 / 0.128PASS
04 · Verification & validation

Cross-tool evidence, with convergence honesty

Analytical identities, OAS comparisons, VSPAERO, artifact-level geometry checks, and stretch solvers test different failure modes. TACS and SU2 are shown as calibration data—not promoted into certification evidence.

CheckClassObservedReferenceVerdict
k450 tsfc kg per kgf hrcore gate1.4671.467PASS
breguet round tripcore gate7,200.07,200.0PASS
isa T slcore gate288.1288.1PASS
isa rho slcore gate1.2251.225PASS
oas induced drag vs ellipticcore gate0.0030.003PASS
cantilever deflection identitycore gate0.0140.014PASS
thin airfoil cm accore gate{"0012":0.0,"2412":-0.05311944998613994}{"0012":0.0,"2412":-0.047}PASS
fin volume coefficientcore gate0.048[0.02,0.09]PASS
fin te within bodycore gate-0.117<= 1e-06 mPASS
neutral point model vs oascore gate1.4761.477PASS
wing mass buildup vs oascore gate7.7630 < wing structural mass < 18.6 kg reference OE massPASS
vspaero vs oas CLcore gate0.976n/aPASS
tacs artifact schemastretch calibrationtacsstretch; schema presence onlyPASS
su2 convergence reported separatelystretch calibration[false,false]stretch; 'ok' means ran+parsed, 'converged' is the residual verdictPASS
Mesh truth

16/16 checks

Component extents, fin verticality, whole-model envelope, and root attachment are measured on exported STL files.

Independent VLM

CLα ratio 0.98

VSPAERO versus OAS lift-curve slope across α=[3.0, 7.0]° on the same lifting surfaces. Absolute CL has different camber fidelity; CD is intentionally not compared.

Stretch calibration

TACS tacs

Shell mass 3.433 kg; SU2 cruise converged=no, rmsρ=-2.372.

05 · Engineering appendix

Configuration, stations, tools, and known limits

This section preserves the details needed to challenge or reproduce the design. Values are generated from the delivered optimized YAML and same-directory stage outputs.

Configuration

ParameterValue
Fuselage2.80 × 0.36 × 0.44 m
Wing2.56 m span · 1.11 m² · AR 5.93
Planformroot 0.59 m · taper 0.456 · LE sweep 13.6°
Airfoil / thicknessNACA 2412 · t/c 0.090
Twistroot +0.00° · tip -1.00°
Single fin0.34 m span · 0.5° cant
Propulsion200 N-class small turbojet (provisional; EA recommends 180-210 N) · 200.0 N SL
Fuel2.20 kg delivered spec
Structurewingbox · skin 1.80 mm · spar 2.50 mm
MaterialAl7050-T7451 · yield 470 MPa

Balance stations at full fuel

ItemMassx station
operating_empty18.60 kg1.420 m
fuel_wing2.20 kg1.326 m

Pinned execution stack

Python3.12.3
OpenVSPOpenVSP 3.51.3
OpenMDAO3.45.0
OpenAeroStruct2.12.0
Pydantic2.13.4
NumPy2.5.2
Matplotlib3.11.1

Methodology: AERO QA workflow · MDO · OAS · OpenVSP

Assumptions and limitations

  • The vendor engine deck supplies geometry, mass, static thrust, and maximum fuel flow. Flight thrust lapse and part-throttle TSFC remain documented assumptions.
  • Stall speed uses CLmax = 1.20; nonlinear separation and high-lift devices are not modeled.
  • OAS and VSPAERO are lifting-surface methods. The fins affect mass, drag, and Vv but do not enter the wing-only OAS stability solve.
  • SU2 is a coarse 2-D Euler section calculation. A successful process return is not aerodynamic convergence.
  • TACS and OAS use different structural idealizations; their discrepancy is calibration information, not interchangeable proof.
  • No propulsion installation loss, inlet distortion, controls, flutter, thermal, landing, manufacturing, or certification analysis is claimed.
Full optimized VehicleSpec YAML
name: bdx
notes: 'Provisional parametric reconstruction of the standard Elite Aerosports EA
  BDX sport turbine jet for a future Elodin example. Hard manufacturer facts: span
  2.65 m, length 2.80 m, listed weight 18.14-19.05 kg (state unknown), recommended
  thrust 180-210 N, 6.0 L main fuel cell. Planform, loft, and fin shape are traced
  from an orthographic BDXL livery sheet and photo cross-checks; the BDXL is the stretched
  family variant, so shape ratios carry wider tolerances. Airfoil is NOT published;
  NACA 0012 is an explicitly labeled surrogate. Aerodynamic coefficients, mass distribution,
  and turbine data remain provisional until correlated with an actual BDX.'
sketch:
  treatment: inspiration
  hard_scale: 3.0
  fidelity_weight: 1.0
  span_over_length: 0.946429
  span_over_length_tol: 0.03
  root_over_length: 0.234643
  root_over_length_tol: 0.02
  le_sweep_deg: 12.5
  le_sweep_tol_deg: 3.0
  taper: 0.53
  taper_tol: 0.07
  x_le_root_over_length: 0.402143
  x_le_root_over_length_tol: 0.035
  payload_bay_x_lo_m: 0.45
  payload_bay_x_hi_m: 1.35
  fuel_tank_x_lo_m: 1.3
  fuel_tank_x_hi_m: 1.7
  twist_tip_lo_deg: -3.0
  twist_tip_hi_deg: 0.0
  fin_span_m: 0.4
  fin_span_tol_m: 0.06
  fin_root_chord_m: 0.92
  fin_root_chord_tol_m: 0.1
  fin_le_sweep_deg: 62.0
  fin_le_sweep_tol_deg: 5.0
  fin_cant_deg: 0.0
  fin_cant_tol_deg: 3.0
  fin_x_le_m: 1.85
  fin_x_le_tol_m: 0.1
engine:
  name: 200 N-class small turbojet (provisional; EA recommends 180-210 N)
  energy_source: liquid_fuel
  diameter_m: 0.12
  length_m: 0.35
  dry_mass_kg: 2.6
  installation: internal
  installation_count: 1
  x_m: null
  lateral_offset_m: 0.0
  z_m: 0.17
  max_thrust_sl_n: 200.0
  fuel_flow_max_kg_s: 0.006667
  thrust_lapse_k_mach: 0.35
  thrust_lapse_floor: 0.08
  tsfc_part_a: 0.8
  tsfc_part_b: 0.2
  tsfc_mach_k: 0.15
  min_throttle: 0.18
  fuel_density_kg_m3: 800.0
  nacelle_frontal_cd: 0.08
  deck: null
wing:
  span_m: 2.5623724785573945
  root_chord_m: 0.5939036712184792
  taper: 0.4555996724142807
  le_sweep_deg: 13.586370915716229
  dihedral_deg: 0.0
  twist_root_deg: 0.0
  twist_tip_deg: -1.0
  t_over_c: 0.09
  airfoil: '2412'
  x_le_root_m: 1.0459645736670502
  z_root_m: 0.03
  tip_chord_m: 0.27058231805277777
  area_m2: 1.1075675535035658
  aspect_ratio: 5.928083301193625
  mac_m: 0.4523969162935573
  y_mac_m: 0.5607316231968102
  x_le_mac_m: 1.181478649027339
  x_ac_m: 1.2945778781007284
fuselage:
  length_m: 2.8
  max_width_m: 0.36
  max_height_m: 0.44
  nose_fine_ratio: 0.22
  tail_fine_ratio: 0.28
  payload_bay_length_m: 0.5
  payload_bay_width_m: 0.2
  payload_bay_height_m: 0.16
  payload_bay_x_m: 0.6
  fuel_tank_x_m: 1.45
  stations:
  - x_over_length: 0.0
    width_m: 0.0
    height_m: 0.0
    z_offset_m: 0.0
    side_power: 2.0
    top_power: 2.0
    bottom_power: 2.0
  - x_over_length: 0.1
    width_m: 0.18
    height_m: 0.223
    z_offset_m: 0.037
    side_power: 2.0
    top_power: 2.0
    bottom_power: 2.5
  - x_over_length: 0.222937
    width_m: 0.254
    height_m: 0.330389
    z_offset_m: 0.077193
    side_power: 2.0
    top_power: 2.0
    bottom_power: 3.0
  - x_over_length: 0.33
    width_m: 0.254
    height_m: 0.385
    z_offset_m: 0.105
    side_power: 2.0
    top_power: 2.0
    bottom_power: 3.0
  - x_over_length: 0.64
    width_m: 0.356
    height_m: 0.44
    z_offset_m: 0.141
    side_power: 2.0
    top_power: 2.0
    bottom_power: 3.0
  - x_over_length: 0.78
    width_m: 0.277
    height_m: 0.424
    z_offset_m: 0.131
    side_power: 2.0
    top_power: 2.0
    bottom_power: 2.5
  - x_over_length: 0.92
    width_m: 0.16
    height_m: 0.279
    z_offset_m: 0.173
    side_power: 2.0
    top_power: 2.0
    bottom_power: 2.0
  - x_over_length: 1.0
    width_m: 0.06
    height_m: 0.06
    z_offset_m: 0.28
    side_power: 2.0
    top_power: 2.0
    bottom_power: 2.0
vtail:
  count: 1
  span_m: 0.339249934407685
  root_chord_m: 0.819766979210329
  taper: 0.17
  le_sweep_deg: 61.375525965098
  cant_deg: 0.5
  t_over_c: 0.07
  x_le_m: 1.8636332094728938
  y_root_m: 0.0
  z_root_m: 0.26
  area_m2: 0.16269194794711378
htail:
  span_m: 1.302
  root_chord_m: 0.442
  taper: 0.38
  le_sweep_deg: 23.0
  t_over_c: 0.1
  x_le_m: 2.301
  z_m: 0.24
  incidence_deg: -1.69
  area_m2: 0.39708396000000007
mission:
  endurance_s: 900.0
  endurance_required: true
  payload_kg: 0.0
  cruise_altitude_m: 310.01816972444055
  dash_altitude_m: 100.0
  cruise_mach: 0.12
  cruise_cl: 0.18
  dash_mach_cap: 0.3
  limit_positive_g: 6.0
  limit_negative_g: -3.0
  safety_factor: 1.5
  static_margin_min: 0.05
  static_margin_max: 0.15
  reserve_fuel_fraction: 0.08
  cl_max: 1.2
  cl_max_basis: section
  stall_speed_max_mps: 25.0
structures:
  fem_model_type: wingbox
  spar_thickness_m: 0.0024999999999999996
  skin_thickness_m: 0.0018
  tube_radius_m: 0.018
  tube_thickness_m: 0.0025
  wing_weight_ratio: 1.35
  n_spanwise: 9
  n_chordwise: 3
  material:
    name: Al7050-T7451
    E_pa: 71700000000.0
    nu: 0.33
    yield_pa: 470000000.0
    density_kg_m3: 2830.0
    G_pa: 26954887218.045113
  spanwise: null
  modal_calibration: []
  sensor_stations: []
drag:
  interference_fraction: 0.08
  protuberance_cd0: 0.004
mass:
  fuel_mass_kg: 2.1965378995075646
  fuel_mass_mode: sized
  fuel_capacity_kg: null
  listed_mass_min_kg: null
  listed_mass_max_kg: null
  listed_mass_state: null
  operating_empty_mass_kg: 18.6
  operating_empty_cg_x_m: 1.42
  systems_kg: 3.0
  landing_gear_fraction: 0.035
  avionics_kg: 0.5
  contingency_fraction: 0.08
flight_dynamics:
  enabled: false
  reference_airspeed_mps: 18.0
  reference_altitude_m: 0.0
  inertia: null
  control_surfaces: []
  aeroelastic:
    enabled: false
    strip_count: 48
    modes_per_family: 1
    frequency_min_hz: 0.5
    frequency_max_hz: 30.0
    frequency_points: 160
    maximum_reduced_frequency: 0.3
    elastic_axis_fraction_chord: 0.4
    lift_curve_slope_per_rad: null
    calibration_id: none
  allow_diagonal_inertia_approximation: false
  calibration_id: none
solver:
  oas_with_viscous: true
  oas_with_wave: true
  optimize_maxiter: 25
  optimize_tol: 0.0001
  fd_step: 0.001
  vspaero_wake_iters: 3
  su2_maxiter: 200
  gmsh_lc_m: 0.1
  stability_method: lifting_surface
  np_shift_mac: 0.1025463795374741
  wing_body_np_mac: null
  wing_body_cl_alpha_per_deg: null
  cm_washout_per_deg: 0.00362
  tail_incidence_offset_deg: 0.07485177997297554
  tail_lift_effectiveness_factor: 1.0
  tail_lift_effectiveness_source: null
n_ult: 9.0