Executive design review · 10 September 2026

Atomrc Dolphin V1 1

AtomRC 2307 1800KV + Exceed BLS 30A + Gemfan Flash 7042 pusher (placeholder thrust) tailless UAV · baseline-to-optimized evidence with an embedded model of the actual exported mesh.

12/12 preliminary-design gates pass
135km/h dash
endurance not claimed
0.85m span
0.9kg 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/atomrc-dolphin-v1-1/design.yaml · Optimized spec: results/atomrc-dolphin-v1-1/optimized/design.yaml

AtomRC Dolphin V1.1 — concept brief (scan-grounded reproduction)

1. Intent and configuration

Reproduce the stock 845 mm AtomRC Dolphin V1.1 as an existing aircraft (source-locked reproduction, sketch.treatment: reproduction, hard_scale 1.0), this time grounded on a 3D scan of the airframe rather than on product renders. Configuration: carbon-reinforced EPP airframe with a central canopy-topped fuselage blended into a forward-swept wing with two elevons, two fixed outward-canted aft stabilizers (not ruddervators), aft skid strakes, and one rear-centreline pusher motor. The model carries a complete Elodin Aleph stack and a 4S Li-ion pack inside the bench-measured 0.889 kg flight mass. Geometry is frozen at measured values; only a deterministic trim closure may alter the delivered aircraft.

Authority order: (1) the reference model reference/reference.json for every shape quantity it measures; (2) scratch/dolphin/atomrc-dolphin-openair-brief-v3.md for installed systems, published dimensions, mass/CG override, and the do-not-invent list; (3) the product renders as secondary silhouette evidence only; (4) schema placeholders where nothing measures the value.

2. Sources

Source Classification Use
scratch/dolphin/dolphin_scan.stl (binary STL, mm; sha256 701272c3682bcb4be462dc25e70c0b617909e2ac134863c04e67d5546da12a48, 84.97 MB, 1 699 348 faces) reference model (3D scan, triangle mesh) all measured geometry; reference/ and the three silhouettes
scratch/dolphin/dolphin_scan.reference.json sidecar (units mm, measured span 847.20 mm, length 712.00 mm from the CAD measure tool) unit declaration and anchor cross-check
scratch/dolphin/atomrc-dolphin-openair-brief-v3.md requirement/spec document published dims, components, mass/CG override, do-not-invent list
scratch/dolphin/dolphin-top.webp, dolphin-side.webp product renders (orthographic, 1000x1000) secondary evidence only; superseded by the scan silhouettes
scratch/dolphin/dolphin-measurement-form.md, moar-data.md bench-measurement plan what the scan cannot supply (section 1 answered 2026-09-09; section 2 answered for travel only; sections 9–11 remain open)
Owner report, 2026-09-09 ("measured elevon at plus and minus 30 degrees") bench measurement (control travel) max_up_deg / max_down_deg; the flown trimmed neutral was not reported

Silhouettes: sketch-top.png, sketch-side.png, sketch-front.png are orthographic projections of the aligned reference mesh at 0.5 mm/px with a 10 mm grid (rectified by construction; PNG text metadata carries the scale and origin). The mesh was exported from the owner's CAD tool as a triangle mesh per guidebook chapter 13; the native project file was not used. Notches along the wing leading edge in the top silhouette are scan holes (dark carbon leading edge), not features.

3. Requirement record

Requirement Value Source Tolerance / status
Wing span 0.8496 m (mesh y-extent 0.8487) scan ±0.002 m; published 0.845 and CAD-measured 0.8472 agree within 0.5 %
Overall length (nose tip -> tail cap) 0.712 m scan (centreline) ±0.002 m; CAD measure 712.00 mm; published 0.710
Wing gross projected area (11-section measured outline) 0.1668 m^2 scan station integration, including root blend/deck extension and centreline carry-through published 0.1524 m^2 excludes the body carry-through and root appendage outline
Operating empty mass (flight configuration) 0.889 kg owner bench measurement, 2026-09-09 (measurement form section 1; single reading, scale resolution not recorded) assume ±0.005 kg; replaces the 1.30 kg v3 estimate, which double-counted or overstated installed items by ~0.41 kg
Operating empty CG x = 0.419 m from the nose tip owner bench measurement, 2026-09-09 (form section 1; method and repeats not recorded) assume ±0.005 m; measured along the body axis, which differs from the root-chord datum by < 1 mm at this station
Payload / fuel 0 kg / 0 kg fixed v3 brief electric reproduction; endurance not applicable
Elevon travel +30° (trailing edge up) / −30° (trailing edge down) owner bench measurement, 2026-09-09 (form section 2; end points, instrument not recorded) assume ±1°; recorded as max_up_deg / max_down_deg; the flown trimmed neutral is not measured (neutral_deg: null)
Motor / ESC / propeller AtomRC 2307 1800KV 0.036 kg at x=0.680; Exceed BLS 30A 0.003 kg; Gemfan 7042 0.00552 kg v3 brief inside internal engine package (0.0445 kg)
Servos 2x S09M-class, 0.027 kg total at x=0.480 v3 brief inside OEM override
Battery Lumenier NAV 5000 4S1P, 85x45x45 mm, 0.340 kg, front face x=0.190 (window 0.165–0.215) v3 brief drives the schema payload bay
Aleph stack 0.500 kg user-measured, ~90x54x32 mm, centre x=0.455±0.030 v3 brief inside OEM override; bay documented in section 7
Continuous electrical limit 20 A / ~296 W shared bus v3 brief recorded; no endurance claim

Unit conversions used: 5 Ah x 14.8 V = 74 Wh; 0.889 kg x 9.80665 = 8.7181 N; 7.0 in = 177.8 mm; scan file mm -> m (x 0.001). Wing loading on the measured 0.1668 m^2 gross outline: 53.3 g/dm^2.

4. Coordinate frame, scale, and alignment

  • Open-air frame per guidebook chapter 13: x = 0 at the scanned nose tip, positive aft; y = 0 on the fitted symmetry plane, +y right; z = 0 at the nose-tip centre, +z up. x/L uses L = 0.712.
  • Source frame: Y-up triangle mesh with the nose at +Z; mapping x:-z, y:-x, z:+y (a proper rotation, verified det +1).
  • Symmetry plane: yaw −0.020°, roll +0.016°, mirrored-distance residual median 0.48 mm, p90 0.91 mm (a true two-sided scan; mirrored_half: false).
  • Pitch datum: the wing root chord line (measurement-form leveling reference, probed at |y| = 0.077 m just outboard of the 0.064 m body half width) was 1.91° nose-up in the source frame (left 1.93°, right 1.89°) and was rotated level. Every angle below is relative to this datum.
  • Scale: declared mm, cross-checked against the CAD-measured span 847.20 mm: aligned mesh span 0.8487 m (0.18 % deviation, within the 3 % abort band).
  • Cleaning: 335 of 336 shells dropped (largest 24 mm; propeller fragments and scan debris); effective point spacing 0.83 mm (861 k points).
  • Not rectified in the photographic sense: the silhouettes are orthographic projections and need no control points; their mm/px is 0.5.

