flight_model.cfg - [FUEL_SYSTEM]

This section is for defining the aircraft's fuel system in detail. In general, the fuel system should be set up through the Aircraft Editor, and only tweaked if required through the flight_model.cfg file using the parameters on this page.

 

The [FUEL_SYSTEM] section is primarily for use in complex aircraft models where the simple [FUEL] system doesn't give enough control or flexibility for the aircraft systems. The parameters within the [FUEL] section should be used for simple aircraft or those that require a basic fuel system setup, or for maintaining old aircraft (like ones imported from FSX). However there is one exception: the fuel_type parameter is required by the detailed fuel system, although all other [FUEL] parameters can be omitted.

 

This section only has a few parameters, but each parameter can be repeated a number of times if required, where N in the parameter name corresponds to a new item of that parameter type. For example, the Engine parameter can go from Engine.1 to Engine.N and each one can be defined separately.

 

At its most basic the fuel system can be thought of as a series of "components" connected by "lines", with the simplest setup being a tank, a fuel line, and an engine. However you can create far more complex fuel system definitions that include multiple components like pumps, junctions, valves, etc... and multiple line connections between them. The system is also dynamic and can be set to respond to certain "trigger" conditions. For example, should a tank become empty, you can trigger an event to close the valve to that tank and open the valve to another tank.

NOTE: You can only connect components to lines and lines to components... You cannot connect two components or two lines together.

These different parts of the system are all setup using the appropriate values within the hash maps required by each of the listed parameters.

IMPORTANT: Connections between the different components are made using the "Name" key in the various hash maps that are associated with each parameter, and so you should try and ensure a clear and consistent naming methodology to help keep the way that the different components connect as clear as possible.

 

The available fuel system parameters are:

 

Parameter Description Type Required
Version

This value corresponds to the various versions of the modern fuel system and is used to permit you to maintain compatibility with already published aircraft as the modern fuel system evolves. The following values are currently accepted:

 

  1. 1: uses the Fuel System as released in SimUpdate 8 - this was the initial release of the new fuel system and had a bug where (under some conditions) an aircraft would have "infinite" fuel.
  2.  
  3. 2: uses the Fuel System as updated in SimUpdate 9 - this update fixed the infinite fuel bug, but had an issue with reduced fuel flow through junctions (under some conditions). 
  4.  
  5. 3: uses the Fuel System as updated in SimUpdate 10 - this update fixed the reduced fuel flow through junctions bug, however it had an issue loading and saving of junction settings inside of FLT files (sometimes it would save the wrong value which meant you would be on the wrong option when loading the file).
  6.  
  7. 4: uses the Fuel System as updated in SimUpdate 11 -  this update fixed the issue loading and saving junction setting inside of FLT files.
  8.  
  9. Latest: Using this value means that the aircraft will always use the latest available version of the fuel system. Note that using this option is potentially problematic when publishing an aircraft to the Marketplace, as it may mean that a future SimUpdate could break how the fuel system works.
String Yes
APU.N

This defines an APU for the fuel system. You can have multiple APU's per system, numbered from 1 upwards. Details on the APU map contents are given here: APU.N

Hash Map

(see Data Types for more information)

No
Engine.N

Defines one or more engines that form a part of the fuel system. Details on the engine map contents are given here: Engine.N

Tank.N

Defines one or more fuel tanks that form a part of the fuel system. Details on the tank map contents are given here: Tank.N

Line.N

Defines one or more lines that form a part of the fuel system. Details on the line map contents are given here: Line.N

Junction.N

Defines one or more junctions that form a part of the fuel system. Details on the junction map contents are given here: Junction.N

Valve.N

Defines one or more valves that form a part of the fuel system. Details on the valve map contents are given here: Valve.N

Pump.N

Defines one or more fuel pumps that form a part of the fuel system. Details on the pump map contents are given here: Pump.N

