There was some discussion in the Orbiter Development forum about development of air-breathing engine models in addition to the scramjet for use within Orbiter in this thread:
www.orbiter-forum.com
To that end, I've been working to develop a performance model of a turbojet engine with afterburning capability that looks and behaves as a jet engine should. I've assembled a Python script that calculates the thrust for a given throttle position and ambient flight conditions.
Modeling Assumptions
This model implements a simplified ideal Brayton cycle engine analysis, which utilizes a cold air standard where the gas is assumed to be an ideal gas with constant specific heats, which simplifies the calculation but isn't strictly correct. In particular, the engine performance is very sensitive to the value of k (the specific heat ratio). The default value of 1.4 at 300 K tends to significantly overestimate overall engine performance.
Fuel properties are assumed to be something similar to jet A fuel, with lower heating value of about 42,800 kJ/kg and stochiometric fuel air ratio of 0.067. Fuel air ratios below this value are lean and combustion is complete; above this value they are rich and incomplete combustion and heat release is modeled.
In order to link the engine throttle to the engine thrust, the following assumptions were made:
Required Inputs
This model was created to strike a balance between detailed engine modeling and performance. It is meant to produce a suitable result when provided some basic engine performance parameters that may be easily found on the Internet for a given engine. Currently this is the minimum data that must be provided to implement a particular engine:
At full throttle at sea level:
There are several camps about where this model should go: into Orbiter itself, as a code example for add-on developers, or maybe an API that will produce add-on engine code for input engine performance parameters. For the time being, I think the thing to do is to get this into an add-on in Orbiter, fly it, and see what needs to be modified and refined. @Urwumpe seemed willing to take my math model and try to implement it in an add-on that we can check out in Orbiter. Maybe we could make a T-38 trainer or something similar and see if these engines push it around like the real thing?
I hope this works out. It's not done yet, but I am hopeful something polished will come from this that will enable realistic atmospheric flight in Orbiter.
Cheers!
UPDATE August 14, 2022: Jet Engine Library for Orbiter 2016 is now available through Orbiter Hangar!
UPDATE August 6, 2022: Jet Engine Library for Orbiter 2016 is now available for testing! Unzip the posted zip file to your add-on directory and read the Quick Start Guide for how to implement the engine.
UPDATE July 18, 2022: It works! Now to get it documented and the code bundled into some useful and accessible format for add-ons. Stay tuned.
UPDATE July 9, 2022: The model has been updated with an implementation allowing bypass turbofans as well as jet engines. The Python code uses modules containing the engine configuration data needed from literature sources.
Implementation of proper air breathing engines (ABEs)
I was working on the base texture for the new SSU orbiter mesh and I was thinking it would be nice if a proper simulation of air breathing engines (ABEs) could be implemented. Right now it has to be implemented on a vessel-by-vessel basis (see the default Delta Glider and its SCRam-jet version)...

To that end, I've been working to develop a performance model of a turbojet engine with afterburning capability that looks and behaves as a jet engine should. I've assembled a Python script that calculates the thrust for a given throttle position and ambient flight conditions.
Modeling Assumptions
This model implements a simplified ideal Brayton cycle engine analysis, which utilizes a cold air standard where the gas is assumed to be an ideal gas with constant specific heats, which simplifies the calculation but isn't strictly correct. In particular, the engine performance is very sensitive to the value of k (the specific heat ratio). The default value of 1.4 at 300 K tends to significantly overestimate overall engine performance.
Fuel properties are assumed to be something similar to jet A fuel, with lower heating value of about 42,800 kJ/kg and stochiometric fuel air ratio of 0.067. Fuel air ratios below this value are lean and combustion is complete; above this value they are rich and incomplete combustion and heat release is modeled.
In order to link the engine throttle to the engine thrust, the following assumptions were made:
- The steady engine shaft speed is linear with throttle position (approximately true based on published performance data)
- The air volume flow rate is proportional to engine shaft speed (based on turbomachinery scaling laws)
- The engine pressure ratio is proportional to shaft speed squared, and therefore to throttle position squared (again based on turbomachinery scaling laws)
Required Inputs
This model was created to strike a balance between detailed engine modeling and performance. It is meant to produce a suitable result when provided some basic engine performance parameters that may be easily found on the Internet for a given engine. Currently this is the minimum data that must be provided to implement a particular engine:
At full throttle at sea level:
- Inlet diameter of engine [m]
- Maximum thrust with afterburner (max_thrust_ab) and without afterburner (max_thrust) [kN]
- Maximum overall engine pressure ratio (rp_max) [-]
- Air mass flow rate at full throttle (air_mass_flow_max) [kg/s]
- Fuel flow rate at maximum thrust without afterburner (fuel_mass_flow_max) [kg/s]
- Fuel flow rate at maximum thrust with afterburner (fuel_mass_flow_max_ab) [kg/s] if afterburning is implemented.
- Bypass Ratio (bpr) [-]
- Fan Pressure Ratio (fpr) [-]
- It should mimic the behavior of a real jet engine so far as thrust developed at a given throttle position and flight conditions.
- At constant throttle setting, thrust will decrease with altitude due to reduction in air density. Flameout behavior can be implemented. A jet with this engine model should not be able to fly out of the atmosphere due to air starvation.
- It should be able to determine realistic fuel consumption rates.
- The absolute temperatures and pressures calculated in the engine should trend appropriately compared with a real jet engine.
- It will not exactly model the temperatures, pressures, and thrust of a particular jet engine. It should look and act like a jet engine, and with some tweaking it can be made to approximate the thrust and fuel consumption of a particular engine, but that is where the similarity ends.
- It will not model compressor stall or surge, or exact compressor or turbine behavior. To do this would require measured compressor and turbine performance maps which are generally proprietary and hard to get for particular engines.
- It will not model turbine lag or any other transient. It is a 1-D quasi-equilibrium process model.
- It currently cannot distinguish the amount of available oxygen in a given atmosphere. It simply assumes that the atmosphere is air as found on Earth, so this engine will "work" even on planets with sufficient atmospheric pressure. Modifications like inverted engines that can take a hydrocarbon atmosphere like on Titan and burn it using oxygen consumed as propellant are possible, as well as other combustion processes utilizing atmospheres other than air, but the gas properties and combustor processes will need to be modified accordingly.
There are several camps about where this model should go: into Orbiter itself, as a code example for add-on developers, or maybe an API that will produce add-on engine code for input engine performance parameters. For the time being, I think the thing to do is to get this into an add-on in Orbiter, fly it, and see what needs to be modified and refined. @Urwumpe seemed willing to take my math model and try to implement it in an add-on that we can check out in Orbiter. Maybe we could make a T-38 trainer or something similar and see if these engines push it around like the real thing?
I hope this works out. It's not done yet, but I am hopeful something polished will come from this that will enable realistic atmospheric flight in Orbiter.
Cheers!

UPDATE August 14, 2022: Jet Engine Library for Orbiter 2016 is now available through Orbiter Hangar!
UPDATE August 6, 2022: Jet Engine Library for Orbiter 2016 is now available for testing! Unzip the posted zip file to your add-on directory and read the Quick Start Guide for how to implement the engine.
UPDATE July 18, 2022: It works! Now to get it documented and the code bundled into some useful and accessible format for add-ons. Stay tuned.
UPDATE July 9, 2022: The model has been updated with an implementation allowing bypass turbofans as well as jet engines. The Python code uses modules containing the engine configuration data needed from literature sources.
Last edited: