Propellant Tanks – Case Study

For this post, I’ll go over the basic design of the fuel tank on the Earendel Sounding Rocket.

Step one in any design is the requirements, so here we go:

– 9.6 kg of Isopropyl Alcohol

– 220 psi tank pressure

– 2.5 x Factor of safety

– 3% Ullage (% initial gas) , 3% residual propellant (unburnt at the end)

– For a Sounding Rocket so cylindrical form factor

With these requirements, let’s get started with sizing the propellant tank. The first step is the volume of the tank. At a density of 785 kg/m^3, that gives us a propellant volume of 746 in^3 and a tank volume of 791 in^3. If we want a 4-1 cylinder, that gives us a 6.25″ diameter. But to match up with a standard composite tube of 6.02″ ID, we will choose 6.02″ as the ID. Now, for the endcaps, we choose a 60% ellipse as needing roughly the same wall thickness as the sidewall of the cylinder, as you can see in the chart below.

Endcap stress from SP-125
Endcap stress from SP-125

Now this gives us a tank with a 6.02″ ID wall, 25.4″ tall, with 1.8″ tall endcaps. You can see the rough size below and it looks pretty reasonable.

Rough Tank Sizing
Rough Tank Sizing

Now a stress analysis for the wall thickness. We will use aluminum 6061-T6 as it is common in 6″ pipes and tubes as well as rods for the endcaps. It has a 42 ksi ultimate strength, and a 35 ksi yield so we can just use the ultimate. The sidewall calculation is fairly easy with:

42 ksi / 2.5 = 220 psi * (6.02″ / 2) / t      ==>  thickness = 0.0394 that we will just round to 0.040″

For the endcap, using the modifier from SP-125 Fig 8-7 of 0.92 and equation 8-19, we get 0.0344″ for the ellipse thickness. Let’s just round that up to 0.040″ as well to give us margin on any discontinuities.

Now for attachments. There should be a bulkhead on both of the endcaps; let’s make it 2.5″ diameter as, from my past experience, that is about as small as is useful for multiple ports. We could also choose to machine ports directly into the tank. This is more expensive and harder to machine and clean, but with the benefit of less seals and a robust mount. So using our flat plate stress analysis, and assuming a bolt diameter of 3.0″, that gives us a thickness of  0.075″. The pressure load is good for 3900 lbf with the 2.5x FoS so that is either 20 #4-40 screws or 14 #6-40 screws or 9 #8-32. So we will just use 10 #8-32 screws.

And the last attachment is the endcaps, which we will use bolts for again. Since the stress area will be around 5.5″ after the bolts go in, that is a load of 13,100 lbf. We want around 20 bolts so that means we have to use 1/4-28 bolts, once again assuming we have Al-6061 bolts.

One word about aluminum bolts: The most common bolt is 7075-T73 or 2024-T4 which are OK for cryogenic service and are stronger than 6061. So we are being conservative with the bolt strength. Please double check your vendor though because some bolts are 3000 or 1000 series alloys which are very weak by comparison.

Now for the seals. There are two of them: the bulkhead and the endcap. We will use viton o-rings as they are cheap, available, and work very well. We will also use 1 O-ring per seal; there is no redundant seal, which is fine for our application, but sometimes frowned upon in high risk fault intolerant systems. I highly recommend the Parker O-ring handbook. In this case, I used it and will be using a face seal gland with a #38 O-ring on the bulkhead and a #160 O-ring on the endcap.

Initial design flange seals
Initial design flange seals

This is the end of the initial design. At this point, you will want to model the tank, check its weight, run a stress analysis, and see how it lines up and mounts with other structures in your system.  Good luck, and be prepared for the inevitable redesign!

Propellant Tank – Joints

Successful creation of propellant tanks requires proper sizing, proper analysis, and proper joint design. This post we will cover various joints in metallic tanks and then we will complete the tank post series in the next post with a case study.

