You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ComponentStore/mass.py::MassProperties carries only total_mass_kg, cg_from_nose_m (1-D, longitudinal), and cg_source. There is no inertia tensor anywhere in YAADO_Core (grep for Ixx/Iyy/Izz/inertia finds nothing relevant), and BaseVehicleConfig has no per-component 3D placement/orientation — propulsion/aero_surfaces/bodies are flat name-keyed dicts with no x/y/z offset relative to each other.
Why it matters
This is a foundational gap, not a niche one:
Any real 6-DOF flight dynamics or lateral/directional stability & control work needs the inertia tensor.
Even a crude parallel-axis estimate is unsupportable today: longitudinal CG exists per component, but no lateral (y/z) placement and no per-component mass-distribution primitives mean Iyy/Izz can only be roughed in and Ixx (roll — needs radial mass distribution) essentially cannot be estimated at all.
It blocks the X-Plane exporter idea (separate issue) and would block any future 6-DOF trajectory or dynamic-stability solver.
Derive inertia from OpenVSP geometry (airframe/generator_methods/openvsp.py already exists; OpenVSP computes mass properties for components with assigned densities) — a nearer-term path that avoids inventing a Pydantic mass-distribution model.
Because this touches the core data model (composition, generic Core) and unblocks multiple directions, it likely deserves a dedicated RFC before implementation.
Discovery context
Surfaced by the MDO-directions research (see PR #42, docs/research/mdo-directions-2026.md, direction R5 / cross-cutting finding #4).
Summary
ComponentStore/mass.py::MassPropertiescarries onlytotal_mass_kg,cg_from_nose_m(1-D, longitudinal), andcg_source. There is no inertia tensor anywhere inYAADO_Core(grep forIxx/Iyy/Izz/inertiafinds nothing relevant), andBaseVehicleConfighas no per-component 3D placement/orientation —propulsion/aero_surfaces/bodiesare flat name-keyed dicts with no x/y/z offset relative to each other.Why it matters
This is a foundational gap, not a niche one:
Iyy/Izzcan only be roughed in andIxx(roll — needs radial mass distribution) essentially cannot be estimated at all.Options (likely its own RFC)
airframe/generator_methods/openvsp.pyalready exists; OpenVSP computes mass properties for components with assigned densities) — a nearer-term path that avoids inventing a Pydantic mass-distribution model.Because this touches the core data model (composition, generic Core) and unblocks multiple directions, it likely deserves a dedicated RFC before implementation.
Discovery context
Surfaced by the MDO-directions research (see PR #42,
docs/research/mdo-directions-2026.md, direction R5 / cross-cutting finding #4).