Difference between revisions of "Aero.dat"

From Silent Wings Wiki
Jump to: navigation, search
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
The aero.dat configuration file describes the aerodynamic properties of the flight model.  
+
The aero.dat configuration file describes the aerodynamic properties of the flight model. Currently, Silent Wings has two different aerodynamic models to choose from: The "panel model" and the "linear" model.  
+
 
The Silent Wings aerodynamic model works with a "panel model" that describes the geometrical design of the aircraft that is to be simulated. By (manually!) dividing an aircraft into segments, or "panels", the flight dynamics code can calculate the forces that act on the aircraft and let it fly.  
+
For all player-controlled aircraft the panel model is recommended. This way of modelling has become quite popular in flight simulators, and is also sometimes called "Blade Element Theory" which is a method commonly used to simulate propellers. Silent Wings uses an extended Blade Element Theory on the propeller model, whereas the Panel Model is modified even more to be suited for a fixed-wing aircraft, even with low aspect ratio wings. 
 +
 
 +
The linear model is implemented for use on autopilot controlled aircraft such as the towplane, and will only behave realistic at a small speed range. See the end of this article for a brief description of the linear model file format.
 +
 
 +
The Silent Wings panel model describes the geometrical design of the aircraft that is to be simulated. By manually dividing an aircraft into segments, or "panels", the flight dynamics code can calculate the forces that act on the aircraft and let it fly. The panel model works with two different panels: wingpanels and fuselage panels. The Wing panels are used to describe the wings and fins on the aircraft. Every wing panel needs an airfoil to do the aerodynamic definition, so these airfoils need to be defined as well.
 +
 
 +
The airfoils can be shared between panels of the same wing, and are therefor defined before the wing panels. You must define one airfoil for each wing (or fin), also when they all would use the same airfoil, because the airfoil is defined with 3-dimensional properties (aspect ratio of wing, etc). You may, however, use several airfoils for a single wing, if you like.
 +
 
 +
== Example file ==
  
The panel model works with two different panels: wingpanels and fuselage panels. The Wing panels are used to describe the wings and fins on the aircraft. Every wing panel needs an airfoil to do the aerodynamic definition, so these airfoils need to be defined as well.  
+
This is an example aero.dat file, taken from the SG38 model. It shows how to quicly create a usable aero model. Below, all options are described. For a more advanced aero.dat example, take a look at the Antares 20E aero model.
  
The airfoils can be shared between panels of the same wing, and are therefor defined before the wing panels. You must define one airfoil for each wing (or fin), also when they all would use the same airfoil, because the airfoil is defined with 3-dimensional properties (aspect ratio of wing, etc).  
+
# SG38 Panelmodel data file
 +
# Part of Silent Wings
 +
# Ola Røer Thorsen 25.10.2004
 +
 +
# General things
 +
plane_name = SG 38
 +
plane_description = Schulgleiter
 +
 +
# Airfoil data. Note: these are "finite wing airfoils", not
 +
# 2-dimensional data.
 +
 +
airfoil {
 +
    name = mainwing
 +
    profile = goe533
 +
    k = 1.2
 +
    aspectratio = 6.5
 +
    meanchord = 1.5
 +
    cd_adjust  = 0.0
 +
}
 +
 +
airfoil {
 +
    name = elevator
 +
    profile = naca0012f60
 +
    k = 1.2
 +
    aspectratio = 3.1
 +
    meanchord = 1.0
 +
    cd_adjust  = 0.0
 +
}
 +
 +
airfoil {
 +
    name = rudder
 +
    profile = naca0012f60
 +
    k          = 1.2
 +
    aspectratio = 1.1
 +
    meanchord  = 1.2
 +
    cd_adjust  = 0.0
 +
}
 +
 +
# The panels
 +
 +
wingpanel {
 +
name = left wing tip
 +
airfoil = mainwing
 +
area = 3.1
 +
meanchord = 1.5
 +
position = [ 0.0 -4.15 -0.5 ]
 +
alpha = 0.0
 +
dihedral = 0.0
 +
delta_max = 25.0
 +
delta_min = -25.0
 +
delta_neutral = 0.0
 +
aileron_mix = 1.0
 +
aileron_delta = 30.0
 +
aileron_diff  = 1.5
 +
}
 +
 +