Trigger.N Defines one or more triggers that will be used to change components within the fuel system based on certain conditions. Details on the trigger map contents are given here: Trigger.N
Curve.N A 1D table of values. You can define multiple curves for a fuel system, starting at N = 1, and the curves may be used in multiple different parameters. Details on the table contents are given here: Curve.N

1D Table of Values

(see Data Types for more information)

Yes

NOTE: For all parameters, the "Title" key is localisable, but it is also optional and can be omitted in most cases. Currently only the Tank.N title is visible in the Microsoft Flight Simulator UI.

 

 

APU.N

This parameter is used to define one or more APU components to be used in the fuel system. This APU is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

APU.N = Name:<apu_name>#Title:<apu_title>#FuelBurnRate:<burn_rate>

Note that you may have more than one APU, in which case you would increment the N index, starting from 1. A typical example of a single APU definition would be like this:

APU.1 = Name:MainAPU#FuelBurnRate:33

 

Key Value Description Required
Name String The internal name of the APU, which is used to reference it in other components and fuel lines. Yes
Title

String

(Localisable)

The title of the APU to be displayed in the UI, if applicable. No
FuelBurnRate Float The rate at which fuel will be burnt in Gallons per hour. Yes

 

 

Engine.N

This parameter is used to define one or more engine components to be used in the fuel system. This engine is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

Engine.N = Name:<engine_name>#Title:<engine_title>#Index:<engine_index>

Note that you may have more than one engine, in which case you would increment the N index, starting from 1. A typical example for defining engines would look like this:

Engine.1 = Name:LeftEngine#Index:1
Engine.2 = Name:RightEngine#Index:2

 

Key Value Description Required
Name String The internal name of the engine, which is used to reference it in other components and fuel lines. Yes
Title

String

(Localisable)

The title of the engine to be displayed in the UI, if applicable. No
Index Float The index of the engine this fuel system component refers to. This would normally be the same as the index of the component, but can be different if required. Yes

 

The following SimVar is available for this component:

 

 

Tank.N

This parameter is used to define one or more fuel tank components to be used in the fuel system. This tank is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

Tank.N = Name:<tank_name>#Title:<tank_title>#Capacity:<tank_capacity>#UnusableCapacity:<tank_unusable_capacity>#Position:<Z>,<X>,<Y>#InputOnlyLines:<line1_name>,<line2_name>,<etc...>#OutputOnlyLines:<line1_name>,<line2_name>,<etc...>#DropTimer:<tank_timer>#Priority:<tank_priority>

Note that you may have more than one fuel tanks, in which case you would increment the N index, starting from 1. A typical example of a single tank definition would be like this:

Tank.1 = Name:CenterAft
#Capacity:20
#UnusableCapacity:0
#Position:-1.6,-3,-1.5
#Priority:1

 

Key Value Description Required
Name String The internal name of the tank, which is used to reference it in other components and fuel lines. Yes
Title

String

(Localisable)

The title of the fuel tank to be displayed in the UI, if applicable. No
Capacity Float The capacity of the fuel tank, in Gallons. Yes
UnusableCapacity Float The part of the total capacity that cannot be used, in Gallons. Yes
PressureCurve Curve Index Here you can assign a Curve.N index. This curve will be used to ensure that the tank itself generates some line pressure depending on how full it is. The curve should be formatted as:
volume:psi, volume:psi, volume:psi, etc...
Volume is simply a Percent Over 100 where 0 is empty and 1 is full. For example, a curve of 0:0, 1:15 would mean that the tank will generate 15psi of pressure when full and then linearly go down to 0psi as the level goes down.
 
Position

List

(3 Floats)

This sets the position of the tank relative to the Datum Reference Point. Value is a comma separated list with the format Z, X, Y, and it is measured in ft. Yes
InputOnlyLines

List

(N Strings)

This is a comma separated list of lines that are to be considered as input only. You can have a maximum of 10, and lines are given by their name, for example:

InputOnlyLines:Eng1ToTank2,Xfer1ToTank2,Xfer1ToTank2_2

No
OutputOnlyLines

List

(N Strings)

This is a comma separated list of lines that are to be considered as output only. You can have a maximum of 10, and lines are given by their name, for example:
OutputOnlyLines:TankCenterToCenterTankPump1,TankCenterToCenterTankPump2
No
DropTimer Float Sets the timer that will be started when one of the RELEASE_DROP_TANK_ALL, RELEASE_DROP_TANK_1 or RELEASE_DROP_TANK_2 events are called for the tank. This is the time - in seconds - that the user has to validate the jettison command for the tank (only valid for external tanks). No
Priority Integer This controls the order in which fuel tanks are filled (when using the Fuel window), as well as the order they will be used (when skipping in time). The higher the number the higher the priority and tanks with a higher priority will be filled first, and used last. For example: A tank with the priority 4 will be filled before a tank with priority 2 and after a tank with priority 5, and it will be used after the priority 2 tank but before the priority 5 tank. No

 

The following SimVars are available for this component:

 

 

Line.N

This parameter is used to define one or more fuel lines to be used in the fuel system. This line is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

Line.N = Name:<line_name>#Title:<line_title>#Source:<source_name>#Destination:<destination_name>#FuelFlowAt1PSI:<psi_value>#Volume:<volume_value>#GravityBasedFuelFlow:<gravity_flow_value>

Note that you may have more than one fuel line, in which case you would increment the N index, starting from 1. A typical example of a single line definition would be like this:

Line.1 = Name:TankRightToRightTankPump1
#Source:RightInner
#Destination:RightInnerTankPump1

 

Key Value Description Required
Name String The internal name of the fuel line, which is used to reference it in other components. Yes
Title

String

(Localisable)

The title of the fuel line to be displayed in the UI, if applicable. No
Source String A source component name, where fuel will flow from. Yes
Destination String A destination component name, where fuel will flow to. Yes
FuelFlowAt1PSI Float This is used to calculate the effect of pressure on fuel flow. Value is in lbs per second, and if not set will default to 0.1. No
Volume Float This is the maximum amount of fuel that can be in the line at a given time. Value is in Gallons, and if not set will default to 0.24. No
GravityBasedFuelFlow Float

This controls how fast the fuel will flow under gravity and also flag the line as being setup in such a way that even without pressure the fuel will naturally flow towards the destination. Value is in Gallon per hour.

IMPORTANT! This will only affect how fuel is transferred between tanks, NOT how fuel flows to the engine. Engines require pressure for fuel to flow correctly. 

No

 

The following SimVars are available for this component:

 

 

Junction.N

This parameter is used to define one or more junction components to be used in the fuel system. This junction is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

Junction.N = Name:<junction_name>#Title:<title>#Option:<option>,<option>,<etc>#InputOnlyLines:<line>,<line>,<etc>#OutputOnlyLines:<line>,<line>,<etc>

Note that you may have more than one junction, in which case you would increment the N index, starting from 1. A typical example of a single junction definition would be like this:

Junction.1 = Name:FuelSelector
#InputOnlyLines:LeftInnerToFuelSelector,RightInnerToFuelSelector
#OutputOnlyLines:FuelSelectorToPumpsJunction
#Option:LeftInnerToFuelSelector,FuelSelectorToPumpsJunction
#Option:RightInnerToFuelSelector,FuelSelectorToPumpsJunction
#Option:CenterAftToFuelSelector,FuelSelectorToPumpsJunction
#Option:FuelSelectorToPumpsJunction

 

Key Value Description Required
Name String The internal name of the junction, which is used to reference it in other components and fuel lines. Yes
Title

String

(Localisable)

The title of the junction to be displayed in the UI, if applicable. No
Option

List

(N strings)