5. Measurement and inference record

Provenance: measured (reference model) (scan), published (AtomRC / v3 brief), inferred (engineering assumption), defaulted (template). Tolerances are the ingest's max(2 x resolution, symmetry residual, L/R disagreement, fit residual) with floors of 1 mm and 0.5°, widened where noted.

Planform

Item Evidence (reference.json) Value Tol Provenance
Span measurements.wing.span_m 0.8496; mesh y-extent 0.8487 0.8496 m ±0.002 m measured (reference model)
Root chord (centreline extrapolation) LE/TE robust line fits over the straight band y 0.127–0.397 m 0.2601 m
x_le_root (centreline) x_le_root_m 0.4071 m (x/L 0.5718) ±0.010 m measured (reference model)
Equivalent LE sweep chord-weighted MAC-locus match to the measured section loft −12.07° (forward) ±2.0° derived descriptor
Outer straight-band LE sweep robust LE fit over y 0.127–0.397 m −6.38° (forward)
TE sweep slope of the TE fit −26.08° measured (reference model)
Actual tip chord final measured/extrapolated section at η 1.0 0.0368 m (rounded tip) station resolution measured (reference model)
Equivalent taper exact area match to the 0.1668 m^2 section loft with the measured centreline root chord 0.5093 (equivalent tip 0.1325 m; not the physical tip) ±0.062 derived descriptor
Equivalent dihedral chord-weighted z-locus match to the section loft −1.91° (anhedral) ±0.5°; includes bench support sag derived descriptor
Twist (root / tip) undeflected chord-line incidence, straight-band medians (linear fit gives 3.0° / 1.0°) +1.6° / +0.5° ±1.4° measured (reference model)
z_root (root LE height) z_root_le_m 0.0245 m ±0.002 m measured (reference model)
span/L, root/L, x_le/L derived 1.1933, 0.3653, 0.5718 0.010, 0.0149, 0.0139 derived

The wing leading edge was not captured at 33 % of the stations (both skins end at the same station: the dark carbon leading edge defeated the scanner) and one skin is missing over more than 3 % chord at 39 %. Chord lines therefore use the mid-line extrapolated to the nose, and chord/x_le carry a 2 %-chord allowance. wing.sections uses 11 deterministic breakpoints after excluding body-contaminated slabs inside |y| = 0.0705 m and four z-asymmetric stations (maximum L/R discrepancy 29.1 mm). Its bounded LE/TE/z simplification residuals are 5.9/3.8/5.7 mm. It keeps the root blend/deck extension and the rounded, drooped tip; its scalar root/taper/sweep/dihedral are equivalent descriptors used by models that still require one trapezoid.

Airfoil

Item Evidence Value Tol Provenance
t/c six exact sections at η 0.35/0.55/0.75, both sides 0.100 (spread 0.009) ±0.016 measured (reference model)
Camber NACA four-digit least-squares fit, camber 1.0 % at ~20–30 % chord code 1209; global OAS t/c 0.1004 is the six-cut mean camber rms 0.3 % c measured (reference model)
Reflex aft camber sign after rotating the elevon to neutral none (0 of 6 sections) measured (reference model)

The section-loft t/c values (0.0612–0.1004) are inferred, not additional thickness measurements. The ingest holds the six-cut mean t/c on the straight wing and reduces t/c where the root/deck outline adds chord, preserving the measured absolute wing thickness instead of creating a thick root slab. OAS and the wingbox use the measured global mean uniformly.

Control surface (flight_dynamics.control_surfaces[elevon])

Quantity Value Tolerance Provenance
Hinge line 80.5 % chord (chord_fraction 0.195) spread 0.065 c over 72 of 142 stations measured (reference model)
Span η 0.37–0.97 (first/last station with a resolved hinge step) ±0.02 measured (reference model); inboard of η 0.33 the chord grows into the root blend and no hinge is detected
Travel +30° trailing edge up / −30° trailing edge down ±1° measured (owner, 2026-09-09)
Flown trimmed neutral not measured (neutral_deg: null) open (form section 2)
As-scanned position +3.0° trailing edge up (left +2.5°, right +3.6°, decreasing outboard) ±1° measured (reference model); a control position at scan time with unknown transmitter trims, used only as the starting trim_deflection_deg
Mixing elevator (collective, pitch), aileron (differential, roll) configuration (two elevons, no other pitch control)

Pitch trim is closed with the elevons (mission.pitch_trim_control: elevon): the twist and dihedral measured after undeflecting the scan stay frozen, and the pipeline deflects both elevons collectively within the measured travel until CM_cg = 0 at the cruise CL. The deflection written into results/atomrc-dolphin-v1-1/optimized/design.yaml is therefore a solver prediction, not a measurement (section 8, iteration 3).

Fuselage loft (root-chord datum)

x/L x (m) width (m) height (m) z_offset (m) side/top/bottom power Provenance and notes
0.00 0.000 0 0 0.000 2/2/2 nose tip (point)
0.0983 0.070 0.089 0.065 +0.015 2.75/1.03/2.86 measured core section, outline fill, powers rms 0.4 mm
0.316 0.225 0.118 0.107 +0.0316 3.0/0.89/1.17 measured; width set to the plan-view body width (core 0.115, profile 0.118–0.121 across the open battery hatch); powers rms 2.4 mm
0.47 0.335 0.150 0.100 +0.033 2/2/2 plan-view canopy-plus-shoulder width (mesh y-extent 0.146–0.156 at x 0.32–0.34, ahead of the wing LE); core section is the 0.05 m canopy only; height from the profile (top 0.083, bottom −0.017); powers inferred
0.6531 0.465 0.141 0.082 +0.0248 1.92/2.61/0.64 measured core section (aft shoulder, wing points removed), rms 0.8 mm
0.7621 0.543 0.099 0.071 +0.0211 3.67/4.71/0.66 measured core section, rms 1.2 mm
0.8931 0.636 0.095 0.059 +0.020 2.44/4.07/2.0 width from the smoothed body profile (station extraction was contaminated by the strake/fin junction: 0.055 with 46 mm asymmetry); bottom skin repaired from neighbours (missing motor-bay panel), bottom power defaulted
1.00 0.712 0.045 0.048 +0.0237 1.05/3.44/6.33 measured (tail cap around the motor)

Max width 0.150 m (x/L 0.47) and max height 0.107 m (x/L 0.316) equal the station maxima. The canopy at x/L 0.56 measures 0.051 m wide by 0.092 m tall and is not a separate station: the loft between 0.47 and 0.6531 interpolates to 0.145 x 0.091 there, which is the canopy-plus-shoulder envelope. Belly skins were missing (open bays / hatches) over x = 0.185–0.22, 0.315–0.35, 0.425–0.50, and 0.62–0.65; the ingest interpolated those bottoms from neighbouring stations, and the top at one station. The measured "chin" at x ≈ 0.10–0.15 (bottom −0.017 m) is real.

