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;
154 Cm_q = uiuc_ice_filter(Cm_q_clean,kCm_q);
156 /* Cm_q must be mulitplied by cbar/2U
157 (see Roskam Control book, Part 1, pg. 147) */
158 Cm_q_save = Cm_q * Q_body * cbar_2U;
159 Cm += Cm_q * Q_body * cbar_2U;
164 Cm_ih_save = Cm_ih * ih;
172 Cm_de = uiuc_ice_filter(Cm_de_clean,kCm_de);
174 Cm_de_save = Cm_de * elevator;
175 Cm += Cm_de * elevator;
182 Cm_b2 = uiuc_ice_filter(Cm_b2_clean,kCm_b2);
184 Cm_b2_save = Cm_b2 * Beta * Beta;
185 Cm += Cm_b2 * Beta * Beta;
192 Cm_r = uiuc_ice_filter(Cm_r_clean,kCm_r);
194 Cm_r_save = Cm_r * R_body * b_2U;
195 Cm += Cm_r * R_body * b_2U;
202 Cm_df = uiuc_ice_filter(Cm_df_clean,kCm_df);
204 Cm_df_save = Cm_df * flap;
210 CmfaI = uiuc_1Dinterpolation(Cmfa_aArray,
219 CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
231 CmfdfI = uiuc_1Dinterpolation(Cmfdf_dfArray,
240 CmfadfI = uiuc_2Dinterpolation(Cmfadf_aArray,
252 if (Cmfabetaf_nice == 1)
253 CmfabetafI = uiuc_3Dinterp_quick(Cmfabetaf_fArray,
254 Cmfabetaf_aArray_nice,
255 Cmfabetaf_bArray_nice,
264 CmfabetafI = uiuc_3Dinterpolation(Cmfabetaf_fArray,
268 Cmfabetaf_nAlphaArray,
279 if (Cmfadef_nice == 1)
280 CmfadefI = uiuc_3Dinterp_quick(Cmfadef_fArray,
282 Cmfadef_deArray_nice,
291 CmfadefI = uiuc_3Dinterpolation(Cmfadef_fArray,
306 q_nondim = Q_body * cbar_2U;
307 if (Cmfaqf_nice == 1)
308 CmfaqfI = uiuc_3Dinterp_quick(Cmfaqf_fArray,
319 CmfaqfI = uiuc_3Dinterpolation(Cmfaqf_fArray,
338 // end uiuc_coef_pitch.cpp