Skip to content

Flight dynamics verification status

Last reviewed: 2026-08-13

EnSim's flight module is currently verified at the equation and numerical-invariant level. It is not yet validated against flight-test telemetry and must not be described as a completed NASA NESC check-case implementation. The legacy local model remains the default; an explicit WGS-84 mode now provides Earth-centred inertial propagation for higher-fidelity studies.

Implemented checks

Check Configuration Acceptance criterion Result
Constant-gravity free fall 1 s, RK4, 1 ms step Position error below 0.1% against z = z0 - gt²/2 Pass
Inverse-square gravity 0, 100 and 1,000 km Matches g0(Re/(Re+h))² Pass
Quaternion propagation Nonzero three-axis body rate Unit norm maintained after integration Pass
Cylindrical inertia Uniform solid cylinder Matches analytical principal moments Pass
Elemental rigid-body dynamics NASA NESC atmospheric case 2 rotational core Torque-free rotational energy, angular-momentum magnitude and quaternion norm conserved for 30 s Pass
Mass depletion Powered trajectory Propellant and total mass are monotonic and nonnegative Pass
WGS-84 geodesy Equator, pole and representative global points Geodetic/ECEF round trips and orthonormal ENU transforms Pass
Earth model ECI/ECEF reversal, J2 direction and rotating-frame acceleration Coordinate reversal, inward gravity and Coriolis sign checks Pass
Integrated WGS-84 flight mode Powered vertical launch at a geodetic site Finite ECI propagation, local ENU history, geodetic history and unit quaternion Pass
NASA NESC atmospheric case 1 Dragless sphere, WGS-84 rotating Earth, 30 s ECI state, down velocity, altitude and longitude within stated absolute tolerances of NASA sim_06 Pass
NASA NESC atmospheric case 2 Dragless tumbling brick, WGS-84 rotating Earth, 30 s NED Euler angles and inertial body rates within 2e-8 deg or deg/s of NASA sim_04 Pass

The automated checks are in tests/unit/test_flight_6dof.py and tests/unit/test_math_utils.py.

NASA NESC case 2 rotational check

The torque-free test uses the corrected public inputs from NASA's atmospheric check-case 2:

  • principal inertias: [0.001894220, 0.006211019, 0.007194665] slug·ft²;
  • initial body rates relative to the local frame: [9.995821927, 20, 30] deg/s;
  • duration: 30 s;
  • no applied aerodynamic or propulsion moment.

At the equatorial initial condition, the local north axis rotates inertially at 0.004178073 deg/s; the corresponding initial inertial roll rate is therefore 10 deg/s, matching the NASA output definition. The common inertia unit scale cancels from Euler's torque-free equations. EnSim integrates the asymmetric-body rates and body-to-ECI quaternion with a 0.01 s RK4 step, transforms attitude back to the moving NED frame, and compares seven five-second samples with NASA's Atmos_02_sim_04.csv. All three Euler angles and all three inertial body rates agree within an absolute tolerance of 2e-8 deg or deg/s. A separate unit test also checks rotational energy, angular-momentum magnitude and quaternion norm.

NASA NESC case 1 translational cross-comparison

The automated validation propagates NASA Atmospheric Check-Case 01 from the published initial condition: latitude and longitude zero, 30,000 ft MSL, zero Earth-relative velocity, a rotating WGS-84 Earth and axisymmetric J2 gravity. EnSim uses ECI position and velocity as the integrated state and DOP853 with rtol=1e-11 and atol=1e-9.

Seven unchanged rows at five-second intervals were selected from NASA's Atmos_01_sim_06.csv. The test applies absolute tolerances of 0.002 ft to ECI position and altitude, 0.0002 ft/s to ECI and down velocity, 2e-10 deg to longitude and 1e-12 deg to latitude. Dataset provenance, hashes and NASA output-variable definitions are recorded in tests/reference/README.md.

The NESC result files form a comparison family generated by independent tools; they are not an endorsement of a single exact trajectory. This result is therefore an external cross-comparison of EnSim's elemental translational model, not flight-test validation.

Corrections made during verification

  • A vertical launch now aligns the body +X thrust axis with local up. The previous attitude initialization pointed thrust horizontally and relied on the launch-rail velocity projection to conceal the mismatch.
  • Quaternion kinematics now use right multiplication for a body-to-inertial quaternion driven by body-frame angular rates.
  • Mach number, dynamic pressure, drag and aerodynamic angles use air-relative velocity, including wind.
  • The undocumented synthetic transonic drag curve was removed. Propagation uses the axial drag coefficient entered by the user and referenced to body frontal area; Mach/Reynolds variation requires external wind-tunnel or CFD data.
  • Engine cutoff observes the requested burn time as well as available propellant.
  • Nozzle flow regime is reported as unknown unless exit static pressure is supplied. No empirical separation thrust penalty is invented from ambient pressure alone.
  • Center of pressure and normal-force slope come from the Barrowman model instead of a fixed 30% of length placeholder.

Model boundary and remaining validation work

The default trajectory model uses a local ENU frame and inverse-square vertical gravity. The optional use_wgs84=True path instead propagates the state and body attitude in ECI, uses the WGS-84 ellipsoid and axisymmetric J2 gravity, transforms the rotating atmosphere through ECEF, and reports both local ENU and geodetic histories. Both paths currently use EnSim's standard-atmosphere implementation, power-law wind profile, Barrowman small-angle normal-force/CP model, a user-supplied constant axial drag coefficient and a rigid vehicle model. The default Cd = 0.45 is an editable demonstration input, not a prediction. NASA NESC atmospheric cases also require precisely specified exchanged vehicle, atmosphere and DAVE-ML inputs, so EnSim's current trajectories are not yet numerically interchangeable with those reference histories.

Before EnSim can claim trajectory-level NESC verification, it still needs:

  1. exact NESC atmosphere, wind and DAVE-ML vehicle inputs;
  2. force and moment reevaluation at every adaptive Runge-Kutta stage;
  3. an end-to-end aerodynamically coupled NESC vehicle case such as case 3;
  4. independent telemetry validation for a documented vehicle.

Until those items are complete, UI and documentation should use "6-DOF engineering simulation with an optional WGS-84 Earth model," not "validated high-fidelity flight prediction."

Primary references