X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FUIUCModel%2Fuiuc_iced_nonlin.cpp;h=30ac008fa5637fb57fc9a96fe5579e1548abf82d;hb=70b4f38ebccbafea664ed2310eaf990bd2b9edd8;hp=6a215d1a4568660801dd5c7aa60daf5aa8638bc2;hpb=e9dba2caa19746d70bb3f2efc9d718902361ee16;p=flightgear.git diff --git a/src/FDM/UIUCModel/uiuc_iced_nonlin.cpp b/src/FDM/UIUCModel/uiuc_iced_nonlin.cpp index 6a215d1a4..30ac008fa 100644 --- a/src/FDM/UIUCModel/uiuc_iced_nonlin.cpp +++ b/src/FDM/UIUCModel/uiuc_iced_nonlin.cpp @@ -2,6 +2,9 @@ // Version 020409 // read readme_020212.doc for information +// 11-21-2002 (RD) Added e code from Kishwar to fix negative lift problem at +// high etas + #include "uiuc_iced_nonlin.h" void Calc_Iced_Forces() @@ -10,8 +13,9 @@ void Calc_Iced_Forces() double alpha; double de; double eta_ref_wing = 0.08; // eta of iced data used for curve fit - double eta_ref_tail = 0.12; + double eta_ref_tail = 0.20; //changed from 0.12 10-23-2002 double eta_wing; + double e; //double delta_CL; // CL_clean - CL_iced; //double delta_CD; // CD_clean - CD_iced; //double delta_Cm; // CM_clean - CM_iced; @@ -25,16 +29,17 @@ void Calc_Iced_Forces() double KCm_de; double KCh; double CL_diff; + double CD_diff; - alpha = Alpha*RAD_TO_DEG; + alpha = Std_Alpha*RAD_TO_DEG; de = elevator*RAD_TO_DEG; // lift fits if (alpha < 16) { delta_CL = (0.088449 + 0.004836*alpha - 0.0005459*alpha*alpha + - 4.0859e-5*pow(alpha,3)); + 4.0859e-5*pow(alpha,3)); } else { @@ -43,12 +48,20 @@ void Calc_Iced_Forces() } KCL = -delta_CL/eta_ref_wing; eta_wing = 0.5*(eta_wing_left + eta_wing_right); - delta_CL = eta_wing*KCL; + if (eta_wing <= 0.1) + { + e = eta_wing; + } + else + { + e = -0.3297*exp(-5*eta_wing)+0.3; + } + delta_CL = e*KCL; // drag fit delta_CD = (-0.0089 + 0.001578*alpha - 0.00046253*pow(alpha,2) + - -4.7511e-5*pow(alpha,3) + 2.3384e-6*pow(alpha,4)); + -4.7511e-5*pow(alpha,3) + 2.3384e-6*pow(alpha,4)); KCD = -delta_CD/eta_ref_wing; delta_CD = eta_wing*KCD; @@ -57,7 +70,7 @@ void Calc_Iced_Forces() - 4.0692e-5*pow(alpha,3) + 1.7594e-6*pow(alpha,4)); delta_Cm_de = (-0.014928 - 0.0037783*alpha + 0.00039086*pow(de,2) - - 1.1304e-5*pow(de,3) - 1.8439e-6*pow(de,4)); + - 1.1304e-5*pow(de,3) - 1.8439e-6*pow(de,4)); delta_Cm = delta_Cm_a + delta_Cm_de; KCm_alpha = delta_Cm_a/eta_ref_wing; @@ -66,14 +79,14 @@ void Calc_Iced_Forces() // hinge moment if (alpha < 13) - { - delta_Ch_a = (-0.0012862 - 0.00022705*alpha + 1.5911e-5*pow(alpha,2) - + 5.4536e-7*pow(alpha,3)); - } + { + delta_Ch_a = (-0.0012862 - 0.00022705*alpha + 1.5911e-5*pow(alpha,2) + + 5.4536e-7*pow(alpha,3)); + } else - { - delta_Ch_a = 0; - } + { + delta_Ch_a = 0; + } delta_Ch_e = -0.0011851 - 0.00049924*de; delta_Ch = -(delta_Ch_a + delta_Ch_e); KCh = -delta_Ch/eta_ref_tail; @@ -81,31 +94,42 @@ void Calc_Iced_Forces() // rolling moment CL_diff = (eta_wing_left - eta_wing_right)*KCL; - delta_Cl = CL_diff/4; + delta_Cl = CL_diff/8.; // 10-23-02 Previously 4 + + //yawing moment + CD_diff = (eta_wing_left - eta_wing_right)*KCD; + delta_Cn = CD_diff/8.; } void add_ice_effects() { - CL_clean = -1*CZ*cos(Alpha) + CX*sin(Alpha); //Check later - CD_clean = -1*CZ*sin(Alpha) - CX*cos(Alpha); + CD_clean = -1*CX*Cos_alpha*Cos_beta - CY*Sin_beta - CZ*Sin_alpha*Cos_beta; + CY_clean = -1*CX*Cos_alpha*Sin_beta + CY*Cos_beta - CZ*Sin_alpha*Sin_beta; + CL_clean = CX*Sin_alpha - CZ*Cos_alpha; Cm_clean = Cm; Cl_clean = Cl; + Cn_clean = Cn; Ch_clean = Ch; - CL_iced = CL_clean + delta_CL; CD_iced = CD_clean + delta_CD; + CY_iced = CY_clean; + CL_iced = CL_clean + delta_CL; Cm_iced = Cm_clean + delta_Cm; Cl_iced = Cl_clean + delta_Cl; + Cn_iced = Cn_clean + delta_Cn; //Ch_iced = Ch_clean + delta_Ch; - CL = CL_iced; CD = CD_iced; + CY = CY_iced; + CL = CL_iced; Cm = Cm_iced; Cl = Cl_iced; + Cn = Cn_iced; //Ch = Ch_iced; - CZ = -1*CL*cos(Alpha) - CD*sin(Alpha); - CX = CL*sin(Alpha) - CD*cos(Alpha); + CX = -1*CD*Cos_alpha*Cos_beta - CY*Cos_alpha*Sin_beta + CL*Sin_alpha; + CY = -1*CD*Sin_beta + CY*Cos_beta; + CZ = -1*CD*Sin_alpha*Cos_beta - CY*Sin_alpha*Sin_beta - CL*Cos_alpha; }