Aft shoulder/deck fairing (measured, loft-fidelity only)

After excluding 72,380 fin points, reference ingest found a contiguous fin-free upper-envelope excess over the fin root chord and fit it as an eight-station point-capped dome. The six interior stations span x/L 0.7514–0.9130; width is 0.1339–0.1490 m, height 0.0314–0.0350 m, and max_width_loc: -1 puts maximum width at the lower edge. The measured excess peaks at 46.5 mm. Visible-envelope fit RMS is at most 3.30 mm; the 8-station dimensional residuals are 3.87/2.25/1.11 mm and normalized contour residual is 2.24 mm, all inside the 6.61 mm band.

The measured upper skin is penetrated by up to 4.0 mm before a nominal 6.61 mm hidden skirt is added. Ingest tapers that skirt near the thin root trailing edge (support adjustment −0.5 to +2.5 mm), giving an effective hidden overlap of 4.11–7.11 mm and maximum total burial 10.61 mm. This is not a claim about real material thickness. The fairing is excluded from packing, wetted-area drag, mass, OAS, and VSPAERO but is included in the body-union fidelity gate; only the derived fin_*_root components are excluded from component fidelity.

Fins (two, outward-canted; measured)

Item Evidence Value Tol Provenance
Cant from vertical plane fit, left 38.96° / right 39.09° 39.0° ±1.0° measured (reference model)
Toe plane normal −1.9° / +1.4° (mirrored mean −0.2°) measured; not representable
Span along the surface root junction (span line down to the fin-free body top) to tip 0.119 m ±0.004 m measured (reference model)
Root chord / tip chord LE/TE lines extrapolated to the junction and tip 0.107 m / 0.060 m -> taper 0.559 ±0.004 m measured (reference model)
LE sweep (in the fin plane) LE line slope 29.4° ±1.0° measured (reference model)
x_le (root) LE line at the junction 0.5426 m ±0.004 m measured (reference model)
Root junction y ±0.062 m, z +0.0496 m (deck edge) exposed fin uses measured y/z exactly; a derived 35 mm continuation is buried in the shoulder/body union measured junction + derived hidden overlap
t/c plane-slab thickness 10.8 mm over the mean chord 0.129 measured (reference model)

The render-based estimate (fin span 0.177 m, cant 47.4°, x_le 0.517 m) is superseded; it inferred the root from the deck edge in a side render.

Propulsion, bays, and systems placement

Item Value Tol Provenance
Engine package (motor+ESC as internal cylinder) dia 0.028 m, length 0.060 m, x=0.680, z=+0.024 (scanned tail-cap centre) ±0.003 z measured axis, inferred package
Engine dry mass (motor+ESC+prop) 0.0445 kg published/inferred per v3
max_thrust_sl_n 10.0 N placeholder (momentum-theory bound at 296 W) wide inferred placeholder, excluded from validation
min_throttle 0.30, lapse/TSFC electric zeros inferred placeholder (ntnu-x8 pattern)
Payload bay := forward battery bay x 0.190, L 0.105, w 0.050, h 0.050 (holds 85x45x45 battery) brief window 0.165–0.215 published; inside the 0.118 x 0.107 body at x/L 0.316
Aft avionics bay (Aleph) centre x=0.455±0.030 published; NOT the schema bay (section 7)
fuel_tank_x_m 0.30 (inert; zero fuel, electric) placeholder
Mass / CG 0.889 kg @ x=0.419 ±0.005 / ±0.005 (assumed) measured (bench, owner)
Cruise point 18 m/s at 100 m -> M 0.0530; CL = 8.7181/(196.55 x 0.1668) = 0.2660 inferred speed inferred (X8-style reference speed); CL on the measured weight and section-integrated gross area
dash_mach_cap 0.11, cl_max 1.0 (aircraft), stall limit 12 m/s (measured weight gives 9.5 m/s at CLmax 1.0) wide inferred placeholders

Do-not-invent placeholders (excluded from any validation claim)

Inertia tensor, the flown elevon trimmed neutral (the +3.0° scanned deflection is not a trim), structural gauges and the CFRP-equivalent material, static thrust and propeller efficiency, stall speed, endurance. Each is a schema-required placeholder flagged here per the v3 brief's do-not-invent list. Mass and CG left this list on 2026-09-09 when the owner weighed and balanced the aircraft (measurement form section 1); the reading tools, repeats, and battery position were not reported, so the values carry assumed ±5 g / ±5 mm bands until the form is completed. Elevon travel left the list the same day (±30°); the trimmed neutral remains the single most valuable open measurement because it is the only datum that can confirm or refute the predicted trim deflection (section 8).

6. Template defaults retained

Dotted path Value Rationale
fuselage.nose_fine_ratio / tail_fine_ratio 0.22 / 0.28 legacy controls, inactive with explicit stations (2026-08-20 audit)
mission.limit_positive_g/negative_g/safety_factor 4 / -2 / 1.5 template screens; no published structural limits
mission.static_margin_min/max 0.03 / 0.10 template tailless band
solver.np_shift_mac / cm_washout_per_deg 0.04305 / 0.00362 OAS calibration constants; never retuned from a scan
solver.optimize_*, fd_step, su2_maxiter, oas_with_viscous template numerical controls
solver.vspaero_wake_iters / vspaero_convergence_factor 8 / 0.01 derivative-quality repair (iteration 4): enough wake iterations for the steady slope and tight GMRES/nonlinear solves for VSPAERO's 0.01° stability perturbations
engine.nacelle_frontal_cd, fuel_density_kg_m3 0.08 / 800 unused (internal installation, zero fuel)
structures.n_spanwise/n_chordwise, fem_model_type 15 / 3 / wingbox discretization: 15 spanwise nodes resolve the elevon edges at η 0.37/0.97 (elevon trim moved < 0.5° between 15 and 31 nodes; the aero-only mesh adds hinge-aligned chord rows itself); gauges/material are declared placeholders
solver.elevon_effectiveness_factor 1.0 uncalibrated; the OAS trim measures the real derivative and VSPAERO cross-checks it
htail.* (span 0) template-shaped inert values no horizontal tail

Deliberate non-defaults: oas_with_wave: false (M ≈ 0.05) and gmsh_lc_m: 0.05 (numerical mesh control scaled to the 0.71 m airframe; stretch solvers only).

