Balance cargo, tide and safe depth. One solver second represents 30 seconds on the tide clock.
m = 7,800 kg + cargo mass [kg]
d_eq = m / (ρ × 8 m × 3 m) [m] — closed-form static draft, for an upright box hull.
h = clamp(η − keelY, 0, 1.30 m) [m]
F_b = ρ × 9.81 m/s² × 24 m² × h [N]
m × a_y = F_b − m × g − c × v_y [N]
c = 2 × 0.85 × sqrt(m × ρ × g × 24 m²) [kg/s] — approximate linear damping.
T = 0.68 m − tideRate × (30t / 3600) + correction [m], with t in solver seconds and tideRate in m/h.
η = T + (A + extraWave) × sin(2πt / 4 s) [m]
under-keel gap = keelY + chartDepth + routeOffset [m]; freeboard = 1.30 m − max(0, η − keelY) [m].
window.__selfTest() in the console for the independent numerical check.