Download or view launchdrag.frink in plain text format
/** This program calculates the total energy expended by a rocket fighting
atmospheric drag. */
use StandardAtmosphere.frink
getDensity[altitude] :=
{
[temp, pressure] = StandardAtmosphere.getTemperatureAndPressure[altitude]
return StandardAtmosphere.getDensity[altitude, temp, pressure]
}
getDensityVelocitySquaredProduct[altitude, velocity] :=
{
getDensity[altitude] * velocity^2
}
altitude = 0 ft
v = 0 mph
mass = 13500 kg // Full mass of X-15B, empty is 4500 kg
Frocket = 262.5/1 kN // Thrust of X-15B
target = 350 km
Cd = 0.10
A = 33 ft^2
timestep = .01 s
t = 0 s
Esum = 0 J
while (altitude < target)
{
density = getDensity[altitude]
Fdrag = 1/2 density v^2 A Cd
weight = G earthmass mass / (altitude + earthradius)^2 // Correct weight for decreasing gravity
Fup = Frocket - Fdrag - weight
a = Fup/mass // Actual upward acceleration
vnew = v + a timestep
vave = (v + vnew) / 2 // Average velocity during timestep
stepdist = vave * timestep // Distance traveled in timestep
Esum = Esum + Fdrag * stepdist // Energy lost due to drag
println[format[t,"s",2] + "\t" + format[altitude,"km", 3] + "\t" + formatSig[v, "mach", 3] + "\t" + formatSig[a,"gee",3] + "\t" + formatSig[Fdrag, "lbf", 6] + "\t" + formatEng[Esum, "J", 5]]
v = vnew
altitude = altitude + stepdist
t = t + timestep
}
Download or view launchdrag.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20217 days, 23 hours, 43 minutes ago.