7. Visible but unsupported features and fidelity limits

  • Canopy-on-shoulder body: the real section between x/L 0.45 and 0.6 is a narrow 0.05 m canopy on a 0.15 m shoulder blend; the single super-ellipse loft carries the plan-view width and the canopy height, so the front view is fuller than the scan. Expect the reference overlay to show model-only area beside the canopy and reference-only area at the shoulder edges.
  • Aft skid strakes / root deck: the measured wing outline captures their top-view extension and the new non-lifting shoulder fairing captures the fin-free upper deck. It does not reproduce each thin strake, fillet, or plate thickness as a separate component.
  • Wing-root fillet / inner-panel incidence: the nonlinear LE/TE outline between the body edge and |y| = 0.127 m is represented by six closely spaced section breakpoints. The buried centreline carry-through remains overlapping OpenVSP geometry, so full-component wing p95 includes invisible internal surface distance; exposed-wing station and silhouette metrics are the shape evidence.
  • Rounded wingtips outboard of |y| = 0.397 m are represented by the final four section breakpoints, including the 36.8 mm actual tip chord and tip droop. The scalar 132.8 mm equivalent tip exists only for closed-form models.
  • Elevons: hinge, span/chord fractions, and travel measured; the flown trimmed neutral is not. The OpenVSP model carries the elevons as SS_CONTROL subsurfaces with collective and differential groups; the OAS aero mesh deflects them as a hinge-aligned trailing-edge shear on the wing alone.
  • Body pitching moment: both trim solvers (OAS, VSPAERO cross-check) see the wing only. The 0.15 m wide blended body is a large fraction of the 0.42 m semispan and adds a nose-up moment and a forward neutral-point shift that neither lattice models, so the predicted elevon trim deflection is an upper bound for the wing-only physics, not a flight measurement.
  • Fin root fairing and toe: the exposed fin origin honours the measured deck/strake junction exactly. The measured shoulder plus a derived 35 mm inboard continuation now close the STL gap; the exported root centroid is inside the fairing/body union (eccentricity 0.509, nearest surface 0.8–1.4 mm). A planar WING plus dome still approximates the detailed sloping fillet and cannot represent measured toe (about ±1.5°).
  • Scan gaps: missing leading-edge skin, open bays, missing belly panels (repaired by interpolation as listed above); propeller not scanned.
  • Aft avionics-bay volume: the packing contract reserves the aft compartment for the engine package, so the schema payload bay maps to the forward battery bay; the Aleph bay is mass-bookkept in the OEM override.

