flight_model.cfg - [CONTACT POINTS]
This section is for defining the points on the aircraft body referential frame which are likely to come in contact with the ground. These parameters are used for aircraft positioning on the ground and also for crash simulations. Contact points should be added through the Aircraft Editor, and only tweaked if required through the flight_model.cfg
file.
This section has the following parameters:
Parameter | Description | Type | Required |
---|---|---|---|
static_pitch |
The pitch when at rest on the ground, in degrees, where a positive value is "up" and a negative value is "down". IMPORTANT: Static pitch is only used when the physics simulation for the aircraft is not active: for example in the Hangar or in ready-to-take-off RTCs. |
Float | Yes |
static_cg_height |
The altitude of the CG when at rest on the ground, in ft. IMPORTANT: Static CG height is only used when the physics simualtion for the aircraft is not active: for example in the Hangar or in ready-to-take-off RTCs. |
Float | |
tailwheel_lock |
Sets whether the tailwheel lock is available (TRUE, 1) or not (FALSE, 0). | Bool | |
gear_system_type |
Sets the gear system type for the aircraft. |
Integer:
|
|
emergency_extension_type |
Sets the type of emergency extension system that can be used. |
Integer:
|
|
gear_locked_on_ground |
Defines whether or not the landing gear handle is locked to down when the plane is on the ground (TRUE, 1) or not (FALSE, 0). | Bool | |
gear_locked_above_speed |
Defines the speed at which the landing gear handle becomes locked in the up position, in ft per second. Note that a value of -1 can be used to disable this option. | Float | |
locked_tailwheel_max_range |
This defines the maximum angle of the tailwheel when locked, in radians. Default is 0. |
Float | |
allow_stopped_steering |
This can be used to enable (TRUE, 1) steering when the aircraft is stopped or not (FALSE, 0). | Bool | |
max_speed_full_steering |
Defines the speed under which the full angle of steering is available, in ft per second. | Float | |
max_speed_decreasing_steering |
Defines the speed above which the angle of steering stops decreasing, in ft per second. | Float | |
min_available_steering_angle_pct |
Defines the percentage of steering which will always be available even above max_speed_decreasing_steering , in Percent Over 100 |
Float | |
max_speed_full_steering_castering |
Defines the speed under which the full angle of steering is available for free castering wheels, in ft per second. | Float | |
max_speed_decreasing_steering_castering |
Defines the speed above which the angle of steering stops decreasing for free castering wheels, in ft per second. | Float | |
min_castering_angle |
Defines the minimum angle a free castering wheel can take (in radians). | Float | |
max_castering_angle |
Defines the maximum angle a free castering wheel can take (in radians). | Float | |
hyd_need_power_to_function |
Sets whether the hydraulic systems for the landing gear require power to function (1, TRUE) or not (0, FALSE). Default value is 1, TRUE. NOTE: This parameter is only taken into consideration when the |
Bool | |
max_number_of_points |
The number of contact points for the aircraft. Note that if this parameter is omitted, then the maximum will be set to 25 and any defined points above this value will be ignored. It should also be noted that the simulation will expect the exact number of point.N definitions as the maximum given here. So, if you have this set to 10, you will need to have defined 10 points (0 - 9). |
Integer | |
set_max_compression |
This can be used to change the way how the 10th parameter in the Default value is 0 (false). |
Boolean | No |
spring_exponential_fix |
This parameter is only required to fix a potential issue related to the 17th parameter in the Default value is 0 (FALSE). |
Bool | No |
point.N |
List of 17 values that define the details related to each contact point. This parameter can be used multiple times to define each of the contact points up to the maximum defined by the max_number_of_points value (note that counting starts at 0, so for 5 points N would be from 0 to 4). For the actual values required, please see below. |
17 Value Table of Floats (see Data Types for more information) |
No (Unless max_number_of_points is greater than 0)
|
point.N
The point
parameter for a contact point requires a list of 17 values, as shown in the following example:
point.0 = 1, -13, 0, -0.65, 750, 0, 0.523, 90, 0.296, 2.5, 0.794, 0, 0, 0, 165, 165, 1
IMPORTANT! You should define the same amount of points as the max_number_of_points
value, otherwise the aircraft will be invalid.
Each of these values is for a specific piece of information about the contact point, which we list in the table below for reference:
List Position | Description | Type | Required |
---|---|---|---|
0 |
This sets the type of contact point being defined. IMPORTANT! If your aircraft features retractable floats, you must define a "wheel" contact point as well as the "float" points in order for the floats to be evaluated as part of the retract/extend process. This contact point can be placed in a position where it does not interfere with the operation of the aircraft. |
Integer:
|
Yes |
1 | Longitudinal position z relative to Datum Reference Point, in ft. | Float | Yes |
2 | Lateral position x relative to Datum Reference Point, in ft. | Float | Yes |
3 | Vertical position y relative to Datum Reference Point, in ft. | Float | Yes |
4 | Impact damage threshold crash velocity, in ft per minute. | Float | Yes |
5 | The brake type the wheel contact uses. |
Integer:
|
Yes if the position 0 contact value is 1 (for a wheel). |
6 | The wheel radius, in ft. | Float | Yes if the position 0 contact value is 1 (for a wheel). |
7 | Wheel max steering angle, in degrees, between -90 and 90. | Float | Yes if the position 0 contact value is 1 (for a wheel). |
8 | The static compression coefficient constant (which is used to compute spring reaction when on the ground), in ft. If the contact point is rigid, then set this to 0. Please see Notes On Spring/Damping Factors for more information. | Float | Yes |
9 | If the set_max_compression parameter is set to 1 (true) then this specifies the maximum compression of the contact point, in feet. If the parameter is set to 0 (false) then this sets the maximum-to-static compression ratio for the contact point (a unitless value). Please see Notes On Spring/Damping Factors for more information. |
Float | No |
10 | The damping ratio constant (used to compute ground reaction damping). A value between 0.0 (un-damped) and 1.0 (critically damped). Please see Notes On Spring/Damping Factors for more information. | Float | Yes |
11 | Extension time, in seconds. This is the time required to fully extend wheels/water rudder/skis/floats. | Float | Yes |
12 | Retraction time, in seconds. This is the time required to fully retract wheels/water rudder/skis/floats. | Float | Yes |
13 | Identifies the type of sound that is going to be played for the contact point. |
Integer:
|
Yes |
14 | The airspeed limit for gears retraction, in kias. | Float | No |
15 |
Airspeed above which gear is damaged, in kias. For more information see here: Landing Gear Damage. |
Float | No |
16 | The exponential constant for springs (if in doubt, omit or set to 1). For more information, see Notes On The Exponential Constant below. | Float | No |
Notes On The Exponential Constant
By default when defining a point.N
list, the last value (16) is used to give an exponential constant for the springs. This is used in the spring calculations to change the way they react. A standard spring will use the following linear curve formula to generate its force:
$$F = k_0 \times x$$
Where:
- \(F\) is the force (in lbf)
- \(k_0\) is the spring constant, calculated as \(\frac {\textrm{lbf}}{ft}\)
- \(x\) is the compression distance.
That's the standard spring linear curve, however the simulation does not use this exact curve. Instead, the simulation permits you to supply an exponent so that you do not end up with a standard "linear" spring (unless it is set to 1). This means that the simulation formula is as follows:
$$F = k_1 \times x \times ratio_1$$
Where:
- \(F\) is the force (in lbf)
- \(k_1\) is the modified spring constant, calculated as \(k_1 = k_0 \times \frac{n \times MSCR}{1+\frac{n-1}{MSCR^{n-1}}}\)
- \(x\) is the compression distance in ft
- \(\textrm{ratio}_1\) is the ratio applied to correct the default linear curve, calculated as \(ratio_1 = \frac{\overline{x} + (n-1) \times \overline{x}^n}{n}\)
The additional terms used in the above calculation are as follows:
- \(k_0\) is the default linear spring constant, calculated as \(\frac {\textrm{lbf}}{ft}\)
- \(n\) is the exponential constant (16 in the point list)
- \(MSCR\) is maximum to static compression ratio (9 in the point list)
- \(\overline{x}\) is calculated as \(\frac{x}{x_{max}}\)
- \(x_{max}\) a value greater than 0.1 ft
However, this implementation of the formula gives rise to certain issues:
- if \(n > 1\) - ie: the curve is not linear - then the formula lowers the spring force if compression is low, making the spring very weak at low compression ranges.
- if \(n > 1\) but close to 1, then the formula is incorrect and still differs significantly from the base linear curve formula.
This can be fixed by having your aircraft use the updated formula by setting the spring_exponential_fix
parameter to 1 (true). The updated formula looks like this:
$$F = k_0 \times x \times ratio_2$$
Where:
- \(F\) is the force (in lbf)
- \(k_0\) is the default linear spring constant, calculated as \(\frac {\textrm{lbf}}{ft}\)
- \(x\) is the compression distance (in \({ft}\))
- \(\textrm{ratio}_2\) is the ratio applied to correct the default linear curve, calculated as \(ratio_2 = \frac{1}{n} + (R \times x^{n-1} - \frac{1}{n}) \times \overline{x}\)
The additional terms used in the above calculation are as follows:
- \(\overline{x}\) is calculated as \(\frac{x}{x_{max}}\)
- \(n\) is the exponential constant (16 in the point list)
- \(R\) calculated as \(\frac{A}{k_0} = \frac{MSCR+\frac{1-MSCR}{n}}{SC^{n-1}}\)
- \(SC\) is the static compression (in ft) under load \(W\) (in lbf)
- \(A\) is the load calculation \(W \times \frac{MSCR+\frac{1-MSCR}{n}}{SC^n}\)
Using this new calculation we get the following:
- Force \(F\) will be \(\frac{K_0}{n} \times x\) as \(\overline{x}\) approaches 0, which gives us the low compression range
- Force \(F\) will be \(A \times x^n\) as \(\overline{x}\) approaches 1, which gives us the high compression range
Essentially, When the spring_exponential_fix
parameter to 1 (true), if the exponential constant is greater than 1 then it becomes the denominator for the linear spring force curve in the low compression range, and the power of this curve in the high compression range.
It is worth noting that this curve formula can be visualised using the following Excel document, where you can edit the values highlighted in blue: Landing_Gear_ExpoConstant.xlsx
Notes On Spring/Damping Factors
By default the spring factor and damping factor for the landing gear is calculated automatically based on the value of the static compression of the landing gear when parked parked (specified by parameter 9 of the contact point.N
), using the maximum gross weight of the aircraft and taking into account the location of the contact point relative to the center of gravity.
However, this default method is only used for landing gear that are all of the type wheel. For other types of landing gear (Skids, Skis and Floats), and mixed types of landing gear (wheels + some other landing gear type), the following process is used to determine the spring and damping factors:
- The simulation will check through the list of contact points and find the first spring reaction contact point - either a wheel, skid, or a ski - which is located in front of the center of gravity of the empty aircraft. This contact point will initially be considered as main front landing gear.
- If there is another spring reaction contact point which is located towards the front of the center of gravity of the empty aircraft, then that will be the contact point that is considered as the main front landing gear (so, the second contact point) .
- The simulation then calculates the spring factor and damping factor for this basic "main" front contact point, taking into account its location relative to the empty center of gravity, and the
point.N
parameters: static compression, max/static compression ratio and damping ratio (8, 9 and 10 in the point list). - These newly calculated spring and damping factors are transmitted to all contact points of the type skid and ski - but not wheels - which are located in front of the center of gravity of the empty aircraft. Therefore, the location of all these contact points and their static compression, max/static compression ratio and damping ratio parameters don't matter at all.
- The simulation then does the same thing for the rear landing gear, ie: finds the first (or the second if there are two) spring reaction contact point in the list which is located behind the center of gravity of the empty aircraft, calculates the spring factor and damping factor for this contact point, then applies these values to all rear skid or ski contact points.
- Finally, the simulation will repeat the same procedure (steps 1 - 5, above) for float contact points, this time only taking into account float type contact points.
As you can see, the order in which the contact points are defined in the list can play significant role.
Notes On Skids
If you are defining the contact points for skids, there are a few things that you should be aware of:
- The maximum number of contact points for skid-type retractable landing gear is 6 (previously this was limited to only 2). These are:
- Center Front Skid
- Center Rear Skid
- Left Front Skid
- Left Rear Skid
- Right Front Skid
- Right Rear Skid
- The initialisation rules for skids when reading the contact point list from the
flight_model.cfg
file are as follows:- If the contact point is of skid type and is retractable (ie: it has non-zero retraction and extension times), then the skid position is determined by the lateral X coordinate of the contact point, where:
- The front and rear skids on each side are then initialized based on the longitudinal Z coordinate of the contact points. If there is only one skid on one side, the skid will be considered as the front skid if the longitudinal coordinate Z > 0, otherwise it will be considered as the rear skid.
- If more than 2 skids are mistakenly found in the list of contact points for any side, the others are ignored.
- Retractable skids can be used in addition to wheels (whether the wheels are retractable or not).
- The initialization method of retractable skids in the FLT Files (including in the game-menu hangar) is similar to the wheel-type retractable landing gear, ie: Gear1 for the center skid(s), Gear2 for the left skid(s), Gear3 for the right skid(s).
Finally, it is worth noting that the following SimVars can also be used for skids:
GEAR_LEFT_POSITION
GEAR_RIGHT_POSITION
GEAR_CENTER_POSITION
GEAR_POSITION
GEAR_ANIMATION_POSITION
GEAR_IS_SKIDDING
GEAR SKIDDING FACTOR
GEAR_IS_ON_GROUND
GEAR_WATER_DEPTH