Junctions can have one or more option settings, and each one takes a comma separated list of line names. Lines given for each option will be set to open when the option is set, and all others will be set to closed. The order of definition of each Option corresponds to the index of the option, which is used by the FUELSYSTEM_JUNCTION_SET key event to trigger them. If no options are defined then all connected lines will be considered as open. No
InputOnlyLines

List

(N strings)

This is a comma separated list of lines connected to the junction that are to be considered as input only. You can have a maximum of 10, and lines are given by their name, for example:
InputOnlyLines:HandPumpValveToEngineJunction, EngineDrivenPumpToEngineJunction
No
OutputOnlyLines

List

(N strings)

This is a comma separated list of lines that are connected to the junction to be considered as output only. You can have a maximum of 10, and lines are given by their name, for example:
OutputOnlyLines:EngineJunctionToEngine
No

 

The following SimVar is available for this component:

The following key Event is also available:

 

 

Valve.N

This parameter is used to define one or more valve components to be used in the fuel system. This valve is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

Valve.N = Name:<valve_name>#Title:<valve_title>#DestinationLine:<destination_name>#OpeningTime:<time_value>#Circuit:<circuit_index>

Note that you may have more than one valve, in which case you would increment the N index, starting from 1. A typical example of a single valve definition would be like this:

Valve.1 = Name:LeftEngineValve
#OpeningTime:3
#Circuit:1

 

Key Value Description Required
Name String The internal name of the valve, which is used to reference it in other components and fuel lines. Yes
Title

String

(Localisable)

The title of the valve to be displayed in the UI, if applicable. No
DestinationLine

String

The destination line for the valve. If not included, the valve will permit fuel flow in both directions, however if set, then fuel can only flow towards the destination line. No
OpeningTime Float The time, in seconds, that it takes the valve to open/close. Default value is 0.5. No
Circuit

Integer

The index of the electrical circuit that controls the valve. The circuit needs to be of the type FUEL_VALVE (for more information, please see here: circuit.N - Type).

IMPORTANT! This is not the index of the circuit itself, but the index of the circuit of the type CIRCUIT_FUEL_VALVE. For example, if the circuit was defined as follows:

circuit.15 = Type:CIRCUIT_FUEL_VALVE:4
#Connections:bus.2
#Power:3,5,20
#Name:Fuel_P_R2

then the circuit index would be 4, eg:

Valve.2 = Name:Right2Valve
#OpeningTime:3
#Circuit:4
No

 

The following SimVars are available for this component:

The following key Events are also available:

 

 

Pump.N

This parameter is used to define one or more fuel pump components to be used in the fuel system. This pump is defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and has the following structure:

Pump.N = Name:<pump_name>#Title:<pump_title>#Pressure:<pressure_value>#PressureCurve:<curve_index>#TankFuelRequired:<tank_name>#DestinationLine:<line_name>#Type:<type_string>#index:<value>#AutoCondition:<engine_psi_threshold>#PressureDecreaseRate:<decrease_value>

Note that you may have more than one fuel pump, in which case you would increment the N index, starting from 1. A typical example of a single pump definition would be like this:

Pump.1 = Name:HandPump
#Pressure:6
#DestinationLine:HandPumpToHandPumpValve
#Type:Manual
#PressureDecreaseRate:0.05

 

Key Value Description Required
Name String The internal name of the pump, which is used to reference it in other components and fuel lines. Yes
Title

String

(Localisable)

The title of the pump to be displayed in the UI, if applicable. No
Pressure Float This is the pump pressure in psi. Minimum is 0 psi. Yes
PressureCurve

Integer

(Curve Index)

This takes the index N value of a curve defined in the Curve.N section. The curve is the relationship between the percentage of maximum RPM of an engine and the percentage of maximum pressure provided by the pump (the maximum value being defined by the "Pressure" key). This curve is only used when the "Type" key is set to EngineDriven, and it will use the RPM of the engine given in the "Index" key. No
TankFuelRequired String Sets whether the pump requires a fuel tank or not. If a fuel tank name is supplied here, then the pump will automatically shut down when the tank is empty. No
DestinationLine String The line name supplied here sets the direction in which the pump is causing pressure. Yes
Type

