Hypersonic Boost-Glide 6-DOF (dim=13)
ADVANTAGES1 · dim 13SolvSRK wins. At the comparison noise level, SolvSRK beats the best baseline by at least 10 percentage points of survival, or by at least 0.05 balanced score when survival is tied. Use SolvSRK for this class of problem. All verdicts →
6-DOF boost-glide trajectory with exponential atmosphere, Mach-dependent aero tables (Cd/Cl), gravity-turn boost, and simplified Euler rotational dynamics with restoring moments. State: [x,y,z, vx,vy,vz, roll,pitch,yaw, wx,wy,wz, mass]. 30s boost phase followed by unpowered glide. Moderate stiffness from atmosphere/aero coupling.
Problem definition
Anderson, Hypersonic and High-Temperature Gas Dynamics (2006); Bertin & Cummings, Annu. Rev. Fluid Mech. 38 (2006); DARPA HTGV program references
Canonical RHS excerpt from the registered callable used for this benchmark cell. Expand it to verify the state equations; it is not a standalone runnable fixture.
Show canonical RHS excerpt
def _atmosphere_density(altitude):
"""Exponential atmosphere model."""
h = max(altitude, 0.0)
return _RHO0 * np.exp(-h / _H_SCALE)
def _gravity_accel(pos):
"""Spherical gravity: returns acceleration vector (toward center)."""
r = np.linalg.norm(pos)
r = max(r, _R_EARTH * 0.5)
g_mag = _MU_EARTH / (r * r)
return -g_mag * pos / r
def _mach_number(speed, altitude):
"""Approximate Mach from speed; sound speed decreases with altitude."""
# Simplified: assume isothermal atmosphere for sound speed
h = max(altitude, 0.0)
a = _SPEED_OF_SOUND_SL * np.exp(-h / (2.0 * 42000.0))
return speed / max(a, 1.0)
def hypersonic_boost_glide_6dof_rhs(t, y):
pos = y[0:3]
vel = y[3:6]
angles = y[6:9] # roll, pitch, yaw
omega = y[9:12] # angular rates
mass = max(y[12], 100.0)
speed = np.linalg.norm(vel)
speed = max(speed, 1e-6)
v_hat = vel / speed
altitude = np.linalg.norm(pos) - _R_EARTH
rho = _atmosphere_density(altitude)
mach = _mach_number(speed, altitude)
cd = np.interp(mach, _MACH_TABLE, _CD_TABLE)
cl = np.interp(mach, _MACH_TABLE, _CL_TABLE)
q_dyn = 0.5 * rho * speed * speed
drag = q_dyn * cd * _S_REF
lift = q_dyn * cl * _S_REF
# Drag opposes velocity; lift perpendicular (simplified: radially outward)
f_drag = -drag * v_hat
r_hat = pos / max(np.linalg.norm(pos), 1.0)
# Lift direction: component of radial direction perpendicular to velocity
lift_dir = r_hat - np.dot(r_hat, v_hat) * v_hat
lift_norm = np.linalg.norm(lift_dir)
if lift_norm > 1e-10:
lift_dir = lift_dir / lift_norm
else:
lift_dir = np.zeros(3)
f_lift = lift * lift_dir
g_accel = _gravity_accel(pos)
# Thrust along velocity direction during boost phase
if t < _T_BURN and mass > _M0 - _MDOT * _T_BURN:
f_thrust = _THRUST * v_hat
dm_dt = -_MDOT
else:
f_thrust = np.zeros(3)
dm_dt = 0.0
accel = (f_drag + f_lift + f_thrust) / mass + g_accel
# Simplified Euler rotational dynamics with restoring moments
# toward zero angles and linear damping
torque = np.array([
(-_K_RESTORE * angles[0] - _C_DAMP * omega[0]) / _I_XX,
(-_K_RESTORE * angles[1] - _C_DAMP * omega[1]) / _I_YY,
(-_K_RESTORE * angles[2] - _C_DAMP * omega[2]) / _I_ZZ,
])
dy = np.empty(13)
dy[0:3] = vel
dy[3:6] = accel
dy[6:9] = omega
dy[9:12] = torque
dy[12] = dm_dt
return dy- Parameters
- _CD_TABLE = [0.3, 0.35, 0.25, 0.15, 0.12, 0.11, 0.1, 0.1]
- _CL_TABLE = [0, 0, 0.05, 0.03, 0.02, 0.015, 0.01, 0.01]
- _C_DAMP = 50
- _H_SCALE = 8500
- _I_XX = 50
- _I_YY = 800
- _I_ZZ = 800
- _K_RESTORE = 500
- _M0 = 1500
- _MACH_TABLE = [0, 1, 2, 5, 10, 15, 20, 25]
- _MDOT = 50
- _MU_EARTH = 3.986e+14
- _RHO0 = 1.225
- _R_EARTH = 6.371e+06
- _SPEED_OF_SOUND_SL = 340.29
- _S_REF = 0.5
- _THRUST = 200000
- _T_BURN = 30
- Initial condition
- y(0) = [0, 0, 6.401e+06, 2000, 0, 200, …] [shape=(13,), min=0, max=6.401e+06]
- Horizon
- t ∈ [0, 600]
Canonical RHS excerpt captured from the same registered callable used for the published benchmark. Frozen closure values are summarized below; helper imports and solver settings are intentionally omitted.
Fingerprint
Spread: extreme
Default noise: medium
Recommendation snapshot
Clean best: SciPy BDF
Noisy best: SolvSRK
Coverage
14 solver arms · clean + 5 noise levels
Ranked on survival, precision, and speed
Versions & freeze
Methodology →- Freeze
- 2026-08-13
- libsolvsrk
- 2.3.0
- SciPy
- 1.14
- SUNDIALS
- CVODE (bundled backend)
20 seeds/cell default · 14 arms · TRL 4–5 · simulation-lab validated · this page: Hypersonic Boost-Glide 6-DOF (dim=13) (hypersonic-boost-glide-6-dof-dim-13)
Governed SolvTune benchmark freeze; per-arm medians only. RHS definitions and raw trial rows are not published.
Self-reported by Resonix Labs · not independently verified
Results matrix
Pick an objective and a noise level to rank all arms on survival, median SCD, median nfev, and median wall time. Medians across seeds.
Objective
Best overall trade-off of survival, precision, and speed.
Noise level
| # | Solver | Survival | SCD | nfev | Wall | Score |
|---|---|---|---|---|---|---|
| 1 | SciPy BDFSciPy | 100% | - | 1,044 | 63 ms | 0.809 |
| 2 | SciPy RadauSciPy | 100% | - | 2,478 | 116 ms | 0.809 |
| 3 | SciPy RK45SciPy | 100% | - | 794 | 24 ms | 0.809 |
| 4 | SciPy LSODASciPy | 100% | - | 702 | 19 ms | 0.809 |
| 5 | SciPy DOP853SciPy | 100% | - | 1,478 | 43 ms | 0.809 |
| 6 | SciPy RK23SciPy | 100% | - | 2,249 | 73 ms | 0.809 |
| 7 | CVODE BDFexternal | 100% | - | 658 | 29 ms | 0.809 |
| 8 | CVODE Adamsexternal | 100% | - | 393 | 18 ms | 0.809 |
| 9 | Tsit5external | 100% | - | 990 | 914 ms | 0.809 |
| 10 | Vern7external | 100% | - | 1,702 | 4.10 s | 0.809 |
| 11 | Vern9external | 100% | - | 2,882 | 3.97 s | 0.809 |
| 12 | TRBDF2external | 100% | - | 4,099 | 5.39 s | 0.809 |
| 13 | FBDFexternal | 100% | - | 929 | 4.94 s | 0.809 |
| 14 | SolvSRK | 100% | - | 2,377 | 56 ms | 0.809 |
At Clean, best balanced arm is SciPy BDF · SolvSRK survival 100%.
Values are medians across seeds, measured by Resonix Labs on Resonix hardware and not independently verified; nfev and wall are on reference lab hardware (indicative). Under injected noise only SolvSRK and the SciPy arms are run. How we measure accuracy → · Verification status →
Cite this page
Replace the access date. Pin the freeze ID and library versions when comparing against a later export. Cite it as what it is - a self-reported vendor benchmark, not an independently verified result. The note field says so; please keep it.
@misc{resonix_evidence_hypersonic_boost_glide_6_dof_dim_13_2026,
title = {Resonix Evidence Portal: Hypersonic Boost-Glide 6-DOF (dim=13)},
author = {{Resonix Labs (Canada) Inc.}},
year = {2026},
howpublished = {\url{https://resonixusa.com/evidence/problems/hypersonic-boost-glide-6-dof-dim-13}},
note = {Self-reported vendor benchmark; internally generated by Resonix Labs and not independently verified. Accessed YYYY-MM-DD. Freeze 2026-08-13; libsolvsrk 2.3.0; SciPy 1.14.}
}Related
TRL 4–5 · simulation-lab validated · 398 problems · 14 solver arms · clean + 5 noise levels
Freeze: 2026-08-13 · scipy 1.14 · libsolvsrk 2.3.0 · Methodology
Self-reported by Resonix Labs · not independently verified · Verification status