171 lines
4.4 KiB
C
171 lines
4.4 KiB
C
|
/***************************************************************************
|
||
|
|
||
|
TITLE: Cherokee_aero
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
FUNCTION: Linear aerodynamics model
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
MODULE STATUS: developmental
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
GENEALOGY:
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
MODIFICATION HISTORY:
|
||
|
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
REFERENCES:
|
||
|
|
||
|
Based upon book:
|
||
|
Barnes W. McCormick,
|
||
|
"Aerodynamics, Aeronautics and Flight Mechanics",
|
||
|
John Wiley & Sons,1995, ISBN 0-471-11087-6
|
||
|
|
||
|
any suggestions, corrections, aditional data, flames, everything to
|
||
|
Gordan Sikic
|
||
|
gsikic@public.srce.hr
|
||
|
|
||
|
This source is not checked in this configuration in any way.
|
||
|
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
CALLED BY:
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
CALLS TO:
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
INPUTS:
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
|
||
|
OUTPUTS:
|
||
|
|
||
|
--------------------------------------------------------------------------*/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#include <float.h>
|
||
|
#include <math.h>
|
||
|
#include "ls_types.h"
|
||
|
#include "ls_generic.h"
|
||
|
#include "ls_cockpit.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void aero()
|
||
|
/*float ** Cherokee (float t, VectorStanja &X, float *U)*/
|
||
|
{
|
||
|
static float
|
||
|
Cza = -19149.0/(146.69*146.69*157.5/2.0*0.00238),
|
||
|
Czat = -73.4*4*146.69/0.00238/157.5/5.25,
|
||
|
Czq = -2.655*4*2400.0/32.2/0.00238/157.5/146.69/5.25,
|
||
|
Cma = -21662.0 *2/146.69/0.00238/157.5/146.69/5.25,
|
||
|
Cmat = -892.4 *4/146.69/0.00238/157.5/146.69/5.25,
|
||
|
Cmq = -2405.1 *4/0.00238/157.5/146.69/5.25/5.25,
|
||
|
Czde = -1050.49 *2/0.00238/157.5/146.69/146.69,
|
||
|
Cmde = -12771.9 *2/0.00238/157.5/146.69/146.69/5.25,
|
||
|
Clb = -12891.0/(146.69*146.69*157.5/2.0*0.00238)/30.0,
|
||
|
Clp = -0.4704,
|
||
|
Clr = 0.1665,
|
||
|
Cyb = -1169.8/(146.69*146.69*157.5/2.0*0.00238),
|
||
|
Cyp = -0.0342,
|
||
|
Cnb = 11127.2/(146.69*146.69*157.5/2.0*0.00238)/30.0,
|
||
|
Cnp = -0.0691,
|
||
|
Cnr = -0.0930,
|
||
|
Cyf = -14.072/(146.69*146.69*157.5/2.0*0.00238),
|
||
|
Cyps = 89.229/(146.69*146.69*157.5/2.0*0.00238),
|
||
|
Clf = -5812.4/(146.69*146.69*157.5/2.0*0.00238)/30.0, //%Clda ?
|
||
|
Cnf = -853.93/(146.69*146.69*157.5/2.0*0.00238)/30.0, //%Cnda ?
|
||
|
Cnps = -1149.0/(146.69*146.69*157.5/2.0*0.00238)/30.0, //%Cndr ?
|
||
|
Cyr = 1.923/(146.69*146.69*157.5/2.0*0.00238),
|
||
|
|
||
|
Cx0 = -0.4645/(157.5*0.3048*0.3048),
|
||
|
|
||
|
Cz0 = -0.11875,
|
||
|
Cm0 = 0.0959,
|
||
|
|
||
|
Clda = -5812.4/(146.69*146.69*157.5/2.0*0.00238)/30.0, // Clf
|
||
|
Cnda = -853.93/(146.69*146.69*157.5/2.0*0.00238)/30.0, // Cnf
|
||
|
Cndr = -1149.0/(146.69*146.69*157.5/2.0*0.00238)/30.0, // Cnps
|
||
|
|
||
|
/*
|
||
|
Possible problems: convention about positive control surfaces offset
|
||
|
*/
|
||
|
elevator = 0.0, // 20.0 * 180.0/57.3 * Long_control
|
||
|
aileron = 0.0, // 30.0 * 180.0/57.3 * Lat_control
|
||
|
rudder = 0.0, // 30.0 * 180.0/57.3 * Rudder_pedal,
|
||
|
|
||
|
|
||
|
// m = 2400/32.2, // mass
|
||
|
S = 157.5, // wing area
|
||
|
b = 30.0, // wing span
|
||
|
c = 5.25, // main aerodynamic chrod
|
||
|
|
||
|
// Ixyz[3] = {1070.0*14.59*0.3048*0.3048, 1249.0*14.59*0.3048*0.3048, 2312.0*14.59*0.3048*0.3048},
|
||
|
// Fa[3],
|
||
|
// Ma[3],
|
||
|
// *RetVal[4] = {&m, Ixyz, Fa, Ma};
|
||
|
|
||
|
|
||
|
// float
|
||
|
V = 0.0, // V_rel_wind
|
||
|
qd = 0.0, // Density*V*V/2.0, //dinamicki tlak
|
||
|
|
||
|
Cx,Cy,Cz,
|
||
|
Cl,Cm,Cn,
|
||
|
p,q,r;
|
||
|
|
||
|
|
||
|
/* derivatives are defined in "wind" axes so... */
|
||
|
p = P_body*Cos_alpha + R_body*Sin_alpha;
|
||
|
q = Q_body;
|
||
|
r = -P_body*Sin_alpha + R_body*Cos_alpha;
|
||
|
|
||
|
|
||
|
|
||
|
Cz = Cz0 + Cza*Alpha + Czat*(Alpha_dot*c/2.0/V) + Czq*(q*c/2.0/V) + Czde * elevator;
|
||
|
Cm = Cm0 + Cma*Alpha + Cmat*(Alpha_dot*c/2.0/V) + Cmq*(q*c/2.0/V) + Cmde * elevator;
|
||
|
|
||
|
Cx = Cx0 - (Cza*Alpha)*(Cza*Alpha)/(M_PI*5.71*0.6);
|
||
|
Cl = Clb*Beta + Clp*(p*b/2.0/V) + Clr*(r*b/2.0/V) + Clda * aileron;
|
||
|
|
||
|
Cy = Cyb*Beta + Cyr*(r*b/2.0/V);
|
||
|
Cn = Cnb*Beta + Cnp*(p*b/2.0/V) + Cnr*(r*b/2.0/V) + Cndr * rudder;
|
||
|
|
||
|
/* back to body axes */
|
||
|
{
|
||
|
float
|
||
|
CD = Cx,
|
||
|
CL = Cz;
|
||
|
|
||
|
Cx = CD - CL*Sin_alpha;
|
||
|
Cz = CL;
|
||
|
}
|
||
|
|
||
|
/* AD forces and moments */
|
||
|
F_X_aero = Cx*qd*S;
|
||
|
F_Y_aero = Cy*qd*S;
|
||
|
F_Z_aero = Cz*qd*S;
|
||
|
|
||
|
M_l_aero = (Cl*Cos_alpha - Cn*Sin_alpha)*b*qd*S;
|
||
|
M_m_aero = Cm*c*qd*S;
|
||
|
M_n_aero = (Cl*Sin_alpha + Cn*Cos_alpha)*b*qd*S;
|
||
|
}
|
||
|
|
||
|
|
||
|
|