Monday, August 29, 2016

Tools - Tank estimator sheet updated

I discovered and corrected a mistake in my tank estimator spreadsheet. Corrected version is live.
{edit 2016-09-06:}Also added a fill factor and a structural factor for better estimates.{edit}

I also can't find my notes on how the sheet was put together, so I thought I should document the parts that were updated now so I'll know what I am looking at a few years from now.

Before I go into that, I'd like to reference a NASA document (pdf) describing helium ullage tests for the Centaur upper stage. Read it, it's full of retro cool. Their numbers are a tiny fraction (1%) of mine for several reasons: they use ambient temperature helium, assume a gravity-supported temperature gradient (while I assume the helium is pre-chilled to 20 K for hydrogen or 90 K for everything else), rely on vaporization of the liquid hydrogen to maintain pressurization during engine chilldown and assume warm hydrogen from the engine provides pressure during burns. As a result I'd suggest not taking the ullage masses and volumes from my sheet too seriously as my numbers appear to be extremely pessimistic. I've also used some constants that I didn't properly document, something that must have been tricky to calculate with thermal expansion of gases; that whole area of the sheet is probably due for a revisit.

I'll also warn you that my results can be up to 10% heavier when fueled than published masses; there is something I'm not properly considering in the model. Still, if you want a quick and dirty estimate that's probably within 10% and lets you enter most of your own parameters then here you go.

Read on after the break for more details. I even made a diagram.




The sheet was initially used to develop my proposal for a modular rocket architecture that would have used components sized to fit inside standard shipping containers. A 40' container is big, but rockets are huge; the resulting vehicles would have required a lot of packing, lots of radial separation events. That means these things had to fit inside a certain envelope and all their fittings, ullage tanks, fuel lines, etc. also had to fit. For example, if you join six cylindrical tanks around a seventh they will take the form of a hexagon; each tank occupies a hexagonal footprint, which is another way to say that this is a hexagonal packing. Empty space is available between the arc of the tank wall and the lines of the hexagon. I needed to know how much space exactly, and how large of a cylinder would fit. (That was mostly so I could spec a liquid nitrogen tank to sit alongside the main tank without interfering with neighboring tanks).

At any rate, I attempted to use a method that could have been generalized to any given polygon as a packing arrangement. It was complex and it gave the wrong results. I can't troubleshoot it effectively because the formula looks downright arcane and I can't find my original sources. I gave up on that and treated it as a purely geometric problem. Lacking any kind of success with Google I turned in desperation to pencil and paper to find new solutions for the square and hexagonal cases; since those are the only two that might realistically be used I'm not planning to resolve the triangular case unless I get bored some day or a reader has a solution.

First, some terminology. The propellant tank is the primary circle. The secondary circle represents the clear space available outside the propellant tank but inside the packing polygon. The secondary circle's size is maximized when it is tangent to the primary circle and touching two sides of the polygon.

For the hexagonal case:
 - Picture a hexagon (black) point-up, with a circle (red) inscribed inside.
 - A line (not shown) from the center of the circle to a point where the circle touches the hexagon is the inradius r of the hexagon, which is also the radius of the primary circle.
 - A (light blue) line from the corner of the hexagon to the center of the primary circle is the circumradius s, which is also the length of each side of the hexagon. s = (2 * r) / sqrt(3)
 - The interior angle of a hexagon is 120°.
 - A horizontal line (dark blue) tangent to the primary circle and perpendicular to the circumradius bounds the available space. The secondary circle is also tangent to this line; the two circles, the circumradius and this line all touch at the same point.
 - This tangent line forms the base of a triangle, with segments of the hexagon sides as the other two sides. The resulting triangle is 30 - 30 - 120 and can be split into two 30 - 60 - 90 triangles if needed; the vertical side of these two triangles is of length s - r. The base of the triangle is then c = 2*sqrt(3)*(s-r) and the two sides are then a = b = 2*(s-r).
With the geometry defined, the goal is to find the radius r' of the secondary circle (green) inscribed within this new triangle. To avoid a bunch of messy analytic geometry I will use Heron's formula r' = A/p where A is the triangle's area and p is the semiperimeter (that is, half the sum of the sides of the triangle).
 - The semiperimeter p = (2 + sqrt(3))(s-r)
 - Given the sides a, b, c and the semiperimeter p, the area A = sqrt(p*(p-a)*(p-b)*(p-c))
 - With that, the radius can be found: r' = A/p
This ends up being a bit messy as a formula but Google sheets has no trouble with it.

For the square case:
 - Picture a square point-up, with a circle inscribed inside. This looks just like the picture above, but with a narrower angle and a larger secondary circle.
 - A line from the center of the circle to a point where the circle touches the square is the inradius r of the square, which is also the radius of the primary circle and half the length of each of the sides of the square.
 - A line from the corner of the square to the center of the primary circle is the circumradius s, which is also half the length of the square's diagonal. s = r*sqrt(2)
 - The interior angle of a square is 90°.
 - A horizontal line tangent to the primary circle and perpendicular to the circumradius bounds the available space. The secondary circle is also tangent to this line; the two circles, the circumradius and this line all touch at the same point.
 - This tangent line forms the base of a triangle, with segments of the square sides as the other two sides. The resulting triangle is 45 - 45 - 90 and can be split into two 45 - 45 - 90 triangles if needed; the vertical side of these two triangles is of length s - r. The base and height of the triangle is then a = b = (s - r). The hypotenuse is then c = sqrt(2)*(s - r).
 - After some rearranging, the semiperimeter p = (2 + sqrt(2))*(s - r)/2.
The same formulae for A and r' apply.

No comments:

Post a Comment