# engines.cfg This page contains various notes related to some of the functionality derived from the [engines.cfg](../engines.cfg/) sections and parameters.     ### Note On Time Constants And Tuning Constants When setting up the [engines.cfg](../engines.cfg/), *regardless of the engine type*, you will be using some general parameters which will be affected by *time constants* (suffixed with `_tc`) and *tuning constants* (suffixed with `_tuning_constant`). These parameters are used to perform **integrations** by the simulation to compute time dependent values, typically taking the form of: $$ value(t+dt)=value(t)+(target\\_value \times tuning\\_constant - value(t))\times dt \times \textrm{tc} $$ Where: - \(dt\) is the time step that is given by the simulation for each frame (delta time). - \(target\\_value\) is the value calculated using the current simulation conditions.   In these integrations, the *tuning constant* acts as a multiplier on the \(target\\_value\) thus increasing the final value. This is essentially the same effect as increasing the target value given in whichever parameter or table dictates the \(target\\_value\).   The *time constant*, however, has a very different effect. It does not modify the final value, but instead it controls the rate at which the value will be evaluated towards the \(target\\_value\).     ### Notes On Emergency Boost The emergency boost system will work in two "modes" depending on whether the `emergency_boost_mp_damage` parameter has been set to anything other than 0 or not. When set to 0, boost calculations will be done using the legacy FSX time counter: - for water and methanol-water injection: \(Elapsed\\_time = Elapsed\\_time + (deltaT \times \frac{current_rpm}{max_rated_rpm})\) - for {{< glossterm >}}wep{{< /glossterm >}}: \(Elapsed\\_time = Elapsed\\_time + deltaT\) {{< callout context="note" title="NOTE" icon="outline/bulb" >}} `deltaT` here is the "Delta Time" value, which is the time that has elapsed between the last simulation frame and the current simulation frame. See [here](https://drewcampbell92.medium.com/understanding-delta-time-b53bf4781a03 "Understanding Delta-Time") for a more in-depth explanation. {{< /callout >}}   When setting `emergency_boost_mp_damage` to a value that is greater than 0, it will enable the Microsoft Flight Simulator 2024 time counter which works like this for methanol-water injection, water injection, **and** {{< glossterm >}}wep{{< /glossterm >}}: \(Elapsed\\_time = Elapsed\\_time + (deltaT \times \frac{current_manifold_pressure}{emergency_boost_mp_damage})\)   Considering that a manifold pressure above the damage threshold will accelerate the counter, one should take into account the desired upper limit for manifold pressure when setting the `max_emergency_boost_time`.   As an example: let's consider an aircraft where going above 61{{< glossterm >}}inhg{{< /glossterm >}} of manifold pressure will start damaging the engine and emergency boost can allow for a maximum of 67{{< glossterm >}}inhg{{< /glossterm >}}. If one wants to be able to spend 315 seconds at 67{{< glossterm >}}inhg{{< /glossterm >}} then `max_emergency_boost_time` should be set to: ``` cpp max_emergency_boost_time = 315 * (67/61) = 315 * 1.098 = 346 ``` To get the current elapsed time since the emergency boost has been activated, you can use the SimVar `RECIP_ENG_EMERGENCY_BOOST_ELAPSED_TIME`.     ### Notes On Supercharger In legacy FSX, the supercharger - activated using the `supercharged` parameter - used a calculation that was actually lacking an essential parameter: $$\textrm{boost} = (supercharger\\_boost\\_high\\_end - supercharger\\_boost\\_low\\_end) \times Throttle\\_Position$$   In this formula, the `supercharger_boost_low_end` parameter is not used at all. In Microsoft Flight Simulator 2024 this has been rectified and you can enable the use of the correct formula by enabling the `new_supercharged` parameter in the `engines.``cfg` file, using one of the following values:   - 1: This will make the simulation use a fixed formula to calculate the supercharger boost using the existing legacy supercharger parameters `supercharger_boost_high_end` and `supercharger_boost_low_end`. Boost will then be calculated using the following formula: $$\textrm{boost} = (supercharger\\_boost\\_high\\_end - supercharger\\_boost\\_low\\_end) \times Throttle\\_Position + supercharger\\_boost\\_low\\_end$$   - 2: This will permit the simulation to have multi speed support for the supercharger using the following parameters: `supercharger_altitude_gear.N`, `supercharger_boost_high_end_gear.N`, `supercharger_boost_low_end_gear.N`. This system will allow for a maximum of 5 gears. As an example, if a two speed supercharger is needed then the CFG parameters would have this structure: ``` cpp supercharger_altitude_gear.1 = [VALUE] supercharger_boost_high_end_gear.1 = [VALUE] supercharger_boost_low_end_gear.1 = [VALUE] supercharger_altitude_gear.2 = [VALUE] supercharger_boost_high_end_gear.2 = [VALUE] supercharger_boost_low_end_gear.2 = [VALUE] ``` When using the multi-speed supercharger you can monitor which gear is engaged by monitoring the SimVar `RECIP_ENG_SUPERCHARGER_ACTIVE_GEAR`. The supercharger system will continuously check if the current *Pressure Altitude* is superior or equal to the altitude at which each gear should engage in order to automatically switch between the gears. If an altitude is set as -1.0 the gear is considered inactive and the engaging altitude for this gear will not be checked thus preventing the switch to this particular gear (which is why default altitude value is -1.0). When a gear is engaged the boost values corresponding to this gear will be used in the following calculation of boost: $$\textrm{boost} = (supercharger\\_current\\_gear\\_boost\\_high\\_end - supercharger\\_current\\_gear\\_boost\\_low\\_end) \times Throttle\\_Position + supercharger\\_current\\_gear\\_boost\\_low\\_end$$ {{< callout context="caution" title="IMPORTANT!" icon="outline/alert-triangle" >}} When using the "`new_supercharged`" param, the legacy "`supercharged`" parameter must be either set to 0 or removed from the CFG file. {{< /callout >}}     ### Note On Autofeathering If your aircraft is to support auto-feathering, then it is worth knowing the following information to enable you to set it up and use it correctly: - You must have created a dedicated electrical of the type `CIRCUIT_AUTO_FEATHER`. - You will need to set up the `min_n1_for_autofeather_armed` parameter as this will be used to arm autofeathering (if the N1 goes above this value, it will be armed). - You will need to set up the `max_n1_for_autofeather_actuated` value, which is used to unfeather the propeller when the N1 goes above this value. {{< callout context="note" title="NOTE" icon="outline/bulb" >}} Currently you will need to use the alias `max_pct_torque_for_autofeather_actuated` since there is a bug in the code. {{< /callout >}}   Once those have been setup, in the simulation the SimVars `CIRCUIT AUTO FEATHER ON` and `PANEL AUTO FEATHER SWITCH` will need to be set to 1.     ### Note On Propeller Pitch And Throttle The parameter `min_flight_beta_throttle_pos` enables the propeller pitch control algorithm in the **BETA-range** of throttle (power lever), while simultaneously defining a throttle position that forces the propeller to the minimum flight pitch, specified by the `beta_min` parameter. The way this works is that the `min_flight_beta_throttle_pos` value essentially divides the entire range of travel of the throttle into two ranges: - the *normal* position (ie: when the throttle position is greater than the `min_flight_beta_throttle_pos`), in which the propeller pitch is controlled by the governor, in accordance with the prop speed set by the throttle - the *beta* position (ie: when the throttle position is less than or equal to the `min_flight_beta_throttle_pos`), in which the throttle position sets the the propeller pitch using the following guidelines: - When the throttle is at `min_flight_beta_throttle_pos`, the propeller pitch is at `beta_min`. - When the propeller is between `min_flight_beta_throttle_pos` and 0, the propeller pitch is interpolated between `beta_min` and `minimum_on_ground_beta`. - When the throttle is at 0, the propeller pitch is at `minimum_on_ground_beta`. - When the throttle is less than 0 and greater than or equal to the `min_throttle_limit` then the propeller pitch is at `minimum_reverse_beta`. {{< callout context="note" title="NOTE" icon="outline/bulb" >}} Set `tp_high_idle_throttle_pos` to the `min_flight_beta_throttle_pos` if you want a **turboprop** engine to idle in the range of throttle positions between 0 and `tp_high_idle_throttle_pos`. {{< /callout >}}   When `min_flight_beta_throttle_pos` is greater than 0 it will additionally have the following effect on the simulation: - If the throttle is in the **thrust reverse range** (ie, the throttle position is less than 0) *and* `prop_reverse_available` is enabled, then the minimum propeller pitch limitation no longer depends on the throttle position (this is the same as for Microsoft Flight Simulator 2020 aircraft). Thus, if a pilot sharply moves the throttle from the reverse position to position 0 and above, then the propeller blades will no longer exit the reverse mode instantly, but will increase pitch at a limited speed. - When the following conditions are met: - the throttle is greater than 0 *and*: - `prop_reverse_available` is enabled *and*: - one or more landing gear is touching the ground *and*: - the ground type is *not* water: then the minimum propeller pitch limitation is no longer set to the `minimum_on_ground_beta`. Thus, it becomes possible to control the propeller pitch in the BETA-range, regardless of the interaction of the aircraft landing gear with the ground.     ### Note On Propeller Pitch Angle The rate of change for the propeller pitch angle is calculated as follows: $$\textrm(Rate) = NominalRate \times Ratio$$ Where:   - \(NominalRate\) is specified by `governor_prop_pitch_rate`, `feathering_prop_pitch_rate`, `beta_range_prop_pitch_rate`, or `beta_forced_prop_pitch_rate`, depending on the current propeller mode (beta range, governing range, feathering, etc...).   - \(Ratio\) is defined as: - 0 when oil pressure is less than the `prop_pitch_control_min_oil_pressure`. - 1 when oil pressure is greater than the `prop_pitch_control_nominal_oil_pressure`. - \(Ratio = \frac{oil\\_pressure - prop\\_pitch\\_control\\_min\\_oil\\_pressure}{prop\\_pitch\\_control\\_nominal\\_oil\\_pressure - prop\\_pitch\\_control\\_min\\_oil\\_pressure}\) when oil pressure is *between* the minimum and nominal values. - if `prop_pitch_control_min_oil_pressure` is equal to the `prop_pitch_control_nominal_oil_pressure` then \(Ratio\) will be 0 when the oil pressure is *below* this value, and \(Ratio\) will be 1 when the oil pressure is equal to or above this value.   Note that if the `prop_pitch_control_min_oil_pressure` and `prop_pitch_control_nominal_oil_pressure` parameters are not specified - and thus the default values are used - the propeller pitch control behaves as before, with zero nominal oil pressure assumed sufficient for full operation.     ### Note On Propeller RPM Limiter The automatic propeller RPM limiter is designed for **piston engine** aircraft with a *constant speed propeller* and **turboprop** aircraft. It's purpose is to prevent dangerous overspeeding of the propeller beyond its maximum allowed RPM. Such overspeeding typically occurs when the propeller enters a "windmilling" mode, where the propeller spins faster than expected driven by the energy of the incoming airflow during flight, takeoff, or landing. This mainly happens when there is an unfavorable combination of too low a blade pitch angle (propeller in a fine pitch, beta range, or reverse mode) and higher than average engine torque (excess power on the shaft).   The limiter is implemented as two different types over 5 parameters, and they can be used independently *or* together (although it's more likely you'll use one or the other): - Propeller pitch angle governor (for aircraft with a constant speed propeller) - Increases blade pitch to absorb more torque by increasing the blade aerodynamic drag, thus reducing the propeller overspeed. Controlling parameters are: `prop_rpm_limiter_pitch_governor_max_rpm` and `prop_rpm_limiter_pitch_governor_pid`. - Engine fuel flow governor (for turboprop engines only) – Reduces the fuel supply to the engine, thus lowering torque on the propeller shaft. Controlling parameters are `prop_rpm_limiter_ff_governor_max_rpm`, `prop_rpm_limiter_ff_governor_pid`, and `prop_rpm_limiter_ff_governor_active_below_throttle_pos`.   It should be noted that there is also a dedicated debug tool which has been developed to make tuning of *both* limiter types easier, clearer, and more effective. This window can be found by opening the [Engines](../../../devmode/editors/simobject-editor/debug_info/simobject-debug-menu/#engines) debug window, and then selecting [Propeller RPM Limiter Analysis](../../../devmode/editors/simobject-editor/debug_info/propeller-rpm-limiter-analysis/). **IMPORTANT**: For proper initialization and operation of each limiter type, the following conditions must be met: - The *RPM limit* value must be greater than zero - At least one of the PID controller coefficients P or I must be greater than zero. The limiter will not be initialized and will have no effect on the propeller if these conditions are not met.     ### Note On Propeller Rotation Direction The propeller rotation direction will depend on how you have set up the model materials, and how you have set up the available parameters. The following table shows the relationship between the model material used, and the available parameters:   {{< table-wrapper >}} | | Legacy propeller physics | Modern propeller physics | |--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Standard material | The [rotation](../engines.cfg/#rotation) parameter determines both *visual* and *physical* direction. | The [rotation](../engines.cfg/#rotation) parameter determines the *visual* direction, and the `prop_mod_reverse_left`, `prop_mod_reverse_right`, and `prop_mod_reverse_centre`, parameters determine the *physical* direction. | | Propeller material | The [rotation](../engines.cfg/#rotation) parameter determines the *physical* direction, while the Node Z axis determines the *visual* direction. | The Node Z axis determines the *visual* direction, and the `prop_mod_reverse_left`, `prop_mod_reverse_right`, and `prop_mod_reverse_centre`, parameters determine the *physical* direction. | {{< /table-wrapper >}}   In the above table, "legacy" propeller physics is when `prop_mod_use_modern` is set to **false** or `prop_mod_version` is <1. "modern" physics is when `prop_mod_use_modern` is set to **true** or `prop_mod_version` is >= 2.     ### Note On The Fuel Flow PID The functioning of the fuel flow {{< glossterm >}}pid{{< /glossterm >}} (defined using the `fuel_flow_controller_p`, `fuel_flow_controller_p`, `fuel_flow_controller_p`, `fuel_flow_controller_iboundary`, and `fuel_flow_controller_dboundary`, parameters) will vary depending on a few factors, which we'll outline below:   - For **jet** engines, the {{< glossterm >}}pid{{< /glossterm >}} works different based on the `use_commanded_Ne_table`: - If *true*, the fuel flow {{< glossterm >}}pid{{< /glossterm >}} controller regulates corrected N2, driving it toward commanded Ne. - if *false*, the fuel flow {{< glossterm >}}pid{{< /glossterm >}} controller regulates N1, driving it toward commanded Ne - See the [Note On Computing Commanded Ne](engine-info/#note_commanded_ne) for more information.   - For **turboprop** or **helo-turbine** engines, the fuel flow {{< glossterm >}}pid{{< /glossterm >}} controller regulates corrected N1, driving it toward commanded Ne.   For more information on {{< glossterm >}}pid{{< /glossterm >}} functionality, please see here: [PID Parameters](../../../samples-tutorials/primers/pid-primer/#parameters)     ### Note On Computing Commanded Ne The `mach_0_corrected_commanded_ne_table` and `mach_hi_corrected_commanded_ne_table` tables are only used when the `use_commanded_Ne_table` is set to 1 (TRUE). In that case they should be filled in where: - The top row of the table is the **low/high Mach** value in column 1, followed by the **inverted pressure ratio** \(\frac{1}{delta}\) values in ascending order (and therefore in ascending pressure altitude) in all subsequent columns. - All other rows of the table have the **[Effective Throttle](#effective-throttle) position** in the first column, followed by the **Commanded Ne** values corresponding to the inverted pressure ratio (1/delta) values in the 1st row of the table.   The following images show a schematic of how those tables would look if added into a spreadsheet: {{< image-center src="images/5_Content_Config/CFGs/engines/engine_1_table_example.png" alt="Schematic Of The mach_0_corrected_commanded_ne_table Parameter Contents" >}} {{< image-center src="images/5_Content_Config/CFGs/engines/engine_2_table_example.png" alt="Schematic Of The mach_hi_corrected_commanded_ne_table Parameter Contents" >}}   When using these tables, the **commanded Ne** is computed in three steps: 1. First, we obtain the commanded Ne for **inlet Mach = Mach\_low** from the first table (`mach_0_corrected_commanded_ne_table`) for the given [Effective Throttle](engine-info/#effective-throttle) position and pressure altitude (using the inverted pressure ratio (\(\frac{1}{delta}\)) value). 2. Next, we obtain the commanded Ne for **inlet Mach = Mach\_high** from the second table (`mach_hi_corrected_commanded_ne_table`) for the given [Effective Throttle](#effective-throttle) position and pressure altitude (using the inverted pressure ratio (\(\frac{1}{delta}\)) value). 3. Finally, we compute the commanded Ne for the target **Inlet Mach** as a linear interpolation between the values found for Low Mach and High Mach. If the target **Inlet Mach** is outside this range, the value is linearly extrapolated (for more information on Inlet Mach, please see the [Note On Inlet Parameter Calculations](engine-info/#inlet_param_note)).   It is worth noting the following when using these tables: - As with any 2D table, the data must be arranged such that the inverted pressure ratio (\(\frac{1}{delta}\)) values in the first row and the [Effective Throttle](#effective-throttle) position values in the first column are in *ascending* order. This is why the inverted delta is used, as it increases with altitude. - Because interpolation within each table is performed independently, the inverted pressure ratio (\(\frac{1}{delta}\)) and [Effective Throttle](#effective-throttle) position breakpoints in the first table do not have to match those in the second table. - Low Mach and High Mach may be arbitrary but *must not be equal*. - Please avoid cases where the interpolation results from the first and second tables are equal for the same throttle position and pressure altitude. In such cases, the engine may incorrectly switch to idle. - Extrapolation beyond the table limits is not performed, so you should expand the table boundaries sufficiently to prevent [Effective Throttle](#effective-throttle) position and pressure altitude from exceeding the defined ranges.     #### Effective Throttle In many places in the simulation calculations, the **effective throttle** is used over the *actual* throttle position. This is an internal parameter that is calculated as follows: - If user throttle input ≥ 0 then it's: \(min(\frac{throttle}{AB\\_threshold}, max\\_limit) \times life\\_factor\) - If user throttle input < 0 then it's: \(\\throttle_input \times reverse\\_factor \times life\\_factor\) Where: - \(throttle\\_input\) - This is the user-defined throttle lever position input. - \(throttle\) - This represents *either* the **user input** (\(throttle\\_input\)) *or* the **autopilot-commanded throttle value** (when the autopilot is *active*). - \(AB\\_threshold\) - a unitless scalar that depends on afterburner availability, defined using the following table:
ConditionAB_threshold

