Executive design review · 10 September 2026

Ntnu X8

Hacker A40-12 S V2 / Jeti SPIN Pro 66 / Aeronaut CAM 14x8 tailless UAV · baseline-to-optimized evidence with an embedded model of the actual exported mesh.

12/12 preliminary-design gates pass
134km/h dash
endurance not claimed
2.10m span
3.4kg 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/ntnu-x8/design.yaml · Optimized spec: results/ntnu-x8/optimized/design.yaml

NTNU May-2023 Skywalker X8 reproduction translated from the source-cited design-time input pack without validation maneuvers or published aerodynamic coefficients. The equivalent trapezoid, NACA 0012 section, washout, molded body, fin attachment, packaging, structure, and drag are declared conceptual abstractions. The motor/controller package is modeled inside the aft body; the external pusher disk is represented by the published thrust deck. The measured 3.364 kg flight mass includes propulsion and battery. Liquid fuel, battery energy, range, and endurance are not claimed. Fuselage fineness, bay dimensions, component packaging, fin attachment, structural properties, mission screens, and solver settings are engineering assumptions checked by the canonical internal gates, not source or validation claims.

Requirements scorecard

RequirementTargetPredictedVerdict
EngineHacker A40-12 S V2 / Jeti SPIN Pro 66 / Aeronaut CAM 14x8Hacker A40-12 S V2 / Jeti SPIN Pro 66 / Aeronaut CAM 14x8MET
Payload0.0 kg0.0 kgMET
Endurancenot claimedn/aN/A
Dashmaximize; M ≤ 0.11134 km/h · M 0.11MET
Configurationsketch envelope2.10 m span · 25.0° sweepMET
Tier C · artifact truth
PASS · Schema

Source and delivered specifications deserialize; every source-locked field is unchanged except declared trim and same-run component-stability constants.

source=yes; optimized=yes; engine requirement=yes; payload requirement=yes; reproduction frozen=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=18

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.010 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.080; reserve 0.080 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.

washout 4.000° vs spec 4.000°; CM residual -0.0010

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 8.474 m/s ≤ 12.0 m/s at CLmax 1.00

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

Source-locked geometry clears either the minimum conceptual fin-volume screen or same-run restoring/damping derivative checks; no upper-band sizing claim or fin-sizing optimum is made.

source Vv 0.0148; same-run Cnβ 0.0159, Cnr -0.0095 (source-locked reproduction)

optimized/validation.json · Upstream response: Correct the source geometry or remove the reproduction claim; do not resize a source-locked fin to make the screen pass.
Tier A · design feasibility
PASS · Structures

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

+4g failure index -0.958; CL 0.792/0.792; lift closed=yes; mass closed=yes; tip deflection 0.001 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.

endurance not claimed for electric reproduction; 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 · Reproduction closure honesty

Source coordinates remain frozen while a separate OAS solve checks trim and structures; stability retains its declared independent-derivative or component-model evidence label.

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

baseline/mdo.json · Upstream response: Fix source serialization, trim/structures verification, or stability provenance; do not optimize frozen reproduction coordinates.
Tier C · artifact truth
PASS · Shape fidelity

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

span/L 2.66; root/L 0.52; sweep 25.0°; 0 scored shape departures; 0 total audit records

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 13/13; VSPAERO/OAS CLα ratio 0.958; NP method spread 0.039 MAC (diagnostic); report Mach 0.110 vs recomputed 0.110; MTOW report/aero/MDO 3.364/3.364/3.364 kg; L/D report/aero/MDO 7.504/7.504/7.504

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 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.080 MAC sits inside the 0.03–0.10 design band (measured NP 0.464 m).
  • Pitch trim closes with wing twist at -2.00°.
  • Stall 8.5 m/s against the 12 m/s requirement, from effective CLmax 1.00.
  • Thrust-limited dash 37.4 m/s (M 0.11 vs cap 0.11).
  • Wingbox at ±limit load: +g KS -0.96, −g KS -0.96 (negative values are margin).

Evidence: results/ntnu-x8/baseline/{aero,sizing,structures}.json

What the optimizer changed, and the effect

