1 /**********************************************************************
3 FILENAME: uiuc_coef_lift.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: computes aggregated aerodynamic lift 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
23 ----------------------------------------------------------------------
25 AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
26 Jeff Scott <jscott@mail.com>
28 ----------------------------------------------------------------------
32 ----------------------------------------------------------------------
36 -lift coefficient components
40 ----------------------------------------------------------------------
44 ----------------------------------------------------------------------
46 CALLED BY: uiuc_coefficients.cpp
48 ----------------------------------------------------------------------
50 CALLS TO: uiuc_1Dinterpolation
54 ----------------------------------------------------------------------
56 COPYRIGHT: (C) 2000 by Michael Selig
58 This program is free software; you can redistribute it and/or
59 modify it under the terms of the GNU General Public License
60 as published by the Free Software Foundation.
62 This program is distributed in the hope that it will be useful,
63 but WITHOUT ANY WARRANTY; without even the implied warranty of
64 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
65 GNU General Public License for more details.
67 You should have received a copy of the GNU General Public License
68 along with this program; if not, write to the Free Software
69 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
70 USA or view http://www.gnu.org/copyleft/gpl.html.
72 **********************************************************************/
74 #include "uiuc_coef_lift.h"
83 command_list = aeroLiftParts -> getCommands();
85 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
87 linetoken1 = aeroLiftParts -> getToken(*command_line, 1);
88 linetoken2 = aeroLiftParts -> getToken(*command_line, 2);
90 switch (CL_map[linetoken2])
96 CLo = uiuc_ice_filter(CLo_clean,kCLo);
99 CLclean_wing += CLo_clean;
100 CLclean_tail += CLo_clean;
112 CL_a = uiuc_ice_filter(CL_a_clean,kCL_a);
115 CLclean_wing += CL_a_clean * Alpha;
116 CLclean_tail += CL_a_clean * Alpha;
117 CLiced_wing += CL_a * Alpha;
118 CLiced_tail += CL_a * Alpha;
128 CL_adot = uiuc_ice_filter(CL_adot_clean,kCL_adot);
131 CLclean_wing += CL_adot_clean * Alpha_dot * cbar_2U;
132 CLclean_tail += CL_adot_clean * Alpha_dot * ch_2U;
133 CLiced_wing += CL_adot * Alpha_dot * cbar_2U;
134 CLiced_tail += CL_adot * Alpha_dot * ch_2U;
137 /* CL_adot must be mulitplied by cbar/2U
138 (see Roskam Control book, Part 1, pg. 147) */
139 CL += CL_adot * Alpha_dot * cbar_2U;
146 CL_q = uiuc_ice_filter(CL_q_clean,kCL_q);
149 CLclean_wing += CL_q_clean * Theta_dot * cbar_2U;
150 CLclean_tail += CL_q_clean * Theta_dot * ch_2U;
151 CLiced_wing += CL_q * Theta_dot * cbar_2U;
152 CLiced_tail += CL_q * Theta_dot * ch_2U;
155 /* CL_q must be mulitplied by cbar/2U
156 (see Roskam Control book, Part 1, pg. 147) */
157 /* why multiply by Theta_dot instead of Q_body?
158 that is what is done in c172_aero.c; assume it
159 has something to do with axes systems */
160 CL += CL_q * Theta_dot * cbar_2U;
172 CL_de = uiuc_ice_filter(CL_de_clean,kCL_de);
175 CLclean_wing += CL_de_clean * elevator;
176 CLclean_tail += CL_de_clean * elevator;
177 CLiced_wing += CL_de * elevator;
178 CLiced_tail += CL_de * elevator;
181 CL += CL_de * elevator;
186 CLfaI = uiuc_1Dinterpolation(CLfa_aArray,
195 CLfadeI = uiuc_2Dinterpolation(CLfade_aArray,
207 CLfdfI = uiuc_1Dinterpolation(CLfdf_dfArray,
216 CLfadfI = uiuc_2Dinterpolation(CLfadf_aArray,
230 CZo = uiuc_ice_filter(CZo_clean,kCZo);
233 CZclean_wing += CZo_clean;
234 CZclean_tail += CZo_clean;
246 CZ_a = uiuc_ice_filter(CZ_a_clean,kCZ_a);
249 CZclean_wing += CZ_a_clean * Alpha;
250 CZclean_tail += CZ_a_clean * Alpha;
251 CZiced_wing += CZ_a * Alpha;
252 CZiced_tail += CZ_a * Alpha;
262 CZ_a2 = uiuc_ice_filter(CZ_a2_clean,kCZ_a2);
265 CZclean_wing += CZ_a2_clean * Alpha * Alpha;
266 CZclean_tail += CZ_a2_clean * Alpha * Alpha;
267 CZiced_wing += CZ_a2 * Alpha * Alpha;
268 CZiced_tail += CZ_a2 * Alpha * Alpha;
271 CZ += CZ_a2 * Alpha * Alpha;
278 CZ_a3 = uiuc_ice_filter(CZ_a3_clean,kCZ_a3);
281 CZclean_wing += CZ_a3_clean * Alpha * Alpha * Alpha;
282 CZclean_tail += CZ_a3_clean * Alpha * Alpha * Alpha;
283 CZiced_wing += CZ_a3 * Alpha * Alpha * Alpha;
284 CZiced_tail += CZ_a3 * Alpha * Alpha * Alpha;
287 CZ += CZ_a3 * Alpha * Alpha * Alpha;
294 CZ_adot = uiuc_ice_filter(CZ_adot_clean,kCZ_adot);
297 CZclean_wing += CZ_adot_clean * Alpha_dot * cbar_2U;
298 CZclean_tail += CZ_adot_clean * Alpha_dot * ch_2U;
299 CZiced_wing += CZ_adot * Alpha_dot * cbar_2U;
300 CZiced_tail += CZ_adot * Alpha_dot * ch_2U;
303 /* CZ_adot must be mulitplied by cbar/2U
304 (see Roskam Control book, Part 1, pg. 147) */
305 CZ += CZ_adot * Alpha_dot * cbar_2U;
312 CZ_q = uiuc_ice_filter(CZ_q_clean,kCZ_q);
315 CZclean_wing += CZ_q_clean * Q_body * cbar_2U;
316 CZclean_tail += CZ_q_clean * Q_body * ch_2U;
317 CZiced_wing += CZ_q * Q_body * cbar_2U;
318 CZiced_tail += CZ_q * Q_body * ch_2U;
321 /* CZ_q must be mulitplied by cbar/2U
322 (see Roskam Control book, Part 1, pg. 147) */
323 CZ += CZ_q * Q_body * cbar_2U;
330 CZ_de = uiuc_ice_filter(CZ_de_clean,kCZ_de);
333 CZclean_wing += CZ_de_clean * elevator;
334 CZclean_tail += CZ_de_clean * elevator;
335 CZiced_wing += CZ_de * elevator;
336 CZiced_tail += CZ_de * elevator;
339 CZ += CZ_de * elevator;
346 CZ_deb2 = uiuc_ice_filter(CZ_deb2_clean,kCZ_deb2);
349 CZclean_wing += CZ_deb2_clean * elevator * Beta * Beta;
350 CZclean_tail += CZ_deb2_clean * elevator * Beta * Beta;
351 CZiced_wing += CZ_deb2 * elevator * Beta * Beta;
352 CZiced_tail += CZ_deb2 * elevator * Beta * Beta;
355 CZ += CZ_deb2 * elevator * Beta * Beta;
362 CZ_df = uiuc_ice_filter(CZ_df_clean,kCZ_df);
365 CZclean_wing += CZ_df_clean * flap;
366 CZclean_tail += CZ_df_clean * flap;
367 CZiced_wing += CZ_df * flap;
368 CZiced_tail += CZ_df * flap;
378 CZ_adf = uiuc_ice_filter(CZ_adf_clean,kCZ_adf);
381 CZclean_wing += CZ_adf_clean * Alpha * flap;
382 CZclean_tail += CZ_adf_clean * Alpha * flap;
383 CZiced_wing += CZ_adf * Alpha * flap;
384 CZiced_tail += CZ_adf * Alpha * flap;
387 CZ += CZ_adf * Alpha * flap;
396 // end uiuc_coef_lift.cpp