There are 2 main ways to make joint on propellant tanks: Bolted or Welded. Other methods exist such as brazing, epoxy, rivets, etc., but 99% of the time either welding or bolting are used.

Welding is generally used to join the major structural pieces of propellant tanks with the main welds longitudinal welds to form a cylinder from a rolled segment, circumferential welds to join cylindrical segments and endcaps, and, in the case of very large tanks, gore welds to form endcaps. Small tanks can avoid some of these welds, but sheet stock is usually limited to 144″ x 72″ so anything larger will require many more welds.


Most welds on propellant tanks are either butt welds or  lap welds as shown on the picture below.


It is almost always desired to have thicker material at a weld to minimize any stress associated with weld discontinuity and lower strength due to heat affected zones. As a rule, try to minimize the number of welds and keep welds away from high stress areas; for instance, by making the dome of the tank extend a half tank diameter into the body before welding on the cylindrical section. This may cost more to make, but it should also have better performance. In addition, you can make tank cylindrical segments from spin forging, eliminating the high stress longitudinal weld.

One final note on welding is that most materials lose strength when welded so either account for that in thicker parts, or plan on post weld heat treatment. Heat treatments need to have minimal thermal shock as the large, thin structures of a tank are prone to buckling or deforming under high thermal loads such as quenching. For most heat treatable aluminums, this means only aging after welding, not a full solution heat treat.

The other option for connections are bolts with seals. Most propellant tanks, even composite or large welded structures, have bolted port holes or man hole covers. A simple method, or at least comparatively simple, of constructing a propellant tank is a seamless tube with flat caps at both ends.

Example of a welded and bolted access port.
Example of a welded and bolted access port.

The first part of the system is the bolts. These are ideally the same material as the base structure, or at least the same CTE (Coefficient of Thermal Expansion), to ensure changes in temperature do not over-stress or unload the joints. The two main gotchas on the system are you need to pre-stress the bolts to a higher level than they are stressed in the pressure load case to minimize cyclical loading and bolt pull out strength is a function of the base material or the thread material, whichever is weaker.  So if you are using 7075-T6 bolts on a 5052 H32 tank, you need to calculate the stress assuming the thread will rip out of the 5052.

Part number two is the seal. For a fluid between -65F and 200F, just use an o-ring. Most of the time either Viton or silicone will work, and Parker has a great o-ring handbook for design guides. Outside of this temperature range, the easiest option is a Teflon gasket or sealing ring, and the best option is a metal o-ring. Size the Teflon sealing ring just like an o-ring but make the Teflon a square cross section instead of a circle for easy fabrication. It will smoosh out in use and is usually reusable until you take the seal out of the groove. They are cheap and easy. A metal o-ring or c-ring, otherwise known as a metal energized seal, will work very well on a flat and good surface finish surface. They can work down to liquid hydrogen temperatures and up to ~1200F, but they are expensive and long lead items and, if you scratch the sealing surface, that part is scrap. So only use metal seals if it is colder than LN2 or hotter than 400F.

I hope this was informative, and we’ll do a case study for the Project Earendel tank next week.

Tank Analysis – Tank Factor

I talked some last week about tank analysis and touched some on tank factor. Today, let’s do an exciting tank factor derivation. Also, I will be using MATLAB style equations and comments, i.e. a %, for readability since WordPress doesn’t have a good equation editor.

Tank Factor is Φ = (V * P ) / (m * g)

or, written to determine tank mass:

m = (V * P ) / (Φ * g)


Φ = Tank Factor (m)
V = Tank Volume (m^3)
P = Pressure (Pa)
m = Tank Mass (kg)
and  g = gravity (m/s^2)

This is all well and good if you have old tanks to compare to or some other standard Tank Factor, but what if you are using a new material or fabrication technique? Well, below I will go over deriving the ideal material tank factor for a sphere and an infinite cylinder. You will need:

σu = material failure strenth (MPa)
ρ = material density (kg/m^3)

and use:

r = radius of the tank (m)
t= tank thickness (m)

and the equations:

V = 4/3 * π * r ^ 3             % Sphere Volume
SA =  4 * π * r ^ 2             % Sphere Surface Area
σ = ( P * r ) / ( 2 * t )         % Sphere Pressure Stress

So, using the surface area equation, the mass of the tank is:

m = 4 * π * r ^ 2 * t * ρ

Assuming the material strength is equal to the stress, the tank pressure is:

P = (σu *  2 * t ) / r

Throwing these into the tank factor equation, you get:

Φ = (4/3 * π * r ^ 3 * (σu *  2 * t ) / r) / (4 * π * r ^ 2 * t * ρ * g)
Φ = ( r ^ 2 * (σu *  2 * t ) ) / (3  * r ^ 2 * t * ρ * g)
Φ = 2/3 * σu / (ρ * g)

Which is immediately useful to get an idea of how close your tank is to optimal. I will leave it as an exercise to the reader to prove that an infinite cylinder is:

Φ = 1/2 * σ / (ρ * g)

Showing that, even if you discount the endcaps, a sphere has 18% lower mass than a comparable cylinder. If it wasn’t for that damned packing efficiency problem, spheres would be used on all tanks. As a reference, 2500 is usually given as the standard aluminum tank factor, and our infinite cylinder gives 5500 meters. This makes sense given welding efficiency, factors of safety, and material thickness uncertainty. So if you have a brand new super-material and you want to know how to estimate the weight of a rocket tank, just run these tank factor numbers and divide by 2 and you won’t be far off.

Just for reference though, it better be really good super-material as the best metal I know about, maraging steel, has an infinite cylinder tank factor of 15,000 m – 3 times as good as Aluminum 6061-T6. Carbon fiber epoxy has an even higher tank factor of 40,000 m (The above equations are not strictly applicable to composites due to their fiber layup, but are acceptable for a first approximation.).

Propellant Tanks – Basic Stress Analysis

Propellant tanks are a key part of any propulsion system; usually they are the heaviest single parts of a launch vehicle or sounding rocket. They are also one of the more dangerous as the somewhat recent 2007 Scaled Composite accident has shown. So let’s spend a couple of blog posts discussing the design.

First off, today is the basic stress analysis. We will just focus on the general sizing analysis for tanks today and move to materials and joints in the next post.

In a perfect world, you would just have spherical tanks that were not part of the primary structure load path. In that case, the analysis is very easy: Stress = (Pressure x Radius) / (2 x Thickness). So if we had a 6 inch diameter sphere at 200 psi out of Al-6061 with a FS of 2, that is a (42 ksi / 2) = (220 psi x 3 in) / (2 x thick) which mean we can have a 0.029″ wall thickness. Now, a sphere is pretty hard to package so if we use a cylinder with spherical endcaps, the cylinder max stress is Stress = (Pressure x Radius) / (Thickness). Thus, a cylinder would have to be twice as thick at 0.057″. Of course, if you don’t use a spherical endcap, things get trickier and you need to either do FEA analysis or SP-125 has some rules of thumb for ellipsoidal endcaps on page 338.

And for a flat constant thickness endcap assuming simply supported there is a simple solutions given to us by the trusty Roark’s

Max Stress = 3/4 * Pressure * radius^2 / (4  * thickness ^2 )

Now that we have general thickness sizing of the tanks, we can check for buckling loads and for bending loads. For buckling loads, we can just assume that if the tank is pressurized it will not buckle, using the same rational as a pressurized soda can cannot be smashed but a empty can is easy to smash. This is called pressure stabilizing and it is really convenient. If you want more information on buckling, you should check out SP-8007. For most tanks, you can do a first pass for beam bending by assuming Sigma = My / I, or Stress = Moment  / ( pi *  Radius ^2  * Thickness) . For a gimballed engine, Moment can be assumed to be the Distance from the Cg to the gimbal plane * sin (gimbal angle ) * Thrust. For an ungimbaled engine, assume 5 degrees for the gimbal angle for a first pass. So with 200 lbf, set 40 inches for the Cg and a 5 degree angle this gives us a moment of 700 lb*in and a stress of 450 psi for our 6″ diameter 0.057″ thick tank.

