RL10A-3-3A

Introduction

This report reconstructs the RL10A-3-3A thrust chamber, regenerative cooling jacket, and engine cycle in Pyskyfire, then compares the results with published RL10 data. The geometry and validation curves plotted here were digitized from Binder et al.'s NASA modeling report; older design curves from Pratt & Whitney's 1966 RL10A-3-3 design report are retained in the reference dataset but are not plotted because they are not one-to-one comparisons; and the cooling-tube dimensions come from the RECOP passage-design study. The source, page, and way each dataset is used are listed on the References tab as [R1], [R2], and [R3].

Interactive reconstruction of the RL10 thrust chamber and cooling tubes. Rotate, pan, and zoom to inspect the arrangement: 180 long tubes continue through the chamber and throat, while 180 short tubes begin at the nozzle interlacing manifold. Downstream of that transition the two sets alternate around the circumference, giving 360 passages in the nozzle; upstream, only the long tubes remain.

Files and reproduction

Every file for this case is under validation/RL10/, relative to the repository root. The checked-in result and HTML files let the report be viewed without rerunning the simulations; rerunning the workflow replaces the current generated artifacts.

Run order

  1. Run uv run --group docs python validation/RL10/regen_sim.py. This builds the thrust chamber, runs the two regenerative-cooling circuits, and writes validation/RL10/regen_results.pkl.
  2. Run uv run --group docs python validation/RL10/sizer_sim.py. This loads regen_results.pkl, closes the engine cycle, and writes validation/RL10/sizer_results.pkl.
  3. Run uv run --group docs python validation/RL10/post_process.py. This loads both PKL files, regenerates the combined report in validation/RL10/, and rewrites the single-figure HTML files in validation/RL10/standalone/.

Simulation and post-processing files

File Purpose
regen_sim.py Defines the RL10 chamber, silver insert, tube geometry, operating point, and cooling boundary conditions, then solves the long- and short-tube regenerative-cooling circuits.
sizer_sim.py Loads the chamber saved by the cooling run and solves the two-stage fuel-pump, cooling-jacket, turbine, oxidizer-pump, and injector engine-cycle network.
post_process.py Loads the saved simulations, compares them with the reference datasets, and creates the plots, tables, 3-D view, network view, and this report.

Saved simulation results

File Purpose
regen_results.pkl Serialized output of regen_sim.py: the inputs, reconstructed thrust chamber, and cooling results for both tube circuits. It supplies the report's geometry and regenerative-cooling validation tabs.
sizer_results.pkl Serialized output of sizer_sim.py: cycle inputs, chamber, converged network, stations, signals, residual history, and block results. It supplies the engine-cycle tabs.

PKL files are Python/cloudpickle serialization artifacts and should only be loaded from a trusted source. Regenerate both after incompatible Pyskyfire or dependency changes.

HTML outputs and network layout

File Purpose
RL10A-3-3A_Report.html The combined, standalone validation report generated by post_process.py; this is the primary file to open.
standalone/ Single-figure HTML files written by post_process.py alongside the report. Each one holds exactly the figure of the same name from the report, so the documentation can embed a plot without duplicating its definition.
rl10a-3-3a-engine-cycle.layout.json The saved node positions for the interactive engine-cycle schematic. post_process.py reads it when creating standalone/network.html and the embedded network view; it is presentation data, not a simulation input.

The standalone/ directory holds engine-3d.html, network.html, wall-temperature.html, coolant-temperature.html, coolant-pressure.html, heat-flux.html, temperature-profile-throat.html, combustion-viscosity.html, and the fuel-side station-fuel-pressure.html, station-fuel-temperature.html, and station-fuel-mass-flow.html.

Reference data

The digitized and converted source data is in validation/RL10/reference_data/. These JSON files are inputs and are not overwritten by the reproduction workflow.

