Buckaroo's Flightgear Projects
Guide To YASim: Contents

YASim Turboprop Engines

By Gary "Buckaroo" Neely

A turboprop engine is similar in configuration to a piston powered propeller engine. A propeller can be driven by either a piston engine or a turbine engine. The engine is a sub-element of the propeller element, so many configuration elements are the same. The differences lie in the turbine sub-element. For other propeller configuration details see YASim's Piston-driven Propeller Engines.

A sample turbine sub-element looks like this:

<propeller x="-2.429" y="1.905" z="1.549" ... >
  <control-input axis="/controls/engines/engine[0]/propeller-pitch" control="ADVANCE"/>
    <control-input axis="/controls/engines/engine[0]/throttle" control="THROTTLE"/>
    <control-input axis="/controls/engines/engine[0]/condition" control="CONDLEVER"/>
    <control-input axis="/controls/engines/engine[1]/starter" control="STARTER"/>

A propeller configuration may have only one turbine-engine sub-element.

Currently it's OK to have engine control elements live inside the propeller element tags but not inside the turbin-engine tags, because the YASim parser plays loose with XML components. But this is not a good idea. ADVANCE is a propeller control, while the other three are engine controls. At some point someone may revise the parser to act more strictly, so it would be wise to position controls in their logical container elements.

Turboprop Basics

A turboprop uses a relatively small turbine engine to turn a shaft which is used to turn a propeller. The main advantage of a turboprop is its ability to move a lot of air efficiently at low velocities. This is the same effect as a helicopter rotor, turned sideways for thrust rather than lift. A turboprop engine produces an exhaust just like a turbofan engine, but in modern turboprops very little of this exhaust contributes to thrust. The majority of thrust comes from the propeller.

The turbine's easiest work conditions are at sea level on a cool day. There's lots of air to play with and the compressor doesn't have to work very hard to feed air into the combustion chambers. Air pressure decreases as altitude or ambient temperature increases, so in those conditions the compressor has to work harder to cram the same mass of air into the engine. The compressor spins faster, parts get hotter, and air exiting the compressor gets hotter. At some point the turbine's material and RPM (thermodynamic) limits will be reached and if exceeded, the turbine will melt or the blades will fly apart. The engine's safe thermodynamic operating limit is called the thermal rating.

There's another limit on power-- the strength of the propeller gear train and the engine mount that must handle the engine's torque. This is expressed in shaft horsepower (SHP), the maximum power that can be delivered to the propeller. The output of many turbine engines is "flat-rated" to this limit, which is generally much lower than the turbine's thermodynamic limit.

At lower altitudes (or lower OAT) the flat-rated engine is capable of delivering more power than the gearbox can handle and so power must be limited. But at higher altitudes this extra power means better high-altitude or hot weather takeoff ability and better cruise performance. Engines lacking a flat-rating will see their performance degrade with altitude and temperature, starting at sea level. There is no spare margin for engine performance. The effect of flat-rating is a little like turbocharging on a piston engine, where the wastegate limits engine power up to a certain altitude to prevent exceeding the limits of the engine at lower altitudes.

Armed with a little information about turboprops, let's look at YASim's implementation.

Turbine Engine Attributes

These are the settings that live inside the <turbine-engine> tag.

n2-low-idle (default 50)
n2-high-idle (default 70)
n2-max (default 100)

The N2 settings are optional, but other settings will have to be populated with values.

The YASim README document does not list n2-low-idle, n2-high-idle, or n2-max. Instead it lists only min-n2 and max-n2. Unfortunately (and unsurprisingly) the README document does not agree with the YASim codebase. Use the attributes shown above. YASim will ignore settings for min-n2 or max-n2.

Note that there is no spool-time attribute. Unlike YASim jet engines, turbine spool-time change appears to be fixed.

Engine Power Attributes

The power attribues are all related:


There are no defaults, so be sure to provide reasonable values. Internally the calculations are really about torque but the external references are SHP (shaft horsepower).

In YASim, maximum turbine engine power output is calculated using engine power (eng-power) and altitude (alt). This is essentially setting the engine's thermal rating. So if you give YASim the values eng-power="800" and alt="7200", you are saying that the engine will produce 800 SHP at 7200' at standard temperatures at a given RPM. What happens at other altitudes and temperatures? At altitudes higher than 7200', engine power at the same RPM will decrease. At altitudes below 7200', engine power will increase. At sea level, the output would be a whopping 1700 SHP. This is where flat-rating comes in.