As you can see, pressure loads dominate for initial sizing and other flight loads are relatively trivial. In a more in depth analysis, other flight loads can have a large impact, especially at joints.

Since pressure loads are the driving factor, a term called Tank Factor is fairly common for initial tank sizing.  Tank Factor (m) = Tank Volume (m^3) * Pressure ( Pa) / ( Tank Mass (kg) * g (m/s^2)).  This equation is used to initially size tanks and compare tanks made with a common fabrication technique as they should all share Tank Factors. A good first pass for an Aluminum tank with high end amateur construction is 2000-2500 meters.

Stay tuned next time for some more tank analysis.

Trajectory Code

Today, let’s cover the basics of writing a trajectory code. There are many different levels of fidelity for an analysis, but today we will start at the basic 1-DOF code, just worrying about altitude. Also, we will assume constant drag coefficient, thrust, and gravity. If you want a more detailed code, the first step is to add thrust and drag coefficients that vary with altitude. The next step would be to add a 2nd degree of freedom with downrange, as well as altitude. At this point, if you are doing just basic sizing, you could stop. Then, a 3-DOF model is made by adding angle of attack with vehicle center of gravity and center of pressure. Then, add wind into the 3D model as well as thrust vector response. This is the most complicated that I have done and it is sufficient for sizing gimbals and fins in a variety of wind loads. From here, you would add the next 3-DOF and then probably add a Monte Carlo analysis on top of that.

If you are just using normal hobby rockets, you could get away with using a code like RASAero and not have to write your own. But, let’s be honest, if you are reading this blog, you probably like doing the code for the fun of it. I still recommend using a well tested code like RASAero to ballpark the first few answers your analysis gives you.

The basics of the code is Newton’s Second Law that the Sum of Forces = Mass x Acceleration and the knowledge that velocity is the integral of acceleration and position is the integral of velocity. So we start with a known position, velocity, and mass and solve for all of the forces (drag and thrust) to find the acceleration. Then we go to the next step and find a new velocity as a function of acceleration and the old velocity, new position as a function of old position, old velocity, and acceleration, new mass as a function of old mass and mass flow rate, and then start the cycle over again.

X_new = X_old + V_old*dt + 1/2 * A_old  * dt^2

V_new = V_old + A_old * dt

A_new = Force_new / Mass_new

For the forces, we set Thrust = Thrust when thrusting, and Thrust = 0 otherwise. Drag is more complicated as it is a function of speed and air density. For air density, we use the old standby: the 1976 Standard Atmosphere. Annoyingly, density does not curve fit well, so I curve fit pressure and temperature (they are both exponential), then calculated density. And gravity is always 9.8 m/s pointing to the earth

Force_new = Thrust – Drag – Gravity

Drag = 1/2 * Density * Velocity * abs(Velocity) * Cd * Area

Density = Pressure * Molar Mass / Temperature / Gas Constant

The velocity is multiplied by the absolute value of velocity instead of just squaring to retain the proper sign; otherwise, drag acts as thrust when the vehicle is coming back down to earth.

So you pretty much just take all of these equations and add them together into one integrated iterator and you are good to go. I have put an example for Earendel done in Openoffice Calc below. It has an OK accuracy, achieving 86 km altitude and a max speed of 1200 m/s vs. a more accurate 2D model with variable thrust and drag and finer stepping that achieves 1299 m/s max speed and an altitude of 106 km. Not too shabby for a simple code whipped up in an hour.

Simple Trajectory

