In the first of a series on the modelling of rocket motors I’m going to cover the aspects of the design of the solid propellent grain, which is the hardened mass of combustible propellent within the motor itself. Solid fuel rocket motors range from the model rocket motors produced by the likes of Estes with their utterly tiny and adorable 1/4A sized rocket motors producing a maximum thrust of just 5 Newtons, through to the huge solid fuel boosters used on the Shuttle launches producing around 4 million Newtons of thrust. I’m interested in the lower end of this spectrum, with motors less than 75 mm in diameter and typically around 38 mm, which is a standard size for large hobby rocketry and means the motor hardware is easy to come by.
One propellent mixture I’ve been eager to experiment with for a while has been a PVC-ammonium perchlorate (AP) mixture. My prior experience with amateur propellants has been the usual favourite of a potassium nitrate (KNO3) and sugar based derivative (usually dextrose). However this propellant has the potential to give a much improved performance over the KNO3 based propellants I used many years ago. Another benefit of this PVC based fuel is that the combustion temperature is high enough that small diameter (~0.125 mm) wires embedded axially within the grain prior to curing the PVC grain .
These wires have a much higher thermal diffusivity than the combustion products, transferring the heat of combustion into the burning surface at a rate that is considerably higher than the gases between the unburned propellant and the combustion products. The area surrounding the wires recesses to form an inverted cone, increasing the burning surface area, each of these individual cones will grow until they converge with each other and a steady-state surface area is formed, shown in the picture . This might allow for a feasible end-burning, narrow diameter grain, an idea I’m toying with and will probably investigate at some point.
But for now I have been interested in the various thrust profiles given by more conventional propellant grain configurations such as circular/star/finned/slotted cores, with some of these shapes and their accompanying thrust profiles shown below.
However when designing the propellent grain the ability to accurately model the regression of a grain will help to inform decisions during the design process, to keep the motor case within safe operating pressure limits as well as being able to refine a design to achieve a particular thrust profile.
Circular core profiles are relatively easy to model in comparison to more complex designs, as the core is located along the axis of the grain the core regression simply continues radially outwards until the propellant is consumed. This process can be modelled by simply increasing the core radius over a number of steps until the radius of the core is equal to the radius of the outer surface of the grain. However moving the core off-centre results in a core type known as a ‘Moon Burner’ and the expanding core will at some point, mid-way through the burn, intersect the outer surface of the grain making accurate predictions of the burning surface area and grain volume at each step a slightly more difficult task. Things get even more interesting with more complex core geometries. The overall process is simple though, the difficulty comes with accounting for the intersection of the core burn-through points which results in the formation of slivers and the erosion of fin edges. I should note that although I used Matlab as it has a lot of inbuilt functions that are quite handy, other programming languages are equally suitable, Python is a great alternative, as is C.
Circular and Moon Burner Cores
As the difference between a circular core grain and a moon burner vary only in the radial offset distance of the core axis from the grain’s axis, they can be bundled together where a simple core can be modelled with zero offset.
In order to define a regression step by which to ‘grow’ the core, the following incremental distance is used based on the following equation, where x_off is the offset distance, cr and gr are the core and grain radii respectively, and the number of steps n = 1500.
The radius of the core is then grown by the addition of this incremental distance, then the length of the newly grown core edge and change in grain area are found at each step using basic mathematics to calculate the area of a circle and circumference. This process continues until the core radius intersects with the grain outer edge. In the case of a circular core this point is easy to define, however in the case where the core is offset from the centre the intersection points of the two circles described by the core and grain need to be found, shown as A,B in the following diagram.
There are several methods of finding these intersection points:
- Create a table of points to draw both circles and simply find where they are equal
- Find a solution to the equations that describe each circle
- Or use Matlab’s inbuilt circle intersection function ‘circcirc‘ which outputs the vectors of the two points
Once A and B are known the core edge length can then be determined by first finding the chord distance l between points AB, then using this distance to find the angle between the points, which then lets you find the edge length L. This is far easier than it sounds and the equations used are thus (note the angles are in radians).
The final thing to find is the area of the grain now the core has regressed through the grains outer surface using this rather long-winded but simple equation:
Now that the tricky stuff is out of the way, here is an example for the regression analysis for a couple of different moon burner core designs. Although the regression is calculated over 1500 steps, only the first and then every 100th core calculations are shown, otherwise the plots would be useless as the regression contours would be indistinct.
I will cover star shaped, finned, and slotted cores in another post along with what the geometrical data calculated at each step can tell us about the potential performance of the motor.
I am still tweaking the scripts but I do intend at some point to tidy it all up into a GUI with a nice front panel that will take outputs from PropPrep and motor design criteria outputting an entire portfolio of its simulated performance and make it freely available. As it stands now I have all the individual scripts that do each of these tasks but it’s a bit untidy at the moment, at least with the GUI approach I can include Matlab runtime environments to enable it to run without having to install Matlab itself.
- Rumbel, Keith.E, “Poly(vinyl chloride) Plastisol Propellants”, Propellants Manufacture, Hazards, and Testing, Chapter 3, pp 36–66, 1969.
- Isert, Sarah, et al, ” Tailoring burning rates using reactive wires in composite
solid rocket propellant”, Proceedings of the Combustion Institute (2016).