Anush Badii
Most scramjet sizing tools take an engine and report its thrust. RPDS-X runs the other way. You state the mission, and a root-finder adjusts the isolator height until the full engine cycle returns exactly the required net thrust.
The cycle is a chain of standard models: two oblique shocks on the forebody, laminar skin friction in the isolator, a calibrated heat-addition step in the combustor, and an expansion through the nozzle. The ramp angles come from a search for the highest total-pressure recovery that still reaches a compression ratio of 5. That search lands on the classical equal-strength solution, which is a useful cross-check.
At the baseline the thrust residual is 2.8×10−8 N.

| Station | Mach | p (kPa) | T (K) | U (m/s) |
|---|---|---|---|---|
| Freestream | 5.00 | 70.1 | 268.7 | 1,643 |
| Ramp 1 exit | 4.30 | 156.8 | 343.2 | 1,597 |
| Ramp 2 exit | 3.66 | 350.5 | 438.4 | 1,536 |
| Combustor exit | 2.95 | 876.4 | 1,173 | 2,230 |
| Ideal nozzle exit | 4.52 | 70.1 | 675.3 | 2,589 |
Hydrogen flow is 0.737 kg/s (2,654 kg/h), a specific impulse of about 4,150 s. The combustor exit stays supersonic, so the engine runs in scramjet mode.
The static temperature entering the combustor is only 438 K. That is well below the temperature at which hydrogen ignites on its own, so this design relies on a flame holder or pilot, which the model does not describe.

The flow-path geometry exported from the framework (STEP file) is shown with the temperature, pressure, speed and Mach number the model assigns to each region. A fifth view shows the flow paths themselves. The solid turns slowly so you can see the inlet, isolator, combustor and nozzle from either side.

What these are. Reduced-order model values drawn on the exported geometry, for the baseline mission (Mach 5, 3 km, 30 kN). They are not a CFD solution. Between the shocks the values are the oblique-shock states from the design table above. Through the combustor they are interpolated linearly from entry to exit, and through the nozzle they follow an isentropic expansion by area ratio. There is no boundary layer, no shock reflection and no combustion zone structure.
The exported nozzle expands the flow by an area ratio of 3.04, which gives Mach 3.9 and 184 kPa at its exit plane. That is shorter than the ideal nozzle in the design table, which expands to 70 kPa and Mach 4.52. The picture shows the geometry as exported. The streamline view holds each streamline at a fixed fraction of the duct height in the nozzle, and the moving dots travel at the local model speed.
The two views above are the reduced-order model drawn on the geometry. These are what an inviscid CFD code (Eilmer 4) computes on that geometry for the same baseline mission. The inlet shocks, the isolator and the cowl-lip shock reflections appear without being assumed. In both runs the combustor widens by 1.29 times, so the heated flow stays supersonic (Mach 1.5 non-reacting, 1.9 reacting), where a constant-area duct chokes.


