MODULAR LIQUID DROPPING SYSTEM INFORMATION
This section controls everything related to the aircraft liquid dropping system, which allows aircraft to be able to transport and drop liquids. Depending on the settings used it may also allow the aircraft to scoop water from water surfaces, for example when modelling an aircraft like the CL-215 (Bombardier 415).
The liquid dropping system requires 3 separate files to be set up correctly:
- systems.cfg - This is where the main system components are defined.
- flight_model.cfg - This is where the contact points used for the scoops are defined (the contact point type should be 18). This is only required if the aircraft has a scoop system.
- reference_points.cfg - This is where the reference points used for the drop doors are defined.
The different components available are as follows:
- Tank: This defines the tank that will be holding the liquid to be dropped.
- Door: This defines certain properties related to the door that will open/close to drop/store the liquid.
- Scoop: This is used to define the properties of the scoop that is used to retrieve liquid for the tank.
- Curve: This is used to define the different pickup and drop rates for the scoops and doors of the aircraft.
The following is a simple example for an aircraft where the liquid dropping system has been defined with two tanks, scoops and doors:
[Liquid Dropping System]
Curve.1 = 0:0,20:0,100:500
Tank.1 = Position:-0.5,-2,-0.65 #Capacity:1500 #Doors:1 #Scoops:1
Tank.2 = Position:-0.5,2,-0.65 #Capacity:1500 #Doors:2 #Scoops:2
Door.1 = FixedRate:5.0 #DropSpeed:10
Door.2 = FixedRate:5.0 #DropSpeed:10
Scoop.1 = CurveRate:1 #ContactPoint:8
Scoop.2 = CurveRate:1 #ContactPoint:9
This liquid dropping system would also need these contact points, since it also has scoops:
[CONTACT_POINTS]
point.0 = 18, -4.4, -5.6, -0.65, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1
point.1 = 18, -4.4, 5.6, -0.65, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1
And finally, it would have the following reference points for the doors, where the Name
parameter must follow the format of pos_door_N
, where N is the door number + 1 (doors are created with an initial index of 0, but for the reference point CFG the index starts at 1, so pos_door_1
references Door.0
):
[ReferencePoint.0]
Name=pos_door_1
AttachTo=
IsExterior=1
RelativePos=-0.5,-2,-1.25
RelativeRot=0,0,180
[ReferencePoint.1]
Name=pos_door_2
AttachTo=
IsExterior=1
RelativePos=-0.5,2,-1.25
RelativeRot=0,0,180
Many of these components can be checked using SimVars, and you can find information about those here:
It should be noted that there are some parameters that can be set in the FLT file to initialise the liquid dropping system to specific values for a flight or a mission. You can find more information here:
Tank.N
The main component of a liquid dropping system is the tank, and each tank is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Tank.N = Name:<tank_name> #Position:<pos_ZXY> #Capacity:<capacity_litres> #Doors:<door_index_1>,<door_index_2>,... #Scoops:<scoop_1>,<scoop_2>,...
Note that you may have more than one tank, so in these cases you would add further Tank components and increment the N
index, starting from 1. A full example of a single tank definition would be like this:
Tank.1 = Name:Main_Tank #Position:-0.5,-2,-0.65 #Capacity:1500 #Doors:1 #Scoops:1
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a unique name which can be used instead of an index value when querying tank-related SimVars like LIQUID DROPPING TANK CAPACITY .
|
Yes |
Position |
Array (Floats) |
The position of the tank expressed as longitude, latitude, and altitude (Z,X,Y) relative to the Datum Reference Point, in ft. | Yes |
Capacity |
Float | The maximum capacity of the tank, in Gallons. | Yes |
Doors |
Array (Integers) |
A comma separated array of the doors that are attached to this tank, where each door is identified by its index number. Note that multiple doors can be attached to the same tank, and multiple tanks can be attached to the same door. In the latter case, this will mean that the maximum flow rate of the door will be divided equally between the tanks. | Yes |
Scoops |
Array (Integers) |
A comma separated array of scoops that are attached to this tank, where each scoop is identified by its index number. Multiple scoops can be attached to the same tank, and multiple tanks can be attached to the same scoop. | No |
The following SimVars are available for this component:
LIQUID DROPPING TANK CAPACITY
LIQUID DROPPING TANK CAPACITY VOLUME
LIQUID DROPPING TANK TOTAL CAPACITY
LIQUID DROPPING TANK TOTAL CAPACITY VOLUME
LIQUID DROPPING TANK TOTAL WEIGHT
LIQUID DROPPING TANK TOTAL CURRENT VOLUME
LIQUID DROPPING TANK WEIGHT
LIQUID DROPPING TANK CURRENT VOLUME
Door.N
For an aircraft to dump the liquid it stores in its tanks, it needs to have one or more doors. Each door is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Door.N = Name:<door_name> #FixedRate:<rate> #CurveRate:<curve_index> #DropSpeed:<speed> #Circuit:<circuit_index> #CircuitName:<circuit_name> #Actuator:<actuator_name> #OpenTime:<seconds> #CommandGroup:<group_index>
Note that you may have more than one pump, so for each one you should increment the N
index, starting from 1. A full example of a single pump definition would be like this:
Door.1 = Name:Main_Door #FixedRate:5.0 #DropSpeed:10
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a unique name which can be used instead of an index value when querying door-related SimVars like LIQUID DROPPING DOOR FLOW .
|
Yes |
FixedRate |
Float | The constant rate at which liquid will be dropped from the aircraft, in Gallons per second. If this parameter is defined, then you cannot define the CurveRate . |
No |
CurveRate |
Curve | A Curve which defines the ratio of liquid dropped to ground speed. If this parameter is defined, then you cannot define the FixedRate . |
No |
DropSpeed |
Float | The speed, in ft per second, at which the liquid will drop after being released. | Yes |
Circuit |
Integer |
If the door is electrically driven, this parameter specifies the index of the circuit that has been defined in the electrical system as the Note that this key is not required for manual doors. Also note that this method for identifying a circuit is only supposed to be used for backwards compatibility with legacy aircraft, and you should be supplying a Default value is 0. |
No |
CircuitName |
String |
If the door is electrically driven, this parameter specifies the name of the circuit that has been defined in the electrical system as the Note that this key is not required for manual doors. Also note that this is the preferred method for identifying a circuit, but if you have supplied a Default value is "". |
No |
Actuator |
String |
The name of the Hydraulic Actuator (see: Default value is "". |
No |
OpenTime |
Float |
This sets the time that the door takes to go from fully closed to fully open. If set to 0, then the transition is instantaneous. Default value is 0. |
No |
CommandGroup |
Integer | This assigns a "command group" value to the door. This value is used to "link" multiple doors together so that they can then be activated all at once using a single key event like . Value must be an integer starting at 1. | No |
The following SimVars are available for this component:
LIQUID DROPPING DOOR FLOW
LIQUID DROPPING DOOR FLOW VOLUME
LIQUID DROPPING DOOR OPEN TARGET
LIQUID DROPPING DOOR OPEN VALUE
Scoop.N
If you are creating an aircraft that can scoop liquids into it's tank then these scoops need to be defined. Each scoop is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Scoop.N = Name:<scoop_name> #FixedRate:<rate> #CurveRate:<curve_index> #ContactPoint:<point_index>
Note that you may have more than one scoop, so for each one you should increment the N
index, starting from 1. A full example of a single scoop definition would be like this:
Scoop.1 = Name:Main_Scoop #CurveRate:1 #ContactPoint:8
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a unique name which can be used instead of an index value when querying scoop-related SimVars like LIQUID DROPPING SCOOP FLOW .
|
Yes |
FixedRate |
Float | The constant rate at which liquid will be scooped into the aircraft, in Gallons per second. If this parameter is defined, then you cannot define the CurveRate . |
No |
CurveRate |
Curve | A Curve which defines the ratio of liquid scooped to ground speed. If this parameter is defined, then you cannot define the FixedRate . |
No |
ContactPoint |
Integer | The [CONTACT_POINTS] index where the scoop should be positioned. The defined contact point should be of the type "liquid dropping system scoop". |
Yes |
The following SimVars are available for this component:
LIQUID DROPPING SCOOP FLOW
LIQUID DROPPING SCOOP FLOW VOLUME
LIQUID DROPPING SCOOP OPEN TARGET
LIQUID DROPPING SCOOP OPEN VALUE
Curve.N
The curve data component is simply a way of defining a Door (or Scoop) drop rate for the liquids in the tank(s) connected. Using a curve means you can create the curve once, and then use it in multiple places (thus removing the need to duplicate data in multiple places). It also means you can create a more realistic drop rate for the aircraft. Each curve is created as a list of two values separated by a comma, where the values depend on what use the curve will be getting put to:
For doors:
Curve.N = <drop_rate>:<ground_speed>, <drop_rate>:<ground_speed>, ...
Key | Value | Description | Required |
---|---|---|---|
drop_rate |
Float | The drop rate, in Gallon per second, for the corresponding ground speed. | Yes |
ground_speed |
Float | The ground speed of the aircraft, in ft per second. | Yes |
For scoops:
Curve.N = <scoop_rate>:<ground_speed>, <scoop_rate>:<ground_speed>, ...
Key | Value | Description | Required |
---|---|---|---|
scoop_rate |
Float | The scoop rate, in Gallon per second, for the corresponding ground speed. | Yes |
ground_speed |
Float | The ground speed of the aircraft, in ft per second. | Yes |
Note that you may have more than one curve, so for each one you should increment the N
index, starting from 1. A full example of a single curve definition would be like this:
Curve.1 = 0:200, 100:220