SDK Question create airfoild lift coeficient CL calculation ?

Woodylepic

New member
Joined
Dec 29, 2009
Messages
71
Reaction score
0
Points
0
static const double AOA[HUIT] = {-180*RAD,-135*RAD,-90*RAD,-45*RAD,45*RAD,90*RAD,135*RAD,180*RAD
static const double CL[HUIT] = { 0, +0.3, 0, -0.3, +0.3, 0, -0.3, 0};//LIFT COEF


I have some trouble to enderstand CL ?

CL = L/(Q*A)
L= LIFT FORCE IN NEWTON
Q= DYNAMIC PRESSURE = (.5*P*(V^2))
P=DENSITY OF AIR IN KPA
A= WING AREA IM M^2
V= WIND SPEED M/S

So CL is proportional of speed, air press, and inclination so that change whit speed, air press and inclination

in Orbiter (Lift Coef fonction) how Orbiter calculate Lift Coef CL ???

How do we calculate CL whit Angle ?

If somebody very good in Orbiter programming can tel me how he calculate CL,PD,CDI,CDE, etc etc that will help a lot of newbie like me to enderstand how is work, thank you.
 
Hi, first of all: Welcome to the Orbiter community!

Orbiter uses quite realistic methods to calculate the physical properties of its vessels, but it is hard to understand the physics behind it just from the programming examples.

I suggest to start with the basics by reading other sources, like
http://en.wikipedia.org/wiki/Lift_(force)

For the programming example above:
The two lines give the lift coefficient (CL) for specific angles of attack (AOA).
Values in between (like for example for +5° AOA) are linear interpolated between the nearest two values.

The AOA table starts with a nose-down inverted attitude of the vessel (nose pointing aft, vessel is heads down), which may be somewhat confusing.
Better look at the values between -45° and +45° AOA. Here the CL starts with -0.3, passes through 0 (linear interpolated at AOA 0°) and goes up to +0.3 when the vessels nose is pointing 45° up. Here it seems quite obvious that when the nose is pointing down, the lift is negative (downward force) and changes to positive when the nose is pointing up. If the AOA increases further the lift diminishes while more and more drag is produced (that would be the CW value).

However, this is a simplistic implementation of an airplane lift coefficient, and more sophisticated vessels (like the Atlantis shuttle) have different coefficients.

Note: You cannot calculate the CL and CW values in Orbiter. You have to take them from literature and insert the proper values in the CL vs. AOA table. A good place to start is
http://en.wikipedia.org/wiki/Angle_of_attack
 
Hi, first of all: Welcome to the Orbiter community!

Orbiter uses quite realistic methods to calculate the physical properties of its vessels, but it is hard to understand the physics behind it just from the programming examples.

I suggest to start with the basics by reading other sources, like
http://en.wikipedia.org/wiki/Lift_(force)

For the programming example above:
The two lines give the lift coefficient (CL) for specific angles of attack (AOA).
Values in between (like for example for +5° AOA) are linear interpolated between the nearest two values.

The AOA table starts with a nose-down inverted attitude of the vessel (nose pointing aft, vessel is heads down), which may be somewhat confusing.
Better look at the values between -45° and +45° AOA. Here the CL starts with -0.3, passes through 0 (linear interpolated at AOA 0°) and goes up to +0.3 when the vessels nose is pointing 45° up. Here it seems quite obvious that when the nose is pointing down, the lift is negative (downward force) and changes to positive when the nose is pointing up. If the AOA increases further the lift diminishes while more and more drag is produced (that would be the CW value).

However, this is a simplistic implementation of an airplane lift coefficient, and more sophisticated vessels (like the Atlantis shuttle) have different coefficients.

Note: You cannot calculate the CL and CW values in Orbiter. You have to take them from literature and insert the proper values in the CL vs. AOA table. A good place to start is
http://en.wikipedia.org/wiki/Angle_of_attack

Thank you

First im not completely a newbye guys, i have work on Sts addon whit Gazza and have made Satcom and Little Joe II projet (im working on a new serie of Little JoeII mesch and DLL projet finisch at 40% for now, its is not a projet i will finisch soon, im working on it in my free time.


I know how to calculate CL whit angle, but in Orbiter how they do to calculate this CL
?

In Orbiter they are no speed value in the lift coeficient ?

How they calculate it ?

Whit Airfoils calculator (from Nasa educational website) i can calculate CL whit reasonable precision

i enter my span, area, and speed but in Orbiter how ?

i know now how to calculate CL but i just whant to know how to calculate CL coeficient. in Orbiter.
 
Last edited:
For a blunt body (like a capsule) the lift is somewhat different from a classical airfoil. Below is the code I use for the CEV-Orion capsule. It provides some lift when re-entering in a ass-first, heads down attitude.

The CL and CW forces must be combined with a proper location of the (virtual) airfoil to ensure the capsule stays in the reentry attitude and movements are damped sufficiently.

Code:
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]
// ==============================================================
// Airfoil coefficient functions
// Return lift, moment and zero-lift drag coefficients as a
// function of angle of attack (alpha or beta)
// ==============================================================
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] VLiftCoeff ([/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] aoa, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] M, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] Re, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] *cl, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] *cm, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] *cd)[/COLOR]
{
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] step = RAD*30.0;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] istep = 1.0/step;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] nabsc = 13;
[/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Angle of attack -180 -150 -120 -90 -60 -30 0 30 60 90 120 150 180
// static const double CL[nabsc] = { 0, -0.12, -0.1, 0, 0, 0, 0, 0, 0, 0, 0.1, 0.12, 0};
// static const double CM[nabsc] = { 0, 0.0002, 0.0004, 0.0004, 0.0003, 0.0002, 0, -0.0002,-0.0003,-0.0004,-0.0004,-0.0002, 0};
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] CL[nabsc] = { 0, -0.12, -0.1, 0, 0, 0, 0, 0, 0, 0, 0.1, 0.12, 0};
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] CM[nabsc] = { 0, -0.0002,-0.0004, -0.0004,-0.0003,-0.0002, 0, 0.0002, 0.0003, 0.0004, 0.0004,0.0002, 0};
[/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// lift and moment coefficients from -180 to 180 in 30 degree steps.
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]aoa += PI;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] idx = max (0, min (11, ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])(aoa*istep)));
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] d = aoa*istep - idx;
*cl = CL[idx] + (CL[idx+1]-CL[idx])*d;
*cm = ( CM[idx] + (CM[idx+1]-CM[idx])*d ) / 10;
*cd = 0.25 + oapiGetInducedDrag (*cl, 1.27, 0.3);
}
[/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// 2. horizontal lift component (vertical stabiliser and body)
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] HLiftCoeff ([/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] beta, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] M, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] Re, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] *cl, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] *cm, [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] *cd)[/COLOR]
{
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] step = RAD*30;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] istep = 1.0/step;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] nabsc = 13;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]const[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] CL[nabsc] = { 0, -0.1, -0.1, 0, 0, 0, 0, 0, 0, 0, 0.1, 0.1, 0};
beta += PI;
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] idx = max (0, min (11, ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])(beta*istep)));
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] d = beta*istep - idx;
*cl = CL[idx] + (CL[idx+1]-CL[idx])*d;
*cm = 0.0;
*cd = 0.25 + oapiGetInducedDrag (*cl, 1.27, 0.3);
}
[/SIZE]