8. Geometry-checkpoint iteration log

  • Iteration 1 (2026-09-05): python -m openair.geometry run designs/atomrc-dolphin-v1-1 -> readback.matches_spec true, stl_bbox.ok true (0.712 x 0.849 x 0.155 m), mesh_checks.ok true (18/18), packing.ok true (engine min section 0.141 x 0.082 m; battery bay clearances 0.111 / 0.098 m), errors empty, _shape_fidelity ok with 0 departures. Reference fidelity (geometry.json .reference_fidelity, reference_overlay.png): silhouette IoU top 0.900 (>= 0.90) and side 0.940 (>= 0.85) pass; body-station deltas within 3 mm except the two documented shoulder stations; whole-aircraft p95 surface deviation 17.7 mm against the 15 mm band -> reference_fidelity.ok false, stage ok false. Component evidence: fuselage p95 11.6 mm, wing 16.4 mm, fins 20.5 / 21.4 mm (mean 14 mm). Root cause of the fin term: the OpenVSP builder derives the fin attachment at 0.6 x the smallest local body half-width (y = 0.026 m, z = 0.038 m) while the scanned root junction is at the deck edge (y = 0.062 m, z = 0.050 m), so both fins sit ~36 mm inboard of the scan; cant, sweep, span, and chord are measured and correct. The wing term comes from the inner-panel/LERX region (|y| < 0.127 m) and the rounded tips that the equivalent trapezoid cannot represent. Both are tooling/schema abstractions, not source errors, so the acceptance band was not widened and no design.yaml value was changed. Loop stopped after iteration 1 of 3 with this blocker recorded: either the builder gains a fin attachment that honours the measured vtail.y_root_m/z_root_m on the body surface (preferred; the mesh checks already verify attachment), or a component-aware acceptance is declared before /create-aero.

  • Iteration 2 (2026-09-09): source change — mass.operating_empty_mass_kg 1.30 -> 0.889 and operating_empty_cg_x_m 0.40 -> 0.419 (owner bench measurement), mission.cruise_cl 0.4085 -> 0.2793 on the measured weight. Geometry unchanged. The reference-fidelity gate was made component-aware in the tooling (guidebook chapter 13): body p95 plus top/side IoU gate, while wing/fin and whole-aircraft p95 are disclosed because the wing and fins are already bounded by the measured sketch priors. Re-run: ok true; body p95 11.6 mm <= 15 mm, IoU top 0.900 / side 0.940, whole-aircraft p95 17.7 mm disclosed (wing 16.4, fins 20.5 / 21.4 mm: equivalent-trapezoid tips and the builder's inboard fin attachment, both listed in section 7). Loop stopped after iteration 2 of 3; the fin-attachment follow-up stands.

  • Iteration 3 (2026-09-09): source change — elevon travel ±30° (owner) and the scan-measured hinge/span written into flight_dynamics.control_surfaces; mission.pitch_trim_control: elevon; structures.n_spanwise 9 -> 15. Tooling change: the aero, balance, MDO, gate, and validation stages gained an elevon pitch-trim path (guidebook chapters 03, 04, 09; history 2026-09-09) because iteration 2 could not trim: the twist solve wanted to re-twist a measured wing and the reproduction closure had no permitted control for a tailless airframe. Full pipeline (./scripts/run_pipeline.sh designs/atomrc-dolphin-v1-1): geometry ok true unchanged (body p95 11.6 mm, IoU 0.900 / 0.940; control groups elevator, aileron read back). Baseline aero: the as-scanned +3.0° does not trim (OAS needs +16.5°, gap 13.5° -> trim.ok false, expected for the as-scanned control position). Reproduction closure: closed-form thin-airfoil seed +10.4°, OAS solution +16.30° trailing edge up at α 5.84°, CL 0.279, CM residual 2e-4, within the ±30° travel with 13.7° to the up stop; written back as the only changed source field (reference_closure.allowed_control: elevon_deflection, twist frozen at +1.6°/+0.5°). Optimized aero re-trims at the serialized value (gap 0.0°). Measured static margin 0.081 MAC at the 0.419 m CG (NP 0.4349 m). Elevon authority: OAS fixed-alpha dCm/dδ +0.00383/° vs wing-only VSPAERO +0.00465/° (ratio 0.82, same sign; lift increment ratio 0.52 disclosed); lift-trimmed dCm/dδ +0.00263/°. Validation 13/13 core after the analytical AR-16 rectangle was made to drop the serialized elevon deflection (12/13 on the first run). Gate verdict 12/12. Interpretation: +16.3° is what a wing-only lattice needs against the 1 % nose-down camber (cm_ac −0.018) and the 8 % static margin; the real airframe's body moment (section 7) should reduce it, and the as-scanned +3.0° is not evidence either way. Follow-up: measure the flown trimmed elevon angle at a known airspeed (form section 2) — with it, solver.elevon_effectiveness_factor or a body-moment term can be calibrated and cited; without it no claim about the flown trim is made.

  • Iteration 4 (2026-09-09): numerical-method repair, no physical design change — solver.vspaero_wake_iters 3 -> 8 and repository-wide VSPAERO GMRES/nonlinear convergence factors 1.0 -> 0.01. The iteration-3 VSPAERO stability derivative was solver-noise dominated: its built-in 0.01° alpha step gave CLα 9.71/rad while the 3°/7° sweep gave 4.55/rad, and the physically-zero CLβ was 5.23/rad. The new quality contract parses the Case/Delta table, checks mirror-symmetry noise, compares the 0.01° derivative with two plain points 1° apart, and runs this wing-only elevon probe with a fixed wake. Re-run: CLα 4.4956/rad against 4.5194/rad at the large step (ratio 0.9947) and 4.5536/rad from the sweep (ratio 0.9873); CLβ/CLα 0.000053, Cmβ/Cmα 0.000496, and CYα/Clα/Cnα zero (all <= 0.02). OAS/VSPAERO fixed-alpha elevon dCm/dδ improved from 0.82 to 0.953 (+0.003829/+0.004016 per degree, same sign), dCL/dδ ratio from 0.52 to 0.686, and the independently converted lift-trimmed VSPAERO dCm/dδ is +0.002527/° against OAS +0.002632/°. The relaxed 3°/7° sweep converged in 8 iterations (final L2 log10 -1.686; coefficient spans inside limits). OAS trim is unchanged at +16.299° trailing edge up, CM residual 0.00019, static margin 0.0807 MAC. Validation 13/13 and the gate verdict remains 12/12. This closes both symptoms of the derivative anomaly without tuning aircraft geometry, CG, trim, or an acceptance band.

  • Iteration 5 (2026-09-09): geometry-tool repair — vtail.root_attachment: measured makes the builder, Studio VSP import, and Studio preview use the scan junction y ±0.062 m / z +0.0496 m exactly instead of the legacy body-derived y ±0.0258 m / z +0.0378 m. Fin span, chords, sweep, cant, t/c, mass, CG, and all aerodynamic settings are unchanged. Full pipeline: read-back matches, bbox passes, mesh checks 18/18 including both fin attachments, validation 13/13, gates 12/12. Reference fidelity improves materially: fin p95 20.5/21.4 -> 3.1/3.6 mm (mean 13.6/14.1 -> 1.5/1.8 mm), whole-aircraft model-to-reference p95 17.7 -> 13.4 mm, top/side/front IoU 0.900/0.940/0.664 -> 0.912/0.953/0.787. The remaining whole-aircraft deviation is wing-dominated (wing p95 16.4 mm: equivalent trapezoid root/tips); body p95 remains 11.6 mm. The helper discloses nominal root-LE core eccentricity 2.64 rather than pretending the omitted deck/strake exists, while the exported root centroid passes the existing mesh attachment criterion at 0.955. No fidelity band was widened.

  • Iteration 6 (2026-09-09): planform-representation repair — the scan ingest simplified 71 mirror-averaged wing stations into a 12-section symmetric loft after excluding body-contaminated slabs inside |y| = 0.0705 m. wing.sections now drives OpenVSP, the OAS seed, Studio preview/import, packing, and local-chord physics. The section-integrated gross projected area is 0.166884 m²; scalar taper 0.5104, sweep −12.12°, and dihedral −1.92° are exact area/MAC-locus equivalents. Section t/c overrides are the disclosed absolute-thickness inference above. The 0.889 kg / 18 m/s source condition therefore changes cruise_cl 0.2793 -> 0.2658; no mass, CG, fin, elevon, or acceptance value changed. OpenVSP read-back matches all 12 stations with zero reported span/area/chord relative error, the written VSP3 reopens unchanged, bbox is 0.712 × 0.852 × 0.166 m, and all exported mesh checks pass. Reference fidelity improves top/side/front IoU 0.912/0.953/0.787 -> 0.969/0.952/0.897. Model-to-reference exposed-wing p95 is 4.9 mm; the full wing component remains 16.0 mm because its invisible centreline carry-through lies inside the body. Body p95 remains 11.6 mm and whole-aircraft p95 improves 13.4 -> 13.2 mm.

    The changed aerodynamic planform moves the OAS neutral point to 0.42825 m (static margin 0.0403 MAC) and reduces the predicted cruise elevon trim from +16.299° to +9.5588° trailing edge up at α 5.339°, with CM residual −3.0e−6 and 20.4° travel margin. The gross-area fin-volume heuristic is 0.01908, just below its generic 0.02 screen, so the source-locked fins were not resized: a same-run full-aircraft VSPAERO probe establishes restoring Cn_beta = +0.04417/rad, yaw damping Cn_r = −0.02248, and CY_beta = −0.20608/rad. VSPAERO's built-in 0.01° beta perturbation also produced a grid-noise-dominated Cm_beta/Cm_alpha (0.078 wing-only; 0.124 full aircraft); a central ±1° beta escalation reduced the symmetry-noise metrics below 4.4e−5 without changing the control derivative. Final VSPAERO/OAS CL-alpha ratio is 0.991 and elevon dCm/delta ratio is 1.036. Optimized validation passes 15/15 and the canonical gate verdict is 12/12. The baseline aero row remains intentionally red because +3.0° is the as-scanned position, not the solved flight trim.

  • Iteration 7 (2026-09-09): post-implementation audit — four wing stations with left/right z disagreement above 5.2 mm (maximum 29.1 mm) are now rejected before simplification, and z joins LE/TE in the bounded error metric. The resulting 11-section loft has LE/TE/z maximum residuals 5.9/3.8/5.7 mm, area 0.166767 m², equivalent taper 0.5093, sweep −12.07°, and dihedral −1.91°. OAS now unions all 11 measured knots with its cosine grid (17 half-wing nodes) and reproduces that area exactly instead of smoothing the root blend 1.24% high. Geometric tank packing integrates the inferred local thickness, reducing its placeholder volume 0.000910 -> 0.000778 m³; this electric zero-fuel reproduction is unaffected.

    The closed-form elevon seed now integrates each kinked hinge segment (hinge_sweep_deg 21.88°, local range −25.59° to +8.04°) rather than using one endpoint sweep, while OAS remains the trim verdict. The final optimized solution is +9.6398° trailing edge up, α 5.619°, NP 0.42890 m, static margin 0.04318 MAC, and CM residual −1.15e−6. Reference top/side/front IoU is 0.968/0.952/0.899; model-to-reference exposed-wing p95 is 4.87 mm, whole-aircraft p95 13.24 mm. Full-aircraft VSPAERO still establishes Cn_beta = +0.04339/rad, Cn_r = −0.02279, and CY_beta = −0.15894/rad; VSPAERO/OAS CL-alpha and elevon-moment ratios are 1.016 and 1.284. Validation remains 15/15 and all 12 gates pass. The audit also corrected serialized static-margin bounds, measured-fin placement in Studio 2-D views, inspiration-mode section suggestions, directional distance labeling, and fail-closed VSP3 provenance checks.

  • Iteration 8 (2026-09-10): serialized-attachment repair — the screen-visible daylight under both fins traced to a real representation gap, not bad fin coordinates. The measured root y/z lies outside the narrow core-body loft because the scan's aft shoulder/deck was omitted. Worse, the old attachment check used a ±0.12 m fuselage-vertex slab and a fixed 60 mm proximity floor; wider forward rings let the floating roots pass at eccentricity 0.955 / 16.1 mm.

    Reference ingest now removes 72,380 fin points and fits the remaining shoulder as the eight-station dome recorded above. OpenVSP and Studio use shifted maximum-width sections, point-cap-safe zero interpolation strengths, and a derived 35 mm continuation of each fin's LE/TE lines into the fairing/body union. Reopened VSP3 read-back matches the fairing and both extensions. The exported root centroids are inside the union at eccentricity 0.509, nearest surface 1.44/0.79 mm; fairing-base support is 99.2% against the 95% requirement with a true 2 mm inward margin. The old 60 mm floor is now 10 mm at this scale.

    Post-review hardening verifies extension-tip coincidence for signed centerline and cross-centerline cant geometry, reads the actual fairing transform instead of substituting expected values, rejects a measured-fin edit with a stale extension, keeps extensions reproduction-only, separates body and wing support solids, and rejects fairing fits whose section or simplified-contour residual exceeds its frozen band.

    Full pipeline closure remains validation 15/15 and gates 12/12. OAS geometry/trim is unchanged: elevon +9.6398°, NP 0.42890 m, static margin 0.04318 MAC, CM residual −1.15e−6. Exact-name VSPAERO sets exclude fairing_aft_shoulder and vtail*_root, so these hidden loft components do not alter lifting physics. Reference top/side/front IoU is 0.968/0.952/0.900, exposed-wing p95 4.87 mm, fin p95 3.06/3.62 mm, body-union p95 12.55 mm, and whole-aircraft p95 13.81 mm. The small whole-p95 increase from 13.24 mm is the disclosed cost of adding buried attachment surfaces; no source fin/wing/mass/CG/aero value or acceptance band changed.

Sketch measurement worksheet

Rectification: orthographic projection of the reference mesh, 0.5 mm/px, 10 mm grid (rectified by construction); source reference/reference.json (scan sha256 701272c3…), open-air frame with the root chord level. Fuselage length 0.712 m = 71.2 grid squares.

Current geometry: span 0.8496 m; 11-section measured wing with centreline root chord 0.2601 m, actual tip chord 0.0368 m, gross area 0.1668 m², equivalent taper 0.5093 / LE sweep −12.07° / dihedral −1.91°; wing root LE x 0.4071 m (x/L 0.5718); twist +1.6°/+0.5°; fuselage 0.712 m long, max width 0.150 m, max height 0.107 m, 8 stations, root-chord datum, z = 0 at the nose tip; twin fins span 0.119 m, root chord 0.107 m, LE sweep 29.4°, cant 39.0° outward, x_le 0.5426 m; measured aft-shoulder fairing with 8 stations and 35 mm buried fin-root continuation; internal electric pusher package at x 0.680; payload bay = forward battery bay at x 0.190.

Requirements scorecard

RequirementTargetPredictedVerdict
EngineAtomRC 2307 1800KV + Exceed BLS 30A + Gemfan Flash 7042 pusher (placeholder thrust)AtomRC 2307 1800KV + Exceed BLS 30A + Gemfan Flash 7042 pusher (placeholder thrust)MET
Payload0.0 kg0.0 kgMET
Endurancenot claimedn/aN/A
Dashmaximize; M ≤ 0.11135 km/h · M 0.11MET
Configurationsketch envelope0.85 m span · -12.1° 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 matches the requested aircraft and stays inside the declared deviation band of the measured reference model.

read-back=yes; bbox=yes; mesh checks=22; reference model body p95 12.5 mm (whole aircraft 13.8 mm), IoU top 0.968 / side 0.952 -> ok

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.003 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.043; reserve 0.043 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

Cruise trim is closed by the wing control surface within its measured travel while the scanned twist stays frozen; the deflection is a solver result, compared against the measured neutral when one was reported.

elevon deflection (TE up +) 9.640° vs spec 9.640° within travel [-30.0, 30.0]°; twist frozen; dCm/dδ 0.00303/°; measured neutral not reported; CM residual -0.0000

optimized/aero.json · Upstream response: Check CG, elevon geometry, and the travel measurement before touching twist; a reproduction may not re-twist the wing.
Tier A · design feasibility
PASS · Stall

Wing loading remains compatible with the documented CLmax assumption.

Vstall 9.239 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.0191; same-run Cnβ 0.0434, Cnr -0.0228 (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.955; CL 0.792/0.792; lift closed=yes; mass closed=yes; tip deflection 0.000 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 1.19; root/L 0.37; sweep -12.1°; 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 1.016; NP method spread 0.007 MAC (diagnostic); report Mach 0.110 vs recomputed 0.110; MTOW report/aero/MDO 0.889/0.889/0.889 kg; L/D report/aero/MDO 7.198/7.198/7.198

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.
Artifact truth

Reference model · exported mesh versus measured scan

Reference model · exported mesh versus measured scan
Point-sampled surface deviation p95 13.8 mm whole aircraft (body gate 12.5 mm); silhouette IoU top 0.968, side 0.952. The reference model is measured design input, not validation truth.
Design intent

Concept sketch · front

Concept sketch · front
Version-controlled source sketch shown beside the artifact-derived three-view for direct shape-fidelity review.
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.043 MAC sits inside the 0.03–0.10 design band (measured NP 0.429 m).
  • Pitch trim closes with elevon at +9.64° (trailing edge up positive, twist frozen) against a +3.00° spec setting within the -30…+30° travel.
  • Stall 9.2 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.95, −g KS -0.96 (negative values are margin).

Evidence: results/atomrc-dolphin-v1-1/baseline/{aero,sizing,structures}.json

What the optimizer changed, and the effect

QuantityBaselineOptimizedChange
Wing span0.850 m0.850 munchanged
Wing area0.167 m²0.167 m²unchanged
Aspect ratio4.334.33unchanged
Taper0.5090.509unchanged
LE sweep-12.1 deg-12.1 degunchanged
AirfoilNACA 1209NACA 1209unchanged
Thickness t/c0.1000.100unchanged
Tip twist0.50 deg0.50 degunchanged
MTOW0.89 kg0.89 kgunchanged
Fuel0.00 kg0.00 kgunchanged
Dash speed135 km/h135 km/hunchanged
Cruise L/D7.207.20unchanged
Stall speed9.2 m/s9.2 m/sunchanged
Static margin (full)0.043 MAC0.043 MACunchanged
Trim elevon9.64 deg9.64 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 135 km/h delivered configuration.

Delivery starts

StartDashEnduranceMTOWFeasible
deterministic_reference_closure135 km/hn/a0.9 kgyes

Static-margin closure

AttemptInternal bandEvaluated full / reserveVerdict
same-run OAS NPmodel error ≤ 0.05 MAC0.044 / 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.019>= 0.02 or passing same-run directional derivatives (source-locked reproduction)PASS
fin te within bodycore gate-0.043<= 0.01424 mPASS
neutral point model vs oascore gate0.4290.429PASS
wing mass buildup vs oascore gate0.2840 < wing structural mass < 0.889 kg reference OE massPASS
vspaero vs oas CLcore gate1.016n/aPASS
elevon cm delta vspaero vs oascore gate0.0040.003PASS
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

22/22 checks

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

Independent VLM

CLα ratio 1.02

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

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.71 × 0.15 × 0.11 m
Wing0.85 m span · 0.17 m² · AR 4.33
Planformroot 0.26 m · taper 0.509 · LE sweep -12.1°
Airfoil / thicknessNACA 1209 · t/c 0.100
Twistroot +1.60° · tip +0.50°
Twin fins0.12 m span each · 39.0° cant
PropulsionAtomRC 2307 1800KV + Exceed BLS 30A + Gemfan Flash 7042 pusher (placeholder thrust) · 10.0 N SL
Fuel0.00 kg delivered spec
Structurewingbox · skin 0.80 mm · spar 1.20 mm
MaterialAssumed quasi-isotropic CFRP-equivalent for carbon-reinforced EPP · yield 250 MPa

Balance stations at full fuel

ItemMassx station
operating_empty0.89 kg0.419 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: atomrc-dolphin-v1-1
notes: 'Reproduction of the stock 845 mm AtomRC Dolphin V1.1 measured from a 3D scan
  of the airframe (reference/reference.json, sha256 701272c3...; 1.70 M faces, 0.83
  mm effective resolution) plus the installed-component brief. The measured 11-section
  wing loft preserves the forward-swept outer panel, root blend/deck extension, rounded
  tip, and tip droop; its gross projected area is 0.1668 m^2 and the scalar taper/sweep/dihedral
  are exact area/MAC-locus-equivalent descriptors. Airfoil camber is the NACA four-digit
  fit of six scanned sections; section-local loft t/c is inferred from their measured
  mean to preserve absolute thickness through root/deck chord extensions. Twist is
  measured on the root-chord datum after rotating the scanned +3.0 deg trailing-edge-up
  elevon position back to neutral. Body stations are measured core sections except
  the two shoulder stations noted in brief.md, where the plan-view width of the canopy-plus-shoulder
  blend is used because the single body loft cannot represent a T-shaped section.
  Fins are twin outward-canted plates measured at 39.0 deg cant, rooted at the measured
  deck/strake junction y +/-0.062 m and z +0.0496 m. Propulsion (2307 motor + ESC)
  is an internal aft package; the pusher disk is not lofted. Mass 0.889 kg and CG
  0.419 m are the owner''s bench measurements (2026-09-09, flight configuration, single
  readings); they replace the 1.30 kg / 0.40 m v3-brief estimate. Elevon hinge (80.5%
  chord) and span (eta 0.37-0.97) are measured from the scan; the +/-30 deg travel
  is the owner''s measurement (2026-09-09). Pitch trim is closed by the elevons with
  the measured twist frozen (mission.pitch_trim_control: elevon); the serialized trim_deflection_deg
  is the solver''s cruise trim, not a measurement, and the flown trimmed neutral was
  not measured (the scan caught the elevons at +3.0 deg trailing-edge up with unknown
  transmitter trims).'
sketch:
  treatment: reproduction
  hard_scale: 1.0
  fidelity_weight: 1.0
  span_over_length: 1.1933
  span_over_length_tol: 0.01
  root_over_length: 0.3653
  root_over_length_tol: 0.0149
  le_sweep_deg: -12.07
  le_sweep_tol_deg: 2.0
  taper: 0.5093
  taper_tol: 0.0615
  x_le_root_over_length: 0.5718
  x_le_root_over_length_tol: 0.0139
  payload_bay_x_lo_m: 0.165
  payload_bay_x_hi_m: 0.215
  fuel_tank_x_lo_m: null
  fuel_tank_x_hi_m: null
  twist_tip_lo_deg: null
  twist_tip_hi_deg: null
  fin_span_m: 0.119
  fin_span_tol_m: 0.004
  fin_root_chord_m: 0.107
  fin_root_chord_tol_m: 0.004
  fin_le_sweep_deg: 29.4
  fin_le_sweep_tol_deg: 1.0
  fin_cant_deg: 39.0
  fin_cant_tol_deg: 1.0
  fin_x_le_m: 0.5426
  fin_x_le_tol_m: 0.004
engine:
  name: AtomRC 2307 1800KV + Exceed BLS 30A + Gemfan Flash 7042 pusher (placeholder
    thrust)
  energy_source: electric
  diameter_m: 0.028
  length_m: 0.06
  dry_mass_kg: 0.0445
  installation: internal
  installation_count: 1
  x_m: 0.68
  lateral_offset_m: 0.0
  z_m: 0.024
  max_thrust_sl_n: 10.0
  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: null
wing:
  span_m: 0.8496
  root_chord_m: 0.2601
  taper: 0.5093
  le_sweep_deg: -12.07
  dihedral_deg: -1.91
  twist_root_deg: 1.6
  twist_tip_deg: 0.5
  t_over_c: 0.1004
  airfoil: '1209'
  x_le_root_m: 0.4071
  z_root_m: 0.0245
  sections:
  - eta: 0.0
    chord_m: 0.2601
    x_le_m: 0.4071
    z_le_m: 0.0245
    t_over_c: 0.1004
  - eta: 0.169494
    chord_m: 0.3818
    x_le_m: 0.3134
    z_le_m: 0.0189
    t_over_c: 0.0612
  - eta: 0.193035
    chord_m: 0.3351
    x_le_m: 0.3527
    z_le_m: 0.0189
    t_over_c: 0.0686
  - eta: 0.216575
    chord_m: 0.288
    x_le_m: 0.3757
    z_le_m: 0.0198
    t_over_c: 0.0785
  - eta: 0.251887
    chord_m: 0.2317
    x_le_m: 0.3832
    z_le_m: 0.0196
    t_over_c: 0.0951
  - eta: 0.298968
    chord_m: 0.2162
    x_le_m: 0.3885
    z_le_m: 0.0208
    t_over_c: 0.0985
  - eta: 0.769785
    chord_m: 0.1302
    x_le_m: 0.3771
    z_le_m: 0.0161
    t_over_c: 0.1004
  - eta: 0.887489
    chord_m: 0.1248
    x_le_m: 0.3575
    z_le_m: 0.0134
    t_over_c: 0.0946
  - eta: 0.93457
    chord_m: 0.1012
    x_le_m: 0.3718
    z_le_m: 0.0128
    t_over_c: 0.1004
  - eta: 0.993422
    chord_m: 0.0436
    x_le_m: 0.4217
    z_le_m: 0.0071
    t_over_c: 0.1004
  - eta: 1.0
    chord_m: 0.0368
    x_le_m: 0.4281
    z_le_m: 0.0055
    t_over_c: 0.1004
  tip_chord_m: 0.13246892999999998
  area_m2: 0.16676722675152
  aspect_ratio: 4.328309429019278
  mac_m: 0.22929967367927973
  y_mac_m: 0.1657459370062141
  x_le_mac_m: 0.3716715575916125
  x_ac_m: 0.4289964760114324
fuselage:
  length_m: 0.712
  max_width_m: 0.15
  max_height_m: 0.107
  nose_fine_ratio: 0.22
  tail_fine_ratio: 0.28
  payload_bay_length_m: 0.105
  payload_bay_width_m: 0.05
  payload_bay_height_m: 0.05
  payload_bay_x_m: 0.19
  fuel_tank_x_m: 0.3
  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
    max_width_loc: 0.0
  - x_over_length: 0.0983
    width_m: 0.089
    height_m: 0.065
    z_offset_m: 0.015
    side_power: 2.75
    top_power: 1.03
    bottom_power: 2.86
    max_width_loc: 0.0
  - x_over_length: 0.316
    width_m: 0.118
    height_m: 0.107
    z_offset_m: 0.0316
    side_power: 3.0
    top_power: 0.89
    bottom_power: 1.17
    max_width_loc: 0.0
  - x_over_length: 0.47
    width_m: 0.15
    height_m: 0.1
    z_offset_m: 0.033
    side_power: 2.0
    top_power: 2.0
    bottom_power: 2.0
    max_width_loc: 0.0
  - x_over_length: 0.6531
    width_m: 0.141
    height_m: 0.082
    z_offset_m: 0.0248
    side_power: 1.92
    top_power: 2.61
    bottom_power: 0.64
    max_width_loc: 0.0
  - x_over_length: 0.7621
    width_m: 0.099
    height_m: 0.071
    z_offset_m: 0.0211
    side_power: 3.67
    top_power: 4.71
    bottom_power: 0.66
    max_width_loc: 0.0
  - x_over_length: 0.8931
    width_m: 0.095
    height_m: 0.059
    z_offset_m: 0.02
    side_power: 2.44
    top_power: 4.07
    bottom_power: 2.0
    max_width_loc: 0.0
  - x_over_length: 1.0
    width_m: 0.045
    height_m: 0.048
    z_offset_m: 0.0237
    side_power: 1.05
    top_power: 3.44
    bottom_power: 6.33
    max_width_loc: 0.0
  fairings:
  - name: aft_shoulder
    role: shoulder
    stations:
    - x_over_length: 0.7444
      width_m: 0.0
      height_m: 0.0
      z_offset_m: 0.0568
      side_power: 2.0
      top_power: 2.0
      bottom_power: 2.0
      max_width_loc: 0.0
    - x_over_length: 0.7514
      width_m: 0.1438
      height_m: 0.0334
      z_offset_m: 0.04
      side_power: 1.88
      top_power: 1.93
      bottom_power: 2.0
      max_width_loc: -1.0
    - x_over_length: 0.7655
      width_m: 0.149
      height_m: 0.0314
      z_offset_m: 0.04
      side_power: 2.02
      top_power: 1.52
      bottom_power: 2.0
      max_width_loc: -1.0
    - x_over_length: 0.7795
      width_m: 0.1438
      height_m: 0.034
      z_offset_m: 0.0378
      side_power: 1.76
      top_power: 2.2
      bottom_power: 2.0
      max_width_loc: -1.0
    - x_over_length: 0.7936
      width_m: 0.1488
      height_m: 0.0325
      z_offset_m: 0.0376
      side_power: 1.91
      top_power: 1.55
      bottom_power: 2.0
      max_width_loc: -1.0
    - x_over_length: 0.8919
      width_m: 0.1339
      height_m: 0.0347
      z_offset_m: 0.0319
      side_power: 0.92
      top_power: 2.36
      bottom_power: 2.0
      max_width_loc: -1.0
    - x_over_length: 0.913
      width_m: 0.1393
      height_m: 0.035
      z_offset_m: 0.0314
      side_power: 1.09
      top_power: 1.38
      bottom_power: 2.0
      max_width_loc: -1.0
    - x_over_length: 0.92
      width_m: 0.0
      height_m: 0.0
      z_offset_m: 0.0489
      side_power: 2.0
      top_power: 2.0
      bottom_power: 2.0
      max_width_loc: 0.0
vtail:
  count: 2
  root_attachment: measured
  span_m: 0.119
  root_chord_m: 0.107
  taper: 0.559
  le_sweep_deg: 29.4
  cant_deg: 39.0
  t_over_c: 0.129
  x_le_m: 0.5426
  y_root_m: 0.062
  z_root_m: 0.0496
  area_m2: 0.0099253735
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.6
  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: 100.0
  dash_altitude_m: 100.0
  cruise_mach: 0.053
  cruise_cl: 0.266
  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: elevon
structures:
  fem_model_type: wingbox
  spar_thickness_m: 0.0012
  skin_thickness_m: 0.0008
  tube_radius_m: 0.006
  tube_thickness_m: 0.0012
  wing_weight_ratio: 1.2
  n_spanwise: 15
  n_chordwise: 3
  material:
    name: Assumed quasi-isotropic CFRP-equivalent for carbon-reinforced EPP
    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: 0.889
  operating_empty_cg_x_m: 0.419
  systems_kg: 0.0
  landing_gear_fraction: 0.0
  avionics_kg: 0.0
  contingency_fraction: 0.0
flight_dynamics:
  enabled: false
  reference_airspeed_mps: 18.0
  reference_altitude_m: 100.0
  inertia: null
  control_surfaces:
  - id: elevon
    host: wing
    span_start_fraction: 0.37
    span_end_fraction: 0.97
    chord_fraction: 0.195
    max_up_deg: 30.0
    max_down_deg: 30.0
    neutral_deg: null
    trim_deflection_deg: 9.6398
    source: hinge/span/chord from reference/reference.json (3D scan, 2026-09-05);
      travel +/-30 deg measured by the owner 2026-09-09
    mixing:
    - id: elevator
      mode: collective
      axis: pitch
      gain: 1.0
    - id: aileron
      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: false
  calibration_id: none
solver:
  oas_with_viscous: true
  oas_with_wave: false
  optimize_maxiter: 25
  optimize_tol: 0.0001
  fd_step: 0.001
  vspaero_wake_iters: 8
  vspaero_convergence_factor: 0.01
  su2_maxiter: 200
  gmsh_lc_m: 0.05
  stability_method: lifting_surface
  np_shift_mac: -0.0004623626710332715
  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