wingpanel {
 +
name = left wing root
 +
dep_panels = [ "left wing tip" ]
 +
airfoil = mainwing
 +
#area = 4.5
 +
area = 5.0
 +
meanchord = 1.5
 +
position = [ 0.0 -1.5 -0.5 ]
 +
alpha = 0.0
 +
dihedral = 0.0
 +
}
 +
 +
wingpanel {
 +
name = right wing tip
 +
airfoil = mainwing
 +
area = 3.1
 +
meanchord = 1.5
 +
position = [ 0.0 4.15 -0.5 ]
 +
alpha = 0.0
 +
dihedral = 0.0
 +
delta_max = 25.0
 +
delta_min = -25.0
 +
delta_neutral = 0.0
 +
aileron_mix = -1.0
 +
aileron_delta = 30.0
 +
aileron_diff    = 1.5
 +
}
 +
 +
wingpanel {
 +
name = right wing root
 +
dep_panels = [ "right wing tip" ]
 +
airfoil = mainwing
 +
area = 5.0
 +
meanchord = 1.5
 +
position = [ 0.0 1.5 -0.5 ]
 +
alpha = 0.0
 +
dihedral = -3.0
 +
}
 +
 +
wingpanel {
 +
name = elevator
 +
airfoil = elevator
 +
area = 3.1
 +
meanchord = 1.0
 +
position = [ -3.5 0.0 -0.6 ]
 +
alpha = -3.0
 +
dihedral = 0.0
 +
delta_max = 25.0
 +
delta_min = -25.0
 +
delta_neutral = 0.0
 +
elevator_mix = 1.0
 +
}
 
   
 
   
You may, however, use several airfoils for a single wing, if desired.  
+
wingpanel {
 +
name = rudder
 +
dep_panels    = [ elevator ]
 +
airfoil = rudder
 +
area = 1.5
 +
meanchord = 1.2
 +
position = [ -3.5 0.0 -0.6 ]
 +
alpha = 0.0
 +
dihedral = 90.0
 +
delta_max = 30.0
 +
delta_min = -25.0
 +
delta_neutral  = 0.0
 +
rudder_mix = 1.0
 +
broken_drag    = 0.3
 +
}
 +
 +
fuselage {
 +
name = fuselage
 +
position = [ 0.0 0.0 0.0 ]
 +
ref_area = 12.53
 +
ref_volume = 1.0
 +
cd_front = sg38
 +
cd_side = 0.05
 +
cd_top         = 0.05
 +
k_y = 0.0
 +
k_z = 0.0
 +
alpha_fuselage = 0.0
 +
}
 
   
 
   
  
Line 28: Line 170:
 
The name of the airfoil. This can be called whatever you like, and is the name to be used in the wing panels.  
 
The name of the airfoil. This can be called whatever you like, and is the name to be used in the wing panels.  
 
   
 
   
  profile = <filename> (but without .cd/.cl/.cm extension!)
+
  profile = <name>  
  
The airfoil polar fileset to use. These files are found in the airfoils directory. There are 3 files for one airfoil, defining lift (.cl), drag (.cd) and pitch moment (.cm), that all have the same name.  
+
There are [[Polar file formats | two airfoil file formats]] available. The <name> specifies the file name '''without''' the extension (.polar or .cl/.cd/.cm). The polar files are to be put in the Silent Wings/data/airfoils directory.
 
   
 
   
 
  k = <float>  
 
  k = <float>  
Line 66: Line 208:
 
  }  
 
  }  
  
A wing can be defined with one or several panels. For elevator and rudder surfaces, one panel is mostly sufficient. A main wing should have at least 4 panels in total (two left, two right).  
+
A wing can be defined with one or several panels. For elevator and rudder surfaces, one panel is mostly sufficient. A main wing should have at least 4 panels in total (two left, two right). When not defined, variables default to zero. That means, if certain things are not to be used on the wing panel (such as a spoiler), the variables do not have to be set.  
 
When not defined, variables default to zero. That means, if certain things are not to be used on the wing panel (such as a spoiler), the variables do not have to be set.  
 
 
   
 
   
 
Please see the example illustration of the Ventus aero model to get a picture of how the panels are defined.  
 