With the vertical airfoil (see below) slightly off-center in y-direction, the capsule flies with a small AOA, providing a little lift. In reality this is achieved by the mass center being slightly offset from the geometrical center of the capsule.

The RotDrag dampens the roll, yaw and pitch rotations.

Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]
void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] CEV::SetConfig2_Reentry([/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000])[/COLOR]
{ SetSize (6);
SetEmptyMass (8532);
SetPMI (_V(1,1,1));[/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]SetCrossSections (_V(24,28,19));
SetWingAspect (1);
SetWingEffectiveness (1);
SetPitchMomentScale (-1e-4);
SetBankMomentScale (-1e-4);
SetRotDrag (_V(0.01,0.01,0.005));
...
[SIZE=2]CreateAirfoil (LIFT_VERTICAL, _V(0, 0.01,0.1), VLiftCoeff, 5.5, 0, 1.27);
CreateAirfoil (LIFT_HORIZONTAL, _V(0, 0, 0.01), HLiftCoeff, 5.5, 0, 1.27);
...
[/SIZE][/SIZE]
 
Offseting the Center of pression or the mesch COG of the capsule assure a very good stability and maneuvrability !

CEV-Orion capsule it is the projet to go to mars ? its a big rocket !

Thank for the reply Francis

but how do you have calculate CL ? is there a way to calcule that or is just whit pifometer and testing the capsule again and again ?
 
Last edited:
You can use program to estimate the coefficient of lift and drag, but I can't think of one that covers subsonic and supersonic area... other then that, you can look at coefficients of similar vessels and do "corrections" according to specific vessel areas...
 
With the help of Google I found an interesting document on "Blunt body aerodynamics for hypersonic low density flows" on a capsule with Apollo / CEV shape:
http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20060028188_2006230545.pdf

Most data were derived from fluid dynamics calculations. The behaviour of a vessel in such a thin atmosphere and at supersonic speed is very different from dense atmosphere and low speed flight. For the CEV I only took care of the supersonic part, as here most of the reentry occurs. The remaining slow aerodynamic flight is mainly dominated by drag, not by lift.
 
Back
Top