QuantityBaselineOptimizedChange
Wing span2.100 m2.100 munchanged
Wing area0.750 m²0.750 m²unchanged
Aspect ratio5.885.88unchanged
Taper0.7320.732unchanged
LE sweep25.0 deg25.0 degunchanged
AirfoilNACA 0012NACA 0012unchanged
Thickness t/c0.1200.120unchanged
Tip twist-2.00 deg-2.00 degunchanged
MTOW3.36 kg3.36 kgunchanged
Fuel0.00 kg0.00 kgunchanged
Dash speed134 km/h134 km/hunchanged
Cruise L/D7.507.50unchanged
Stall speed8.5 m/s8.5 m/sunchanged
Static margin (full)0.080 MAC0.080 MACunchanged
Trim wing twist-2.00 deg-2.00 degunchanged

Sketch envelope

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

Sized baseline

Fuel and MTOW close without an endurance claim; artifact geometry and OAS models establish the reference.

Deterministic reproduction closure

Source coordinates remain frozen while same-run OAS closes model calibration and verifies trim, stability, and structures.

Verified delivery

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

Delivery starts

StartDashEnduranceMTOWFeasible
deterministic_reference_closure134 km/hn/a3.4 kgyes

Static-margin closure

AttemptInternal bandEvaluated full / reserveVerdict
same-run OAS NPmodel error ≤ 0.05 MAC0.059 / 0.000 MACPASS
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.015>= 0.02 or passing same-run directional derivatives (source-locked reproduction)PASS
fin te within bodycore gate-0.017<= 0.0158 mPASS
neutral point model vs oascore gate0.4640.464PASS
wing mass buildup vs oascore gate1.5870 < wing structural mass < 3.364 kg reference OE massPASS
vspaero vs oas CLcore gate0.958n/aPASS
elevon cm delta vspaero vs oascore gaten/apitch trim control is not elevonPASS
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

18/18 checks

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

Independent VLM

CLα ratio 0.96

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 0.782 kg; SU2 cruise converged=no, rmsρ=-2.294.

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
Fuselage0.79 × 0.18 × 0.17 m
Wing2.10 m span · 0.75 m² · AR 5.88
Planformroot 0.41 m · taper 0.732 · LE sweep 25.0°
Airfoil / thicknessNACA 0012 · t/c 0.120
Twistroot +2.00° · tip -2.00°
Twin fins0.22 m span each · 12.0° cant
PropulsionHacker A40-12 S V2 / Jeti SPIN Pro 66 / Aeronaut CAM 14x8 · 60.4 N SL
Fuel0.00 kg delivered spec
Structurewingbox · skin 1.00 mm · spar 1.50 mm
MaterialAssumed quasi-isotropic CFRP equivalent · yield 250 MPa

Balance stations at full fuel

ItemMassx station
operating_empty3.36 kg0.435 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 electric deck supplies sourced steady thrust only. Battery energy, range, and endurance are outside this reproduction.
  • Stall speed uses CLmax = 1.00; 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: ntnu-x8
notes: NTNU May-2023 Skywalker X8 reproduction translated from the source-cited design-time
  input pack without validation maneuvers or published aerodynamic coefficients. The
  equivalent trapezoid, NACA 0012 section, washout, molded body, fin attachment, packaging,
  structure, and drag are declared conceptual abstractions. The motor/controller package
  is modeled inside the aft body; the external pusher disk is represented by the published
  thrust deck. The measured 3.364 kg flight mass includes propulsion and battery.
  Liquid fuel, battery energy, range, and endurance are not claimed. Fuselage fineness,
  bay dimensions, component packaging, fin attachment, structural properties, mission
  screens, and solver settings are engineering assumptions checked by the canonical
  internal gates, not source or validation claims.
