Holiday Drag Racing, Part 2/2

Its time to simulate the big guns in drag racing; the stars of Motortrends Street Outlaws: No Prep Kings. Following on from my previous article, where I simulated my little Locost in a straight-line, I have tried my best to piece together what a No Prep car looks like on paper and what makes them able to perform a Eighth Mile Drag Race in less than 4s! Lets delve in.

“The Shocker”

The car I have loosely based my numbers on is Kye Kelley’s third generation Camaro; “The Shocker”. Kye is a top level driver and builder and is often talked about. You can read about his story here in Dragzine. Kye came second place in the 2019 championship, but it was a close call between him and Ryan Martin.

An image of Kye Kelleys third generation Camero. Taken from You can find the original article here.


The Shocker runs a Pat Musi built 959 EFI Pro Nitrous engine (959 cubic inch, 15.7 litres!). Engine Builder Magazine quotes these engines at 1,850 hp naturally aspirated and 2,800 hp on nitrous, although larger numbers are thrown around in No Prep Kings (4000hp?!?).

While no data is available to say what engine speed peak power and peak torque are made at, I have made a guess based on other engines. Rocker-arm over-head-valve V8’s are generally speed limited by their valve train and/or crankshaft so these numbers weren’t going to be far from reality. This NMCA (National Muscle Car) article suggests Pat Musi’s “smaller” engines make peak power at 7200rpm with a crank limited speed of 8000rpm.

2800hp at 7200rpm is a whopping 2769 Nm of torque. I assumed the torque curve for this engine was relatively flat, based on what I have seen on Motortrends Engine Masters. The following plot shows the guess I used in the drag simulation.

If this is hugely wrong then please feel free to get in contact with me Pat! I would love to talk to you about these amazing engines.


The No Prep Kings rules outline a useful piece of information. A Big Block Nitrous powered car must have a base weight of 2750 lbs (1247 kg). I trust that Kye Kelley has built a car that is down at the base weight and probably requires ballast to get back up to that weight.

The third generation Camaro has a wheelbase of 2.565m (101.0 in) and the rules allow an increase in wheelbase of 3 inches, which I expect the Shocker makes use of to stabilize the car at speed.

The owners forum suggest a weight distribution of approximately 55% forward for a stock car. I can’t see this having changed too much given the bigger engine in the front and the bigger tyres in the back.

Again, I had to lean into the owners forum for drag coefficient details (not the most solid source of information) but they suggested the CdA of a third gen Camero is approximately 0.66334 (Cd: 0.340 * Area: 1.951). If we factor in an air density at sea level of 1.225 kg/m^2 we get an overall pCdA of 0.813. The Locost was suggested to be around 0.9, which suggests the Camero gets a large amount of its drag from being a much bigger car; always worth thinking about when trying to reduce this number.


I couldn’t find what gearbox is currently in The Shocker, so I looked to Ryan Martins car; the winner of season 3. He runs a TH400 automatic three speed transmission. The ratios of which are listed on the internet.

I have made one massive oversight: this car is an automatic. The engine speed to road speed is not directly coupled through a clutch, it slips due to being coupled through a torque converter. This allows the engine to stay around peak torque longer without having to drop down the torque curve, but it is less efficient. I am going to assume the difference is negligible for the sake of simplicity.


Again, I had to turn to Ryan Martins car for additional information. His chassis is setup to run “Outlaw 10.5/Radial” rear tyres which are, as you guessed it, 10.5 inchs wide. The Mickey Thompson 29.5/10.5-15W is a pretty good example of this (I think!) and they stand at 29.6inches diameter.

Completely Guessed Variables

I had to have a guess at four variables: the height of the center of gravity, the effective Tyre Grip/Fricton, the Shift Delay time and the Final Drive Ratio. My selected numbers and the reasonings behind them were as follows:

Height of center of gravity

I have stuck with 0.4m. These drag cars run very low ride heights by the looks of things. In reality its probably higher, given the increased rearward weight transfer that having a higher COG would give you and the subsequent added benefit to traction. That said, I believe the tyres are so grippy in these No Prep cars that at launch all the weight is on the rear tyres anyway; that’s that.

Tyre Grip