String

Sets the type of pump that is being defined. The available strings for this key are:

  • Electric - The pump is driven by an electrical circuit. The circuit used is set by the "Index" key.
  • APUDriven - The pump is APU driven. Requires that the APU is running and will use fuel.
  • EngineDriven - The pump is driven by an engine. The engine to be used is set by the "Index" key.
  • Manual - The pump is a manual one and requires user interaction to generate pressure.
  • Anemometer - The pump is driven by air input with pressure being based on the velocity of the aircraft. The anemometer to be used is set by the "Index" key.
Yes
Index Integer

An index value that corresponds to the following:

  • For electric pumps it is the index of an electrical circuit of the type CIRCUIT_FUEL_PUMP (not the circuit index itself). For example, if the circuit was defined as follows:
    circuit.15 = Type:CIRCUIT_FUEL_PUMP:4
    #Connections:bus.2
    #Power:3,5,20
    #Name:Fuel_P_R2

    then the circuit index would be 4, eg:

    Pump.1 = Name:FuelPump
    #Pressure:6
    #DestinationLine:FuelPumpR2Line
    #Type:Electric
    #index:4
    #PressureDecreaseRate:0.05
  • For engine pumps it is the index of the linked engine
  • For anemometer pumps it is the index of an anemometer
No
AutoCondition

List

(String, Float)

If this key is included, then you will be able to set the pump to "AUTO" mode, in which case it will only be enabled when the pressure of the fuel reaching the chosen engine goes below a specific threshold. The key requires two values, separated by a comma: the name of the engine to link with the pump, and the threshold value (in psi). No
PressureDecreaseRate Float This key is only required when the "Type" is set to "Manual", and controls how much the pump pressure will decrease per second after the user stops interacting with it. Default value is 0.5 Percent Over 100 (so, a decrease of 50% per second). No

 

The following SimVars are available for this component:

The following key Events are also available:

 

 

Trigger.N

This parameter is used to define one or more triggers to be used in the fuel system. Triggers are used to listen for - and react to - specific conditions and events that will affect the way the fuel system operates. Triggers are defined as a hash map comprised of multiple key:value pairs - separated by the # symbol - and have the following structure:

Trigger.N = Name:<trigger_name>#Title:<trigger_title>#Target:<target_name>#Threshold:<value>#Index:<target_index>#DelayTrue:<seconds_value>#DelayFalse:<seconds_value>#Condition:<string>#EffectTrue:<effect_list>#EffectFalse:<effect_list>

Note that you may have more than one trigger, in which case you would increment the N index, starting from 1. A basic example of a single trigger definition would be like this:

Trigger.1 = Condition:Autostart_Enabled
#EffectTrue:OpenValve.LeftEngValve,
OpenValve.RightEngValve,
OpenValve.CrossFeedValve,
StartPump.LeftTankPump,
StartPump.RightTankPump

 

Key Value Description Required
Name String The internal name of the trigger, which is used to reference elsewhere. Yes
Title

String

(Localisable)

The title of the trigger to be displayed in the UI, if applicable. No
Target String The name of a component to target as part of the trigger condition. This key is only necessary when the given Condition requires it. No
Threshold Float The threshold above/below which the trigger is activated. This key is only necessary when the given Condition requires it. No
Index Integer A component Index to target as part of the trigger condition. This key is only necessary when the given Condition requires it. No
DelayTrue Float This is the time - in seconds - that the condition state must remain TRUE before the EffectsTrue key gets triggered. Default value is 0. No
DelayFalse Float This is the time - in seconds - that the condition state must remain FALSE before the EffectsFalse key gets triggered. Default value is 0. No
Condition String The condition that the trigger is checking. See the table in the section on below. Yes
EffectTrue