Please see the example illustration of the Ventus aero model to get a picture of how the panels are defined.  
+
 
Variable descriptions:
+
'''General data:'''
 
General data:  
 
 
   
 
   
 
  name = <text string>
 
  name = <text string>
Line 112: Line 250:
 
If the panel is positioned behind a propeller, you can set this value higher than 0.0 to have a propwash effect on the panel. This will for example allow for rudder and elevator authority when standing still on the Antares model.  
 
If the panel is positioned behind a propeller, you can set this value higher than 0.0 to have a propwash effect on the panel. This will for example allow for rudder and elevator authority when standing still on the Antares model.  
 
   
 
   
Control surface variables: (can be left out if the panel has non controls)
+
'''Control surface variables:'''
  
The control system of Silent Wings is quite flexible, and can handle more exotic designs like canards, v-tails and flying wings. You can add all the controllers to have an effect on every panel in different ways.  
+
The control system of Silent Wings is quite flexible, and can handle more exotic designs like canards, v-tails and flying wings. You can add all the controllers to have an effect on every panel in different ways. If the panel has no controls, these entries need not be defined.
 
   
 
   
 
  delta_max = <float>  
 
  delta_max = <float>  
Line 160: Line 298:
 
The amount of throttle control that is to be applied to the flap (this is rather uncommon, so it will mostly be left out. It can be used to compensate or emulate some throttle effects)  
 
The amount of throttle control that is to be applied to the flap (this is rather uncommon, so it will mostly be left out. It can be used to compensate or emulate some throttle effects)  
  
Spoiler/airbrake variables: (can be left out if the panel has no airbrake or spoiler)
+
'''Spoiler/airbrake variables:'''
 +
 
 +
If the panel has no controls, these entries need not be defined.
 
   
 
   
 
  brake_on = 0 or 1  
 
  brake_on = 0 or 1  
Line 239: Line 379:
  
 
The drag of an extended landing gear.
 
The drag of an extended landing gear.
 +
 +
 +
 +
== Linear aero model ==
 +
 +
 +
Here are a sample aero.dat file when the linear aero model is used:
 +
 +
#-----------
 +
# Main wing
 +
#-----------
 +
wing_area              = 17.0
 +
wing_span              = 12.0
 +
mean_chord              = 1.5
 +
k_factor                = 1.5
 +
 +
#------------------
 +
# Control surfaces
 +
#------------------
 +
aileron_limits          = [ -23.0 20.0 ]
 +
elevator_limits        = [ -23.0 28.0 ]
 +
rudder_limits          = [ -16.0 16.0 ]
 +
 +
flap_min                = 0.0
 +
flap_max                = 1.0
 +
flap_eff                = 0.2
 +
 +
#--------------------------
 +
# Aerodynamic coefficients
 +
# --------------------------
 +
c_lift_0                = 0.410
 +
c_lift_a                = 5.143
 +
c_lift_elev            = 0.340
 +
c_drag_0                = 0.08
 +
c_drag_i                = 0.08
 +
c_side_beta            = -0.31
 +
c_side_rudder          = 0.25
 +
c_yaw_beta              = 0.165
 +
c _yaw_rudder            = -0.25
 +
c_yaw_aileron          = 0.0
 +
c_yaw_roll_rate        = 0.0
 +
yaw_damping            = -0.099
 +
c_pitch_0              = 0.02
 +
c_pitch_a              = -0.8
 +
c_pitch_elev            = -0.7
 +
c_pitch_dot_a          = 0
 +
pitch_damping          = -12.4
 +
c_roll                  = 0.178
 +
roll_damping            = -0.47
 +
 +
Here, a conventional coefficient based model is used to simulate the aircraft. If you have experience with such models you might recongnise the parameters and what they do.
 +
 +
 +
[[Category:Aircraft Physics]]

Latest revision as of 10:33, 6 March 2007

The aero.dat configuration file describes the aerodynamic properties of the flight model. Currently, Silent Wings has two different aerodynamic models to choose from: The "panel model" and the "linear" model.