Thanks to Professor Anderson at Purdue for teaching me this in undergrad at Purdue.

Gas Generator

This is not directly related to the Project Earendel, but it is rocket related.  On aRocket, someone had asked for help with a gas generator, specifically asking about the gas to liquid ratio of hydrogen peroxide or a Potassium nitrate  / sugar solid.  Now, I posted a fairly long reply which boils down to you get higher gas to liquid with KNSU, but at the price of higher temperature and lots of liquid or solid K2CO3 (Potassium Carbonate) in the exhaust, so you probably shouldn’t use it. This got me thinking, if I had to run a turbine, quick and cheap for demonstration purposes, how would I go about it?

The super traditional GG is 85% peroxide and it is great for the purpose. Cold enough that you can use stainless steel and 100% gas if properly decomposed. Since it is a monoprop, only one fluid line and no potential for overheating. Peroxide is a bit of a pain to deal with though, and hard to procure, so if I had it for another reason I would use it; otherwise, not worth the hassle.

Other monopropellants are all pretty much bad options for a variety of reasons: Hydrazine is hot and toxic but watered down is is the GG for the F-16 so it does work, Nitrous is hard to catalyze and very hot (1640 C), Etylene Oxide is pretty toxic, somewhat explosive, and can have carbon in the exhaust. A variety of other experimental options exist but are not yet practical.

The other traditional option is LOX/RP-1 running fuel rich. This a very good option and, in the small scale size where I could use GOX bottles, it would be my first choice. But instead of RP, I would use alcohol mixed with water to ensure 100% gas, i.e. no carbon. This is common in a rocket related piece of equipment called a chemical steam generator.  For a small GG, I would say you could run a 0.33 O/F with GOX and 75% Ethanol, 25% water. This would get you 0.3 lb/s flowrate at 1000 K from a bottle of oxygen and a pressurized alcohol container. That is a lot of GG and enough to run a turbo pump for a 2500 lbf engine, so I can’t imagine an amateur needing more than that. Plus the exhaust is mostly water and carbon dioxide with some methane and carbon monoxide, so no solids and liquid until you get close to room temperature. For more design details, check out SP-8081.

A final option if you need a neutral GG (i.e. not an oxidizer or fuel) is gasifing liquid nitrogen. Medical facilities do this with LOX all the time and a fair amount of bulk gaseous nitrogen is sold as a liquid. We just need to gasify it quickly. This is usually done with large air heat exchangers but, if you need a large flow rate, you might need to have a liquid heat exchanger, i.e. run a tube of LN2 through a bucket of water and adjust the length until you get gas out of the other end. If you use 350 psi Dewars, this should be an easy GG.

I suppose the other option is a solid, but I don’t know that anything exists in the amatuer class that is low temperature with no solids in the exhaust. Ammonium Nitrate is what you would want to use as an oxidizer, but it is hard to get to burn at low temperature. And car air bags and some rockets use sodium azide, but that shit is horribly toxic at a LD50 of 27 mg/kg – about half as toxic as arsenic. So solids are out for me. Let me know if you know of a solid that would produce gas at <1200 K with minimal solids or liquids in the exhaust. I think they used to run the exhaust of a solid through a dilutant to reduce the temperature, but I can’t find a reference.

So that is my thought on easy GGs: either GOX/Alcohol or gasify liquid nitrogen.

First pass cut away of gas generator
First pass cut away of gas generator


I just realized I have not talked at all about safety, so let’s remedy that today. Safety is very important in testing rockets and if you aren’t safe, there is always the chance that you won’t be able to keep testing, either through destruction of property, people, or yourself. So lets talk about how to make safety happen.

First things first: think, then act. Most problems are caused by acting too quickly or not thinking through the problems first. Frankly, most safety precautions are to protect you from a bonehead maneuver so step one is go at a decent pace and think your actions through.

