Gas Turbine Booster for the Shuttle

Greg Locock July 2004

The SRBs for the Shuttle are fairly unpopular devices, and I had been wondering if the Shuttle might have been able to use gas turbines as a booster in their place. Preceeding work identified that of three engine choices the most likely was the Olympus fitted with a military afterburner system. Obviously any equivalent modern jet engine with the same sort of performance could be substituted.


The flight path has to be modified to take into account the performance limitations of a gas turbine. I set limits of Mach 3 and 20 km altitude for a gas turbine. The main engine has to be enlarged as well, as there is too much left to do to get the 99 tons of Shuttle into LEO from 20km/M3.


Rather than hand-optimising this setup I used a Genetic Algorithm to search for a near optimum solution. This takes about 2.5 minutes per generation, each of which consists of 79 individuals. The results are heavily dependent on the scoring system used, in a study like this there is a lot of guesswork. Real projects can use cost or some other objective performance parameter. I penalised the number of main engines and jet engines, and rewarded it for high orbital velocity. There's a very heavy penalty for failing to reach 170 km altitude or 7.8 km/s. That's the reason for the big jumps early on. Here's the run, the top line is the score of the best solution in that generation, the jagged line beneath is the average of the entire population. The neat thing with GA is that even if you make all sorts of stupid mistakes in the code, so long as you leave the best so far in the population, and the score of the best keeps going up, then it is working, to at least some extent! If a different scoring function is used then a different setup would win, but this one is pretty typical. Note that the GA is being used to set values for variables that are not explicitly used in the scoring function. More sophisticated GA solvers use some ways of keeping associated genes together.



As can be seen there wasn't much point in running past 80 generations.


Here's the simulator results for the best solution. The odd pattern on the Angle plot is the autopilot correcting for excessive upward speed by pitching down - this model just uses a speed vs height feedback loop, the parameters for which are part of the optimisation. Incidentally this sim is ballistic, so it doesn't really understand orbits, and so has a correction factor for non-existent centrifugal force.


The blue line in the speed plot is the vertical speed.


As can be seen the takeoff weight is around 1050 tonnes, substantially (and suspiciously) better than the real thing, at 2030 tonnes, but just about believable given that the SRBs weigh 1180 tonnes, and that this simulator probably overloads the aerodynamics of the rocket, since the real thing uses a lot of logic to reduce aerodynamic loads, including throttling the main engine back to 60% throttle at one point. The jet engines would weigh around 100 tonnes, and would need 20 tonnes of fuel or so.


Here are the parameters. That is, it needs 32 Olympus engines, which burn for 102 seconds. These would probably fit quite neatly around the main fuel tank, which is 9m in diameter. The main engine needs to be 1.4142 (coincidence) times bigger than the real thing, and needs to carry 16% more fuel than the real thing.

burntime1 = 102.1716
num_engines1 = 32.042547
mult = 1.414206
ftmult = 0.8229295

These are the autopilot settings.

VH = 0.1780584
VL = 0.7062749
srbrate = 0.7645187
srbcap = 28.737744

And here's the results


score 0.4323032
V(599) 7879.1759 m/s


Here's the scoring function

score(gai)=0-num_engines1/10-mult*3+V(599)/1000; //may need weightings
if V(599)<7800 then score(gai)=score(gai)-10;end;
if H(599)<170000 then score(gai)=score(gai)-10;end;

For the truly masochistic here is the autopilot function. Basically while the SRBs are present it just pitches over at a constant rate, until it reaches a limit, then it flies at that limit until the SRBs fall off. Then it uses the pitch to control the upward velocity of the Shuttle until it reaches orbit and the main engine burns out. The plot above shows that it spends a lot of time in Mode 4, which smoothed out the ride a lot. It is quite important to have a robust autopilot strategy, as the GA solver works best with a result from every run, not an error message!

vh=VH*10^6/180*(180-(H(t-1))/1000);
vl=VL*vh;

aveang=Angle(t-1)+30*aveang;
aveang=aveang/31;

Angle(t)=aveang;Mode(t)=4; //default option

// fly by dead reckoning for srb


srbcap=srbcap;
srbrate=srbrate;
vh=VH*10^6/180*(180-(H(t-1))/1000);
vl=VL*vh;
if srb==1 then
Angle(t)=Angle(t-1)+srbrate/360*2*%pi;Mode(t)=0;
if Angle(t)>srbcap/360*2*%pi then Angle(t)=srbcap/360*2*%pi; end;
end;

//start of main autopilot loop
pitch=10/360*2*%pi;
if srb==0 then
//too fast upwards
if (Vy(t))^2>vh then
Angle(t)=Angle(t-1)+pitch;
Mode(t)=3;
end;
//too slow upwards
if (Vy(t))^2<vl then
Angle(t)=Angle(t-1)-pitch;
Mode(t)=5;
end;
//falling down
if Vy(t)<0 then
if Y(t)<(r+180000) then
Angle(t)=Angle(t-1)-pitch;
Mode(t)=6;
end;
end;
end;
//end of main autopilot loop


if Thrust(t)==0 then
Angle(t)=%pi/2;
Mode(t)=7;
end;

// if it falls below ground level point it up
if Y(t)<r then Angle(t)=0;Mode(t)=8;end;
// tidy up angle
if Angle(t)<0 then Angle(t)=0; end;
if Angle(t)>(.6*%pi) then Angle(t)=(.6*%pi); end;


My homepage