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/3003 (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
148 #include "uiuc_menu.h"
150 #if !defined (SG_HAVE_NATIVE_SGI_COMPILERS)
160 bool check_float( const string &token)
163 istrstream stream(token.c_str());
164 return (stream >> value);
167 void d_2_to_3( double array2D[100][100], double array3D[][100][100], int index3D)
169 for (register int i=0; i<=99; i++)
171 for (register int j=1; j<=99; j++)
173 array3D[index3D][i][j]=array2D[i][j];
178 void d_1_to_2( double array1D[100], double array2D[][100], int index2D)
180 for (register int i=0; i<=99; i++)
182 array2D[index2D][i]=array1D[i];
186 void d_1_to_1( double array1[100], double array2[100] )
188 for (register int i=0; i<=99; i++)
194 void i_1_to_2( int array1D[100], int array2D[][100], int index2D)
196 for (register int i=0; i<=99; i++)
198 array2D[index2D][i]=array1D[i];
202 void parse_init( const string& linetoken2, const string& linetoken3,
203 LIST command_line ) {
205 istrstream token3(linetoken3.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;
472 if (check_float(linetoken3))
473 token3 >> token_value;
475 uiuc_warnings_errors(1, *command_line);
477 Alpha_init_true = true;
478 Alpha_init = token_value * DEG_TO_RAD;
483 if (check_float(linetoken3))
484 token3 >> token_value;
486 uiuc_warnings_errors(1, *command_line);
488 Beta_init_true = true;
489 Beta_init = token_value * DEG_TO_RAD;
494 if (check_float(linetoken3))
495 token3 >> token_value;
497 uiuc_warnings_errors(1, *command_line);
499 U_body_init_true = true;
500 U_body_init = token_value;
505 if (check_float(linetoken3))
506 token3 >> token_value;
508 uiuc_warnings_errors(1, *command_line);
510 V_body_init_true = true;
511 V_body_init = token_value;
516 if (check_float(linetoken3))
517 token3 >> token_value;
519 uiuc_warnings_errors(1, *command_line);
521 W_body_init_true = true;
522 W_body_init = token_value;
525 case ignore_unknown_flag:
533 uiuc_warnings_errors(2, *command_line);
539 void parse_geometry( const string& linetoken2, const string& linetoken3,
540 LIST command_line ) {
542 istrstream token3(linetoken3.c_str());
544 switch(geometry_map[linetoken2])
548 if (check_float(linetoken3))
549 token3 >> token_value;
551 uiuc_warnings_errors(1, *command_line);
554 geometryParts -> storeCommands (*command_line);
559 if (check_float(linetoken3))
560 token3 >> token_value;
562 uiuc_warnings_errors(1, *command_line);
565 geometryParts -> storeCommands (*command_line);
570 if (check_float(linetoken3))
571 token3 >> token_value;
573 uiuc_warnings_errors(1, *command_line);
576 geometryParts -> storeCommands (*command_line);
581 if (check_float(linetoken3))
582 token3 >> token_value;
584 uiuc_warnings_errors(1, *command_line);
587 geometryParts -> storeCommands (*command_line);
592 if (check_float(linetoken3))
593 token3 >> token_value;
595 uiuc_warnings_errors(1, *command_line);
598 geometryParts -> storeCommands (*command_line);
603 if (check_float(linetoken3))
604 token3 >> token_value;
606 uiuc_warnings_errors(1, *command_line);
609 geometryParts -> storeCommands (*command_line);
614 if (check_float(linetoken3))
615 token3 >> token_value;
617 uiuc_warnings_errors(1, *command_line);
620 geometryParts -> storeCommands (*command_line);
626 uiuc_warnings_errors(2, *command_line);
632 void parse_controlSurface( const string& linetoken2, const string& linetoken3,
633 const string& linetoken4, const string& linetoken5,
634 const string& linetoken6,
635 const string& aircraft_directory,
636 LIST command_line ) {
638 int token_value_convert1, token_value_convert2;
639 istrstream token3(linetoken3.c_str());
640 istrstream token4(linetoken4.c_str());
641 istrstream token5(linetoken5.c_str());
642 istrstream token6(linetoken6.c_str());
644 switch(controlSurface_map[linetoken2])
648 if (check_float(linetoken3))
649 token3 >> token_value;
651 uiuc_warnings_errors(1, *command_line);
655 if (check_float(linetoken4))
656 token4 >> token_value;
658 uiuc_warnings_errors(1, *command_line);
665 if (check_float(linetoken3))
666 token3 >> token_value;
668 uiuc_warnings_errors(1, *command_line);
672 if (check_float(linetoken4))
673 token4 >> token_value;
675 uiuc_warnings_errors(1, *command_line);
682 if (check_float(linetoken3))
683 token3 >> token_value;
685 uiuc_warnings_errors(1, *command_line);
689 if (check_float(linetoken4))
690 token4 >> token_value;
692 uiuc_warnings_errors(1, *command_line);
697 case set_Long_trim_flag:
699 if (check_float(linetoken3))
700 token3 >> token_value;
702 uiuc_warnings_errors(1, *command_line);
704 set_Long_trim = true;
705 elevator_tab = token_value;
708 case set_Long_trim_deg_flag:
710 if (check_float(linetoken3))
711 token3 >> token_value;
713 uiuc_warnings_errors(1, *command_line);
715 set_Long_trim = true;
716 elevator_tab = token_value * DEG_TO_RAD;
719 case zero_Long_trim_flag:
721 zero_Long_trim = true;
724 case elevator_step_flag:
726 // set step input flag
727 elevator_step = true;
729 // read in step angle in degrees and convert
730 if (check_float(linetoken3))
731 token3 >> token_value;
733 uiuc_warnings_errors(1, *command_line);
735 elevator_step_angle = token_value * DEG_TO_RAD;
737 // read in step start time
738 if (check_float(linetoken4))
739 token4 >> token_value;
741 uiuc_warnings_errors(1, *command_line);
743 elevator_step_startTime = token_value;
746 case elevator_singlet_flag:
748 // set singlet input flag
749 elevator_singlet = true;
751 // read in singlet angle in degrees and convert
752 if (check_float(linetoken3))
753 token3 >> token_value;
755 uiuc_warnings_errors(1, *command_line);
757 elevator_singlet_angle = token_value * DEG_TO_RAD;
759 // read in singlet start time
760 if (check_float(linetoken4))
761 token4 >> token_value;
763 uiuc_warnings_errors(1, *command_line);
765 elevator_singlet_startTime = token_value;
767 // read in singlet duration
768 if (check_float(linetoken5))
769 token5 >> token_value;
771 uiuc_warnings_errors(1, *command_line);
773 elevator_singlet_duration = token_value;
776 case elevator_doublet_flag:
778 // set doublet input flag
779 elevator_doublet = true;
781 // read in doublet angle in degrees and convert
782 if (check_float(linetoken3))
783 token3 >> token_value;
785 uiuc_warnings_errors(1, *command_line);
787 elevator_doublet_angle = token_value * DEG_TO_RAD;
789 // read in doublet start time
790 if (check_float(linetoken4))
791 token4 >> token_value;
793 uiuc_warnings_errors(1, *command_line);
795 elevator_doublet_startTime = token_value;
797 // read in doublet duration
798 if (check_float(linetoken5))
799 token5 >> token_value;
801 uiuc_warnings_errors(1, *command_line);
803 elevator_doublet_duration = token_value;
806 case elevator_input_flag:
808 elevator_input = true;
809 elevator_input_file = aircraft_directory + linetoken3;
810 token4 >> token_value_convert1;
811 token5 >> token_value_convert2;
812 convert_y = uiuc_convert(token_value_convert1);
813 convert_x = uiuc_convert(token_value_convert2);
814 uiuc_1DdataFileReader(elevator_input_file,
815 elevator_input_timeArray,
816 elevator_input_deArray,
817 elevator_input_ntime);
818 token6 >> token_value;
819 elevator_input_startTime = token_value;
822 case aileron_input_flag:
824 aileron_input = true;
825 aileron_input_file = aircraft_directory + linetoken3;
826 token4 >> token_value_convert1;
827 token5 >> token_value_convert2;
828 convert_y = uiuc_convert(token_value_convert1);
829 convert_x = uiuc_convert(token_value_convert2);
830 uiuc_1DdataFileReader(aileron_input_file,
831 aileron_input_timeArray,
832 aileron_input_daArray,
833 aileron_input_ntime);
834 token6 >> token_value;
835 aileron_input_startTime = token_value;
838 case rudder_input_flag:
841 rudder_input_file = aircraft_directory + linetoken3;
842 token4 >> token_value_convert1;
843 token5 >> token_value_convert2;
844 convert_y = uiuc_convert(token_value_convert1);
845 convert_x = uiuc_convert(token_value_convert2);
846 uiuc_1DdataFileReader(rudder_input_file,
847 rudder_input_timeArray,
848 rudder_input_drArray,
850 token6 >> token_value;
851 rudder_input_startTime = token_value;
854 case pilot_elev_no_flag:
856 pilot_elev_no_check = true;
859 case pilot_ail_no_flag:
861 pilot_ail_no_check = true;
864 case pilot_rud_no_flag:
866 pilot_rud_no_check = true;
871 if (check_float(linetoken3))
872 token3 >> token_value;
874 uiuc_warnings_errors(1, *command_line);
876 flap_max = token_value;
881 if (check_float(linetoken3))
882 token3 >> token_value;
884 uiuc_warnings_errors(1, *command_line);
886 flap_rate = token_value;
892 uiuc_warnings_errors(2, *command_line);
898 void parse_mass( const string& linetoken2, const string& linetoken3,
899 LIST command_line ) {
901 istrstream token3(linetoken3.c_str());
903 switch(mass_map[linetoken2])
907 if (check_float(linetoken3))
908 token3 >> token_value;
910 uiuc_warnings_errors(1, *command_line);
912 Weight = token_value;
913 Mass = Weight * INVG;
914 massParts -> storeCommands (*command_line);
919 if (check_float(linetoken3))
920 token3 >> token_value;
922 uiuc_warnings_errors(1, *command_line);
925 massParts -> storeCommands (*command_line);
930 if (check_float(linetoken3))
931 token3 >> token_value;
933 uiuc_warnings_errors(1, *command_line);
936 massParts -> storeCommands (*command_line);
941 if (check_float(linetoken3))
942 token3 >> token_value;
944 uiuc_warnings_errors(1, *command_line);
947 massParts -> storeCommands (*command_line);
952 if (check_float(linetoken3))
953 token3 >> token_value;
955 uiuc_warnings_errors(1, *command_line);
958 massParts -> storeCommands (*command_line);
963 if (check_float(linetoken3))
964 token3 >> token_value;
966 uiuc_warnings_errors(1, *command_line);
969 massParts -> storeCommands (*command_line);
972 case Mass_appMass_ratio_flag:
974 if (check_float(linetoken3))
975 token3 >> token_value;
977 uiuc_warnings_errors(1, *command_line);
979 Mass_appMass_ratio = token_value;
980 massParts -> storeCommands (*command_line);
983 case I_xx_appMass_ratio_flag:
985 if (check_float(linetoken3))
986 token3 >> token_value;
988 uiuc_warnings_errors(1, *command_line);
990 I_xx_appMass_ratio = token_value;
991 massParts -> storeCommands (*command_line);
994 case I_yy_appMass_ratio_flag:
996 if (check_float(linetoken3))
997 token3 >> token_value;
999 uiuc_warnings_errors(1, *command_line);
1001 I_yy_appMass_ratio = token_value;
1002 massParts -> storeCommands (*command_line);
1005 case I_zz_appMass_ratio_flag:
1007 if (check_float(linetoken3))
1008 token3 >> token_value;
1010 uiuc_warnings_errors(1, *command_line);
1012 I_zz_appMass_ratio = token_value;
1013 massParts -> storeCommands (*command_line);
1016 case Mass_appMass_flag:
1018 if (check_float(linetoken3))
1019 token3 >> token_value;
1021 uiuc_warnings_errors(1, *command_line);
1023 Mass_appMass = token_value;
1024 massParts -> storeCommands (*command_line);
1027 case I_xx_appMass_flag:
1029 if (check_float(linetoken3))
1030 token3 >> token_value;
1032 uiuc_warnings_errors(1, *command_line);
1034 I_xx_appMass = token_value;
1035 massParts -> storeCommands (*command_line);
1038 case I_yy_appMass_flag:
1040 if (check_float(linetoken3))
1041 token3 >> token_value;
1043 uiuc_warnings_errors(1, *command_line);
1045 I_yy_appMass = token_value;
1046 massParts -> storeCommands (*command_line);
1049 case I_zz_appMass_flag:
1051 if (check_float(linetoken3))
1052 token3 >> token_value;
1054 uiuc_warnings_errors(1, *command_line);
1056 I_zz_appMass = token_value;
1057 massParts -> storeCommands (*command_line);
1063 uiuc_warnings_errors(2, *command_line);
1069 void parse_engine( const string& linetoken2, const string& linetoken3,
1070 const string& linetoken4, const string& linetoken5,
1071 const string& linetoken6, const string& aircraft_directory,
1072 LIST command_line ) {
1074 int token_value_convert1, token_value_convert2;
1075 istrstream token3(linetoken3.c_str());
1076 istrstream token4(linetoken4.c_str());
1077 istrstream token5(linetoken5.c_str());
1078 istrstream token6(linetoken6.c_str());
1080 switch(engine_map[linetoken2])
1082 case simpleSingle_flag:
1084 if (check_float(linetoken3))
1085 token3 >> token_value;
1087 uiuc_warnings_errors(1, *command_line);
1089 simpleSingleMaxThrust = token_value;
1090 engineParts -> storeCommands (*command_line);
1093 case simpleSingleModel_flag:
1095 simpleSingleModel = true;
1096 /* input the thrust at zero speed */
1097 if (check_float(linetoken3))
1098 token3 >> token_value;
1100 uiuc_warnings_errors(1, *command_line);
1102 /* input slope of thrust at speed for which thrust is zero */
1103 if (check_float(linetoken4))
1104 token4 >> token_value;
1106 uiuc_warnings_errors(1, *command_line);
1107 dtdv_t0 = token_value;
1108 /* input speed at which thrust is zero */
1109 if (check_float(linetoken5))
1110 token5 >> token_value;
1112 uiuc_warnings_errors(1, *command_line);
1114 dtdvvt = -dtdv_t0 * v_t0 / t_v0;
1115 engineParts -> storeCommands (*command_line);
1120 engineParts -> storeCommands (*command_line);
1125 engineParts -> storeCommands (*command_line);
1128 case Throttle_pct_input_flag:
1130 Throttle_pct_input = true;
1131 Throttle_pct_input_file = aircraft_directory + linetoken3;
1132 token4 >> token_value_convert1;
1133 token5 >> token_value_convert2;
1134 convert_y = uiuc_convert(token_value_convert1);
1135 convert_x = uiuc_convert(token_value_convert2);
1136 uiuc_1DdataFileReader(Throttle_pct_input_file,
1137 Throttle_pct_input_timeArray,
1138 Throttle_pct_input_dTArray,
1139 Throttle_pct_input_ntime);
1140 token6 >> token_value;
1141 Throttle_pct_input_startTime = token_value;
1144 case gyroForce_Q_body_flag:
1146 /* include gyroscopic forces due to pitch */
1147 gyroForce_Q_body = true;
1150 case gyroForce_R_body_flag:
1152 /* include gyroscopic forces due to yaw */
1153 gyroForce_R_body = true;
1157 case slipstream_effects_flag:
1159 // include slipstream effects
1160 slipstream_effects = true;
1161 if (!simpleSingleModel)
1162 uiuc_warnings_errors(3, *command_line);
1167 if (check_float(linetoken3))
1168 token3 >> token_value;
1170 uiuc_warnings_errors(1, *command_line);
1171 propDia = token_value;
1174 case eta_q_Cm_q_flag:
1176 // include slipstream effects due to Cm_q
1177 if (check_float(linetoken3))
1178 token3 >> token_value;
1180 uiuc_warnings_errors(1, *command_line);
1181 eta_q_Cm_q_fac = token_value;
1182 if (eta_q_Cm_q_fac == 0.0) {eta_q_Cm_q_fac = 1.0;}
1185 case eta_q_Cm_adot_flag:
1187 // include slipstream effects due to Cm_adot
1188 if (check_float(linetoken3))
1189 token3 >> token_value;
1191 uiuc_warnings_errors(1, *command_line);
1192 eta_q_Cm_adot_fac = token_value;
1193 if (eta_q_Cm_adot_fac == 0.0) {eta_q_Cm_adot_fac = 1.0;}
1196 case eta_q_Cmfade_flag:
1198 // include slipstream effects due to Cmfade
1199 if (check_float(linetoken3))
1200 token3 >> token_value;
1202 uiuc_warnings_errors(1, *command_line);
1203 eta_q_Cmfade_fac = token_value;
1204 if (eta_q_Cmfade_fac == 0.0) {eta_q_Cmfade_fac = 1.0;}
1207 case eta_q_Cl_beta_flag:
1209 // include slipstream effects due to Cl_beta
1210 if (check_float(linetoken3))
1211 token3 >> token_value;
1213 uiuc_warnings_errors(1, *command_line);
1214 eta_q_Cl_beta_fac = token_value;
1215 if (eta_q_Cl_beta_fac == 0.0) {eta_q_Cl_beta_fac = 1.0;}
1218 case eta_q_Cl_p_flag:
1220 // include slipstream effects due to Cl_p
1221 if (check_float(linetoken3))
1222 token3 >> token_value;
1224 uiuc_warnings_errors(1, *command_line);
1225 eta_q_Cl_p_fac = token_value;
1226 if (eta_q_Cl_p_fac == 0.0) {eta_q_Cl_p_fac = 1.0;}
1229 case eta_q_Cl_r_flag:
1231 // include slipstream effects due to Cl_r
1232 if (check_float(linetoken3))
1233 token3 >> token_value;
1235 uiuc_warnings_errors(1, *command_line);
1236 eta_q_Cl_r_fac = token_value;
1237 if (eta_q_Cl_r_fac == 0.0) {eta_q_Cl_r_fac = 1.0;}
1240 case eta_q_Cl_dr_flag:
1242 // include slipstream effects due to Cl_dr
1243 if (check_float(linetoken3))
1244 token3 >> token_value;
1246 uiuc_warnings_errors(1, *command_line);
1247 eta_q_Cl_dr_fac = token_value;
1248 if (eta_q_Cl_dr_fac == 0.0) {eta_q_Cl_dr_fac = 1.0;}
1251 case eta_q_CY_beta_flag:
1253 // include slipstream effects due to CY_beta
1254 if (check_float(linetoken3))
1255 token3 >> token_value;
1257 uiuc_warnings_errors(1, *command_line);
1258 eta_q_CY_beta_fac = token_value;
1259 if (eta_q_CY_beta_fac == 0.0) {eta_q_CY_beta_fac = 1.0;}
1262 case eta_q_CY_p_flag:
1264 // include slipstream effects due to CY_p
1265 if (check_float(linetoken3))
1266 token3 >> token_value;
1268 uiuc_warnings_errors(1, *command_line);
1269 eta_q_CY_p_fac = token_value;
1270 if (eta_q_CY_p_fac == 0.0) {eta_q_CY_p_fac = 1.0;}
1273 case eta_q_CY_r_flag:
1275 // include slipstream effects due to CY_r
1276 if (check_float(linetoken3))
1277 token3 >> token_value;
1279 uiuc_warnings_errors(1, *command_line);
1280 eta_q_CY_r_fac = token_value;
1281 if (eta_q_CY_r_fac == 0.0) {eta_q_CY_r_fac = 1.0;}
1284 case eta_q_CY_dr_flag:
1286 // include slipstream effects due to CY_dr
1287 if (check_float(linetoken3))
1288 token3 >> token_value;
1290 uiuc_warnings_errors(1, *command_line);
1291 eta_q_CY_dr_fac = token_value;
1292 if (eta_q_CY_dr_fac == 0.0) {eta_q_CY_dr_fac = 1.0;}
1295 case eta_q_Cn_beta_flag:
1297 // include slipstream effects due to Cn_beta
1298 if (check_float(linetoken3))
1299 token3 >> token_value;
1301 uiuc_warnings_errors(1, *command_line);
1302 eta_q_Cn_beta_fac = token_value;
1303 if (eta_q_Cn_beta_fac == 0.0) {eta_q_Cn_beta_fac = 1.0;}
1306 case eta_q_Cn_p_flag:
1308 // include slipstream effects due to Cn_p
1309 if (check_float(linetoken3))
1310 token3 >> token_value;
1312 uiuc_warnings_errors(1, *command_line);
1313 eta_q_Cn_p_fac = token_value;
1314 if (eta_q_Cn_p_fac == 0.0) {eta_q_Cn_p_fac = 1.0;}
1317 case eta_q_Cn_r_flag:
1319 // include slipstream effects due to Cn_r
1320 if (check_float(linetoken3))
1321 token3 >> token_value;
1323 uiuc_warnings_errors(1, *command_line);
1324 eta_q_Cn_r_fac = token_value;
1325 if (eta_q_Cn_r_fac == 0.0) {eta_q_Cn_r_fac = 1.0;}
1328 case eta_q_Cn_dr_flag:
1330 // include slipstream effects due to Cn_dr
1331 if (check_float(linetoken3))
1332 token3 >> token_value;
1334 uiuc_warnings_errors(1, *command_line);
1335 eta_q_Cn_dr_fac = token_value;
1336 if (eta_q_Cn_dr_fac == 0.0) {eta_q_Cn_dr_fac = 1.0;}
1342 if (check_float(linetoken3))
1343 token3 >> token_value;
1345 uiuc_warnings_errors(1, *command_line);
1346 minOmega = token_value;
1347 if (check_float(linetoken4))
1348 token4 >> token_value;
1350 uiuc_warnings_errors(1, *command_line);
1351 maxOmega = token_value;
1356 if (check_float(linetoken3))
1357 token3 >> token_value;
1359 uiuc_warnings_errors(1, *command_line);
1360 minOmegaRPM = token_value;
1361 minOmega = minOmegaRPM * 2.0 * LS_PI / 60;
1362 if (check_float(linetoken4))
1363 token4 >> token_value;
1365 uiuc_warnings_errors(1, *command_line);
1366 maxOmegaRPM = token_value;
1367 maxOmega = maxOmegaRPM * 2.0 * LS_PI / 60;
1370 case polarInertia_flag:
1372 if (check_float(linetoken3))
1373 token3 >> token_value;
1375 uiuc_warnings_errors(1, *command_line);
1376 polarInertia = token_value;
1381 engineParts -> storeCommands (*command_line);
1387 Xp_input_file = aircraft_directory + linetoken3;
1388 token4 >> token_value_convert1;
1389 token5 >> token_value_convert2;
1390 convert_y = uiuc_convert(token_value_convert1);
1391 convert_x = uiuc_convert(token_value_convert2);
1392 uiuc_1DdataFileReader(Xp_input_file,
1396 token6 >> token_value;
1397 Xp_input_startTime = token_value;
1403 Zp_input_file = aircraft_directory + linetoken3;
1404 token4 >> token_value_convert1;
1405 token5 >> token_value_convert2;
1406 convert_y = uiuc_convert(token_value_convert1);
1407 convert_x = uiuc_convert(token_value_convert2);
1408 uiuc_1DdataFileReader(Zp_input_file,
1412 token6 >> token_value;
1413 Zp_input_startTime = token_value;
1419 Mp_input_file = aircraft_directory + linetoken3;
1420 token4 >> token_value_convert1;
1421 token5 >> token_value_convert2;
1422 convert_y = uiuc_convert(token_value_convert1);
1423 convert_x = uiuc_convert(token_value_convert2);
1424 uiuc_1DdataFileReader(Mp_input_file,
1428 token6 >> token_value;
1429 Mp_input_startTime = token_value;
1435 uiuc_warnings_errors(2, *command_line);
1441 void parse_CD( const string& linetoken2, const string& linetoken3,
1442 const string& linetoken4, const string& linetoken5,
1443 const string& linetoken6, const string& linetoken7,
1444 const string& linetoken8, const string& linetoken9,
1445 const string& aircraft_directory,
1446 bool &CXfabetaf_first, bool &CXfadef_first,
1447 bool &CXfaqf_first, LIST command_line ) {
1449 int token_value_convert1, token_value_convert2, token_value_convert3;
1450 double datafile_xArray[100][100], datafile_yArray[100];
1451 double datafile_zArray[100][100];
1452 int datafile_nxArray[100], datafile_ny;
1453 istrstream token3(linetoken3.c_str());
1454 istrstream token4(linetoken4.c_str());
1455 istrstream token5(linetoken5.c_str());
1456 istrstream token6(linetoken6.c_str());
1457 istrstream token7(linetoken7.c_str());
1458 istrstream token8(linetoken8.c_str());
1459 istrstream token9(linetoken9.c_str());
1461 switch(CD_map[linetoken2])
1465 if (check_float(linetoken3))
1466 token3 >> token_value;
1468 uiuc_warnings_errors(1, *command_line);
1472 aeroDragParts -> storeCommands (*command_line);
1477 if (check_float(linetoken3))
1478 token3 >> token_value;
1480 uiuc_warnings_errors(1, *command_line);
1484 aeroDragParts -> storeCommands (*command_line);
1489 if (check_float(linetoken3))
1490 token3 >> token_value;
1492 uiuc_warnings_errors(1, *command_line);
1496 aeroDragParts -> storeCommands (*command_line);
1501 if (check_float(linetoken3))
1502 token3 >> token_value;
1504 uiuc_warnings_errors(1, *command_line);
1506 CD_adot = token_value;
1507 CD_adot_clean = CD_adot;
1508 aeroDragParts -> storeCommands (*command_line);
1513 if (check_float(linetoken3))
1514 token3 >> token_value;
1516 uiuc_warnings_errors(1, *command_line);
1520 aeroDragParts -> storeCommands (*command_line);
1525 if (check_float(linetoken3))
1526 token3 >> token_value;
1528 uiuc_warnings_errors(1, *command_line);
1530 CD_ih = token_value;
1531 aeroDragParts -> storeCommands (*command_line);
1536 if (check_float(linetoken3))
1537 token3 >> token_value;
1539 uiuc_warnings_errors(1, *command_line);
1541 CD_de = token_value;
1542 CD_de_clean = CD_de;
1543 aeroDragParts -> storeCommands (*command_line);
1548 CDfa = aircraft_directory + linetoken3;
1549 token4 >> token_value_convert1;
1550 token5 >> token_value_convert2;
1551 convert_y = uiuc_convert(token_value_convert1);
1552 convert_x = uiuc_convert(token_value_convert2);
1553 /* call 1D File Reader with file name (CDfa) and conversion
1554 factors; function returns array of alphas (aArray) and
1555 corresponding CD values (CDArray) and max number of
1556 terms in arrays (nAlpha) */
1557 uiuc_1DdataFileReader(CDfa,
1561 aeroDragParts -> storeCommands (*command_line);
1566 CDfCL = aircraft_directory + linetoken3;
1567 token4 >> token_value_convert1;
1568 token5 >> token_value_convert2;
1569 convert_y = uiuc_convert(token_value_convert1);
1570 convert_x = uiuc_convert(token_value_convert2);
1571 /* call 1D File Reader with file name (CDfCL) and conversion
1572 factors; function returns array of CLs (CLArray) and
1573 corresponding CD values (CDArray) and max number of
1574 terms in arrays (nCL) */
1575 uiuc_1DdataFileReader(CDfCL,
1579 aeroDragParts -> storeCommands (*command_line);
1584 CDfade = aircraft_directory + linetoken3;
1585 token4 >> token_value_convert1;
1586 token5 >> token_value_convert2;
1587 token6 >> token_value_convert3;
1588 convert_z = uiuc_convert(token_value_convert1);
1589 convert_x = uiuc_convert(token_value_convert2);
1590 convert_y = uiuc_convert(token_value_convert3);
1591 /* call 2D File Reader with file name (CDfade) and
1592 conversion factors; function returns array of
1593 elevator deflections (deArray) and corresponding
1594 alpha (aArray) and delta CD (CDArray) values and
1595 max number of terms in alpha arrays (nAlphaArray)
1596 and deflection array (nde) */
1597 uiuc_2DdataFileReader(CDfade,
1603 aeroDragParts -> storeCommands (*command_line);
1608 CDfdf = aircraft_directory + linetoken3;
1609 token4 >> token_value_convert1;
1610 token5 >> token_value_convert2;
1611 convert_y = uiuc_convert(token_value_convert1);
1612 convert_x = uiuc_convert(token_value_convert2);
1613 /* call 1D File Reader with file name (CDfdf) and conversion
1614 factors; function returns array of dfs (dfArray) and
1615 corresponding CD values (CDArray) and max number of
1616 terms in arrays (ndf) */
1617 uiuc_1DdataFileReader(CDfdf,
1621 aeroDragParts -> storeCommands (*command_line);
1626 CDfadf = aircraft_directory + linetoken3;
1627 token4 >> token_value_convert1;
1628 token5 >> token_value_convert2;
1629 token6 >> token_value_convert3;
1630 convert_z = uiuc_convert(token_value_convert1);
1631 convert_x = uiuc_convert(token_value_convert2);
1632 convert_y = uiuc_convert(token_value_convert3);
1633 /* call 2D File Reader with file name (CDfadf) and
1634 conversion factors; function returns array of
1635 flap deflections (dfArray) and corresponding
1636 alpha (aArray) and delta CD (CDArray) values and
1637 max number of terms in alpha arrays (nAlphaArray)
1638 and deflection array (ndf) */
1639 uiuc_2DdataFileReader(CDfadf,
1645 aeroDragParts -> storeCommands (*command_line);
1650 if (check_float(linetoken3))
1651 token3 >> token_value;
1653 uiuc_warnings_errors(1, *command_line);
1657 aeroDragParts -> storeCommands (*command_line);
1662 if (check_float(linetoken3))
1663 token3 >> token_value;
1665 uiuc_warnings_errors(1, *command_line);
1669 aeroDragParts -> storeCommands (*command_line);
1674 if (check_float(linetoken3))
1675 token3 >> token_value;
1677 uiuc_warnings_errors(1, *command_line);
1681 aeroDragParts -> storeCommands (*command_line);
1686 if (check_float(linetoken3))
1687 token3 >> token_value;
1689 uiuc_warnings_errors(1, *command_line);
1691 CX_a2 = token_value;
1692 CX_a2_clean = CX_a2;
1693 aeroDragParts -> storeCommands (*command_line);
1698 if (check_float(linetoken3))
1699 token3 >> token_value;
1701 uiuc_warnings_errors(1, *command_line);
1703 CX_a3 = token_value;
1704 CX_a3_clean = CX_a3;
1705 aeroDragParts -> storeCommands (*command_line);
1710 if (check_float(linetoken3))
1711 token3 >> token_value;
1713 uiuc_warnings_errors(1, *command_line);
1715 CX_adot = token_value;
1716 CX_adot_clean = CX_adot;
1717 aeroDragParts -> storeCommands (*command_line);
1722 if (check_float(linetoken3))
1723 token3 >> token_value;
1725 uiuc_warnings_errors(1, *command_line);
1729 aeroDragParts -> storeCommands (*command_line);
1734 if (check_float(linetoken3))
1735 token3 >> token_value;
1737 uiuc_warnings_errors(1, *command_line);
1739 CX_de = token_value;
1740 CX_de_clean = CX_de;
1741 aeroDragParts -> storeCommands (*command_line);
1746 if (check_float(linetoken3))
1747 token3 >> token_value;
1749 uiuc_warnings_errors(1, *command_line);
1751 CX_dr = token_value;
1752 CX_dr_clean = CX_dr;
1753 aeroDragParts -> storeCommands (*command_line);
1758 if (check_float(linetoken3))
1759 token3 >> token_value;
1761 uiuc_warnings_errors(1, *command_line);
1763 CX_df = token_value;
1764 CX_df_clean = CX_df;
1765 aeroDragParts -> storeCommands (*command_line);
1770 if (check_float(linetoken3))
1771 token3 >> token_value;
1773 uiuc_warnings_errors(1, *command_line);
1775 CX_adf = token_value;
1776 CX_adf_clean = CX_adf;
1777 aeroDragParts -> storeCommands (*command_line);
1780 case CXfabetaf_flag:
1782 int CXfabetaf_index, i;
1783 string CXfabetaf_file;
1785 CXfabetaf_file = aircraft_directory + linetoken3;
1786 token4 >> CXfabetaf_index;
1787 if (CXfabetaf_index < 1 || CXfabetaf_index >= 30)
1788 uiuc_warnings_errors(1, *command_line);
1789 if (CXfabetaf_index > CXfabetaf_nf)
1790 CXfabetaf_nf = CXfabetaf_index;
1791 token5 >> flap_value;
1792 CXfabetaf_fArray[CXfabetaf_index] = flap_value;
1793 token6 >> token_value_convert1;
1794 token7 >> token_value_convert2;
1795 token8 >> token_value_convert3;
1796 token9 >> CXfabetaf_nice;
1797 convert_z = uiuc_convert(token_value_convert1);
1798 convert_x = uiuc_convert(token_value_convert2);
1799 convert_y = uiuc_convert(token_value_convert3);
1800 /* call 2D File Reader with file name (CXfabetaf_file) and
1801 conversion factors; function returns array of
1802 elevator deflections (deArray) and corresponding
1803 alpha (aArray) and delta CZ (CZArray) values and
1804 max number of terms in alpha arrays (nAlphaArray)
1805 and delfection array (nde) */
1806 uiuc_2DdataFileReader(CXfabetaf_file,
1812 d_2_to_3(datafile_xArray, CXfabetaf_aArray, CXfabetaf_index);
1813 d_1_to_2(datafile_yArray, CXfabetaf_betaArray, CXfabetaf_index);
1814 d_2_to_3(datafile_zArray, CXfabetaf_CXArray, CXfabetaf_index);
1815 i_1_to_2(datafile_nxArray, CXfabetaf_nAlphaArray, CXfabetaf_index);
1816 CXfabetaf_nbeta[CXfabetaf_index] = datafile_ny;
1817 if (CXfabetaf_first==true)
1819 if (CXfabetaf_nice == 1)
1821 CXfabetaf_na_nice = datafile_nxArray[1];
1822 CXfabetaf_nb_nice = datafile_ny;
1823 d_1_to_1(datafile_yArray, CXfabetaf_bArray_nice);
1824 for (i=1; i<=CXfabetaf_na_nice; i++)
1825 CXfabetaf_aArray_nice[i] = datafile_xArray[1][i];
1827 aeroDragParts -> storeCommands (*command_line);
1828 CXfabetaf_first=false;
1834 int CXfadef_index, i;
1835 string CXfadef_file;
1837 CXfadef_file = aircraft_directory + linetoken3;
1838 token4 >> CXfadef_index;
1839 if (CXfadef_index < 0 || CXfadef_index >= 30)
1840 uiuc_warnings_errors(1, *command_line);
1841 if (CXfadef_index > CXfadef_nf)
1842 CXfadef_nf = CXfadef_index;
1843 token5 >> flap_value;
1844 CXfadef_fArray[CXfadef_index] = flap_value;
1845 token6 >> token_value_convert1;
1846 token7 >> token_value_convert2;
1847 token8 >> token_value_convert3;
1848 token9 >> CXfadef_nice;
1849 convert_z = uiuc_convert(token_value_convert1);
1850 convert_x = uiuc_convert(token_value_convert2);
1851 convert_y = uiuc_convert(token_value_convert3);
1852 /* call 2D File Reader with file name (CXfadef_file) and
1853 conversion factors; function returns array of
1854 elevator deflections (deArray) and corresponding
1855 alpha (aArray) and delta CZ (CZArray) values and
1856 max number of terms in alpha arrays (nAlphaArray)
1857 and delfection array (nde) */
1858 uiuc_2DdataFileReader(CXfadef_file,
1864 d_2_to_3(datafile_xArray, CXfadef_aArray, CXfadef_index);
1865 d_1_to_2(datafile_yArray, CXfadef_deArray, CXfadef_index);
1866 d_2_to_3(datafile_zArray, CXfadef_CXArray, CXfadef_index);
1867 i_1_to_2(datafile_nxArray, CXfadef_nAlphaArray, CXfadef_index);
1868 CXfadef_nde[CXfadef_index] = datafile_ny;
1869 if (CXfadef_first==true)
1871 if (CXfadef_nice == 1)
1873 CXfadef_na_nice = datafile_nxArray[1];
1874 CXfadef_nde_nice = datafile_ny;
1875 d_1_to_1(datafile_yArray, CXfadef_deArray_nice);
1876 for (i=1; i<=CXfadef_na_nice; i++)
1877 CXfadef_aArray_nice[i] = datafile_xArray[1][i];
1879 aeroDragParts -> storeCommands (*command_line);
1880 CXfadef_first=false;
1886 int CXfaqf_index, i;
1889 CXfaqf_file = aircraft_directory + linetoken3;
1890 token4 >> CXfaqf_index;
1891 if (CXfaqf_index < 0 || CXfaqf_index >= 30)
1892 uiuc_warnings_errors(1, *command_line);
1893 if (CXfaqf_index > CXfaqf_nf)
1894 CXfaqf_nf = CXfaqf_index;
1895 token5 >> flap_value;
1896 CXfaqf_fArray[CXfaqf_index] = flap_value;
1897 token6 >> token_value_convert1;
1898 token7 >> token_value_convert2;
1899 token8 >> token_value_convert3;
1900 token9 >> CXfaqf_nice;
1901 convert_z = uiuc_convert(token_value_convert1);
1902 convert_x = uiuc_convert(token_value_convert2);
1903 convert_y = uiuc_convert(token_value_convert3);
1904 /* call 2D File Reader with file name (CXfaqf_file) and
1905 conversion factors; function returns array of
1906 elevator deflections (deArray) and corresponding
1907 alpha (aArray) and delta CZ (CZArray) values and
1908 max number of terms in alpha arrays (nAlphaArray)
1909 and delfection array (nde) */
1910 uiuc_2DdataFileReader(CXfaqf_file,
1916 d_2_to_3(datafile_xArray, CXfaqf_aArray, CXfaqf_index);
1917 d_1_to_2(datafile_yArray, CXfaqf_qArray, CXfaqf_index);
1918 d_2_to_3(datafile_zArray, CXfaqf_CXArray, CXfaqf_index);
1919 i_1_to_2(datafile_nxArray, CXfaqf_nAlphaArray, CXfaqf_index);
1920 CXfaqf_nq[CXfaqf_index] = datafile_ny;
1921 if (CXfaqf_first==true)
1923 if (CXfaqf_nice == 1)
1925 CXfaqf_na_nice = datafile_nxArray[1];
1926 CXfaqf_nq_nice = datafile_ny;
1927 d_1_to_1(datafile_yArray, CXfaqf_qArray_nice);
1928 for (i=1; i<=CXfaqf_na_nice; i++)
1929 CXfaqf_aArray_nice[i] = datafile_xArray[1][i];
1931 aeroDragParts -> storeCommands (*command_line);
1939 uiuc_warnings_errors(2, *command_line);
1946 void parse_CL( const string& linetoken2, const string& linetoken3,
1947 const string& linetoken4, const string& linetoken5,
1948 const string& linetoken6, const string& linetoken7,
1949 const string& linetoken8, const string& linetoken9,
1950 const string& aircraft_directory,
1951 bool &CZfabetaf_first, bool &CZfadef_first,
1952 bool &CZfaqf_first, LIST command_line ) {
1954 int token_value_convert1, token_value_convert2, token_value_convert3;
1955 double datafile_xArray[100][100], datafile_yArray[100];
1956 double datafile_zArray[100][100];
1957 int datafile_nxArray[100], datafile_ny;
1958 istrstream token3(linetoken3.c_str());
1959 istrstream token4(linetoken4.c_str());
1960 istrstream token5(linetoken5.c_str());
1961 istrstream token6(linetoken6.c_str());
1962 istrstream token7(linetoken7.c_str());
1963 istrstream token8(linetoken8.c_str());
1964 istrstream token9(linetoken9.c_str());
1966 switch(CL_map[linetoken2])
1970 if (check_float(linetoken3))
1971 token3 >> token_value;
1973 uiuc_warnings_errors(1, *command_line);
1977 aeroLiftParts -> storeCommands (*command_line);
1982 if (check_float(linetoken3))
1983 token3 >> token_value;
1985 uiuc_warnings_errors(1, *command_line);
1989 aeroLiftParts -> storeCommands (*command_line);
1994 if (check_float(linetoken3))
1995 token3 >> token_value;
1997 uiuc_warnings_errors(1, *command_line);
1999 CL_adot = token_value;
2000 CL_adot_clean = CL_adot;
2001 aeroLiftParts -> storeCommands (*command_line);
2006 if (check_float(linetoken3))
2007 token3 >> token_value;
2009 uiuc_warnings_errors(1, *command_line);
2013 aeroLiftParts -> storeCommands (*command_line);
2018 if (check_float(linetoken3))
2019 token3 >> token_value;
2021 uiuc_warnings_errors(1, *command_line);
2023 CL_ih = token_value;
2024 aeroLiftParts -> storeCommands (*command_line);
2029 if (check_float(linetoken3))
2030 token3 >> token_value;
2032 uiuc_warnings_errors(1, *command_line);
2034 CL_de = token_value;
2035 CL_de_clean = CL_de;
2036 aeroLiftParts -> storeCommands (*command_line);
2041 CLfa = aircraft_directory + linetoken3;
2042 token4 >> token_value_convert1;
2043 token5 >> token_value_convert2;
2044 convert_y = uiuc_convert(token_value_convert1);
2045 convert_x = uiuc_convert(token_value_convert2);
2046 /* call 1D File Reader with file name (CLfa) and conversion
2047 factors; function returns array of alphas (aArray) and
2048 corresponding CL values (CLArray) and max number of
2049 terms in arrays (nAlpha) */
2050 uiuc_1DdataFileReader(CLfa,
2054 aeroLiftParts -> storeCommands (*command_line);
2059 CLfade = aircraft_directory + linetoken3;
2060 token4 >> token_value_convert1;
2061 token5 >> token_value_convert2;
2062 token6 >> token_value_convert3;
2063 convert_z = uiuc_convert(token_value_convert1);
2064 convert_x = uiuc_convert(token_value_convert2);
2065 convert_y = uiuc_convert(token_value_convert3);
2066 /* call 2D File Reader with file name (CLfade) and
2067 conversion factors; function returns array of
2068 elevator deflections (deArray) and corresponding
2069 alpha (aArray) and delta CL (CLArray) values and
2070 max number of terms in alpha arrays (nAlphaArray)
2071 and deflection array (nde) */
2072 uiuc_2DdataFileReader(CLfade,
2078 aeroLiftParts -> storeCommands (*command_line);
2083 CLfdf = aircraft_directory + linetoken3;
2084 token4 >> token_value_convert1;
2085 token5 >> token_value_convert2;
2086 convert_y = uiuc_convert(token_value_convert1);
2087 convert_x = uiuc_convert(token_value_convert2);
2088 /* call 1D File Reader with file name (CLfdf) and conversion
2089 factors; function returns array of dfs (dfArray) and
2090 corresponding CL values (CLArray) and max number of
2091 terms in arrays (ndf) */
2092 uiuc_1DdataFileReader(CLfdf,
2096 aeroLiftParts -> storeCommands (*command_line);
2098 // additional variables to streamline flap routine in aerodeflections
2100 int temp_counter = 1;
2101 while (temp_counter <= ndf)
2103 dfArray[temp_counter] = CLfdf_dfArray[temp_counter];
2104 TimeArray[temp_counter] = dfTimefdf_TimeArray[temp_counter];
2111 CLfadf = aircraft_directory + linetoken3;
2112 token4 >> token_value_convert1;
2113 token5 >> token_value_convert2;
2114 token6 >> token_value_convert3;
2115 convert_z = uiuc_convert(token_value_convert1);
2116 convert_x = uiuc_convert(token_value_convert2);
2117 convert_y = uiuc_convert(token_value_convert3);
2118 /* call 2D File Reader with file name (CLfadf) and
2119 conversion factors; function returns array of
2120 flap deflections (dfArray) and corresponding
2121 alpha (aArray) and delta CL (CLArray) values and
2122 max number of terms in alpha arrays (nAlphaArray)
2123 and deflection array (ndf) */
2124 uiuc_2DdataFileReader(CLfadf,
2130 aeroLiftParts -> storeCommands (*command_line);
2135 if (check_float(linetoken3))
2136 token3 >> token_value;
2138 uiuc_warnings_errors(1, *command_line);
2142 aeroLiftParts -> storeCommands (*command_line);
2147 if (check_float(linetoken3))
2148 token3 >> token_value;
2150 uiuc_warnings_errors(1, *command_line);
2154 aeroLiftParts -> storeCommands (*command_line);
2159 if (check_float(linetoken3))
2160 token3 >> token_value;
2162 uiuc_warnings_errors(1, *command_line);
2164 CZ_a2 = token_value;
2165 CZ_a2_clean = CZ_a2;
2166 aeroLiftParts -> storeCommands (*command_line);
2171 if (check_float(linetoken3))
2172 token3 >> token_value;
2174 uiuc_warnings_errors(1, *command_line);
2176 CZ_a3 = token_value;
2177 CZ_a3_clean = CZ_a3;
2178 aeroLiftParts -> storeCommands (*command_line);
2183 if (check_float(linetoken3))
2184 token3 >> token_value;
2186 uiuc_warnings_errors(1, *command_line);
2188 CZ_adot = token_value;
2189 CZ_adot_clean = CZ_adot;
2190 aeroLiftParts -> storeCommands (*command_line);
2195 if (check_float(linetoken3))
2196 token3 >> token_value;
2198 uiuc_warnings_errors(1, *command_line);
2202 aeroLiftParts -> storeCommands (*command_line);
2207 if (check_float(linetoken3))
2208 token3 >> token_value;
2210 uiuc_warnings_errors(1, *command_line);
2212 CZ_de = token_value;
2213 CZ_de_clean = CZ_de;
2214 aeroLiftParts -> storeCommands (*command_line);
2219 if (check_float(linetoken3))
2220 token3 >> token_value;
2222 uiuc_warnings_errors(1, *command_line);
2224 CZ_deb2 = token_value;
2225 CZ_deb2_clean = CZ_deb2;
2226 aeroLiftParts -> storeCommands (*command_line);
2231 if (check_float(linetoken3))
2232 token3 >> token_value;
2234 uiuc_warnings_errors(1, *command_line);
2236 CZ_df = token_value;
2237 CZ_df_clean = CZ_df;
2238 aeroLiftParts -> storeCommands (*command_line);
2243 if (check_float(linetoken3))
2244 token3 >> token_value;
2246 uiuc_warnings_errors(1, *command_line);
2248 CZ_adf = token_value;
2249 CZ_adf_clean = CZ_adf;
2250 aeroLiftParts -> storeCommands (*command_line);
2255 CZfa = aircraft_directory + linetoken3;
2256 token4 >> token_value_convert1;
2257 token5 >> token_value_convert2;
2258 convert_y = uiuc_convert(token_value_convert1);
2259 convert_x = uiuc_convert(token_value_convert2);
2260 /* call 1D File Reader with file name (CZfa) and conversion
2261 factors; function returns array of alphas (aArray) and
2262 corresponding CZ values (CZArray) and max number of
2263 terms in arrays (nAlpha) */
2264 uiuc_1DdataFileReader(CZfa,
2268 aeroLiftParts -> storeCommands (*command_line);
2271 case CZfabetaf_flag:
2273 int CZfabetaf_index, i;
2274 string CZfabetaf_file;
2276 CZfabetaf_file = aircraft_directory + linetoken3;
2277 token4 >> CZfabetaf_index;
2278 if (CZfabetaf_index < 0 || CZfabetaf_index >= 30)
2279 uiuc_warnings_errors(1, *command_line);
2280 if (CZfabetaf_index > CZfabetaf_nf)
2281 CZfabetaf_nf = CZfabetaf_index;
2282 token5 >> flap_value;
2283 CZfabetaf_fArray[CZfabetaf_index] = flap_value;
2284 token6 >> token_value_convert1;
2285 token7 >> token_value_convert2;
2286 token8 >> token_value_convert3;
2287 token9 >> CZfabetaf_nice;
2288 convert_z = uiuc_convert(token_value_convert1);
2289 convert_x = uiuc_convert(token_value_convert2);
2290 convert_y = uiuc_convert(token_value_convert3);
2291 /* call 2D File Reader with file name (CZfabetaf_file) and
2292 conversion factors; function returns array of
2293 beta (betaArray) and corresponding
2294 alpha (aArray) and CZ (CZArray) values and
2295 max number of terms in alpha arrays (nAlphaArray)
2296 and beta array (nbeta) */
2297 uiuc_2DdataFileReader(CZfabetaf_file,
2303 d_2_to_3(datafile_xArray, CZfabetaf_aArray, CZfabetaf_index);
2304 d_1_to_2(datafile_yArray, CZfabetaf_betaArray, CZfabetaf_index);
2305 d_2_to_3(datafile_zArray, CZfabetaf_CZArray, CZfabetaf_index);
2306 i_1_to_2(datafile_nxArray, CZfabetaf_nAlphaArray, CZfabetaf_index);
2307 CZfabetaf_nbeta[CZfabetaf_index] = datafile_ny;
2308 if (CZfabetaf_first==true)
2310 if (CZfabetaf_nice == 1)
2312 CZfabetaf_na_nice = datafile_nxArray[1];
2313 CZfabetaf_nb_nice = datafile_ny;
2314 d_1_to_1(datafile_yArray, CZfabetaf_bArray_nice);
2315 for (i=1; i<=CZfabetaf_na_nice; i++)
2316 CZfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2318 aeroLiftParts -> storeCommands (*command_line);
2319 CZfabetaf_first=false;
2325 int CZfadef_index, i;
2326 string CZfadef_file;
2328 CZfadef_file = aircraft_directory + linetoken3;
2329 token4 >> CZfadef_index;
2330 if (CZfadef_index < 0 || CZfadef_index >= 30)
2331 uiuc_warnings_errors(1, *command_line);
2332 if (CZfadef_index > CZfadef_nf)
2333 CZfadef_nf = CZfadef_index;
2334 token5 >> flap_value;
2335 CZfadef_fArray[CZfadef_index] = flap_value;
2336 token6 >> token_value_convert1;
2337 token7 >> token_value_convert2;
2338 token8 >> token_value_convert3;
2339 token9 >> CZfadef_nice;
2340 convert_z = uiuc_convert(token_value_convert1);
2341 convert_x = uiuc_convert(token_value_convert2);
2342 convert_y = uiuc_convert(token_value_convert3);
2343 /* call 2D File Reader with file name (CZfadef_file) and
2344 conversion factors; function returns array of
2345 elevator deflections (deArray) and corresponding
2346 alpha (aArray) and delta CZ (CZArray) values and
2347 max number of terms in alpha arrays (nAlphaArray)
2348 and delfection array (nde) */
2349 uiuc_2DdataFileReader(CZfadef_file,
2355 d_2_to_3(datafile_xArray, CZfadef_aArray, CZfadef_index);
2356 d_1_to_2(datafile_yArray, CZfadef_deArray, CZfadef_index);
2357 d_2_to_3(datafile_zArray, CZfadef_CZArray, CZfadef_index);
2358 i_1_to_2(datafile_nxArray, CZfadef_nAlphaArray, CZfadef_index);
2359 CZfadef_nde[CZfadef_index] = datafile_ny;
2360 if (CZfadef_first==true)
2362 if (CZfadef_nice == 1)
2364 CZfadef_na_nice = datafile_nxArray[1];
2365 CZfadef_nde_nice = datafile_ny;
2366 d_1_to_1(datafile_yArray, CZfadef_deArray_nice);
2367 for (i=1; i<=CZfadef_na_nice; i++)
2368 CZfadef_aArray_nice[i] = datafile_xArray[1][i];
2370 aeroLiftParts -> storeCommands (*command_line);
2371 CZfadef_first=false;
2377 int CZfaqf_index, i;
2380 CZfaqf_file = aircraft_directory + linetoken3;
2381 token4 >> CZfaqf_index;
2382 if (CZfaqf_index < 0 || CZfaqf_index >= 30)
2383 uiuc_warnings_errors(1, *command_line);
2384 if (CZfaqf_index > CZfaqf_nf)
2385 CZfaqf_nf = CZfaqf_index;
2386 token5 >> flap_value;
2387 CZfaqf_fArray[CZfaqf_index] = flap_value;
2388 token6 >> token_value_convert1;
2389 token7 >> token_value_convert2;
2390 token8 >> token_value_convert3;
2391 token9 >> CZfaqf_nice;
2392 convert_z = uiuc_convert(token_value_convert1);
2393 convert_x = uiuc_convert(token_value_convert2);
2394 convert_y = uiuc_convert(token_value_convert3);
2395 /* call 2D File Reader with file name (CZfaqf_file) and
2396 conversion factors; function returns array of
2397 pitch rate (qArray) and corresponding
2398 alpha (aArray) and delta CZ (CZArray) values and
2399 max number of terms in alpha arrays (nAlphaArray)
2400 and pitch rate array (nq) */
2401 uiuc_2DdataFileReader(CZfaqf_file,
2407 d_2_to_3(datafile_xArray, CZfaqf_aArray, CZfaqf_index);
2408 d_1_to_2(datafile_yArray, CZfaqf_qArray, CZfaqf_index);
2409 d_2_to_3(datafile_zArray, CZfaqf_CZArray, CZfaqf_index);
2410 i_1_to_2(datafile_nxArray, CZfaqf_nAlphaArray, CZfaqf_index);
2411 CZfaqf_nq[CZfaqf_index] = datafile_ny;
2412 if (CZfaqf_first==true)
2414 if (CZfaqf_nice == 1)
2416 CZfaqf_na_nice = datafile_nxArray[1];
2417 CZfaqf_nq_nice = datafile_ny;
2418 d_1_to_1(datafile_yArray, CZfaqf_qArray_nice);
2419 for (i=1; i<=CZfaqf_na_nice; i++)
2420 CZfaqf_aArray_nice[i] = datafile_xArray[1][i];
2422 aeroLiftParts -> storeCommands (*command_line);
2430 uiuc_warnings_errors(2, *command_line);
2437 void parse_Cm( const string& linetoken2, const string& linetoken3,
2438 const string& linetoken4, const string& linetoken5,
2439 const string& linetoken6, const string& linetoken7,
2440 const string& linetoken8, const string& linetoken9,
2441 const string& aircraft_directory,
2442 bool &Cmfabetaf_first, bool &Cmfadef_first,
2443 bool &Cmfaqf_first, LIST command_line ) {
2445 int token_value_convert1, token_value_convert2, token_value_convert3;
2446 double datafile_xArray[100][100], datafile_yArray[100];
2447 double datafile_zArray[100][100];
2448 int datafile_nxArray[100], datafile_ny;
2449 istrstream token3(linetoken3.c_str());
2450 istrstream token4(linetoken4.c_str());
2451 istrstream token5(linetoken5.c_str());
2452 istrstream token6(linetoken6.c_str());
2453 istrstream token7(linetoken7.c_str());
2454 istrstream token8(linetoken8.c_str());
2455 istrstream token9(linetoken9.c_str());
2457 switch(Cm_map[linetoken2])
2461 if (check_float(linetoken3))
2462 token3 >> token_value;
2464 uiuc_warnings_errors(1, *command_line);
2468 aeroPitchParts -> storeCommands (*command_line);
2473 if (check_float(linetoken3))
2474 token3 >> token_value;
2476 uiuc_warnings_errors(1, *command_line);
2480 aeroPitchParts -> storeCommands (*command_line);
2485 if (check_float(linetoken3))
2486 token3 >> token_value;
2488 uiuc_warnings_errors(1, *command_line);
2490 Cm_a2 = token_value;
2491 Cm_a2_clean = Cm_a2;
2492 aeroPitchParts -> storeCommands (*command_line);
2497 if (check_float(linetoken3))
2498 token3 >> token_value;
2500 uiuc_warnings_errors(1, *command_line);
2502 Cm_adot = token_value;
2503 Cm_adot_clean = Cm_adot;
2504 aeroPitchParts -> storeCommands (*command_line);
2509 if (check_float(linetoken3))
2510 token3 >> token_value;
2512 uiuc_warnings_errors(1, *command_line);
2516 aeroPitchParts -> storeCommands (*command_line);
2521 if (check_float(linetoken3))
2522 token3 >> token_value;
2524 uiuc_warnings_errors(1, *command_line);
2526 Cm_ih = token_value;
2527 aeroPitchParts -> storeCommands (*command_line);
2532 if (check_float(linetoken3))
2533 token3 >> token_value;
2535 uiuc_warnings_errors(1, *command_line);
2537 Cm_de = token_value;
2538 Cm_de_clean = Cm_de;
2539 aeroPitchParts -> storeCommands (*command_line);
2544 if (check_float(linetoken3))
2545 token3 >> token_value;
2547 uiuc_warnings_errors(1, *command_line);
2549 Cm_b2 = token_value;
2550 Cm_b2_clean = Cm_b2;
2551 aeroPitchParts -> storeCommands (*command_line);
2556 if (check_float(linetoken3))
2557 token3 >> token_value;
2559 uiuc_warnings_errors(1, *command_line);
2563 aeroPitchParts -> storeCommands (*command_line);
2568 if (check_float(linetoken3))
2569 token3 >> token_value;
2571 uiuc_warnings_errors(1, *command_line);
2573 Cm_df = token_value;
2574 Cm_df_clean = Cm_df;
2575 aeroPitchParts -> storeCommands (*command_line);
2580 Cmfa = aircraft_directory + linetoken3;
2581 token4 >> token_value_convert1;
2582 token5 >> token_value_convert2;
2583 convert_y = uiuc_convert(token_value_convert1);
2584 convert_x = uiuc_convert(token_value_convert2);
2585 /* call 1D File Reader with file name (Cmfa) and conversion
2586 factors; function returns array of alphas (aArray) and
2587 corresponding Cm values (CmArray) and max number of
2588 terms in arrays (nAlpha) */
2589 uiuc_1DdataFileReader(Cmfa,
2593 aeroPitchParts -> storeCommands (*command_line);
2598 Cmfade = aircraft_directory + linetoken3;
2599 token4 >> token_value_convert1;
2600 token5 >> token_value_convert2;
2601 token6 >> token_value_convert3;
2602 convert_z = uiuc_convert(token_value_convert1);
2603 convert_x = uiuc_convert(token_value_convert2);
2604 convert_y = uiuc_convert(token_value_convert3);
2605 /* call 2D File Reader with file name (Cmfade) and
2606 conversion factors; function returns array of
2607 elevator deflections (deArray) and corresponding
2608 alpha (aArray) and delta Cm (CmArray) values and
2609 max number of terms in alpha arrays (nAlphaArray)
2610 and deflection array (nde) */
2611 uiuc_2DdataFileReader(Cmfade,
2617 aeroPitchParts -> storeCommands (*command_line);
2622 Cmfdf = aircraft_directory + linetoken3;
2623 token4 >> token_value_convert1;
2624 token5 >> token_value_convert2;
2625 convert_y = uiuc_convert(token_value_convert1);
2626 convert_x = uiuc_convert(token_value_convert2);
2627 /* call 1D File Reader with file name (Cmfdf) and conversion
2628 factors; function returns array of dfs (dfArray) and
2629 corresponding Cm values (CmArray) and max number of
2630 terms in arrays (ndf) */
2631 uiuc_1DdataFileReader(Cmfdf,
2635 aeroPitchParts -> storeCommands (*command_line);
2640 Cmfadf = aircraft_directory + linetoken3;
2641 token4 >> token_value_convert1;
2642 token5 >> token_value_convert2;
2643 token6 >> token_value_convert3;
2644 convert_z = uiuc_convert(token_value_convert1);
2645 convert_x = uiuc_convert(token_value_convert2);
2646 convert_y = uiuc_convert(token_value_convert3);
2647 /* call 2D File Reader with file name (Cmfadf) and
2648 conversion factors; function returns array of
2649 flap deflections (dfArray) and corresponding
2650 alpha (aArray) and delta Cm (CmArray) values and
2651 max number of terms in alpha arrays (nAlphaArray)
2652 and deflection array (ndf) */
2653 uiuc_2DdataFileReader(Cmfadf,
2659 aeroPitchParts -> storeCommands (*command_line);
2662 case Cmfabetaf_flag:
2664 int Cmfabetaf_index, i;
2665 string Cmfabetaf_file;
2667 Cmfabetaf_file = aircraft_directory + linetoken3;
2668 token4 >> Cmfabetaf_index;
2669 if (Cmfabetaf_index < 0 || Cmfabetaf_index >= 30)
2670 uiuc_warnings_errors(1, *command_line);
2671 if (Cmfabetaf_index > Cmfabetaf_nf)
2672 Cmfabetaf_nf = Cmfabetaf_index;
2673 token5 >> flap_value;
2674 Cmfabetaf_fArray[Cmfabetaf_index] = flap_value;
2675 token6 >> token_value_convert1;
2676 token7 >> token_value_convert2;
2677 token8 >> token_value_convert3;
2678 token9 >> Cmfabetaf_nice;
2679 convert_z = uiuc_convert(token_value_convert1);
2680 convert_x = uiuc_convert(token_value_convert2);
2681 convert_y = uiuc_convert(token_value_convert3);
2682 /* call 2D File Reader with file name (Cmfabetaf_file) and
2683 conversion factors; function returns array of
2684 elevator deflections (deArray) and corresponding
2685 alpha (aArray) and delta CZ (CZArray) values and
2686 max number of terms in alpha arrays (nAlphaArray)
2687 and delfection array (nde) */
2688 uiuc_2DdataFileReader(Cmfabetaf_file,
2694 d_2_to_3(datafile_xArray, Cmfabetaf_aArray, Cmfabetaf_index);
2695 d_1_to_2(datafile_yArray, Cmfabetaf_betaArray, Cmfabetaf_index);
2696 d_2_to_3(datafile_zArray, Cmfabetaf_CmArray, Cmfabetaf_index);
2697 i_1_to_2(datafile_nxArray, Cmfabetaf_nAlphaArray, Cmfabetaf_index);
2698 Cmfabetaf_nbeta[Cmfabetaf_index] = datafile_ny;
2699 if (Cmfabetaf_first==true)
2701 if (Cmfabetaf_nice == 1)
2703 Cmfabetaf_na_nice = datafile_nxArray[1];
2704 Cmfabetaf_nb_nice = datafile_ny;
2705 d_1_to_1(datafile_yArray, Cmfabetaf_bArray_nice);
2706 for (i=1; i<=Cmfabetaf_na_nice; i++)
2707 Cmfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2709 aeroPitchParts -> storeCommands (*command_line);
2710 Cmfabetaf_first=false;
2716 int Cmfadef_index, i;
2717 string Cmfadef_file;
2719 Cmfadef_file = aircraft_directory + linetoken3;
2720 token4 >> Cmfadef_index;
2721 if (Cmfadef_index < 0 || Cmfadef_index >= 30)
2722 uiuc_warnings_errors(1, *command_line);
2723 if (Cmfadef_index > Cmfadef_nf)
2724 Cmfadef_nf = Cmfadef_index;
2725 token5 >> flap_value;
2726 Cmfadef_fArray[Cmfadef_index] = flap_value;
2727 token6 >> token_value_convert1;
2728 token7 >> token_value_convert2;
2729 token8 >> token_value_convert3;
2730 token9 >> Cmfadef_nice;
2731 convert_z = uiuc_convert(token_value_convert1);
2732 convert_x = uiuc_convert(token_value_convert2);
2733 convert_y = uiuc_convert(token_value_convert3);
2734 /* call 2D File Reader with file name (Cmfadef_file) and
2735 conversion factors; function returns array of
2736 elevator deflections (deArray) and corresponding
2737 alpha (aArray) and delta CZ (CZArray) values and
2738 max number of terms in alpha arrays (nAlphaArray)
2739 and delfection array (nde) */
2740 uiuc_2DdataFileReader(Cmfadef_file,
2746 d_2_to_3(datafile_xArray, Cmfadef_aArray, Cmfadef_index);
2747 d_1_to_2(datafile_yArray, Cmfadef_deArray, Cmfadef_index);
2748 d_2_to_3(datafile_zArray, Cmfadef_CmArray, Cmfadef_index);
2749 i_1_to_2(datafile_nxArray, Cmfadef_nAlphaArray, Cmfadef_index);
2750 Cmfadef_nde[Cmfadef_index] = datafile_ny;
2751 if (Cmfadef_first==true)
2753 if (Cmfadef_nice == 1)
2755 Cmfadef_na_nice = datafile_nxArray[1];
2756 Cmfadef_nde_nice = datafile_ny;
2757 d_1_to_1(datafile_yArray, Cmfadef_deArray_nice);
2758 for (i=1; i<=Cmfadef_na_nice; i++)
2759 Cmfadef_aArray_nice[i] = datafile_xArray[1][i];
2761 aeroPitchParts -> storeCommands (*command_line);
2762 Cmfadef_first=false;
2768 int Cmfaqf_index, i;
2771 Cmfaqf_file = aircraft_directory + linetoken3;
2772 token4 >> Cmfaqf_index;
2773 if (Cmfaqf_index < 0 || Cmfaqf_index >= 30)
2774 uiuc_warnings_errors(1, *command_line);
2775 if (Cmfaqf_index > Cmfaqf_nf)
2776 Cmfaqf_nf = Cmfaqf_index;
2777 token5 >> flap_value;
2778 Cmfaqf_fArray[Cmfaqf_index] = flap_value;
2779 token6 >> token_value_convert1;
2780 token7 >> token_value_convert2;
2781 token8 >> token_value_convert3;
2782 token9 >> Cmfaqf_nice;
2783 convert_z = uiuc_convert(token_value_convert1);
2784 convert_x = uiuc_convert(token_value_convert2);
2785 convert_y = uiuc_convert(token_value_convert3);
2786 /* call 2D File Reader with file name (Cmfaqf_file) and
2787 conversion factors; function returns array of
2788 elevator deflections (deArray) and corresponding
2789 alpha (aArray) and delta CZ (CZArray) values and
2790 max number of terms in alpha arrays (nAlphaArray)
2791 and delfection array (nde) */
2792 uiuc_2DdataFileReader(Cmfaqf_file,
2798 d_2_to_3(datafile_xArray, Cmfaqf_aArray, Cmfaqf_index);
2799 d_1_to_2(datafile_yArray, Cmfaqf_qArray, Cmfaqf_index);
2800 d_2_to_3(datafile_zArray, Cmfaqf_CmArray, Cmfaqf_index);
2801 i_1_to_2(datafile_nxArray, Cmfaqf_nAlphaArray, Cmfaqf_index);
2802 Cmfaqf_nq[Cmfaqf_index] = datafile_ny;
2803 if (Cmfaqf_first==true)
2805 if (Cmfaqf_nice == 1)
2807 Cmfaqf_na_nice = datafile_nxArray[1];
2808 Cmfaqf_nq_nice = datafile_ny;
2809 d_1_to_1(datafile_yArray, Cmfaqf_qArray_nice);
2810 for (i=1; i<=Cmfaqf_na_nice; i++)
2811 Cmfaqf_aArray_nice[i] = datafile_xArray[1][i];
2813 aeroPitchParts -> storeCommands (*command_line);
2821 uiuc_warnings_errors(2, *command_line);
2828 void parse_CY( const string& linetoken2, const string& linetoken3,
2829 const string& linetoken4, const string& linetoken5,
2830 const string& linetoken6, const string& linetoken7,
2831 const string& linetoken8, const string& linetoken9,
2832 const string& aircraft_directory,
2833 bool &CYfabetaf_first, bool &CYfadaf_first,
2834 bool &CYfadrf_first, bool &CYfapf_first,
2835 bool &CYfarf_first, LIST command_line ) {
2837 int token_value_convert1, token_value_convert2, token_value_convert3;
2838 double datafile_xArray[100][100], datafile_yArray[100];
2839 double datafile_zArray[100][100];
2840 int datafile_nxArray[100], datafile_ny;
2841 istrstream token3(linetoken3.c_str());
2842 istrstream token4(linetoken4.c_str());
2843 istrstream token5(linetoken5.c_str());
2844 istrstream token6(linetoken6.c_str());
2845 istrstream token7(linetoken7.c_str());
2846 istrstream token8(linetoken8.c_str());
2847 istrstream token9(linetoken9.c_str());
2849 switch(CY_map[linetoken2])
2853 if (check_float(linetoken3))
2854 token3 >> token_value;
2856 uiuc_warnings_errors(1, *command_line);
2860 aeroSideforceParts -> storeCommands (*command_line);
2865 if (check_float(linetoken3))
2866 token3 >> token_value;
2868 uiuc_warnings_errors(1, *command_line);
2870 CY_beta = token_value;
2871 CY_beta_clean = CY_beta;
2872 aeroSideforceParts -> storeCommands (*command_line);
2877 if (check_float(linetoken3))
2878 token3 >> token_value;
2880 uiuc_warnings_errors(1, *command_line);
2884 aeroSideforceParts -> storeCommands (*command_line);
2889 if (check_float(linetoken3))
2890 token3 >> token_value;
2892 uiuc_warnings_errors(1, *command_line);
2896 aeroSideforceParts -> storeCommands (*command_line);
2901 if (check_float(linetoken3))
2902 token3 >> token_value;
2904 uiuc_warnings_errors(1, *command_line);
2906 CY_da = token_value;
2907 CY_da_clean = CY_da;
2908 aeroSideforceParts -> storeCommands (*command_line);
2913 if (check_float(linetoken3))
2914 token3 >> token_value;
2916 uiuc_warnings_errors(2, *command_line);
2918 CY_dr = token_value;
2919 CY_dr_clean = CY_dr;
2920 aeroSideforceParts -> storeCommands (*command_line);
2925 if (check_float(linetoken3))
2926 token3 >> token_value;
2928 uiuc_warnings_errors(2, *command_line);
2930 CY_dra = token_value;
2931 CY_dra_clean = CY_dra;
2932 aeroSideforceParts -> storeCommands (*command_line);
2937 if (check_float(linetoken3))
2938 token3 >> token_value;
2940 uiuc_warnings_errors(2, *command_line);
2942 CY_bdot = token_value;
2943 CY_bdot_clean = CY_bdot;
2944 aeroSideforceParts -> storeCommands (*command_line);
2949 CYfada = aircraft_directory + linetoken3;
2950 token4 >> token_value_convert1;
2951 token5 >> token_value_convert2;
2952 token6 >> token_value_convert3;
2953 convert_z = uiuc_convert(token_value_convert1);
2954 convert_x = uiuc_convert(token_value_convert2);
2955 convert_y = uiuc_convert(token_value_convert3);
2956 /* call 2D File Reader with file name (CYfada) and
2957 conversion factors; function returns array of
2958 aileron deflections (daArray) and corresponding
2959 alpha (aArray) and delta CY (CYArray) values and
2960 max number of terms in alpha arrays (nAlphaArray)
2961 and deflection array (nda) */
2962 uiuc_2DdataFileReader(CYfada,
2968 aeroSideforceParts -> storeCommands (*command_line);
2971 case CYfbetadr_flag:
2973 CYfbetadr = aircraft_directory + linetoken3;
2974 token4 >> token_value_convert1;
2975 token5 >> token_value_convert2;
2976 token6 >> token_value_convert3;
2977 convert_z = uiuc_convert(token_value_convert1);
2978 convert_x = uiuc_convert(token_value_convert2);
2979 convert_y = uiuc_convert(token_value_convert3);
2980 /* call 2D File Reader with file name (CYfbetadr) and
2981 conversion factors; function returns array of
2982 rudder deflections (drArray) and corresponding
2983 beta (betaArray) and delta CY (CYArray) values and
2984 max number of terms in beta arrays (nBetaArray)
2985 and deflection array (ndr) */
2986 uiuc_2DdataFileReader(CYfbetadr,
2987 CYfbetadr_betaArray,
2990 CYfbetadr_nBetaArray,
2992 aeroSideforceParts -> storeCommands (*command_line);
2995 case CYfabetaf_flag:
2997 int CYfabetaf_index, i;
2998 string CYfabetaf_file;
3000 CYfabetaf_file = aircraft_directory + linetoken3;
3001 token4 >> CYfabetaf_index;
3002 if (CYfabetaf_index < 0 || CYfabetaf_index >= 30)
3003 uiuc_warnings_errors(1, *command_line);
3004 if (CYfabetaf_index > CYfabetaf_nf)
3005 CYfabetaf_nf = CYfabetaf_index;
3006 token5 >> flap_value;
3007 CYfabetaf_fArray[CYfabetaf_index] = flap_value;
3008 token6 >> token_value_convert1;
3009 token7 >> token_value_convert2;
3010 token8 >> token_value_convert3;
3011 token9 >> CYfabetaf_nice;
3012 convert_z = uiuc_convert(token_value_convert1);
3013 convert_x = uiuc_convert(token_value_convert2);
3014 convert_y = uiuc_convert(token_value_convert3);
3015 /* call 2D File Reader with file name (CYfabetaf_file) and
3016 conversion factors; function returns array of
3017 elevator deflections (deArray) and corresponding
3018 alpha (aArray) and delta CZ (CZArray) values and
3019 max number of terms in alpha arrays (nAlphaArray)
3020 and delfection array (nde) */
3021 uiuc_2DdataFileReader(CYfabetaf_file,
3027 d_2_to_3(datafile_xArray, CYfabetaf_aArray, CYfabetaf_index);
3028 d_1_to_2(datafile_yArray, CYfabetaf_betaArray, CYfabetaf_index);
3029 d_2_to_3(datafile_zArray, CYfabetaf_CYArray, CYfabetaf_index);
3030 i_1_to_2(datafile_nxArray, CYfabetaf_nAlphaArray, CYfabetaf_index);
3031 CYfabetaf_nbeta[CYfabetaf_index] = datafile_ny;
3032 if (CYfabetaf_first==true)
3034 if (CYfabetaf_nice == 1)
3036 CYfabetaf_na_nice = datafile_nxArray[1];
3037 CYfabetaf_nb_nice = datafile_ny;
3038 d_1_to_1(datafile_yArray, CYfabetaf_bArray_nice);
3039 for (i=1; i<=CYfabetaf_na_nice; i++)
3040 CYfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3042 aeroSideforceParts -> storeCommands (*command_line);
3043 CYfabetaf_first=false;
3049 int CYfadaf_index, i;
3050 string CYfadaf_file;
3052 CYfadaf_file = aircraft_directory + linetoken3;
3053 token4 >> CYfadaf_index;
3054 if (CYfadaf_index < 0 || CYfadaf_index >= 30)
3055 uiuc_warnings_errors(1, *command_line);
3056 if (CYfadaf_index > CYfadaf_nf)
3057 CYfadaf_nf = CYfadaf_index;
3058 token5 >> flap_value;
3059 CYfadaf_fArray[CYfadaf_index] = flap_value;
3060 token6 >> token_value_convert1;
3061 token7 >> token_value_convert2;
3062 token8 >> token_value_convert3;
3063 token9 >> CYfadaf_nice;
3064 convert_z = uiuc_convert(token_value_convert1);
3065 convert_x = uiuc_convert(token_value_convert2);
3066 convert_y = uiuc_convert(token_value_convert3);
3067 /* call 2D File Reader with file name (CYfadaf_file) and
3068 conversion factors; function returns array of
3069 elevator deflections (deArray) and corresponding
3070 alpha (aArray) and delta CZ (CZArray) values and
3071 max number of terms in alpha arrays (nAlphaArray)
3072 and delfection array (nde) */
3073 uiuc_2DdataFileReader(CYfadaf_file,
3079 d_2_to_3(datafile_xArray, CYfadaf_aArray, CYfadaf_index);
3080 d_1_to_2(datafile_yArray, CYfadaf_daArray, CYfadaf_index);
3081 d_2_to_3(datafile_zArray, CYfadaf_CYArray, CYfadaf_index);
3082 i_1_to_2(datafile_nxArray, CYfadaf_nAlphaArray, CYfadaf_index);
3083 CYfadaf_nda[CYfadaf_index] = datafile_ny;
3084 if (CYfadaf_first==true)
3086 if (CYfadaf_nice == 1)
3088 CYfadaf_na_nice = datafile_nxArray[1];
3089 CYfadaf_nda_nice = datafile_ny;
3090 d_1_to_1(datafile_yArray, CYfadaf_daArray_nice);
3091 for (i=1; i<=CYfadaf_na_nice; i++)
3092 CYfadaf_aArray_nice[i] = datafile_xArray[1][i];
3094 aeroSideforceParts -> storeCommands (*command_line);
3095 CYfadaf_first=false;
3101 int CYfadrf_index, i;
3102 string CYfadrf_file;
3104 CYfadrf_file = aircraft_directory + linetoken3;
3105 token4 >> CYfadrf_index;
3106 if (CYfadrf_index < 0 || CYfadrf_index >= 30)
3107 uiuc_warnings_errors(1, *command_line);
3108 if (CYfadrf_index > CYfadrf_nf)
3109 CYfadrf_nf = CYfadrf_index;
3110 token5 >> flap_value;
3111 CYfadrf_fArray[CYfadrf_index] = flap_value;
3112 token6 >> token_value_convert1;
3113 token7 >> token_value_convert2;
3114 token8 >> token_value_convert3;
3115 token9 >> CYfadrf_nice;
3116 convert_z = uiuc_convert(token_value_convert1);
3117 convert_x = uiuc_convert(token_value_convert2);
3118 convert_y = uiuc_convert(token_value_convert3);
3119 /* call 2D File Reader with file name (CYfadrf_file) and
3120 conversion factors; function returns array of
3121 elevator deflections (deArray) and corresponding
3122 alpha (aArray) and delta CZ (CZArray) values and
3123 max number of terms in alpha arrays (nAlphaArray)
3124 and delfection array (nde) */
3125 uiuc_2DdataFileReader(CYfadrf_file,
3131 d_2_to_3(datafile_xArray, CYfadrf_aArray, CYfadrf_index);
3132 d_1_to_2(datafile_yArray, CYfadrf_drArray, CYfadrf_index);
3133 d_2_to_3(datafile_zArray, CYfadrf_CYArray, CYfadrf_index);
3134 i_1_to_2(datafile_nxArray, CYfadrf_nAlphaArray, CYfadrf_index);
3135 CYfadrf_ndr[CYfadrf_index] = datafile_ny;
3136 if (CYfadrf_first==true)
3138 if (CYfadrf_nice == 1)
3140 CYfadrf_na_nice = datafile_nxArray[1];
3141 CYfadrf_ndr_nice = datafile_ny;
3142 d_1_to_1(datafile_yArray, CYfadrf_drArray_nice);
3143 for (i=1; i<=CYfadrf_na_nice; i++)
3144 CYfadrf_aArray_nice[i] = datafile_xArray[1][i];
3146 aeroSideforceParts -> storeCommands (*command_line);
3147 CYfadrf_first=false;
3153 int CYfapf_index, i;
3156 CYfapf_file = aircraft_directory + linetoken3;
3157 token4 >> CYfapf_index;
3158 if (CYfapf_index < 0 || CYfapf_index >= 30)
3159 uiuc_warnings_errors(1, *command_line);
3160 if (CYfapf_index > CYfapf_nf)
3161 CYfapf_nf = CYfapf_index;
3162 token5 >> flap_value;
3163 CYfapf_fArray[CYfapf_index] = flap_value;
3164 token6 >> token_value_convert1;
3165 token7 >> token_value_convert2;
3166 token8 >> token_value_convert3;
3167 token9 >> CYfapf_nice;
3168 convert_z = uiuc_convert(token_value_convert1);
3169 convert_x = uiuc_convert(token_value_convert2);
3170 convert_y = uiuc_convert(token_value_convert3);
3171 /* call 2D File Reader with file name (CYfapf_file) and
3172 conversion factors; function returns array of
3173 elevator deflections (deArray) and corresponding
3174 alpha (aArray) and delta CZ (CZArray) values and
3175 max number of terms in alpha arrays (nAlphaArray)
3176 and delfection array (nde) */
3177 uiuc_2DdataFileReader(CYfapf_file,
3183 d_2_to_3(datafile_xArray, CYfapf_aArray, CYfapf_index);
3184 d_1_to_2(datafile_yArray, CYfapf_pArray, CYfapf_index);
3185 d_2_to_3(datafile_zArray, CYfapf_CYArray, CYfapf_index);
3186 i_1_to_2(datafile_nxArray, CYfapf_nAlphaArray, CYfapf_index);
3187 CYfapf_np[CYfapf_index] = datafile_ny;
3188 if (CYfapf_first==true)
3190 if (CYfapf_nice == 1)
3192 CYfapf_na_nice = datafile_nxArray[1];
3193 CYfapf_np_nice = datafile_ny;
3194 d_1_to_1(datafile_yArray, CYfapf_pArray_nice);
3195 for (i=1; i<=CYfapf_na_nice; i++)
3196 CYfapf_aArray_nice[i] = datafile_xArray[1][i];
3198 aeroSideforceParts -> storeCommands (*command_line);
3205 int CYfarf_index, i;
3208 CYfarf_file = aircraft_directory + linetoken3;
3209 token4 >> CYfarf_index;
3210 if (CYfarf_index < 0 || CYfarf_index >= 30)
3211 uiuc_warnings_errors(1, *command_line);
3212 if (CYfarf_index > CYfarf_nf)
3213 CYfarf_nf = CYfarf_index;
3214 token5 >> flap_value;
3215 CYfarf_fArray[CYfarf_index] = flap_value;
3216 token6 >> token_value_convert1;
3217 token7 >> token_value_convert2;
3218 token8 >> token_value_convert3;
3219 token9 >> CYfarf_nice;
3220 convert_z = uiuc_convert(token_value_convert1);
3221 convert_x = uiuc_convert(token_value_convert2);
3222 convert_y = uiuc_convert(token_value_convert3);
3223 /* call 2D File Reader with file name (CYfarf_file) and
3224 conversion factors; function returns array of
3225 elevator deflections (deArray) and corresponding
3226 alpha (aArray) and delta CZ (CZArray) values and
3227 max number of terms in alpha arrays (nAlphaArray)
3228 and delfection array (nde) */
3229 uiuc_2DdataFileReader(CYfarf_file,
3235 d_2_to_3(datafile_xArray, CYfarf_aArray, CYfarf_index);
3236 d_1_to_2(datafile_yArray, CYfarf_rArray, CYfarf_index);
3237 d_2_to_3(datafile_zArray, CYfarf_CYArray, CYfarf_index);
3238 i_1_to_2(datafile_nxArray, CYfarf_nAlphaArray, CYfarf_index);
3239 CYfarf_nr[CYfarf_index] = datafile_ny;
3240 if (CYfarf_first==true)
3242 if (CYfarf_nice == 1)
3244 CYfarf_na_nice = datafile_nxArray[1];
3245 CYfarf_nr_nice = datafile_ny;
3246 d_1_to_1(datafile_yArray, CYfarf_rArray_nice);
3247 for (i=1; i<=CYfarf_na_nice; i++)
3248 CYfarf_aArray_nice[i] = datafile_xArray[1][i];
3250 aeroSideforceParts -> storeCommands (*command_line);
3258 uiuc_warnings_errors(2, *command_line);
3264 void parse_Cl( const string& linetoken2, const string& linetoken3,
3265 const string& linetoken4, const string& linetoken5,
3266 const string& linetoken6, const string& linetoken7,
3267 const string& linetoken8, const string& linetoken9,
3268 const string& aircraft_directory,
3269 bool &Clfabetaf_first, bool &Clfadaf_first,
3270 bool &Clfadrf_first, bool &Clfapf_first,
3271 bool &Clfarf_first, LIST command_line ) {
3273 int token_value_convert1, token_value_convert2, token_value_convert3;
3274 double datafile_xArray[100][100], datafile_yArray[100];
3275 double datafile_zArray[100][100];
3276 int datafile_nxArray[100], datafile_ny;
3277 istrstream token3(linetoken3.c_str());
3278 istrstream token4(linetoken4.c_str());
3279 istrstream token5(linetoken5.c_str());
3280 istrstream token6(linetoken6.c_str());
3281 istrstream token7(linetoken7.c_str());
3282 istrstream token8(linetoken8.c_str());
3283 istrstream token9(linetoken9.c_str());
3285 switch(Cl_map[linetoken2])
3289 if (check_float(linetoken3))
3290 token3 >> token_value;
3292 uiuc_warnings_errors(1, *command_line);
3296 aeroRollParts -> storeCommands (*command_line);
3301 if (check_float(linetoken3))
3302 token3 >> token_value;
3304 uiuc_warnings_errors(1, *command_line);
3306 Cl_beta = token_value;
3307 Cl_beta_clean = Cl_beta;
3308 aeroRollParts -> storeCommands (*command_line);
3313 if (check_float(linetoken3))
3314 token3 >> token_value;
3316 uiuc_warnings_errors(1, *command_line);
3320 aeroRollParts -> storeCommands (*command_line);
3325 if (check_float(linetoken3))
3326 token3 >> token_value;
3328 uiuc_warnings_errors(1, *command_line);
3332 aeroRollParts -> storeCommands (*command_line);
3337 if (check_float(linetoken3))
3338 token3 >> token_value;
3340 uiuc_warnings_errors(1, *command_line);
3342 Cl_da = token_value;
3343 Cl_da_clean = Cl_da;
3344 aeroRollParts -> storeCommands (*command_line);
3349 if (check_float(linetoken3))
3350 token3 >> token_value;
3352 uiuc_warnings_errors(1, *command_line);
3354 Cl_dr = token_value;
3355 Cl_dr_clean = Cl_dr;
3356 aeroRollParts -> storeCommands (*command_line);
3361 if (check_float(linetoken3))
3362 token3 >> token_value;
3364 uiuc_warnings_errors(1, *command_line);
3366 Cl_daa = token_value;
3367 Cl_daa_clean = Cl_daa;
3368 aeroRollParts -> storeCommands (*command_line);
3373 Clfada = aircraft_directory + linetoken3;
3374 token4 >> token_value_convert1;
3375 token5 >> token_value_convert2;
3376 token6 >> token_value_convert3;
3377 convert_z = uiuc_convert(token_value_convert1);
3378 convert_x = uiuc_convert(token_value_convert2);
3379 convert_y = uiuc_convert(token_value_convert3);
3380 /* call 2D File Reader with file name (Clfada) and
3381 conversion factors; function returns array of
3382 aileron deflections (daArray) and corresponding
3383 alpha (aArray) and delta Cl (ClArray) values and
3384 max number of terms in alpha arrays (nAlphaArray)
3385 and deflection array (nda) */
3386 uiuc_2DdataFileReader(Clfada,
3392 aeroRollParts -> storeCommands (*command_line);
3395 case Clfbetadr_flag:
3397 Clfbetadr = aircraft_directory + linetoken3;
3398 token4 >> token_value_convert1;
3399 token5 >> token_value_convert2;
3400 token6 >> token_value_convert3;
3401 convert_z = uiuc_convert(token_value_convert1);
3402 convert_x = uiuc_convert(token_value_convert2);
3403 convert_y = uiuc_convert(token_value_convert3);
3404 /* call 2D File Reader with file name (Clfbetadr) and
3405 conversion factors; function returns array of
3406 rudder deflections (drArray) and corresponding
3407 beta (betaArray) and delta Cl (ClArray) values and
3408 max number of terms in beta arrays (nBetaArray)
3409 and deflection array (ndr) */
3410 uiuc_2DdataFileReader(Clfbetadr,
3411 Clfbetadr_betaArray,
3414 Clfbetadr_nBetaArray,
3416 aeroRollParts -> storeCommands (*command_line);
3419 case Clfabetaf_flag:
3421 int Clfabetaf_index, i;
3422 string Clfabetaf_file;
3424 Clfabetaf_file = aircraft_directory + linetoken3;
3425 token4 >> Clfabetaf_index;
3426 if (Clfabetaf_index < 0 || Clfabetaf_index >= 100)
3427 uiuc_warnings_errors(1, *command_line);
3428 if (Clfabetaf_index > Clfabetaf_nf)
3429 Clfabetaf_nf = Clfabetaf_index;
3430 token5 >> flap_value;
3431 Clfabetaf_fArray[Clfabetaf_index] = flap_value;
3432 token6 >> token_value_convert1;
3433 token7 >> token_value_convert2;
3434 token8 >> token_value_convert3;
3435 token9 >> Clfabetaf_nice;
3436 convert_z = uiuc_convert(token_value_convert1);
3437 convert_x = uiuc_convert(token_value_convert2);
3438 convert_y = uiuc_convert(token_value_convert3);
3439 /* call 2D File Reader with file name (Clfabetaf_file) and
3440 conversion factors; function returns array of
3441 elevator deflections (deArray) and corresponding
3442 alpha (aArray) and delta CZ (CZArray) values and
3443 max number of terms in alpha arrays (nAlphaArray)
3444 and delfection array (nde) */
3445 uiuc_2DdataFileReader(Clfabetaf_file,
3451 d_2_to_3(datafile_xArray, Clfabetaf_aArray, Clfabetaf_index);
3452 d_1_to_2(datafile_yArray, Clfabetaf_betaArray, Clfabetaf_index);
3453 d_2_to_3(datafile_zArray, Clfabetaf_ClArray, Clfabetaf_index);
3454 i_1_to_2(datafile_nxArray, Clfabetaf_nAlphaArray, Clfabetaf_index);
3455 Clfabetaf_nbeta[Clfabetaf_index] = datafile_ny;
3456 if (Clfabetaf_first==true)
3458 if (Clfabetaf_nice == 1)
3460 Clfabetaf_na_nice = datafile_nxArray[1];
3461 Clfabetaf_nb_nice = datafile_ny;
3462 d_1_to_1(datafile_yArray, Clfabetaf_bArray_nice);
3463 for (i=1; i<=Clfabetaf_na_nice; i++)
3464 Clfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3466 aeroRollParts -> storeCommands (*command_line);
3467 Clfabetaf_first=false;
3473 int Clfadaf_index, i;
3474 string Clfadaf_file;
3476 Clfadaf_file = aircraft_directory + linetoken3;
3477 token4 >> Clfadaf_index;
3478 if (Clfadaf_index < 0 || Clfadaf_index >= 100)
3479 uiuc_warnings_errors(1, *command_line);
3480 if (Clfadaf_index > Clfadaf_nf)
3481 Clfadaf_nf = Clfadaf_index;
3482 token5 >> flap_value;
3483 Clfadaf_fArray[Clfadaf_index] = flap_value;
3484 token6 >> token_value_convert1;
3485 token7 >> token_value_convert2;
3486 token8 >> token_value_convert3;
3487 token9 >> Clfadaf_nice;
3488 convert_z = uiuc_convert(token_value_convert1);
3489 convert_x = uiuc_convert(token_value_convert2);
3490 convert_y = uiuc_convert(token_value_convert3);
3491 /* call 2D File Reader with file name (Clfadaf_file) and
3492 conversion factors; function returns array of
3493 elevator deflections (deArray) and corresponding
3494 alpha (aArray) and delta CZ (CZArray) values and
3495 max number of terms in alpha arrays (nAlphaArray)
3496 and delfection array (nde) */
3497 uiuc_2DdataFileReader(Clfadaf_file,
3503 d_2_to_3(datafile_xArray, Clfadaf_aArray, Clfadaf_index);
3504 d_1_to_2(datafile_yArray, Clfadaf_daArray, Clfadaf_index);
3505 d_2_to_3(datafile_zArray, Clfadaf_ClArray, Clfadaf_index);
3506 i_1_to_2(datafile_nxArray, Clfadaf_nAlphaArray, Clfadaf_index);
3507 Clfadaf_nda[Clfadaf_index] = datafile_ny;
3508 if (Clfadaf_first==true)
3510 if (Clfadaf_nice == 1)
3512 Clfadaf_na_nice = datafile_nxArray[1];
3513 Clfadaf_nda_nice = datafile_ny;
3514 d_1_to_1(datafile_yArray, Clfadaf_daArray_nice);
3515 for (i=1; i<=Clfadaf_na_nice; i++)
3516 Clfadaf_aArray_nice[i] = datafile_xArray[1][i];
3518 aeroRollParts -> storeCommands (*command_line);
3519 Clfadaf_first=false;
3525 int Clfadrf_index, i;
3526 string Clfadrf_file;
3528 Clfadrf_file = aircraft_directory + linetoken3;
3529 token4 >> Clfadrf_index;
3530 if (Clfadrf_index < 0 || Clfadrf_index >= 100)
3531 uiuc_warnings_errors(1, *command_line);
3532 if (Clfadrf_index > Clfadrf_nf)
3533 Clfadrf_nf = Clfadrf_index;
3534 token5 >> flap_value;
3535 Clfadrf_fArray[Clfadrf_index] = flap_value;
3536 token6 >> token_value_convert1;
3537 token7 >> token_value_convert2;
3538 token8 >> token_value_convert3;
3539 token9 >> Clfadrf_nice;
3540 convert_z = uiuc_convert(token_value_convert1);
3541 convert_x = uiuc_convert(token_value_convert2);
3542 convert_y = uiuc_convert(token_value_convert3);
3543 /* call 2D File Reader with file name (Clfadrf_file) and
3544 conversion factors; function returns array of
3545 elevator deflections (deArray) and corresponding
3546 alpha (aArray) and delta CZ (CZArray) values and
3547 max number of terms in alpha arrays (nAlphaArray)
3548 and delfection array (nde) */
3549 uiuc_2DdataFileReader(Clfadrf_file,
3555 d_2_to_3(datafile_xArray, Clfadrf_aArray, Clfadrf_index);
3556 d_1_to_2(datafile_yArray, Clfadrf_drArray, Clfadrf_index);
3557 d_2_to_3(datafile_zArray, Clfadrf_ClArray, Clfadrf_index);
3558 i_1_to_2(datafile_nxArray, Clfadrf_nAlphaArray, Clfadrf_index);
3559 Clfadrf_ndr[Clfadrf_index] = datafile_ny;
3560 if (Clfadrf_first==true)
3562 if (Clfadrf_nice == 1)
3564 Clfadrf_na_nice = datafile_nxArray[1];
3565 Clfadrf_ndr_nice = datafile_ny;
3566 d_1_to_1(datafile_yArray, Clfadrf_drArray_nice);
3567 for (i=1; i<=Clfadrf_na_nice; i++)
3568 Clfadrf_aArray_nice[i] = datafile_xArray[1][i];
3570 aeroRollParts -> storeCommands (*command_line);
3571 Clfadrf_first=false;
3577 int Clfapf_index, i;
3580 Clfapf_file = aircraft_directory + linetoken3;
3581 token4 >> Clfapf_index;
3582 if (Clfapf_index < 0 || Clfapf_index >= 100)
3583 uiuc_warnings_errors(1, *command_line);
3584 if (Clfapf_index > Clfapf_nf)
3585 Clfapf_nf = Clfapf_index;
3586 token5 >> flap_value;
3587 Clfapf_fArray[Clfapf_index] = flap_value;
3588 token6 >> token_value_convert1;
3589 token7 >> token_value_convert2;
3590 token8 >> token_value_convert3;
3591 token9 >> Clfapf_nice;
3592 convert_z = uiuc_convert(token_value_convert1);
3593 convert_x = uiuc_convert(token_value_convert2);
3594 convert_y = uiuc_convert(token_value_convert3);
3595 /* call 2D File Reader with file name (Clfapf_file) and
3596 conversion factors; function returns array of
3597 elevator deflections (deArray) and corresponding
3598 alpha (aArray) and delta CZ (CZArray) values and
3599 max number of terms in alpha arrays (nAlphaArray)
3600 and delfection array (nde) */
3601 uiuc_2DdataFileReader(Clfapf_file,
3607 d_2_to_3(datafile_xArray, Clfapf_aArray, Clfapf_index);
3608 d_1_to_2(datafile_yArray, Clfapf_pArray, Clfapf_index);
3609 d_2_to_3(datafile_zArray, Clfapf_ClArray, Clfapf_index);
3610 i_1_to_2(datafile_nxArray, Clfapf_nAlphaArray, Clfapf_index);
3611 Clfapf_np[Clfapf_index] = datafile_ny;
3612 if (Clfapf_first==true)
3614 if (Clfapf_nice == 1)
3616 Clfapf_na_nice = datafile_nxArray[1];
3617 Clfapf_np_nice = datafile_ny;
3618 d_1_to_1(datafile_yArray, Clfapf_pArray_nice);
3619 for (i=1; i<=Clfapf_na_nice; i++)
3620 Clfapf_aArray_nice[i] = datafile_xArray[1][i];
3622 aeroRollParts -> storeCommands (*command_line);
3629 int Clfarf_index, i;
3632 Clfarf_file = aircraft_directory + linetoken3;
3633 token4 >> Clfarf_index;
3634 if (Clfarf_index < 0 || Clfarf_index >= 100)
3635 uiuc_warnings_errors(1, *command_line);
3636 if (Clfarf_index > Clfarf_nf)
3637 Clfarf_nf = Clfarf_index;
3638 token5 >> flap_value;
3639 Clfarf_fArray[Clfarf_index] = flap_value;
3640 token6 >> token_value_convert1;
3641 token7 >> token_value_convert2;
3642 token8 >> token_value_convert3;
3643 token9 >> Clfarf_nice;
3644 convert_z = uiuc_convert(token_value_convert1);
3645 convert_x = uiuc_convert(token_value_convert2);
3646 convert_y = uiuc_convert(token_value_convert3);
3647 /* call 2D File Reader with file name (Clfarf_file) and
3648 conversion factors; function returns array of
3649 elevator deflections (deArray) and corresponding
3650 alpha (aArray) and delta CZ (CZArray) values and
3651 max number of terms in alpha arrays (nAlphaArray)
3652 and delfection array (nde) */
3653 uiuc_2DdataFileReader(Clfarf_file,
3659 d_2_to_3(datafile_xArray, Clfarf_aArray, Clfarf_index);
3660 d_1_to_2(datafile_yArray, Clfarf_rArray, Clfarf_index);
3661 d_2_to_3(datafile_zArray, Clfarf_ClArray, Clfarf_index);
3662 i_1_to_2(datafile_nxArray, Clfarf_nAlphaArray, Clfarf_index);
3663 Clfarf_nr[Clfarf_index] = datafile_ny;
3664 if (Clfarf_first==true)
3666 if (Clfarf_nice == 1)
3668 Clfarf_na_nice = datafile_nxArray[1];
3669 Clfarf_nr_nice = datafile_ny;
3670 d_1_to_1(datafile_yArray, Clfarf_rArray_nice);
3671 for (i=1; i<=Clfarf_na_nice; i++)
3672 Clfarf_aArray_nice[i] = datafile_xArray[1][i];
3674 aeroRollParts -> storeCommands (*command_line);
3682 uiuc_warnings_errors(2, *command_line);
3689 void parse_Cn( const string& linetoken2, const string& linetoken3,
3690 const string& linetoken4, const string& linetoken5,
3691 const string& linetoken6, const string& linetoken7,
3692 const string& linetoken8, const string& linetoken9,
3693 const string& aircraft_directory,
3694 bool &Cnfabetaf_first, bool &Cnfadaf_first,
3695 bool &Cnfadrf_first, bool &Cnfapf_first,
3696 bool &Cnfarf_first, LIST command_line ) {
3698 int token_value_convert1, token_value_convert2, token_value_convert3;
3699 double datafile_xArray[100][100], datafile_yArray[100];
3700 double datafile_zArray[100][100];
3701 int datafile_nxArray[100], datafile_ny;
3702 istrstream token3(linetoken3.c_str());
3703 istrstream token4(linetoken4.c_str());
3704 istrstream token5(linetoken5.c_str());
3705 istrstream token6(linetoken6.c_str());
3706 istrstream token7(linetoken7.c_str());
3707 istrstream token8(linetoken8.c_str());
3708 istrstream token9(linetoken9.c_str());
3710 switch(Cn_map[linetoken2])
3714 if (check_float(linetoken3))
3715 token3 >> token_value;
3717 uiuc_warnings_errors(1, *command_line);
3721 aeroYawParts -> storeCommands (*command_line);
3726 if (check_float(linetoken3))
3727 token3 >> token_value;
3729 uiuc_warnings_errors(1, *command_line);
3731 Cn_beta = token_value;
3732 Cn_beta_clean = Cn_beta;
3733 aeroYawParts -> storeCommands (*command_line);
3738 if (check_float(linetoken3))
3739 token3 >> token_value;
3741 uiuc_warnings_errors(1, *command_line);
3745 aeroYawParts -> storeCommands (*command_line);
3750 if (check_float(linetoken3))
3751 token3 >> token_value;
3753 uiuc_warnings_errors(1, *command_line);
3757 aeroYawParts -> storeCommands (*command_line);
3762 if (check_float(linetoken3))
3763 token3 >> token_value;
3765 uiuc_warnings_errors(1, *command_line);
3767 Cn_da = token_value;
3768 Cn_da_clean = Cn_da;
3769 aeroYawParts -> storeCommands (*command_line);
3774 if (check_float(linetoken3))
3775 token3 >> token_value;
3777 uiuc_warnings_errors(1, *command_line);
3779 Cn_dr = token_value;
3780 Cn_dr_clean = Cn_dr;
3781 aeroYawParts -> storeCommands (*command_line);
3786 if (check_float(linetoken3))
3787 token3 >> token_value;
3789 uiuc_warnings_errors(1, *command_line);
3793 aeroYawParts -> storeCommands (*command_line);
3798 if (check_float(linetoken3))
3799 token3 >> token_value;
3801 uiuc_warnings_errors(1, *command_line);
3803 Cn_b3 = token_value;
3804 Cn_b3_clean = Cn_b3;
3805 aeroYawParts -> storeCommands (*command_line);
3810 Cnfada = aircraft_directory + linetoken3;
3811 token4 >> token_value_convert1;
3812 token5 >> token_value_convert2;
3813 token6 >> token_value_convert3;
3814 convert_z = uiuc_convert(token_value_convert1);
3815 convert_x = uiuc_convert(token_value_convert2);
3816 convert_y = uiuc_convert(token_value_convert3);
3817 /* call 2D File Reader with file name (Cnfada) and
3818 conversion factors; function returns array of
3819 aileron deflections (daArray) and corresponding
3820 alpha (aArray) and delta Cn (CnArray) values and
3821 max number of terms in alpha arrays (nAlphaArray)
3822 and deflection array (nda) */
3823 uiuc_2DdataFileReader(Cnfada,
3829 aeroYawParts -> storeCommands (*command_line);
3832 case Cnfbetadr_flag:
3834 Cnfbetadr = aircraft_directory + linetoken3;
3835 token4 >> token_value_convert1;
3836 token5 >> token_value_convert2;
3837 token6 >> token_value_convert3;
3838 convert_z = uiuc_convert(token_value_convert1);
3839 convert_x = uiuc_convert(token_value_convert2);
3840 convert_y = uiuc_convert(token_value_convert3);
3841 /* call 2D File Reader with file name (Cnfbetadr) and
3842 conversion factors; function returns array of
3843 rudder deflections (drArray) and corresponding
3844 beta (betaArray) and delta Cn (CnArray) values and
3845 max number of terms in beta arrays (nBetaArray)
3846 and deflection array (ndr) */
3847 uiuc_2DdataFileReader(Cnfbetadr,
3848 Cnfbetadr_betaArray,
3851 Cnfbetadr_nBetaArray,
3853 aeroYawParts -> storeCommands (*command_line);
3856 case Cnfabetaf_flag:
3858 int Cnfabetaf_index, i;
3859 string Cnfabetaf_file;
3861 Cnfabetaf_file = aircraft_directory + linetoken3;
3862 token4 >> Cnfabetaf_index;
3863 if (Cnfabetaf_index < 0 || Cnfabetaf_index >= 100)
3864 uiuc_warnings_errors(1, *command_line);
3865 if (Cnfabetaf_index > Cnfabetaf_nf)
3866 Cnfabetaf_nf = Cnfabetaf_index;
3867 token5 >> flap_value;
3868 Cnfabetaf_fArray[Cnfabetaf_index] = flap_value;
3869 token6 >> token_value_convert1;
3870 token7 >> token_value_convert2;
3871 token8 >> token_value_convert3;
3872 token9 >> Cnfabetaf_nice;
3873 convert_z = uiuc_convert(token_value_convert1);
3874 convert_x = uiuc_convert(token_value_convert2);
3875 convert_y = uiuc_convert(token_value_convert3);
3876 /* call 2D File Reader with file name (Cnfabetaf_file) and
3877 conversion factors; function returns array of
3878 elevator deflections (deArray) and corresponding
3879 alpha (aArray) and delta CZ (CZArray) values and
3880 max number of terms in alpha arrays (nAlphaArray)
3881 and delfection array (nde) */
3882 uiuc_2DdataFileReader(Cnfabetaf_file,
3888 d_2_to_3(datafile_xArray, Cnfabetaf_aArray, Cnfabetaf_index);
3889 d_1_to_2(datafile_yArray, Cnfabetaf_betaArray, Cnfabetaf_index);
3890 d_2_to_3(datafile_zArray, Cnfabetaf_CnArray, Cnfabetaf_index);
3891 i_1_to_2(datafile_nxArray, Cnfabetaf_nAlphaArray, Cnfabetaf_index);
3892 Cnfabetaf_nbeta[Cnfabetaf_index] = datafile_ny;
3893 if (Cnfabetaf_first==true)
3895 if (Cnfabetaf_nice == 1)
3897 Cnfabetaf_na_nice = datafile_nxArray[1];
3898 Cnfabetaf_nb_nice = datafile_ny;
3899 d_1_to_1(datafile_yArray, Cnfabetaf_bArray_nice);
3900 for (i=1; i<=Cnfabetaf_na_nice; i++)
3901 Cnfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3903 aeroYawParts -> storeCommands (*command_line);
3904 Cnfabetaf_first=false;
3910 int Cnfadaf_index, i;
3911 string Cnfadaf_file;
3913 Cnfadaf_file = aircraft_directory + linetoken3;
3914 token4 >> Cnfadaf_index;
3915 if (Cnfadaf_index < 0 || Cnfadaf_index >= 100)
3916 uiuc_warnings_errors(1, *command_line);
3917 if (Cnfadaf_index > Cnfadaf_nf)
3918 Cnfadaf_nf = Cnfadaf_index;
3919 token5 >> flap_value;
3920 Cnfadaf_fArray[Cnfadaf_index] = flap_value;
3921 token6 >> token_value_convert1;
3922 token7 >> token_value_convert2;
3923 token8 >> token_value_convert3;
3924 token9 >> Cnfadaf_nice;
3925 convert_z = uiuc_convert(token_value_convert1);
3926 convert_x = uiuc_convert(token_value_convert2);
3927 convert_y = uiuc_convert(token_value_convert3);
3928 /* call 2D File Reader with file name (Cnfadaf_file) and
3929 conversion factors; function returns array of
3930 elevator deflections (deArray) and corresponding
3931 alpha (aArray) and delta CZ (CZArray) values and
3932 max number of terms in alpha arrays (nAlphaArray)
3933 and delfection array (nde) */
3934 uiuc_2DdataFileReader(Cnfadaf_file,
3940 d_2_to_3(datafile_xArray, Cnfadaf_aArray, Cnfadaf_index);
3941 d_1_to_2(datafile_yArray, Cnfadaf_daArray, Cnfadaf_index);
3942 d_2_to_3(datafile_zArray, Cnfadaf_CnArray, Cnfadaf_index);
3943 i_1_to_2(datafile_nxArray, Cnfadaf_nAlphaArray, Cnfadaf_index);
3944 Cnfadaf_nda[Cnfadaf_index] = datafile_ny;
3945 if (Cnfadaf_first==true)
3947 if (Cnfadaf_nice == 1)
3949 Cnfadaf_na_nice = datafile_nxArray[1];
3950 Cnfadaf_nda_nice = datafile_ny;
3951 d_1_to_1(datafile_yArray, Cnfadaf_daArray_nice);
3952 for (i=1; i<=Cnfadaf_na_nice; i++)
3953 Cnfadaf_aArray_nice[i] = datafile_xArray[1][i];
3955 aeroYawParts -> storeCommands (*command_line);
3956 Cnfadaf_first=false;
3962 int Cnfadrf_index, i;
3963 string Cnfadrf_file;
3965 Cnfadrf_file = aircraft_directory + linetoken3;
3966 token4 >> Cnfadrf_index;
3967 if (Cnfadrf_index < 0 || Cnfadrf_index >= 100)
3968 uiuc_warnings_errors(1, *command_line);
3969 if (Cnfadrf_index > Cnfadrf_nf)
3970 Cnfadrf_nf = Cnfadrf_index;
3971 token5 >> flap_value;
3972 Cnfadrf_fArray[Cnfadrf_index] = flap_value;
3973 token6 >> token_value_convert1;
3974 token7 >> token_value_convert2;
3975 token8 >> token_value_convert3;
3976 token9 >> Cnfadrf_nice;
3977 convert_z = uiuc_convert(token_value_convert1);
3978 convert_x = uiuc_convert(token_value_convert2);
3979 convert_y = uiuc_convert(token_value_convert3);
3980 /* call 2D File Reader with file name (Cnfadrf_file) and
3981 conversion factors; function returns array of
3982 elevator deflections (deArray) and corresponding
3983 alpha (aArray) and delta CZ (CZArray) values and
3984 max number of terms in alpha arrays (nAlphaArray)
3985 and delfection array (nde) */
3986 uiuc_2DdataFileReader(Cnfadrf_file,
3992 d_2_to_3(datafile_xArray, Cnfadrf_aArray, Cnfadrf_index);
3993 d_1_to_2(datafile_yArray, Cnfadrf_drArray, Cnfadrf_index);
3994 d_2_to_3(datafile_zArray, Cnfadrf_CnArray, Cnfadrf_index);
3995 i_1_to_2(datafile_nxArray, Cnfadrf_nAlphaArray, Cnfadrf_index);
3996 Cnfadrf_ndr[Cnfadrf_index] = datafile_ny;
3997 if (Cnfadrf_first==true)
3999 if (Cnfadrf_nice == 1)
4001 Cnfadrf_na_nice = datafile_nxArray[1];
4002 Cnfadrf_ndr_nice = datafile_ny;
4003 d_1_to_1(datafile_yArray, Cnfadrf_drArray_nice);
4004 for (i=1; i<=Cnfadrf_na_nice; i++)
4005 Cnfadrf_aArray_nice[i] = datafile_xArray[1][i];
4007 aeroYawParts -> storeCommands (*command_line);
4008 Cnfadrf_first=false;
4014 int Cnfapf_index, i;
4017 Cnfapf_file = aircraft_directory + linetoken3;
4018 token4 >> Cnfapf_index;
4019 if (Cnfapf_index < 0 || Cnfapf_index >= 100)
4020 uiuc_warnings_errors(1, *command_line);
4021 if (Cnfapf_index > Cnfapf_nf)
4022 Cnfapf_nf = Cnfapf_index;
4023 token5 >> flap_value;
4024 Cnfapf_fArray[Cnfapf_index] = flap_value;
4025 token6 >> token_value_convert1;
4026 token7 >> token_value_convert2;
4027 token8 >> token_value_convert3;
4028 token9 >> Cnfapf_nice;
4029 convert_z = uiuc_convert(token_value_convert1);
4030 convert_x = uiuc_convert(token_value_convert2);
4031 convert_y = uiuc_convert(token_value_convert3);
4032 /* call 2D File Reader with file name (Cnfapf_file) and
4033 conversion factors; function returns array of
4034 elevator deflections (deArray) and corresponding
4035 alpha (aArray) and delta CZ (CZArray) values and
4036 max number of terms in alpha arrays (nAlphaArray)
4037 and delfection array (nde) */
4038 uiuc_2DdataFileReader(Cnfapf_file,
4044 d_2_to_3(datafile_xArray, Cnfapf_aArray, Cnfapf_index);
4045 d_1_to_2(datafile_yArray, Cnfapf_pArray, Cnfapf_index);
4046 d_2_to_3(datafile_zArray, Cnfapf_CnArray, Cnfapf_index);
4047 i_1_to_2(datafile_nxArray, Cnfapf_nAlphaArray, Cnfapf_index);
4048 Cnfapf_np[Cnfapf_index] = datafile_ny;
4049 if (Cnfapf_first==true)
4051 if (Cnfapf_nice == 1)
4053 Cnfapf_na_nice = datafile_nxArray[1];
4054 Cnfapf_np_nice = datafile_ny;
4055 d_1_to_1(datafile_yArray, Cnfapf_pArray_nice);
4056 for (i=1; i<=Cnfapf_na_nice; i++)
4057 Cnfapf_aArray_nice[i] = datafile_xArray[1][i];
4059 aeroYawParts -> storeCommands (*command_line);
4066 int Cnfarf_index, i;
4069 Cnfarf_file = aircraft_directory + linetoken3;
4070 token4 >> Cnfarf_index;
4071 if (Cnfarf_index < 0 || Cnfarf_index >= 100)
4072 uiuc_warnings_errors(1, *command_line);
4073 if (Cnfarf_index > Cnfarf_nf)
4074 Cnfarf_nf = Cnfarf_index;
4075 token5 >> flap_value;
4076 Cnfarf_fArray[Cnfarf_index] = flap_value;
4077 token6 >> token_value_convert1;
4078 token7 >> token_value_convert2;
4079 token8 >> token_value_convert3;
4080 token9 >> Cnfarf_nice;
4081 convert_z = uiuc_convert(token_value_convert1);
4082 convert_x = uiuc_convert(token_value_convert2);
4083 convert_y = uiuc_convert(token_value_convert3);
4084 /* call 2D File Reader with file name (Cnfarf_file) and
4085 conversion factors; function returns array of
4086 elevator deflections (deArray) and corresponding
4087 alpha (aArray) and delta CZ (CZArray) values and
4088 max number of terms in alpha arrays (nAlphaArray)
4089 and delfection array (nde) */
4090 uiuc_2DdataFileReader(Cnfarf_file,
4096 d_2_to_3(datafile_xArray, Cnfarf_aArray, Cnfarf_index);
4097 d_1_to_2(datafile_yArray, Cnfarf_rArray, Cnfarf_index);
4098 d_2_to_3(datafile_zArray, Cnfarf_CnArray, Cnfarf_index);
4099 i_1_to_2(datafile_nxArray, Cnfarf_nAlphaArray, Cnfarf_index);
4100 Cnfarf_nr[Cnfarf_index] = datafile_ny;
4101 if (Cnfarf_first==true)
4103 if (Cnfarf_nice == 1)
4105 Cnfarf_na_nice = datafile_nxArray[1];
4106 Cnfarf_nr_nice = datafile_ny;
4107 d_1_to_1(datafile_yArray, Cnfarf_rArray_nice);
4108 for (i=1; i<=Cnfarf_na_nice; i++)
4109 Cnfarf_aArray_nice[i] = datafile_xArray[1][i];
4111 aeroYawParts -> storeCommands (*command_line);
4119 uiuc_warnings_errors(2, *command_line);
4125 void parse_gear( const string& linetoken2, const string& linetoken3,
4126 const string& linetoken4, const int& index,
4127 LIST command_line ) {
4129 istrstream token3(linetoken3.c_str());
4130 istrstream token4(linetoken4.c_str());
4132 switch(gear_map[linetoken2])
4136 if (check_float(linetoken3))
4137 token4 >> token_value;
4139 uiuc_warnings_errors(1, *command_line);
4140 D_gear_v[index][0] = token_value;
4141 gear_model[index] = true;
4146 if (check_float(linetoken3))
4147 token4 >> token_value;
4149 uiuc_warnings_errors(1, *command_line);
4150 D_gear_v[index][1] = token_value;
4151 gear_model[index] = true;
4156 if (check_float(linetoken3))
4157 token4 >> token_value;
4159 uiuc_warnings_errors(1, *command_line);
4160 D_gear_v[index][2] = token_value;
4161 gear_model[index] = true;
4166 if (check_float(linetoken3))
4167 token4 >> token_value;
4169 uiuc_warnings_errors(1, *command_line);
4170 cgear[index] = token_value;
4171 gear_model[index] = true;
4176 if (check_float(linetoken3))
4177 token4 >> token_value;
4179 uiuc_warnings_errors(1, *command_line);
4180 kgear[index] = token_value;
4181 gear_model[index] = true;
4186 if (check_float(linetoken3))
4187 token4 >> token_value;
4189 uiuc_warnings_errors(1, *command_line);
4190 muGear[index] = token_value;
4191 gear_model[index] = true;
4194 case strutLength_flag:
4196 if (check_float(linetoken3))
4197 token4 >> token_value;
4199 uiuc_warnings_errors(1, *command_line);
4200 strutLength[index] = token_value;
4201 gear_model[index] = true;
4207 uiuc_warnings_errors(2, *command_line);
4214 void parse_ice( const string& linetoken2, const string& linetoken3,
4215 const string& linetoken4, LIST command_line ) {
4217 istrstream token3(linetoken3.c_str());
4218 istrstream token4(linetoken4.c_str());
4220 switch(ice_map[linetoken2])
4224 if (check_float(linetoken3))
4225 token3 >> token_value;
4228 uiuc_warnings_errors(1, *command_line);
4231 iceTime = token_value;
4234 case transientTime_flag:
4236 if (check_float(linetoken3))
4237 token3 >> token_value;
4239 uiuc_warnings_errors(1, *command_line);
4241 transientTime = token_value;
4244 case eta_ice_final_flag:
4246 if (check_float(linetoken3))
4247 token3 >> token_value;
4249 uiuc_warnings_errors(1, *command_line);
4251 eta_ice_final = token_value;
4254 case beta_probe_wing_flag:
4256 if (check_float(linetoken3))
4257 token3 >> token_value;
4259 uiuc_warnings_errors(1, *command_line);
4262 x_probe_wing = token_value;
4265 case beta_probe_tail_flag:
4267 if (check_float(linetoken3))
4268 token3 >> token_value;
4270 uiuc_warnings_errors(1, *command_line);
4273 x_probe_tail = token_value;
4278 if (check_float(linetoken3))
4279 token3 >> token_value;
4281 uiuc_warnings_errors(1, *command_line);
4288 if (check_float(linetoken3))
4289 token3 >> token_value;
4291 uiuc_warnings_errors(1, *command_line);
4298 if (check_float(linetoken3))
4299 token3 >> token_value;
4301 uiuc_warnings_errors(1, *command_line);
4303 kCD_a = token_value;
4308 if (check_float(linetoken3))
4309 token3 >> token_value;
4311 uiuc_warnings_errors(1, *command_line);
4313 kCD_adot = token_value;
4318 if (check_float(linetoken3))
4319 token3 >> token_value;
4321 uiuc_warnings_errors(1, *command_line);
4323 kCD_q = token_value;
4328 if (check_float(linetoken3))
4329 token3 >> token_value;
4331 uiuc_warnings_errors(1, *command_line);
4333 kCD_de = token_value;
4338 if (check_float(linetoken3))
4339 token3 >> token_value;
4341 uiuc_warnings_errors(1, *command_line);
4348 if (check_float(linetoken3))
4349 token3 >> token_value;
4351 uiuc_warnings_errors(1, *command_line);
4358 if (check_float(linetoken3))
4359 token3 >> token_value;
4361 uiuc_warnings_errors(1, *command_line);
4363 kCX_a = token_value;
4368 if (check_float(linetoken3))
4369 token3 >> token_value;
4371 uiuc_warnings_errors(1, *command_line);
4373 kCX_a2 = token_value;
4378 if (check_float(linetoken3))
4379 token3 >> token_value;
4381 uiuc_warnings_errors(1, *command_line);
4383 kCX_a3 = token_value;
4388 if (check_float(linetoken3))
4389 token3 >> token_value;
4391 uiuc_warnings_errors(1, *command_line);
4393 kCX_adot = token_value;
4398 if (check_float(linetoken3))
4399 token3 >> token_value;
4401 uiuc_warnings_errors(1, *command_line);
4403 kCX_q = token_value;
4408 if (check_float(linetoken3))
4409 token3 >> token_value;
4411 uiuc_warnings_errors(1, *command_line);
4413 kCX_de = token_value;
4418 if (check_float(linetoken3))
4419 token3 >> token_value;
4421 uiuc_warnings_errors(1, *command_line);
4423 kCX_dr = token_value;
4428 if (check_float(linetoken3))
4429 token3 >> token_value;
4431 uiuc_warnings_errors(1, *command_line);
4433 kCX_df = token_value;
4438 if (check_float(linetoken3))
4439 token3 >> token_value;
4441 uiuc_warnings_errors(1, *command_line);
4443 kCX_adf = token_value;
4448 if (check_float(linetoken3))
4449 token3 >> token_value;
4451 uiuc_warnings_errors(1, *command_line);
4458 if (check_float(linetoken3))
4459 token3 >> token_value;
4461 uiuc_warnings_errors(1, *command_line);
4463 kCL_a = token_value;
4468 if (check_float(linetoken3))
4469 token3 >> token_value;
4471 uiuc_warnings_errors(1, *command_line);
4473 kCL_adot = token_value;
4478 if (check_float(linetoken3))
4479 token3 >> token_value;
4481 uiuc_warnings_errors(1, *command_line);
4483 kCL_q = token_value;
4488 if (check_float(linetoken3))
4489 token3 >> token_value;
4491 uiuc_warnings_errors(1, *command_line);
4493 kCL_de = token_value;
4498 if (check_float(linetoken3))
4499 token3 >> token_value;
4501 uiuc_warnings_errors(1, *command_line);
4508 if (check_float(linetoken3))
4509 token3 >> token_value;
4511 uiuc_warnings_errors(1, *command_line);
4513 kCZ_a = token_value;
4518 if (check_float(linetoken3))
4519 token3 >> token_value;
4521 uiuc_warnings_errors(1, *command_line);
4523 kCZ_a2 = token_value;
4528 if (check_float(linetoken3))
4529 token3 >> token_value;
4531 uiuc_warnings_errors(1, *command_line);
4533 kCZ_a3 = token_value;
4538 if (check_float(linetoken3))
4539 token3 >> token_value;
4541 uiuc_warnings_errors(1, *command_line);
4543 kCZ_adot = token_value;
4548 if (check_float(linetoken3))
4549 token3 >> token_value;
4551 uiuc_warnings_errors(1, *command_line);
4553 kCZ_q = token_value;
4558 if (check_float(linetoken3))
4559 token3 >> token_value;
4561 uiuc_warnings_errors(1, *command_line);
4563 kCZ_de = token_value;
4568 if (check_float(linetoken3))
4569 token3 >> token_value;
4571 uiuc_warnings_errors(1, *command_line);
4573 kCZ_deb2 = token_value;
4578 if (check_float(linetoken3))
4579 token3 >> token_value;
4581 uiuc_warnings_errors(1, *command_line);
4583 kCZ_df = token_value;
4588 if (check_float(linetoken3))
4589 token3 >> token_value;
4591 uiuc_warnings_errors(1, *command_line);
4593 kCZ_adf = token_value;
4598 if (check_float(linetoken3))
4599 token3 >> token_value;
4601 uiuc_warnings_errors(1, *command_line);
4608 if (check_float(linetoken3))
4609 token3 >> token_value;
4611 uiuc_warnings_errors(1, *command_line);
4613 kCm_a = token_value;
4618 if (check_float(linetoken3))
4619 token3 >> token_value;
4621 uiuc_warnings_errors(1, *command_line);
4623 kCm_a2 = token_value;
4628 if (check_float(linetoken3))
4629 token3 >> token_value;
4631 uiuc_warnings_errors(1, *command_line);
4633 kCm_adot = token_value;
4638 if (check_float(linetoken3))
4639 token3 >> token_value;
4641 uiuc_warnings_errors(1, *command_line);
4643 kCm_q = token_value;
4648 if (check_float(linetoken3))
4649 token3 >> token_value;
4651 uiuc_warnings_errors(1, *command_line);
4653 kCm_de = token_value;
4658 if (check_float(linetoken3))
4659 token3 >> token_value;
4661 uiuc_warnings_errors(1, *command_line);
4663 kCm_b2 = token_value;
4668 if (check_float(linetoken3))
4669 token3 >> token_value;
4671 uiuc_warnings_errors(1, *command_line);
4673 kCm_r = token_value;
4678 if (check_float(linetoken3))
4679 token3 >> token_value;
4681 uiuc_warnings_errors(1, *command_line);
4683 kCm_df = token_value;
4688 if (check_float(linetoken3))
4689 token3 >> token_value;
4691 uiuc_warnings_errors(1, *command_line);
4698 if (check_float(linetoken3))
4699 token3 >> token_value;
4701 uiuc_warnings_errors(1, *command_line);
4703 kCY_beta = token_value;
4708 if (check_float(linetoken3))
4709 token3 >> token_value;
4711 uiuc_warnings_errors(1, *command_line);
4713 kCY_p = token_value;
4718 if (check_float(linetoken3))
4719 token3 >> token_value;
4721 uiuc_warnings_errors(1, *command_line);
4723 kCY_r = token_value;
4728 if (check_float(linetoken3))
4729 token3 >> token_value;
4731 uiuc_warnings_errors(1, *command_line);
4733 kCY_da = token_value;
4738 if (check_float(linetoken3))
4739 token3 >> token_value;
4741 uiuc_warnings_errors(1, *command_line);
4743 kCY_dr = token_value;
4748 if (check_float(linetoken3))
4749 token3 >> token_value;
4751 uiuc_warnings_errors(1, *command_line);
4753 kCY_dra = token_value;
4758 if (check_float(linetoken3))
4759 token3 >> token_value;
4761 uiuc_warnings_errors(1, *command_line);
4763 kCY_bdot = token_value;
4768 if (check_float(linetoken3))
4769 token3 >> token_value;
4771 uiuc_warnings_errors(1, *command_line);
4778 if (check_float(linetoken3))
4779 token3 >> token_value;
4781 uiuc_warnings_errors(1, *command_line);
4783 kCl_beta = token_value;
4788 if (check_float(linetoken3))
4789 token3 >> token_value;
4791 uiuc_warnings_errors(1, *command_line);
4793 kCl_p = token_value;
4798 if (check_float(linetoken3))
4799 token3 >> token_value;
4801 uiuc_warnings_errors(1, *command_line);
4803 kCl_r = token_value;
4808 if (check_float(linetoken3))
4809 token3 >> token_value;
4811 uiuc_warnings_errors(1, *command_line);
4813 kCl_da = token_value;
4818 if (check_float(linetoken3))
4819 token3 >> token_value;
4821 uiuc_warnings_errors(1, *command_line);
4823 kCl_dr = token_value;
4828 if (check_float(linetoken3))
4829 token3 >> token_value;
4831 uiuc_warnings_errors(1, *command_line);
4833 kCl_daa = token_value;
4838 if (check_float(linetoken3))
4839 token3 >> token_value;
4841 uiuc_warnings_errors(1, *command_line);
4848 if (check_float(linetoken3))
4849 token3 >> token_value;
4851 uiuc_warnings_errors(1, *command_line);
4853 kCn_beta = token_value;
4858 if (check_float(linetoken3))
4859 token3 >> token_value;
4861 uiuc_warnings_errors(1, *command_line);
4863 kCn_p = token_value;
4868 if (check_float(linetoken3))
4869 token3 >> token_value;
4871 uiuc_warnings_errors(1, *command_line);
4873 kCn_r = token_value;
4878 if (check_float(linetoken3))
4879 token3 >> token_value;
4881 uiuc_warnings_errors(1, *command_line);
4883 kCn_da = token_value;
4888 if (check_float(linetoken3))
4889 token3 >> token_value;
4891 uiuc_warnings_errors(1, *command_line);
4893 kCn_dr = token_value;
4898 if (check_float(linetoken3))
4899 token3 >> token_value;
4901 uiuc_warnings_errors(1, *command_line);
4903 kCn_q = token_value;
4908 if (check_float(linetoken3))
4909 token3 >> token_value;
4911 uiuc_warnings_errors(1, *command_line);
4913 kCn_b3 = token_value;
4919 if (check_float(linetoken4))
4920 token4 >> token_value;
4922 uiuc_warnings_errors(1, *command_line);
4924 if (index < 0 || index >= 20)
4925 uiuc_warnings_errors(1, *command_line);
4926 bootTime[index] = token_value;
4927 bootTrue[index] = true;
4933 uiuc_warnings_errors(2, *command_line);
4940 void parse_fog( const string& linetoken2, const string& linetoken3,
4941 const string& linetoken4, LIST command_line ) {
4943 int token_value_convert1;
4944 istrstream token3(linetoken3.c_str());
4945 istrstream token4(linetoken4.c_str());
4947 switch(fog_map[linetoken2])
4949 case fog_segments_flag:
4951 if (check_float(linetoken3))
4952 token3 >> token_value_convert1;
4954 uiuc_warnings_errors(1, *command_line);
4956 if (token_value_convert1 < 1 || token_value_convert1 > 100)
4957 uiuc_warnings_errors(1, *command_line);
4960 fog_point_index = 0;
4963 fog_segments = token_value_convert1;
4964 fog_time = new double[fog_segments+1];
4966 fog_value = new int[fog_segments+1];
4971 case fog_point_flag:
4973 if (check_float(linetoken3))
4974 token3 >> token_value;
4976 uiuc_warnings_errors(1, *command_line);
4978 if (token_value < 0.1)
4979 uiuc_warnings_errors(1, *command_line);
4981 if (check_float(linetoken4))
4982 token4 >> token_value_convert1;
4984 uiuc_warnings_errors(1, *command_line);
4986 if (token_value_convert1 < -1000 || token_value_convert1 > 1000)
4987 uiuc_warnings_errors(1, *command_line);
4989 if (fog_point_index == fog_segments || fog_point_index == -1)
4990 uiuc_warnings_errors(1, *command_line);
4993 fog_time[fog_point_index] = token_value;
4994 fog_value[fog_point_index] = token_value_convert1;
5001 uiuc_warnings_errors(2, *command_line);
5008 void parse_record( const string& linetoken2, LIST command_line ) {
5010 switch(record_map[linetoken2])
5012 /************************* Time ************************/
5013 case Simtime_record:
5015 recordParts -> storeCommands (*command_line);
5020 recordParts -> storeCommands (*command_line);
5024 /************************* Mass ************************/
5027 recordParts -> storeCommands (*command_line);
5032 recordParts -> storeCommands (*command_line);
5037 recordParts -> storeCommands (*command_line);
5042 recordParts -> storeCommands (*command_line);
5047 recordParts -> storeCommands (*command_line);
5052 recordParts -> storeCommands (*command_line);
5056 /*********************** Geometry **********************/
5057 case Dx_pilot_record:
5059 recordParts -> storeCommands (*command_line);
5062 case Dy_pilot_record:
5064 recordParts -> storeCommands (*command_line);
5067 case Dz_pilot_record:
5069 recordParts -> storeCommands (*command_line);
5074 recordParts -> storeCommands (*command_line);
5079 recordParts -> storeCommands (*command_line);
5084 recordParts -> storeCommands (*command_line);
5088 /********************** Positions **********************/
5089 case Lat_geocentric_record:
5091 recordParts -> storeCommands (*command_line);
5094 case Lon_geocentric_record:
5096 recordParts -> storeCommands (*command_line);
5099 case Radius_to_vehicle_record:
5101 recordParts -> storeCommands (*command_line);
5104 case Latitude_record:
5106 recordParts -> storeCommands (*command_line);
5109 case Longitude_record:
5111 recordParts -> storeCommands (*command_line);
5114 case Altitude_record:
5116 recordParts -> storeCommands (*command_line);
5121 recordParts -> storeCommands (*command_line);
5126 recordParts -> storeCommands (*command_line);
5131 recordParts -> storeCommands (*command_line);
5135 /******************** Accelerations ********************/
5136 case V_dot_north_record:
5138 recordParts -> storeCommands (*command_line);
5141 case V_dot_east_record:
5143 recordParts -> storeCommands (*command_line);
5146 case V_dot_down_record:
5148 recordParts -> storeCommands (*command_line);
5151 case U_dot_body_record:
5153 recordParts -> storeCommands (*command_line);
5156 case V_dot_body_record:
5158 recordParts -> storeCommands (*command_line);
5161 case W_dot_body_record:
5163 recordParts -> storeCommands (*command_line);
5166 case A_X_pilot_record:
5168 recordParts -> storeCommands (*command_line);
5171 case A_Y_pilot_record:
5173 recordParts -> storeCommands (*command_line);
5176 case A_Z_pilot_record:
5178 recordParts -> storeCommands (*command_line);
5183 recordParts -> storeCommands (*command_line);
5188 recordParts -> storeCommands (*command_line);
5193 recordParts -> storeCommands (*command_line);
5196 case N_X_pilot_record:
5198 recordParts -> storeCommands (*command_line);
5201 case N_Y_pilot_record:
5203 recordParts -> storeCommands (*command_line);
5206 case N_Z_pilot_record:
5208 recordParts -> storeCommands (*command_line);
5213 recordParts -> storeCommands (*command_line);
5218 recordParts -> storeCommands (*command_line);
5223 recordParts -> storeCommands (*command_line);
5226 case P_dot_body_record:
5228 recordParts -> storeCommands (*command_line);
5231 case Q_dot_body_record:
5233 recordParts -> storeCommands (*command_line);
5236 case R_dot_body_record:
5238 recordParts -> storeCommands (*command_line);
5242 /********************** Velocities *********************/
5243 case V_north_record:
5245 recordParts -> storeCommands (*command_line);
5250 recordParts -> storeCommands (*command_line);
5255 recordParts -> storeCommands (*command_line);
5258 case V_north_rel_ground_record:
5260 recordParts -> storeCommands (*command_line);
5263 case V_east_rel_ground_record:
5265 recordParts -> storeCommands (*command_line);
5268 case V_down_rel_ground_record:
5270 recordParts -> storeCommands (*command_line);
5273 case V_north_airmass_record:
5275 recordParts -> storeCommands (*command_line);
5278 case V_east_airmass_record:
5280 recordParts -> storeCommands (*command_line);
5283 case V_down_airmass_record:
5285 recordParts -> storeCommands (*command_line);
5288 case V_north_rel_airmass_record:
5290 recordParts -> storeCommands (*command_line);
5293 case V_east_rel_airmass_record:
5295 recordParts -> storeCommands (*command_line);
5298 case V_down_rel_airmass_record:
5300 recordParts -> storeCommands (*command_line);
5305 recordParts -> storeCommands (*command_line);
5310 recordParts -> storeCommands (*command_line);
5315 recordParts -> storeCommands (*command_line);
5320 recordParts -> storeCommands (*command_line);
5325 recordParts -> storeCommands (*command_line);
5330 recordParts -> storeCommands (*command_line);
5333 case V_rel_wind_record:
5335 recordParts -> storeCommands (*command_line);
5338 case V_true_kts_record:
5340 recordParts -> storeCommands (*command_line);
5343 case V_rel_ground_record:
5345 recordParts -> storeCommands (*command_line);
5348 case V_inertial_record:
5350 recordParts -> storeCommands (*command_line);
5353 case V_ground_speed_record:
5355 recordParts -> storeCommands (*command_line);
5358 case V_equiv_record:
5360 recordParts -> storeCommands (*command_line);
5363 case V_equiv_kts_record:
5365 recordParts -> storeCommands (*command_line);
5368 case V_calibrated_record:
5370 recordParts -> storeCommands (*command_line);
5373 case V_calibrated_kts_record:
5375 recordParts -> storeCommands (*command_line);
5378 case P_local_record:
5380 recordParts -> storeCommands (*command_line);
5383 case Q_local_record:
5385 recordParts -> storeCommands (*command_line);
5388 case R_local_record:
5390 recordParts -> storeCommands (*command_line);
5395 recordParts -> storeCommands (*command_line);
5400 recordParts -> storeCommands (*command_line);
5405 recordParts -> storeCommands (*command_line);
5408 case P_total_record:
5410 recordParts -> storeCommands (*command_line);
5413 case Q_total_record:
5415 recordParts -> storeCommands (*command_line);
5418 case R_total_record:
5420 recordParts -> storeCommands (*command_line);
5423 case Phi_dot_record:
5425 recordParts -> storeCommands (*command_line);
5428 case Theta_dot_record:
5430 recordParts -> storeCommands (*command_line);
5433 case Psi_dot_record:
5435 recordParts -> storeCommands (*command_line);
5438 case Latitude_dot_record:
5440 recordParts -> storeCommands (*command_line);
5443 case Longitude_dot_record:
5445 recordParts -> storeCommands (*command_line);
5448 case Radius_dot_record:
5450 recordParts -> storeCommands (*command_line);
5454 /************************ Angles ***********************/
5457 recordParts -> storeCommands (*command_line);
5460 case Alpha_deg_record:
5462 recordParts -> storeCommands (*command_line);
5465 case Alpha_dot_record:
5467 recordParts -> storeCommands (*command_line);
5470 case Alpha_dot_deg_record:
5472 recordParts -> storeCommands (*command_line);
5477 recordParts -> storeCommands (*command_line);
5480 case Beta_deg_record:
5482 recordParts -> storeCommands (*command_line);
5485 case Beta_dot_record:
5487 recordParts -> storeCommands (*command_line);
5490 case Beta_dot_deg_record:
5492 recordParts -> storeCommands (*command_line);
5495 case Gamma_vert_record:
5497 recordParts -> storeCommands (*command_line);
5500 case Gamma_vert_deg_record:
5502 recordParts -> storeCommands (*command_line);
5505 case Gamma_horiz_record:
5507 recordParts -> storeCommands (*command_line);
5510 case Gamma_horiz_deg_record:
5512 recordParts -> storeCommands (*command_line);
5516 /**************** Atmospheric Properties ***************/
5517 case Density_record:
5519 recordParts -> storeCommands (*command_line);
5522 case V_sound_record:
5524 recordParts -> storeCommands (*command_line);
5527 case Mach_number_record:
5529 recordParts -> storeCommands (*command_line);
5532 case Static_pressure_record:
5534 recordParts -> storeCommands (*command_line);
5537 case Total_pressure_record:
5539 recordParts -> storeCommands (*command_line);
5542 case Impact_pressure_record:
5544 recordParts -> storeCommands (*command_line);
5547 case Dynamic_pressure_record:
5549 recordParts -> storeCommands (*command_line);
5552 case Static_temperature_record:
5554 recordParts -> storeCommands (*command_line);
5557 case Total_temperature_record:
5559 recordParts -> storeCommands (*command_line);
5563 /******************** Earth Properties *****************/
5564 case Gravity_record:
5566 recordParts -> storeCommands (*command_line);
5569 case Sea_level_radius_record:
5571 recordParts -> storeCommands (*command_line);
5574 case Earth_position_angle_record:
5576 recordParts -> storeCommands (*command_line);
5579 case Runway_altitude_record:
5581 recordParts -> storeCommands (*command_line);
5584 case Runway_latitude_record:
5586 recordParts -> storeCommands (*command_line);
5589 case Runway_longitude_record:
5591 recordParts -> storeCommands (*command_line);
5594 case Runway_heading_record:
5596 recordParts -> storeCommands (*command_line);
5599 case Radius_to_rwy_record:
5601 recordParts -> storeCommands (*command_line);
5604 case D_pilot_north_of_rwy_record:
5606 recordParts -> storeCommands (*command_line);
5609 case D_pilot_east_of_rwy_record:
5611 recordParts -> storeCommands (*command_line);
5614 case D_pilot_above_rwy_record:
5616 recordParts -> storeCommands (*command_line);
5619 case X_pilot_rwy_record:
5621 recordParts -> storeCommands (*command_line);
5624 case Y_pilot_rwy_record:
5626 recordParts -> storeCommands (*command_line);
5629 case H_pilot_rwy_record:
5631 recordParts -> storeCommands (*command_line);
5634 case D_cg_north_of_rwy_record:
5636 recordParts -> storeCommands (*command_line);
5639 case D_cg_east_of_rwy_record:
5641 recordParts -> storeCommands (*command_line);
5644 case D_cg_above_rwy_record:
5646 recordParts -> storeCommands (*command_line);
5649 case X_cg_rwy_record:
5651 recordParts -> storeCommands (*command_line);
5654 case Y_cg_rwy_record:
5656 recordParts -> storeCommands (*command_line);
5659 case H_cg_rwy_record:
5661 recordParts -> storeCommands (*command_line);
5665 /********************* Engine Inputs *******************/
5666 case Throttle_pct_record:
5668 recordParts -> storeCommands (*command_line);
5671 case Throttle_3_record:
5673 recordParts -> storeCommands (*command_line);
5677 /******************** Control Inputs *******************/
5678 case Long_control_record:
5680 recordParts -> storeCommands (*command_line);
5683 case Long_trim_record:
5685 recordParts -> storeCommands (*command_line);
5688 case Long_trim_deg_record:
5690 recordParts -> storeCommands (*command_line);
5693 case elevator_record:
5695 recordParts -> storeCommands (*command_line);
5698 case elevator_deg_record:
5700 recordParts -> storeCommands (*command_line);
5703 case Lat_control_record:
5705 recordParts -> storeCommands (*command_line);
5708 case aileron_record:
5710 recordParts -> storeCommands (*command_line);
5713 case aileron_deg_record:
5715 recordParts -> storeCommands (*command_line);
5718 case Rudder_pedal_record:
5720 recordParts -> storeCommands (*command_line);
5725 recordParts -> storeCommands (*command_line);
5728 case rudder_deg_record:
5730 recordParts -> storeCommands (*command_line);
5733 case Flap_handle_record:
5735 recordParts -> storeCommands (*command_line);
5740 recordParts -> storeCommands (*command_line);
5743 case flap_deg_record:
5745 recordParts -> storeCommands (*command_line);
5748 case flap_goal_record:
5750 recordParts -> storeCommands (*command_line);
5753 case flap_pos_record:
5755 recordParts -> storeCommands (*command_line);
5759 /****************** Aero Coefficients ******************/
5762 recordParts -> storeCommands (*command_line);
5767 recordParts -> storeCommands (*command_line);
5770 case CDfadeI_record:
5772 recordParts -> storeCommands (*command_line);
5777 recordParts -> storeCommands (*command_line);
5780 case CDfadfI_record:
5782 recordParts -> storeCommands (*command_line);
5787 recordParts -> storeCommands (*command_line);
5790 case CXfabetafI_record:
5792 recordParts -> storeCommands (*command_line);
5795 case CXfadefI_record:
5797 recordParts -> storeCommands (*command_line);
5800 case CXfaqfI_record:
5802 recordParts -> storeCommands (*command_line);
5805 case CDo_save_record:
5807 recordParts -> storeCommands (*command_line);
5810 case CDK_save_record:
5812 recordParts -> storeCommands (*command_line);
5815 case CD_a_save_record:
5817 recordParts -> storeCommands (*command_line);
5820 case CD_adot_save_record:
5822 recordParts -> storeCommands (*command_line);
5825 case CD_q_save_record:
5827 recordParts -> storeCommands (*command_line);
5830 case CD_ih_save_record:
5832 recordParts -> storeCommands (*command_line);
5835 case CD_de_save_record:
5837 recordParts -> storeCommands (*command_line);
5840 case CXo_save_record:
5842 recordParts -> storeCommands (*command_line);
5845 case CXK_save_record:
5847 recordParts -> storeCommands (*command_line);
5850 case CX_a_save_record:
5852 recordParts -> storeCommands (*command_line);
5855 case CX_a2_save_record:
5857 recordParts -> storeCommands (*command_line);
5860 case CX_a3_save_record:
5862 recordParts -> storeCommands (*command_line);
5865 case CX_adot_save_record:
5867 recordParts -> storeCommands (*command_line);
5870 case CX_q_save_record:
5872 recordParts -> storeCommands (*command_line);
5875 case CX_de_save_record:
5877 recordParts -> storeCommands (*command_line);
5880 case CX_dr_save_record:
5882 recordParts -> storeCommands (*command_line);
5885 case CX_df_save_record:
5887 recordParts -> storeCommands (*command_line);
5890 case CX_adf_save_record:
5892 recordParts -> storeCommands (*command_line);
5897 recordParts -> storeCommands (*command_line);
5902 recordParts -> storeCommands (*command_line);
5905 case CLfadeI_record:
5907 recordParts -> storeCommands (*command_line);
5912 recordParts -> storeCommands (*command_line);
5915 case CLfadfI_record:
5917 recordParts -> storeCommands (*command_line);
5922 recordParts -> storeCommands (*command_line);
5927 recordParts -> storeCommands (*command_line);
5930 case CZfabetafI_record:
5932 recordParts -> storeCommands (*command_line);
5935 case CZfadefI_record:
5937 recordParts -> storeCommands (*command_line);
5940 case CZfaqfI_record:
5942 recordParts -> storeCommands (*command_line);
5945 case CLo_save_record:
5947 recordParts -> storeCommands (*command_line);
5950 case CL_a_save_record:
5952 recordParts -> storeCommands (*command_line);
5955 case CL_adot_save_record:
5957 recordParts -> storeCommands (*command_line);
5960 case CL_q_save_record:
5962 recordParts -> storeCommands (*command_line);
5965 case CL_ih_save_record:
5967 recordParts -> storeCommands (*command_line);
5970 case CL_de_save_record:
5972 recordParts -> storeCommands (*command_line);
5975 case CZo_save_record:
5977 recordParts -> storeCommands (*command_line);
5980 case CZ_a_save_record:
5982 recordParts -> storeCommands (*command_line);
5985 case CZ_a2_save_record:
5987 recordParts -> storeCommands (*command_line);
5990 case CZ_a3_save_record:
5992 recordParts -> storeCommands (*command_line);
5995 case CZ_adot_save_record:
5997 recordParts -> storeCommands (*command_line);
6000 case CZ_q_save_record:
6002 recordParts -> storeCommands (*command_line);
6005 case CZ_de_save_record:
6007 recordParts -> storeCommands (*command_line);
6010 case CZ_deb2_save_record:
6012 recordParts -> storeCommands (*command_line);
6015 case CZ_df_save_record:
6017 recordParts -> storeCommands (*command_line);
6020 case CZ_adf_save_record:
6022 recordParts -> storeCommands (*command_line);
6027 recordParts -> storeCommands (*command_line);
6032 recordParts -> storeCommands (*command_line);
6035 case CmfadeI_record:
6037 recordParts -> storeCommands (*command_line);
6042 recordParts -> storeCommands (*command_line);
6045 case CmfadfI_record:
6047 recordParts -> storeCommands (*command_line);
6050 case CmfabetafI_record:
6052 recordParts -> storeCommands (*command_line);
6055 case CmfadefI_record:
6057 recordParts -> storeCommands (*command_line);
6060 case CmfaqfI_record:
6062 recordParts -> storeCommands (*command_line);
6065 case Cmo_save_record:
6067 recordParts -> storeCommands (*command_line);
6070 case Cm_a_save_record:
6072 recordParts -> storeCommands (*command_line);
6075 case Cm_a2_save_record:
6077 recordParts -> storeCommands (*command_line);
6080 case Cm_adot_save_record:
6082 recordParts -> storeCommands (*command_line);
6085 case Cm_q_save_record:
6087 recordParts -> storeCommands (*command_line);
6090 case Cm_ih_save_record:
6092 recordParts -> storeCommands (*command_line);
6095 case Cm_de_save_record:
6097 recordParts -> storeCommands (*command_line);
6100 case Cm_b2_save_record:
6102 recordParts -> storeCommands (*command_line);
6105 case Cm_r_save_record:
6107 recordParts -> storeCommands (*command_line);
6110 case Cm_df_save_record:
6112 recordParts -> storeCommands (*command_line);
6117 recordParts -> storeCommands (*command_line);
6120 case CYfadaI_record:
6122 recordParts -> storeCommands (*command_line);
6125 case CYfbetadrI_record:
6127 recordParts -> storeCommands (*command_line);
6130 case CYfabetafI_record:
6132 recordParts -> storeCommands (*command_line);
6135 case CYfadafI_record:
6137 recordParts -> storeCommands (*command_line);
6140 case CYfadrfI_record:
6142 recordParts -> storeCommands (*command_line);
6145 case CYfapfI_record:
6147 recordParts -> storeCommands (*command_line);
6150 case CYfarfI_record:
6152 recordParts -> storeCommands (*command_line);
6155 case CYo_save_record:
6157 recordParts -> storeCommands (*command_line);
6160 case CY_beta_save_record:
6162 recordParts -> storeCommands (*command_line);
6165 case CY_p_save_record:
6167 recordParts -> storeCommands (*command_line);
6170 case CY_r_save_record:
6172 recordParts -> storeCommands (*command_line);
6175 case CY_da_save_record:
6177 recordParts -> storeCommands (*command_line);
6180 case CY_dr_save_record:
6182 recordParts -> storeCommands (*command_line);
6185 case CY_dra_save_record:
6187 recordParts -> storeCommands (*command_line);
6190 case CY_bdot_save_record:
6192 recordParts -> storeCommands (*command_line);
6197 recordParts -> storeCommands (*command_line);
6200 case ClfadaI_record:
6202 recordParts -> storeCommands (*command_line);
6205 case ClfbetadrI_record:
6207 recordParts -> storeCommands (*command_line);
6210 case ClfabetafI_record:
6212 recordParts -> storeCommands (*command_line);
6215 case ClfadafI_record:
6217 recordParts -> storeCommands (*command_line);
6220 case ClfadrfI_record:
6222 recordParts -> storeCommands (*command_line);
6225 case ClfapfI_record:
6227 recordParts -> storeCommands (*command_line);
6230 case ClfarfI_record:
6232 recordParts -> storeCommands (*command_line);
6235 case Clo_save_record:
6237 recordParts -> storeCommands (*command_line);
6240 case Cl_beta_save_record:
6242 recordParts -> storeCommands (*command_line);
6245 case Cl_p_save_record:
6247 recordParts -> storeCommands (*command_line);
6250 case Cl_r_save_record:
6252 recordParts -> storeCommands (*command_line);
6255 case Cl_da_save_record:
6257 recordParts -> storeCommands (*command_line);
6260 case Cl_dr_save_record:
6262 recordParts -> storeCommands (*command_line);
6265 case Cl_daa_save_record:
6267 recordParts -> storeCommands (*command_line);
6272 recordParts -> storeCommands (*command_line);
6275 case CnfadaI_record:
6277 recordParts -> storeCommands (*command_line);
6280 case CnfbetadrI_record:
6282 recordParts -> storeCommands (*command_line);
6285 case CnfabetafI_record:
6287 recordParts -> storeCommands (*command_line);
6290 case CnfadafI_record:
6292 recordParts -> storeCommands (*command_line);
6295 case CnfadrfI_record:
6297 recordParts -> storeCommands (*command_line);
6300 case CnfapfI_record:
6302 recordParts -> storeCommands (*command_line);
6305 case CnfarfI_record:
6307 recordParts -> storeCommands (*command_line);
6310 case Cno_save_record:
6312 recordParts -> storeCommands (*command_line);
6315 case Cn_beta_save_record:
6317 recordParts -> storeCommands (*command_line);
6320 case Cn_p_save_record:
6322 recordParts -> storeCommands (*command_line);
6325 case Cn_r_save_record:
6327 recordParts -> storeCommands (*command_line);
6330 case Cn_da_save_record:
6332 recordParts -> storeCommands (*command_line);
6335 case Cn_dr_save_record:
6337 recordParts -> storeCommands (*command_line);
6340 case Cn_q_save_record:
6342 recordParts -> storeCommands (*command_line);
6345 case Cn_b3_save_record:
6347 recordParts -> storeCommands (*command_line);
6351 /******************** Ice Detection ********************/
6352 case CL_clean_record:
6354 recordParts -> storeCommands (*command_line);
6357 case CL_iced_record:
6359 recordParts -> storeCommands (*command_line);
6362 case CD_clean_record:
6364 recordParts -> storeCommands (*command_line);
6367 case CD_iced_record:
6369 recordParts -> storeCommands (*command_line);
6372 case Cm_clean_record:
6374 recordParts -> storeCommands (*command_line);
6377 case Cm_iced_record:
6379 recordParts -> storeCommands (*command_line);
6382 case Ch_clean_record:
6384 recordParts -> storeCommands (*command_line);
6387 case Ch_iced_record:
6389 recordParts -> storeCommands (*command_line);
6392 case Cl_clean_record:
6394 recordParts -> storeCommands (*command_line);
6397 case Cl_iced_record:
6399 recordParts -> storeCommands (*command_line);
6402 case CLclean_wing_record:
6404 recordParts -> storeCommands (*command_line);
6407 case CLiced_wing_record:
6409 recordParts -> storeCommands (*command_line);
6412 case CLclean_tail_record:
6414 recordParts -> storeCommands (*command_line);
6417 case CLiced_tail_record:
6419 recordParts -> storeCommands (*command_line);
6422 case Lift_clean_wing_record:
6424 recordParts -> storeCommands (*command_line);
6427 case Lift_iced_wing_record:
6429 recordParts -> storeCommands (*command_line);
6432 case Lift_clean_tail_record:
6434 recordParts -> storeCommands (*command_line);
6437 case Lift_iced_tail_record:
6439 recordParts -> storeCommands (*command_line);
6442 case Gamma_clean_wing_record:
6444 recordParts -> storeCommands (*command_line);
6447 case Gamma_iced_wing_record:
6449 recordParts -> storeCommands (*command_line);
6452 case Gamma_clean_tail_record:
6454 recordParts -> storeCommands (*command_line);
6457 case Gamma_iced_tail_record:
6459 recordParts -> storeCommands (*command_line);
6462 case w_clean_wing_record:
6464 recordParts -> storeCommands (*command_line);
6467 case w_iced_wing_record:
6469 recordParts -> storeCommands (*command_line);
6472 case w_clean_tail_record:
6474 recordParts -> storeCommands (*command_line);
6477 case w_iced_tail_record:
6479 recordParts -> storeCommands (*command_line);
6482 case V_total_clean_wing_record:
6484 recordParts -> storeCommands (*command_line);
6487 case V_total_iced_wing_record:
6489 recordParts -> storeCommands (*command_line);
6492 case V_total_clean_tail_record:
6494 recordParts -> storeCommands (*command_line);
6497 case V_total_iced_tail_record:
6499 recordParts -> storeCommands (*command_line);
6502 case beta_flow_clean_wing_record:
6504 recordParts -> storeCommands (*command_line);
6507 case beta_flow_clean_wing_deg_record:
6509 recordParts -> storeCommands (*command_line);
6512 case beta_flow_iced_wing_record:
6514 recordParts -> storeCommands (*command_line);
6517 case beta_flow_iced_wing_deg_record:
6519 recordParts -> storeCommands (*command_line);
6522 case beta_flow_clean_tail_record:
6524 recordParts -> storeCommands (*command_line);
6527 case beta_flow_clean_tail_deg_record:
6529 recordParts -> storeCommands (*command_line);
6532 case beta_flow_iced_tail_record:
6534 recordParts -> storeCommands (*command_line);
6537 case beta_flow_iced_tail_deg_record:
6539 recordParts -> storeCommands (*command_line);
6542 case Dbeta_flow_wing_record:
6544 recordParts -> storeCommands (*command_line);
6547 case Dbeta_flow_wing_deg_record:
6549 recordParts -> storeCommands (*command_line);
6552 case Dbeta_flow_tail_record:
6554 recordParts -> storeCommands (*command_line);
6557 case Dbeta_flow_tail_deg_record:
6559 recordParts -> storeCommands (*command_line);
6562 case pct_beta_flow_wing_record:
6564 recordParts -> storeCommands (*command_line);
6567 case pct_beta_flow_tail_record:
6569 recordParts -> storeCommands (*command_line);
6572 case eta_ice_record:
6574 recordParts -> storeCommands (*command_line);
6578 /************************ Forces ***********************/
6579 case F_X_wind_record:
6581 recordParts -> storeCommands (*command_line);
6584 case F_Y_wind_record:
6586 recordParts -> storeCommands (*command_line);
6589 case F_Z_wind_record:
6591 recordParts -> storeCommands (*command_line);
6594 case F_X_aero_record:
6596 recordParts -> storeCommands (*command_line);
6599 case F_Y_aero_record:
6601 recordParts -> storeCommands (*command_line);
6604 case F_Z_aero_record:
6606 recordParts -> storeCommands (*command_line);
6609 case F_X_engine_record:
6611 recordParts -> storeCommands (*command_line);
6614 case F_Y_engine_record:
6616 recordParts -> storeCommands (*command_line);
6619 case F_Z_engine_record:
6621 recordParts -> storeCommands (*command_line);
6624 case F_X_gear_record:
6626 recordParts -> storeCommands (*command_line);
6629 case F_Y_gear_record:
6631 recordParts -> storeCommands (*command_line);
6634 case F_Z_gear_record:
6636 recordParts -> storeCommands (*command_line);
6641 recordParts -> storeCommands (*command_line);
6646 recordParts -> storeCommands (*command_line);
6651 recordParts -> storeCommands (*command_line);
6654 case F_north_record:
6656 recordParts -> storeCommands (*command_line);
6661 recordParts -> storeCommands (*command_line);
6666 recordParts -> storeCommands (*command_line);
6670 /*********************** Moments ***********************/
6671 case M_l_aero_record:
6673 recordParts -> storeCommands (*command_line);
6676 case M_m_aero_record:
6678 recordParts -> storeCommands (*command_line);
6681 case M_n_aero_record:
6683 recordParts -> storeCommands (*command_line);
6686 case M_l_engine_record:
6688 recordParts -> storeCommands (*command_line);
6691 case M_m_engine_record:
6693 recordParts -> storeCommands (*command_line);
6696 case M_n_engine_record:
6698 recordParts -> storeCommands (*command_line);
6701 case M_l_gear_record:
6703 recordParts -> storeCommands (*command_line);
6706 case M_m_gear_record:
6708 recordParts -> storeCommands (*command_line);
6711 case M_n_gear_record:
6713 recordParts -> storeCommands (*command_line);
6718 recordParts -> storeCommands (*command_line);
6723 recordParts -> storeCommands (*command_line);
6728 recordParts -> storeCommands (*command_line);
6731 /****************** Flapper Data ***********************/
6732 /* case flapper_freq_record:
6734 recordParts -> storeCommands (*command_line);
6737 case flapper_phi_record:
6739 recordParts -> storeCommands (*command_line);
6742 case flapper_phi_deg_record:
6744 recordParts -> storeCommands (*command_line);
6747 case flapper_Lift_record:
6749 recordParts -> storeCommands (*command_line);
6752 case flapper_Thrust_record:
6754 recordParts -> storeCommands (*command_line);
6757 case flapper_Inertia_record:
6759 recordParts -> storeCommands (*command_line);
6762 case flapper_Moment_record:
6764 recordParts -> storeCommands (*command_line);
6767 /****************** Flapper Data ***********************/
6770 recordParts -> storeCommands (*command_line);
6775 recordParts -> storeCommands (*command_line);
6780 recordParts -> storeCommands (*command_line);
6786 uiuc_warnings_errors(2, *command_line);
6793 void parse_misc( const string& linetoken2, const string& linetoken3,
6794 const string& aircraft_directory, LIST command_line ) {
6796 istrstream token3(linetoken3.c_str());
6798 switch(misc_map[linetoken2])
6800 case simpleHingeMomentCoef_flag:
6802 if (check_float(linetoken3))
6803 token3 >> token_value;
6805 uiuc_warnings_errors(1, *command_line);
6807 simpleHingeMomentCoef = token_value;
6810 case dfTimefdf_flag:
6812 dfTimefdf = linetoken3;
6813 /* call 1D File Reader with file name (dfTimefdf);
6814 function returns array of dfs (dfArray) and
6815 corresponding time values (TimeArray) and max
6816 number of terms in arrays (ndf) */
6817 uiuc_1DdataFileReader(dfTimefdf,
6819 dfTimefdf_TimeArray,
6823 /*case flapper_flag:
6827 flap_file = aircraft_directory + "flap.dat";
6828 flapper_model = true;
6829 flapper_data = new FlapData(flap_file.c_str());
6832 case flapper_phi_init_flag:
6834 if (check_float(linetoken3))
6835 token3 >> token_value;
6837 uiuc_warnings_errors(1, *command_line);
6839 flapper_phi_init = token_value*DEG_TO_RAD;
6845 uiuc_warnings_errors(2, *command_line);
6852 void uiuc_menu( string aircraft_name )
6854 string aircraft_directory;
6857 int token_value_recordRate;
6858 int token_value_convert1, token_value_convert2, token_value_convert3;
6870 double datafile_xArray[100][100], datafile_yArray[100];
6871 double datafile_zArray[100][100];
6872 int datafile_nxArray[100], datafile_ny;
6874 bool CXfabetaf_first = true;
6875 bool CXfadef_first = true;
6876 bool CXfaqf_first = true;
6877 bool CZfabetaf_first = true;
6878 bool CZfadef_first = true;
6879 bool CZfaqf_first = true;
6880 bool Cmfabetaf_first = true;
6881 bool Cmfadef_first = true;
6882 bool Cmfaqf_first = true;
6883 bool CYfabetaf_first = true;
6884 bool CYfadaf_first = true;
6885 bool CYfadrf_first = true;
6886 bool CYfapf_first = true;
6887 bool CYfarf_first = true;
6888 bool Clfabetaf_first = true;
6889 bool Clfadaf_first = true;
6890 bool Clfadrf_first = true;
6891 bool Clfapf_first = true;
6892 bool Clfarf_first = true;
6893 bool Cnfabetaf_first = true;
6894 bool Cnfadaf_first = true;
6895 bool Cnfadrf_first = true;
6896 bool Cnfapf_first = true;
6897 bool Cnfarf_first = true;
6899 /* the following default setting should eventually be moved to a default or uiuc_init routine */
6901 recordRate = 1; /* record every time step, default */
6902 recordStartTime = 0; /* record from beginning of simulation */
6904 /* set speed at which dynamic pressure terms will be accounted for,
6905 since if velocity is too small, coefficients will go to infinity */
6906 dyn_on_speed = 33; /* 20 kts (33 ft/sec), default */
6907 dyn_on_speed_zero = 0.5 * dyn_on_speed; /* only used if use_dyn_on_speed_curve1 is used */
6908 bootindex = 0; // the index for the bootTime
6912 /* Read the file and get the list of commands */
6913 airplane = new ParseFile(aircraft_name); /* struct that includes all lines of the input file */
6914 command_list = airplane -> getCommands();
6915 /* structs to include all parts included in the input file for specific keyword groups */
6916 initParts = new ParseFile();
6917 geometryParts = new ParseFile();
6918 massParts = new ParseFile();
6919 engineParts = new ParseFile();
6920 aeroDragParts = new ParseFile();
6921 aeroLiftParts = new ParseFile();
6922 aeroPitchParts = new ParseFile();
6923 aeroSideforceParts = new ParseFile();
6924 aeroRollParts = new ParseFile();
6925 aeroYawParts = new ParseFile();
6926 gearParts = new ParseFile();
6927 recordParts = new ParseFile();
6929 if (command_list.begin() == command_list.end())
6931 cerr << "UIUC ERROR: File " << aircraft_name <<" does not exist" << endl;
6935 //construct aircraft-directory
6936 aircraft_directory = aircraft_name;
6937 int index_aircraft_dat = aircraft_directory.find("aircraft.dat");
6938 aircraft_directory.erase(index_aircraft_dat,12);
6940 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
6942 cout << *command_line << endl;
6944 linetoken1 = airplane -> getToken (*command_line, 1);
6945 linetoken2 = airplane -> getToken (*command_line, 2);
6946 linetoken3 = airplane -> getToken (*command_line, 3);
6947 linetoken4 = airplane -> getToken (*command_line, 4);
6948 linetoken5 = airplane -> getToken (*command_line, 5);
6949 linetoken6 = airplane -> getToken (*command_line, 6);
6950 linetoken7 = airplane -> getToken (*command_line, 7);
6951 linetoken8 = airplane -> getToken (*command_line, 8);
6952 linetoken9 = airplane -> getToken (*command_line, 9);
6954 istrstream token3(linetoken3.c_str());
6955 istrstream token4(linetoken4.c_str());
6956 istrstream token5(linetoken5.c_str());
6957 istrstream token6(linetoken6.c_str());
6958 istrstream token7(linetoken7.c_str());
6959 istrstream token8(linetoken8.c_str());
6960 istrstream token9(linetoken9.c_str());
6962 switch (Keyword_map[linetoken1])
6966 parse_init( linetoken2, linetoken3, command_line );
6973 parse_geometry( linetoken2, linetoken3, command_line );
6975 } // end geometry map
6978 case controlSurface_flag:
6980 parse_controlSurface( linetoken2, linetoken3, linetoken4,
6981 linetoken5, linetoken6, aircraft_directory,
6984 } // end controlSurface map
6989 parse_mass( linetoken2, linetoken3, command_line );
6996 parse_engine( linetoken2, linetoken3, linetoken4,
6997 linetoken5, linetoken6, aircraft_directory,
7005 parse_CD( linetoken2, linetoken3, linetoken4,
7006 linetoken5, linetoken6, linetoken7,
7007 linetoken8, linetoken9, aircraft_directory,
7008 CXfabetaf_first, CXfadef_first,
7009 CXfaqf_first, command_line );
7016 parse_CL( linetoken2, linetoken3, linetoken4,
7017 linetoken5, linetoken6, linetoken7,
7018 linetoken8, linetoken9, aircraft_directory,
7019 CZfabetaf_first, CZfadef_first,
7020 CZfaqf_first, command_line );
7027 parse_Cm( linetoken2, linetoken3, linetoken4,
7028 linetoken5, linetoken6, linetoken7,
7029 linetoken8, linetoken9, aircraft_directory,
7030 Cmfabetaf_first, Cmfadef_first,
7031 Cmfaqf_first, command_line );
7038 parse_CY( linetoken2, linetoken3, linetoken4,
7039 linetoken5, linetoken6, linetoken7,
7040 linetoken8, linetoken9, aircraft_directory,
7041 CYfabetaf_first, CYfadaf_first,
7042 CYfadrf_first, CYfapf_first, CYfarf_first,
7050 parse_Cl( linetoken2, linetoken3, linetoken4,
7051 linetoken5, linetoken6, linetoken7,
7052 linetoken8, linetoken9, aircraft_directory,
7053 Clfabetaf_first, Clfadaf_first,
7054 Clfadrf_first, Clfapf_first, Clfarf_first,
7062 parse_Cn( linetoken2, linetoken3, linetoken4,
7063 linetoken5, linetoken6, linetoken7,
7064 linetoken8, linetoken9, aircraft_directory,
7065 Cnfabetaf_first, Cnfadaf_first,
7066 Cnfadrf_first, Cnfapf_first, Cnfarf_first,
7076 if (index < 0 || index >= 16)
7077 uiuc_warnings_errors(1, *command_line);
7078 parse_gear( linetoken2, linetoken3, linetoken4,
7079 index, command_line );
7086 parse_ice( linetoken2, linetoken3, linetoken4,
7094 parse_fog( linetoken2, linetoken3, linetoken4,
7102 static int fout_flag=0;
7106 fout.open("uiuc_record.dat");
7108 parse_record( linetoken2, command_line );
7115 parse_misc( linetoken2, linetoken3, aircraft_directory,
7123 if (linetoken1=="*")
7126 uiuc_warnings_errors(2, *command_line);
7130 } // end keyword map