01 — The problem with multipliers
Why "EPA × 0.85"
gives you wrong answers.
The standard approach used by most EV comparison sites is simple: take the official figure and apply a fixed discount. Some use 80%, some 85%, some 75% for winter. This is better than nothing — but it fundamentally cannot account for the physics that actually determine your range.
Aerodynamic drag increases with the square of speed. A Tesla Model S doing 85 mph doesn't lose 15% more range than at 65 mph — it loses more like 25–30%, because drag forces are non-linear. A flat multiplier can't capture this. Our engine can, because it computes drag force directly from the car's measured drag coefficient and frontal area at your exact speed.
Similarly, a flat "winter penalty" of ×0.68 treats a Hyundai Ioniq 5 with a heat pump exactly the same as a Nissan Leaf without one — even though the heat pump can halve HVAC energy consumption in cold conditions. Our HVAC model is branched on whether the car has a heat pump, using calibrated coefficients for each case.
02 — Engine architecture
V5.7: nine computation steps,
every range estimate.
1
Drivetrain base efficiency (η)
Sets the baseline powertrain efficiency based on drivetrain layout (RWD/AWD/FWD), mass, and whether the car uses a SiC inverter. AWD heavy vehicles get η = 0.92, SiC RWD gets 0.95. A platform_eta_override field allows per-car correction for known outliers.
2
Motor efficiency curve (field-weakening model)
Motor efficiency isn't flat — it degrades above ~110 km/h due to field-weakening losses. We model this with a quadratic curve clamped between 0.835 and 0.98, then apply a 2.8% cold-weather drivetrain lubrication penalty below 10°C.
3
Rolling resistance (Crr)
Base Crr is tiered by vehicle mass (4 bands from 0.009 to 0.0145). Adjusted for speed-dependent tire deformation, tire width relative to 225mm baseline, and a per-car crr_mult override for models with known low-rolling-resistance tires.
4
Aerodynamic drag (Cd × frontal area)
Uses the car's measured drag coefficient (Cd) and frontal area from manufacturer data. Air density is adjusted for temperature using the ideal gas approximation (ρ = 1.225 × 288.15 / (T + 273.15)). Cold air is denser, increasing drag slightly.
5
HVAC & thermal load
A base auxiliary load (default 0.42 kW) represents 20°C steady-state electronics. Below 15°C, heating demand increases linearly. Cars with heat pumps use a 0.066 kW/°C coefficient; resistive heaters use 0.095 kW/°C — a significant difference in cold climates.
6
Battery thermal factor
Cold temperatures reduce usable capacity beyond just heating load — lithium-ion cells deliver less energy at low temperatures. A thermal factor from 0.60 (extreme cold) to 1.0 (above 15°C) scales the usable battery energy. This is applied to the usable capacity, not the range output.
7
Range calculation
Range (miles) = (battery_net × usable_fraction × thermal_factor) ÷ ((P_wheel / motor_eff + P_hvac) / speed_mph). This gives kWh/mi consumption at the target speed, divided into usable energy.
8
Calibration factor
A per-car calibration_factor (default 1.0) allows fine correction after comparing engine output to real-world data. Cars with unusual efficiency characteristics that the physics model doesn't fully capture (active grille shutters, predictive HVAC) can be corrected here without changing the core model.
9
Confidence tiering
Each result is assigned a confidence tier (±5%, ±10%, ±15%) based on how well-characterised the car is and whether any known model-specific factors fall outside the physics model's scope. Tier is displayed on every car page.
03 — Battery degradation
SOH model v2.0 —
Power-Law degradation.
Battery degradation in lithium-ion cells is well-studied. It follows a power-law model for cyclic degradation (driven by charge/discharge cycles) and a linear model for calendar degradation (driven by time at elevated state-of-charge). We apply both and take the dominant factor.
The k_cyclic and k_calendar coefficients are differentiated by brand and battery chemistry (NMC vs LFP). For example, Tesla NMC uses k_cyclic = 0.000148 while Nissan NMC (Leaf, known for faster degradation) uses 0.000310 — reflecting the real-world performance gap documented extensively in owner communities and battery researchers' published data.
LFP batteries (used in BYD, some Tesla Standard Range models) degrade significantly more slowly on both cyclic and calendar dimensions, with correspondingly lower k values.
04 — Where the data comes from
Sources, calibration,
and what we cross-check.
📐
Manufacturer technical specifications
Drag coefficients (Cd), frontal areas, battery net capacity, peak charge rates, and drivetrain configurations are sourced from official manufacturer documentation and technical press materials.
🔬
Published battery degradation research
The power-law exponent (0.52) and brand-specific k_cyclic coefficients are derived from peer-reviewed battery science literature and calibrated against large-scale owner fleet data from sources such as the Recurrent Auto dataset and EV Owners survey databases.
📊
Real-world testing programmes
Organisations including Bjørn Nyland (Norway), ADAC (Germany), and EPA highway cycle data provide independent real-world range measurements against which we calibrate our engine output and set per-car calibration factors.
👥
Owner community data
Forums, owner surveys, and apps such as Spritmonitor and EV-Database aggregate real-world efficiency data that we use to validate model outputs — particularly for highway speeds not covered by standard test cycles.
05 — Accuracy & limitations
Where we're confident.
Where you should be cautious.
Examples
Tesla Model 3, Ioniq 6, EQS, Taycan — well-documented, standard architectures
Examples
Kia EV6, Rivian R1T, Bolt EV, Volvo EX30 — some unusual efficiency factors
Examples
Cybertruck, Hummer EV — complex real-world profiles, limited validation data
What the engine does not model
Regenerative braking recovery in urban stop-start driving (our estimate is highway-focused). Specific battery preconditioning behaviour on DC fast charging routes. Air conditioning load in extreme heat (model focuses on cold). Individual tyre pressure, wear, or non-standard wheel sizes.
What the engine handles well
Sustained highway speeds from 55–85 mph. Cold weather range drop (our primary use case — the problem we were built to solve). Battery degradation at mileage. Drivetrain efficiency differences. HVAC load with and without heat pump. Speed-sensitivity curves that flat multipliers can't capture.
06 — Engine version history
How we've improved over time.
Changelog
v5.7
Current. High-speed field-weakening fix (quadratic motor efficiency curve above 110 km/h). Cold drivetrain lubrication penalty below 10°C. Air density thermal correction. Per-car crr_mult and frontal area overrides.
v5.x
Introduced SiC inverter efficiency branching. Added heat pump vs resistive heater HVAC coefficient split. Platform eta override field for cars where architecture differs from standard drivetrain assumptions.
SOH v2.0
Replaced inline calendar formula with dual-path power-law + linear model. Added brand × chemistry degradation coefficient map (8 brands, NMC/LFP split). Minimum SOH floor of 70%. Consistent across api.php and view_car.php.
Early
Initial flat-multiplier approach replaced by first physics model. Rolling resistance tiered by mass. Basic temperature scaling introduced. Calibration factor field added to allow per-car correction without model changes.