This SAE paper (The Magic of the Drag Tire) quotes top fuel dragsters and funny cars accelerating at over 4g’s. While the actual coefficient of friction of the tyre is lower than 4.0 the effective friction is around 4.0 due to the way energy is stored in the tyre and the way it interacts with the rubbered surface.

I figure a cheaper, smaller, off the shelf tyre isn’t as “grippy” and given the surface is not prepared, the overall coefficient of friction is in the 2 – 3 region. Its a guess, but as you’ll see later its not bad.

Shift Delay

The gearbox is shifted automatically which makes the whole question of “shift delay” a little hard to workout as the engine never clutches. I have thrown in a value of 0.1s as a guess.

Final Drive Ratio

I adjusted this number to give close to max engine speed at the end of the track. In the end I settled on a 3:1 ratio.

Summary of Key Variables

Total Mass1247kgBase weight from the No Prep Kings rules
Weight Distribution Forward55%Stock Camaro
Height of the Centre of Gravity0.4mGuess
Drag Coefficient (pCdA)0.813Taken from the Camaro owners forum
Rear Axle Grip3N/NVery sticky drag tyres in a rubbered launch box
1st Gear Ratio2.48:1TH400 Automatic Transmission
2nd Gear Ratio1.48:1
3rd Gear Ratio1.00:1
Final Drive Ratio3:1Guess. Tuned to the simulation.
Wheel Diameter0.75184m29.6 inches
Wheel Circumference2.3620mThe diameter multiplied by pi

A 3.9s Pass

The research above allowed me to produce the following straight-line simulation.

Well there you have it, the eighth mile in 3.94s @ 202.5mph and 0-60mph in 0.915s. Quicker than the Locost? Most definitely!

Note that the car is entirely traction/grip limited throughout first gear, but beyond that point it is flat out down the track. I don’t expect this is always the case. The grip in the start box will be much higher, due to the rubber that is laid down from burnouts. I expect grip drops off quickly the further down the track the car travels. You would want to tune your gears and power wisely based on the track you are racing on and the surface, which is what you witness the drivers doing on the show.

Final Thoughts

I really enjoyed doing the research for this article. It took a lot of digging around drag racing websites and parts stores to understand what is underneath a No Prep car.

I’m tempted to have a crack at Dirt Track Racing next. Perhaps investigating what it takes to drive fast sideways? We’ll soon see.

I hope you enjoyed the content!

Code (Octave GNU or Matlab)

clear all; close all; clc;

# Vehicle Definition
mass = 1247;       # [kg], Total Vehicle Mass, From the No Prep Kings rules
wd = 0.55;        # [-], Forward Weight Distribution, Stock Camero
h_cog = 0.4;      # [m], Height of COG, Guess
wheelbase = 2.565 + (25.4*3)*0.001;  # [m], Wheelbase, From Wikipedia
drag_pCdA = 0.813;   # [], Drag Coefficient * Area * Air Density, taken from the Camero forums
grip = 3;       # [N/N], Rear Axle Peak Grip, Guess based on 4g launch of proper drag cars

# Pat Musi 959 on Nitrous
engine_speed = [0,2000,4000,6000,7200,8000]; # [rpm]
engine_torque = [2000,2750,3000,3000,2769,2450]; # [Nm]

# Plot for Engine Power / Torque
if 0
  figure; hold on; grid on;
    plot( engine_speed, engine_torque, 'b' );
    plot( engine_speed, engine_torque .* (2*pi*engine_speed/60) * 0.001 * (1/0.7457), 'r' ); # [hp], Metric
    h = legend( 'Engine Torque [Nm]', 'Engine Power [hp]' );
    legend (h, "location", "northeastoutside");
    xlabel( "Engine Speed [rpm]" );
    title( "My guess at an impressive Pat Musi 959 Nitrous V8" );

gear_ratios = [2.48, 1.48, 1.00]; # TH400 automatic transmission
gear_ratios_max = 3;
gear_final_drive = 3; # Guess based on max RPM at the end of the track
gear_wheel_diameter = (29.6*25.4) * 0.001; # [m], Mickey Thompson 29.5/10.5-15W
gear_wheel_circumference = gear_wheel_diameter * pi; # diameter * pi
gear_shift_rpm = [8000, 8000, 8000]; # As limited by the Engine
gear_shift_time = [0, 0.1, 0.1];