File Contents and use
reference_RL10_contour.json Digitized axial/radial RL10 contour used for the reconstructed-versus-published contour comparison.
reference_area_ratios.json Published axial area-ratio stations used to construct the simulation contour.
reference_silver_insert.json Inner and outer profiles of the throat silver insert, used to calculate its thickness and throat radius.
reference_channel_height.json Digitized cooling-tube outside-height data used to define the tube geometry.
reference_channel_width.json Digitized cooling-tube outside-width branches used in the tube-width comparison.
reference_wall_temperature.json Published hot-wall temperature curves used both for cooling-node placement and report comparisons; the older RL10A-3-3 design-report curve is retained but not plotted.
reference_heat_flux.json Published hot-gas heat-flux curves used both for cooling-node placement and report comparisons.
reference_coolant_static_temperature.json Published coolant static-temperature curves used both for cooling-node placement and report comparisons; the older RL10A-3-3 design-report curve is retained but not plotted.
reference_coolant_static_pressure.json Published coolant static-pressure curves used for cooling-node placement, circuit transition locations, and report comparisons; the older RL10A-3-3 design-report curve is retained but not plotted.
reference_station_data.json Published fuel- and oxidizer-side engine station data used as cycle inputs and as the station-by-station comparison reference.

The prescribed values define the regenerative-cooling validation run. They follow the typical operating point in Tables 2.4.1 and 2.5.1 of [R1]; the calculated table is Pyskyfire's resulting chamber and nozzle state, not a second set of source data.

Prescribed Model Inputs
ParameterValue
p_c3.32e+06
mdot_fu2.71
mdot_ox14.2
eps61
x_e1.17
cea_fuH2 (100%)
cea_oxO2(L) (100%)
coolant_fuHydrogen (100%)
T_gas_fu_in200
T_gas_ox_in100
minimum_cea_temperature200
T_coolant_in33
p_coolant_in6900000
L_star0.95
roughness_height1.17e-06
wall_thickness0.00033
Calculated Output Values
QuantityValue
MR5.25
p_c3.32e+06
T_c3.34e+03
F7.8e+04
eps61
L_star0.95
c_star2.38e+03
p_amb100000
Isp_optimum452
Isp_vac469
Isp_amb24.7
Isp_SL18.8
CF_vac1.94
CF_amb0.102
CF_SL0.0775
mdot16.9
mdot_fu2.71
mdot_ox14.2
t_stay0.000984
A_t0.0121
A_e0.739
r_t0.0621
r_e0.485
V_c0.0115

The two contours are independent reconstructions of the published RL10 profile. Their agreement provides a useful geometry check before the cooling calculation is interpreted.

Engine contours reconstructed from [R1]. “Area Ratio Stations” uses the numerical A/A_t values in Table E1 (p. 139): each ratio is converted to radius with r = r_t sqrt(A/A_t), then Pyskyfire draws the spline through the input markers. “Graph Readout” is digitized directly from the plotted chamber and nozzle profile in Figure E1 (p. 141), with its markers and spline shown separately. Small offsets are expected because one contour comes from rounded table values and the other from a scanned graph. The table omits the throat and exit, so those boundary points are supplied from the silver-insert profile and the stated 61:1 exit area ratio.
Wall stack of the long-tube circuit drawn to scale in the meridional plane: silver throat insert, stainless tube wall, coolant passage, and the closeout. Zoom in around x = 0 to see the thin silver insert described on p. 55 of [R1] and to read the real layer thicknesses. The closeout wall is not modelled by pyskyfire and is drawn hatched as a copy of the tube wall; the coolant band spans the full circumferential sector, so the tube-to-tube land is not resolved.

These plots compare the Pyskyfire solution with digitized reference curves from [R1]. Exact agreement is not expected. The sources represent different model generations and operating balances; Pyskyfire uses its own gas-property and heat-transfer correlations; and reading curves from scanned figures introduces finite digitization error. The two Pyskyfire traces also resolve the physical short- and long-tube circuits separately, whereas some published curves represent a reduced cooling-jacket model.

