1 /**********************************************************************
3 FILENAME: uiuc_menu.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: reads input file for specified aircraft and creates
8 approporiate data storage space
10 ----------------------------------------------------------------------
14 ----------------------------------------------------------------------
16 REFERENCES: based on "menu reader" format of Michael Selig
18 ----------------------------------------------------------------------
20 HISTORY: 01/29/2000 initial release
21 02/18/2000 (JS) added 1D data file capability for
22 CL(a) and CD(a) -- calls
24 02/22/2000 (JS) added ice map functions
25 02/29/2000 (JS) added 2D data file capability for
26 CL(a,de), CD(a,de), Cm(a,de), CY(a,da),
27 CY(beta,dr), Cl(a,da), Cl(beta,dr),
28 Cn(a,da), Cn(beta,dr) -- calls
30 02/02/2000 (JS) added record options for 1D and
31 2D interpolated variables
32 03/28/2000 (JS) streamlined conversion factors for
33 file readers -- since they are global
34 variables, it is not necessary to put
35 them in the function calls
36 03/29/2000 (JS) added Cmfa and Weight flags;
37 added misc map; added Dx_cg (etc) to init
39 04/01/2000 (JS) added throttle, longitudinal, lateral,
40 and rudder inputs to record map
41 04/05/2000 (JS) added Altitude to init and record
42 maps; added zero_Long_trim to
44 03/09/2001 (DPM) added support for gear.
45 06/18/2001 (RD) Added Alpha, Beta, U_body,
46 V_body, and W_body to init map. Added
47 aileron_input, rudder_input, pilot_elev_no,
48 pilot_ail_no, and pilot_rud_no to
49 controlSurface map. Added Throttle_pct_input
50 to engine map. Added CZfa to CL map.
51 07/05/2001 (RD) Changed pilot_elev_no = true to pilot_
52 elev_no_check=false. This is to allow pilot
53 to fly aircraft after input files have been
55 08/27/2001 (RD) Added xxx_init_true and xxx_init for
56 P_body, Q_body, R_body, Phi, Theta, Psi,
57 U_body, V_body, and W_body to help in
58 starting the A/C at an initial condition.
59 10/25/2001 (RD) Added new variables needed for the non-
60 linear Twin Otter model at zero flaps
62 11/12/2001 (RD) Added new variables needed for the non-
63 linear Twin Otter model with flaps
64 (Cxfxxf). Removed zero flap variables.
65 Added minmaxfind() which is needed for non-
67 01/11/2002 (AP) Added keywords for bootTime
68 02/13/2002 (RD) Added variables so linear aero model
69 values can be recorded
70 02/18/2002 (RD) Added variables necessary to use the
71 uiuc_3Dinterp_quick() function. Takes
72 advantage of data in a "nice" form (data
73 that are in a rectangular matrix).
74 03/13/2002 (RD) Added aircraft_directory so full path
75 is no longer needed in the aircraft.dat file
76 04/02/2002 (RD) Removed minmaxfind() since it was no
77 longer needed. Added d_2_to_3(),
78 d_1_to_2(), and i_1_to_2() so uiuc_menu()
79 will compile with certain compilers.
80 08/29/2002 (RD) Separated each primary keyword into its
81 own function to speed up compile time
82 08/29/2002 (RD w/ help from CO) Made changes to shorten
83 compile time. [] RD to add more comments here.
84 08/29/2003 (MSS) Adding new keywords for new engine model
85 and slipstream effects on tail.
87 ----------------------------------------------------------------------
89 AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
90 Jeff Scott <jscott@mail.com>
91 Robert Deters <rdeters@uiuc.edu>
92 Michael Selig <m-selig@uiuc.edu>
93 David Megginson <david@megginson.com>
94 Ann Peedikayil <peedikay@uiuc.edu>
95 ----------------------------------------------------------------------
99 ----------------------------------------------------------------------
103 ----------------------------------------------------------------------
107 ----------------------------------------------------------------------
109 CALLED BY: uiuc_wrapper.cpp
111 ----------------------------------------------------------------------
113 CALLS TO: aircraft.dat
114 tabulated data files (if needed)
116 ----------------------------------------------------------------------
118 COPYRIGHT: (C) 2000 by Michael Selig
120 This program is free software; you can redistribute it and/or
121 modify it under the terms of the GNU General Public License
122 as published by the Free Software Foundation.
124 This program is distributed in the hope that it will be useful,
125 but WITHOUT ANY WARRANTY; without even the implied warranty of
126 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
127 GNU General Public License for more details.
129 You should have received a copy of the GNU General Public License
130 along with this program; if not, write to the Free Software
131 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
132 USA or view http://www.gnu.org/copyleft/gpl.html.
134 **********************************************************************/
136 #include <simgear/compiler.h>
138 #if defined( __MWERKS__ )
139 // -dw- optimizer chokes (big-time) trying to optimize humongous
140 // loop/switch statements
141 #pragma optimization_level 0
146 #include STL_IOSTREAM
147 #include <cstdlib> // exit
149 #include "uiuc_menu.h"
159 bool check_float( const string &token)
162 istrstream stream(token.c_str());
163 return (stream >> value);
166 void d_2_to_3( double array2D[100][100], double array3D[][100][100], int index3D)
168 for (register int i=0; i<=99; i++)
170 for (register int j=1; j<=99; j++)
172 array3D[index3D][i][j]=array2D[i][j];
177 void d_1_to_2( double array1D[100], double array2D[][100], int index2D)
179 for (register int i=0; i<=99; i++)
181 array2D[index2D][i]=array1D[i];
185 void d_1_to_1( double array1[100], double array2[100] )
187 for (register int i=0; i<=99; i++)
193 void i_1_to_2( int array1D[100], int array2D[][100], int index2D)
195 for (register int i=0; i<=99; i++)
197 array2D[index2D][i]=array1D[i];
201 void parse_init( const string& linetoken2, const string& linetoken3,
202 const string& linetoken4, LIST command_line ) {
204 istrstream token3(linetoken3.c_str());
205 istrstream token4(linetoken4.c_str());
206 int token_value_recordRate;
208 switch(init_map[linetoken2])
212 if (check_float(linetoken3))
213 token3 >> token_value;
215 uiuc_warnings_errors(1, *command_line);
217 Dx_pilot = token_value;
218 initParts -> storeCommands (*command_line);
223 if (check_float(linetoken3))
224 token3 >> token_value;
226 uiuc_warnings_errors(1, *command_line);
228 Dy_pilot = token_value;
229 initParts -> storeCommands (*command_line);
234 if (check_float(linetoken3))
235 token3 >> token_value;
237 uiuc_warnings_errors(1, *command_line);
239 Dz_pilot = token_value;
240 initParts -> storeCommands (*command_line);
245 if (check_float(linetoken3))
246 token3 >> token_value;
248 uiuc_warnings_errors(1, *command_line);
251 initParts -> storeCommands (*command_line);
256 if (check_float(linetoken3))
257 token3 >> token_value;
259 uiuc_warnings_errors(1, *command_line);
262 initParts -> storeCommands (*command_line);
267 if (check_float(linetoken3))
268 token3 >> token_value;
270 uiuc_warnings_errors(1, *command_line);
273 initParts -> storeCommands (*command_line);
278 if (check_float(linetoken3))
279 token3 >> token_value;
281 uiuc_warnings_errors(1, *command_line);
283 Altitude = token_value;
284 initParts -> storeCommands (*command_line);
289 if (check_float(linetoken3))
290 token3 >> token_value;
292 uiuc_warnings_errors(1, *command_line);
294 V_north = token_value;
295 initParts -> storeCommands (*command_line);
300 initParts -> storeCommands (*command_line);
301 if (check_float(linetoken3))
302 token3 >> token_value;
304 uiuc_warnings_errors(1, *command_line);
306 V_east = token_value;
311 if (check_float(linetoken3))
312 token3 >> token_value;
314 uiuc_warnings_errors(1, *command_line);
316 V_down = token_value;
317 initParts -> storeCommands (*command_line);
322 if (check_float(linetoken3))
323 token3 >> token_value;
325 uiuc_warnings_errors(1, *command_line);
327 P_body_init_true = true;
328 P_body_init = token_value;
329 initParts -> storeCommands (*command_line);
334 if (check_float(linetoken3))
335 token3 >> token_value;
337 uiuc_warnings_errors(1, *command_line);
339 Q_body_init_true = true;
340 Q_body_init = token_value;
341 initParts -> storeCommands (*command_line);
346 if (check_float(linetoken3))
347 token3 >> token_value;
349 uiuc_warnings_errors(1, *command_line);
351 R_body_init_true = true;
352 R_body_init = token_value;
353 initParts -> storeCommands (*command_line);
358 if (check_float(linetoken3))
359 token3 >> token_value;
361 uiuc_warnings_errors(1, *command_line);
363 Phi_init_true = true;
364 Phi_init = token_value;
365 initParts -> storeCommands (*command_line);
370 if (check_float(linetoken3))
371 token3 >> token_value;
373 uiuc_warnings_errors(1, *command_line);
375 Theta_init_true = true;
376 Theta_init = token_value;
377 initParts -> storeCommands (*command_line);
382 if (check_float(linetoken3))
383 token3 >> token_value;
385 uiuc_warnings_errors(1, *command_line);
387 Psi_init_true = true;
388 Psi_init = token_value;
389 initParts -> storeCommands (*command_line);
394 if (check_float(linetoken3))
395 token3 >> token_value;
397 uiuc_warnings_errors(1, *command_line);
399 Long_trim = token_value;
400 initParts -> storeCommands (*command_line);
403 case recordRate_flag:
405 //can't use check_float since variable is integer
406 token3 >> token_value_recordRate;
407 recordRate = 120 / token_value_recordRate;
410 case recordStartTime_flag:
412 if (check_float(linetoken3))
413 token3 >> token_value;
415 uiuc_warnings_errors(1, *command_line);
417 recordStartTime = token_value;
420 case use_V_rel_wind_2U_flag:
422 use_V_rel_wind_2U = true;
425 case nondim_rate_V_rel_wind_flag:
427 nondim_rate_V_rel_wind = true;
430 case use_abs_U_body_2U_flag:
432 use_abs_U_body_2U = true;
435 case dyn_on_speed_flag:
437 if (check_float(linetoken3))
438 token3 >> token_value;
440 uiuc_warnings_errors(1, *command_line);
442 dyn_on_speed = token_value;
445 case dyn_on_speed_zero_flag:
447 if (check_float(linetoken3))
448 token3 >> token_value;
450 uiuc_warnings_errors(1, *command_line);
452 dyn_on_speed_zero = token_value;
455 case use_dyn_on_speed_curve1_flag:
457 use_dyn_on_speed_curve1 = true;
460 case use_Alpha_dot_on_speed_flag:
462 use_Alpha_dot_on_speed = true;
463 if (check_float(linetoken3))
464 token3 >> token_value;
466 uiuc_warnings_errors(1, *command_line);
467 Alpha_dot_on_speed = token_value;
470 case downwashMode_flag:
472 b_downwashMode = true;
473 token3 >> downwashMode;
474 if (downwashMode==100)
476 // compute downwash using downwashCoef, do nothing here
478 uiuc_warnings_errors(4, *command_line);
481 case downwashCoef_flag:
483 if (check_float(linetoken3))
484 token3 >> token_value;
486 uiuc_warnings_errors(1, *command_line);
487 downwashCoef = token_value;
492 if (check_float(linetoken3))
493 token3 >> token_value;
495 uiuc_warnings_errors(1, *command_line);
497 Alpha_init_true = true;
498 Alpha_init = token_value * DEG_TO_RAD;
503 if (check_float(linetoken3))
504 token3 >> token_value;
506 uiuc_warnings_errors(1, *command_line);
508 Beta_init_true = true;
509 Beta_init = token_value * DEG_TO_RAD;
514 if (check_float(linetoken3))
515 token3 >> token_value;
517 uiuc_warnings_errors(1, *command_line);
519 U_body_init_true = true;
520 U_body_init = token_value;
525 if (check_float(linetoken3))
526 token3 >> token_value;
528 uiuc_warnings_errors(1, *command_line);
530 V_body_init_true = true;
531 V_body_init = token_value;
536 if (check_float(linetoken3))
537 token3 >> token_value;
539 uiuc_warnings_errors(1, *command_line);
541 W_body_init_true = true;
542 W_body_init = token_value;
545 case ignore_unknown_flag:
550 case trim_case_2_flag:
555 case use_uiuc_network_flag:
557 use_uiuc_network = true;
558 server_IP = linetoken3;
562 case old_flap_routine_flag:
564 old_flap_routine = true;
567 case icing_demo_flag:
572 case outside_control_flag:
574 outside_control = true;
580 uiuc_warnings_errors(2, *command_line);
586 void parse_geometry( const string& linetoken2, const string& linetoken3,
587 LIST command_line ) {
589 istrstream token3(linetoken3.c_str());
591 switch(geometry_map[linetoken2])
595 if (check_float(linetoken3))
596 token3 >> token_value;
598 uiuc_warnings_errors(1, *command_line);
601 geometryParts -> storeCommands (*command_line);
606 if (check_float(linetoken3))
607 token3 >> token_value;
609 uiuc_warnings_errors(1, *command_line);
612 geometryParts -> storeCommands (*command_line);
617 if (check_float(linetoken3))
618 token3 >> token_value;
620 uiuc_warnings_errors(1, *command_line);
623 geometryParts -> storeCommands (*command_line);
628 if (check_float(linetoken3))
629 token3 >> token_value;
631 uiuc_warnings_errors(1, *command_line);
634 geometryParts -> storeCommands (*command_line);
639 if (check_float(linetoken3))
640 token3 >> token_value;
642 uiuc_warnings_errors(1, *command_line);
645 geometryParts -> storeCommands (*command_line);
650 if (check_float(linetoken3))
651 token3 >> token_value;
653 uiuc_warnings_errors(1, *command_line);
656 geometryParts -> storeCommands (*command_line);
661 if (check_float(linetoken3))
662 token3 >> token_value;
664 uiuc_warnings_errors(1, *command_line);
667 geometryParts -> storeCommands (*command_line);
673 uiuc_warnings_errors(2, *command_line);
679 void parse_controlSurface( const string& linetoken2, const string& linetoken3,
680 const string& linetoken4, const string& linetoken5,
681 const string& linetoken6,
682 const string& aircraft_directory,
683 LIST command_line ) {
685 int token_value_convert1, token_value_convert2;
686 istrstream token3(linetoken3.c_str());
687 istrstream token4(linetoken4.c_str());
688 istrstream token5(linetoken5.c_str());
689 istrstream token6(linetoken6.c_str());
691 switch(controlSurface_map[linetoken2])
695 if (check_float(linetoken3))
696 token3 >> token_value;
698 uiuc_warnings_errors(1, *command_line);
702 if (check_float(linetoken4))
703 token4 >> token_value;
705 uiuc_warnings_errors(1, *command_line);
712 if (check_float(linetoken3))
713 token3 >> token_value;
715 uiuc_warnings_errors(1, *command_line);
719 if (check_float(linetoken4))
720 token4 >> token_value;
722 uiuc_warnings_errors(1, *command_line);
729 if (check_float(linetoken3))
730 token3 >> token_value;
732 uiuc_warnings_errors(1, *command_line);
736 if (check_float(linetoken4))
737 token4 >> token_value;
739 uiuc_warnings_errors(1, *command_line);
744 case set_Long_trim_flag:
746 if (check_float(linetoken3))
747 token3 >> token_value;
749 uiuc_warnings_errors(1, *command_line);
751 set_Long_trim = true;
752 elevator_tab = token_value;
755 case set_Long_trim_deg_flag:
757 if (check_float(linetoken3))
758 token3 >> token_value;
760 uiuc_warnings_errors(1, *command_line);
762 set_Long_trim = true;
763 elevator_tab = token_value * DEG_TO_RAD;
766 case zero_Long_trim_flag:
768 zero_Long_trim = true;
771 case elevator_step_flag:
773 // set step input flag
774 elevator_step = true;
776 // read in step angle in degrees and convert
777 if (check_float(linetoken3))
778 token3 >> token_value;
780 uiuc_warnings_errors(1, *command_line);
782 elevator_step_angle = token_value * DEG_TO_RAD;
784 // read in step start time
785 if (check_float(linetoken4))
786 token4 >> token_value;
788 uiuc_warnings_errors(1, *command_line);
790 elevator_step_startTime = token_value;
793 case elevator_singlet_flag:
795 // set singlet input flag
796 elevator_singlet = true;
798 // read in singlet angle in degrees and convert
799 if (check_float(linetoken3))
800 token3 >> token_value;
802 uiuc_warnings_errors(1, *command_line);
804 elevator_singlet_angle = token_value * DEG_TO_RAD;
806 // read in singlet start time
807 if (check_float(linetoken4))
808 token4 >> token_value;
810 uiuc_warnings_errors(1, *command_line);
812 elevator_singlet_startTime = token_value;
814 // read in singlet duration
815 if (check_float(linetoken5))
816 token5 >> token_value;
818 uiuc_warnings_errors(1, *command_line);
820 elevator_singlet_duration = token_value;
823 case elevator_doublet_flag:
825 // set doublet input flag
826 elevator_doublet = true;
828 // read in doublet angle in degrees and convert
829 if (check_float(linetoken3))
830 token3 >> token_value;
832 uiuc_warnings_errors(1, *command_line);
834 elevator_doublet_angle = token_value * DEG_TO_RAD;
836 // read in doublet start time
837 if (check_float(linetoken4))
838 token4 >> token_value;
840 uiuc_warnings_errors(1, *command_line);
842 elevator_doublet_startTime = token_value;
844 // read in doublet duration
845 if (check_float(linetoken5))
846 token5 >> token_value;
848 uiuc_warnings_errors(1, *command_line);
850 elevator_doublet_duration = token_value;
853 case elevator_input_flag:
855 elevator_input = true;
856 elevator_input_file = aircraft_directory + linetoken3;
857 token4 >> token_value_convert1;
858 token5 >> token_value_convert2;
859 convert_y = uiuc_convert(token_value_convert1);
860 convert_x = uiuc_convert(token_value_convert2);
861 uiuc_1DdataFileReader(elevator_input_file,
862 elevator_input_timeArray,
863 elevator_input_deArray,
864 elevator_input_ntime);
865 token6 >> token_value;
866 elevator_input_startTime = token_value;
869 case aileron_input_flag:
871 aileron_input = true;
872 aileron_input_file = aircraft_directory + linetoken3;
873 token4 >> token_value_convert1;
874 token5 >> token_value_convert2;
875 convert_y = uiuc_convert(token_value_convert1);
876 convert_x = uiuc_convert(token_value_convert2);
877 uiuc_1DdataFileReader(aileron_input_file,
878 aileron_input_timeArray,
879 aileron_input_daArray,
880 aileron_input_ntime);
881 token6 >> token_value;
882 aileron_input_startTime = token_value;
885 case rudder_input_flag:
888 rudder_input_file = aircraft_directory + linetoken3;
889 token4 >> token_value_convert1;
890 token5 >> token_value_convert2;
891 convert_y = uiuc_convert(token_value_convert1);
892 convert_x = uiuc_convert(token_value_convert2);
893 uiuc_1DdataFileReader(rudder_input_file,
894 rudder_input_timeArray,
895 rudder_input_drArray,
897 token6 >> token_value;
898 rudder_input_startTime = token_value;
901 case flap_pos_input_flag:
903 flap_pos_input = true;
904 flap_pos_input_file = aircraft_directory + linetoken3;
905 token4 >> token_value_convert1;
906 token5 >> token_value_convert2;
907 convert_y = uiuc_convert(token_value_convert1);
908 convert_x = uiuc_convert(token_value_convert2);
909 uiuc_1DdataFileReader(flap_pos_input_file,
910 flap_pos_input_timeArray,
911 flap_pos_input_dfArray,
912 flap_pos_input_ntime);
913 token6 >> token_value;
914 flap_pos_input_startTime = token_value;
917 case pilot_elev_no_flag:
919 pilot_elev_no_check = true;
922 case pilot_ail_no_flag:
924 pilot_ail_no_check = true;
927 case pilot_rud_no_flag:
929 pilot_rud_no_check = true;
934 if (check_float(linetoken3))
935 token3 >> token_value;
937 uiuc_warnings_errors(1, *command_line);
939 flap_max = token_value;
944 if (check_float(linetoken3))
945 token3 >> token_value;
947 uiuc_warnings_errors(1, *command_line);
949 flap_rate = token_value;
955 uiuc_warnings_errors(2, *command_line);
961 void parse_mass( const string& linetoken2, const string& linetoken3,
962 LIST command_line ) {
964 istrstream token3(linetoken3.c_str());
966 switch(mass_map[linetoken2])
970 if (check_float(linetoken3))
971 token3 >> token_value;
973 uiuc_warnings_errors(1, *command_line);
975 Weight = token_value;
976 Mass = Weight * INVG;
977 massParts -> storeCommands (*command_line);
982 if (check_float(linetoken3))
983 token3 >> token_value;
985 uiuc_warnings_errors(1, *command_line);
988 massParts -> storeCommands (*command_line);
993 if (check_float(linetoken3))
994 token3 >> token_value;
996 uiuc_warnings_errors(1, *command_line);
999 massParts -> storeCommands (*command_line);
1004 if (check_float(linetoken3))
1005 token3 >> token_value;
1007 uiuc_warnings_errors(1, *command_line);
1010 massParts -> storeCommands (*command_line);
1015 if (check_float(linetoken3))
1016 token3 >> token_value;
1018 uiuc_warnings_errors(1, *command_line);
1021 massParts -> storeCommands (*command_line);
1026 if (check_float(linetoken3))
1027 token3 >> token_value;
1029 uiuc_warnings_errors(1, *command_line);
1032 massParts -> storeCommands (*command_line);
1035 case Mass_appMass_ratio_flag:
1037 if (check_float(linetoken3))
1038 token3 >> token_value;
1040 uiuc_warnings_errors(1, *command_line);
1042 Mass_appMass_ratio = token_value;
1043 massParts -> storeCommands (*command_line);
1046 case I_xx_appMass_ratio_flag:
1048 if (check_float(linetoken3))
1049 token3 >> token_value;
1051 uiuc_warnings_errors(1, *command_line);
1053 I_xx_appMass_ratio = token_value;
1054 massParts -> storeCommands (*command_line);
1057 case I_yy_appMass_ratio_flag:
1059 if (check_float(linetoken3))
1060 token3 >> token_value;
1062 uiuc_warnings_errors(1, *command_line);
1064 I_yy_appMass_ratio = token_value;
1065 massParts -> storeCommands (*command_line);
1068 case I_zz_appMass_ratio_flag:
1070 if (check_float(linetoken3))
1071 token3 >> token_value;
1073 uiuc_warnings_errors(1, *command_line);
1075 I_zz_appMass_ratio = token_value;
1076 massParts -> storeCommands (*command_line);
1079 case Mass_appMass_flag:
1081 if (check_float(linetoken3))
1082 token3 >> token_value;
1084 uiuc_warnings_errors(1, *command_line);
1086 Mass_appMass = token_value;
1087 massParts -> storeCommands (*command_line);
1090 case I_xx_appMass_flag:
1092 if (check_float(linetoken3))
1093 token3 >> token_value;
1095 uiuc_warnings_errors(1, *command_line);
1097 I_xx_appMass = token_value;
1098 massParts -> storeCommands (*command_line);
1101 case I_yy_appMass_flag:
1103 if (check_float(linetoken3))
1104 token3 >> token_value;
1106 uiuc_warnings_errors(1, *command_line);
1108 I_yy_appMass = token_value;
1109 massParts -> storeCommands (*command_line);
1112 case I_zz_appMass_flag:
1114 if (check_float(linetoken3))
1115 token3 >> token_value;
1117 uiuc_warnings_errors(1, *command_line);
1119 I_zz_appMass = token_value;
1120 massParts -> storeCommands (*command_line);
1126 uiuc_warnings_errors(2, *command_line);
1132 void parse_engine( const string& linetoken2, const string& linetoken3,
1133 const string& linetoken4, const string& linetoken5,
1134 const string& linetoken6, const string& aircraft_directory,
1135 LIST command_line ) {
1137 int token_value_convert1, token_value_convert2;
1138 istrstream token3(linetoken3.c_str());
1139 istrstream token4(linetoken4.c_str());
1140 istrstream token5(linetoken5.c_str());
1141 istrstream token6(linetoken6.c_str());
1143 switch(engine_map[linetoken2])
1145 case simpleSingle_flag:
1147 if (check_float(linetoken3))
1148 token3 >> token_value;
1150 uiuc_warnings_errors(1, *command_line);
1152 simpleSingleMaxThrust = token_value;
1153 engineParts -> storeCommands (*command_line);
1156 case simpleSingleModel_flag:
1158 simpleSingleModel = true;
1159 /* input the thrust at zero speed */
1160 if (check_float(linetoken3))
1161 token3 >> token_value;
1163 uiuc_warnings_errors(1, *command_line);
1165 /* input slope of thrust at speed for which thrust is zero */
1166 if (check_float(linetoken4))
1167 token4 >> token_value;
1169 uiuc_warnings_errors(1, *command_line);
1170 dtdv_t0 = token_value;
1171 /* input speed at which thrust is zero */
1172 if (check_float(linetoken5))
1173 token5 >> token_value;
1175 uiuc_warnings_errors(1, *command_line);
1177 dtdvvt = -dtdv_t0 * v_t0 / t_v0;
1178 engineParts -> storeCommands (*command_line);
1183 engineParts -> storeCommands (*command_line);
1188 engineParts -> storeCommands (*command_line);
1191 case Throttle_pct_input_flag:
1193 Throttle_pct_input = true;
1194 Throttle_pct_input_file = aircraft_directory + linetoken3;
1195 token4 >> token_value_convert1;
1196 token5 >> token_value_convert2;
1197 convert_y = uiuc_convert(token_value_convert1);
1198 convert_x = uiuc_convert(token_value_convert2);
1199 uiuc_1DdataFileReader(Throttle_pct_input_file,
1200 Throttle_pct_input_timeArray,
1201 Throttle_pct_input_dTArray,
1202 Throttle_pct_input_ntime);
1203 token6 >> token_value;
1204 Throttle_pct_input_startTime = token_value;
1207 case gyroForce_Q_body_flag:
1209 /* include gyroscopic forces due to pitch */
1210 gyroForce_Q_body = true;
1213 case gyroForce_R_body_flag:
1215 /* include gyroscopic forces due to yaw */
1216 gyroForce_R_body = true;
1220 case slipstream_effects_flag:
1222 // include slipstream effects
1223 b_slipstreamEffects = true;
1224 if (!simpleSingleModel)
1225 uiuc_warnings_errors(3, *command_line);
1230 if (check_float(linetoken3))
1231 token3 >> token_value;
1233 uiuc_warnings_errors(1, *command_line);
1234 propDia = token_value;
1237 case eta_q_Cm_q_flag:
1239 // include slipstream effects due to Cm_q
1240 if (check_float(linetoken3))
1241 token3 >> token_value;
1243 uiuc_warnings_errors(1, *command_line);
1244 eta_q_Cm_q_fac = token_value;
1245 if (eta_q_Cm_q_fac == 0.0) {eta_q_Cm_q_fac = 1.0;}
1248 case eta_q_Cm_adot_flag:
1250 // include slipstream effects due to Cm_adot
1251 if (check_float(linetoken3))
1252 token3 >> token_value;
1254 uiuc_warnings_errors(1, *command_line);
1255 eta_q_Cm_adot_fac = token_value;
1256 if (eta_q_Cm_adot_fac == 0.0) {eta_q_Cm_adot_fac = 1.0;}
1259 case eta_q_Cmfade_flag:
1261 // include slipstream effects due to Cmfade
1262 if (check_float(linetoken3))
1263 token3 >> token_value;
1265 uiuc_warnings_errors(1, *command_line);
1266 eta_q_Cmfade_fac = token_value;
1267 if (eta_q_Cmfade_fac == 0.0) {eta_q_Cmfade_fac = 1.0;}
1270 case eta_q_Cl_beta_flag:
1272 // include slipstream effects due to Cl_beta
1273 if (check_float(linetoken3))
1274 token3 >> token_value;
1276 uiuc_warnings_errors(1, *command_line);
1277 eta_q_Cl_beta_fac = token_value;
1278 if (eta_q_Cl_beta_fac == 0.0) {eta_q_Cl_beta_fac = 1.0;}
1281 case eta_q_Cl_p_flag:
1283 // include slipstream effects due to Cl_p
1284 if (check_float(linetoken3))
1285 token3 >> token_value;
1287 uiuc_warnings_errors(1, *command_line);
1288 eta_q_Cl_p_fac = token_value;
1289 if (eta_q_Cl_p_fac == 0.0) {eta_q_Cl_p_fac = 1.0;}
1292 case eta_q_Cl_r_flag:
1294 // include slipstream effects due to Cl_r
1295 if (check_float(linetoken3))
1296 token3 >> token_value;
1298 uiuc_warnings_errors(1, *command_line);
1299 eta_q_Cl_r_fac = token_value;
1300 if (eta_q_Cl_r_fac == 0.0) {eta_q_Cl_r_fac = 1.0;}
1303 case eta_q_Cl_dr_flag:
1305 // include slipstream effects due to Cl_dr
1306 if (check_float(linetoken3))
1307 token3 >> token_value;
1309 uiuc_warnings_errors(1, *command_line);
1310 eta_q_Cl_dr_fac = token_value;
1311 if (eta_q_Cl_dr_fac == 0.0) {eta_q_Cl_dr_fac = 1.0;}
1314 case eta_q_CY_beta_flag:
1316 // include slipstream effects due to CY_beta
1317 if (check_float(linetoken3))
1318 token3 >> token_value;
1320 uiuc_warnings_errors(1, *command_line);
1321 eta_q_CY_beta_fac = token_value;
1322 if (eta_q_CY_beta_fac == 0.0) {eta_q_CY_beta_fac = 1.0;}
1325 case eta_q_CY_p_flag:
1327 // include slipstream effects due to CY_p
1328 if (check_float(linetoken3))
1329 token3 >> token_value;
1331 uiuc_warnings_errors(1, *command_line);
1332 eta_q_CY_p_fac = token_value;
1333 if (eta_q_CY_p_fac == 0.0) {eta_q_CY_p_fac = 1.0;}
1336 case eta_q_CY_r_flag:
1338 // include slipstream effects due to CY_r
1339 if (check_float(linetoken3))
1340 token3 >> token_value;
1342 uiuc_warnings_errors(1, *command_line);
1343 eta_q_CY_r_fac = token_value;
1344 if (eta_q_CY_r_fac == 0.0) {eta_q_CY_r_fac = 1.0;}
1347 case eta_q_CY_dr_flag:
1349 // include slipstream effects due to CY_dr
1350 if (check_float(linetoken3))
1351 token3 >> token_value;
1353 uiuc_warnings_errors(1, *command_line);
1354 eta_q_CY_dr_fac = token_value;
1355 if (eta_q_CY_dr_fac == 0.0) {eta_q_CY_dr_fac = 1.0;}
1358 case eta_q_Cn_beta_flag:
1360 // include slipstream effects due to Cn_beta
1361 if (check_float(linetoken3))
1362 token3 >> token_value;
1364 uiuc_warnings_errors(1, *command_line);
1365 eta_q_Cn_beta_fac = token_value;
1366 if (eta_q_Cn_beta_fac == 0.0) {eta_q_Cn_beta_fac = 1.0;}
1369 case eta_q_Cn_p_flag:
1371 // include slipstream effects due to Cn_p
1372 if (check_float(linetoken3))
1373 token3 >> token_value;
1375 uiuc_warnings_errors(1, *command_line);
1376 eta_q_Cn_p_fac = token_value;
1377 if (eta_q_Cn_p_fac == 0.0) {eta_q_Cn_p_fac = 1.0;}
1380 case eta_q_Cn_r_flag:
1382 // include slipstream effects due to Cn_r
1383 if (check_float(linetoken3))
1384 token3 >> token_value;
1386 uiuc_warnings_errors(1, *command_line);
1387 eta_q_Cn_r_fac = token_value;
1388 if (eta_q_Cn_r_fac == 0.0) {eta_q_Cn_r_fac = 1.0;}
1391 case eta_q_Cn_dr_flag:
1393 // include slipstream effects due to Cn_dr
1394 if (check_float(linetoken3))
1395 token3 >> token_value;
1397 uiuc_warnings_errors(1, *command_line);
1398 eta_q_Cn_dr_fac = token_value;
1399 if (eta_q_Cn_dr_fac == 0.0) {eta_q_Cn_dr_fac = 1.0;}
1405 if (check_float(linetoken3))
1406 token3 >> token_value;
1408 uiuc_warnings_errors(1, *command_line);
1409 minOmega = token_value;
1410 if (check_float(linetoken4))
1411 token4 >> token_value;
1413 uiuc_warnings_errors(1, *command_line);
1414 maxOmega = token_value;
1419 if (check_float(linetoken3))
1420 token3 >> token_value;
1422 uiuc_warnings_errors(1, *command_line);
1423 minOmegaRPM = token_value;
1424 minOmega = minOmegaRPM * 2.0 * LS_PI / 60;
1425 if (check_float(linetoken4))
1426 token4 >> token_value;
1428 uiuc_warnings_errors(1, *command_line);
1429 maxOmegaRPM = token_value;
1430 maxOmega = maxOmegaRPM * 2.0 * LS_PI / 60;
1433 case polarInertia_flag:
1435 if (check_float(linetoken3))
1436 token3 >> token_value;
1438 uiuc_warnings_errors(1, *command_line);
1439 polarInertia = token_value;
1444 engineParts -> storeCommands (*command_line);
1450 Xp_input_file = aircraft_directory + linetoken3;
1451 token4 >> token_value_convert1;
1452 token5 >> token_value_convert2;
1453 convert_y = uiuc_convert(token_value_convert1);
1454 convert_x = uiuc_convert(token_value_convert2);
1455 uiuc_1DdataFileReader(Xp_input_file,
1459 token6 >> token_value;
1460 Xp_input_startTime = token_value;
1466 Zp_input_file = aircraft_directory + linetoken3;
1467 token4 >> token_value_convert1;
1468 token5 >> token_value_convert2;
1469 convert_y = uiuc_convert(token_value_convert1);
1470 convert_x = uiuc_convert(token_value_convert2);
1471 uiuc_1DdataFileReader(Zp_input_file,
1475 token6 >> token_value;
1476 Zp_input_startTime = token_value;
1482 Mp_input_file = aircraft_directory + linetoken3;
1483 token4 >> token_value_convert1;
1484 token5 >> token_value_convert2;
1485 convert_y = uiuc_convert(token_value_convert1);
1486 convert_x = uiuc_convert(token_value_convert2);
1487 uiuc_1DdataFileReader(Mp_input_file,
1491 token6 >> token_value;
1492 Mp_input_startTime = token_value;
1498 uiuc_warnings_errors(2, *command_line);
1504 void parse_CD( const string& linetoken2, const string& linetoken3,
1505 const string& linetoken4, const string& linetoken5,
1506 const string& linetoken6, const string& linetoken7,
1507 const string& linetoken8, const string& linetoken9,
1508 const string& aircraft_directory,
1509 bool &CXfabetaf_first, bool &CXfadef_first,
1510 bool &CXfaqf_first, LIST command_line ) {
1512 int token_value_convert1, token_value_convert2, token_value_convert3;
1513 double datafile_xArray[100][100], datafile_yArray[100];
1514 double datafile_zArray[100][100];
1515 int datafile_nxArray[100], datafile_ny;
1516 istrstream token3(linetoken3.c_str());
1517 istrstream token4(linetoken4.c_str());
1518 istrstream token5(linetoken5.c_str());
1519 istrstream token6(linetoken6.c_str());
1520 istrstream token7(linetoken7.c_str());
1521 istrstream token8(linetoken8.c_str());
1522 istrstream token9(linetoken9.c_str());
1524 switch(CD_map[linetoken2])
1528 if (check_float(linetoken3))
1529 token3 >> token_value;
1531 uiuc_warnings_errors(1, *command_line);
1535 aeroDragParts -> storeCommands (*command_line);
1540 if (check_float(linetoken3))
1541 token3 >> token_value;
1543 uiuc_warnings_errors(1, *command_line);
1547 aeroDragParts -> storeCommands (*command_line);
1552 if (check_float(linetoken3))
1553 token3 >> token_value;
1555 uiuc_warnings_errors(1, *command_line);
1559 aeroDragParts -> storeCommands (*command_line);
1564 if (check_float(linetoken3))
1565 token3 >> token_value;
1567 uiuc_warnings_errors(1, *command_line);
1569 CD_adot = token_value;
1570 CD_adot_clean = CD_adot;
1571 aeroDragParts -> storeCommands (*command_line);
1576 if (check_float(linetoken3))
1577 token3 >> token_value;
1579 uiuc_warnings_errors(1, *command_line);
1583 aeroDragParts -> storeCommands (*command_line);
1588 if (check_float(linetoken3))
1589 token3 >> token_value;
1591 uiuc_warnings_errors(1, *command_line);
1593 CD_ih = token_value;
1594 aeroDragParts -> storeCommands (*command_line);
1599 if (check_float(linetoken3))
1600 token3 >> token_value;
1602 uiuc_warnings_errors(1, *command_line);
1604 CD_de = token_value;
1605 CD_de_clean = CD_de;
1606 aeroDragParts -> storeCommands (*command_line);
1611 CDfa = aircraft_directory + linetoken3;
1612 token4 >> token_value_convert1;
1613 token5 >> token_value_convert2;
1614 convert_y = uiuc_convert(token_value_convert1);
1615 convert_x = uiuc_convert(token_value_convert2);
1616 /* call 1D File Reader with file name (CDfa) and conversion
1617 factors; function returns array of alphas (aArray) and
1618 corresponding CD values (CDArray) and max number of
1619 terms in arrays (nAlpha) */
1620 uiuc_1DdataFileReader(CDfa,
1624 aeroDragParts -> storeCommands (*command_line);
1629 CDfCL = aircraft_directory + linetoken3;
1630 token4 >> token_value_convert1;
1631 token5 >> token_value_convert2;
1632 convert_y = uiuc_convert(token_value_convert1);
1633 convert_x = uiuc_convert(token_value_convert2);
1634 /* call 1D File Reader with file name (CDfCL) and conversion
1635 factors; function returns array of CLs (CLArray) and
1636 corresponding CD values (CDArray) and max number of
1637 terms in arrays (nCL) */
1638 uiuc_1DdataFileReader(CDfCL,
1642 aeroDragParts -> storeCommands (*command_line);
1647 CDfade = aircraft_directory + linetoken3;
1648 token4 >> token_value_convert1;
1649 token5 >> token_value_convert2;
1650 token6 >> token_value_convert3;
1651 convert_z = uiuc_convert(token_value_convert1);
1652 convert_x = uiuc_convert(token_value_convert2);
1653 convert_y = uiuc_convert(token_value_convert3);
1654 /* call 2D File Reader with file name (CDfade) and
1655 conversion factors; function returns array of
1656 elevator deflections (deArray) and corresponding
1657 alpha (aArray) and delta CD (CDArray) values and
1658 max number of terms in alpha arrays (nAlphaArray)
1659 and deflection array (nde) */
1660 uiuc_2DdataFileReader(CDfade,
1666 aeroDragParts -> storeCommands (*command_line);
1671 CDfdf = aircraft_directory + linetoken3;
1672 token4 >> token_value_convert1;
1673 token5 >> token_value_convert2;
1674 convert_y = uiuc_convert(token_value_convert1);
1675 convert_x = uiuc_convert(token_value_convert2);
1676 /* call 1D File Reader with file name (CDfdf) and conversion
1677 factors; function returns array of dfs (dfArray) and
1678 corresponding CD values (CDArray) and max number of
1679 terms in arrays (ndf) */
1680 uiuc_1DdataFileReader(CDfdf,
1684 aeroDragParts -> storeCommands (*command_line);
1689 CDfadf = aircraft_directory + linetoken3;
1690 token4 >> token_value_convert1;
1691 token5 >> token_value_convert2;
1692 token6 >> token_value_convert3;
1693 convert_z = uiuc_convert(token_value_convert1);
1694 convert_x = uiuc_convert(token_value_convert2);
1695 convert_y = uiuc_convert(token_value_convert3);
1696 /* call 2D File Reader with file name (CDfadf) and
1697 conversion factors; function returns array of
1698 flap deflections (dfArray) and corresponding
1699 alpha (aArray) and delta CD (CDArray) values and
1700 max number of terms in alpha arrays (nAlphaArray)
1701 and deflection array (ndf) */
1702 uiuc_2DdataFileReader(CDfadf,
1708 aeroDragParts -> storeCommands (*command_line);
1713 if (check_float(linetoken3))
1714 token3 >> token_value;
1716 uiuc_warnings_errors(1, *command_line);
1720 aeroDragParts -> storeCommands (*command_line);
1725 if (check_float(linetoken3))
1726 token3 >> token_value;
1728 uiuc_warnings_errors(1, *command_line);
1732 aeroDragParts -> storeCommands (*command_line);
1737 if (check_float(linetoken3))
1738 token3 >> token_value;
1740 uiuc_warnings_errors(1, *command_line);
1744 aeroDragParts -> storeCommands (*command_line);
1749 if (check_float(linetoken3))
1750 token3 >> token_value;
1752 uiuc_warnings_errors(1, *command_line);
1754 CX_a2 = token_value;
1755 CX_a2_clean = CX_a2;
1756 aeroDragParts -> storeCommands (*command_line);
1761 if (check_float(linetoken3))
1762 token3 >> token_value;
1764 uiuc_warnings_errors(1, *command_line);
1766 CX_a3 = token_value;
1767 CX_a3_clean = CX_a3;
1768 aeroDragParts -> storeCommands (*command_line);
1773 if (check_float(linetoken3))
1774 token3 >> token_value;
1776 uiuc_warnings_errors(1, *command_line);
1778 CX_adot = token_value;
1779 CX_adot_clean = CX_adot;
1780 aeroDragParts -> storeCommands (*command_line);
1785 if (check_float(linetoken3))
1786 token3 >> token_value;
1788 uiuc_warnings_errors(1, *command_line);
1792 aeroDragParts -> storeCommands (*command_line);
1797 if (check_float(linetoken3))
1798 token3 >> token_value;
1800 uiuc_warnings_errors(1, *command_line);
1802 CX_de = token_value;
1803 CX_de_clean = CX_de;
1804 aeroDragParts -> storeCommands (*command_line);
1809 if (check_float(linetoken3))
1810 token3 >> token_value;
1812 uiuc_warnings_errors(1, *command_line);
1814 CX_dr = token_value;
1815 CX_dr_clean = CX_dr;
1816 aeroDragParts -> storeCommands (*command_line);
1821 if (check_float(linetoken3))
1822 token3 >> token_value;
1824 uiuc_warnings_errors(1, *command_line);
1826 CX_df = token_value;
1827 CX_df_clean = CX_df;
1828 aeroDragParts -> storeCommands (*command_line);
1833 if (check_float(linetoken3))
1834 token3 >> token_value;
1836 uiuc_warnings_errors(1, *command_line);
1838 CX_adf = token_value;
1839 CX_adf_clean = CX_adf;
1840 aeroDragParts -> storeCommands (*command_line);
1843 case CXfabetaf_flag:
1845 int CXfabetaf_index, i;
1846 string CXfabetaf_file;
1848 CXfabetaf_file = aircraft_directory + linetoken3;
1849 token4 >> CXfabetaf_index;
1850 if (CXfabetaf_index < 1 || CXfabetaf_index >= 30)
1851 uiuc_warnings_errors(1, *command_line);
1852 if (CXfabetaf_index > CXfabetaf_nf)
1853 CXfabetaf_nf = CXfabetaf_index;
1854 token5 >> flap_value;
1855 CXfabetaf_fArray[CXfabetaf_index] = flap_value;
1856 token6 >> token_value_convert1;
1857 token7 >> token_value_convert2;
1858 token8 >> token_value_convert3;
1859 token9 >> CXfabetaf_nice;
1860 convert_z = uiuc_convert(token_value_convert1);
1861 convert_x = uiuc_convert(token_value_convert2);
1862 convert_y = uiuc_convert(token_value_convert3);
1863 /* call 2D File Reader with file name (CXfabetaf_file) and
1864 conversion factors; function returns array of
1865 elevator deflections (deArray) and corresponding
1866 alpha (aArray) and delta CZ (CZArray) values and
1867 max number of terms in alpha arrays (nAlphaArray)
1868 and delfection array (nde) */
1869 uiuc_2DdataFileReader(CXfabetaf_file,
1875 d_2_to_3(datafile_xArray, CXfabetaf_aArray, CXfabetaf_index);
1876 d_1_to_2(datafile_yArray, CXfabetaf_betaArray, CXfabetaf_index);
1877 d_2_to_3(datafile_zArray, CXfabetaf_CXArray, CXfabetaf_index);
1878 i_1_to_2(datafile_nxArray, CXfabetaf_nAlphaArray, CXfabetaf_index);
1879 CXfabetaf_nbeta[CXfabetaf_index] = datafile_ny;
1880 if (CXfabetaf_first==true)
1882 if (CXfabetaf_nice == 1)
1884 CXfabetaf_na_nice = datafile_nxArray[1];
1885 CXfabetaf_nb_nice = datafile_ny;
1886 d_1_to_1(datafile_yArray, CXfabetaf_bArray_nice);
1887 for (i=1; i<=CXfabetaf_na_nice; i++)
1888 CXfabetaf_aArray_nice[i] = datafile_xArray[1][i];
1890 aeroDragParts -> storeCommands (*command_line);
1891 CXfabetaf_first=false;
1897 int CXfadef_index, i;
1898 string CXfadef_file;
1900 CXfadef_file = aircraft_directory + linetoken3;
1901 token4 >> CXfadef_index;
1902 if (CXfadef_index < 0 || CXfadef_index >= 30)
1903 uiuc_warnings_errors(1, *command_line);
1904 if (CXfadef_index > CXfadef_nf)
1905 CXfadef_nf = CXfadef_index;
1906 token5 >> flap_value;
1907 CXfadef_fArray[CXfadef_index] = flap_value;
1908 token6 >> token_value_convert1;
1909 token7 >> token_value_convert2;
1910 token8 >> token_value_convert3;
1911 token9 >> CXfadef_nice;
1912 convert_z = uiuc_convert(token_value_convert1);
1913 convert_x = uiuc_convert(token_value_convert2);
1914 convert_y = uiuc_convert(token_value_convert3);
1915 /* call 2D File Reader with file name (CXfadef_file) and
1916 conversion factors; function returns array of
1917 elevator deflections (deArray) and corresponding
1918 alpha (aArray) and delta CZ (CZArray) values and
1919 max number of terms in alpha arrays (nAlphaArray)
1920 and delfection array (nde) */
1921 uiuc_2DdataFileReader(CXfadef_file,
1927 d_2_to_3(datafile_xArray, CXfadef_aArray, CXfadef_index);
1928 d_1_to_2(datafile_yArray, CXfadef_deArray, CXfadef_index);
1929 d_2_to_3(datafile_zArray, CXfadef_CXArray, CXfadef_index);
1930 i_1_to_2(datafile_nxArray, CXfadef_nAlphaArray, CXfadef_index);
1931 CXfadef_nde[CXfadef_index] = datafile_ny;
1932 if (CXfadef_first==true)
1934 if (CXfadef_nice == 1)
1936 CXfadef_na_nice = datafile_nxArray[1];
1937 CXfadef_nde_nice = datafile_ny;
1938 d_1_to_1(datafile_yArray, CXfadef_deArray_nice);
1939 for (i=1; i<=CXfadef_na_nice; i++)
1940 CXfadef_aArray_nice[i] = datafile_xArray[1][i];
1942 aeroDragParts -> storeCommands (*command_line);
1943 CXfadef_first=false;
1949 int CXfaqf_index, i;
1952 CXfaqf_file = aircraft_directory + linetoken3;
1953 token4 >> CXfaqf_index;
1954 if (CXfaqf_index < 0 || CXfaqf_index >= 30)
1955 uiuc_warnings_errors(1, *command_line);
1956 if (CXfaqf_index > CXfaqf_nf)
1957 CXfaqf_nf = CXfaqf_index;
1958 token5 >> flap_value;
1959 CXfaqf_fArray[CXfaqf_index] = flap_value;
1960 token6 >> token_value_convert1;
1961 token7 >> token_value_convert2;
1962 token8 >> token_value_convert3;
1963 token9 >> CXfaqf_nice;
1964 convert_z = uiuc_convert(token_value_convert1);
1965 convert_x = uiuc_convert(token_value_convert2);
1966 convert_y = uiuc_convert(token_value_convert3);
1967 /* call 2D File Reader with file name (CXfaqf_file) and
1968 conversion factors; function returns array of
1969 elevator deflections (deArray) and corresponding
1970 alpha (aArray) and delta CZ (CZArray) values and
1971 max number of terms in alpha arrays (nAlphaArray)
1972 and delfection array (nde) */
1973 uiuc_2DdataFileReader(CXfaqf_file,
1979 d_2_to_3(datafile_xArray, CXfaqf_aArray, CXfaqf_index);
1980 d_1_to_2(datafile_yArray, CXfaqf_qArray, CXfaqf_index);
1981 d_2_to_3(datafile_zArray, CXfaqf_CXArray, CXfaqf_index);
1982 i_1_to_2(datafile_nxArray, CXfaqf_nAlphaArray, CXfaqf_index);
1983 CXfaqf_nq[CXfaqf_index] = datafile_ny;
1984 if (CXfaqf_first==true)
1986 if (CXfaqf_nice == 1)
1988 CXfaqf_na_nice = datafile_nxArray[1];
1989 CXfaqf_nq_nice = datafile_ny;
1990 d_1_to_1(datafile_yArray, CXfaqf_qArray_nice);
1991 for (i=1; i<=CXfaqf_na_nice; i++)
1992 CXfaqf_aArray_nice[i] = datafile_xArray[1][i];
1994 aeroDragParts -> storeCommands (*command_line);
2002 uiuc_warnings_errors(2, *command_line);
2009 void parse_CL( const string& linetoken2, const string& linetoken3,
2010 const string& linetoken4, const string& linetoken5,
2011 const string& linetoken6, const string& linetoken7,
2012 const string& linetoken8, const string& linetoken9,
2013 const string& aircraft_directory,
2014 bool &CZfabetaf_first, bool &CZfadef_first,
2015 bool &CZfaqf_first, LIST command_line ) {
2017 int token_value_convert1, token_value_convert2, token_value_convert3;
2018 double datafile_xArray[100][100], datafile_yArray[100];
2019 double datafile_zArray[100][100];
2020 int datafile_nxArray[100], datafile_ny;
2021 istrstream token3(linetoken3.c_str());
2022 istrstream token4(linetoken4.c_str());
2023 istrstream token5(linetoken5.c_str());
2024 istrstream token6(linetoken6.c_str());
2025 istrstream token7(linetoken7.c_str());
2026 istrstream token8(linetoken8.c_str());
2027 istrstream token9(linetoken9.c_str());
2029 switch(CL_map[linetoken2])
2033 if (check_float(linetoken3))
2034 token3 >> token_value;
2036 uiuc_warnings_errors(1, *command_line);
2040 aeroLiftParts -> storeCommands (*command_line);
2045 if (check_float(linetoken3))
2046 token3 >> token_value;
2048 uiuc_warnings_errors(1, *command_line);
2052 aeroLiftParts -> storeCommands (*command_line);
2057 if (check_float(linetoken3))
2058 token3 >> token_value;
2060 uiuc_warnings_errors(1, *command_line);
2062 CL_adot = token_value;
2063 CL_adot_clean = CL_adot;
2064 aeroLiftParts -> storeCommands (*command_line);
2069 if (check_float(linetoken3))
2070 token3 >> token_value;
2072 uiuc_warnings_errors(1, *command_line);
2076 aeroLiftParts -> storeCommands (*command_line);
2081 if (check_float(linetoken3))
2082 token3 >> token_value;
2084 uiuc_warnings_errors(1, *command_line);
2086 CL_ih = token_value;
2087 aeroLiftParts -> storeCommands (*command_line);
2092 if (check_float(linetoken3))
2093 token3 >> token_value;
2095 uiuc_warnings_errors(1, *command_line);
2097 CL_de = token_value;
2098 CL_de_clean = CL_de;
2099 aeroLiftParts -> storeCommands (*command_line);
2104 CLfa = aircraft_directory + linetoken3;
2105 token4 >> token_value_convert1;
2106 token5 >> token_value_convert2;
2107 convert_y = uiuc_convert(token_value_convert1);
2108 convert_x = uiuc_convert(token_value_convert2);
2109 /* call 1D File Reader with file name (CLfa) and conversion
2110 factors; function returns array of alphas (aArray) and
2111 corresponding CL values (CLArray) and max number of
2112 terms in arrays (nAlpha) */
2113 uiuc_1DdataFileReader(CLfa,
2117 aeroLiftParts -> storeCommands (*command_line);
2122 CLfade = aircraft_directory + linetoken3;
2123 token4 >> token_value_convert1;
2124 token5 >> token_value_convert2;
2125 token6 >> token_value_convert3;
2126 convert_z = uiuc_convert(token_value_convert1);
2127 convert_x = uiuc_convert(token_value_convert2);
2128 convert_y = uiuc_convert(token_value_convert3);
2129 /* call 2D File Reader with file name (CLfade) and
2130 conversion factors; function returns array of
2131 elevator deflections (deArray) and corresponding
2132 alpha (aArray) and delta CL (CLArray) values and
2133 max number of terms in alpha arrays (nAlphaArray)
2134 and deflection array (nde) */
2135 uiuc_2DdataFileReader(CLfade,
2141 aeroLiftParts -> storeCommands (*command_line);
2146 CLfdf = aircraft_directory + linetoken3;
2147 token4 >> token_value_convert1;
2148 token5 >> token_value_convert2;
2149 convert_y = uiuc_convert(token_value_convert1);
2150 convert_x = uiuc_convert(token_value_convert2);
2151 /* call 1D File Reader with file name (CLfdf) and conversion
2152 factors; function returns array of dfs (dfArray) and
2153 corresponding CL values (CLArray) and max number of
2154 terms in arrays (ndf) */
2155 uiuc_1DdataFileReader(CLfdf,
2159 aeroLiftParts -> storeCommands (*command_line);
2161 // additional variables to streamline flap routine in aerodeflections
2163 int temp_counter = 1;
2164 while (temp_counter <= ndf)
2166 dfArray[temp_counter] = CLfdf_dfArray[temp_counter];
2167 TimeArray[temp_counter] = dfTimefdf_TimeArray[temp_counter];
2174 CLfadf = aircraft_directory + linetoken3;
2175 token4 >> token_value_convert1;
2176 token5 >> token_value_convert2;
2177 token6 >> token_value_convert3;
2178 convert_z = uiuc_convert(token_value_convert1);
2179 convert_x = uiuc_convert(token_value_convert2);
2180 convert_y = uiuc_convert(token_value_convert3);
2181 /* call 2D File Reader with file name (CLfadf) and
2182 conversion factors; function returns array of
2183 flap deflections (dfArray) and corresponding
2184 alpha (aArray) and delta CL (CLArray) values and
2185 max number of terms in alpha arrays (nAlphaArray)
2186 and deflection array (ndf) */
2187 uiuc_2DdataFileReader(CLfadf,
2193 aeroLiftParts -> storeCommands (*command_line);
2198 if (check_float(linetoken3))
2199 token3 >> token_value;
2201 uiuc_warnings_errors(1, *command_line);
2205 aeroLiftParts -> storeCommands (*command_line);
2210 if (check_float(linetoken3))
2211 token3 >> token_value;
2213 uiuc_warnings_errors(1, *command_line);
2217 aeroLiftParts -> storeCommands (*command_line);
2222 if (check_float(linetoken3))
2223 token3 >> token_value;
2225 uiuc_warnings_errors(1, *command_line);
2227 CZ_a2 = token_value;
2228 CZ_a2_clean = CZ_a2;
2229 aeroLiftParts -> storeCommands (*command_line);
2234 if (check_float(linetoken3))
2235 token3 >> token_value;
2237 uiuc_warnings_errors(1, *command_line);
2239 CZ_a3 = token_value;
2240 CZ_a3_clean = CZ_a3;
2241 aeroLiftParts -> storeCommands (*command_line);
2246 if (check_float(linetoken3))
2247 token3 >> token_value;
2249 uiuc_warnings_errors(1, *command_line);
2251 CZ_adot = token_value;
2252 CZ_adot_clean = CZ_adot;
2253 aeroLiftParts -> storeCommands (*command_line);
2258 if (check_float(linetoken3))
2259 token3 >> token_value;
2261 uiuc_warnings_errors(1, *command_line);
2265 aeroLiftParts -> storeCommands (*command_line);
2270 if (check_float(linetoken3))
2271 token3 >> token_value;
2273 uiuc_warnings_errors(1, *command_line);
2275 CZ_de = token_value;
2276 CZ_de_clean = CZ_de;
2277 aeroLiftParts -> storeCommands (*command_line);
2282 if (check_float(linetoken3))
2283 token3 >> token_value;
2285 uiuc_warnings_errors(1, *command_line);
2287 CZ_deb2 = token_value;
2288 CZ_deb2_clean = CZ_deb2;
2289 aeroLiftParts -> storeCommands (*command_line);
2294 if (check_float(linetoken3))
2295 token3 >> token_value;
2297 uiuc_warnings_errors(1, *command_line);
2299 CZ_df = token_value;
2300 CZ_df_clean = CZ_df;
2301 aeroLiftParts -> storeCommands (*command_line);
2306 if (check_float(linetoken3))
2307 token3 >> token_value;
2309 uiuc_warnings_errors(1, *command_line);
2311 CZ_adf = token_value;
2312 CZ_adf_clean = CZ_adf;
2313 aeroLiftParts -> storeCommands (*command_line);
2318 CZfa = aircraft_directory + linetoken3;
2319 token4 >> token_value_convert1;
2320 token5 >> token_value_convert2;
2321 convert_y = uiuc_convert(token_value_convert1);
2322 convert_x = uiuc_convert(token_value_convert2);
2323 /* call 1D File Reader with file name (CZfa) and conversion
2324 factors; function returns array of alphas (aArray) and
2325 corresponding CZ values (CZArray) and max number of
2326 terms in arrays (nAlpha) */
2327 uiuc_1DdataFileReader(CZfa,
2331 aeroLiftParts -> storeCommands (*command_line);
2334 case CZfabetaf_flag:
2336 int CZfabetaf_index, i;
2337 string CZfabetaf_file;
2339 CZfabetaf_file = aircraft_directory + linetoken3;
2340 token4 >> CZfabetaf_index;
2341 if (CZfabetaf_index < 0 || CZfabetaf_index >= 30)
2342 uiuc_warnings_errors(1, *command_line);
2343 if (CZfabetaf_index > CZfabetaf_nf)
2344 CZfabetaf_nf = CZfabetaf_index;
2345 token5 >> flap_value;
2346 CZfabetaf_fArray[CZfabetaf_index] = flap_value;
2347 token6 >> token_value_convert1;
2348 token7 >> token_value_convert2;
2349 token8 >> token_value_convert3;
2350 token9 >> CZfabetaf_nice;
2351 convert_z = uiuc_convert(token_value_convert1);
2352 convert_x = uiuc_convert(token_value_convert2);
2353 convert_y = uiuc_convert(token_value_convert3);
2354 /* call 2D File Reader with file name (CZfabetaf_file) and
2355 conversion factors; function returns array of
2356 beta (betaArray) and corresponding
2357 alpha (aArray) and CZ (CZArray) values and
2358 max number of terms in alpha arrays (nAlphaArray)
2359 and beta array (nbeta) */
2360 uiuc_2DdataFileReader(CZfabetaf_file,
2366 d_2_to_3(datafile_xArray, CZfabetaf_aArray, CZfabetaf_index);
2367 d_1_to_2(datafile_yArray, CZfabetaf_betaArray, CZfabetaf_index);
2368 d_2_to_3(datafile_zArray, CZfabetaf_CZArray, CZfabetaf_index);
2369 i_1_to_2(datafile_nxArray, CZfabetaf_nAlphaArray, CZfabetaf_index);
2370 CZfabetaf_nbeta[CZfabetaf_index] = datafile_ny;
2371 if (CZfabetaf_first==true)
2373 if (CZfabetaf_nice == 1)
2375 CZfabetaf_na_nice = datafile_nxArray[1];
2376 CZfabetaf_nb_nice = datafile_ny;
2377 d_1_to_1(datafile_yArray, CZfabetaf_bArray_nice);
2378 for (i=1; i<=CZfabetaf_na_nice; i++)
2379 CZfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2381 aeroLiftParts -> storeCommands (*command_line);
2382 CZfabetaf_first=false;
2388 int CZfadef_index, i;
2389 string CZfadef_file;
2391 CZfadef_file = aircraft_directory + linetoken3;
2392 token4 >> CZfadef_index;
2393 if (CZfadef_index < 0 || CZfadef_index >= 30)
2394 uiuc_warnings_errors(1, *command_line);
2395 if (CZfadef_index > CZfadef_nf)
2396 CZfadef_nf = CZfadef_index;
2397 token5 >> flap_value;
2398 CZfadef_fArray[CZfadef_index] = flap_value;
2399 token6 >> token_value_convert1;
2400 token7 >> token_value_convert2;
2401 token8 >> token_value_convert3;
2402 token9 >> CZfadef_nice;
2403 convert_z = uiuc_convert(token_value_convert1);
2404 convert_x = uiuc_convert(token_value_convert2);
2405 convert_y = uiuc_convert(token_value_convert3);
2406 /* call 2D File Reader with file name (CZfadef_file) and
2407 conversion factors; function returns array of
2408 elevator deflections (deArray) and corresponding
2409 alpha (aArray) and delta CZ (CZArray) values and
2410 max number of terms in alpha arrays (nAlphaArray)
2411 and delfection array (nde) */
2412 uiuc_2DdataFileReader(CZfadef_file,
2418 d_2_to_3(datafile_xArray, CZfadef_aArray, CZfadef_index);
2419 d_1_to_2(datafile_yArray, CZfadef_deArray, CZfadef_index);
2420 d_2_to_3(datafile_zArray, CZfadef_CZArray, CZfadef_index);
2421 i_1_to_2(datafile_nxArray, CZfadef_nAlphaArray, CZfadef_index);
2422 CZfadef_nde[CZfadef_index] = datafile_ny;
2423 if (CZfadef_first==true)
2425 if (CZfadef_nice == 1)
2427 CZfadef_na_nice = datafile_nxArray[1];
2428 CZfadef_nde_nice = datafile_ny;
2429 d_1_to_1(datafile_yArray, CZfadef_deArray_nice);
2430 for (i=1; i<=CZfadef_na_nice; i++)
2431 CZfadef_aArray_nice[i] = datafile_xArray[1][i];
2433 aeroLiftParts -> storeCommands (*command_line);
2434 CZfadef_first=false;
2440 int CZfaqf_index, i;
2443 CZfaqf_file = aircraft_directory + linetoken3;
2444 token4 >> CZfaqf_index;
2445 if (CZfaqf_index < 0 || CZfaqf_index >= 30)
2446 uiuc_warnings_errors(1, *command_line);
2447 if (CZfaqf_index > CZfaqf_nf)
2448 CZfaqf_nf = CZfaqf_index;
2449 token5 >> flap_value;
2450 CZfaqf_fArray[CZfaqf_index] = flap_value;
2451 token6 >> token_value_convert1;
2452 token7 >> token_value_convert2;
2453 token8 >> token_value_convert3;
2454 token9 >> CZfaqf_nice;
2455 convert_z = uiuc_convert(token_value_convert1);
2456 convert_x = uiuc_convert(token_value_convert2);
2457 convert_y = uiuc_convert(token_value_convert3);
2458 /* call 2D File Reader with file name (CZfaqf_file) and
2459 conversion factors; function returns array of
2460 pitch rate (qArray) and corresponding
2461 alpha (aArray) and delta CZ (CZArray) values and
2462 max number of terms in alpha arrays (nAlphaArray)
2463 and pitch rate array (nq) */
2464 uiuc_2DdataFileReader(CZfaqf_file,
2470 d_2_to_3(datafile_xArray, CZfaqf_aArray, CZfaqf_index);
2471 d_1_to_2(datafile_yArray, CZfaqf_qArray, CZfaqf_index);
2472 d_2_to_3(datafile_zArray, CZfaqf_CZArray, CZfaqf_index);
2473 i_1_to_2(datafile_nxArray, CZfaqf_nAlphaArray, CZfaqf_index);
2474 CZfaqf_nq[CZfaqf_index] = datafile_ny;
2475 if (CZfaqf_first==true)
2477 if (CZfaqf_nice == 1)
2479 CZfaqf_na_nice = datafile_nxArray[1];
2480 CZfaqf_nq_nice = datafile_ny;
2481 d_1_to_1(datafile_yArray, CZfaqf_qArray_nice);
2482 for (i=1; i<=CZfaqf_na_nice; i++)
2483 CZfaqf_aArray_nice[i] = datafile_xArray[1][i];
2485 aeroLiftParts -> storeCommands (*command_line);
2493 uiuc_warnings_errors(2, *command_line);
2500 void parse_Cm( const string& linetoken2, const string& linetoken3,
2501 const string& linetoken4, const string& linetoken5,
2502 const string& linetoken6, const string& linetoken7,
2503 const string& linetoken8, const string& linetoken9,
2504 const string& aircraft_directory,
2505 bool &Cmfabetaf_first, bool &Cmfadef_first,
2506 bool &Cmfaqf_first, LIST command_line ) {
2508 int token_value_convert1, token_value_convert2, token_value_convert3;
2509 double datafile_xArray[100][100], datafile_yArray[100];
2510 double datafile_zArray[100][100];
2511 int datafile_nxArray[100], datafile_ny;
2512 istrstream token3(linetoken3.c_str());
2513 istrstream token4(linetoken4.c_str());
2514 istrstream token5(linetoken5.c_str());
2515 istrstream token6(linetoken6.c_str());
2516 istrstream token7(linetoken7.c_str());
2517 istrstream token8(linetoken8.c_str());
2518 istrstream token9(linetoken9.c_str());
2520 switch(Cm_map[linetoken2])
2524 if (check_float(linetoken3))
2525 token3 >> token_value;
2527 uiuc_warnings_errors(1, *command_line);
2531 aeroPitchParts -> storeCommands (*command_line);
2536 if (check_float(linetoken3))
2537 token3 >> token_value;
2539 uiuc_warnings_errors(1, *command_line);
2543 aeroPitchParts -> storeCommands (*command_line);
2548 if (check_float(linetoken3))
2549 token3 >> token_value;
2551 uiuc_warnings_errors(1, *command_line);
2553 Cm_a2 = token_value;
2554 Cm_a2_clean = Cm_a2;
2555 aeroPitchParts -> storeCommands (*command_line);
2560 if (check_float(linetoken3))
2561 token3 >> token_value;
2563 uiuc_warnings_errors(1, *command_line);
2565 Cm_adot = token_value;
2566 Cm_adot_clean = Cm_adot;
2567 aeroPitchParts -> storeCommands (*command_line);
2572 if (check_float(linetoken3))
2573 token3 >> token_value;
2575 uiuc_warnings_errors(1, *command_line);
2579 aeroPitchParts -> storeCommands (*command_line);
2584 if (check_float(linetoken3))
2585 token3 >> token_value;
2587 uiuc_warnings_errors(1, *command_line);
2589 Cm_ih = token_value;
2590 aeroPitchParts -> storeCommands (*command_line);
2595 if (check_float(linetoken3))
2596 token3 >> token_value;
2598 uiuc_warnings_errors(1, *command_line);
2600 Cm_de = token_value;
2601 Cm_de_clean = Cm_de;
2602 aeroPitchParts -> storeCommands (*command_line);
2607 if (check_float(linetoken3))
2608 token3 >> token_value;
2610 uiuc_warnings_errors(1, *command_line);
2612 Cm_b2 = token_value;
2613 Cm_b2_clean = Cm_b2;
2614 aeroPitchParts -> storeCommands (*command_line);
2619 if (check_float(linetoken3))
2620 token3 >> token_value;
2622 uiuc_warnings_errors(1, *command_line);
2626 aeroPitchParts -> storeCommands (*command_line);
2631 if (check_float(linetoken3))
2632 token3 >> token_value;
2634 uiuc_warnings_errors(1, *command_line);
2636 Cm_df = token_value;
2637 Cm_df_clean = Cm_df;
2638 aeroPitchParts -> storeCommands (*command_line);
2643 Cmfa = aircraft_directory + linetoken3;
2644 token4 >> token_value_convert1;
2645 token5 >> token_value_convert2;
2646 convert_y = uiuc_convert(token_value_convert1);
2647 convert_x = uiuc_convert(token_value_convert2);
2648 /* call 1D File Reader with file name (Cmfa) and conversion
2649 factors; function returns array of alphas (aArray) and
2650 corresponding Cm values (CmArray) and max number of
2651 terms in arrays (nAlpha) */
2652 uiuc_1DdataFileReader(Cmfa,
2656 aeroPitchParts -> storeCommands (*command_line);
2661 Cmfade = aircraft_directory + linetoken3;
2662 token4 >> token_value_convert1;
2663 token5 >> token_value_convert2;
2664 token6 >> token_value_convert3;
2665 convert_z = uiuc_convert(token_value_convert1);
2666 convert_x = uiuc_convert(token_value_convert2);
2667 convert_y = uiuc_convert(token_value_convert3);
2668 /* call 2D File Reader with file name (Cmfade) and
2669 conversion factors; function returns array of
2670 elevator deflections (deArray) and corresponding
2671 alpha (aArray) and delta Cm (CmArray) values and
2672 max number of terms in alpha arrays (nAlphaArray)
2673 and deflection array (nde) */
2674 uiuc_2DdataFileReader(Cmfade,
2680 aeroPitchParts -> storeCommands (*command_line);
2685 Cmfdf = aircraft_directory + linetoken3;
2686 token4 >> token_value_convert1;
2687 token5 >> token_value_convert2;
2688 convert_y = uiuc_convert(token_value_convert1);
2689 convert_x = uiuc_convert(token_value_convert2);
2690 /* call 1D File Reader with file name (Cmfdf) and conversion
2691 factors; function returns array of dfs (dfArray) and
2692 corresponding Cm values (CmArray) and max number of
2693 terms in arrays (ndf) */
2694 uiuc_1DdataFileReader(Cmfdf,
2698 aeroPitchParts -> storeCommands (*command_line);
2703 Cmfadf = aircraft_directory + linetoken3;
2704 token4 >> token_value_convert1;
2705 token5 >> token_value_convert2;
2706 token6 >> token_value_convert3;
2707 convert_z = uiuc_convert(token_value_convert1);
2708 convert_x = uiuc_convert(token_value_convert2);
2709 convert_y = uiuc_convert(token_value_convert3);
2710 /* call 2D File Reader with file name (Cmfadf) and
2711 conversion factors; function returns array of
2712 flap deflections (dfArray) and corresponding
2713 alpha (aArray) and delta Cm (CmArray) values and
2714 max number of terms in alpha arrays (nAlphaArray)
2715 and deflection array (ndf) */
2716 uiuc_2DdataFileReader(Cmfadf,
2722 aeroPitchParts -> storeCommands (*command_line);
2725 case Cmfabetaf_flag:
2727 int Cmfabetaf_index, i;
2728 string Cmfabetaf_file;
2730 Cmfabetaf_file = aircraft_directory + linetoken3;
2731 token4 >> Cmfabetaf_index;
2732 if (Cmfabetaf_index < 0 || Cmfabetaf_index >= 30)
2733 uiuc_warnings_errors(1, *command_line);
2734 if (Cmfabetaf_index > Cmfabetaf_nf)
2735 Cmfabetaf_nf = Cmfabetaf_index;
2736 token5 >> flap_value;
2737 Cmfabetaf_fArray[Cmfabetaf_index] = flap_value;
2738 token6 >> token_value_convert1;
2739 token7 >> token_value_convert2;
2740 token8 >> token_value_convert3;
2741 token9 >> Cmfabetaf_nice;
2742 convert_z = uiuc_convert(token_value_convert1);
2743 convert_x = uiuc_convert(token_value_convert2);
2744 convert_y = uiuc_convert(token_value_convert3);
2745 /* call 2D File Reader with file name (Cmfabetaf_file) and
2746 conversion factors; function returns array of
2747 elevator deflections (deArray) and corresponding
2748 alpha (aArray) and delta CZ (CZArray) values and
2749 max number of terms in alpha arrays (nAlphaArray)
2750 and delfection array (nde) */
2751 uiuc_2DdataFileReader(Cmfabetaf_file,
2757 d_2_to_3(datafile_xArray, Cmfabetaf_aArray, Cmfabetaf_index);
2758 d_1_to_2(datafile_yArray, Cmfabetaf_betaArray, Cmfabetaf_index);
2759 d_2_to_3(datafile_zArray, Cmfabetaf_CmArray, Cmfabetaf_index);
2760 i_1_to_2(datafile_nxArray, Cmfabetaf_nAlphaArray, Cmfabetaf_index);
2761 Cmfabetaf_nbeta[Cmfabetaf_index] = datafile_ny;
2762 if (Cmfabetaf_first==true)
2764 if (Cmfabetaf_nice == 1)
2766 Cmfabetaf_na_nice = datafile_nxArray[1];
2767 Cmfabetaf_nb_nice = datafile_ny;
2768 d_1_to_1(datafile_yArray, Cmfabetaf_bArray_nice);
2769 for (i=1; i<=Cmfabetaf_na_nice; i++)
2770 Cmfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2772 aeroPitchParts -> storeCommands (*command_line);
2773 Cmfabetaf_first=false;
2779 int Cmfadef_index, i;
2780 string Cmfadef_file;
2782 Cmfadef_file = aircraft_directory + linetoken3;
2783 token4 >> Cmfadef_index;
2784 if (Cmfadef_index < 0 || Cmfadef_index >= 30)
2785 uiuc_warnings_errors(1, *command_line);
2786 if (Cmfadef_index > Cmfadef_nf)
2787 Cmfadef_nf = Cmfadef_index;
2788 token5 >> flap_value;
2789 Cmfadef_fArray[Cmfadef_index] = flap_value;
2790 token6 >> token_value_convert1;
2791 token7 >> token_value_convert2;
2792 token8 >> token_value_convert3;
2793 token9 >> Cmfadef_nice;
2794 convert_z = uiuc_convert(token_value_convert1);
2795 convert_x = uiuc_convert(token_value_convert2);
2796 convert_y = uiuc_convert(token_value_convert3);
2797 /* call 2D File Reader with file name (Cmfadef_file) and
2798 conversion factors; function returns array of
2799 elevator deflections (deArray) and corresponding
2800 alpha (aArray) and delta CZ (CZArray) values and
2801 max number of terms in alpha arrays (nAlphaArray)
2802 and delfection array (nde) */
2803 uiuc_2DdataFileReader(Cmfadef_file,
2809 d_2_to_3(datafile_xArray, Cmfadef_aArray, Cmfadef_index);
2810 d_1_to_2(datafile_yArray, Cmfadef_deArray, Cmfadef_index);
2811 d_2_to_3(datafile_zArray, Cmfadef_CmArray, Cmfadef_index);
2812 i_1_to_2(datafile_nxArray, Cmfadef_nAlphaArray, Cmfadef_index);
2813 Cmfadef_nde[Cmfadef_index] = datafile_ny;
2814 if (Cmfadef_first==true)
2816 if (Cmfadef_nice == 1)
2818 Cmfadef_na_nice = datafile_nxArray[1];
2819 Cmfadef_nde_nice = datafile_ny;
2820 d_1_to_1(datafile_yArray, Cmfadef_deArray_nice);
2821 for (i=1; i<=Cmfadef_na_nice; i++)
2822 Cmfadef_aArray_nice[i] = datafile_xArray[1][i];
2824 aeroPitchParts -> storeCommands (*command_line);
2825 Cmfadef_first=false;
2831 int Cmfaqf_index, i;
2834 Cmfaqf_file = aircraft_directory + linetoken3;
2835 token4 >> Cmfaqf_index;
2836 if (Cmfaqf_index < 0 || Cmfaqf_index >= 30)
2837 uiuc_warnings_errors(1, *command_line);
2838 if (Cmfaqf_index > Cmfaqf_nf)
2839 Cmfaqf_nf = Cmfaqf_index;
2840 token5 >> flap_value;
2841 Cmfaqf_fArray[Cmfaqf_index] = flap_value;
2842 token6 >> token_value_convert1;
2843 token7 >> token_value_convert2;
2844 token8 >> token_value_convert3;
2845 token9 >> Cmfaqf_nice;
2846 convert_z = uiuc_convert(token_value_convert1);
2847 convert_x = uiuc_convert(token_value_convert2);
2848 convert_y = uiuc_convert(token_value_convert3);
2849 /* call 2D File Reader with file name (Cmfaqf_file) and
2850 conversion factors; function returns array of
2851 elevator deflections (deArray) and corresponding
2852 alpha (aArray) and delta CZ (CZArray) values and
2853 max number of terms in alpha arrays (nAlphaArray)
2854 and delfection array (nde) */
2855 uiuc_2DdataFileReader(Cmfaqf_file,
2861 d_2_to_3(datafile_xArray, Cmfaqf_aArray, Cmfaqf_index);
2862 d_1_to_2(datafile_yArray, Cmfaqf_qArray, Cmfaqf_index);
2863 d_2_to_3(datafile_zArray, Cmfaqf_CmArray, Cmfaqf_index);
2864 i_1_to_2(datafile_nxArray, Cmfaqf_nAlphaArray, Cmfaqf_index);
2865 Cmfaqf_nq[Cmfaqf_index] = datafile_ny;
2866 if (Cmfaqf_first==true)
2868 if (Cmfaqf_nice == 1)
2870 Cmfaqf_na_nice = datafile_nxArray[1];
2871 Cmfaqf_nq_nice = datafile_ny;
2872 d_1_to_1(datafile_yArray, Cmfaqf_qArray_nice);
2873 for (i=1; i<=Cmfaqf_na_nice; i++)
2874 Cmfaqf_aArray_nice[i] = datafile_xArray[1][i];
2876 aeroPitchParts -> storeCommands (*command_line);
2884 uiuc_warnings_errors(2, *command_line);
2891 void parse_CY( const string& linetoken2, const string& linetoken3,
2892 const string& linetoken4, const string& linetoken5,
2893 const string& linetoken6, const string& linetoken7,
2894 const string& linetoken8, const string& linetoken9,
2895 const string& aircraft_directory,
2896 bool &CYfabetaf_first, bool &CYfadaf_first,
2897 bool &CYfadrf_first, bool &CYfapf_first,
2898 bool &CYfarf_first, LIST command_line ) {
2900 int token_value_convert1, token_value_convert2, token_value_convert3;
2901 double datafile_xArray[100][100], datafile_yArray[100];
2902 double datafile_zArray[100][100];
2903 int datafile_nxArray[100], datafile_ny;
2904 istrstream token3(linetoken3.c_str());
2905 istrstream token4(linetoken4.c_str());
2906 istrstream token5(linetoken5.c_str());
2907 istrstream token6(linetoken6.c_str());
2908 istrstream token7(linetoken7.c_str());
2909 istrstream token8(linetoken8.c_str());
2910 istrstream token9(linetoken9.c_str());
2912 switch(CY_map[linetoken2])
2916 if (check_float(linetoken3))
2917 token3 >> token_value;
2919 uiuc_warnings_errors(1, *command_line);
2923 aeroSideforceParts -> storeCommands (*command_line);
2928 if (check_float(linetoken3))
2929 token3 >> token_value;
2931 uiuc_warnings_errors(1, *command_line);
2933 CY_beta = token_value;
2934 CY_beta_clean = CY_beta;
2935 aeroSideforceParts -> storeCommands (*command_line);
2940 if (check_float(linetoken3))
2941 token3 >> token_value;
2943 uiuc_warnings_errors(1, *command_line);
2947 aeroSideforceParts -> storeCommands (*command_line);
2952 if (check_float(linetoken3))
2953 token3 >> token_value;
2955 uiuc_warnings_errors(1, *command_line);
2959 aeroSideforceParts -> storeCommands (*command_line);
2964 if (check_float(linetoken3))
2965 token3 >> token_value;
2967 uiuc_warnings_errors(1, *command_line);
2969 CY_da = token_value;
2970 CY_da_clean = CY_da;
2971 aeroSideforceParts -> storeCommands (*command_line);
2976 if (check_float(linetoken3))
2977 token3 >> token_value;
2979 uiuc_warnings_errors(2, *command_line);
2981 CY_dr = token_value;
2982 CY_dr_clean = CY_dr;
2983 aeroSideforceParts -> storeCommands (*command_line);
2988 if (check_float(linetoken3))
2989 token3 >> token_value;
2991 uiuc_warnings_errors(2, *command_line);
2993 CY_dra = token_value;
2994 CY_dra_clean = CY_dra;
2995 aeroSideforceParts -> storeCommands (*command_line);
3000 if (check_float(linetoken3))
3001 token3 >> token_value;
3003 uiuc_warnings_errors(2, *command_line);
3005 CY_bdot = token_value;
3006 CY_bdot_clean = CY_bdot;
3007 aeroSideforceParts -> storeCommands (*command_line);
3012 CYfada = aircraft_directory + linetoken3;
3013 token4 >> token_value_convert1;
3014 token5 >> token_value_convert2;
3015 token6 >> token_value_convert3;
3016 convert_z = uiuc_convert(token_value_convert1);
3017 convert_x = uiuc_convert(token_value_convert2);
3018 convert_y = uiuc_convert(token_value_convert3);
3019 /* call 2D File Reader with file name (CYfada) and
3020 conversion factors; function returns array of
3021 aileron deflections (daArray) and corresponding
3022 alpha (aArray) and delta CY (CYArray) values and
3023 max number of terms in alpha arrays (nAlphaArray)
3024 and deflection array (nda) */
3025 uiuc_2DdataFileReader(CYfada,
3031 aeroSideforceParts -> storeCommands (*command_line);
3034 case CYfbetadr_flag:
3036 CYfbetadr = aircraft_directory + linetoken3;
3037 token4 >> token_value_convert1;
3038 token5 >> token_value_convert2;
3039 token6 >> token_value_convert3;
3040 convert_z = uiuc_convert(token_value_convert1);
3041 convert_x = uiuc_convert(token_value_convert2);
3042 convert_y = uiuc_convert(token_value_convert3);
3043 /* call 2D File Reader with file name (CYfbetadr) and
3044 conversion factors; function returns array of
3045 rudder deflections (drArray) and corresponding
3046 beta (betaArray) and delta CY (CYArray) values and
3047 max number of terms in beta arrays (nBetaArray)
3048 and deflection array (ndr) */
3049 uiuc_2DdataFileReader(CYfbetadr,
3050 CYfbetadr_betaArray,
3053 CYfbetadr_nBetaArray,
3055 aeroSideforceParts -> storeCommands (*command_line);
3058 case CYfabetaf_flag:
3060 int CYfabetaf_index, i;
3061 string CYfabetaf_file;
3063 CYfabetaf_file = aircraft_directory + linetoken3;
3064 token4 >> CYfabetaf_index;
3065 if (CYfabetaf_index < 0 || CYfabetaf_index >= 30)
3066 uiuc_warnings_errors(1, *command_line);
3067 if (CYfabetaf_index > CYfabetaf_nf)
3068 CYfabetaf_nf = CYfabetaf_index;
3069 token5 >> flap_value;
3070 CYfabetaf_fArray[CYfabetaf_index] = flap_value;
3071 token6 >> token_value_convert1;
3072 token7 >> token_value_convert2;
3073 token8 >> token_value_convert3;
3074 token9 >> CYfabetaf_nice;
3075 convert_z = uiuc_convert(token_value_convert1);
3076 convert_x = uiuc_convert(token_value_convert2);
3077 convert_y = uiuc_convert(token_value_convert3);
3078 /* call 2D File Reader with file name (CYfabetaf_file) and
3079 conversion factors; function returns array of
3080 elevator deflections (deArray) and corresponding
3081 alpha (aArray) and delta CZ (CZArray) values and
3082 max number of terms in alpha arrays (nAlphaArray)
3083 and delfection array (nde) */
3084 uiuc_2DdataFileReader(CYfabetaf_file,
3090 d_2_to_3(datafile_xArray, CYfabetaf_aArray, CYfabetaf_index);
3091 d_1_to_2(datafile_yArray, CYfabetaf_betaArray, CYfabetaf_index);
3092 d_2_to_3(datafile_zArray, CYfabetaf_CYArray, CYfabetaf_index);
3093 i_1_to_2(datafile_nxArray, CYfabetaf_nAlphaArray, CYfabetaf_index);
3094 CYfabetaf_nbeta[CYfabetaf_index] = datafile_ny;
3095 if (CYfabetaf_first==true)
3097 if (CYfabetaf_nice == 1)
3099 CYfabetaf_na_nice = datafile_nxArray[1];
3100 CYfabetaf_nb_nice = datafile_ny;
3101 d_1_to_1(datafile_yArray, CYfabetaf_bArray_nice);
3102 for (i=1; i<=CYfabetaf_na_nice; i++)
3103 CYfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3105 aeroSideforceParts -> storeCommands (*command_line);
3106 CYfabetaf_first=false;
3112 int CYfadaf_index, i;
3113 string CYfadaf_file;
3115 CYfadaf_file = aircraft_directory + linetoken3;
3116 token4 >> CYfadaf_index;
3117 if (CYfadaf_index < 0 || CYfadaf_index >= 30)
3118 uiuc_warnings_errors(1, *command_line);
3119 if (CYfadaf_index > CYfadaf_nf)
3120 CYfadaf_nf = CYfadaf_index;
3121 token5 >> flap_value;
3122 CYfadaf_fArray[CYfadaf_index] = flap_value;
3123 token6 >> token_value_convert1;
3124 token7 >> token_value_convert2;
3125 token8 >> token_value_convert3;
3126 token9 >> CYfadaf_nice;
3127 convert_z = uiuc_convert(token_value_convert1);
3128 convert_x = uiuc_convert(token_value_convert2);
3129 convert_y = uiuc_convert(token_value_convert3);
3130 /* call 2D File Reader with file name (CYfadaf_file) and
3131 conversion factors; function returns array of
3132 elevator deflections (deArray) and corresponding
3133 alpha (aArray) and delta CZ (CZArray) values and
3134 max number of terms in alpha arrays (nAlphaArray)
3135 and delfection array (nde) */
3136 uiuc_2DdataFileReader(CYfadaf_file,
3142 d_2_to_3(datafile_xArray, CYfadaf_aArray, CYfadaf_index);
3143 d_1_to_2(datafile_yArray, CYfadaf_daArray, CYfadaf_index);
3144 d_2_to_3(datafile_zArray, CYfadaf_CYArray, CYfadaf_index);
3145 i_1_to_2(datafile_nxArray, CYfadaf_nAlphaArray, CYfadaf_index);
3146 CYfadaf_nda[CYfadaf_index] = datafile_ny;
3147 if (CYfadaf_first==true)
3149 if (CYfadaf_nice == 1)
3151 CYfadaf_na_nice = datafile_nxArray[1];
3152 CYfadaf_nda_nice = datafile_ny;
3153 d_1_to_1(datafile_yArray, CYfadaf_daArray_nice);
3154 for (i=1; i<=CYfadaf_na_nice; i++)
3155 CYfadaf_aArray_nice[i] = datafile_xArray[1][i];
3157 aeroSideforceParts -> storeCommands (*command_line);
3158 CYfadaf_first=false;
3164 int CYfadrf_index, i;
3165 string CYfadrf_file;
3167 CYfadrf_file = aircraft_directory + linetoken3;
3168 token4 >> CYfadrf_index;
3169 if (CYfadrf_index < 0 || CYfadrf_index >= 30)
3170 uiuc_warnings_errors(1, *command_line);
3171 if (CYfadrf_index > CYfadrf_nf)
3172 CYfadrf_nf = CYfadrf_index;
3173 token5 >> flap_value;
3174 CYfadrf_fArray[CYfadrf_index] = flap_value;
3175 token6 >> token_value_convert1;
3176 token7 >> token_value_convert2;
3177 token8 >> token_value_convert3;
3178 token9 >> CYfadrf_nice;
3179 convert_z = uiuc_convert(token_value_convert1);
3180 convert_x = uiuc_convert(token_value_convert2);
3181 convert_y = uiuc_convert(token_value_convert3);
3182 /* call 2D File Reader with file name (CYfadrf_file) and
3183 conversion factors; function returns array of
3184 elevator deflections (deArray) and corresponding
3185 alpha (aArray) and delta CZ (CZArray) values and
3186 max number of terms in alpha arrays (nAlphaArray)
3187 and delfection array (nde) */
3188 uiuc_2DdataFileReader(CYfadrf_file,
3194 d_2_to_3(datafile_xArray, CYfadrf_aArray, CYfadrf_index);
3195 d_1_to_2(datafile_yArray, CYfadrf_drArray, CYfadrf_index);
3196 d_2_to_3(datafile_zArray, CYfadrf_CYArray, CYfadrf_index);
3197 i_1_to_2(datafile_nxArray, CYfadrf_nAlphaArray, CYfadrf_index);
3198 CYfadrf_ndr[CYfadrf_index] = datafile_ny;
3199 if (CYfadrf_first==true)
3201 if (CYfadrf_nice == 1)
3203 CYfadrf_na_nice = datafile_nxArray[1];
3204 CYfadrf_ndr_nice = datafile_ny;
3205 d_1_to_1(datafile_yArray, CYfadrf_drArray_nice);
3206 for (i=1; i<=CYfadrf_na_nice; i++)
3207 CYfadrf_aArray_nice[i] = datafile_xArray[1][i];
3209 aeroSideforceParts -> storeCommands (*command_line);
3210 CYfadrf_first=false;
3216 int CYfapf_index, i;
3219 CYfapf_file = aircraft_directory + linetoken3;
3220 token4 >> CYfapf_index;
3221 if (CYfapf_index < 0 || CYfapf_index >= 30)
3222 uiuc_warnings_errors(1, *command_line);
3223 if (CYfapf_index > CYfapf_nf)
3224 CYfapf_nf = CYfapf_index;
3225 token5 >> flap_value;
3226 CYfapf_fArray[CYfapf_index] = flap_value;
3227 token6 >> token_value_convert1;
3228 token7 >> token_value_convert2;
3229 token8 >> token_value_convert3;
3230 token9 >> CYfapf_nice;
3231 convert_z = uiuc_convert(token_value_convert1);
3232 convert_x = uiuc_convert(token_value_convert2);
3233 convert_y = uiuc_convert(token_value_convert3);
3234 /* call 2D File Reader with file name (CYfapf_file) and
3235 conversion factors; function returns array of
3236 elevator deflections (deArray) and corresponding
3237 alpha (aArray) and delta CZ (CZArray) values and
3238 max number of terms in alpha arrays (nAlphaArray)
3239 and delfection array (nde) */
3240 uiuc_2DdataFileReader(CYfapf_file,
3246 d_2_to_3(datafile_xArray, CYfapf_aArray, CYfapf_index);
3247 d_1_to_2(datafile_yArray, CYfapf_pArray, CYfapf_index);
3248 d_2_to_3(datafile_zArray, CYfapf_CYArray, CYfapf_index);
3249 i_1_to_2(datafile_nxArray, CYfapf_nAlphaArray, CYfapf_index);
3250 CYfapf_np[CYfapf_index] = datafile_ny;
3251 if (CYfapf_first==true)
3253 if (CYfapf_nice == 1)
3255 CYfapf_na_nice = datafile_nxArray[1];
3256 CYfapf_np_nice = datafile_ny;
3257 d_1_to_1(datafile_yArray, CYfapf_pArray_nice);
3258 for (i=1; i<=CYfapf_na_nice; i++)
3259 CYfapf_aArray_nice[i] = datafile_xArray[1][i];
3261 aeroSideforceParts -> storeCommands (*command_line);
3268 int CYfarf_index, i;
3271 CYfarf_file = aircraft_directory + linetoken3;
3272 token4 >> CYfarf_index;
3273 if (CYfarf_index < 0 || CYfarf_index >= 30)
3274 uiuc_warnings_errors(1, *command_line);
3275 if (CYfarf_index > CYfarf_nf)
3276 CYfarf_nf = CYfarf_index;
3277 token5 >> flap_value;
3278 CYfarf_fArray[CYfarf_index] = flap_value;
3279 token6 >> token_value_convert1;
3280 token7 >> token_value_convert2;
3281 token8 >> token_value_convert3;
3282 token9 >> CYfarf_nice;
3283 convert_z = uiuc_convert(token_value_convert1);
3284 convert_x = uiuc_convert(token_value_convert2);
3285 convert_y = uiuc_convert(token_value_convert3);
3286 /* call 2D File Reader with file name (CYfarf_file) and
3287 conversion factors; function returns array of
3288 elevator deflections (deArray) and corresponding
3289 alpha (aArray) and delta CZ (CZArray) values and
3290 max number of terms in alpha arrays (nAlphaArray)
3291 and delfection array (nde) */
3292 uiuc_2DdataFileReader(CYfarf_file,
3298 d_2_to_3(datafile_xArray, CYfarf_aArray, CYfarf_index);
3299 d_1_to_2(datafile_yArray, CYfarf_rArray, CYfarf_index);
3300 d_2_to_3(datafile_zArray, CYfarf_CYArray, CYfarf_index);
3301 i_1_to_2(datafile_nxArray, CYfarf_nAlphaArray, CYfarf_index);
3302 CYfarf_nr[CYfarf_index] = datafile_ny;
3303 if (CYfarf_first==true)
3305 if (CYfarf_nice == 1)
3307 CYfarf_na_nice = datafile_nxArray[1];
3308 CYfarf_nr_nice = datafile_ny;
3309 d_1_to_1(datafile_yArray, CYfarf_rArray_nice);
3310 for (i=1; i<=CYfarf_na_nice; i++)
3311 CYfarf_aArray_nice[i] = datafile_xArray[1][i];
3313 aeroSideforceParts -> storeCommands (*command_line);
3321 uiuc_warnings_errors(2, *command_line);
3327 void parse_Cl( const string& linetoken2, const string& linetoken3,
3328 const string& linetoken4, const string& linetoken5,
3329 const string& linetoken6, const string& linetoken7,
3330 const string& linetoken8, const string& linetoken9,
3331 const string& aircraft_directory,
3332 bool &Clfabetaf_first, bool &Clfadaf_first,
3333 bool &Clfadrf_first, bool &Clfapf_first,
3334 bool &Clfarf_first, LIST command_line ) {
3336 int token_value_convert1, token_value_convert2, token_value_convert3;
3337 double datafile_xArray[100][100], datafile_yArray[100];
3338 double datafile_zArray[100][100];
3339 int datafile_nxArray[100], datafile_ny;
3340 istrstream token3(linetoken3.c_str());
3341 istrstream token4(linetoken4.c_str());
3342 istrstream token5(linetoken5.c_str());
3343 istrstream token6(linetoken6.c_str());
3344 istrstream token7(linetoken7.c_str());
3345 istrstream token8(linetoken8.c_str());
3346 istrstream token9(linetoken9.c_str());
3348 switch(Cl_map[linetoken2])
3352 if (check_float(linetoken3))
3353 token3 >> token_value;
3355 uiuc_warnings_errors(1, *command_line);
3359 aeroRollParts -> storeCommands (*command_line);
3364 if (check_float(linetoken3))
3365 token3 >> token_value;
3367 uiuc_warnings_errors(1, *command_line);
3369 Cl_beta = token_value;
3370 Cl_beta_clean = Cl_beta;
3371 aeroRollParts -> storeCommands (*command_line);
3376 if (check_float(linetoken3))
3377 token3 >> token_value;
3379 uiuc_warnings_errors(1, *command_line);
3383 aeroRollParts -> storeCommands (*command_line);
3388 if (check_float(linetoken3))
3389 token3 >> token_value;
3391 uiuc_warnings_errors(1, *command_line);
3395 aeroRollParts -> storeCommands (*command_line);
3400 if (check_float(linetoken3))
3401 token3 >> token_value;
3403 uiuc_warnings_errors(1, *command_line);
3405 Cl_da = token_value;
3406 Cl_da_clean = Cl_da;
3407 aeroRollParts -> storeCommands (*command_line);
3412 if (check_float(linetoken3))
3413 token3 >> token_value;
3415 uiuc_warnings_errors(1, *command_line);
3417 Cl_dr = token_value;
3418 Cl_dr_clean = Cl_dr;
3419 aeroRollParts -> storeCommands (*command_line);
3424 if (check_float(linetoken3))
3425 token3 >> token_value;
3427 uiuc_warnings_errors(1, *command_line);
3429 Cl_daa = token_value;
3430 Cl_daa_clean = Cl_daa;
3431 aeroRollParts -> storeCommands (*command_line);
3436 Clfada = aircraft_directory + linetoken3;
3437 token4 >> token_value_convert1;
3438 token5 >> token_value_convert2;
3439 token6 >> token_value_convert3;
3440 convert_z = uiuc_convert(token_value_convert1);
3441 convert_x = uiuc_convert(token_value_convert2);
3442 convert_y = uiuc_convert(token_value_convert3);
3443 /* call 2D File Reader with file name (Clfada) and
3444 conversion factors; function returns array of
3445 aileron deflections (daArray) and corresponding
3446 alpha (aArray) and delta Cl (ClArray) values and
3447 max number of terms in alpha arrays (nAlphaArray)
3448 and deflection array (nda) */
3449 uiuc_2DdataFileReader(Clfada,
3455 aeroRollParts -> storeCommands (*command_line);
3458 case Clfbetadr_flag:
3460 Clfbetadr = aircraft_directory + linetoken3;
3461 token4 >> token_value_convert1;
3462 token5 >> token_value_convert2;
3463 token6 >> token_value_convert3;
3464 convert_z = uiuc_convert(token_value_convert1);
3465 convert_x = uiuc_convert(token_value_convert2);
3466 convert_y = uiuc_convert(token_value_convert3);
3467 /* call 2D File Reader with file name (Clfbetadr) and
3468 conversion factors; function returns array of
3469 rudder deflections (drArray) and corresponding
3470 beta (betaArray) and delta Cl (ClArray) values and
3471 max number of terms in beta arrays (nBetaArray)
3472 and deflection array (ndr) */
3473 uiuc_2DdataFileReader(Clfbetadr,
3474 Clfbetadr_betaArray,
3477 Clfbetadr_nBetaArray,
3479 aeroRollParts -> storeCommands (*command_line);
3482 case Clfabetaf_flag:
3484 int Clfabetaf_index, i;
3485 string Clfabetaf_file;
3487 Clfabetaf_file = aircraft_directory + linetoken3;
3488 token4 >> Clfabetaf_index;
3489 if (Clfabetaf_index < 0 || Clfabetaf_index >= 100)
3490 uiuc_warnings_errors(1, *command_line);
3491 if (Clfabetaf_index > Clfabetaf_nf)
3492 Clfabetaf_nf = Clfabetaf_index;
3493 token5 >> flap_value;
3494 Clfabetaf_fArray[Clfabetaf_index] = flap_value;
3495 token6 >> token_value_convert1;
3496 token7 >> token_value_convert2;
3497 token8 >> token_value_convert3;
3498 token9 >> Clfabetaf_nice;
3499 convert_z = uiuc_convert(token_value_convert1);
3500 convert_x = uiuc_convert(token_value_convert2);
3501 convert_y = uiuc_convert(token_value_convert3);
3502 /* call 2D File Reader with file name (Clfabetaf_file) and
3503 conversion factors; function returns array of
3504 elevator deflections (deArray) and corresponding
3505 alpha (aArray) and delta CZ (CZArray) values and
3506 max number of terms in alpha arrays (nAlphaArray)
3507 and delfection array (nde) */
3508 uiuc_2DdataFileReader(Clfabetaf_file,
3514 d_2_to_3(datafile_xArray, Clfabetaf_aArray, Clfabetaf_index);
3515 d_1_to_2(datafile_yArray, Clfabetaf_betaArray, Clfabetaf_index);
3516 d_2_to_3(datafile_zArray, Clfabetaf_ClArray, Clfabetaf_index);
3517 i_1_to_2(datafile_nxArray, Clfabetaf_nAlphaArray, Clfabetaf_index);
3518 Clfabetaf_nbeta[Clfabetaf_index] = datafile_ny;
3519 if (Clfabetaf_first==true)
3521 if (Clfabetaf_nice == 1)
3523 Clfabetaf_na_nice = datafile_nxArray[1];
3524 Clfabetaf_nb_nice = datafile_ny;
3525 d_1_to_1(datafile_yArray, Clfabetaf_bArray_nice);
3526 for (i=1; i<=Clfabetaf_na_nice; i++)
3527 Clfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3529 aeroRollParts -> storeCommands (*command_line);
3530 Clfabetaf_first=false;
3536 int Clfadaf_index, i;
3537 string Clfadaf_file;
3539 Clfadaf_file = aircraft_directory + linetoken3;
3540 token4 >> Clfadaf_index;
3541 if (Clfadaf_index < 0 || Clfadaf_index >= 100)
3542 uiuc_warnings_errors(1, *command_line);
3543 if (Clfadaf_index > Clfadaf_nf)
3544 Clfadaf_nf = Clfadaf_index;
3545 token5 >> flap_value;
3546 Clfadaf_fArray[Clfadaf_index] = flap_value;
3547 token6 >> token_value_convert1;
3548 token7 >> token_value_convert2;
3549 token8 >> token_value_convert3;
3550 token9 >> Clfadaf_nice;
3551 convert_z = uiuc_convert(token_value_convert1);
3552 convert_x = uiuc_convert(token_value_convert2);
3553 convert_y = uiuc_convert(token_value_convert3);
3554 /* call 2D File Reader with file name (Clfadaf_file) and
3555 conversion factors; function returns array of
3556 elevator deflections (deArray) and corresponding
3557 alpha (aArray) and delta CZ (CZArray) values and
3558 max number of terms in alpha arrays (nAlphaArray)
3559 and delfection array (nde) */
3560 uiuc_2DdataFileReader(Clfadaf_file,
3566 d_2_to_3(datafile_xArray, Clfadaf_aArray, Clfadaf_index);
3567 d_1_to_2(datafile_yArray, Clfadaf_daArray, Clfadaf_index);
3568 d_2_to_3(datafile_zArray, Clfadaf_ClArray, Clfadaf_index);
3569 i_1_to_2(datafile_nxArray, Clfadaf_nAlphaArray, Clfadaf_index);
3570 Clfadaf_nda[Clfadaf_index] = datafile_ny;
3571 if (Clfadaf_first==true)
3573 if (Clfadaf_nice == 1)
3575 Clfadaf_na_nice = datafile_nxArray[1];
3576 Clfadaf_nda_nice = datafile_ny;
3577 d_1_to_1(datafile_yArray, Clfadaf_daArray_nice);
3578 for (i=1; i<=Clfadaf_na_nice; i++)
3579 Clfadaf_aArray_nice[i] = datafile_xArray[1][i];
3581 aeroRollParts -> storeCommands (*command_line);
3582 Clfadaf_first=false;
3588 int Clfadrf_index, i;
3589 string Clfadrf_file;
3591 Clfadrf_file = aircraft_directory + linetoken3;
3592 token4 >> Clfadrf_index;
3593 if (Clfadrf_index < 0 || Clfadrf_index >= 100)
3594 uiuc_warnings_errors(1, *command_line);
3595 if (Clfadrf_index > Clfadrf_nf)
3596 Clfadrf_nf = Clfadrf_index;
3597 token5 >> flap_value;
3598 Clfadrf_fArray[Clfadrf_index] = flap_value;
3599 token6 >> token_value_convert1;
3600 token7 >> token_value_convert2;
3601 token8 >> token_value_convert3;
3602 token9 >> Clfadrf_nice;
3603 convert_z = uiuc_convert(token_value_convert1);
3604 convert_x = uiuc_convert(token_value_convert2);
3605 convert_y = uiuc_convert(token_value_convert3);
3606 /* call 2D File Reader with file name (Clfadrf_file) and
3607 conversion factors; function returns array of
3608 elevator deflections (deArray) and corresponding
3609 alpha (aArray) and delta CZ (CZArray) values and
3610 max number of terms in alpha arrays (nAlphaArray)
3611 and delfection array (nde) */
3612 uiuc_2DdataFileReader(Clfadrf_file,
3618 d_2_to_3(datafile_xArray, Clfadrf_aArray, Clfadrf_index);
3619 d_1_to_2(datafile_yArray, Clfadrf_drArray, Clfadrf_index);
3620 d_2_to_3(datafile_zArray, Clfadrf_ClArray, Clfadrf_index);
3621 i_1_to_2(datafile_nxArray, Clfadrf_nAlphaArray, Clfadrf_index);
3622 Clfadrf_ndr[Clfadrf_index] = datafile_ny;
3623 if (Clfadrf_first==true)
3625 if (Clfadrf_nice == 1)
3627 Clfadrf_na_nice = datafile_nxArray[1];
3628 Clfadrf_ndr_nice = datafile_ny;
3629 d_1_to_1(datafile_yArray, Clfadrf_drArray_nice);
3630 for (i=1; i<=Clfadrf_na_nice; i++)
3631 Clfadrf_aArray_nice[i] = datafile_xArray[1][i];
3633 aeroRollParts -> storeCommands (*command_line);
3634 Clfadrf_first=false;
3640 int Clfapf_index, i;
3643 Clfapf_file = aircraft_directory + linetoken3;
3644 token4 >> Clfapf_index;
3645 if (Clfapf_index < 0 || Clfapf_index >= 100)
3646 uiuc_warnings_errors(1, *command_line);
3647 if (Clfapf_index > Clfapf_nf)
3648 Clfapf_nf = Clfapf_index;
3649 token5 >> flap_value;
3650 Clfapf_fArray[Clfapf_index] = flap_value;
3651 token6 >> token_value_convert1;
3652 token7 >> token_value_convert2;
3653 token8 >> token_value_convert3;
3654 token9 >> Clfapf_nice;
3655 convert_z = uiuc_convert(token_value_convert1);
3656 convert_x = uiuc_convert(token_value_convert2);
3657 convert_y = uiuc_convert(token_value_convert3);
3658 /* call 2D File Reader with file name (Clfapf_file) and
3659 conversion factors; function returns array of
3660 elevator deflections (deArray) and corresponding
3661 alpha (aArray) and delta CZ (CZArray) values and
3662 max number of terms in alpha arrays (nAlphaArray)
3663 and delfection array (nde) */
3664 uiuc_2DdataFileReader(Clfapf_file,
3670 d_2_to_3(datafile_xArray, Clfapf_aArray, Clfapf_index);
3671 d_1_to_2(datafile_yArray, Clfapf_pArray, Clfapf_index);
3672 d_2_to_3(datafile_zArray, Clfapf_ClArray, Clfapf_index);
3673 i_1_to_2(datafile_nxArray, Clfapf_nAlphaArray, Clfapf_index);
3674 Clfapf_np[Clfapf_index] = datafile_ny;
3675 if (Clfapf_first==true)
3677 if (Clfapf_nice == 1)
3679 Clfapf_na_nice = datafile_nxArray[1];
3680 Clfapf_np_nice = datafile_ny;
3681 d_1_to_1(datafile_yArray, Clfapf_pArray_nice);
3682 for (i=1; i<=Clfapf_na_nice; i++)
3683 Clfapf_aArray_nice[i] = datafile_xArray[1][i];
3685 aeroRollParts -> storeCommands (*command_line);
3692 int Clfarf_index, i;
3695 Clfarf_file = aircraft_directory + linetoken3;
3696 token4 >> Clfarf_index;
3697 if (Clfarf_index < 0 || Clfarf_index >= 100)
3698 uiuc_warnings_errors(1, *command_line);
3699 if (Clfarf_index > Clfarf_nf)
3700 Clfarf_nf = Clfarf_index;
3701 token5 >> flap_value;
3702 Clfarf_fArray[Clfarf_index] = flap_value;
3703 token6 >> token_value_convert1;
3704 token7 >> token_value_convert2;
3705 token8 >> token_value_convert3;
3706 token9 >> Clfarf_nice;
3707 convert_z = uiuc_convert(token_value_convert1);
3708 convert_x = uiuc_convert(token_value_convert2);
3709 convert_y = uiuc_convert(token_value_convert3);
3710 /* call 2D File Reader with file name (Clfarf_file) and
3711 conversion factors; function returns array of
3712 elevator deflections (deArray) and corresponding
3713 alpha (aArray) and delta CZ (CZArray) values and
3714 max number of terms in alpha arrays (nAlphaArray)
3715 and delfection array (nde) */
3716 uiuc_2DdataFileReader(Clfarf_file,
3722 d_2_to_3(datafile_xArray, Clfarf_aArray, Clfarf_index);
3723 d_1_to_2(datafile_yArray, Clfarf_rArray, Clfarf_index);
3724 d_2_to_3(datafile_zArray, Clfarf_ClArray, Clfarf_index);
3725 i_1_to_2(datafile_nxArray, Clfarf_nAlphaArray, Clfarf_index);
3726 Clfarf_nr[Clfarf_index] = datafile_ny;
3727 if (Clfarf_first==true)
3729 if (Clfarf_nice == 1)
3731 Clfarf_na_nice = datafile_nxArray[1];
3732 Clfarf_nr_nice = datafile_ny;
3733 d_1_to_1(datafile_yArray, Clfarf_rArray_nice);
3734 for (i=1; i<=Clfarf_na_nice; i++)
3735 Clfarf_aArray_nice[i] = datafile_xArray[1][i];
3737 aeroRollParts -> storeCommands (*command_line);
3745 uiuc_warnings_errors(2, *command_line);
3752 void parse_Cn( const string& linetoken2, const string& linetoken3,
3753 const string& linetoken4, const string& linetoken5,
3754 const string& linetoken6, const string& linetoken7,
3755 const string& linetoken8, const string& linetoken9,
3756 const string& aircraft_directory,
3757 bool &Cnfabetaf_first, bool &Cnfadaf_first,
3758 bool &Cnfadrf_first, bool &Cnfapf_first,
3759 bool &Cnfarf_first, LIST command_line ) {
3761 int token_value_convert1, token_value_convert2, token_value_convert3;
3762 double datafile_xArray[100][100], datafile_yArray[100];
3763 double datafile_zArray[100][100];
3764 int datafile_nxArray[100], datafile_ny;
3765 istrstream token3(linetoken3.c_str());
3766 istrstream token4(linetoken4.c_str());
3767 istrstream token5(linetoken5.c_str());
3768 istrstream token6(linetoken6.c_str());
3769 istrstream token7(linetoken7.c_str());
3770 istrstream token8(linetoken8.c_str());
3771 istrstream token9(linetoken9.c_str());
3773 switch(Cn_map[linetoken2])
3777 if (check_float(linetoken3))
3778 token3 >> token_value;
3780 uiuc_warnings_errors(1, *command_line);
3784 aeroYawParts -> storeCommands (*command_line);
3789 if (check_float(linetoken3))
3790 token3 >> token_value;
3792 uiuc_warnings_errors(1, *command_line);
3794 Cn_beta = token_value;
3795 Cn_beta_clean = Cn_beta;
3796 aeroYawParts -> storeCommands (*command_line);
3801 if (check_float(linetoken3))
3802 token3 >> token_value;
3804 uiuc_warnings_errors(1, *command_line);
3808 aeroYawParts -> storeCommands (*command_line);
3813 if (check_float(linetoken3))
3814 token3 >> token_value;
3816 uiuc_warnings_errors(1, *command_line);
3820 aeroYawParts -> storeCommands (*command_line);
3825 if (check_float(linetoken3))
3826 token3 >> token_value;
3828 uiuc_warnings_errors(1, *command_line);
3830 Cn_da = token_value;
3831 Cn_da_clean = Cn_da;
3832 aeroYawParts -> storeCommands (*command_line);
3837 if (check_float(linetoken3))
3838 token3 >> token_value;
3840 uiuc_warnings_errors(1, *command_line);
3842 Cn_dr = token_value;
3843 Cn_dr_clean = Cn_dr;
3844 aeroYawParts -> storeCommands (*command_line);
3849 if (check_float(linetoken3))
3850 token3 >> token_value;
3852 uiuc_warnings_errors(1, *command_line);
3856 aeroYawParts -> storeCommands (*command_line);
3861 if (check_float(linetoken3))
3862 token3 >> token_value;
3864 uiuc_warnings_errors(1, *command_line);
3866 Cn_b3 = token_value;
3867 Cn_b3_clean = Cn_b3;
3868 aeroYawParts -> storeCommands (*command_line);
3873 Cnfada = aircraft_directory + linetoken3;
3874 token4 >> token_value_convert1;
3875 token5 >> token_value_convert2;
3876 token6 >> token_value_convert3;
3877 convert_z = uiuc_convert(token_value_convert1);
3878 convert_x = uiuc_convert(token_value_convert2);
3879 convert_y = uiuc_convert(token_value_convert3);
3880 /* call 2D File Reader with file name (Cnfada) and
3881 conversion factors; function returns array of
3882 aileron deflections (daArray) and corresponding
3883 alpha (aArray) and delta Cn (CnArray) values and
3884 max number of terms in alpha arrays (nAlphaArray)
3885 and deflection array (nda) */
3886 uiuc_2DdataFileReader(Cnfada,
3892 aeroYawParts -> storeCommands (*command_line);
3895 case Cnfbetadr_flag:
3897 Cnfbetadr = aircraft_directory + linetoken3;
3898 token4 >> token_value_convert1;
3899 token5 >> token_value_convert2;
3900 token6 >> token_value_convert3;
3901 convert_z = uiuc_convert(token_value_convert1);
3902 convert_x = uiuc_convert(token_value_convert2);
3903 convert_y = uiuc_convert(token_value_convert3);
3904 /* call 2D File Reader with file name (Cnfbetadr) and
3905 conversion factors; function returns array of
3906 rudder deflections (drArray) and corresponding
3907 beta (betaArray) and delta Cn (CnArray) values and
3908 max number of terms in beta arrays (nBetaArray)
3909 and deflection array (ndr) */
3910 uiuc_2DdataFileReader(Cnfbetadr,
3911 Cnfbetadr_betaArray,
3914 Cnfbetadr_nBetaArray,
3916 aeroYawParts -> storeCommands (*command_line);
3919 case Cnfabetaf_flag:
3921 int Cnfabetaf_index, i;
3922 string Cnfabetaf_file;
3924 Cnfabetaf_file = aircraft_directory + linetoken3;
3925 token4 >> Cnfabetaf_index;
3926 if (Cnfabetaf_index < 0 || Cnfabetaf_index >= 100)
3927 uiuc_warnings_errors(1, *command_line);
3928 if (Cnfabetaf_index > Cnfabetaf_nf)
3929 Cnfabetaf_nf = Cnfabetaf_index;
3930 token5 >> flap_value;
3931 Cnfabetaf_fArray[Cnfabetaf_index] = flap_value;
3932 token6 >> token_value_convert1;
3933 token7 >> token_value_convert2;
3934 token8 >> token_value_convert3;
3935 token9 >> Cnfabetaf_nice;
3936 convert_z = uiuc_convert(token_value_convert1);
3937 convert_x = uiuc_convert(token_value_convert2);
3938 convert_y = uiuc_convert(token_value_convert3);
3939 /* call 2D File Reader with file name (Cnfabetaf_file) and
3940 conversion factors; function returns array of
3941 elevator deflections (deArray) and corresponding
3942 alpha (aArray) and delta CZ (CZArray) values and
3943 max number of terms in alpha arrays (nAlphaArray)
3944 and delfection array (nde) */
3945 uiuc_2DdataFileReader(Cnfabetaf_file,
3951 d_2_to_3(datafile_xArray, Cnfabetaf_aArray, Cnfabetaf_index);
3952 d_1_to_2(datafile_yArray, Cnfabetaf_betaArray, Cnfabetaf_index);
3953 d_2_to_3(datafile_zArray, Cnfabetaf_CnArray, Cnfabetaf_index);
3954 i_1_to_2(datafile_nxArray, Cnfabetaf_nAlphaArray, Cnfabetaf_index);
3955 Cnfabetaf_nbeta[Cnfabetaf_index] = datafile_ny;
3956 if (Cnfabetaf_first==true)
3958 if (Cnfabetaf_nice == 1)
3960 Cnfabetaf_na_nice = datafile_nxArray[1];
3961 Cnfabetaf_nb_nice = datafile_ny;
3962 d_1_to_1(datafile_yArray, Cnfabetaf_bArray_nice);
3963 for (i=1; i<=Cnfabetaf_na_nice; i++)
3964 Cnfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3966 aeroYawParts -> storeCommands (*command_line);
3967 Cnfabetaf_first=false;
3973 int Cnfadaf_index, i;
3974 string Cnfadaf_file;
3976 Cnfadaf_file = aircraft_directory + linetoken3;
3977 token4 >> Cnfadaf_index;
3978 if (Cnfadaf_index < 0 || Cnfadaf_index >= 100)
3979 uiuc_warnings_errors(1, *command_line);
3980 if (Cnfadaf_index > Cnfadaf_nf)
3981 Cnfadaf_nf = Cnfadaf_index;
3982 token5 >> flap_value;
3983 Cnfadaf_fArray[Cnfadaf_index] = flap_value;
3984 token6 >> token_value_convert1;
3985 token7 >> token_value_convert2;
3986 token8 >> token_value_convert3;
3987 token9 >> Cnfadaf_nice;
3988 convert_z = uiuc_convert(token_value_convert1);
3989 convert_x = uiuc_convert(token_value_convert2);
3990 convert_y = uiuc_convert(token_value_convert3);
3991 /* call 2D File Reader with file name (Cnfadaf_file) and
3992 conversion factors; function returns array of
3993 elevator deflections (deArray) and corresponding
3994 alpha (aArray) and delta CZ (CZArray) values and
3995 max number of terms in alpha arrays (nAlphaArray)
3996 and delfection array (nde) */
3997 uiuc_2DdataFileReader(Cnfadaf_file,
4003 d_2_to_3(datafile_xArray, Cnfadaf_aArray, Cnfadaf_index);
4004 d_1_to_2(datafile_yArray, Cnfadaf_daArray, Cnfadaf_index);
4005 d_2_to_3(datafile_zArray, Cnfadaf_CnArray, Cnfadaf_index);
4006 i_1_to_2(datafile_nxArray, Cnfadaf_nAlphaArray, Cnfadaf_index);
4007 Cnfadaf_nda[Cnfadaf_index] = datafile_ny;
4008 if (Cnfadaf_first==true)
4010 if (Cnfadaf_nice == 1)
4012 Cnfadaf_na_nice = datafile_nxArray[1];
4013 Cnfadaf_nda_nice = datafile_ny;
4014 d_1_to_1(datafile_yArray, Cnfadaf_daArray_nice);
4015 for (i=1; i<=Cnfadaf_na_nice; i++)
4016 Cnfadaf_aArray_nice[i] = datafile_xArray[1][i];
4018 aeroYawParts -> storeCommands (*command_line);
4019 Cnfadaf_first=false;
4025 int Cnfadrf_index, i;
4026 string Cnfadrf_file;
4028 Cnfadrf_file = aircraft_directory + linetoken3;
4029 token4 >> Cnfadrf_index;
4030 if (Cnfadrf_index < 0 || Cnfadrf_index >= 100)
4031 uiuc_warnings_errors(1, *command_line);
4032 if (Cnfadrf_index > Cnfadrf_nf)
4033 Cnfadrf_nf = Cnfadrf_index;
4034 token5 >> flap_value;
4035 Cnfadrf_fArray[Cnfadrf_index] = flap_value;
4036 token6 >> token_value_convert1;
4037 token7 >> token_value_convert2;
4038 token8 >> token_value_convert3;
4039 token9 >> Cnfadrf_nice;
4040 convert_z = uiuc_convert(token_value_convert1);
4041 convert_x = uiuc_convert(token_value_convert2);
4042 convert_y = uiuc_convert(token_value_convert3);
4043 /* call 2D File Reader with file name (Cnfadrf_file) and
4044 conversion factors; function returns array of
4045 elevator deflections (deArray) and corresponding
4046 alpha (aArray) and delta CZ (CZArray) values and
4047 max number of terms in alpha arrays (nAlphaArray)
4048 and delfection array (nde) */
4049 uiuc_2DdataFileReader(Cnfadrf_file,
4055 d_2_to_3(datafile_xArray, Cnfadrf_aArray, Cnfadrf_index);
4056 d_1_to_2(datafile_yArray, Cnfadrf_drArray, Cnfadrf_index);
4057 d_2_to_3(datafile_zArray, Cnfadrf_CnArray, Cnfadrf_index);
4058 i_1_to_2(datafile_nxArray, Cnfadrf_nAlphaArray, Cnfadrf_index);
4059 Cnfadrf_ndr[Cnfadrf_index] = datafile_ny;
4060 if (Cnfadrf_first==true)
4062 if (Cnfadrf_nice == 1)
4064 Cnfadrf_na_nice = datafile_nxArray[1];
4065 Cnfadrf_ndr_nice = datafile_ny;
4066 d_1_to_1(datafile_yArray, Cnfadrf_drArray_nice);
4067 for (i=1; i<=Cnfadrf_na_nice; i++)
4068 Cnfadrf_aArray_nice[i] = datafile_xArray[1][i];
4070 aeroYawParts -> storeCommands (*command_line);
4071 Cnfadrf_first=false;
4077 int Cnfapf_index, i;
4080 Cnfapf_file = aircraft_directory + linetoken3;
4081 token4 >> Cnfapf_index;
4082 if (Cnfapf_index < 0 || Cnfapf_index >= 100)
4083 uiuc_warnings_errors(1, *command_line);
4084 if (Cnfapf_index > Cnfapf_nf)
4085 Cnfapf_nf = Cnfapf_index;
4086 token5 >> flap_value;
4087 Cnfapf_fArray[Cnfapf_index] = flap_value;
4088 token6 >> token_value_convert1;
4089 token7 >> token_value_convert2;
4090 token8 >> token_value_convert3;
4091 token9 >> Cnfapf_nice;
4092 convert_z = uiuc_convert(token_value_convert1);
4093 convert_x = uiuc_convert(token_value_convert2);
4094 convert_y = uiuc_convert(token_value_convert3);
4095 /* call 2D File Reader with file name (Cnfapf_file) and
4096 conversion factors; function returns array of
4097 elevator deflections (deArray) and corresponding
4098 alpha (aArray) and delta CZ (CZArray) values and
4099 max number of terms in alpha arrays (nAlphaArray)
4100 and delfection array (nde) */
4101 uiuc_2DdataFileReader(Cnfapf_file,
4107 d_2_to_3(datafile_xArray, Cnfapf_aArray, Cnfapf_index);
4108 d_1_to_2(datafile_yArray, Cnfapf_pArray, Cnfapf_index);
4109 d_2_to_3(datafile_zArray, Cnfapf_CnArray, Cnfapf_index);
4110 i_1_to_2(datafile_nxArray, Cnfapf_nAlphaArray, Cnfapf_index);
4111 Cnfapf_np[Cnfapf_index] = datafile_ny;
4112 if (Cnfapf_first==true)
4114 if (Cnfapf_nice == 1)
4116 Cnfapf_na_nice = datafile_nxArray[1];
4117 Cnfapf_np_nice = datafile_ny;
4118 d_1_to_1(datafile_yArray, Cnfapf_pArray_nice);
4119 for (i=1; i<=Cnfapf_na_nice; i++)
4120 Cnfapf_aArray_nice[i] = datafile_xArray[1][i];
4122 aeroYawParts -> storeCommands (*command_line);
4129 int Cnfarf_index, i;
4132 Cnfarf_file = aircraft_directory + linetoken3;
4133 token4 >> Cnfarf_index;
4134 if (Cnfarf_index < 0 || Cnfarf_index >= 100)
4135 uiuc_warnings_errors(1, *command_line);
4136 if (Cnfarf_index > Cnfarf_nf)
4137 Cnfarf_nf = Cnfarf_index;
4138 token5 >> flap_value;
4139 Cnfarf_fArray[Cnfarf_index] = flap_value;
4140 token6 >> token_value_convert1;
4141 token7 >> token_value_convert2;
4142 token8 >> token_value_convert3;
4143 token9 >> Cnfarf_nice;
4144 convert_z = uiuc_convert(token_value_convert1);
4145 convert_x = uiuc_convert(token_value_convert2);
4146 convert_y = uiuc_convert(token_value_convert3);
4147 /* call 2D File Reader with file name (Cnfarf_file) and
4148 conversion factors; function returns array of
4149 elevator deflections (deArray) and corresponding
4150 alpha (aArray) and delta CZ (CZArray) values and
4151 max number of terms in alpha arrays (nAlphaArray)
4152 and delfection array (nde) */
4153 uiuc_2DdataFileReader(Cnfarf_file,
4159 d_2_to_3(datafile_xArray, Cnfarf_aArray, Cnfarf_index);
4160 d_1_to_2(datafile_yArray, Cnfarf_rArray, Cnfarf_index);
4161 d_2_to_3(datafile_zArray, Cnfarf_CnArray, Cnfarf_index);
4162 i_1_to_2(datafile_nxArray, Cnfarf_nAlphaArray, Cnfarf_index);
4163 Cnfarf_nr[Cnfarf_index] = datafile_ny;
4164 if (Cnfarf_first==true)
4166 if (Cnfarf_nice == 1)
4168 Cnfarf_na_nice = datafile_nxArray[1];
4169 Cnfarf_nr_nice = datafile_ny;
4170 d_1_to_1(datafile_yArray, Cnfarf_rArray_nice);
4171 for (i=1; i<=Cnfarf_na_nice; i++)
4172 Cnfarf_aArray_nice[i] = datafile_xArray[1][i];
4174 aeroYawParts -> storeCommands (*command_line);
4182 uiuc_warnings_errors(2, *command_line);
4188 void parse_gear( const string& linetoken2, const string& linetoken3,
4189 const string& linetoken4, const int& index,
4190 LIST command_line ) {
4192 istrstream token3(linetoken3.c_str());
4193 istrstream token4(linetoken4.c_str());
4195 switch(gear_map[linetoken2])
4199 if (check_float(linetoken3))
4200 token4 >> token_value;
4202 uiuc_warnings_errors(1, *command_line);
4203 D_gear_v[index][0] = token_value;
4204 gear_model[index] = true;
4209 if (check_float(linetoken3))
4210 token4 >> token_value;
4212 uiuc_warnings_errors(1, *command_line);
4213 D_gear_v[index][1] = token_value;
4214 gear_model[index] = true;
4219 if (check_float(linetoken3))
4220 token4 >> token_value;
4222 uiuc_warnings_errors(1, *command_line);
4223 D_gear_v[index][2] = token_value;
4224 gear_model[index] = true;
4229 if (check_float(linetoken3))
4230 token4 >> token_value;
4232 uiuc_warnings_errors(1, *command_line);
4233 cgear[index] = token_value;
4234 gear_model[index] = true;
4239 if (check_float(linetoken3))
4240 token4 >> token_value;
4242 uiuc_warnings_errors(1, *command_line);
4243 kgear[index] = token_value;
4244 gear_model[index] = true;
4249 if (check_float(linetoken3))
4250 token4 >> token_value;
4252 uiuc_warnings_errors(1, *command_line);
4253 muGear[index] = token_value;
4254 gear_model[index] = true;
4257 case strutLength_flag:
4259 if (check_float(linetoken3))
4260 token4 >> token_value;
4262 uiuc_warnings_errors(1, *command_line);
4263 strutLength[index] = token_value;
4264 gear_model[index] = true;
4270 uiuc_warnings_errors(2, *command_line);
4277 void parse_ice( const string& linetoken2, const string& linetoken3,
4278 const string& linetoken4, const string& linetoken5,
4279 const string& linetoken6, const string& linetoken7,
4280 const string& linetoken8, const string& linetoken9,
4281 const string& aircraft_directory,
4282 bool &tactilefadef_first, LIST command_line ) {
4284 int token_value_convert1, token_value_convert2, token_value_convert3;
4285 double datafile_xArray[100][100], datafile_yArray[100];
4286 double datafile_zArray[100][100];
4287 int datafile_nxArray[100], datafile_ny;
4288 istrstream token3(linetoken3.c_str());
4289 istrstream token4(linetoken4.c_str());
4290 istrstream token5(linetoken5.c_str());
4291 istrstream token6(linetoken6.c_str());
4292 istrstream token7(linetoken7.c_str());
4293 istrstream token8(linetoken8.c_str());
4294 istrstream token9(linetoken9.c_str());
4296 switch(ice_map[linetoken2])
4300 if (check_float(linetoken3))
4301 token3 >> token_value;
4304 uiuc_warnings_errors(1, *command_line);
4307 iceTime = token_value;
4310 case transientTime_flag:
4312 if (check_float(linetoken3))
4313 token3 >> token_value;
4315 uiuc_warnings_errors(1, *command_line);
4317 transientTime = token_value;
4320 case eta_ice_final_flag:
4322 if (check_float(linetoken3))
4323 token3 >> token_value;
4325 uiuc_warnings_errors(1, *command_line);
4327 eta_ice_final = token_value;
4330 case beta_probe_wing_flag:
4332 if (check_float(linetoken3))
4333 token3 >> token_value;
4335 uiuc_warnings_errors(1, *command_line);
4338 x_probe_wing = token_value;
4341 case beta_probe_tail_flag:
4343 if (check_float(linetoken3))
4344 token3 >> token_value;
4346 uiuc_warnings_errors(1, *command_line);
4349 x_probe_tail = token_value;
4354 if (check_float(linetoken3))
4355 token3 >> token_value;
4357 uiuc_warnings_errors(1, *command_line);
4364 if (check_float(linetoken3))
4365 token3 >> token_value;
4367 uiuc_warnings_errors(1, *command_line);
4374 if (check_float(linetoken3))
4375 token3 >> token_value;
4377 uiuc_warnings_errors(1, *command_line);
4379 kCD_a = token_value;
4384 if (check_float(linetoken3))
4385 token3 >> token_value;
4387 uiuc_warnings_errors(1, *command_line);
4389 kCD_adot = token_value;
4394 if (check_float(linetoken3))
4395 token3 >> token_value;
4397 uiuc_warnings_errors(1, *command_line);
4399 kCD_q = token_value;
4404 if (check_float(linetoken3))
4405 token3 >> token_value;
4407 uiuc_warnings_errors(1, *command_line);
4409 kCD_de = token_value;
4414 if (check_float(linetoken3))
4415 token3 >> token_value;
4417 uiuc_warnings_errors(1, *command_line);
4424 if (check_float(linetoken3))
4425 token3 >> token_value;
4427 uiuc_warnings_errors(1, *command_line);
4434 if (check_float(linetoken3))
4435 token3 >> token_value;
4437 uiuc_warnings_errors(1, *command_line);
4439 kCX_a = token_value;
4444 if (check_float(linetoken3))
4445 token3 >> token_value;
4447 uiuc_warnings_errors(1, *command_line);
4449 kCX_a2 = token_value;
4454 if (check_float(linetoken3))
4455 token3 >> token_value;
4457 uiuc_warnings_errors(1, *command_line);
4459 kCX_a3 = token_value;
4464 if (check_float(linetoken3))
4465 token3 >> token_value;
4467 uiuc_warnings_errors(1, *command_line);
4469 kCX_adot = token_value;
4474 if (check_float(linetoken3))
4475 token3 >> token_value;
4477 uiuc_warnings_errors(1, *command_line);
4479 kCX_q = token_value;
4484 if (check_float(linetoken3))
4485 token3 >> token_value;
4487 uiuc_warnings_errors(1, *command_line);
4489 kCX_de = token_value;
4494 if (check_float(linetoken3))
4495 token3 >> token_value;
4497 uiuc_warnings_errors(1, *command_line);
4499 kCX_dr = token_value;
4504 if (check_float(linetoken3))
4505 token3 >> token_value;
4507 uiuc_warnings_errors(1, *command_line);
4509 kCX_df = token_value;
4514 if (check_float(linetoken3))
4515 token3 >> token_value;
4517 uiuc_warnings_errors(1, *command_line);
4519 kCX_adf = token_value;
4524 if (check_float(linetoken3))
4525 token3 >> token_value;
4527 uiuc_warnings_errors(1, *command_line);
4534 if (check_float(linetoken3))
4535 token3 >> token_value;
4537 uiuc_warnings_errors(1, *command_line);
4539 kCL_a = token_value;
4544 if (check_float(linetoken3))
4545 token3 >> token_value;
4547 uiuc_warnings_errors(1, *command_line);
4549 kCL_adot = token_value;
4554 if (check_float(linetoken3))
4555 token3 >> token_value;
4557 uiuc_warnings_errors(1, *command_line);
4559 kCL_q = token_value;
4564 if (check_float(linetoken3))
4565 token3 >> token_value;
4567 uiuc_warnings_errors(1, *command_line);
4569 kCL_de = token_value;
4574 if (check_float(linetoken3))
4575 token3 >> token_value;
4577 uiuc_warnings_errors(1, *command_line);
4584 if (check_float(linetoken3))
4585 token3 >> token_value;
4587 uiuc_warnings_errors(1, *command_line);
4589 kCZ_a = token_value;
4594 if (check_float(linetoken3))
4595 token3 >> token_value;
4597 uiuc_warnings_errors(1, *command_line);
4599 kCZ_a2 = token_value;
4604 if (check_float(linetoken3))
4605 token3 >> token_value;
4607 uiuc_warnings_errors(1, *command_line);
4609 kCZ_a3 = token_value;
4614 if (check_float(linetoken3))
4615 token3 >> token_value;
4617 uiuc_warnings_errors(1, *command_line);
4619 kCZ_adot = token_value;
4624 if (check_float(linetoken3))
4625 token3 >> token_value;
4627 uiuc_warnings_errors(1, *command_line);
4629 kCZ_q = token_value;
4634 if (check_float(linetoken3))
4635 token3 >> token_value;
4637 uiuc_warnings_errors(1, *command_line);
4639 kCZ_de = token_value;
4644 if (check_float(linetoken3))
4645 token3 >> token_value;
4647 uiuc_warnings_errors(1, *command_line);
4649 kCZ_deb2 = token_value;
4654 if (check_float(linetoken3))
4655 token3 >> token_value;
4657 uiuc_warnings_errors(1, *command_line);
4659 kCZ_df = token_value;
4664 if (check_float(linetoken3))
4665 token3 >> token_value;
4667 uiuc_warnings_errors(1, *command_line);
4669 kCZ_adf = token_value;
4674 if (check_float(linetoken3))
4675 token3 >> token_value;
4677 uiuc_warnings_errors(1, *command_line);
4684 if (check_float(linetoken3))
4685 token3 >> token_value;
4687 uiuc_warnings_errors(1, *command_line);
4689 kCm_a = token_value;
4694 if (check_float(linetoken3))
4695 token3 >> token_value;
4697 uiuc_warnings_errors(1, *command_line);
4699 kCm_a2 = token_value;
4704 if (check_float(linetoken3))
4705 token3 >> token_value;
4707 uiuc_warnings_errors(1, *command_line);
4709 kCm_adot = token_value;
4714 if (check_float(linetoken3))
4715 token3 >> token_value;
4717 uiuc_warnings_errors(1, *command_line);
4719 kCm_q = token_value;
4724 if (check_float(linetoken3))
4725 token3 >> token_value;
4727 uiuc_warnings_errors(1, *command_line);
4729 kCm_de = token_value;
4734 if (check_float(linetoken3))
4735 token3 >> token_value;
4737 uiuc_warnings_errors(1, *command_line);
4739 kCm_b2 = token_value;
4744 if (check_float(linetoken3))
4745 token3 >> token_value;
4747 uiuc_warnings_errors(1, *command_line);
4749 kCm_r = token_value;
4754 if (check_float(linetoken3))
4755 token3 >> token_value;
4757 uiuc_warnings_errors(1, *command_line);
4759 kCm_df = token_value;
4764 if (check_float(linetoken3))
4765 token3 >> token_value;
4767 uiuc_warnings_errors(1, *command_line);
4774 if (check_float(linetoken3))
4775 token3 >> token_value;
4777 uiuc_warnings_errors(1, *command_line);
4779 kCY_beta = token_value;
4784 if (check_float(linetoken3))
4785 token3 >> token_value;
4787 uiuc_warnings_errors(1, *command_line);
4789 kCY_p = token_value;
4794 if (check_float(linetoken3))
4795 token3 >> token_value;
4797 uiuc_warnings_errors(1, *command_line);
4799 kCY_r = token_value;
4804 if (check_float(linetoken3))
4805 token3 >> token_value;
4807 uiuc_warnings_errors(1, *command_line);
4809 kCY_da = token_value;
4814 if (check_float(linetoken3))
4815 token3 >> token_value;
4817 uiuc_warnings_errors(1, *command_line);
4819 kCY_dr = token_value;
4824 if (check_float(linetoken3))
4825 token3 >> token_value;
4827 uiuc_warnings_errors(1, *command_line);
4829 kCY_dra = token_value;
4834 if (check_float(linetoken3))
4835 token3 >> token_value;
4837 uiuc_warnings_errors(1, *command_line);
4839 kCY_bdot = token_value;
4844 if (check_float(linetoken3))
4845 token3 >> token_value;
4847 uiuc_warnings_errors(1, *command_line);
4854 if (check_float(linetoken3))
4855 token3 >> token_value;
4857 uiuc_warnings_errors(1, *command_line);
4859 kCl_beta = token_value;
4864 if (check_float(linetoken3))
4865 token3 >> token_value;
4867 uiuc_warnings_errors(1, *command_line);
4869 kCl_p = token_value;
4874 if (check_float(linetoken3))
4875 token3 >> token_value;
4877 uiuc_warnings_errors(1, *command_line);
4879 kCl_r = token_value;
4884 if (check_float(linetoken3))
4885 token3 >> token_value;
4887 uiuc_warnings_errors(1, *command_line);
4889 kCl_da = token_value;
4894 if (check_float(linetoken3))
4895 token3 >> token_value;
4897 uiuc_warnings_errors(1, *command_line);
4899 kCl_dr = token_value;
4904 if (check_float(linetoken3))
4905 token3 >> token_value;
4907 uiuc_warnings_errors(1, *command_line);
4909 kCl_daa = token_value;
4914 if (check_float(linetoken3))
4915 token3 >> token_value;
4917 uiuc_warnings_errors(1, *command_line);
4924 if (check_float(linetoken3))
4925 token3 >> token_value;
4927 uiuc_warnings_errors(1, *command_line);
4929 kCn_beta = token_value;
4934 if (check_float(linetoken3))
4935 token3 >> token_value;
4937 uiuc_warnings_errors(1, *command_line);
4939 kCn_p = token_value;
4944 if (check_float(linetoken3))
4945 token3 >> token_value;
4947 uiuc_warnings_errors(1, *command_line);
4949 kCn_r = token_value;
4954 if (check_float(linetoken3))
4955 token3 >> token_value;
4957 uiuc_warnings_errors(1, *command_line);
4959 kCn_da = token_value;
4964 if (check_float(linetoken3))
4965 token3 >> token_value;
4967 uiuc_warnings_errors(1, *command_line);
4969 kCn_dr = token_value;
4974 if (check_float(linetoken3))
4975 token3 >> token_value;
4977 uiuc_warnings_errors(1, *command_line);
4979 kCn_q = token_value;
4984 if (check_float(linetoken3))
4985 token3 >> token_value;
4987 uiuc_warnings_errors(1, *command_line);
4989 kCn_b3 = token_value;
4995 if (check_float(linetoken4))
4996 token4 >> token_value;
4998 uiuc_warnings_errors(1, *command_line);
5000 if (index < 0 || index >= 20)
5001 uiuc_warnings_errors(1, *command_line);
5002 bootTime[index] = token_value;
5003 bootTrue[index] = true;
5006 case eta_wing_left_input_flag:
5008 eta_from_file = true;
5009 eta_wing_left_input = true;
5010 eta_wing_left_input_file = aircraft_directory + linetoken3;
5011 token4 >> token_value_convert1;
5012 token5 >> token_value_convert2;
5013 convert_y = uiuc_convert(token_value_convert1);
5014 convert_x = uiuc_convert(token_value_convert2);
5015 uiuc_1DdataFileReader(eta_wing_left_input_file,
5016 eta_wing_left_input_timeArray,
5017 eta_wing_left_input_daArray,
5018 eta_wing_left_input_ntime);
5019 token6 >> token_value;
5020 eta_wing_left_input_startTime = token_value;
5023 case eta_wing_right_input_flag:
5025 eta_from_file = true;
5026 eta_wing_right_input = true;
5027 eta_wing_right_input_file = aircraft_directory + linetoken3;
5028 token4 >> token_value_convert1;
5029 token5 >> token_value_convert2;
5030 convert_y = uiuc_convert(token_value_convert1);
5031 convert_x = uiuc_convert(token_value_convert2);
5032 uiuc_1DdataFileReader(eta_wing_right_input_file,
5033 eta_wing_right_input_timeArray,
5034 eta_wing_right_input_daArray,
5035 eta_wing_right_input_ntime);
5036 token6 >> token_value;
5037 eta_wing_right_input_startTime = token_value;
5040 case eta_tail_input_flag:
5042 eta_from_file = true;
5043 eta_tail_input = true;
5044 eta_tail_input_file = aircraft_directory + linetoken3;
5045 token4 >> token_value_convert1;
5046 token5 >> token_value_convert2;
5047 convert_y = uiuc_convert(token_value_convert1);
5048 convert_x = uiuc_convert(token_value_convert2);
5049 uiuc_1DdataFileReader(eta_tail_input_file,
5050 eta_tail_input_timeArray,
5051 eta_tail_input_daArray,
5052 eta_tail_input_ntime);
5053 token6 >> token_value;
5054 eta_tail_input_startTime = token_value;
5057 case nonlin_ice_case_flag:
5059 token3 >> nonlin_ice_case;
5064 if (check_float(linetoken3))
5065 token3 >> token_value;
5067 uiuc_warnings_errors(1, *command_line);
5069 eta_tail = token_value;
5072 case eta_wing_left_flag:
5074 if (check_float(linetoken3))
5075 token3 >> token_value;
5077 uiuc_warnings_errors(1, *command_line);
5079 eta_wing_left = token_value;
5082 case eta_wing_right_flag:
5084 if (check_float(linetoken3))
5085 token3 >> token_value;
5087 uiuc_warnings_errors(1, *command_line);
5089 eta_wing_right = token_value;
5092 case demo_eps_alpha_max_flag:
5094 demo_eps_alpha_max = true;
5095 demo_eps_alpha_max_file = aircraft_directory + linetoken3;
5096 token4 >> token_value_convert1;
5097 token5 >> token_value_convert2;
5098 convert_y = uiuc_convert(token_value_convert1);
5099 convert_x = uiuc_convert(token_value_convert2);
5100 uiuc_1DdataFileReader(demo_eps_alpha_max_file,
5101 demo_eps_alpha_max_timeArray,
5102 demo_eps_alpha_max_daArray,
5103 demo_eps_alpha_max_ntime);
5104 token6 >> token_value;
5105 demo_eps_alpha_max_startTime = token_value;
5108 case demo_eps_pitch_max_flag:
5110 demo_eps_pitch_max = true;
5111 demo_eps_pitch_max_file = aircraft_directory + linetoken3;
5112 token4 >> token_value_convert1;
5113 token5 >> token_value_convert2;
5114 convert_y = uiuc_convert(token_value_convert1);
5115 convert_x = uiuc_convert(token_value_convert2);
5116 uiuc_1DdataFileReader(demo_eps_pitch_max_file,
5117 demo_eps_pitch_max_timeArray,
5118 demo_eps_pitch_max_daArray,
5119 demo_eps_pitch_max_ntime);
5120 token6 >> token_value;
5121 demo_eps_pitch_max_startTime = token_value;
5124 case demo_eps_pitch_min_flag:
5126 demo_eps_pitch_min = true;
5127 demo_eps_pitch_min_file = aircraft_directory + linetoken3;
5128 token4 >> token_value_convert1;
5129 token5 >> token_value_convert2;
5130 convert_y = uiuc_convert(token_value_convert1);
5131 convert_x = uiuc_convert(token_value_convert2);
5132 uiuc_1DdataFileReader(demo_eps_pitch_min_file,
5133 demo_eps_pitch_min_timeArray,
5134 demo_eps_pitch_min_daArray,
5135 demo_eps_pitch_min_ntime);
5136 token6 >> token_value;
5137 demo_eps_pitch_min_startTime = token_value;
5140 case demo_eps_roll_max_flag:
5142 demo_eps_roll_max = true;
5143 demo_eps_roll_max_file = aircraft_directory + linetoken3;
5144 token4 >> token_value_convert1;
5145 token5 >> token_value_convert2;
5146 convert_y = uiuc_convert(token_value_convert1);
5147 convert_x = uiuc_convert(token_value_convert2);
5148 uiuc_1DdataFileReader(demo_eps_roll_max_file,
5149 demo_eps_roll_max_timeArray,
5150 demo_eps_roll_max_daArray,
5151 demo_eps_roll_max_ntime);
5152 token6 >> token_value;
5153 demo_eps_roll_max_startTime = token_value;
5156 case demo_eps_thrust_min_flag:
5158 demo_eps_thrust_min = true;
5159 demo_eps_thrust_min_file = aircraft_directory + linetoken3;
5160 token4 >> token_value_convert1;
5161 token5 >> token_value_convert2;
5162 convert_y = uiuc_convert(token_value_convert1);
5163 convert_x = uiuc_convert(token_value_convert2);
5164 uiuc_1DdataFileReader(demo_eps_thrust_min_file,
5165 demo_eps_thrust_min_timeArray,
5166 demo_eps_thrust_min_daArray,
5167 demo_eps_thrust_min_ntime);
5168 token6 >> token_value;
5169 demo_eps_thrust_min_startTime = token_value;
5172 case demo_eps_airspeed_max_flag:
5174 demo_eps_airspeed_max = true;
5175 demo_eps_airspeed_max_file = aircraft_directory + linetoken3;
5176 token4 >> token_value_convert1;
5177 token5 >> token_value_convert2;
5178 convert_y = uiuc_convert(token_value_convert1);
5179 convert_x = uiuc_convert(token_value_convert2);
5180 uiuc_1DdataFileReader(demo_eps_airspeed_max_file,
5181 demo_eps_airspeed_max_timeArray,
5182 demo_eps_airspeed_max_daArray,
5183 demo_eps_airspeed_max_ntime);
5184 token6 >> token_value;
5185 demo_eps_airspeed_max_startTime = token_value;
5188 case demo_eps_airspeed_min_flag:
5190 demo_eps_airspeed_min = true;
5191 demo_eps_airspeed_min_file = aircraft_directory + linetoken3;
5192 token4 >> token_value_convert1;
5193 token5 >> token_value_convert2;
5194 convert_y = uiuc_convert(token_value_convert1);
5195 convert_x = uiuc_convert(token_value_convert2);
5196 uiuc_1DdataFileReader(demo_eps_airspeed_min_file,
5197 demo_eps_airspeed_min_timeArray,
5198 demo_eps_airspeed_min_daArray,
5199 demo_eps_airspeed_min_ntime);
5200 token6 >> token_value;
5201 demo_eps_airspeed_min_startTime = token_value;
5204 case demo_eps_flap_max_flag:
5206 demo_eps_flap_max = true;
5207 demo_eps_flap_max_file = aircraft_directory + linetoken3;
5208 token4 >> token_value_convert1;
5209 token5 >> token_value_convert2;
5210 convert_y = uiuc_convert(token_value_convert1);
5211 convert_x = uiuc_convert(token_value_convert2);
5212 uiuc_1DdataFileReader(demo_eps_flap_max_file,
5213 demo_eps_flap_max_timeArray,
5214 demo_eps_flap_max_daArray,
5215 demo_eps_flap_max_ntime);
5216 token6 >> token_value;
5217 demo_eps_flap_max_startTime = token_value;
5220 case demo_boot_cycle_tail_flag:
5222 demo_boot_cycle_tail = true;
5223 demo_boot_cycle_tail_file = aircraft_directory + linetoken3;
5224 token4 >> token_value_convert1;
5225 token5 >> token_value_convert2;
5226 convert_y = uiuc_convert(token_value_convert1);
5227 convert_x = uiuc_convert(token_value_convert2);
5228 uiuc_1DdataFileReader(demo_boot_cycle_tail_file,
5229 demo_boot_cycle_tail_timeArray,
5230 demo_boot_cycle_tail_daArray,
5231 demo_boot_cycle_tail_ntime);
5232 token6 >> token_value;
5233 demo_boot_cycle_tail_startTime = token_value;
5236 case demo_boot_cycle_wing_left_flag:
5238 demo_boot_cycle_wing_left = true;
5239 demo_boot_cycle_wing_left_file = aircraft_directory + linetoken3;
5240 token4 >> token_value_convert1;
5241 token5 >> token_value_convert2;
5242 convert_y = uiuc_convert(token_value_convert1);
5243 convert_x = uiuc_convert(token_value_convert2);
5244 uiuc_1DdataFileReader(demo_boot_cycle_wing_left_file,
5245 demo_boot_cycle_wing_left_timeArray,
5246 demo_boot_cycle_wing_left_daArray,
5247 demo_boot_cycle_wing_left_ntime);
5248 token6 >> token_value;
5249 demo_boot_cycle_wing_left_startTime = token_value;
5252 case demo_boot_cycle_wing_right_flag:
5254 demo_boot_cycle_wing_right = true;
5255 demo_boot_cycle_wing_right_file = aircraft_directory + linetoken3;
5256 token4 >> token_value_convert1;
5257 token5 >> token_value_convert2;
5258 convert_y = uiuc_convert(token_value_convert1);
5259 convert_x = uiuc_convert(token_value_convert2);
5260 uiuc_1DdataFileReader(demo_boot_cycle_wing_right_file,
5261 demo_boot_cycle_wing_right_timeArray,
5262 demo_boot_cycle_wing_right_daArray,
5263 demo_boot_cycle_wing_right_ntime);
5264 token6 >> token_value;
5265 demo_boot_cycle_wing_right_startTime = token_value;
5268 case demo_eps_pitch_input_flag:
5270 demo_eps_pitch_input = true;
5271 demo_eps_pitch_input_file = aircraft_directory + linetoken3;
5272 token4 >> token_value_convert1;
5273 token5 >> token_value_convert2;
5274 convert_y = uiuc_convert(token_value_convert1);
5275 convert_x = uiuc_convert(token_value_convert2);
5276 uiuc_1DdataFileReader(demo_eps_pitch_input_file,
5277 demo_eps_pitch_input_timeArray,
5278 demo_eps_pitch_input_daArray,
5279 demo_eps_pitch_input_ntime);
5280 token6 >> token_value;
5281 demo_eps_pitch_input_startTime = token_value;
5284 case demo_ap_Theta_ref_deg_flag:
5286 demo_ap_Theta_ref_deg = true;
5287 demo_ap_Theta_ref_deg_file = aircraft_directory + linetoken3;
5288 token4 >> token_value_convert1;
5289 token5 >> token_value_convert2;
5290 convert_y = uiuc_convert(token_value_convert1);
5291 convert_x = uiuc_convert(token_value_convert2);
5292 uiuc_1DdataFileReader(demo_ap_Theta_ref_deg_file,
5293 demo_ap_Theta_ref_deg_timeArray,
5294 demo_ap_Theta_ref_deg_daArray,
5295 demo_ap_Theta_ref_deg_ntime);
5296 token6 >> token_value;
5297 demo_ap_Theta_ref_deg_startTime = token_value;
5300 case demo_ap_pah_on_flag:
5302 demo_ap_pah_on = true;
5303 demo_ap_pah_on_file = aircraft_directory + linetoken3;
5304 token4 >> token_value_convert1;
5305 token5 >> token_value_convert2;
5306 convert_y = uiuc_convert(token_value_convert1);
5307 convert_x = uiuc_convert(token_value_convert2);
5308 uiuc_1DdataFileReader(demo_ap_pah_on_file,
5309 demo_ap_pah_on_timeArray,
5310 demo_ap_pah_on_daArray,
5311 demo_ap_pah_on_ntime);
5312 token6 >> token_value;
5313 demo_ap_pah_on_startTime = token_value;
5316 case tactilefadef_flag:
5318 int tactilefadef_index, i;
5319 string tactilefadef_file;
5321 tactilefadef = true;
5322 tactilefadef_file = aircraft_directory + linetoken3;
5323 token4 >> tactilefadef_index;
5324 if (tactilefadef_index < 0 || tactilefadef_index >= 30)
5325 uiuc_warnings_errors(1, *command_line);
5326 if (tactilefadef_index > tactilefadef_nf)
5327 tactilefadef_nf = tactilefadef_index;
5328 token5 >> flap_value;
5329 tactilefadef_fArray[tactilefadef_index] = flap_value;
5330 token6 >> token_value_convert1;
5331 token7 >> token_value_convert2;
5332 token8 >> token_value_convert3;
5333 token9 >> tactilefadef_nice;
5334 convert_z = uiuc_convert(token_value_convert1);
5335 convert_x = uiuc_convert(token_value_convert2);
5336 convert_y = uiuc_convert(token_value_convert3);
5337 /* call 2D File Reader with file name (tactilefadef_file) and
5338 conversion factors; function returns array of
5339 elevator deflections (deArray) and corresponding
5340 alpha (aArray) and delta CZ (CZArray) values and
5341 max number of terms in alpha arrays (nAlphaArray)
5342 and delfection array (nde) */
5343 uiuc_2DdataFileReader(tactilefadef_file,
5349 d_2_to_3(datafile_xArray, tactilefadef_aArray, tactilefadef_index);
5350 d_1_to_2(datafile_yArray, tactilefadef_deArray, tactilefadef_index);
5351 d_2_to_3(datafile_zArray, tactilefadef_tactileArray, tactilefadef_index);
5352 i_1_to_2(datafile_nxArray, tactilefadef_nAlphaArray, tactilefadef_index);
5353 tactilefadef_nde[tactilefadef_index] = datafile_ny;
5354 if (tactilefadef_first==true)
5356 if (tactilefadef_nice == 1)
5358 tactilefadef_na_nice = datafile_nxArray[1];
5359 tactilefadef_nde_nice = datafile_ny;
5360 d_1_to_1(datafile_yArray, tactilefadef_deArray_nice);
5361 for (i=1; i<=tactilefadef_na_nice; i++)
5362 tactilefadef_aArray_nice[i] = datafile_xArray[1][i];
5364 tactilefadef_first=false;
5368 case tactile_pitch_flag:
5373 case demo_tactile_flag:
5375 demo_tactile = true;
5376 demo_tactile_file = aircraft_directory + linetoken3;
5377 token4 >> token_value_convert1;
5378 token5 >> token_value_convert2;
5379 convert_y = uiuc_convert(token_value_convert1);
5380 convert_x = uiuc_convert(token_value_convert2);
5381 uiuc_1DdataFileReader(demo_tactile_file,
5382 demo_tactile_timeArray,
5383 demo_tactile_daArray,
5384 demo_tactile_ntime);
5385 token6 >> token_value;
5386 demo_tactile_startTime = token_value;
5389 case demo_ice_tail_flag:
5391 demo_ice_tail = true;
5392 demo_ice_tail_file = aircraft_directory + linetoken3;
5393 token4 >> token_value_convert1;
5394 token5 >> token_value_convert2;
5395 convert_y = uiuc_convert(token_value_convert1);
5396 convert_x = uiuc_convert(token_value_convert2);
5397 uiuc_1DdataFileReader(demo_ice_tail_file,
5398 demo_ice_tail_timeArray,
5399 demo_ice_tail_daArray,
5400 demo_ice_tail_ntime);
5401 token6 >> token_value;
5402 demo_ice_tail_startTime = token_value;
5405 case demo_ice_left_flag:
5407 demo_ice_left = true;
5408 demo_ice_left_file = aircraft_directory + linetoken3;
5409 token4 >> token_value_convert1;
5410 token5 >> token_value_convert2;
5411 convert_y = uiuc_convert(token_value_convert1);
5412 convert_x = uiuc_convert(token_value_convert2);
5413 uiuc_1DdataFileReader(demo_ice_left_file,
5414 demo_ice_left_timeArray,
5415 demo_ice_left_daArray,
5416 demo_ice_left_ntime);
5417 token6 >> token_value;
5418 demo_ice_left_startTime = token_value;
5421 case demo_ice_right_flag:
5423 demo_ice_right = true;
5424 demo_ice_right_file = aircraft_directory + linetoken3;
5425 token4 >> token_value_convert1;
5426 token5 >> token_value_convert2;
5427 convert_y = uiuc_convert(token_value_convert1);
5428 convert_x = uiuc_convert(token_value_convert2);
5429 uiuc_1DdataFileReader(demo_ice_right_file,
5430 demo_ice_right_timeArray,
5431 demo_ice_right_daArray,
5432 demo_ice_right_ntime);
5433 token6 >> token_value;
5434 demo_ice_right_startTime = token_value;
5440 uiuc_warnings_errors(2, *command_line);
5447 void parse_fog( const string& linetoken2, const string& linetoken3,
5448 const string& linetoken4, LIST command_line ) {
5450 int token_value_convert1;
5451 istrstream token3(linetoken3.c_str());
5452 istrstream token4(linetoken4.c_str());
5454 switch(fog_map[linetoken2])
5456 case fog_segments_flag:
5458 if (check_float(linetoken3))
5459 token3 >> token_value_convert1;
5461 uiuc_warnings_errors(1, *command_line);
5463 if (token_value_convert1 < 1 || token_value_convert1 > 100)
5464 uiuc_warnings_errors(1, *command_line);
5467 fog_point_index = 0;
5470 fog_segments = token_value_convert1;
5471 fog_time = new double[fog_segments+1];
5473 fog_value = new int[fog_segments+1];
5478 case fog_point_flag:
5480 if (check_float(linetoken3))
5481 token3 >> token_value;
5483 uiuc_warnings_errors(1, *command_line);
5485 if (token_value < 0.1)
5486 uiuc_warnings_errors(1, *command_line);
5488 if (check_float(linetoken4))
5489 token4 >> token_value_convert1;
5491 uiuc_warnings_errors(1, *command_line);
5493 if (token_value_convert1 < -1000 || token_value_convert1 > 1000)
5494 uiuc_warnings_errors(1, *command_line);
5496 if (fog_point_index == fog_segments || fog_point_index == -1)
5497 uiuc_warnings_errors(1, *command_line);
5500 fog_time[fog_point_index] = token_value;
5501 fog_value[fog_point_index] = token_value_convert1;
5508 uiuc_warnings_errors(2, *command_line);
5515 void parse_record( const string& linetoken2, LIST command_line ) {
5517 switch(record_map[linetoken2])
5519 /************************* Time ************************/
5520 case Simtime_record:
5522 recordParts -> storeCommands (*command_line);
5527 recordParts -> storeCommands (*command_line);
5531 /************************* Mass ************************/
5534 recordParts -> storeCommands (*command_line);
5539 recordParts -> storeCommands (*command_line);
5544 recordParts -> storeCommands (*command_line);
5549 recordParts -> storeCommands (*command_line);
5554 recordParts -> storeCommands (*command_line);
5559 recordParts -> storeCommands (*command_line);
5563 /*********************** Geometry **********************/
5564 case Dx_pilot_record:
5566 recordParts -> storeCommands (*command_line);
5569 case Dy_pilot_record:
5571 recordParts -> storeCommands (*command_line);
5574 case Dz_pilot_record:
5576 recordParts -> storeCommands (*command_line);
5581 recordParts -> storeCommands (*command_line);
5586 recordParts -> storeCommands (*command_line);
5591 recordParts -> storeCommands (*command_line);
5595 /********************** Positions **********************/
5596 case Lat_geocentric_record:
5598 recordParts -> storeCommands (*command_line);
5601 case Lon_geocentric_record:
5603 recordParts -> storeCommands (*command_line);
5606 case Radius_to_vehicle_record:
5608 recordParts -> storeCommands (*command_line);
5611 case Latitude_record:
5613 recordParts -> storeCommands (*command_line);
5616 case Longitude_record:
5618 recordParts -> storeCommands (*command_line);
5621 case Altitude_record:
5623 recordParts -> storeCommands (*command_line);
5628 recordParts -> storeCommands (*command_line);
5633 recordParts -> storeCommands (*command_line);
5638 recordParts -> storeCommands (*command_line);
5642 /******************** Accelerations ********************/
5643 case V_dot_north_record:
5645 recordParts -> storeCommands (*command_line);
5648 case V_dot_east_record:
5650 recordParts -> storeCommands (*command_line);
5653 case V_dot_down_record:
5655 recordParts -> storeCommands (*command_line);
5658 case U_dot_body_record:
5660 recordParts -> storeCommands (*command_line);
5663 case V_dot_body_record:
5665 recordParts -> storeCommands (*command_line);
5668 case W_dot_body_record:
5670 recordParts -> storeCommands (*command_line);
5673 case A_X_pilot_record:
5675 recordParts -> storeCommands (*command_line);
5678 case A_Y_pilot_record:
5680 recordParts -> storeCommands (*command_line);
5683 case A_Z_pilot_record:
5685 recordParts -> storeCommands (*command_line);
5690 recordParts -> storeCommands (*command_line);
5695 recordParts -> storeCommands (*command_line);
5700 recordParts -> storeCommands (*command_line);
5703 case N_X_pilot_record:
5705 recordParts -> storeCommands (*command_line);
5708 case N_Y_pilot_record:
5710 recordParts -> storeCommands (*command_line);
5713 case N_Z_pilot_record:
5715 recordParts -> storeCommands (*command_line);
5720 recordParts -> storeCommands (*command_line);
5725 recordParts -> storeCommands (*command_line);
5730 recordParts -> storeCommands (*command_line);
5733 case P_dot_body_record:
5735 recordParts -> storeCommands (*command_line);
5738 case Q_dot_body_record:
5740 recordParts -> storeCommands (*command_line);
5743 case R_dot_body_record:
5745 recordParts -> storeCommands (*command_line);
5749 /********************** Velocities *********************/
5750 case V_north_record:
5752 recordParts -> storeCommands (*command_line);
5757 recordParts -> storeCommands (*command_line);
5762 recordParts -> storeCommands (*command_line);
5765 case V_north_rel_ground_record:
5767 recordParts -> storeCommands (*command_line);
5770 case V_east_rel_ground_record:
5772 recordParts -> storeCommands (*command_line);
5775 case V_down_rel_ground_record:
5777 recordParts -> storeCommands (*command_line);
5780 case V_north_airmass_record:
5782 recordParts -> storeCommands (*command_line);
5785 case V_east_airmass_record:
5787 recordParts -> storeCommands (*command_line);
5790 case V_down_airmass_record:
5792 recordParts -> storeCommands (*command_line);
5795 case V_north_rel_airmass_record:
5797 recordParts -> storeCommands (*command_line);
5800 case V_east_rel_airmass_record:
5802 recordParts -> storeCommands (*command_line);
5805 case V_down_rel_airmass_record:
5807 recordParts -> storeCommands (*command_line);
5812 recordParts -> storeCommands (*command_line);
5817 recordParts -> storeCommands (*command_line);
5822 recordParts -> storeCommands (*command_line);
5827 recordParts -> storeCommands (*command_line);
5832 recordParts -> storeCommands (*command_line);
5837 recordParts -> storeCommands (*command_line);
5840 case V_rel_wind_record:
5842 recordParts -> storeCommands (*command_line);
5845 case V_true_kts_record:
5847 recordParts -> storeCommands (*command_line);
5850 case V_rel_ground_record:
5852 recordParts -> storeCommands (*command_line);
5855 case V_inertial_record:
5857 recordParts -> storeCommands (*command_line);
5860 case V_ground_speed_record:
5862 recordParts -> storeCommands (*command_line);
5865 case V_equiv_record:
5867 recordParts -> storeCommands (*command_line);
5870 case V_equiv_kts_record:
5872 recordParts -> storeCommands (*command_line);
5875 case V_calibrated_record:
5877 recordParts -> storeCommands (*command_line);
5880 case V_calibrated_kts_record:
5882 recordParts -> storeCommands (*command_line);
5885 case P_local_record:
5887 recordParts -> storeCommands (*command_line);
5890 case Q_local_record:
5892 recordParts -> storeCommands (*command_line);
5895 case R_local_record:
5897 recordParts -> storeCommands (*command_line);
5902 recordParts -> storeCommands (*command_line);
5907 recordParts -> storeCommands (*command_line);
5912 recordParts -> storeCommands (*command_line);
5915 case P_total_record:
5917 recordParts -> storeCommands (*command_line);
5920 case Q_total_record:
5922 recordParts -> storeCommands (*command_line);
5925 case R_total_record:
5927 recordParts -> storeCommands (*command_line);
5930 case Phi_dot_record:
5932 recordParts -> storeCommands (*command_line);
5935 case Theta_dot_record:
5937 recordParts -> storeCommands (*command_line);
5940 case Psi_dot_record:
5942 recordParts -> storeCommands (*command_line);
5945 case Latitude_dot_record:
5947 recordParts -> storeCommands (*command_line);
5950 case Longitude_dot_record:
5952 recordParts -> storeCommands (*command_line);
5955 case Radius_dot_record:
5957 recordParts -> storeCommands (*command_line);
5961 /************************ Angles ***********************/
5964 recordParts -> storeCommands (*command_line);
5967 case Alpha_deg_record:
5969 recordParts -> storeCommands (*command_line);
5972 case Alpha_dot_record:
5974 recordParts -> storeCommands (*command_line);
5977 case Alpha_dot_deg_record:
5979 recordParts -> storeCommands (*command_line);
5984 recordParts -> storeCommands (*command_line);
5987 case Beta_deg_record:
5989 recordParts -> storeCommands (*command_line);
5992 case Beta_dot_record:
5994 recordParts -> storeCommands (*command_line);
5997 case Beta_dot_deg_record:
5999 recordParts -> storeCommands (*command_line);
6002 case Gamma_vert_record:
6004 recordParts -> storeCommands (*command_line);
6007 case Gamma_vert_deg_record:
6009 recordParts -> storeCommands (*command_line);
6012 case Gamma_horiz_record:
6014 recordParts -> storeCommands (*command_line);
6017 case Gamma_horiz_deg_record:
6019 recordParts -> storeCommands (*command_line);
6023 /**************** Atmospheric Properties ***************/
6024 case Density_record:
6026 recordParts -> storeCommands (*command_line);
6029 case V_sound_record:
6031 recordParts -> storeCommands (*command_line);
6034 case Mach_number_record:
6036 recordParts -> storeCommands (*command_line);
6039 case Static_pressure_record:
6041 recordParts -> storeCommands (*command_line);
6044 case Total_pressure_record:
6046 recordParts -> storeCommands (*command_line);
6049 case Impact_pressure_record:
6051 recordParts -> storeCommands (*command_line);
6054 case Dynamic_pressure_record:
6056 recordParts -> storeCommands (*command_line);
6059 case Static_temperature_record:
6061 recordParts -> storeCommands (*command_line);
6064 case Total_temperature_record:
6066 recordParts -> storeCommands (*command_line);
6070 /******************** Earth Properties *****************/
6071 case Gravity_record:
6073 recordParts -> storeCommands (*command_line);
6076 case Sea_level_radius_record:
6078 recordParts -> storeCommands (*command_line);
6081 case Earth_position_angle_record:
6083 recordParts -> storeCommands (*command_line);
6086 case Runway_altitude_record:
6088 recordParts -> storeCommands (*command_line);
6091 case Runway_latitude_record:
6093 recordParts -> storeCommands (*command_line);
6096 case Runway_longitude_record:
6098 recordParts -> storeCommands (*command_line);
6101 case Runway_heading_record:
6103 recordParts -> storeCommands (*command_line);
6106 case Radius_to_rwy_record:
6108 recordParts -> storeCommands (*command_line);
6111 case D_pilot_north_of_rwy_record:
6113 recordParts -> storeCommands (*command_line);
6116 case D_pilot_east_of_rwy_record:
6118 recordParts -> storeCommands (*command_line);
6121 case D_pilot_above_rwy_record:
6123 recordParts -> storeCommands (*command_line);
6126 case X_pilot_rwy_record:
6128 recordParts -> storeCommands (*command_line);
6131 case Y_pilot_rwy_record:
6133 recordParts -> storeCommands (*command_line);
6136 case H_pilot_rwy_record:
6138 recordParts -> storeCommands (*command_line);
6141 case D_cg_north_of_rwy_record:
6143 recordParts -> storeCommands (*command_line);
6146 case D_cg_east_of_rwy_record:
6148 recordParts -> storeCommands (*command_line);
6151 case D_cg_above_rwy_record:
6153 recordParts -> storeCommands (*command_line);
6156 case X_cg_rwy_record:
6158 recordParts -> storeCommands (*command_line);
6161 case Y_cg_rwy_record:
6163 recordParts -> storeCommands (*command_line);
6166 case H_cg_rwy_record:
6168 recordParts -> storeCommands (*command_line);
6172 /********************* Engine Inputs *******************/
6173 case Throttle_pct_record:
6175 recordParts -> storeCommands (*command_line);
6178 case Throttle_3_record:
6180 recordParts -> storeCommands (*command_line);
6184 /******************** Control Inputs *******************/
6185 case Long_control_record:
6187 recordParts -> storeCommands (*command_line);
6190 case Long_trim_record:
6192 recordParts -> storeCommands (*command_line);
6195 case Long_trim_deg_record:
6197 recordParts -> storeCommands (*command_line);
6200 case elevator_record:
6202 recordParts -> storeCommands (*command_line);
6205 case elevator_deg_record:
6207 recordParts -> storeCommands (*command_line);
6210 case Lat_control_record:
6212 recordParts -> storeCommands (*command_line);
6215 case aileron_record:
6217 recordParts -> storeCommands (*command_line);
6220 case aileron_deg_record:
6222 recordParts -> storeCommands (*command_line);
6225 case Rudder_pedal_record:
6227 recordParts -> storeCommands (*command_line);
6232 recordParts -> storeCommands (*command_line);
6235 case rudder_deg_record:
6237 recordParts -> storeCommands (*command_line);
6240 case Flap_handle_record:
6242 recordParts -> storeCommands (*command_line);
6247 recordParts -> storeCommands (*command_line);
6250 case flap_deg_record:
6252 recordParts -> storeCommands (*command_line);
6255 case flap_goal_record:
6257 recordParts -> storeCommands (*command_line);
6260 case flap_pos_record:
6262 recordParts -> storeCommands (*command_line);
6266 /****************** Aero Coefficients ******************/
6269 recordParts -> storeCommands (*command_line);
6274 recordParts -> storeCommands (*command_line);
6277 case CDfadeI_record:
6279 recordParts -> storeCommands (*command_line);
6284 recordParts -> storeCommands (*command_line);
6287 case CDfadfI_record:
6289 recordParts -> storeCommands (*command_line);
6294 recordParts -> storeCommands (*command_line);
6297 case CXfabetafI_record:
6299 recordParts -> storeCommands (*command_line);
6302 case CXfadefI_record:
6304 recordParts -> storeCommands (*command_line);
6307 case CXfaqfI_record:
6309 recordParts -> storeCommands (*command_line);
6312 case CDo_save_record:
6314 recordParts -> storeCommands (*command_line);
6317 case CDK_save_record:
6319 recordParts -> storeCommands (*command_line);
6322 case CD_a_save_record:
6324 recordParts -> storeCommands (*command_line);
6327 case CD_adot_save_record:
6329 recordParts -> storeCommands (*command_line);
6332 case CD_q_save_record:
6334 recordParts -> storeCommands (*command_line);
6337 case CD_ih_save_record:
6339 recordParts -> storeCommands (*command_line);
6342 case CD_de_save_record:
6344 recordParts -> storeCommands (*command_line);
6347 case CXo_save_record:
6349 recordParts -> storeCommands (*command_line);
6352 case CXK_save_record:
6354 recordParts -> storeCommands (*command_line);
6357 case CX_a_save_record:
6359 recordParts -> storeCommands (*command_line);
6362 case CX_a2_save_record:
6364 recordParts -> storeCommands (*command_line);
6367 case CX_a3_save_record:
6369 recordParts -> storeCommands (*command_line);
6372 case CX_adot_save_record:
6374 recordParts -> storeCommands (*command_line);
6377 case CX_q_save_record:
6379 recordParts -> storeCommands (*command_line);
6382 case CX_de_save_record:
6384 recordParts -> storeCommands (*command_line);
6387 case CX_dr_save_record:
6389 recordParts -> storeCommands (*command_line);
6392 case CX_df_save_record:
6394 recordParts -> storeCommands (*command_line);
6397 case CX_adf_save_record:
6399 recordParts -> storeCommands (*command_line);
6404 recordParts -> storeCommands (*command_line);
6409 recordParts -> storeCommands (*command_line);
6412 case CLfadeI_record:
6414 recordParts -> storeCommands (*command_line);
6419 recordParts -> storeCommands (*command_line);
6422 case CLfadfI_record:
6424 recordParts -> storeCommands (*command_line);
6429 recordParts -> storeCommands (*command_line);
6434 recordParts -> storeCommands (*command_line);
6437 case CZfabetafI_record:
6439 recordParts -> storeCommands (*command_line);
6442 case CZfadefI_record:
6444 recordParts -> storeCommands (*command_line);
6447 case CZfaqfI_record:
6449 recordParts -> storeCommands (*command_line);
6452 case CLo_save_record:
6454 recordParts -> storeCommands (*command_line);
6457 case CL_a_save_record:
6459 recordParts -> storeCommands (*command_line);
6462 case CL_adot_save_record:
6464 recordParts -> storeCommands (*command_line);
6467 case CL_q_save_record:
6469 recordParts -> storeCommands (*command_line);
6472 case CL_ih_save_record:
6474 recordParts -> storeCommands (*command_line);
6477 case CL_de_save_record:
6479 recordParts -> storeCommands (*command_line);
6482 case CZo_save_record:
6484 recordParts -> storeCommands (*command_line);
6487 case CZ_a_save_record:
6489 recordParts -> storeCommands (*command_line);
6492 case CZ_a2_save_record:
6494 recordParts -> storeCommands (*command_line);
6497 case CZ_a3_save_record:
6499 recordParts -> storeCommands (*command_line);
6502 case CZ_adot_save_record:
6504 recordParts -> storeCommands (*command_line);
6507 case CZ_q_save_record:
6509 recordParts -> storeCommands (*command_line);
6512 case CZ_de_save_record:
6514 recordParts -> storeCommands (*command_line);
6517 case CZ_deb2_save_record:
6519 recordParts -> storeCommands (*command_line);
6522 case CZ_df_save_record:
6524 recordParts -> storeCommands (*command_line);
6527 case CZ_adf_save_record:
6529 recordParts -> storeCommands (*command_line);
6534 recordParts -> storeCommands (*command_line);
6539 recordParts -> storeCommands (*command_line);
6542 case CmfadeI_record:
6544 recordParts -> storeCommands (*command_line);
6549 recordParts -> storeCommands (*command_line);
6552 case CmfadfI_record:
6554 recordParts -> storeCommands (*command_line);
6557 case CmfabetafI_record:
6559 recordParts -> storeCommands (*command_line);
6562 case CmfadefI_record:
6564 recordParts -> storeCommands (*command_line);
6567 case CmfaqfI_record:
6569 recordParts -> storeCommands (*command_line);
6572 case Cmo_save_record:
6574 recordParts -> storeCommands (*command_line);
6577 case Cm_a_save_record:
6579 recordParts -> storeCommands (*command_line);
6582 case Cm_a2_save_record:
6584 recordParts -> storeCommands (*command_line);
6587 case Cm_adot_save_record:
6589 recordParts -> storeCommands (*command_line);
6592 case Cm_q_save_record:
6594 recordParts -> storeCommands (*command_line);
6597 case Cm_ih_save_record:
6599 recordParts -> storeCommands (*command_line);
6602 case Cm_de_save_record:
6604 recordParts -> storeCommands (*command_line);
6607 case Cm_b2_save_record:
6609 recordParts -> storeCommands (*command_line);
6612 case Cm_r_save_record:
6614 recordParts -> storeCommands (*command_line);
6617 case Cm_df_save_record:
6619 recordParts -> storeCommands (*command_line);
6624 recordParts -> storeCommands (*command_line);
6627 case CYfadaI_record:
6629 recordParts -> storeCommands (*command_line);
6632 case CYfbetadrI_record:
6634 recordParts -> storeCommands (*command_line);
6637 case CYfabetafI_record:
6639 recordParts -> storeCommands (*command_line);
6642 case CYfadafI_record:
6644 recordParts -> storeCommands (*command_line);
6647 case CYfadrfI_record:
6649 recordParts -> storeCommands (*command_line);
6652 case CYfapfI_record:
6654 recordParts -> storeCommands (*command_line);
6657 case CYfarfI_record:
6659 recordParts -> storeCommands (*command_line);
6662 case CYo_save_record:
6664 recordParts -> storeCommands (*command_line);
6667 case CY_beta_save_record:
6669 recordParts -> storeCommands (*command_line);
6672 case CY_p_save_record:
6674 recordParts -> storeCommands (*command_line);
6677 case CY_r_save_record:
6679 recordParts -> storeCommands (*command_line);
6682 case CY_da_save_record:
6684 recordParts -> storeCommands (*command_line);
6687 case CY_dr_save_record:
6689 recordParts -> storeCommands (*command_line);
6692 case CY_dra_save_record:
6694 recordParts -> storeCommands (*command_line);
6697 case CY_bdot_save_record:
6699 recordParts -> storeCommands (*command_line);
6704 recordParts -> storeCommands (*command_line);
6707 case ClfadaI_record:
6709 recordParts -> storeCommands (*command_line);
6712 case ClfbetadrI_record:
6714 recordParts -> storeCommands (*command_line);
6717 case ClfabetafI_record:
6719 recordParts -> storeCommands (*command_line);
6722 case ClfadafI_record:
6724 recordParts -> storeCommands (*command_line);
6727 case ClfadrfI_record:
6729 recordParts -> storeCommands (*command_line);
6732 case ClfapfI_record:
6734 recordParts -> storeCommands (*command_line);
6737 case ClfarfI_record:
6739 recordParts -> storeCommands (*command_line);
6742 case Clo_save_record:
6744 recordParts -> storeCommands (*command_line);
6747 case Cl_beta_save_record:
6749 recordParts -> storeCommands (*command_line);
6752 case Cl_p_save_record:
6754 recordParts -> storeCommands (*command_line);
6757 case Cl_r_save_record:
6759 recordParts -> storeCommands (*command_line);
6762 case Cl_da_save_record:
6764 recordParts -> storeCommands (*command_line);
6767 case Cl_dr_save_record:
6769 recordParts -> storeCommands (*command_line);
6772 case Cl_daa_save_record:
6774 recordParts -> storeCommands (*command_line);
6779 recordParts -> storeCommands (*command_line);
6782 case CnfadaI_record:
6784 recordParts -> storeCommands (*command_line);
6787 case CnfbetadrI_record:
6789 recordParts -> storeCommands (*command_line);
6792 case CnfabetafI_record:
6794 recordParts -> storeCommands (*command_line);
6797 case CnfadafI_record:
6799 recordParts -> storeCommands (*command_line);
6802 case CnfadrfI_record:
6804 recordParts -> storeCommands (*command_line);
6807 case CnfapfI_record:
6809 recordParts -> storeCommands (*command_line);
6812 case CnfarfI_record:
6814 recordParts -> storeCommands (*command_line);
6817 case Cno_save_record:
6819 recordParts -> storeCommands (*command_line);
6822 case Cn_beta_save_record:
6824 recordParts -> storeCommands (*command_line);
6827 case Cn_p_save_record:
6829 recordParts -> storeCommands (*command_line);
6832 case Cn_r_save_record:
6834 recordParts -> storeCommands (*command_line);
6837 case Cn_da_save_record:
6839 recordParts -> storeCommands (*command_line);
6842 case Cn_dr_save_record:
6844 recordParts -> storeCommands (*command_line);
6847 case Cn_q_save_record:
6849 recordParts -> storeCommands (*command_line);
6852 case Cn_b3_save_record:
6854 recordParts -> storeCommands (*command_line);
6858 /******************** Ice Detection ********************/
6859 case CL_clean_record:
6861 recordParts -> storeCommands (*command_line);
6864 case CL_iced_record:
6866 recordParts -> storeCommands (*command_line);
6869 case CD_clean_record:
6871 recordParts -> storeCommands (*command_line);
6874 case CD_iced_record:
6876 recordParts -> storeCommands (*command_line);
6879 case Cm_clean_record:
6881 recordParts -> storeCommands (*command_line);
6884 case Cm_iced_record:
6886 recordParts -> storeCommands (*command_line);
6889 case Ch_clean_record:
6891 recordParts -> storeCommands (*command_line);
6894 case Ch_iced_record:
6896 recordParts -> storeCommands (*command_line);
6899 case Cl_clean_record:
6901 recordParts -> storeCommands (*command_line);
6904 case Cl_iced_record:
6906 recordParts -> storeCommands (*command_line);
6909 case CLclean_wing_record:
6911 recordParts -> storeCommands (*command_line);
6914 case CLiced_wing_record:
6916 recordParts -> storeCommands (*command_line);
6919 case CLclean_tail_record:
6921 recordParts -> storeCommands (*command_line);
6924 case CLiced_tail_record:
6926 recordParts -> storeCommands (*command_line);
6929 case Lift_clean_wing_record:
6931 recordParts -> storeCommands (*command_line);
6934 case Lift_iced_wing_record:
6936 recordParts -> storeCommands (*command_line);
6939 case Lift_clean_tail_record:
6941 recordParts -> storeCommands (*command_line);
6944 case Lift_iced_tail_record:
6946 recordParts -> storeCommands (*command_line);
6949 case Gamma_clean_wing_record:
6951 recordParts -> storeCommands (*command_line);
6954 case Gamma_iced_wing_record:
6956 recordParts -> storeCommands (*command_line);
6959 case Gamma_clean_tail_record:
6961 recordParts -> storeCommands (*command_line);
6964 case Gamma_iced_tail_record:
6966 recordParts -> storeCommands (*command_line);
6969 case w_clean_wing_record:
6971 recordParts -> storeCommands (*command_line);
6974 case w_iced_wing_record:
6976 recordParts -> storeCommands (*command_line);
6979 case w_clean_tail_record:
6981 recordParts -> storeCommands (*command_line);
6984 case w_iced_tail_record:
6986 recordParts -> storeCommands (*command_line);
6989 case V_total_clean_wing_record:
6991 recordParts -> storeCommands (*command_line);
6994 case V_total_iced_wing_record:
6996 recordParts -> storeCommands (*command_line);
6999 case V_total_clean_tail_record:
7001 recordParts -> storeCommands (*command_line);
7004 case V_total_iced_tail_record:
7006 recordParts -> storeCommands (*command_line);
7009 case beta_flow_clean_wing_record:
7011 recordParts -> storeCommands (*command_line);
7014 case beta_flow_clean_wing_deg_record:
7016 recordParts -> storeCommands (*command_line);
7019 case beta_flow_iced_wing_record:
7021 recordParts -> storeCommands (*command_line);
7024 case beta_flow_iced_wing_deg_record:
7026 recordParts -> storeCommands (*command_line);
7029 case beta_flow_clean_tail_record:
7031 recordParts -> storeCommands (*command_line);
7034 case beta_flow_clean_tail_deg_record:
7036 recordParts -> storeCommands (*command_line);
7039 case beta_flow_iced_tail_record:
7041 recordParts -> storeCommands (*command_line);
7044 case beta_flow_iced_tail_deg_record:
7046 recordParts -> storeCommands (*command_line);
7049 case Dbeta_flow_wing_record:
7051 recordParts -> storeCommands (*command_line);
7054 case Dbeta_flow_wing_deg_record:
7056 recordParts -> storeCommands (*command_line);
7059 case Dbeta_flow_tail_record:
7061 recordParts -> storeCommands (*command_line);
7064 case Dbeta_flow_tail_deg_record:
7066 recordParts -> storeCommands (*command_line);
7069 case pct_beta_flow_wing_record:
7071 recordParts -> storeCommands (*command_line);
7074 case pct_beta_flow_tail_record:
7076 recordParts -> storeCommands (*command_line);
7079 case eta_ice_record:
7081 recordParts -> storeCommands (*command_line);
7084 case eta_wing_left_record:
7086 recordParts -> storeCommands (*command_line);
7089 case eta_wing_right_record:
7091 recordParts -> storeCommands (*command_line);
7094 case eta_tail_record:
7096 recordParts -> storeCommands (*command_line);
7099 case delta_CL_record:
7101 recordParts -> storeCommands (*command_line);
7104 case delta_CD_record:
7106 recordParts -> storeCommands (*command_line);
7109 case delta_Cm_record:
7111 recordParts -> storeCommands (*command_line);
7114 case delta_Cl_record:
7116 recordParts -> storeCommands (*command_line);
7119 case boot_cycle_tail_record:
7121 recordParts -> storeCommands (*command_line);
7124 case boot_cycle_wing_left_record:
7126 recordParts -> storeCommands (*command_line);
7129 case boot_cycle_wing_right_record:
7131 recordParts -> storeCommands (*command_line);
7134 case autoIPS_tail_record:
7136 recordParts -> storeCommands (*command_line);
7139 case autoIPS_wing_left_record:
7141 recordParts -> storeCommands (*command_line);
7144 case autoIPS_wing_right_record:
7146 recordParts -> storeCommands (*command_line);
7149 case eps_pitch_input_record:
7151 recordParts -> storeCommands (*command_line);
7154 case eps_alpha_max_record:
7156 recordParts -> storeCommands (*command_line);
7159 case eps_pitch_max_record:
7161 recordParts -> storeCommands (*command_line);
7164 case eps_pitch_min_record:
7166 recordParts -> storeCommands (*command_line);
7169 case eps_roll_max_record:
7171 recordParts -> storeCommands (*command_line);
7174 case eps_thrust_min_record:
7176 recordParts -> storeCommands (*command_line);
7179 case eps_flap_max_record:
7181 recordParts -> storeCommands (*command_line);
7184 case eps_airspeed_max_record:
7186 recordParts -> storeCommands (*command_line);
7189 case eps_airspeed_min_record:
7191 recordParts -> storeCommands (*command_line);
7195 /*********************Auto Pilot************************/
7196 case ap_Theta_ref_deg_record:
7198 recordParts -> storeCommands (*command_line);
7201 case ap_pah_on_record:
7203 recordParts -> storeCommands (*command_line);
7207 /************************ Forces ***********************/
7208 case F_X_wind_record:
7210 recordParts -> storeCommands (*command_line);
7213 case F_Y_wind_record:
7215 recordParts -> storeCommands (*command_line);
7218 case F_Z_wind_record:
7220 recordParts -> storeCommands (*command_line);
7223 case F_X_aero_record:
7225 recordParts -> storeCommands (*command_line);
7228 case F_Y_aero_record:
7230 recordParts -> storeCommands (*command_line);
7233 case F_Z_aero_record:
7235 recordParts -> storeCommands (*command_line);
7238 case F_X_engine_record:
7240 recordParts -> storeCommands (*command_line);
7243 case F_Y_engine_record:
7245 recordParts -> storeCommands (*command_line);
7248 case F_Z_engine_record:
7250 recordParts -> storeCommands (*command_line);
7253 case F_X_gear_record:
7255 recordParts -> storeCommands (*command_line);
7258 case F_Y_gear_record:
7260 recordParts -> storeCommands (*command_line);
7263 case F_Z_gear_record:
7265 recordParts -> storeCommands (*command_line);
7270 recordParts -> storeCommands (*command_line);
7275 recordParts -> storeCommands (*command_line);
7280 recordParts -> storeCommands (*command_line);
7283 case F_north_record:
7285 recordParts -> storeCommands (*command_line);
7290 recordParts -> storeCommands (*command_line);
7295 recordParts -> storeCommands (*command_line);
7299 /*********************** Moments ***********************/
7300 case M_l_aero_record:
7302 recordParts -> storeCommands (*command_line);
7305 case M_m_aero_record:
7307 recordParts -> storeCommands (*command_line);
7310 case M_n_aero_record:
7312 recordParts -> storeCommands (*command_line);
7315 case M_l_engine_record:
7317 recordParts -> storeCommands (*command_line);
7320 case M_m_engine_record:
7322 recordParts -> storeCommands (*command_line);
7325 case M_n_engine_record:
7327 recordParts -> storeCommands (*command_line);
7330 case M_l_gear_record:
7332 recordParts -> storeCommands (*command_line);
7335 case M_m_gear_record:
7337 recordParts -> storeCommands (*command_line);
7340 case M_n_gear_record:
7342 recordParts -> storeCommands (*command_line);
7347 recordParts -> storeCommands (*command_line);
7352 recordParts -> storeCommands (*command_line);
7357 recordParts -> storeCommands (*command_line);
7360 /****************** Flapper Data ***********************/
7361 case flapper_freq_record:
7363 recordParts -> storeCommands (*command_line);
7366 case flapper_phi_record:
7368 recordParts -> storeCommands (*command_line);
7371 case flapper_phi_deg_record:
7373 recordParts -> storeCommands (*command_line);
7376 case flapper_Lift_record:
7378 recordParts -> storeCommands (*command_line);
7381 case flapper_Thrust_record:
7383 recordParts -> storeCommands (*command_line);
7386 case flapper_Inertia_record:
7388 recordParts -> storeCommands (*command_line);
7391 case flapper_Moment_record:
7393 recordParts -> storeCommands (*command_line);
7396 /****************** Flapper Data ***********************/
7399 recordParts -> storeCommands (*command_line);
7404 recordParts -> storeCommands (*command_line);
7409 recordParts -> storeCommands (*command_line);
7412 case tactilefadefI_record:
7414 recordParts -> storeCommands (*command_line);
7420 uiuc_warnings_errors(2, *command_line);
7427 void parse_misc( const string& linetoken2, const string& linetoken3,
7428 const string& aircraft_directory, LIST command_line ) {
7430 istrstream token3(linetoken3.c_str());
7432 switch(misc_map[linetoken2])
7434 case simpleHingeMomentCoef_flag:
7436 if (check_float(linetoken3))
7437 token3 >> token_value;
7439 uiuc_warnings_errors(1, *command_line);
7441 simpleHingeMomentCoef = token_value;
7444 case dfTimefdf_flag:
7446 dfTimefdf = linetoken3;
7447 /* call 1D File Reader with file name (dfTimefdf);
7448 function returns array of dfs (dfArray) and
7449 corresponding time values (TimeArray) and max
7450 number of terms in arrays (ndf) */
7451 uiuc_1DdataFileReader(dfTimefdf,
7453 dfTimefdf_TimeArray,
7457 //case flapper_flag:
7461 //flap_file = aircraft_directory + "flap.dat";
7462 //flapper_model = true;
7463 //flapper_data = new FlapData(flap_file.c_str());
7466 //case flapper_phi_init_flag:
7468 //if (check_float(linetoken3))
7469 // token3 >> token_value;
7471 // uiuc_warnings_errors(1, *command_line);
7473 //flapper_phi_init = token_value*DEG_TO_RAD;
7479 uiuc_warnings_errors(2, *command_line);
7486 void uiuc_menu( string aircraft_name )
7488 string aircraft_directory;
7491 int token_value_recordRate;
7492 int token_value_convert1, token_value_convert2, token_value_convert3;
7504 double datafile_xArray[100][100], datafile_yArray[100];
7505 double datafile_zArray[100][100];
7506 int datafile_nxArray[100], datafile_ny;
7508 bool CXfabetaf_first = true;
7509 bool CXfadef_first = true;
7510 bool CXfaqf_first = true;
7511 bool CZfabetaf_first = true;
7512 bool CZfadef_first = true;
7513 bool CZfaqf_first = true;
7514 bool Cmfabetaf_first = true;
7515 bool Cmfadef_first = true;
7516 bool Cmfaqf_first = true;
7517 bool CYfabetaf_first = true;
7518 bool CYfadaf_first = true;
7519 bool CYfadrf_first = true;
7520 bool CYfapf_first = true;
7521 bool CYfarf_first = true;
7522 bool Clfabetaf_first = true;
7523 bool Clfadaf_first = true;
7524 bool Clfadrf_first = true;
7525 bool Clfapf_first = true;
7526 bool Clfarf_first = true;
7527 bool Cnfabetaf_first = true;
7528 bool Cnfadaf_first = true;
7529 bool Cnfadrf_first = true;
7530 bool Cnfapf_first = true;
7531 bool Cnfarf_first = true;
7533 bool tactilefadef_first = true;
7535 /* the following default setting should eventually be moved to a default or uiuc_init routine */
7537 recordRate = 1; /* record every time step, default */
7538 recordStartTime = 0; /* record from beginning of simulation */
7540 /* set speed at which dynamic pressure terms will be accounted for,
7541 since if velocity is too small, coefficients will go to infinity */
7542 dyn_on_speed = 33; /* 20 kts (33 ft/sec), default */
7543 dyn_on_speed_zero = 0.5 * dyn_on_speed; /* only used if use_dyn_on_speed_curve1 is used */
7544 bootindex = 0; // the index for the bootTime
7548 /* Read the file and get the list of commands */
7549 airplane = new ParseFile(aircraft_name); /* struct that includes all lines of the input file */
7550 command_list = airplane -> getCommands();
7551 /* structs to include all parts included in the input file for specific keyword groups */
7552 initParts = new ParseFile();
7553 geometryParts = new ParseFile();
7554 massParts = new ParseFile();
7555 engineParts = new ParseFile();
7556 aeroDragParts = new ParseFile();
7557 aeroLiftParts = new ParseFile();
7558 aeroPitchParts = new ParseFile();
7559 aeroSideforceParts = new ParseFile();
7560 aeroRollParts = new ParseFile();
7561 aeroYawParts = new ParseFile();
7562 gearParts = new ParseFile();
7563 recordParts = new ParseFile();
7565 if (command_list.begin() == command_list.end())
7567 cerr << "UIUC ERROR: File " << aircraft_name <<" does not exist" << endl;
7571 //construct aircraft-directory
7572 aircraft_directory = aircraft_name;
7573 int index_aircraft_dat = aircraft_directory.find("aircraft.dat");
7574 aircraft_directory.erase(index_aircraft_dat,12);
7576 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
7578 cout << *command_line << endl;
7580 linetoken1 = airplane -> getToken (*command_line, 1);
7581 linetoken2 = airplane -> getToken (*command_line, 2);
7582 linetoken3 = airplane -> getToken (*command_line, 3);
7583 linetoken4 = airplane -> getToken (*command_line, 4);
7584 linetoken5 = airplane -> getToken (*command_line, 5);
7585 linetoken6 = airplane -> getToken (*command_line, 6);
7586 linetoken7 = airplane -> getToken (*command_line, 7);
7587 linetoken8 = airplane -> getToken (*command_line, 8);
7588 linetoken9 = airplane -> getToken (*command_line, 9);
7590 istrstream token3(linetoken3.c_str());
7591 istrstream token4(linetoken4.c_str());
7592 istrstream token5(linetoken5.c_str());
7593 istrstream token6(linetoken6.c_str());
7594 istrstream token7(linetoken7.c_str());
7595 istrstream token8(linetoken8.c_str());
7596 istrstream token9(linetoken9.c_str());
7598 switch (Keyword_map[linetoken1])
7602 parse_init( linetoken2, linetoken3, linetoken4, command_line );
7609 parse_geometry( linetoken2, linetoken3, command_line );
7611 } // end geometry map
7614 case controlSurface_flag:
7616 parse_controlSurface( linetoken2, linetoken3, linetoken4,
7617 linetoken5, linetoken6, aircraft_directory,
7620 } // end controlSurface map
7625 parse_mass( linetoken2, linetoken3, command_line );
7632 parse_engine( linetoken2, linetoken3, linetoken4,
7633 linetoken5, linetoken6, aircraft_directory,
7641 parse_CD( linetoken2, linetoken3, linetoken4,
7642 linetoken5, linetoken6, linetoken7,
7643 linetoken8, linetoken9, aircraft_directory,
7644 CXfabetaf_first, CXfadef_first,
7645 CXfaqf_first, command_line );
7652 parse_CL( linetoken2, linetoken3, linetoken4,
7653 linetoken5, linetoken6, linetoken7,
7654 linetoken8, linetoken9, aircraft_directory,
7655 CZfabetaf_first, CZfadef_first,
7656 CZfaqf_first, command_line );
7663 parse_Cm( linetoken2, linetoken3, linetoken4,
7664 linetoken5, linetoken6, linetoken7,
7665 linetoken8, linetoken9, aircraft_directory,
7666 Cmfabetaf_first, Cmfadef_first,
7667 Cmfaqf_first, command_line );
7674 parse_CY( linetoken2, linetoken3, linetoken4,
7675 linetoken5, linetoken6, linetoken7,
7676 linetoken8, linetoken9, aircraft_directory,
7677 CYfabetaf_first, CYfadaf_first,
7678 CYfadrf_first, CYfapf_first, CYfarf_first,
7686 parse_Cl( linetoken2, linetoken3, linetoken4,
7687 linetoken5, linetoken6, linetoken7,
7688 linetoken8, linetoken9, aircraft_directory,
7689 Clfabetaf_first, Clfadaf_first,
7690 Clfadrf_first, Clfapf_first, Clfarf_first,
7698 parse_Cn( linetoken2, linetoken3, linetoken4,
7699 linetoken5, linetoken6, linetoken7,
7700 linetoken8, linetoken9, aircraft_directory,
7701 Cnfabetaf_first, Cnfadaf_first,
7702 Cnfadrf_first, Cnfapf_first, Cnfarf_first,
7712 if (index < 0 || index >= 16)
7713 uiuc_warnings_errors(1, *command_line);
7714 parse_gear( linetoken2, linetoken3, linetoken4,
7715 index, command_line );
7722 parse_ice( linetoken2, linetoken3, linetoken4,
7723 linetoken5, linetoken6, linetoken7,
7724 linetoken8, linetoken9, aircraft_directory,
7725 tactilefadef_first, command_line );
7732 parse_fog( linetoken2, linetoken3, linetoken4,
7740 static int fout_flag=0;
7744 fout.open("uiuc_record.dat");
7746 parse_record( linetoken2, command_line );
7753 parse_misc( linetoken2, linetoken3, aircraft_directory,
7761 if (linetoken1=="*")
7764 uiuc_warnings_errors(2, *command_line);
7768 } // end keyword map