Second: general shop safety. This has nothing to do with rockets, but most accidents, even in aerospace, happen in production. So always follow general good shop safety. Here are some of the most important points:

– No loose clothing, gloves, or long hair with power tools, especially lathes.
– Properly clamp down part before machining. And your hand is not any part of a proper clamp.
– Wear safety glasses and hearing protection.
– Learn how to use your tools before using them.
– Keep the shop clean and tidy.

Third: Proper personal protective equipment. With pressurized components, this is a minimum of safety glasses and hearing protection. For most chemicals, you want to wear nitrile gloves. With cryogenic propellants, you want some good cryo or thick leather gloves. I would say just don’t use anything toxic unless you are a professional, and then S.C.A.P.E. With Peroxide, make sure you wear an extra visor as it can blind you quick. And, in general, natural fibers, nothing synthetic as most of it it burns and melts so stick with cotton or wool.

Fourth: Test remotely. There should either be sufficient distance between you and the test or a thick wall – and sheet metal doesn’t count as a wall. A rough rule of thumb from the FAA  is that you should be at least 240 ft away from anything in line of site, and further if you have a large quantity of propellant. So maybe you should think about some walls, as 70 meters is a long way. Also, remote testing means the stand must be safe when you approach it even if you lose power. This means normally open vent valves and physical safe/arm switchs.

Fifth: Learn from your mistakes or, better yet, learn from others. You can either find an old timer to help you out for the first couple of runs or see if anyone else needs help. If all else fails, you can read Ignition! and some old accident reports.

This is obviously just an overview and we could go over safety all day and still have things to cover. Finally, listen to the safety guys and gals. They get a fair bit of shit in the NewSpace community, and while it is possible to be over safe and slow down development, it is easier to be cavalier and kill someone.

Main Run Valve

After running some numbers, we have changed our minds and are now planning on using a directly actuated solenoid valve for the main run valve. Our relatively small flow rate at only 0.5 lb/s of Liquid Oxygen means that the orifice we need is fairly small, only 0.22″ diameter. At this size, a ball valve is pretty bulky and trying to make a self-piloting solenoid also ends up being pretty heavy. Due to this, we are choosing to use a custom direct acting solenoid valve which is the most simple valve, having only 1 moving part and only requiring dc power. It comes at a weight penalty, but at only 0.7 lbs per valve, we are still under our main run line budget of 1.5 lbs.

To size a solenoid valve, first you need to size the orifice using the same mdot = CdA*sqrt(2*DP*rho) equation as in a liquid flow injector. Our valve is sized for a 10 psi drop on the LOX side. Then you run a bunch of calculations as shown on NASA SP-125 (pg 305 of the old version) to size the wires and coil. I would recommend not going thinner than 28 gauge wire, or over 600 coils if you are winding your own, as it gets tricky. We are using 8 Amps, 24 gauge wire, and 200 coils for the first pass.  It might be a bit high on the amperage (3.5 Amps are recommended for chassis wiring at 24 gauge), but it does push the weight and volume down. And we are pushing a lot of coolant through it. 🙂 This being said, the plan is nominally 4 cell LiPo batteries (14.8 V) for power, regulated to 12 V and 5 V for the electronics, but just used directly for the valves. We can also switch to 5 V power after the valve opens to minimize the power usage and heating.

We are planning on using neat PTFE for the seal with a Vespel and  carbon filled backup plan. PEEK is also a good cryogenic options. PTFE will creep over time, but it is a good choice for the hobbyist. I also have ordered some Nitrous Valves in the hopes of reusing the plungers and coils, but we will see how they work at cryo.

Below is an initial sketch of the valve we are going with the standard commercial orifice below poppet, as opposed to the more common aerospace inline solenoid valve to save money on machining and for ease of assembly. That is about it for now; I want to get the valve working before I have anyone else follow me down the rabbit hole of making your own valves.

Initial Valve Sketch
Initial Valve Sketch