For all player-controlled aircraft the panel model is recommended. This way of modelling has become quite popular in flight simulators, and is also sometimes called "Blade Element Theory" which is a method commonly used to simulate propellers. Silent Wings uses an extended Blade Element Theory on the propeller model, whereas the Panel Model is modified even more to be suited for a fixed-wing aircraft, even with low aspect ratio wings.

The linear model is implemented for use on autopilot controlled aircraft such as the towplane, and will only behave realistic at a small speed range. See the end of this article for a brief description of the linear model file format.

The Silent Wings panel model describes the geometrical design of the aircraft that is to be simulated. By manually dividing an aircraft into segments, or "panels", the flight dynamics code can calculate the forces that act on the aircraft and let it fly. The panel model works with two different panels: wingpanels and fuselage panels. The Wing panels are used to describe the wings and fins on the aircraft. Every wing panel needs an airfoil to do the aerodynamic definition, so these airfoils need to be defined as well.

The airfoils can be shared between panels of the same wing, and are therefor defined before the wing panels. You must define one airfoil for each wing (or fin), also when they all would use the same airfoil, because the airfoil is defined with 3-dimensional properties (aspect ratio of wing, etc). You may, however, use several airfoils for a single wing, if you like.

Example file

This is an example aero.dat file, taken from the SG38 model. It shows how to quicly create a usable aero model. Below, all options are described. For a more advanced aero.dat example, take a look at the Antares 20E aero model.

# SG38 Panelmodel data file 
# Part of Silent Wings
# Ola Røer Thorsen 25.10.2004

# General things
plane_name		= SG 38
plane_description	= Schulgleiter

# Airfoil data. Note: these are "finite wing airfoils", not
# 2-dimensional data.

airfoil {
   name	= mainwing
   profile	= goe533
   k		= 1.2
   aspectratio	= 6.5
   meanchord	= 1.5
   cd_adjust   = 0.0
}

airfoil {
   name	= elevator
   profile	= naca0012f60
   k		= 1.2
   aspectratio	= 3.1
   meanchord	= 1.0
   cd_adjust   = 0.0
}

airfoil {
   name	= rudder
   profile	= naca0012f60
   k           = 1.2
   aspectratio = 1.1
   meanchord   = 1.2
   cd_adjust   = 0.0
}

# The panels

wingpanel {
name		= left wing tip
airfoil	= mainwing
area		= 3.1
meanchord	= 1.5
position	= [ 0.0 -4.15 -0.5 ]
alpha		= 0.0
dihedral	= 0.0
delta_max	= 25.0
delta_min	= -25.0
delta_neutral	= 0.0
aileron_mix	= 1.0
aileron_delta	= 30.0
aileron_diff   = 1.5
}

wingpanel {
name		= left wing root
dep_panels	= [ "left wing tip" ]
airfoil	= mainwing
#area		= 4.5
area		= 5.0
meanchord	= 1.5
position	= [ 0.0 -1.5 -0.5 ]
alpha		= 0.0
dihedral	= 0.0
}

wingpanel {
name		= right wing tip
airfoil	= mainwing
area		= 3.1
meanchord	= 1.5
position	= [ 0.0 4.15 -0.5 ]
alpha		= 0.0
dihedral	= 0.0
delta_max	= 25.0
delta_min	= -25.0
delta_neutral	= 0.0
aileron_mix	= -1.0
aileron_delta	= 30.0
aileron_diff    = 1.5
}

wingpanel {
name		= right wing root
dep_panels	= [ "right wing tip" ]
airfoil	= mainwing
area		= 5.0
meanchord	= 1.5
position	= [ 0.0 1.5 -0.5 ]
alpha		= 0.0
dihedral	= -3.0
}

wingpanel {
name		= elevator
airfoil	= elevator
area		= 3.1
meanchord	= 1.0
position	= [ -3.5 0.0 -0.6 ]
alpha 		= -3.0
dihedral	= 0.0
delta_max	= 25.0
delta_min	= -25.0
delta_neutral	= 0.0
elevator_mix	= 1.0
}