The flat-rating attribute is used to place a cap on power. A YASim turbine engine designed to produce 800 SHP at 7200' will deliver almost 1700 SHP at sea level. That kind of power would destroy the gearbox. If the engine is flat-rated at 620 SHP, then power will always be restricted to no more than 620 SHP. Above 7200', calculated power will begin to fall from 800 SHP. But for several thousand feet we're still getting the maximum allowed ouput before there's any power falloff. At altitudes a bit greater than 9000' the power will have fallen to 620 SHP, at which time true power output will begin to decline as the aircraft gains more altitude.

Flat-ratings are not hard to find for common turboprop engines. The thermal ratings are more difficult to find or estimate. One method is to simply set engine power to the flat rating and experiment with altitude settings via flight tests until you get the desired cruise and ceiling performance.

Propeller RPM and Turboprop Engines

If you have experience with YASim piston engines, you may be expecting to set a gear ratio for turboprops. YASim turboprop configuration doesn't work the same way. When using a turboprop in YASim, set the turbine RPM setting to the maximum RPM of the propeller:


Don't set a gear ratio for the propeller. This isn't intuitive, especially if you're used to YASim piston engines, so be careful. There is no default, so always set the eng-rpm value. There is no RPM setting for the engine's internal N2 spool.

A real turbine engine's internal RPM is geared down to produce an RPM suitable for a propeller. For example, a turbine might be turning at 4500 RPM, but the geared propeller might be turning at 2200 RPM. Governed turboprop propeller speeds are typically 1500 to 2500 RPM so set your YASim propeller governor speeds appropriately.

N2 Idle Settings

YASim allows you to specify the settings for the N2:

n2-low-idle (default 50)
n2-high-idle (default 70)
n2-max (default 100)

These values set the upper and lower bounds of the output shaft speed. The use of these values is explained below in more detail in the section related to the condition lever.

Be sure to note that the YASim README document incorrectly lists the attributes min-n2 and max-n2 rather than the above attributes. At some point someone likely updated YASim and failed to update the README. Do not use min-n2 or max-n2.

Brake Specific Fuel Consumption

BSFC is the rate of fuel consumption divided by the power produced, a measure of fuel efficiency expressed in lbs/hr per horsepower.

bsfc (defaults to 0.5)

This value is essentially a multiplier to fuel flow (after conversion to kg/s/watt). The calculation is simple:

fuel flow = torque * RPM * bsfc

You can use BSFC to adjust the fuel consumption, or you can modify the Nasal script that handles fuel consumption for YASim aircraft.

The default value is rather low. A better default for common turboprop engines would be 0.55 to 0.6. The PT6A models commonly used in aircraft like the King Air and Twin Otter typically have a bsfc of about 0.6.

Turbine Engine Control Input Subelements

Turboprop engine controls can differ considerably from piston engines. The "throttle" of a turboprop is often called "power" and is commonly combined with other functions like reverse thrust. Some turboprops have a propeller RPM control, while others combine this function with another lever. Turbine engines will often have an additional lever called the "idle condition lever". The purpose of this lever requires a little background information.

Turbines have internal compressors or "spools" which spin at 30,000 RPM or higher. They require time to spool-up or spool-down in response to power setting changes. An aircraft on approach might require a sudden increase in power in the event of a go-around. A turbine that is idling will take precious seconds to spool-up to full power. To address this, many turbines have a "ground idle" condition setting and a "flight idle" setting. Ground idle is simply a lower N2 RPM than flight idle. If flight idle were used on the ground, the aircraft would have too much power when at rest or maneuvering at taxi speeds, accelerating too rapidly. So the pilot selects ground idle when at rest or taxiing, and flight idle for other conditions.

The propeller "ADVANCE" control is the same for both piston and turbine engines, being a function of the propeller element, not the turbine-engine sub-element

YASim turbine engines use the "THROTTLE" control similar to piston-driven configurations. A real turbine engine has no carburetor or throttle, but the result is effectively the same, especially with a little scripted aid. The developer may have to customize portions of the throttle/power control range to simulate other features such as reverse thrust.

The Condition Control