sketch:
  treatment: reproduction
  hard_scale: 1.0
  fidelity_weight: 1.0
  span_over_length: 2.6582278481012658
  span_over_length_tol: 0.03
  root_over_length: 0.5221154312153242
  root_over_length_tol: 0.03
  le_sweep_deg: 25.0
  le_sweep_tol_deg: 5.0
  taper: 0.7317226765403747
  taper_tol: 0.05
  x_le_root_over_length: 0.1864556962025316
  x_le_root_over_length_tol: 0.04430379746835443
  payload_bay_x_lo_m: null
  payload_bay_x_hi_m: null
  fuel_tank_x_lo_m: null
  fuel_tank_x_hi_m: null
  twist_tip_lo_deg: -3.0
  twist_tip_hi_deg: -1.0
  fin_span_m: 0.22
  fin_span_tol_m: 0.03
  fin_root_chord_m: 0.3
  fin_root_chord_tol_m: 0.04
  fin_le_sweep_deg: 35.0
  fin_le_sweep_tol_deg: 5.0
  fin_cant_deg: 12.0
  fin_cant_tol_deg: 5.0
  fin_x_le_m: 0.56
  fin_x_le_tol_m: 0.08
engine:
  name: Hacker A40-12 S V2 / Jeti SPIN Pro 66 / Aeronaut CAM 14x8
  energy_source: electric
  diameter_m: 0.06
  length_m: 0.12
  dry_mass_kg: 0.5
  installation: internal
  installation_count: 1
  x_m: 0.72
  lateral_offset_m: 0.0
  z_m: 0.02
  max_thrust_sl_n: 60.3845350822
  fuel_flow_max_kg_s: 0.0
  thrust_lapse_k_mach: 0.0
  thrust_lapse_floor: 1.0
  tsfc_part_a: 1.0
  tsfc_part_b: 0.0
  tsfc_mach_k: 0.0
  min_throttle: 0.3
  fuel_density_kg_m3: 800.0
  nacelle_frontal_cd: 0.08
  deck:
    name: Published X8 electric thrust deck at rho=1.225 kg/m^3
    points:
    - altitude_m: 0.0
      mach: 0.0
      throttle: 0.3
      thrust_n: 6.1245397711
      fuel_flow_kg_s: 0.0
    - altitude_m: 0.0
      mach: 0.0
      throttle: 0.6
      thrust_n: 23.215699427
      fuel_flow_kg_s: 0.0
    - altitude_m: 0.0
      mach: 0.0
      throttle: 1.0
      thrust_n: 60.3845350822
      fuel_flow_kg_s: 0.0
    - altitude_m: 0.0
      mach: 0.05289543933588392
      throttle: 0.6
      thrust_n: 10.979210524
      fuel_flow_kg_s: 0.0
    - altitude_m: 0.0
      mach: 0.05289543933588392
      throttle: 1.0
      thrust_n: 44.0867415841
      fuel_flow_kg_s: 0.0
    - altitude_m: 0.0
      mach: 0.07346588796650545
      throttle: 0.6
      thrust_n: 3.5675422739
      fuel_flow_kg_s: 0.0
    - altitude_m: 0.0
      mach: 0.07346588796650545
      throttle: 1.0
      thrust_n: 34.6208306371
      fuel_flow_kg_s: 0.0
    interpolation: condition-idw
    extrapolation: clamp
    altitude_scale_m: 10000.0
    mach_scale: 1.0
wing:
  span_m: 2.1
  root_chord_m: 0.4124711906601062
  taper: 0.7317226765403747
  le_sweep_deg: 25.0
  dihedral_deg: 0.0
  twist_root_deg: 2.0
  twist_tip_deg: -2.0
  t_over_c: 0.12
  airfoil: '0012'
  x_le_root_m: 0.1473
  z_root_m: 0.0
  sections: null
  tip_chord_m: 0.3018145236256081
  area_m2: 0.75
  aspect_ratio: 5.88
  mac_m: 0.36
  y_mac_m: 0.49788911657654805
  x_le_mac_m: 0.3794695079716712
  x_ac_m: 0.4694695079716712
fuselage:
  length_m: 0.79
  max_width_m: 0.18
  max_height_m: 0.17
  nose_fine_ratio: 0.22
  tail_fine_ratio: 0.28
  payload_bay_length_m: 0.2
  payload_bay_width_m: 0.12
  payload_bay_height_m: 0.1
  payload_bay_x_m: 0.18
  fuel_tank_x_m: 0.435
  stations: null
  fairings: null
