**Turbo Pascal Program Files**

nsto.pas NSTO simulation main program

earth.pas Earth constants

rocket.pas General purpose trajectory simulation
procedures

const.pas NSTO constants

stage1.pas NSTO procedure

stage2.pas Upper Stage procedure

nsto.exe DOS executable

**Gnuplot Files**

speed.gnu Gnuplot file to generate speed v time
curve

speed.ps Speed v time postscript file from
"nsto"

height.gnu Gnuplot file to generate height v time
curve

height.ps Height v time postscript file from
"nsto"

Similar simulation files are available for the Space
Shuttle and Saturn V. An NSTO using
O_{2}/H_{2} with changing mixture ratios can be found in
ssto.zip (43,814 bytes). A two stage heavy lift launch
vehcile based on an NSTO first stage can be found in
tsto.zip (44,001 bytes).

The paper for "A flexible resuable space transportation system" that I am
submitting to the *Journal of the British Interplanetary Society* (also
presented at IAF'98) can be found here.

I have written a general purpose simulation program that simulates an NSTO vehicle. The heart of the simulation program is rocket.pas which contains procedures used to determine the trajectory of any rocket using the Runga-Kutta fourth order method. I first wrote this for a Saturn V trajectory simulation program. rocket.pas is separate from the stage*.pas procedures which generate the appropriate values (such as thrust F, propellant rate Rp, time increment dt, etc.) for input to rocket.pas. const.pas contains the constants used in the stage*.pas procedures.

This program was compiled using Free Pascal.

When you execute "nsto" you will get the following response

0=custom 1=O2/H2(6.0) 2=O2/H2(7.5) 3=O2/CH4(3.6) 4=O2/C2H6(3.2) 5=O2/C3H8(3.1) 6=O2/C3H4(2.4) 7=O2/RP-1(2.8) 8=O2/C7H8(2.4) 9=98%H2O2/C3H4(6.5) 10=98%H2O2/RP-1(7.3) 11=98%H2O2/C7H8(6.6) Enter propellant choice: 8 Enter output filename (return is standard output): t a vi h0 r0 alpha beta theta Pq m0+Me sec m/s^2 m/s metres metres deg deg deg Pa kg ----------------------------------------------------------------------------- 0.00 9.8 289 0 0 90.00 0.00 90.00 0.0 2521067.8 Turn time (s)?

You should then enter the duration in which you want the rocket to pitch over. The pitch angle has been set to -0.03 degrees, but you can adjust this angle in const.pas with name angle1. The rocket then takes off vertically before pitching over for the time specified. This time does not include the time to move the rocket to and from angle1, so even if you set the angle to 0, the rocket will slightly pitch over. The output from the program has in each line

t time, seconds a acceleration (excluding any external forces such as gravity and air drag); metres per second per second vi inertial speed; metres per second h0 altitude above planet's surface; metres r0 range; metres alpha thrust angle relative to inertial velocity vector or angle of attack; degrees beta velocity angle relative to motionless planet; degrees theta velocity angle relative to rotating planet; degrees Pq Dynamic pressure; Pascals m0+Me the mass of the rocket

The first stage performs a gravity turn keeping the thrust vector and the air
velocity vector the same. Thus the air angle of attack is zero. You will also
see events such as engine throttling down. When the maximum acceleration of
3g is first reached you are asked for the maximum angle of attack. This
is relative to the inertial velocity vector. When this angle is greater than the
air angle of attack, the angle of attack will gradually increase. This is due
to the trajectory algorithm trying to maintain the rate of altitude increase.
We have *h*_{0} as the height, *h*_{1} =
*dh*_{0}/*dt* is the rate of increase of height, and
*h*_{2} = *dh*_{1}/*dt*. Our orbit algorithm
has *h*_{2} proportional to
sign(*h*_{1})|*h*_{1}|^{pow}. pow is a
constant and is set to 2.0. This seems to be not the most optimal algorithm,
but I have found that it does a reasonable good job, getting you where you want
to go.

The angle of attack will increase until the maximum angle is reached and be maintained there until centrifugal acceleration becomes strong enough. The angle of attack will then naturally decrease.

At the end of stage 2 you should be in an elliptical orbit and at an altitude of between 80 and 90 km. At this altitude and speed, drag is still significant and so the apogee needs to be higher than the nominal 185 km (for a 25 t payload, 1 t = 1000 kg). At this point the upper stage separates from the NSTO vehicle and returns to Earth. After the upper stage has transferred to apogee the apogee should have decreased to 185 km due to drag. You then perform the upper stage burn to circularise your orbit to 185 km. I leave it to you to determine the turn time and angle of attack. Have fun!

One area I would like to improve is determining the coefficient of drag (cd) versus speed. The values I used were from the Mars Project by Werner von Braun for a 20 m diameter rocket. If anyone can help me out on this, I would greatly appreciate it.

**5 May 2010 Update:**
Modified pascal files to allow compilation with latest version of Free Pascal.

**3 July 1998 Update:**
Added O2/H2(7.5:1) propellant. Delta V is now actual delta V (does not include
1% overhead). Removed "LOX/KERO" from title of figures produced by GNU files.

**24 July 1998 Update:**
CH4 (methane), C2H6 (ethane), and C3H8 (propane) now subcooled to 90 K (same
temperature as O2) for higher impulse density and overall increase in
performance. Added N2O4/N2H4 (hydrazine) and 98%H2O2/C3H4 (methyl ethelyne)
propellant combinations. Corrected propellant volume output.

**2 August 1998 Update:**
Modified earth.h and rocket.pas to directly use mu. Simplified program
sections for reaching maximum acceleration or speed. Put engine shutdown
sequence in a loop.

**25 January 2000 Update:**
Moved atmosphere procedure to earth.pas which now implements full
U.S. Standard Atmosphere. Removed nitrogen based
propellant combinations and added methylacetylene and quadricyclene propellant
combinations. Can now perform simple reentries (90 degree angle of attack).
Vehicle mass is now calculated, allowing payload mass to be determined.

**19 November 2001 Update:**
Custom propellant now entered via file.

**17 August 2006 Update**
Free Pascal compilation

Last modified 5 May 2010. Any comments, questions, additions, or corrections should be directed to

Steven S. Pietrobon Small World Communications 6 First Avenue Payneham South SA 5070 Australia |
ph. +61 8 8332 0319 fax. +61 8 8332 3177 email: steven@sworld.com.au web: http://www.sworld.com.au/ |