1 /**********************************************************************
3 FILENAME: uiuc_coef_roll.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: computes aggregated aerodynamic roll 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 (Clfxxf). 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 ----------------------------------------------------------------------
49 -roll coefficient components
53 ----------------------------------------------------------------------
57 ----------------------------------------------------------------------
59 CALLED BY: uiuc_coefficients.cpp
61 ----------------------------------------------------------------------
63 CALLS TO: uiuc_1Dinterpolation
69 ----------------------------------------------------------------------
71 COPYRIGHT: (C) 2000 by Michael Selig
73 This program is free software; you can redistribute it and/or
74 modify it under the terms of the GNU General Public License
75 as published by the Free Software Foundation.
77 This program is distributed in the hope that it will be useful,
78 but WITHOUT ANY WARRANTY; without even the implied warranty of
79 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
80 GNU General Public License for more details.
82 You should have received a copy of the GNU General Public License
83 along with this program; if not, write to the Free Software
84 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
86 **********************************************************************/
88 #include "uiuc_coef_roll.h"
100 command_list = aeroRollParts -> getCommands();
102 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
104 linetoken1 = aeroRollParts -> getToken(*command_line, 1);
105 linetoken2 = aeroRollParts -> getToken(*command_line, 2);
107 switch(Cl_map[linetoken2])
113 Clo = uiuc_ice_filter(Clo_clean,kClo);
123 Cl_beta = uiuc_ice_filter(Cl_beta_clean,kCl_beta);
125 Cl_beta_save = Cl_beta * Std_Beta;
126 if (eta_q_Cl_beta_fac)
128 Cl += Cl_beta_save * eta_q_Cl_beta_fac;
140 Cl_p = uiuc_ice_filter(Cl_p_clean,kCl_p);
142 /* Cl_p must be mulitplied by b/2U
143 (see Roskam Control book, Part 1, pg. 147) */
144 Cl_p_save = Cl_p * P_body * b_2U;
145 // if (Cl_p_save > 0.1) {
148 // if (Cl_p_save < -0.1) {
153 Cl += Cl_p_save * eta_q_Cl_p_fac;
165 Cl_r = uiuc_ice_filter(Cl_r_clean,kCl_r);
167 /* Cl_r must be mulitplied by b/2U
168 (see Roskam Control book, Part 1, pg. 147) */
169 Cl_r_save = Cl_r * R_body * b_2U;
172 Cl += Cl_r_save * eta_q_Cl_r_fac;
184 Cl_da = uiuc_ice_filter(Cl_da_clean,kCl_da);
186 Cl_da_save = Cl_da * aileron;
194 Cl_dr = uiuc_ice_filter(Cl_dr_clean,kCl_dr);
196 Cl_dr_save = Cl_dr * rudder;
199 Cl += Cl_dr_save * eta_q_Cl_dr_fac;
211 Cl_daa = uiuc_ice_filter(Cl_daa_clean,kCl_daa);
213 Cl_daa_save = Cl_daa * aileron * Std_Alpha;
219 ClfadaI = uiuc_2Dinterpolation(Clfada_aArray,
231 ClfbetadrI = uiuc_2Dinterpolation(Clfbetadr_betaArray,
234 Clfbetadr_nBetaArray,
243 if (Clfabetaf_nice == 1)
244 ClfabetafI = uiuc_3Dinterp_quick(Clfabetaf_fArray,
245 Clfabetaf_aArray_nice,
246 Clfabetaf_bArray_nice,
255 ClfabetafI = uiuc_3Dinterpolation(Clfabetaf_fArray,
259 Clfabetaf_nAlphaArray,
270 if (Clfadaf_nice == 1)
271 ClfadafI = uiuc_3Dinterp_quick(Clfadaf_fArray,
273 Clfadaf_daArray_nice,
282 ClfadafI = uiuc_3Dinterpolation(Clfadaf_fArray,
297 if (Clfadrf_nice == 1)
298 ClfadrfI = uiuc_3Dinterp_quick(Clfadrf_fArray,
300 Clfadrf_drArray_nice,
309 ClfadrfI = uiuc_3Dinterpolation(Clfadrf_fArray,
324 p_nondim = P_body * b_2U;
325 if (Clfapf_nice == 1)
326 ClfapfI = uiuc_3Dinterp_quick(Clfapf_fArray,
337 ClfapfI = uiuc_3Dinterpolation(Clfapf_fArray,
352 r_nondim = R_body * b_2U;
353 if (Clfarf_nice == 1)
354 ClfarfI = uiuc_3Dinterp_quick(Clfarf_fArray,
365 ClfarfI = uiuc_3Dinterpolation(Clfarf_fArray,
384 // end uiuc_coef_roll.cpp