Generic Solid-Motor Burn Simulator
An internal-ballistics tool that turns grain geometry into a thrust curve — Diehl Defence
A solid motor's thrust is locked in the moment you choose the grain
A solid rocket motor has no throttle. Once the propellant grain is cast, its entire thrust-versus-time curve is fixed — set by the propellant chemistry and, above all, by the geometry of the burning surface. Get the geometry right and you get the thrust profile you designed for; get it wrong and you find out on the test stand.
That makes fast, trustworthy internal-ballistics prediction the heart of preliminary motor design. The existing in-house code had grown up around a single grain shape and had become tangled and hard to extend. The goal of this project — carried out during an industry placement at Diehl Defence — was to rebuild it on a clean foundation: one generic tool that reads a grain geometry and a propellant, iterates the burn, and returns thrust, chamber pressure, burn time and specific impulse.
The result is a modular Python tool that steps through the burn in configurable time increments and, for any supported grain, turns geometry into a full performance prediction.

The surface recedes, and the whole simulation follows from that
A solid grain burns from its exposed surface inward. Each time step, the surface recedes by a small amount — the regression — set by Saint-Robert's burn-rate law, which ties burn rate to the local chamber pressure through two propellant-specific coefficients. New gas is generated in proportion to the burning area; that gas raises the chamber pressure; the pressure drives the nozzle flow and, with it, the thrust.
So everything hinges on one question asked over and over: for the current amount of regression, how much surface is still burning, and how much propellant volume is left? Answer that for every time step and you can integrate the entire firing.
The tool draws each geometry as it burns, which was invaluable for catching errors. Below, a double-cylinder grain is shown in its initial state and after 4 mm of regression — red is the remaining propellant.

One tool, many geometries — each with its own surface-area maths
Different grain shapes give different thrust signatures: an end-burner burns a constant circular face for a long, low, steady thrust; a hollow cylinder burns its inner bore (and optionally its end faces) and can be tuned to a near-neutral profile; a double cylinder balances a shrinking inner surface against a growing outer one for a flat curve without fine-tuning.
Each geometry is its own class that knows how to compute its burning surface and remaining volume as a function of regression, defined by a small, documented parameter set. New shapes drop in without touching the solver.



The star is where the geometry gets genuinely hard
The star grain is the most rewarding and the most difficult shape. It's fully described by seven parameters (number of points, tip and fillet radii, point height and angle, diameters, length), and its burning contour passes through four distinct phases as it recedes — segments of the profile appear and vanish, and by choosing the point angle correctly the surface can be held nearly neutral through a phase.
Rather than mesh the whole cross-section, the tool exploits symmetry and solves just half a star point analytically: it decomposes the contour into circular-arc and straight segments, tracks which segments exist in the current burn phase, and sums their lengths — then scales up by the number of points. Volume comes from integrating the same contour analytically. The burn-surface curve it produces matches the classic NASA star-grain reference in shape, confirming the geometry maths.



Wrapping the geometry in ideal-rocket theory
With burning surface and free volume known at every step, the solver applies ideal-rocket relations — mass generation, gas mass balance, exhaust velocity through the expansion ratio, and thrust with its pressure term — to march the firing forward in time. Efficiency factors for the nozzle and combustion fold real-world losses into the ideal result.
The output is a set of plots and a statistics sheet: thrust and pressure over time, plus regression-dependent curves of burning surface, propellant mass and volume, and headline numbers like peak and average thrust, total impulse, burn time and specific impulse — all also written to CSV for downstream tools. Below: a thrust curve for a tuned cylinder grain, and the burning-surface history of a star-plus-cylinder combination.


Checking the prediction against a real firing
For validation the tool was run on a small motor built from three identical hollow-cylinder grains, for which measured thrust data existed. The simulation reproduces the correct impulse and burn duration; the measured curve is peakier and rises more slowly, which is exactly what the model's assumptions predict — real ignition isn't instantaneous, real grains aren't perfectly centred, and the burn-rate coefficients are themselves only approximate.
Because the tool deliberately simulates an idealised firing, those differences are expected and acceptable for preliminary design: it gets impulse and specific impulse right and puts the thrust and pressure in the right envelope, which is what the early design phase needs.

A clean, generic tool that made it into the design toolchain
The rebuilt tool does what it set out to: it takes an arbitrary grain geometry and propellant and returns a full internal-ballistics prediction in seconds, flexible enough to sweep configurations and find one that meets a thrust requirement. The flexible star-grain implementation in particular turned a single-shape script into a genuinely general preliminary-design tool — and it was successfully adopted into the motor-design workflow.