I wanted to complete my thoughts on suborbital refueling, but found that I needed a robust way of calculating the mass of conventional rockets in order to show potential savings. I got carried away and turned what could have been some simple one-off calculations into a whole package for optimizing conventional rockets. (see rocket_sizing.m).
One can estimate the mass of rocket components based on historic data. For example, the tank mass ratio (empty mass over full mass) can be calculated from an existing rocket, and applied to rockets with similar levels of technology and propellant density. The problem is that you don’t know the mass of propellant needed until you know the total empty mass of the rocket, which depends on the mass of the propellant. Thus, an iterative solution must be performed. This is a nice classroom problem because the iteration converges rapidly. The Mathematica FixedPoint function handles the problem nicely. The new package also makes a simple calculation for the optimal staging velocity that gives the lowest lift-off mass. When trying this approach against real rocket data, I found that it didn’t match well. I believe this is because I’m not taking aerodynamic and gravity losses into account. Typically most of these losses take place during the first-stage burn; requiring a larger first stage than my function suggests. Overall, I think the package will serve my purpose of giving a baseline lift-off mass for different sets of assumptions.
The CDF version of the study and users guide includes a really cool widget that calculates the mass distribution for rockets with a selector for the number of stages. The widget will work if you have the Mathematica CDF player installed. I tried to embed the widget into a web page, also part of the new Wolfram technology. However, after a couple of hours of frustration I figured out that the CDF browser add-on prevents the widget from working because of possible security problems – my code uses functions (such as ToString) that could also be used in malicious code. So for now, download the CDF document. When the document is opened, it will explicitly ask for permission to run the dynamic content. You can look at the code that builds the widget if you download the notebook version and open the cell directly above the widget.