Every formula. Every assumption. No black boxes.
v = GPS Doppler speed [m/s] a = EMA(Δv / Δt, α=0.4) // Δt from GPS-chip clock m_eff = m × (1 + rot_inertia(gear)) // 4–25 % rotating mass ρ_air = 1.293 × (273.15 / (273.15 + T)) × (P_static / 1013.25) F_roll = m × 9.81 × Cr // Cr: coast-down measured v_rel = v + (v_wind × cos(φ_wind − heading)) F_aero = 0.5 × ρ_air × CdA × v_rel × |v_rel| // CdA: coast-down F_grade = m × 9.81 × sin(θ_road) // altitude regression F_net = m_eff × a + F_roll + F_aero + F_grade P_wheel = F_net × v P_engine = P_wheel / (1 − drivetrain_loss)
Pure Newtonian physics. No engine assumptions, no fuel-flow guess. We measure how fast the car is actually accelerating, then back-calculate the force the engine must produce to overcome inertia (including per-gear rotating mass), rolling resistance, aerodynamic drag and road grade. The loss coefficients can be measured for your exact car with a coast-down run instead of being guessed.
// neutral gear, no braking — pure deceleration: m_eff × dv/dt = −(F0 + F2 × v²) least-squares fit over the rolldown: F0 → Cr = F0 / (m × 9.81) // rolling resistance F2 → CdA = 2 × F2 / ρ_air // aero drag area quality gate: R² ≥ 0.6, span ≥ 25 km/h // else rejected
After a pull you shift to neutral and let the car roll. From that deceleration the app fits the physical loss model and derives YOUR car's rolling resistance and aero drag — replacing the two most error-prone hand-entered parameters with measured ones. Saved to the vehicle profile and used in every following run.
// If real MAF unavailable, synthesise via speed-density:
ṁ_air [kg/s] = (MAP × Vd × RPM/60 × VE) / (R_air × T_intake × 2)
MAF [g/s] = ṁ_air × 1000
AFR_actual = AFR_stoich × λ // 14.7 / 14.5 / 15.7
fuel_flow = MAF / AFR_actual
P_fuel = fuel_flow × LHV // 44 / 42.5 / 46 kJ/g
η = clamp(0.36 + 0.002 × (25 − T_air), 0.31, 0.41)
× (1 − 0.1 × |λ − 1.0|)
P_engine = P_fuel × ηIndependent of GPS. Reads how much air the engine is consuming and how rich it's running, then calculates the chemical energy of the fuel being burned and the engine's thermal efficiency. Works even when GPS is locked but fails when the car has no MAF sensor — for those cases we synthesise MAF from MAP + RPM + intake temperature.
delta_pct = | P_GPS − P_MAF | / | P_GPS | × 100 delta < 5 % → HIGH ●●● 5–10 % → MEDIUM ●●○ 10–20 % → LOW ●○○ > 20 % → BAD ○○○ (run rejected)
The honest part. Two completely independent calculations should agree if the inputs are correct and the physics is sound. When they disagree, something is wrong — and DynoPulse tells you instead of hiding it.
DIN 70020: K = (1013.25 / P_hPa) × √( T_K / 293.15 )
ECE R85: αa = (990 / P_dry_hPa)^1.2 × (T_K / 298.15)^0.6
P_dry = P_static − RH × P_sat(T) // Magnus
validity: 0.93 ≤ αa ≤ 1.07 // badge in app
P_corrected = P_engine × CfResults are normalised to the reference conditions of the norm you pick: DIN 70020 (1013 hPa / 20 °C) or ECE R85 — the type-approval standard, computed on dry-air pressure so humidity is accounted for. The app shows the raw value, the corrected value, the factor itself, and whether your conditions sit inside the norm's validity range (0.93–1.07 for ECE R85) — you always know how trustworthy the correction is.