extend the drag term to air medium -- phi4 caught what the ground-only fix missed

Running a real phi4 pass-4 review pass surfaced a Rotorcraft + Gas
Turbine combo with a "speed" of 3,127 m/s (Mach 9), and the model's own
review text called it out directly: "unrealistic for urban commuting,
likely indicating an error." The reasoning for leaving air out of
DRAG_POWER_COEFF_BY_MEDIUM ("its L/D-based cruise model is already a
reasonable velocity-roughly-linear approximation") was wrong for the
same reason ground was wrong before: L/D-based drag force is also
roughly velocity-independent within a design cruise band, so it's still
just a mass-proportional constant with no v^2 term pushing back, and
inverting power/resistance for achieved speed had no ceiling there
either.

Added an aircraft-like reference cross-section (0.5 * rho_air * Cd(~0.2)
* frontal_area(~3.5 m^2)) to DRAG_POWER_COEFF_BY_MEDIUM for "air",
reusing the same closed-form cubic solve already built for ground.
Confirmed: the same combo's speed dropped from 3,127 m/s to 125.9 m/s
(a fast but physically plausible rotorcraft cruise), and a second phi4
pass-4 run on the corrected data no longer flags it -- the review now
discusses the speed score as a genuine strength instead of an apparent
error.

Water hull drag remains a known, unaddressed gap (would need its own
reference, not a car's or aircraft's frontal area).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 21:37:28 -05:00
parent fb38093e6c
commit 81b36e6bbe

View File

@@ -278,19 +278,31 @@ SPECIFIC_ENERGY_CONSUMPTION_J_PER_KG_M: dict[str, float] = {
# #
# DRAG_POWER_COEFF_BY_MEDIUM below adds that missing term: a mass-INDEPENDENT # DRAG_POWER_COEFF_BY_MEDIUM below adds that missing term: a mass-INDEPENDENT
# drag power coefficient (0.5 * air_density * drag_coefficient * frontal_area, # drag power coefficient (0.5 * air_density * drag_coefficient * frontal_area,
# W per (m/s)^3) added on top of the existing mass-proportional term. Ground # W per (m/s)^3) added on top of the existing mass-proportional term.
# only for now (the diagnosed case, and where a car-like reference #
# cross-section is a defensible categorical estimate the way the rest of # "air" was originally left out of this table on the reasoning that its
# this file's constants are); air's existing L/D-based model is already a # L/D-based cruise model was already a reasonable velocity-roughly-linear
# reasonable velocity-roughly-linear cruise approximation and doesn't have # approximation -- true for computing energy per meter during a normal
# this problem, and water hull drag would need its own (different) treatment # cruise, but WRONG for the exact same reason ground was wrong: L/D-based
# rather than reusing a car's frontal area, so it's left as a known # drag force is also roughly velocity-independent within a design cruise
# remaining gap rather than guessed at here. # band, so it's still just "resistance = mass-proportional constant" with
# no v^2 term, and inverting power/resistance for achieved speed still had
# no ceiling. Confirmed live: a Rotorcraft + Gas Turbine combo showed a
# "speed" of 3,127 m/s (Mach 9) with phi4's pass-4 review flagging it
# directly ("unrealistic for urban commuting, likely indicating an
# error"). Added below with an aircraft-like reference cross-section.
# Water hull drag would need its own (different) treatment rather than
# reusing either reference, so it's left as a known remaining gap.
DRAG_POWER_COEFF_BY_MEDIUM: dict[str, float] = { DRAG_POWER_COEFF_BY_MEDIUM: dict[str, float] = {
# 0.5 * rho_air(1.225 kg/m^3) * Cd(~0.3) * frontal_area(~2.2 m^2, small # 0.5 * rho_air(1.225 kg/m^3) * Cd(~0.3) * frontal_area(~2.2 m^2, small
# car reference) -- sanity check: at 30 m/s (108 km/h) this alone costs # car reference) -- sanity check: at 30 m/s (108 km/h) this alone costs
# ~11kW, in the right ballpark for real highway cruise power. # ~11kW, in the right ballpark for real highway cruise power.
"ground": 0.5 * 1.225 * 0.3 * 2.2, "ground": 0.5 * 1.225 * 0.3 * 2.2,
# 0.5 * rho_air(1.225) * Cd(~0.2, streamlined fuselage) * frontal_area
# (~3.5 m^2, small aircraft/rotorcraft reference) -- sanity check: at
# 60 m/s (a fast urban rotorcraft cruise) this alone costs ~46kW, in
# the right ballpark for a light helicopter's real cruise power.
"air": 0.5 * 1.225 * 0.2 * 3.5,
} }
# Structural manufacturing cost, $ per kg of platform mass -- certification # Structural manufacturing cost, $ per kg of platform mass -- certification
@@ -974,7 +986,7 @@ class Pipeline:
# Achieved steady-state cruise speed, DERIVED from this specific # Achieved steady-state cruise speed, DERIVED from this specific
# build's actual power_density, the medium's mass-proportional # build's actual power_density, the medium's mass-proportional
# resistance, and (ground only, see DRAG_POWER_COEFF_BY_MEDIUM) a # resistance, and (ground/air, see DRAG_POWER_COEFF_BY_MEDIUM) a
# mass-independent aerodynamic drag term -- not a platform-declared # mass-independent aerodynamic drag term -- not a platform-declared
# constant. A build with more power than the platform's bare # constant. A build with more power than the platform's bare
# target_velocity requires achieves a genuinely higher speed here; # target_velocity requires achieves a genuinely higher speed here;