# Calculate max possible speed
v_max = ( gear_wheel_circumference * gear_shift_rpm(gear_ratios_max) ) / ( gear_ratios(gear_ratios_max) * gear_final_drive * 60 );

# Simulation Variables
g = 9.81;         # Gravity
t = 0;            # [s], Current Time
dt = 0.001;       # [ds], Delta Time
a = 0;            # [m/s^2], Instantaneous Acceleration
v = 0;            # [m/s], Instantaneous Velocity
s = 0;            # [m], Distance Travelled
gear = 1;
zero_to_sixty_time = 0;
gear_shift_timer = 0;

# Datalog
t_log = [];
a_log = [];
v_log = [];
s_log = [];
rpm_log = [];
throttle_log = [];

# 1/4 Mile = 402.336 meters
# 1/8 Mile = 201.168
while s <= 201.168
  # Calculate the rotational speed of the rear axle [hz]
  axle_speed = v / gear_wheel_circumference;
  # Calculate engine rpm based on current speed
  rpm = gear_ratios(gear) * axle_speed * gear_final_drive * 60;

  # Should we up shift?
  if gear < gear_ratios_max
    if rpm > gear_shift_rpm(gear)
      gear = gear + 1;
      gear_shift_timer = gear_shift_time(gear);
  # Calculate the weight on the rear axle (including weight transfer)
  # and the maximum force the tyre can supply
  mass_rear = mass*(1-wd) + (mass * a * h_cog / wheelbase); # [kg]
  if mass_rear > mass
    mass_rear = mass;
  max_tyre_force_rear = mass_rear * grip * g; # [N]
  # Limit engine torque lookup within engine max rpm
  if rpm > gear_shift_rpm(gear)
    engine_torque_output = interp1 ( engine_speed, engine_torque, gear_shift_rpm(gear) );
    engine_torque_output = interp1 ( engine_speed, engine_torque, rpm );
  engine_torque_at_axle = engine_torque_output * gear_ratios(gear) * gear_final_drive;
  engine_force = 2 * engine_torque_at_axle / gear_wheel_diameter;
  # Calculate drag
  drag_force = 0.5 * drag_pCdA * v * v; # [N]
  # Estimate throttle position
  throttle = 1;
  if engine_force > max_tyre_force_rear
    throttle = max_tyre_force_rear / engine_force;
  # Are we shifting gears?
  if gear_shift_timer > 0
    max_tyre_force_rear = 0;
    engine_force = 0;
    throttle = 0;
    gear_shift_timer -= dt;
  # Calculate Acceleration
  a = ( min(max_tyre_force_rear, engine_force) - drag_force) / mass;
  # Limit maximum speed, essentially a rev limiter
  if v >= v_max
    if a > 0
      a = 0;
  # Rough Integration
  v = v + a*dt;
  s = s + v*dt;
  t = t + dt;
  # Add to the Datalog
  t_log = [t_log; t];
  a_log = [a_log; a];
  v_log = [v_log; v];
  s_log = [s_log; s];
  rpm_log = [rpm_log; rpm];
  throttle_log = [throttle_log; throttle];
  # Grab 0-60 time
  if zero_to_sixty_time == 0
    if v .* 2.23694 >= 60
      zero_to_sixty_time = t;

subplot(5,1,[1 2]); hold on; grid on;
  plot( t_log, v_log .* 2.23694, 'b' ); # [mph]
  ylabel( "Speed [mph]" );
  title( [num2str(t) "s Eighth Mile @ " num2str(v .* 2.23694, 4) "mph, 0-60mph in " num2str(zero_to_sixty_time) "s"] );
subplot(5,1,3); hold on; grid on;
  plot( t_log, a_log ./ g, 'r' ); # [g]
  ylabel( "Acceleration [g]" );
subplot(5,1,4); hold on; grid on;
  plot( t_log, rpm_log, 'k' );
  ylabel( "Engine Speed [rpm]" );
subplot(5,1,5); hold on; grid on;
  plot( t_log, throttle_log  .* 100, 'k' );
  xlabel( "Time [s]" );
  ylabel( "Throttle [%]" );
  ylim( [0 100] );
set( gcf, 'position', [300, 202, 560, 755] );

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.