1 /**********************************************************************
3 FILENAME: uiuc_coef_pitch.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: computes aggregated aerodynamic pitch coefficient
9 ----------------------------------------------------------------------
13 ----------------------------------------------------------------------
15 REFERENCES: Roskam, Jan. Airplane Flight Dynamics and Automatic
16 Flight Controls, Part I. Lawrence, KS: DARcorporation,
19 ----------------------------------------------------------------------
21 HISTORY: 04/15/2000 initial release
22 10/25/2001 (RD) Added new variables needed for the non-
23 linear Twin Otter model at zero flaps
25 11/12/2001 (RD) Added new variables needed for the non-
26 linear Twin Otter model with flaps
27 (Cmfxxf). Zero flap vairables removed.
28 02/13/2002 (RD) Added variables so linear aero model
29 values can be recorded
30 02/18/2002 (RD) Added uiuc_3Dinterp_quick() function
31 for a quicker 3D interpolation. Takes
32 advantage of "nice" data.
34 ----------------------------------------------------------------------
36 AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
37 Jeff Scott <jscott@mail.com>
38 Robert Deters <rdeters@uiuc.edu>
40 ----------------------------------------------------------------------
44 ----------------------------------------------------------------------
48 -pitch coefficient components
52 ----------------------------------------------------------------------
56 ----------------------------------------------------------------------
58 CALLED BY: uiuc_coefficients.cpp
60 ----------------------------------------------------------------------
62 CALLS TO: uiuc_1Dinterpolation
68 ----------------------------------------------------------------------
70 COPYRIGHT: (C) 2000 by Michael Selig
72 This program is free software; you can redistribute it and/or
73 modify it under the terms of the GNU General Public License
74 as published by the Free Software Foundation.
76 This program is distributed in the hope that it will be useful,
77 but WITHOUT ANY WARRANTY; without even the implied warranty of
78 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
79 GNU General Public License for more details.
81 You should have received a copy of the GNU General Public License
82 along with this program; if not, write to the Free Software
83 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
84 USA or view http://www.gnu.org/copyleft/gpl.html.
86 **********************************************************************/
88 #include "uiuc_coef_pitch.h"
91 void uiuc_coef_pitch()
99 command_list = aeroPitchParts -> getCommands();
101 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
103 linetoken1 = aeroPitchParts -> getToken(*command_line, 1);
104 linetoken2 = aeroPitchParts -> getToken(*command_line, 2);
106 switch(Cm_map[linetoken2])
112 Cmo = uiuc_ice_filter(Cmo_clean,kCmo);
122 Cm_a = uiuc_ice_filter(Cm_a_clean,kCm_a);
124 Cm_a_save = Cm_a * Alpha;
132 Cm_a2 = uiuc_ice_filter(Cm_a2_clean,kCm_a2);
134 Cm_a2_save = Cm_a2 * Alpha * Alpha;
135 Cm += Cm_a2 * Alpha * Alpha;
142 Cm_adot = uiuc_ice_filter(Cm_adot_clean,kCm_adot);
144 /* Cm_adot must be mulitplied by cbar/2U
145 (see Roskam Control book, Part 1, pg. 147) */
146 Cm_adot_save = Cm_adot * Alpha_dot * cbar_2U;
147 //Cm += Cm_adot * Alpha_dot * cbar_2U;
148 if (eta_q_Cm_adot_fac)
150 Cm += Cm_adot_save * eta_q_Cm_adot_fac;
162 Cm_q = uiuc_ice_filter(Cm_q_clean,kCm_q);
164 /* Cm_q must be mulitplied by cbar/2U
165 (see Roskam Control book, Part 1, pg. 147) */
166 Cm_q_save = Cm_q * Q_body * cbar_2U;
167 // Cm += Cm_q * Q_body * cbar_2U;
170 Cm += Cm_q_save * eta_q_Cm_q_fac;
180 Cm_ih_save = Cm_ih * ih;
188 Cm_de = uiuc_ice_filter(Cm_de_clean,kCm_de);
190 Cm_de_save = Cm_de * elevator;
191 Cm += Cm_de * elevator;
198 Cm_b2 = uiuc_ice_filter(Cm_b2_clean,kCm_b2);
200 Cm_b2_save = Cm_b2 * Beta * Beta;
201 Cm += Cm_b2 * Beta * Beta;
208 Cm_r = uiuc_ice_filter(Cm_r_clean,kCm_r);
210 Cm_r_save = Cm_r * R_body * b_2U;
211 Cm += Cm_r * R_body * b_2U;
218 Cm_df = uiuc_ice_filter(Cm_df_clean,kCm_df);
220 Cm_df_save = Cm_df * flap;
226 CmfaI = uiuc_1Dinterpolation(Cmfa_aArray,
235 // compute the induced velocity on the tail to account for tail downwash
236 /* gamma_wing = V_rel_wind * Sw * CL / (2.0 * bw);
238 w_induced = w_coef * gamma_wing;
239 downwash_angle = atan(w_induced/V_rel_wind);
240 AlphaTail = Alpha - downwash_angle;
241 CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
248 CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
256 if (eta_q_Cmfade_fac)
258 Cm += CmfadeI * eta_q_Cmfade_fac;
268 CmfdfI = uiuc_1Dinterpolation(Cmfdf_dfArray,
277 CmfadfI = uiuc_2Dinterpolation(Cmfadf_aArray,
289 if (Cmfabetaf_nice == 1)
290 CmfabetafI = uiuc_3Dinterp_quick(Cmfabetaf_fArray,
291 Cmfabetaf_aArray_nice,
292 Cmfabetaf_bArray_nice,
301 CmfabetafI = uiuc_3Dinterpolation(Cmfabetaf_fArray,
305 Cmfabetaf_nAlphaArray,
316 if (Cmfadef_nice == 1)
317 CmfadefI = uiuc_3Dinterp_quick(Cmfadef_fArray,
319 Cmfadef_deArray_nice,
328 CmfadefI = uiuc_3Dinterpolation(Cmfadef_fArray,
343 q_nondim = Q_body * cbar_2U;
344 if (Cmfaqf_nice == 1)
345 CmfaqfI = uiuc_3Dinterp_quick(Cmfaqf_fArray,
356 CmfaqfI = uiuc_3Dinterpolation(Cmfaqf_fArray,
375 // end uiuc_coef_pitch.cpp