afterburner_available = 0 OR

afterburner_throttle_threshold ≤ 0 OR

afterburner_throttle_threshold ≥ 1

1

afterburner_available > 0 AND

afterburner_throttle_threshold > 0 AND

afterburner_throttle_threshold < 1

afterburner_throttle_threshold

- \(max\\_limit\) - a unitless limit that depends on afterburner availability, defined using the following table:
Conditionmax_limit

afterburner_available = 0 OR

afterburner_throttle_threshold ≤ 0 OR

afterburner_throttle_threshold ≥ 1

There is no limit

afterburner_available > 0 AND

afterburner_throttle_threshold > 0 AND

afterburner_throttle_threshold < 1

1
- \(reverse\\_factor\) - a unitless scalar that depends on the engine type: - Jet = 1.6 - Turboprop = 1.5 - Helo-turbine = 0 - \(life\\_factor\) - a unitless coefficient that depends on engine damage, from 0 (fully damaged) to 1 (no damage).     ### Note On Inlet Parameter Calculations This section details the internal parameters and equations used for jet / turboprop / helo-turbine engines using the **Inlet Mach number**, so that you can better understand how the simulation works and tweak your [engines.cfg](../engines.cfg/) file parameters accordingly.   This **Inlet Mach number** number is *either* the current {{< glossterm >}}mach{{< /glossterm >}} value, *or* the **inlet Mach limit**, which is found based on the following parameters: - If `supersonic_inlet` is 1 (TRUE), then the inlet Mach limit will be the value set for the `supersonic_inlet_design_mach`. - If `supersonic_inlet` is 0 (FALSE) *and* the `variable_inlet` is 0 (FALSE), then the inlet Mach limit will be 1. - If `supersonic_inlet` is 0 (FALSE) *and* the `variable_inlet` is 1 (TRUE), then the inlet Mach limit will be 0.5. Such that: $$\\texttrm{Inlet_Mach} = min(Mach, Inlet\\_Mach\\_limit)$$   This Inlet Mach number is used in the following calculations for Jet (turbofan), Turboprop and Helo-turbine (turboshaft) engines: - When calculating the total temperature ratio ([θ Total](engine-info/#theta-total)) and total pressure ratio ([δ Total](engine-info/#delta-total)). - As an limit on the `n2_and_mach_to_epr_table`. - For enforcing a lower limit of target {{< glossterm >}}epr{{< /glossterm >}} ≥ 1.0 when Inlet Mach < 0.05.   And additionally, the Inlet Mach number is used in these calculations *only* in Jet engines: - As an input for interpolating or extrapolating Commanded Ne between the outputs of two tables: `mach_0_corrected_commanded_ne_table` and `mach_hi_corrected_commanded_ne_table`. - As an input to the `n2_to_n1_table` for calculating **target corrected N1** and the value exposed via the SimVar `TURB ENG COMMANDED N1`. - For computing a correction to **target corrected N1** and to the value exposed via the SimVar `TURB ENG COMMANDED N1`, using the `mach_influence_on_n1` parameter, when `use_n2_to_n1_table` is 0 (FALSE): \(\textrm{final_value} = initial\\_value + correction\) \(\textrm{correction} = max(0, mach\\_influence\\_on\\_n1 \times inlet\\_Mach)\) - As an input to the `corrected_airflow_table` when `supersonic_ram_drag` is 0 (FALSE).     #### θ Total The **total temperature ratio** (θ total) is used internally and calculated as: - \(θ = frac{OAT}{To}\) - \(θ_total = θ \times (1 + 0.2 \times inlet\\_Mach^2)\) Where: - \(θ\) is the temperature ratio (unitless). - \(OAT\) is the outside ambient air temperature ({{< glossterm >}}rankine{{< /glossterm >}}). - \(To\) is the standard air temperature at mean sea level ({{< glossterm >}}msl{{< /glossterm >}}) according to the International Standard Atmosphere (ISA): 518.67 {{< glossterm >}}rankine{{< /glossterm >}} (15 °C)   This total temperature ratio (θ\_total) is used in the following calculations: - \(N1 = N1\\_corrected \times \sqrt{θ\\_total}\) - \(N2 = N2\\_corrected \times \sqrt{θ\\_total}\) - \(ITT = ITT\\_corrected \times θ\\_total\) - \(EGT = EGT\\_corrected \times θ\\_total\)   Note that in ram drag calculations, the total temperature ratio for determining airflow is computed using the aircraft {{< glossterm >}}mach{{< /glossterm >}} number rather than the **inlet Mach** number: - \(θ\\_total = θ\\_total = θ \times (1 + 0.2 \times Mach^2)\) - \(airflow = \frac{airflow\\_corrected \times δ\\_total}{\sqrt{θ\\_total} }\) - \(ram\\_drag = \frac{TAS \* airflow}{g}\) Where: - \(Mach\) is the aircraft (*not* inlet) {{< glossterm >}}mach{{< /glossterm >}} number. - \(airflow\) / \(airflow\\_corrected\) is the airflow through the engine ({{< glossterm >}}lbs{{< /glossterm >}} per second). - \(TAS\) is the true air speed ({{< glossterm >}}ft{{< /glossterm >}} per second). - \(g\) is the standard acceleration due to gravity (~32.174 {{< glossterm >}}ft{{< /glossterm >}}/sec^2 / 9.80665 m/sec^2) - \(δ\\_total\) is the total pressure ratio (unitless).     #### δ Total The **total pressure ratio** (δ total) is used internally and calculated as: - \(δ = \frac{P}{Po}\) - \(δ\\_total = max(0.05, δ) \times (1 + 0.2 \times M^2)^3.5 \times inlet\\_efficiency \times Mach\\_losses\) Where: - \(δ\) is the Pressure ratio, \[unitless\] - \(P\) is the Ambient static air pressure, in the same units as \*\*Po\*\* - \(Po\) is the Standard air pressure at mean sea level (MSL) according to the International Standard Atmosphere (ISA): 1013.25 mBar (760 mmHg, ~29.92 inHg, ~ 2116.2 psf) - \(M\) is defined as: - the aircraft Mach number when `supersonic_inlet` is 1 (TRUE). - the inlet Mach number when `supersonic_inlet` is 0 (FALSE). - \(inlet\\_efficiency\) is a unitless correction coefficient computed based on engine inlet configuration parameters and - \(aircraft\) is the Mach number: {{< table-wrapper >}} | Condition | inlet\_efficiency | |--------------------------------|------------------------------------------------------------------------------------------------| | `supersonic_inlet` = 0 (FALSE) | 1 | | `supersonic_inlet` = 1 (TRUE) | Interpolated using `supersonic_inlet_efficiency_correction_table`, with aircraft Mach as input | {{< /table-wrapper >}} - \(Mach\\_losses\) is a unitless correction coefficient computed based on engine inlet configuration parameters and aircraft Mach number:
ConditionMach_losses
supersonic_inlet = 0 (FALSE) OR Mach < 11
supersonic_inlet = 1 (TRUE) AND Mach > 5 AND supersonic_inlet_hypersonic = 1 (TRUE)(-0.0084 Mach^2 - 0.0028 Mach + 0.9031) / 0.89
Otherwise, meaning: supersonic_inlet = 1 (TRUE) AND Mach ≥ 1 AND (Mach ≤ 5 OR supersonic_inlet_hypersonic = 0 (FALSE))1 - 0.075 * (Mach - 1)^1.35
  Note that due to the lower bound constraint of δ ≥ 0.05, δ total becomes independent of altitude at pressure altitudes exceeding approximately 67450{{< glossterm >}}ft{{< /glossterm >}} (20559 m).   The total pressure ratio (δ\_total) is used in the following calculations: - \(gross\\_thrust = gross\\_thrust\\_corrected \* δ\\_total\) - \(airflow = \frac{airflow\\_corrected \* δ\\_total}{\sqrt(θ\\_total)}\) - \(ram\\_drag = frac{TAS \* airflow}{g}\) Where: - \(airflow\) / \(airflow\\_corrected\) is the airflow through the engine ({{< glossterm >}}lbs{{< /glossterm >}} per second). - \(TAS\) is the true air speed ({{< glossterm >}}ft{{< /glossterm >}} per second). - \(g\) is the standard acceleration due to gravity (~32.174 {{< glossterm >}}ft{{< /glossterm >}}/sec^2 / 9.80665 m/sec^2)     ### Note On Ram Drag Ram drag is the drag generated by the air that a turbine engine ingests to produce thrust. Essentially, all the air entering the engine inlet generates drag and that drag is calculated through the following formula: $$D_{ram}=\frac{dm_0}{dt} \times V_0$$ Where: - \(\frac{dm_0}{dt}\) is the mass flow (kg/s or lb/s). - \(V_0\) is the speed of the incoming airflow (or mass flow). Note that "airflow" is an interpolation of the parameter `corrected_airflow_table` multiplied by the parameter `inlet_area`, both of which can be set in `engines.cfg`. Because we need to be able to tune this ram drag effect we are simulating this formula like this: $$D_{ram} = \frac{a(\rho,P) \times Ma_{inlet} \times airflow}{g}$$ Where: - \(a(\rho,P)\) is the speed of sound in the current flight conditions - \(Ma_{inlet}\) is the [Inlet Mach number](engine-info/#inlet_param_note) - \(airflow\) is a term dependent on the inlet design and computed through interpolation and correction using [δ Total](#delta-total) and \(g\) the gravity constant of Earth. - the product \(a \times Ma_{inlet}\) gives the previously stated \(V_0\).   By default the simulation will compute the ram drag for a turbine engine using a maximum mach value of 1. However if you wish to add supersonic (even hypersonic) planes to the simulator then this will have the consequence of creating an inferior airflow speed leading to less drag than there should be. To correct this issue, the parameter `supersonic_ram_drag` should be set to 1 (true) in the `[TURBINEENGINEDATA]` section of the CFG file for the aircraft. Setting it to 1 will allow for the simulation to use the *flight* Mach number instead of the *inlet* Mach number thus removing the default Mach 1 limit.     ### Note On Corrected Values The various parameters that use corrected values have their calculations based on the following paper: 1. [**GAS TURBINE PARAMETER CORRECTIONS**, by **Allan J. Volponi**](https://www.researchgate.net/publication/339598361_Gas_Turbine_Parameter_Corrections) 2. January 2020 3. *DOI*: 10.1007/978-3-030-41076-6 4. *ISBN*: 978-3-030-41075-9