List

(event.name strings)

The effect if the given condition resolves as TRUE. This is a comma separated list of possible condition events combined with the name of the fuel system component that they target. See the section on for more information. No
EffectFalse

List

(event.name strings)

The effect if the given condition resolves as FALSE. This is a comma separated list of possible condition events combined with the name of the fuel system component that they target. See the section on for more information. No

 

The following SimVar is available for this component:

The following key Events are also available:

 

Trigger Conditions And Events

When creating triggers for the fuel system, the hash map has an entry for "Condition". This can be any one of the following strings:

Condition Description
TankQuantityBelow Checks if the tank has a fuel quantity below the given Threshold (threshold in Gallons). Requires the Target key to be a tank name.
TankQuantityAbove Checks if the tank has a fuel quantity above the given Threshold (threshold in Gallons). Requires the Target key to be a tank name.
CGAboveLimit This condition can be used to watch the value of the SimVar CG_PERCENT and then trigger once it goes above the limit set in the Threshold field (as a percentage).
CGBelowLimit This condition can be used to watch the value of the SimVar CG_PERCENT and then trigger once it goes below the limit set in the Threshold field (as a percentage).
Autostart_Enabled Checks if autostart is enabled.
Autoshutdown_Enabled Checks if autoshutdown is enabled.
Manual This is a manual trigger event that can only be triggered by using a Key Event.
TankImbalanceAbove

Checks if there is a relative fuel imbalance between two tanks above the given Threshold (threshold in Gallons). Requires the Target key to hold two tank names, eg:

#Target:TankLeft,TankRight

TankImbalanceBelow

Checks if there is a relative fuel imbalance between two tanks below the given Threshold (threshold in Gallons). Requires the Target key to hold two tank names, eg:

#Target:TankLeft,TankRight

TankAbsImbalanceAbove

Checks if there is an absolute fuel imbalance between two tanks above the given Threshold (threshold in Gallons). Requires the Target key to hold two tank names, eg:

#Target:TankLeft,TankRight

TankAbsImbalanceBelow

Checks if there is an absolute fuel imbalance between two tanks below the given Threshold (threshold in Gallons). Requires the Target key to hold two tank names, eg:

#Target:TankLeft,TankRight

JunctionOptionChanged Requires the Target key to be a junction name, and the Index key to be the Option in the junction to set.

 

The result of the condition can be checked as either TRUE or FALSE, triggering an "event". These events are defined as a comma separated list in the EffectTrue and EffectFalse keys of the trigger hash map, where each entry in the list is comprised of an event and a target component, for example:

#EffectTrue:<event>.<target_name>, <event>.<target_name>, etc...

The available event types are:

Condition Description
OpenValve Open the named valve.
CloseValve Close the named valve.
StartPump Start the named pump.
StopPump Stop the named pump.
SetJunction Set the named junction to a specific option. When using this event, it requires both a name and an option index, eg: SetJunction.FuelSelector.1
StartTrigger

Flag the named trigger to start.
NOTE: Only for manual triggers.

StopTrigger

Flag the named trigger to stop.

NOTE: Only for manual triggers.

 

 

Curve.N

The curve parameter is defined as a 1D table of paired values, and the parameter is appended with a number that corresponds to its unique id (starting at 1). The exact number of paired values that are in the curve will depend on the use the curve is going to get, since curves are used by other parameters to store information. For example, you may have defined a fuel pump like this:

Pump.2 = Name:EngineDrivenPump#Pressure:6#PressureCurve:1#DestinationLine:EngineDrivenPumpToEngineJunction#Type:EngineDriven#Index:1

In this case, PressureCurve:1 references a fuel pressure curve table that would have been defined like this:

Curve.1 = 0:0, 0.2:0.5, 0.62:0.62, 0.88:0.63, 0.98:0.66, 1.0:1.0