wingpanel {
name		= rudder
dep_panels     = [ elevator ]
airfoil	= rudder
area		= 1.5
meanchord	= 1.2
position	= [ -3.5 0.0 -0.6 ]
alpha		= 0.0
dihedral	= 90.0
delta_max	= 30.0
delta_min	= -25.0
delta_neutral  = 0.0
rudder_mix	= 1.0
broken_drag    = 0.3
}

fuselage {
name		= fuselage
position	= [ 0.0 0.0 0.0 ]
ref_area	= 12.53
ref_volume	= 1.0
cd_front	= sg38
cd_side	= 0.05
cd_top	        = 0.05
k_y		= 0.0
k_z		= 0.0
alpha_fuselage = 0.0
}

Airfoils

An airfoil is defined like this:

airfoil 
{ 
   name = xxx 
   profile = xx 
   ... 
} 

The variables to be defined are:

name = <string> 

The name of the airfoil. This can be called whatever you like, and is the name to be used in the wing panels.

profile = <name> 

There are two airfoil file formats available. The <name> specifies the file name without the extension (.polar or .cl/.cd/.cm). The polar files are to be put in the Silent Wings/data/airfoils directory.

k = <float> 

The "k" factor defines the induced drag finesse of the wing. A setting of 1.0 gives the optimum, planar wing with elliptical lift distribution. So any other planar wing will have a value higher than 1.0.

Wings with winglets may get values lower than 1.0. The best wings currently available (Antares) have a k factor of 0.95.

aspectratio = <float> 

The aspect ratio of the wing that will use this airfoil.

meanchord = <float> 

The mean chord of the wing that will use this airfoil

cl_adjust = <float> 

This factor can be used to fine-tune the lift curve. The variable is multiplied with the lift from the lift polar. Leave this to 1.0 when you start up, and use it as a last resort when fine tuning your model.

cd_adjust = <float> 

This factor can be used to fine-tune the drag curve. The variable is added to the drag polar. Use with caution.


Wing panel

A wingpanel is defined with "wingpanel" followed by brackets containing the wing panel variables, one variable per line.

wingpanel 
{ 
   name = xxx 
   area = xxx 
   ... 
} 

A wing can be defined with one or several panels. For elevator and rudder surfaces, one panel is mostly sufficient. A main wing should have at least 4 panels in total (two left, two right). When not defined, variables default to zero. That means, if certain things are not to be used on the wing panel (such as a spoiler), the variables do not have to be set.

Please see the example illustration of the Ventus aero model to get a picture of how the panels are defined.

General data:

name = <text string>

Wing panel name

airfoil = <text string> 

The airfoil to use. The name to use is the same as defined in one of the airfoil sections.

position = [ x.x y.y z.z ] 

The panel position coordinate. See the illustration on how to define this point.

area = <float> 

Wing panel area

meanchord = <float> 

The mean chord of the wing panel (not the wing!)

alpha = <float> 

The panel's angle of incident.

dihedral = <float> 

The panel's dihedral angle.

sweep = <float> 

The panel's sweep angle.

propwash = 0.0 to 1.0 

If the panel is positioned behind a propeller, you can set this value higher than 0.0 to have a propwash effect on the panel. This will for example allow for rudder and elevator authority when standing still on the Antares model.

Control surface variables:

The control system of Silent Wings is quite flexible, and can handle more exotic designs like canards, v-tails and flying wings. You can add all the controllers to have an effect on every panel in different ways. If the panel has no controls, these entries need not be defined.

delta_max = <float> 

The flap's maximum (positive) deflection angle, in degrees.

delta_min = <float> 

The flap's minimum (negative) deflection angle, in degrees.

delta_neutral = <float> 

The flap's position when the controls are centered

aileron_mix = -1.0 to 1.0 

The amount of aileron control that is to be applied to the flap. For the left wing, normally 1.0 is used, for the right wing -1.0. For less effect use smaller numbers. For no aileron control set to 0.0 or leave it out.

aileron_delta = <float> 

The maximum difference in deflection between the left and right aileron. For example, if with fully deflected ailerons the left one is at +10 and the right one at -10, this value should be set to 20.0.

aileron_diff = <float> 

