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
+Xthrust 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 lengthplaceholder.
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:
- exact NESC atmosphere, wind and DAVE-ML vehicle inputs;
- force and moment reevaluation at every adaptive Runge-Kutta stage;
- an end-to-end aerodynamically coupled NESC vehicle case such as case 3;
- 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¶
- E. B. Jackson, D. G. Murri and R. O. Shelton, Check-Cases for Verification of 6-Degree-of-Freedom Flight Vehicle Simulations, Volume I, NASA/TM-2015-218675, 2015.
- NASA Engineering and Safety Center, Atmospheric Case 2: Tumbling Brick, Dragless, including the published erratum.
- NASA Engineering and Safety Center, Body and Vehicle Models, brick mass properties and aerodynamic coefficients.
- NASA Engineering and Safety Center, 6DOF Check Cases Technical Bulletin 24-04, 2024.