How to read them. Both runs are inviscid and planar, so there is no boundary layer. They are shown on the 8,990-cell grid; the grid study below repeats them on four. The reacting run burns only a tenth of the model’s fuel because more makes the duct choke, and the ignition source supplies much of its heat, so it shows that burning is feasible in this shape, not how an unaided engine performs. The model’s own heat release is about four times what these ducts take while staying supersonic at Mach 5.
Both jobs were repeated on four grids (2,737, 5,592, 8,990 and 12,168 cells) with only the cell count changed. The table gives the change from the third to the fourth grid and the spread over all four. The non-reacting results converge well. The reacting results do not converge for every quantity. A clean rerun of one grid matched the earlier one exactly, so the scatter comes from the grid and not from a restart.
| Quantity | Non-reacting: last step | Non-reacting: spread | Reacting: last step | Reacting: spread |
|---|---|---|---|---|
| Impulse flux, combustor exit | +0.3 % | 2.0 % | +0.1 % | 2.3 % |
| Impulse flux, nozzle lip | +0.2 % | 2.4 % | +0.2 % | 2.4 % |
| Pressure, isolator exit | +0.3 % | 2.0 % | +0.4 % | 2.7 % |
| Pressure, combustor exit | +1.4 % | 5.0 % | −0.8 % | 7.8 % |
| Mach number, combustor exit | −0.5 % | 2.8 % | +0.6 % | 6.5 % |
| Hydrogen converted (from water) | – | – | 0.72, 0.62, 0.71, 0.60 | |
What it means. The thrust-relevant impulse flux holds to a few percent on both cases, and the isolator exit state to about 1 %. The reacting combustor exit is good to about 10 %, and the two-dimensional run does not fix the combustion efficiency better than about ±0.1, because with a numerical ignition source and no molecular mixing the burning depends on where the source meets the waves, and that changes with the mesh.
Three dimensions. A 3-D reacting engine-only job (inlet, isolator, combustor and nozzle between side walls, no vehicle body, about 117,000 cells) is part of the notebook. A small version of it, run to the end, reproduces the 2-D reacting result exactly, as it should with inviscid slip side walls and uniform fuel, so it checks the 3-D set-up and does not yet show any side-wall effect. Viscous side-wall boundary layers are not included.
The ramp angles stay at the baseline pair. Only the isolator length, in duct hydraulic diameters, changes, and every case is resized to the same 30 kN. Friction drag grows with length, so the isolator height has to creep up a little to make up the thrust. At 30 kN total, the drag stays under a few tenths of a percent of the thrust.
The slider steps through the five cases the notebook computes (Table 5); nothing is interpolated. The 8-height rule of thumb in the readout is the Billig guideline for isolator length.
The isolator drag model assumes a laminar boundary layer. Whether it stays laminar depends on how noisy the freestream is and on the wall temperature. This calculator uses the Barraza (2024) correlation as coded in the notebook: Ncrit = (1.1·Tu + 0.18)−3/2 + 1.5, with the noise level NL = Tu · γ · M (both Tu and NL in percent).
A lower Ncrit means transition arrives sooner. The correlation levels off at 1.5 for very noisy flow. It was fitted to wind-tunnel data, so use it as a guide to sensitivity, not as a prediction for flight.
A threshold needs an amplification N(x) to be compared with. A compressible linear-stability solver now computes it for the second mode on each ramp, using the edge state behind each shock (ramp 1: Mach 4.30, 124×106 per metre; ramp 2: Mach 3.66, 175×106 per metre). The boundary-layer momentum thickness is carried through the corner and each wave keeps its physical frequency. Wall temperature is not an output of the model, so three values are assumed. The turbulence slider above moves the thresholds on this chart.
Solid lines: ramp 1 (ends at 0.299 m). To the right of the corner the lines continue on ramp 2, with the dominant wave leaving its unstable band before others take over. Above N of about 10 the linear theory no longer relates to transition, so large values only show that a threshold is exceeded.
Result for the baseline engine. With a nearly adiabatic wall and 0.4 % turbulence the thresholds are reached part-way along ramp 1. With a cooled wall (700 K or 450 K) transition is predicted within a few centimetres of the nose at every turbulence level shown. The model’s laminar isolator friction is then a lower bound. Two-dimensional waves only: oblique first-mode waves, which could move transition forward, are not included. The thresholds were fitted by their authors at Mach 6 and are applied here at Mach 3.7 to 4.3.
Each point is a full redesign at 3,000 m and 30 kN. Below Mach 2.19 no pair of attached shocks reaches the required compression, so there is no design. Above that, recovery stays at 0.9006 because the compression constraint is the one doing the work. The manufacturing floor of 1.5 cm for Hc is never reached.
Hover or touch the chart for values. The point at Mach 2.0 failed: no design exists there.
This test freezes the baseline hardware and lowers the flight Mach number from 6 (the right side of the charts) in steps of 0.1. At each step the engine is evaluated off-design: shocks, isolator, combustor and thrust.
The model has no flame-out physics. It has no kinetics, ignition delay or blow-out. The ignition limit here is an assumed stagnation temperature entering the combustor. Move the slider to see how much the answer depends on it.
The limits the model does produce come much lower. The isolator flow turns subsonic at Mach 1.61. That figure depends on the calibrated combustor pressure rise and should not be read as a real operating limit, since a fixed engine would probably unstart sooner.
With the hardware frozen, thrust falls below the 30 kN requirement under Mach 5.0 and stays positive down to Mach 1.6.
The ideal nozzle expands the exhaust perfectly to ambient pressure, which would need a very long, wide exit. A single expansion ramp nozzle (SERN) instead lets the exhaust expand against the rear underside of the vehicle. The cowl ends at a lip, a Prandtl–Meyer fan forms there, and the ramp is contoured to absorb that fan, then cut short.
Shorter nozzles lose more thrust. The picker below applies the design rule used in the notebook: choose the shortest nozzle whose net-thrust loss stays within a budget, subject to a length cap of 64 cm and a thrust-vector angle of at most 25°.