Aileron differential. This factor will define how much more the up-going (negative) aileron will go up compared with the down-going one (positive). The value 1.0 (default) means equal deflection in both directions. A setting of 2.0 means the up-going aileron will do twice as much deflection as the down-going aileron. This is common on sailplanes as it reduces the adverse yaw effect of the ailerons.

flap_pos = <float> 

If the panel has flap control, set the most positive flap setting in degrees here.

flap_neg = <float> 

If the panel has flap control, set the most negative flap position in degrees here.

elevator_mix = -1.0 to 1.0 

The amount of elevator control that is to be applied to the flap.

rudder_mix = -1.0 to 1.0 

The amount of rudder control that is to be applied to the flap.

throttle_mix = -1.0 to 1.0 

The amount of throttle control that is to be applied to the flap (this is rather uncommon, so it will mostly be left out. It can be used to compensate or emulate some throttle effects)

Spoiler/airbrake variables:

If the panel has no controls, these entries need not be defined.

brake_on = 0 or 1 

Set this variable to 1 to enable the spoiler/airbrake

brake_surface = <float>

The surface frontal surface of the fully extended brake.

brake_liftdest = <float> 

The amount of lift coefficient reduction with a fully extended brake. This is normally around 1.0, but must be experimented with.

brake_cd = <float> 

The drag coefficient of the fully extended brake.

brake_superp = 0 or 1 

Setting this to 1 enables superpositional mode. With this a brake can be added upon a wing and will have an effect on the lift and drag from the other wing panels only when the brake controller is on. When set to zero the wing panel is just a normal wing panel, that also has an airbrake/spoiler attached. Which to use depends on how the panelling of the wing is chosen.


Fuselage panel

The fuselage panel is a model of an aircraft fuselage. Its largest effect is to add drag to the aero model.

It is defined as

fuselage 
{ 
   name = xxx 
   position = xxx 
   ... 
}

Variable description:

name = <string> 

Panel name

position = [ x.x y.y z.z ] 

The panel position. This is the position where the drag force is applied, and does influence flight mechanics of your model, especially in spins. Start out by positioning this near to your model's centre of gravity.

ref_area = <float> 

Reference frontal area of the fuselage

ref_volume = <float> 

Reference volume of the fuselage. In most cases, this can be set to 1.0.

cd_front = frontal_drag_filenamename (but without the .cd extension) 

The frontal drag is defined in a name.cd file that is placed in the airfoils directory. Use this file to finetune your model's glide polar.

cd_side = <float> 

Sidewards drag coefficient

cd_top = <float> 

Top/bottom drag coefficient

k_y = 0.0 to 1.0 
k_z = 0.0 to 1.0 

These two factors set the magnitude of instability of the fuselage. Try something like 0.1 first. A larger value means more instability.

alpha_fuselage = <float> 

The fuselage's angle of incidence. Normally 0.0.

cd_landinggear = <float> 

The drag of an extended landing gear.


Linear aero model

Here are a sample aero.dat file when the linear aero model is used:

#-----------
# Main wing
#-----------
wing_area               = 17.0
wing_span               = 12.0
mean_chord              = 1.5
k_factor                = 1.5

#------------------
# Control surfaces
#------------------
aileron_limits          = [ -23.0 20.0 ]
elevator_limits         = [ -23.0 28.0 ]
rudder_limits           = [ -16.0 16.0 ]

flap_min                = 0.0
flap_max                = 1.0
flap_eff                = 0.2

#--------------------------
# Aerodynamic coefficients
# --------------------------
c_lift_0                = 0.410
c_lift_a                = 5.143
c_lift_elev             = 0.340
c_drag_0                = 0.08
c_drag_i                = 0.08
c_side_beta             = -0.31
c_side_rudder           = 0.25
c_yaw_beta              = 0.165
c _yaw_rudder            = -0.25
c_yaw_aileron           = 0.0
c_yaw_roll_rate         = 0.0
yaw_damping             = -0.099
c_pitch_0               = 0.02
c_pitch_a               = -0.8
c_pitch_elev            = -0.7
c_pitch_dot_a           = 0
pitch_damping           = -12.4
c_roll                  = 0.178
roll_damping            = -0.47

Here, a conventional coefficient based model is used to simulate the aircraft. If you have experience with such models you might recongnise the parameters and what they do.