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 20199 days, 8 hours, 16 minutes ago.