Pressing the brake pedal demands a constant deceleration a, requiring total force F = m·a. The motor, running as a generator, supplies as much of that force as it can as regenerative braking; the friction brakes cover the rest:
F_demand = m · a
F_regen = min( m·a_max_regen , P_motor(SOC) / v )
F_friction = F_demand − F_regen (never negative)
P_regen(t) = F_regen · v (electrical power to battery)
This produces the same shape as a real motor's torque–speed envelope: at low speed regen is torque-limited (constant deceleration capability, a_max_regen ≈ 0.30 g), but as speed rises the required electrical power P = F·v grows until it hits the inverter/motor's rated power P_motor — above that speed regen becomes power-limited and the available regen force falls as 1/v, so friction brakes must pick up the slack even though the pedal demand hasn't changed.
Two more real-world limits are modeled:
- Low-speed cutoff — below ≈8 km/h the motor's back-EMF is too small to push useful current into the pack, so regen fades to zero and the friction brakes bring the car to a full, silent stop.
- Charge-acceptance taper — a lithium-ion BMS throttles charge current as the pack approaches full. Above 80% SOC the battery's usable charge power tapers linearly to a small trickle at 100%, cutting into how much regen the pack can actually absorb even if the motor could deliver more.
Energy recovered is ∫P_regen dt (converted to the battery through a ~92% charge-path efficiency), while energy dumped as brake-pad heat is ∫F_friction·v dt — the two numbers below the split bar show exactly how the same stop divides between "money back in the battery" and "heat radiated into the air," which is why city driving (frequent moderate stops, mostly torque-limited) recovers a much larger share of kinetic energy than a hard stop from highway speed (which spends more time power-limited).