1 /**********************************************************************
3 FILENAME: uiuc_coef_yaw.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: computes aggregated aerodynamic yaw 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 (Cnfxxf). 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 -yaw 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_yaw.h"
100 command_list = aeroYawParts -> getCommands();
102 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
104 linetoken1 = aeroYawParts -> getToken(*command_line, 1);
105 linetoken2 = aeroYawParts -> getToken(*command_line, 2);
107 switch(Cn_map[linetoken2])
113 Cno = uiuc_ice_filter(Cno_clean,kCno);
123 Cn_beta = uiuc_ice_filter(Cn_beta_clean,kCn_beta);
125 Cn_beta_save = Cn_beta * Std_Beta;
126 if (eta_q_Cn_beta_fac)
128 Cn += Cn_beta_save * eta_q_Cn_beta_fac;
140 Cn_p = uiuc_ice_filter(Cn_p_clean,kCn_p);
142 /* Cn_p must be mulitplied by b/2U
143 (see Roskam Control book, Part 1, pg. 147) */
144 Cn_p_save = Cn_p * P_body * b_2U;
147 Cn += Cn_p_save * eta_q_Cn_p_fac;
159 Cn_r = uiuc_ice_filter(Cn_r_clean,kCn_r);
161 /* Cn_r must be mulitplied by b/2U
162 (see Roskam Control book, Part 1, pg. 147) */
163 Cn_r_save = Cn_r * R_body * b_2U;
166 Cn += Cn_r_save * eta_q_Cn_r_fac;
178 Cn_da = uiuc_ice_filter(Cn_da_clean,kCn_da);
180 Cn_da_save = Cn_da * aileron;
188 Cn_dr = uiuc_ice_filter(Cn_dr_clean,kCn_dr);
190 Cn_dr_save = Cn_dr * rudder;
193 Cn += Cn_dr_save * eta_q_Cn_dr_fac;
205 Cn_q = uiuc_ice_filter(Cn_q_clean,kCn_q);
207 Cn_q_save = Cn_q * Q_body * cbar_2U;
215 Cn_b3 = uiuc_ice_filter(Cn_b3_clean,kCn_b3);
217 Cn_b3_save = Cn_b3 * Std_Beta * Std_Beta * Std_Beta;
223 CnfadaI = uiuc_2Dinterpolation(Cnfada_aArray,
235 CnfbetadrI = uiuc_2Dinterpolation(Cnfbetadr_betaArray,
238 Cnfbetadr_nBetaArray,
247 if (Cnfabetaf_nice == 1)
248 CnfabetafI = uiuc_3Dinterp_quick(Cnfabetaf_fArray,
249 Cnfabetaf_aArray_nice,
250 Cnfabetaf_bArray_nice,
259 CnfabetafI = uiuc_3Dinterpolation(Cnfabetaf_fArray,
263 Cnfabetaf_nAlphaArray,
274 if (Cnfadaf_nice == 1)
275 CnfadafI = uiuc_3Dinterp_quick(Cnfadaf_fArray,
277 Cnfadaf_daArray_nice,
286 CnfadafI = uiuc_3Dinterpolation(Cnfadaf_fArray,
301 if (Cnfadrf_nice == 1)
302 CnfadrfI = uiuc_3Dinterp_quick(Cnfadrf_fArray,
304 Cnfadrf_drArray_nice,
313 CnfadrfI = uiuc_3Dinterpolation(Cnfadrf_fArray,
328 p_nondim = P_body * b_2U;
329 if (Cnfapf_nice == 1)
330 CnfapfI = uiuc_3Dinterp_quick(Cnfapf_fArray,
341 CnfapfI = uiuc_3Dinterpolation(Cnfapf_fArray,
356 r_nondim = R_body * b_2U;
357 if (Cnfarf_nice == 1)
358 CnfarfI = uiuc_3Dinterp_quick(Cnfarf_fArray,
369 CnfarfI = uiuc_3Dinterpolation(Cnfarf_fArray,
388 // end uiuc_coef_yaw.cpp