How Do Computer Models Help Break Records?
Coorous Mohtadi, MathWorks, 2012
Copyright 2012 - 2012 MathWorks Inc
For centuries, engineers have solved challenges by simplifying assumptions so as to understand the underlying phenomena. Mathematical and computer models help us understand physical occurrences and let us perform sweeps over a range of design parameters so that we can determine which are most important to specific objectives. Often, we can look to simple models and computer programs, rather than extremely complex ones, to help us make design decisions. Computer models based on simplified assumptions help students gain a better appreciation of the design process. Such models also spark interest in the underlying physics and mathematics . In this article we examine the simplified performance model of a car designed to break the Land Speed Record. We will use MATLAB®  to create our models.
“MATLAB and Simulink are registered trademarks of The MathWorks, Inc."
The challenge to the Land Speed Record will take place in Hakskeen Pan in the Northern Cape region of South Africa where ‘the fastest man on earth’, driver Andy Green, will attempt to break the record with the UK-based BLOODHOUND SSC® team. (See http://www.bloodhoundssc.com for related blogs and videos. BLOODHOUND SSC ® is a European Registered Trade Mark of BLOODHOUND Programme Ltd)
With the BLOODHOUND project it would be far too expensive to build prototypes to try out various ideas and approaches. Accurate and meaningful mathematical models and computer simulations are therefore vital. This approach enables thousands of experimental runs to be performed in a relatively short time. For example, assuming a simulation run takes about 2 seconds, it is possible to examine 10,000 different variations in less than 2 hours on a 4-core laptop. Reliable models allow designers to identify the optimum solution relatively quickly.
While models do not need to incorporate every detail of the system, they must be accurate enough to represent the feature under study. As Professor George Edward Pelham Box, an early pioneer of time series analysis and mathematical modelling using statistical techniques, is reported to have said, “all models are wrong but some are useful”. Working with performance models requires sufficient confidence that the model is good enough to predict the overall behaviour of the car without having to go into enormous detail.
The target for the BLOODHOUND project is a supersonic car travelling at 1000 mph. The rules of the Land Speed Record are simple: the car must have (at least) four wheels and make two passes through the “measured mile” in opposite directions. The car has to decelerate to a standstill by the time it reaches the end of the track and be ready for the return journey within the hour. The average of the two speeds over the measured mile is recorded as the attempt on the Land Speed Record. The current record stands at 763 mph. It was set in October 1997 by Andy Green, driving Thrust SuperSonicCar powered by two jet engines. However, these jet engines would not provide the extreme performance required to achieve 1000 mph so innovative design approaches are called for.
The track for the Land Speed Record attempt is 10 miles long. The maximum speed of the car is measured in a one-mile stretch in the middle of the track. This leaves 4.5 miles to accelerate to a maximum speed of 1000 mph, one mile to travel at maximum speed, and 4.5 miles to stop. If we assume constant acceleration and deceleration, this gives us the following profile using a simple MATLAB script as shown.
% Conversion factors to SI Units Miles2Metres = 1609.344; mph2ms = 1609.344/3600; % Constants: 4.5 miles to accelerate, Vm set to 1000 miles per hour % Distance in metres Distance = 4.5*Miles2Metres; % Max Speed in metres per second Vm = 1000*mph2ms; % Assume: % Constant acceleration to Vm; % Measured mile at constant speed; % Constant decelleration % Compute Acceleration Accel = Vm^2/(2*Distance); % Time to reach Vm Time2Vm = Vm/Accel; % Time spent constant speed TimeMile = Miles2Metres / Vm; % Deceleration Time Time2Stop = Time2Vm; TotalTime = Time2Vm + TimeMile + Time2Stop; % Compute speed and position 1000 samples linearly spaced t = linspace(0,TotalTime,1000); Interval = t(2)-t(1); % Zero acceleration Acceleration = zeros(size(t)); % less than Time to Maximum Velocity +ve Accn Acceleration(t <= Time2Vm) = Accel; % greater than time after the measured mile -ve Accn Acceleration(t > Time2Vm+TimeMile) = -Accel; % Speed = Integral of Acceleration Speed = cumsum(Acceleration)*Interval; % Position = Integral of Speed Position = cumsum(Speed)*Interval; % Plotting commands subplot(311) plot(t,Acceleration,'LineWidth',2) xlabel('Time in Seconds'); ylabel('Acceleration in m/s^2'); title('Acceleration and Speed profile'); grid; axis('tight') subplot(312) plot(t,Speed,'LineWidth',2) xlabel('Time in Seconds'); ylabel('Speed in m/s'); grid; axis('tight') subplot(313) plot(Position, Speed,'LineWidth',2); xlabel('Position in Metres'); ylabel('Speed in m/s'); grid; axis('tight')
The car will have an acceleration of 13.8 for 32.4 seconds to reach a maximum speed of 447m/s (or 1000 mph) for 3.6 seconds to travel through the measured mile. This profile, though unrealistic, provides an idea of the of the required speeds, times, and accelerations. For example, the design team is planning to employ a jet engine to accelerate the car. The jet produces a maximum of 90 kN of thrust, and the car weighs about 6000 kg. To a first approximation, this gives a potential maximum acceleration of 15 . Considering the many other forces involved, it is clear that the jet engine on its own is not sufficient and that an additional hybrid rocket will be necessary to provide a boost to reach the desired speed.
Four basic forces act on the car: gravity and aerodynamic lift acting vertically, thrust and drag acting horizontally. Additionally, there are sideways forces of yaw and roll, making the analysis quite complex. We will focus on the elements of thrust and drag and will try to make predictions about the performance of the car based on simplifying assumptions.
The thrust to drive the car forward will come from two sources:
- The EJ200 jet engine, providing up to 90 kN of thrust
- A hybrid rocket with 120 kN of thrust
The horizontal forces opposing the motion range from basic friction or rolling resistance of the car to different components of aerodynamic drag. Rolling resistance can be treated the same as basic friction to a first approximation. This gives us a horizontal force opposing the motion that is proportional to the weight of the car, or In our case M, the mass of the car, is around 6500 kg; g, the acceleration due to gravity, is 9.81 m/s^2; and , the coefficient of rolling resistance, is estimated to be around 0.4 to a first approximation.
The car experiences drag from airflow as soon as it starts moving. Drag can be caused by any of the following phenomena:
- Skin friction
- The pressure difference between the front and the rear of an object
- The lift-dependent viscous effect
These and other similar effects are summarized in the equation
The drag is proportional to the density of air, the incident area, and the square of the speed. The speed is sometimes expressed as the Mach number, which is the ratio of the speed of the vehicle to the speed of sound. The drag coefficient is itself a function of several variables, including the speed and shape of the object and the viscosity and temperature of the surrounding air. The actual values can be estimated using computational fluid dynamics models and can be verified through experiments in wind tunnels. The typical value for for BLOODHOUND will vary between 0.7 and 1.4, increasing at higher speeds. At low speeds the of a typical car is around 0.3. For our model we assume a fixed value for the of 0.7. Stopping the car in time is a critical part of the mission. Ordinary disc brakes, though effective at low speeds (less than 200 mph), would rapidly overheat if used at high speeds. At supersonic speeds we can only rely on the aerodynamic drag acting on the car. When the speed is below about Mach 1.1(1.1 times the speed of sound) large panels on the side of the car can be opened to act as air brakes, increasing the effect of aerodynamic drag. As a backup to the airbrakes, brake parachutes can be deployed at Mach 0.9 to slow the car to levels that enable the driver to apply disc brakes safely .
Newton’s second law of motion states that the sum of the external forces on a body is equal to the rate of change of momentum. To a first approximation, this gives the following:
where is the thrust, is the drag, v is the velocity of the car , and m is its mass. We assume that the rate of change of mass is given by a constant, depending on whether the jet is burning fuel or the hybrid rocket is operational. For simplicity, we also assume that the thrust is given by the sum of jet and rocket thrusts. The car carries 500 kg of fuel for the jet and will use about 5 kg/s of jet fuel during acceleration. The total mass of the propellant for the rocket is 1100 kg. The rocket will burn 45 kg/s of fuel and oxidant to produce its 122 kN of thrust for 24.5 seconds. We now combine the various pieces of information to get a refined estimate of the performance model of BLOODHOUND. This ordinary differential equation describes the motion of the car over time.
We write the eequation into the differential equation solver in MATLAB as a function
% Copyright 2012 - 2012 The MathWorks Inc function [dv]=BloodhoundEQ(t,v) global Bloodhound Bloodhound.Velocity= v(1); % Store new velocity Bloodhound.Position = v(2); % Store Position Bloodhound.Time = t; % Elapsed time since start of mission Bloodhound.Decel = Bloodhound.Position > ... % Start Deceleration after the measured mile Bloodhound.MeasuredMileStop; % Thrust = computeThrust(Bloodhound); % Compute the Thrust from the Jet and the Rocket Bloodhound.Mass = computeMass(Bloodhound); % Compute the Mass of the car Drag = computeDrag(Bloodhound); % Compute the Drag and Braking forces dv(1,1) = (Thrust - Drag)/Bloodhound.Mass; % Newton's 2nd law of motion dv(2,1) = v(1); % Speed of the car return
The three functions -- computeMass, computeThrust and computeDrag -- calculate the various components of Newton’s second law. See the Appendix for the class definition of BLOODHOUND object, initialization of its parameter properties and three simple methods which compute mass, drag and the thrust of the car. All that remains is to call the solve function in MATLAB in the following script:
type BloodhoundMission.m BloodhoundMission
%% BLOODHOUND Performance Example % Copyright 2012 - 2012 The MathWorks Inc. % % This script calls the differential equation solver of MATLAB to compute % the velocity profile of the car %% Setup the Model and Initialise all the variables and states % Set B_Car as an instance of the Bloodhound (This will set the initial % parameters in the properties of the B_Car object B_Car = Bloodhound; B_Car.BloodhoundEQ(0,[0;0]); % Setup the Maximum Step size for the solver options = odeset('MaxStep',0.1); % maximum of 0.1 seconds interval %% Obtain the simulation profile % Call the Ordinary Differential Equation Solver. Write the result of the time steps and the speed in Tout, and Yout % matrices [Tout, Yout]=ode45(@B_Car.BloodhoundEQ,[0 70],[0;0],options); %% Plot The results % Call the plot results script to plot the simulated performance graph plotresults; % Plot the results calling the plot results script
This call produces the results in the arrays Time and Speed, from 0 to Final Time starting from a standstill. The maximum step size is set to 0.1 seconds.
The figure above shows a typical result of the simulated run. It is based on the following assumptions:
- The jet and the rocket can produce maximum thrust instantaneously.
- The drag coefficient is set to 0.7 and the friction coefficient at 0.4.
- The fuel usage is at 5kg/s with jet only and 50 kg/s for jet and rocket.
- The density of the air is fixed at 1.2 kg/m^3 .
- The airbrakes are activated at 0.7 Mach (238 m/s).
- Both rocket and jet are turned off immediately after the measured mile.
The graphs produced here closely resemble performance plots on the BLOODHOUND web site http://www.bloodhoundssc.com/adventure/the_record_run.cfm.
Even such simple models provide insight into the design parameters. From these models we can see that:
- The deceleration phase will probably take longer than the acceleration.
- Even under almost ideal circumstance the EJ200 jet and hybrid rocket provide barely sufficient thrust to overcome various sources of drag.
- Deceleration provided by the airbrakes and the parachutes is not a luxury but a necessity.
We can using the MATLAB model to perform a range of experiments with different design parameters and assess sensitivity of the various objectives to them. For example, we can vary the drag coefficient and examine its effect on the maximum speed. From our model we get the following:
type DragTest.m DragTest
% Copyright 2012 - 2012 The MathWorks Inc. B_Car = Bloodhound; V=; T=; options = odeset('MaxStep',0.1); for i=1:5 B_Car.Drag.Coefficient = 0.5 + (i-1)*0.1; [Tout, Yout]=ode45(@B_Car.BloodhoundEQ,[0 70],[0;0],options); Vmax(i) = max(Yout(:,1)); V = [V Yout(:,1)]; T=[T Tout]; end clf; plot([0.5:.1:0.9], Vmax,'-bo', 'LineWidth',2, 'MarkerFaceColor','r' ); grid on; title('First order effect of the drag coeficient on maximum speed') xlabel('Drag Coefficient') ylabel('Maximum speed in m/s')
which shows an almost linear relationship between the maximum speed attained and the drag coefficient. Many similar experiments can be carried out to gain a deeper understanding of the effect of various parameters on the design of the car.
Using computer simulation in the classroom can be effective at many different levels; the example presented here is simple enough for most students to understand. Simulation makes the BLOODHOUND challenge tangible . Using computers to solve problems that are too complex for pen, paper and a calculator invites students to enter the world of analysis and design and address real-world problems in a step-by-step manner. The students are introduced to simple programming concepts without having to master numerical computation techniques or plot complex graphs. In addition, they can use the same mathematical modelling software that scientists, mathematicians and engineers use, thus helping to prepare them for future careers. This approach can also engage students in the user community on MATLAB Central-- for example the File Exchange, where users share solutions, and MATLAB Answers, where users answer each other's technical questions.
Last, but by no means least, this example invites budding engineers and scientists to collaborate with experienced hands, examine what they do, and even suggest innovative solutions to the challenge of building a car capable of travelling safely, if only for 3.5 seconds, at 1000mph!
classdef Bloodhound % Simplified Bloodhound model for examination of performance of the car % Copyright 2012 - 2012 The MathWorks Inc. properties Rocket; % Rocket Properties Jet; % Jet Properties Drag; % Drag Parameters RollResistance; % RollResistance Parameters AirBrake; % Air Brake Parameters InitialMass; % kg - Initial Mass of the Bloodhound car Mass ; % kg - Calculated Mass of the Bloodhound car MeasuredMileStart ; % - Distance at which the measured mile starts MeasuredMileStop ; % - Distance where the measured mile ends Thrust; % Newtons - Thrust of the Jet & Rocket Decel; % - Deceleration started Position; % m - Bloodhound Position in metres Velocity; % Velocity- Bloodhound Velocity in metres ElapsedTime; end methods function obj=Bloodhound() obj.Rocket.maxThrust = 122000; % Newtons - Maximum Thrust of the Hybrid Rocket obj.Rocket.firingtime = 11; % Seconds - Time to fire the rocket obj.Rocket.massflow = 45; % kg/s - Approximate fuel usage of the rocket obj.Rocket.duration = 25; % Seconds - Total duration of the rocket obj.Jet.maxThrust = 90000; % Newtons - Maximum Thrust of the EJ200 jet obj.Jet.massflow = 5; % kg/s - Approximate fuel usage of the jet obj.Drag.Coefficient = 0.7; % DimLess - Cd coefficient of aerodynamic drag obj.Drag.Area = 1.937; % m^2 - Incident area for drag calculation obj.Drag.Density = 1.2; % kg/m^3 - Air density obj.Drag.Force = 0; % Newtons - Calculated Drag Force obj.RollResistance.Coefficient= 0.4;% DimLess - Roll Resistance Coefficient obj.RollResistance.Force= 0; % Newtons - Calculated Roll Resistance Force obj.InitialMass = 6500; % kg - Initial Mass of the Bloodhound car obj.Mass = 0; % kg - Calculated Mass of the Bloodhound car obj.AirBrake.Activation = 0.7;% - Mach no at which the Airbrake is activated obj.AirBrake.Coefficient= 1.0;% - Coefficient of the effect of the Airbrake obj.MeasuredMileStart = 4.5*1609;% - Distance at which the measured mile starts obj.MeasuredMileStop = 5.5*1609;% - Distance where the measured mile ends obj.Decel = false; % - Deceleration started obj.Position=0; % m - Bloodhound Position in metres obj.Velocity=0; % Velocity- Bloodhound Velocity in metres obj.ElapsedTime = 0; % s - Elapsed time since start of the mission obj.Thrust = 0; end function [MassVal] = computeMass(obj) % Mass is assumed to be linearly decreasing with time. % Mass = InitialMass - Time x Rate % Rate is set to % 5 kg/s when the Jet is on % 50kg/s when the Jet and the Rocket are on % 0 when the car is decelerating. Time = obj.ElapsedTime; if ~obj.Decel, if Time < obj.Rocket.firingtime, MassVal= obj.InitialMass - Time*obj.Jet.massflow; else MassVal= obj.InitialMass - obj.Rocket.firingtime * obj.Jet.massflow ... - (obj.Jet.massflow+obj.Rocket.massflow)*(Time - obj.Rocket.firingtime); end else MassVal = obj.Mass; end return end function Drag = computeDrag(obj) % AeroDrag = 0.5 * Cd * Density * Area * Velocity ^2 % RollResistance = Mass * g * Coefficient of Resistance % Drag = AeroDrag + Roll Resistance; % AirBrake = AirBrakeGain * Velocity^2; g = 9.81; % m/s^2 SoundSpeed = 340; % m/s V= obj.Velocity; AeroDrag = 0.5 * obj.Drag.Coefficient * obj.Drag.Density * ... obj.Drag.Area * V^2; RollResist = obj.Mass * g * obj.RollResistance.Coefficient; AirBrakeForce = obj.Decel * obj.AirBrake.Coefficient * ... V^2 * (V < obj.AirBrake.Activation*SoundSpeed); Drag = AeroDrag + RollResist + AirBrakeForce; return end function TotalThrust = computeThrust(obj) % At the begining thrust is given by the Jet alone. % Once the Rocket is fired we also have the additional thrust from the % Rocket. Rocket can only operate for a limited time of around 24.5 % seconds. Both the jet and rocket are turned off once we go through the % measured mile and deceleration begins. % Time = obj.ElapsedTime; RocketStart = obj.Rocket.firingtime; RocketEnd = RocketStart + obj.Rocket.duration; if Time < RocketStart || Time > RocketEnd, TotalThrust = obj.Jet.maxThrust; else TotalThrust = obj.Jet.maxThrust + obj.Rocket.maxThrust; end TotalThrust = TotalThrust* ~obj.Decel; return end function [dv]=BloodhoundEQ(obj,t,v) persistent MassVal; obj.Velocity= v(1); % Store new velocity obj.Position = v(2); % Store Position obj.ElapsedTime = t; % Elapsed time since start of mission obj.Mass = MassVal; obj.Decel = obj.Position > ... % Start Deceleration after the measured mile obj.MeasuredMileStop; ThrustVal = computeThrust(obj); % Compute the Thrust from the Jet and the Rocket MassVal = computeMass(obj); % Compute the Mass of the car obj.Drag.Force = computeDrag(obj); % Compute the Drag and Braking forces dv =[(ThrustVal - obj.Drag.Force)/MassVal;v(1)]; % Newton's 2nd law of motion % Speed of the car return end end end