1
0
Fork 0

Fix stability: CL and CD must be negative

This commit is contained in:
Erik Hofman 2020-09-04 11:44:37 +02:00
parent e8fe8345bf
commit 6bd87586b0
2 changed files with 21 additions and 21 deletions

View file

@ -106,14 +106,14 @@ FGAISim::FGAISim(double dt) :
xCp[YAW] = Cnp; xCp[YAW] = Cnp;
xCr[YAW] = Cnr; xCr[YAW] = Cnr;
xCq[LIFT] = CLq; xCq[LIFT] = -CLq;
xCadot[LIFT] = CLadot; xCadot[LIFT] = -CLadot;
xCq[PITCH] = Cmq; xCq[PITCH] = Cmq;
xCadot[PITCH] = Cmadot; xCadot[PITCH] = Cmadot;
xCDYLT.ptr()[MIN][LIFT] = CLmin; xCDYLT.ptr()[MIN][LIFT] = -CLmin;
xCDYLT.ptr()[MIN][DRAG] = CDmin; xCDYLT.ptr()[MIN][DRAG] = -CDmin;
inv_m = 1.0f/m; inv_m = 1.0f/m;
@ -520,7 +520,7 @@ FGAISim::update_velocity(float v)
qbar = 0.5f*rho*v*v; qbar = 0.5f*rho*v*v;
sigma = rho/density[0]; sigma = rho/density[0];
float Sqbar = S*qbar; float Sqbar = Sw*qbar;
float Sbqbar = Sqbar*b; float Sbqbar = Sqbar*b;
float Sqbarcbar = Sqbar*cbar; float Sqbarcbar = Sqbar*cbar;
@ -593,7 +593,7 @@ bool
FGAISim::load(std::string path) FGAISim::load(std::string path)
{ {
/* defaults for the Cessna 172p */ /* defaults for the Cessna 172p */
S = 174.0f; Sw = 174.0f;
cbar = 4.90f; cbar = 4.90f;
b = 35.8f; b = 35.8f;
@ -610,7 +610,7 @@ FGAISim::load(std::string path)
// positions are in inches // positions are in inches
cg[X] = -2.2f; cg[X] = -2.2f;
cg[Y] = 0.0f; cg[Y] = 0.0f;
cg[Z] = -22.5f; cg[Z] = -20.9f;
// gear ground contact points relative tot aero ref. pt. at (0,0,0) // gear ground contact points relative tot aero ref. pt. at (0,0,0)
no_gears = 3; no_gears = 3;
@ -658,22 +658,22 @@ FGAISim::load(std::string path)
// if propeller driven // if propeller driven
/* aerodynamic coefficients */ /* aerodynamic coefficients */
CLmin = 0.307f; CLmin = 0.007f;
CLa = 4.72f; CLa = 4.72f;
CLadot = 1.70f; CLadot = 1.70f;
CLq = 3.90f; CLq = 3.90f;
CLdf_n = 0.705f*df_max; CLdf_n = 0.705f*df_max;
CDmin = 0.027f; CDmin = 0.036f;
CDa = 0.158f; CDa = 0.13f;
CDb = 0.192f; CDb = 0.192f;
CDi = 0.0446f; CDi = 0.0446f;
CDdf_n = 0.052f*df_max; CDdf_n = 0.052f*df_max;
CYb = -0.31f; CYb = -0.31f;
CYp = 0.006f; CYp = -0.037f;
CYr = 0.262f; CYr = 0.21f;
CYdr_n = 0.091f*dr_max; CYdr_n = 0.187f*dr_max;
Clb = -0.322; // -0.057f; Clb = -0.322; // -0.057f;
Clp = -0.4840; // -0.613f; Clp = -0.4840; // -0.613f;
@ -682,16 +682,16 @@ FGAISim::load(std::string path)
Cldr_n = 0.0147f*dr_max; // 0.01f*dr_max; Cldr_n = 0.0147f*dr_max; // 0.01f*dr_max;
Cma = -1.8f; // -1.0f; Cma = -1.8f; // -1.0f;
Cmadot = -7.27f; // -4.42f; Cmadot = -5.2f; // -4.42f;
Cmq = -12.4f; // -10.5f; Cmq = -12.4f; // -10.5f;
Cmde_n = -1.122f*de_max; // -1.05f*de_max; Cmde_n = -1.28f*de_max; // -1.05f*de_max;
Cmdf_n = -0.2177f*df_max; // -0.059f*df_max; Cmdf_n = -0.2177f*df_max; // -0.059f*df_max;
Cnb = -0.0587f; // -0.0630f; Cnb = 0.065f; // 0.0630f;
Cnp = -0.0278f; // -0.0028f; Cnp = -0.03f; // -0.0028f;
Cnr = -0.0937f; // -0.0681f; Cnr = -0.099f; // -0.0681f;
Cnda_n = -0.0053f*da_max; // -0.0100f*da_max; Cnda_n = -0.0053f*da_max; // -0.0100f*da_max;
Cndr_n = -0.043f*dr_max; // -0.0398f*dr_max; Cndr_n = -0.0657f*dr_max; // -0.0398f*dr_max;
return true; return true;
} }

View file

@ -162,7 +162,7 @@ public:
xCDYLT.ptr()[BETA][DRAG] = -CDb*std::abs(f); xCDYLT.ptr()[BETA][DRAG] = -CDb*std::abs(f);
xCDYLT.ptr()[BETA][SIDE] = CYb*f; xCDYLT.ptr()[BETA][SIDE] = CYb*f;
xClmnT.ptr()[BETA][ROLL] = Clb*f; xClmnT.ptr()[BETA][ROLL] = Clb*f;
xClmnT.ptr()[BETA][YAW] = -Cnb*f; xClmnT.ptr()[BETA][YAW] = Cnb*f;
AOA[BETA] = f; AOA[BETA] = f;
} }
inline float get_alpha_rad() { inline float get_alpha_rad() {
@ -227,7 +227,7 @@ private:
aiVec3 gear_pos[AISIM_MAX]; /* pos in structural frame */ aiVec3 gear_pos[AISIM_MAX]; /* pos in structural frame */
aiVec3 cg; /* center of gravity */ aiVec3 cg; /* center of gravity */
aiVec4 I; /* inertia */ aiVec4 I; /* inertia */
float S = 0.0f; /* wing area */ float Sw = 0.0f; /* wing area */
float cbar = 0.0f; /* mean average chord */ float cbar = 0.0f; /* mean average chord */
float b = 0.0f; /* wing span */ float b = 0.0f; /* wing span */
float m = 0.0f; /* mass */ float m = 0.0f; /* mass */