Turbine engines have an additional control, "CONDLEVER".

  <control-input axis="/controls/engines/engine[0]/condition" control="CONDLEVER"/>

The condition control has two functions in YASim. When set to less than 0.001, the control operates as a fuel cut-off switch. Fuel is available at any setting equal to or greater than 0.001. Note that this operates in addition to the usual fuel state property. Both must be valid for the engine to be considered "running".

The second function serves to regulate the minimum idle setting of the N2 spool. Idle speeds are determined by n2-low-idle, n2-high-idle and the value of the CONDITION control. The minimum idle speed is calculated this way:

min idle = n2-low-idle + (n2-high-idle - n2-low-idle) * CONDITION

where condition can range from 0 to 1. A value of 0.001 or less is idle cut-off, so in in practice CONDITION will range from some >0.001 to 1.

What does this mean? If CONDITION is near 0, minimum idle will be very close to n2-low-idle. If CONDITION is 1, minimum idle will be n2-high-idle. If CONDITION is 0.5, minimum idle will be half way between n2-low-idle and n2-high-idle.

The value for n2-max determines the maximum speed the spool will attain, so speeds will always vary between the minimum idle and n2-max.

Note that it isn't required that a turbine engine have a condition control. If the control is not defined, condition defaults to 1. If the control is used, condition should always be set to 1 for approach and cruise settings.

YASim's somewhat limited turbine control options won't cover all the possible real turbine control options, but with some clever scripting many turbine controls can be adequately simulated.

Reverse Thrust

YASim currently has no ability to reverse the thrust of a propeller. Until that functionality is added, it's still possible to simulate reverse thrust by using YASim thrusters. Syd Adam's has a good example of this in his DHC-6 Twin Otter model.

Residual Thrust

The turboprop engine is built around a gas turbine which can produce some thrust from its exhaust output depending on the design. In older turboprops this "residual" thrust could be considerable. For example, one model of the Bristol Proteus engine of the early 1950's produced 2500 SHP at sea level plus 820 lbs of jet thrust. For many modern turboprop configurations, residual thrust velocity is low and contributes little or no useable thrust. Many modern engines are very efficient and have already reclaimed most of the power from the turbine output.

For most modern situations you can simply ignore the problem of residual thrust. Some turboprop engines will list output in terms of ESHP (Equivalent Shaft Horsepower) which sums the propeller shaft horsepower and the thrust horsepower produced by the turbine exhaust. Using ESHP for engine output isn't totally realistic since the portion of thrust from exhaust has no torque component, but if ESHP is not terribly greater than SHP then it's not unreasonable to use it for a power rating.

If residual thrust is a significant component and the thrust factor is known, it's possible to use a simple YASim "thruster" element in tandem with a turboprop propeller element. This will require some additional scripting to tie the two control systems together.

Engine Startup/Shutdown

A YASim turboprop engine is "running" if both of these conditions are satisfied:

a) fuel is available (engines/engine[n]/out-of-fuel = false)
b) condition is >= 0.001 (controls/engines/engine[n]/condition)

As long as the engine has fuel and condition is not in the cutoff position, the YASim turbine engine is running. Toggle the fuel supply off, and the engine stops running. Toggle the fuel supply on, and the engine is suddenly running again. The condition control has a similar effect. If the engine isn't using a condition control, then the condition property will be ignored (internally it defaults to 1) and only the out-of-fuel property will matter, much like a YASim jet engine.

YASim gives no provisions for anything fancier than this, but it's enough to provide the tools for scripted controls to provide a realistic startup. A simplified startup procedure for a PT-6 engine goes something like this:

engage the electric starter (which should also engage the igniters)
when N1 reaches 15%, move condition lever from fuel cut-off to low idle
inter-turbine temperature (ITT) should start to rise, RPM should start to rise
watch for N1 to rise, at 50%, disengage the starter

This can all be handled by Nasal scripts. YASim does not model the N1 spool, so your scripts will have to do that. Fortunately this is not difficult using the Nasal "interpolate" function. In the above procedure, the only interaction with YASim parameters is in step 2, where after N1 reaches 15% you would set both out-of-fuel and condition properties for the engine.

For an example of a scripted startup procedure, see my MD-81 model. Though it is a JT8D jet engine simulation, the Nasal methods used can be simplified and adapted for a turbine startup.