At the baseline the selected design is 36.3 cm long: 14.0 cm of internal expansion and 22.2 cm of external ramp. Net thrust falls from 30,000 N to 27,381 N. The nozzle pushes on the vehicle with a 3.8 kN normal force, tilting the thrust 7.9° off the engine axis.
At this length the ramp ends right where the contoured part would begin, so it is a short straight ramp. The longer contoured designs on the chart lose under 2%, but the shortest of them is 1.1 m long.
Making up the lost thrust means scaling every dimension by about 1.047, to first order.
The SERN model is planar and inviscid, takes uniform flow at the lip plane, and ignores the interaction between the jet and the outside flow. Its internal checks pass: mass closure along the last Mach line to 7×10−10, and the full-length ramp reproduces the one-dimensional limit to 1×10−8.
In this layout the forebody underside is the two compression ramps, so the vehicle nose is the leading edge of the first ramp. The cowl hangs below the body. The SERN ramp is the vehicle's rear underside.
Side fences of engine width (118 mm) run from nose to tail. The inlet and nozzle are calculated as planar flows, and without fences the compressed air and the exhaust would spill sideways and lose pressure. Seen from above, the vehicle is engine-wide up to the cowl lip and widens behind it, a truncated triangle.
The nozzle's normal force pushes the vehicle toward the ramp side. In this layout that is a lift force acting far behind the centre of gravity, so it adds a nose-up moment that would have to be trimmed. That has not been assessed.
The notebook redraws this sheet for every mission you run.
| Dimension | mm | Source |
|---|

A two-dimensional inviscid Eilmer 4 run of the emitted geometry agrees with the inlet model at the capture plane: Mach number within 1 % and pressure within 2 %. At the isolator exit the CFD Mach number is 9 % lower than the model’s, which a friction-only isolator cannot reproduce. A four-grid study of the diverging-combustor runs puts the impulse flux within about 2.5 % over all grids and the isolator-exit state within about 1 % of the finest grid’s value. The reacting combustor-exit state is only good to about 10 % and the combustion efficiency to about ±0.1.
A reacting run with a numerical ignition source, whose combustion efficiency varies by about ±0.1 with the grid, is kept as a feasibility demonstration, not as a performance prediction.
Heated duct. With the model’s combustor as a constant-area duct of ideal air, the CFD chokes: Mach 0.96 at the combustor exit. Letting the combustor widen by 1.29 times, the most the nozzle layout allows, and limiting the heat added, the same inviscid CFD keeps the exit supersonic (Mach 1.49 non-reacting). A nine-species hydrogen–air run at 10 % of the model’s hydrogen, with a numerical ignition source that supplies much of the heat, also finishes, with the exit at Mach 1.94 and 912 kPa. At the model’s own heat release the duct would choke. The model’s combustor exit state is therefore not reproduced by CFD (see Limits).
At the isolator-exit state of each of three demonstration missions, hydrogen does not ignite on its own in a constant-pressure reactor (Li et al. mechanism, φ = 0.85, 0.5 s window). For the Mach 4, 2 km, 15 kN mission the entry state is 449 K and 397.5 kPa with a residence time of 0.073 ms; the delay is 11.6 ms at 1000 K and 0.0164 ms at 1200 K. The heat release in the combustor model therefore assumes a pilot or flame holder that the model does not describe.
The linear-stability solver reproduces the Blasius mean flow, the incompressible critical Reynolds number (519.4), a published subsonic eigenvalue (Malik 1990) and a published Mach 4.5 second-mode eigenvalue (Erlebacher and Hussaini 1989). The Mach 4.5 growth rate matches to 0.03 % when the Prandtl number is 0.70 and differs by about 7 % at 0.72, so growth rates at this level depend on that choice. The runs here use 0.72.
Changing the collocation points (90, 100, 140), the domain height or the Reynolds-number grid changes the N-factor by at most about 1 to 2 %.
Twelve self-tests run with every notebook execution. One compares against an outside reference. The others test that the pieces agree with each other, which catches coding errors but does not show the physics is right. The comparisons made outside these tests are listed under Cross-checks.
| Item | State |
|---|---|
| Paper | version 18, 27 pages (PDF) |
| Notebook | one Python notebook, reproduces every figure and table |
| Self-tests | 12 of 12 pass on every run |
| Outside comparisons | shock tables, Eilmer 4 (inviscid, 2-D, four grids), Cantera, published stability eigenvalues |
| Inputs | standard gas-dynamic relations and published correlations; no proprietary data |
Everything on this page was produced by one Python notebook that runs in Google Colab. To design a different engine, change the three mission numbers in its second cell (Mach, altitude, required thrust) and run all cells.
Each run rebuilds the design, the figures, the dimensioned vehicle drawing, the 26-page paper and a FreeCAD-ready model of the flow path. When the ramp edge states change, the stored stability tables no longer apply and the notebook recomputes them, which takes several hours.
| Mission inputs | Mach, altitude, thrust |
| Outputs | design, figures, paper, CSVs |
| CAD | STEP, STL, FreeCAD macro |
| Environment | Python, NumPy, SciPy, Matplotlib |