vtail:
  count: 2
  root_attachment: derived
  span_m: 0.22
  root_chord_m: 0.3
  taper: 0.45
  le_sweep_deg: 35.0
  cant_deg: 12.0
  t_over_c: 0.1
  x_le_m: 0.56
  y_root_m: 0.88
  z_root_m: 0.02
  area_m2: 0.04785
htail:
  span_m: 0.0
  root_chord_m: 0.1
  taper: 0.5
  le_sweep_deg: 0.0
  t_over_c: 0.1
  x_le_m: 0.49
  z_m: 0.02
  incidence_deg: 0.0
  area_m2: 0.0
mission:
  endurance_s: 1.0
  endurance_required: false
  payload_kg: 0.0
  cruise_altitude_m: 175.0
  dash_altitude_m: 175.0
  cruise_mach: 0.053000154399591666
  cruise_cl: 0.2254109964699504
  dash_mach_cap: 0.11
  limit_positive_g: 4.0
  limit_negative_g: -2.0
  safety_factor: 1.5
  static_margin_min: 0.03
  static_margin_max: 0.1
  reserve_fuel_fraction: 0.0
  cl_max: 1.0
  cl_max_basis: aircraft
  stall_speed_max_mps: 12.0
  pitch_trim_control: auto
structures:
  fem_model_type: wingbox
  spar_thickness_m: 0.0015
  skin_thickness_m: 0.001
  tube_radius_m: 0.012
  tube_thickness_m: 0.001
  wing_weight_ratio: 1.2
  n_spanwise: 9
  n_chordwise: 3
  material:
    name: Assumed quasi-isotropic CFRP equivalent
    E_pa: 35000000000.0
    nu: 0.3
    yield_pa: 250000000.0
    density_kg_m3: 1600.0
    G_pa: 13461538461.538462
  spanwise: null
  modal_calibration: []
  sensor_stations: []
drag:
  interference_fraction: 0.08
  protuberance_cd0: 0.004
mass:
  fuel_mass_kg: 0.0
  fuel_mass_mode: fixed
  fuel_capacity_kg: null
  listed_mass_min_kg: null
  listed_mass_max_kg: null
  listed_mass_state: null
  operating_empty_mass_kg: 3.364
  operating_empty_cg_x_m: 0.435
  systems_kg: 0.0
  landing_gear_fraction: 0.0
  avionics_kg: 0.0
  contingency_fraction: 0.0
flight_dynamics:
  enabled: true
  reference_airspeed_mps: 18.0
  reference_altitude_m: 175.0
  inertia:
    ixx_kg_m2: 0.325
    iyy_kg_m2: 0.14
    izz_kg_m2: 0.4
    ixy_kg_m2: 0.0
    ixz_kg_m2: 0.029
    iyz_kg_m2: 0.0
    source: "L\xF8w-Hansen et al. May-2023 configuration; bifilar provenance in Reinhardt\
      \ et al."
  control_surfaces:
  - id: elevon
    host: wing
    span_start_fraction: 0.48
    span_end_fraction: 0.94
    chord_fraction: 0.2
    max_up_deg: 20.0
    max_down_deg: 20.0
    neutral_deg: null
    trim_deflection_deg: 0.0
    source: Visible X8 elevons and Gryte et al. +/-20 degree control sweeps
    mixing:
    - id: collective_elevon
      mode: collective
      axis: pitch
      gain: 1.0
    - id: differential_elevon
      mode: differential
      axis: roll
      gain: 1.0
  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: true
  calibration_id: ntnu-x8-low-re-elevon-v1
solver:
  oas_with_viscous: true
  oas_with_wave: false
  optimize_maxiter: 35
  optimize_tol: 1.0e-05
  fd_step: 0.001
  vspaero_wake_iters: 20
  vspaero_convergence_factor: 0.01
  su2_maxiter: 200
  gmsh_lc_m: 0.08
  stability_method: lifting_surface
  np_shift_mac: -0.015612415298241498
  wing_body_np_mac: null
  wing_body_cl_alpha_per_deg: null
  cm_washout_per_deg: 0.00362
  tail_incidence_offset_deg: 0.0
  tail_lift_effectiveness_factor: 1.0
  tail_lift_effectiveness_source: null
  elevon_effectiveness_factor: 1.0
  elevon_effectiveness_source: null
n_ult: 6.0