RPAT is a terminal-based tool for analysing the performance of launch vehicles. It's designed for players of KSP (particularly RP-1), amateur aerospace designers, and anyone who wants a quick, clear look at how well a given rocket performs.
This tool isn't meant to replace detailed simulation or flight testing. Instead, it provides instant feedback on vehicle efficiency, approximate payload capacities, and whether your design actually suits your intended mission.
RPAT was created to answer a simple question:
"Is this rocket good at what I built it for?"
The goals were:
- Give clear visual and numerical feedback on a rocket's performance
- Let users compare designs quickly without extra setup
- Remain simple to use, even in a terminal window
- Make the code easy to read, expand, and learn from
It focuses on energy efficiency, payload margins, and practical delta-v capability. It also categorises rockets by role (LEO, deep-space, or general-purpose) based on their energy behaviour.
- Delta-v vs Payload Graphing - See how added payload affects performance
- Built-in Rocket Presets - Select from a growing library of real and fictional rockets
- Efficiency Scores - Get metrics on how efficient your rocket it at a given role, for comparative use.
- Payload Finder - Reports how much payload can be sent to LEO, GTO, or other delta V targets.
- Custom Vehicle Input - Simple json system supported for adding your own designs
RPAT requires Python 3 and the following libraries:
pip install numpy matplotlibTo run it, simply execute the main file:
python RPAT.pyPreset rocket data is stored in default_rockets.json. Human-readable explanations for each rocket are provided in Rockets.txt.
If you want to add your own preset rockets, custom_rockets.json has some examples, you can modify and add your own in here.
RPAT uses the Tsiolkovsky rocket equation across each stage to calculate total delta-v. It loops through increasing payload values, recomputing delta-v at each step. This forms the basis of a performance curve: how much delta-v you're left with depending on how much payload you're trying to push.
The tool then derives several values from this curve:
- Payload limits for standard mission targets (LEO, GTO, TLI, Mars Transfer)
- Stage delta-v breakdown at those limits.
- Energy quotient scores to help indicate how effective a rocket actually is, compared to competing designs.
Three key values help summarise a vehicle’s behaviour:
Indicates how well the rocket performs in LEO orbits. High LEQ means it delivers a lot of payload relative to its energy loss when increasing mass. It scales with design efficiency and mass ratio.
Derived from the area under the delta-v vs payload curve, then normalised by vehicle mass. High HEQ means the rocket delivers high total impulse and is suited for deep-space or transfer missions.
Simple ratio of payload mass to total launch mass. Gives a general idea of whether a rocket is overbuilt or under-optimised.
You can select from a library of built-in rockets. When the program runs, you’ll see a list of rockets, such as:
0: falcon9 — Falcon 9 Full Thrust (Expended) (SpaceX)
1: saturnv — Saturn V (NASA, various)
2: dolphinex — Dolphin EX (RP-1)
Just enter the number or name to select it.
Each rocket has a type tag:
active: In service, real-world vehicle (values may change)historical: Retired vehicle, values are based on researchfictional: RP-1 rockets or user-made craft, values are exact from RPAT’s contexthypothetical: For rockets that were designed, but never flown, or for kitbashed rocket components, like a Saturn V with Gem-63s for some reason.
All rockets include a desc (description) string for easier identification.
You can edit custom_rockets.json to add your own vehicles. Each entry can contain:
"atlas-v-2x-aj60a": {
"type" : "Active",
"desc" : "Atlas V with 2 AJ-60A boosters (ULA)",
"man_stage_add" : 0,
"stages" : 2,
"dryMass" : [21054, 2316],
"wetMass" : [305143, 3146],
"isp" : [320, 450.5],
"fuel_reserve": [1000, 0]
"main_stage_thrust" : 3827,
"booster_thrust" : 1688.4,
"booster_dry_mass" : 4067,
"booster_wet_mass" : 46697,
"booster_isp" : 279.3,
"booster_count" : 2,
"booster_burn_time" : 94
}Most of these variables should be self explanatory, however a few will need more explanation:
- man_stage_add is a boolean to declare whether the upper stage masses have been added to the lower stages, for example, adding the wet mass of stage 2 to stage 1. This usually isn't the case, but make sure to declare it if it is.
- fuel_reserve is a list of the fuel you want reserved for each stage, for example if the first stage lands like in our example above. This does not need to be declared if you don't intend to reserve fuel.
- Booster calculations require all booster fields, in addition they require the core stage thrust.
Use Rockets.txt to document your values, assumptions, and sources for transparency.
| Rocket Name | Payload to LEO (kg) | LEQ | HEQ |
|---|---|---|---|
| Falcon 9 Block 5 (expended) | 22,773 | 5.918 | 5.198 |
| Delta IV Medium | 11,329 | 5.392 | 5.352 |
| Saturn V | 147,160 | 7.450 | 6.434 |
| N1 (1969) | 101,597 | 6.483 | 4.576 |
This is an example of the output from some of the preset rockets, to be used as a comparison.
- Suborbital calculator (range, apogee, launch angle estimation) (potentially, not confirmed)
- Expanded preset library with more real and RP-1 craft (in progress)
- Automatic performance summaries based on metrics
RPAT is under active development, things may change around with updates, but each stable release is checked for mathematical accuracy.