Hot-wall temperature from the models reproduced in Binder [R1] and the Pyskyfire short- and long-tube circuits. The peak is especially sensitive to the hot-gas correlation and digitized throat location; both effects can produce visible discrepancies.
Hot wall and cold wall temperature predicted by Pyskyfire for the short- and long-tube cooling circuits. Black crosses mark wall nodes where the coupled nonlinear wall-temperature solve did not meet its convergence tolerance. At these conditions, condensed water species in the equilibrium CEA data—particularly H2O(cr) and H2O(L)—appear, disappear, or change phase discontinuously as the trial wall temperature changes. The resulting jumps in gas thermodynamic and transport properties kink the heat-balance residual, so an otherwise bounded solution can stall before the numerical tolerance is reached. The marked temperatures should therefore be interpreted as approximate local values rather than fully converged wall solutions.
Static coolant temperature compared with [R1]. Differences accumulate with absorbed heat along the flow path and therefore reflect both the local heat-flux prediction and differences in mass flow, inlet state, passage geometry, and the source model's treatment of the two tube passes.
Static coolant pressure compared with [R1]. Pressure discrepancies are driven chiefly by the reconstructed passage area and hydraulic diameter, friction and acceleration-loss correlations, and losses at the tube-interlacing transition that a one-dimensional model can only approximate.
Long-tube heat flux compared with the models in [R1], including Binder Figure 4.2.4 on p. 57. The throat peak depends strongly on the chosen hot-gas heat-transfer correlation, local contour curvature, gas properties, and wall temperature, so small geometry or operating-point differences are amplified there.
Combustion-gas and coolant Reynolds numbers along the thrust chamber.
Hot-gas-side and coolant-side convective heat transfer coefficients along the thrust chamber for both cooling circuits. Both are referred to their own wetted area.
Every temperature in the heat path for the long tubes, cold to hot: bulk coolant, coolant-side wall, the silver-insert interface, hot-side wall, the recovery temperature, and the combustion gas static and total temperatures. The hot-wall-to-recovery gap is the driving potential behind the reported h_hot = q''/(T_aw - T_hw). T_aw and T_total are both obtained by inverting the equilibrium equation of state at the relevant enthalpy and the local static pressure. Neither exceeds its chamber value: T_total falls through the nozzle because total enthalpy is conserved while the falling pressure shifts the equilibrium towards dissociation, so the same enthalpy sits at a lower temperature.
Share of the total gas-to-coolant thermal resistance carried by the hot-gas film, the wall stack, and the coolant film, all referred to the hot-gas area so the three sum to the total. The hot-gas film dominates, which is why the wall runs far closer to the coolant than to the recovery temperature.
The same split in absolute terms (m²·K/W). The total is at its minimum at the throat, which is what puts the peak heat flux there; the layer detail is easier to read in the share plot above.
Internal cooling-channel height used by the simulation. It is derived from the digitized RL10 tube outside-height points in RECOP Figure 10, document p. 172 (PDF p. 5) [R3]: twice the stainless tube-wall thickness is subtracted from the outside height, the nozzle-side coordinate is aligned to the modeled interlacing manifold and exit, and a shape-preserving spline is evaluated on the cooling grid. Differences from the plotted source points therefore reflect the OD-to-internal conversion and axial alignment as well as scan digitization.
Calculated full-pass tube OD width compared with the digitized RECOP Figure 10 design points, document p. 172 (PDF p. 5) [R3]. Width is calculated as the hot-side chord of the modeled angular tube sector; deviations therefore show the effect of reconstructing the circumferential passage arrangement rather than directly prescribing the published width curve.

These tabs cover the engine cycle balance only. The cycle is closed around the same thrust chamber as the regenerative-cooling validation, but it solves for its own cooling-jacket inlet state instead of being given the measured one from Binder et al. Its jacket results therefore differ slightly from the Cooling Data tab and are not plotted here, to keep a single set of validation curves in the report. They are still saved: sizer_results.pkl carries a full RegenResult under block_results['regen_half_pass'] and block_results['regen_full_pass'], which can be passed to the same psf.viz plots used in the regen tabs.

