]> git.mxchange.org Git - flightgear.git/blob - src/FDM/UIUCModel/uiuc_iced_nonlin.cpp
Updates to the UIUCModel code. This includes some big compile time
[flightgear.git] / src / FDM / UIUCModel / uiuc_iced_nonlin.cpp
1 //     SIS Twin Otter Iced aircraft Nonlinear model\r
2 //     Version 020409\r
3 //     read readme_020212.doc for information\r
4 \r
5 #include "uiuc_iced_nonlin.h"\r
6 \r
7 void Calc_Iced_Forces()\r
8         {\r
9         // alpha in deg\r
10           double alpha;\r
11           double de;\r
12         double eta_ref_wing = 0.08;                      // eta of iced data used for curve fit\r
13         double eta_ref_tail = 0.12;\r
14         double eta_wing;\r
15         //double delta_CL;                              // CL_clean - CL_iced;\r
16         //double delta_CD;                              // CD_clean - CD_iced;\r
17         //double delta_Cm;                              // CM_clean - CM_iced;\r
18         double delta_Cm_a;                              // (Cm_clean - Cm_iced) as a function of AoA;\r
19         double delta_Cm_de;                             // (Cm_clean - Cm_iced) as a function of de;\r
20         double delta_Ch_a;\r
21         double delta_Ch_e;\r
22         double KCL;\r
23         double KCD;\r
24         double KCm_alpha;\r
25         double KCm_de;\r
26         double KCh;\r
27         double CL_diff;\r
28         \r
29         \r
30         \r
31         alpha = Alpha*RAD_TO_DEG;\r
32         de = elevator*RAD_TO_DEG;\r
33         // lift fits\r
34         if (alpha < 16)\r
35                 {\r
36                 delta_CL = (0.088449 + 0.004836*alpha - 0.0005459*alpha*alpha +\r
37                                         4.0859e-5*pow(alpha,3));\r
38                 }\r
39         else\r
40                 {\r
41                 delta_CL = (-11.838 + 1.6861*alpha - 0.076707*alpha*alpha +\r
42                                         0.001142*pow(alpha,3));\r
43                 }\r
44         KCL = -delta_CL/eta_ref_wing;\r
45         eta_wing = 0.5*(eta_wing_left + eta_wing_right);\r
46         delta_CL = eta_wing*KCL;\r
47         \r
48                 \r
49         // drag fit\r
50         delta_CD = (-0.0089 + 0.001578*alpha - 0.00046253*pow(alpha,2) +\r
51                                         -4.7511e-5*pow(alpha,3) + 2.3384e-6*pow(alpha,4));\r
52         KCD = -delta_CD/eta_ref_wing;\r
53         delta_CD = eta_wing*KCD;\r
54         \r
55         // pitching moment fit\r
56         delta_Cm_a = (-0.01892 - 0.0056476*alpha + 1.0205e-5*pow(alpha,2)\r
57                       - 4.0692e-5*pow(alpha,3) + 1.7594e-6*pow(alpha,4));\r
58                                         \r
59         delta_Cm_de = (-0.014928 - 0.0037783*alpha + 0.00039086*pow(de,2)\r
60                                         - 1.1304e-5*pow(de,3) - 1.8439e-6*pow(de,4));\r
61                                         \r
62         delta_Cm = delta_Cm_a + delta_Cm_de;\r
63         KCm_alpha = delta_Cm_a/eta_ref_wing;\r
64         KCm_de = delta_Cm_de/eta_ref_tail;\r
65         delta_Cm = (0.75*eta_wing + 0.25*eta_tail)*KCm_alpha + (eta_tail)*KCm_de;\r
66         \r
67         // hinge moment\r
68         if (alpha < 13)\r
69                 {\r
70                 delta_Ch_a = (-0.0012862 - 0.00022705*alpha + 1.5911e-5*pow(alpha,2)\r
71                                                 + 5.4536e-7*pow(alpha,3));\r
72                 }\r
73         else\r
74                 {\r
75                 delta_Ch_a = 0;\r
76                 }\r
77         delta_Ch_e = -0.0011851 - 0.00049924*de;\r
78         delta_Ch = -(delta_Ch_a + delta_Ch_e);\r
79         KCh = -delta_Ch/eta_ref_tail;\r
80         delta_Ch = eta_tail*KCh;\r
81         \r
82         // rolling moment\r
83         CL_diff = (eta_wing_left - eta_wing_right)*KCL;\r
84         delta_Cl = CL_diff/4;\r
85         \r
86         }\r
87 \r
88 void add_ice_effects()\r
89 {\r
90   CL_clean = -1*CZ*cos(Alpha) + CX*sin(Alpha);  //Check later\r
91   CD_clean = -1*CZ*sin(Alpha) - CX*cos(Alpha);\r
92   Cm_clean = Cm;\r
93   Cl_clean = Cl;\r
94   Ch_clean = Ch;\r
95 \r
96   CL_iced = CL_clean + delta_CL;\r
97   CD_iced = CD_clean + delta_CD;\r
98   Cm_iced = Cm_clean + delta_Cm;\r
99   Cl_iced = Cl_clean + delta_Cl;\r
100   //Ch_iced = Ch_clean + delta_Ch;\r
101 \r
102   CL = CL_iced;\r
103   CD = CD_iced;\r
104   Cm = Cm_iced;\r
105   Cl = Cl_iced;\r
106   //Ch = Ch_iced;\r
107 \r
108   CZ = -1*CL*cos(Alpha) - CD*sin(Alpha);\r
109   CX = CL*sin(Alpha) - CD*cos(Alpha);\r
110 \r
111 }\r