Monday, March 14, 2016

This Time It IS Rocket Science!

This time, I’m going to get into how I make rough apogee predictions for model rockets. Below is a derivation of the formulas necessary for predicting the apogee of a spherical bovine rocket undergoing air drag.

Warning: Math Ahead

So ultimately, we want to know how high the rocket will go. I am going to call this “y”, “displacement” or “apogee” interchangeably. I might even call it the height. Either way, this is what we are ultimately trying to solve for.

Anyone who has taken a basic calculus or physics class probably recognizes a few truths:
That is to say, the change in location of an object over a period of time is its velocity, and its change in velocity over a period of time is its acceleration. Thankfully, we can also say this in reverse:
This becomes important when we consider that the flight of any object is based on the sum of the forces acting on it. This is grounded in Newton’s Laws of Motion. Thus we know that the sum of our forces is

where F = force, m = mass, and a = acceleration. Thus,

Now we have a few terms here that we need to sort out: FThrust, FDrag, and FWeight. Of these, we can generally not worry about FThrust because that information is available based on our motor. Likewise, we know that FWeight = mg, where g is the acceleration due to gravity. This leaves FDrag for us to define:

where ρ = the density of air, CD = the coefficient of drag, A = the crossectional area of the rocket, and v = the velocity. This may seem like a lot of information, but much of it really doesn’t change with time for our purposes here. So I am going to combine a bunch of these into a constant. I will do this a few more times to clean up equations and put them in more easily recognizable forms, too.

Now we have a simpler looking equation:
Substituting this and the formula for FWeight, we get:
One more substitution, referring back to the beginning gives us
and we are ready to separate the variables and integrate.
But first, we are going to use some algebraic manipulations to get this looking like something we can integrate more easily:
Now it’s time to integrate both sides:
Both m and k are constants, so we pull those out and integrate the right side:
We should now recognize the integral on the left as tanh-1 u:
By the definition of tanh-1, we can perform the following manipulations:
And define the constant
This lets us say:
Raising both sides to the e power gives:
Then we multiply both sides by the denominator:
Expanding the right side gives us:
Next, I need to isolate my v’s on one side:
Next, factor out v:
And divide both sides by (-ext-1):
Put more neatly:
And thankfully, we know that t = impulse divided by thrust, both of which are specifications provided by our motors. So now we know the final velocity when the motor finishes burning its fuel, but that doesn’t tell us either how high the rocket is at that point or how far it continues to coast. For that information, we need more integration.

We will begin by solving for yBurn, or how far the rocket travels while the motor is still providing thrust. For simplicity’s sake, we will assume the rocket’s weight does not change during this time (we are launching a frictionless spherical cow, aren’t we?), so m will continue to refer to the mass of the rocket while it is full of propellant.

Referring back to our original equation, we know that:
So we can say
By separating the variables and integrating both sides, we get:
Which becomes:
Now we know the rocket’s altitude when the motor cuts out, but the rocket won’t instantly stop; it will continue to coast. So let yCoast = the distance the rocket coasts on its momentum before beginning its descent. That is to say, how far will the rocket travel upward once FThrust = 0. Note that since the rocket has exhausted all of its fuel, we no longer use mFull – we are now use mEmpty.
This should all look a bit familiar, but not that because FThrust = 0, that term is simply missing:
By integrating both sides, we get:
Which becomes:
Now, we know the rocket’s apogee will be the sum of how high it goes while under power (yBurn) and how far it coasts before the acceleration due to gravity starts returning it to Earth (yCoast):
And there you have it! To summarize:

A = the area of the rocket’s cross-section normal to its velocity vector.
CD = the rocket’s coefficient of drag.
FThrust = the motor’s thrust in Newtons.
g = the acceleration due to gravity.
I = the motor’s impulse in seconds.
mEmpty = the mass of the rocket after burnout.
mFull = the mass of the rocket at liftoff.
ρ = the density of air.

Of course, the astute reader will notice that through all of that mess, there is one term still undefined- CD. This is the coefficient of drag, and determining it generally requires experimentation or running simulations. For my purposes, that is where OpenRocket and SolidWorks come in. Both are capable of determining CD.

Did you survive? I warned you there’d be math!


  1. "we will assume the rocket’s weight does not change during this time" - that sound in the background is Tsiolkovskiy, weeping. :-) Slightly more seriously, I would assume you're going with minimum deadweight mass so the thrust/weight really ought to be a whole lot higher just before burnout. Do you have a fudge factor for that, or is it really not a problem?

  2. Oh, Tsiolkovskiy was weeping undeed.
    I'm using the full loaded weight including propellant for m_full and the full loaded weight minus propellant for m_empty. Moat calcs are done with m_full and shiuld result in slightly underestimating altitude achieved. My guess is that will be countered by weather conditions and weathercocking (I wiuld like to see cp about 1.25 to 1.5 below cg, but I don't know what the team will ultimately do). I'm most concerned with shooting this thing straight up and not upward at an angle that wastes lift on verticle movement. I also don't want to walk too far to recover

    Also, I got a list of parts and specs finally emailed to me this morning. We choose parts this evening. It's a shame there was no time to analyze these and start modeling ahead of time, but I guess that's life. I still don't have specs on the acrylic we are making our fins from or even the specific type so I can look them up...