Cycle Input Parameters
ParameterValue
p_c3.323e+06
mdot_fu2.759
mdot_ox13.95
coolprop_fuhydrogen
coolprop_oxoxygen
p_tank_fu190800
T_tank_fu21.44
p_tank_ox292000
T_tank_ox97.06
eta_pump_fu0.581
eta_pump_ox0.6422
eta_turbine_fu0.7353
n_fu31537
n_ox12615
stage1_load_fraction0.5
eta_pump_regen_fu0.95
eta_regen_turbine_fu0.98
eta_turbine_injector_fu0.94
eta_fu_injector0.88
eta_pump_injector_ox0.88
eta_ox_injector0.88
zeta_stage1_recirc0.007
zeta_stage2_recirc0.00294
zeta_stage2_gearbox0.00294
zeta_turbine_bypass0.00427
zeta_pump_ox_recirc0.000323
mdot_fu_engine_in2.767
mdot_ox_engine_in13.95
Converged Cycle Balance
QuantityValue
Stage-1 fuel pump power [kW]226.8
Stage-2 fuel pump power [kW]228.8
Oxidizer pump power [kW]78.52
Turbine shaft power [kW]534.2
Fuel pump discharge pressure [bar]67.5
Turbine inlet pressure [bar]52.02
Turbine inlet temperature [K]250.1
Turbine outlet pressure [bar]40.18
Turbine outlet temperature [K]236.7
Fuel injector inlet pressure [bar]37.76
Oxidizer pump discharge pressure [bar]42.91
Chamber pressure [bar]33.23
Fuel flow to chamber [kg/s]2.759
Oxidizer flow to chamber [kg/s]13.95
Mixture ratio at injector [-]5.056
Cooling-jacket boundary states: the cycle solution against the prescribed validation case
QuantityValue
Cycle: jacket inlet pressure [bar]64.12
Cycle: jacket inlet temperature [K]31.56
Cycle: jacket outlet pressure [bar]53.09
Cycle: jacket outlet temperature [K]250
Cycle: jacket mass flow [kg/s]2.759
Validation: jacket inlet pressure [bar]69
Validation: jacket inlet temperature [K]33
Validation: jacket outlet pressure [bar]59.03
Validation: jacket outlet temperature [K]254.8
Validation: jacket mass flow [kg/s]2.709

Cycle stations compared against the RL10A-3-3A engine station data in Binder et al. Pyskyfire station states are stagnation states, so they are plotted against the reference total pressure and total temperature. Only the stations the reference table lists are shown; the cycle also solves the regen interstage, the duct inlets, and the injector exits, which have no reference counterpart.

The cycle is fed the station table's own injector-face mass flows, so the mass-flow traces are a check on the leakage and bypass split fractions rather than an independent prediction. The thrust chamber, however, was sized at a different balance: Tables 2.4.1 and 2.5.1 (2.7093 kg/s fuel, MR 5.255) against the station table's 2.7587 kg/s and MR 5.056. The gas- side heat load therefore belongs to a slightly leaner, higher-MR chamber than the flow being pumped through it, which is the main reason the jacket-exit temperature runs hot against the reference.

The oxidizer-injector-plenum temperature discrepancy is likely a model-scope difference. The reference model appears to account for heat transfer from the warmer hydrogen to the oxygen within the injector, whereas Pyskyfire currently treats the propellant paths independently and does not model this injector heat exchange.
Fuel-side path relative to the hydrogen saturation line. The expander cycle takes the hydrogen supercritical in the pump and keeps it there through the jacket and turbine.
Oxidizer-side path relative to the oxygen saturation line.
Converged mass flow through the cycle. The gearbox dump is the only stream that leaves the engine; the shaft recirculation streams return to the fuel and oxidizer pump inlets.
Maximum relative residual per fixed-point iteration.
Editable engine-cycle schematic

Reference labels used throughout the report are collected here. Values described as digitized were read from the cited published figure and converted to SI units in validation/RL10/reference_data.

RL10 report reference data and provenance

Reference Source Data used in this report
[R1] Binder, M., Tomsik, T., and Veres, J. P., RL10A-3-3A Rocket Engine Modeling Project, NASA TM-107318, 1997, NTRS 19970010379. Operating point (Tables 2.4.1 and 2.5.1); cooling-jacket layout and silver insert (p. 55); cooling comparisons (pp. 56–59); engine profile (Figure E1, p. 141); area-ratio stations (Table E1, p. 139); and engine station data.
[R2] Pratt & Whitney Aircraft, Design Report for RL10A-3-3 Rocket Engine, PWA FR-1769, 28 February 1966, NTRS 19670005471. Digitized wall-temperature, coolant-temperature, and coolant-pressure curves from Appendix D, Figure D-3, p. D-4. Retained in the reference datasets for possible future use but excluded from the comparison plots because the RL10A-3-3 curves are not one-to-one comparisons with this RL10A-3-3A case.
[R3] Tomsik, T. M., A Hydrogen-Oxygen Rocket Engine Coolant Passage Design Program (RECOP) for Fluid-Cooled Thrust Chambers and Nozzles, 1994, NTRS 19950002773. Digitized RL10A-3-3A tube outside-height and outside-width design points from Figure 10, document p. 172 (PDF p. 5).