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
83 ----------------------------------------------------------------------
85 AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
86 Jeff Scott <jscott@mail.com>
87 Robert Deters <rdeters@uiuc.edu>
88 Michael Selig <m-selig@uiuc.edu>
89 David Megginson <david@megginson.com>
90 Ann Peedikayil <peedikay@uiuc.edu>
91 ----------------------------------------------------------------------
95 ----------------------------------------------------------------------
99 ----------------------------------------------------------------------
103 ----------------------------------------------------------------------
105 CALLED BY: uiuc_wrapper.cpp
107 ----------------------------------------------------------------------
109 CALLS TO: aircraft.dat
110 tabulated data files (if needed)
112 ----------------------------------------------------------------------
114 COPYRIGHT: (C) 2000 by Michael Selig
116 This program is free software; you can redistribute it and/or
117 modify it under the terms of the GNU General Public License
118 as published by the Free Software Foundation.
120 This program is distributed in the hope that it will be useful,
121 but WITHOUT ANY WARRANTY; without even the implied warranty of
122 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
123 GNU General Public License for more details.
125 You should have received a copy of the GNU General Public License
126 along with this program; if not, write to the Free Software
127 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
128 USA or view http://www.gnu.org/copyleft/gpl.html.
130 **********************************************************************/
132 #include <simgear/compiler.h>
134 #if defined( __MWERKS__ )
135 // -dw- optimizer chokes (big-time) trying to optimize humongous
136 // loop/switch statements
137 #pragma optimization_level 0
142 #include STL_IOSTREAM
144 #include "uiuc_menu.h"
146 #if !defined (SG_HAVE_NATIVE_SGI_COMPILERS)
156 bool check_float( const string &token)
159 istrstream stream(token.c_str());
160 return (stream >> value);
163 void d_2_to_3( double array2D[100][100], double array3D[][100][100], int index3D)
165 for (register int i=0; i<=99; i++)
167 for (register int j=1; j<=99; j++)
169 array3D[index3D][i][j]=array2D[i][j];
174 void d_1_to_2( double array1D[100], double array2D[][100], int index2D)
176 for (register int i=0; i<=99; i++)
178 array2D[index2D][i]=array1D[i];
182 void d_1_to_1( double array1[100], double array2[100] )
184 for (register int i=0; i<=99; i++)
190 void i_1_to_2( int array1D[100], int array2D[][100], int index2D)
192 for (register int i=0; i<=99; i++)
194 array2D[index2D][i]=array1D[i];
198 void parse_init( const string& linetoken2, const string& linetoken3,
199 LIST command_line ) {
201 istrstream token3(linetoken3.c_str());
202 int token_value_recordRate;
204 switch(init_map[linetoken2])
208 if (check_float(linetoken3))
209 token3 >> token_value;
211 uiuc_warnings_errors(1, *command_line);
213 Dx_pilot = token_value;
214 initParts -> storeCommands (*command_line);
219 if (check_float(linetoken3))
220 token3 >> token_value;
222 uiuc_warnings_errors(1, *command_line);
224 Dy_pilot = token_value;
225 initParts -> storeCommands (*command_line);
230 if (check_float(linetoken3))
231 token3 >> token_value;
233 uiuc_warnings_errors(1, *command_line);
235 Dz_pilot = token_value;
236 initParts -> storeCommands (*command_line);
241 if (check_float(linetoken3))
242 token3 >> token_value;
244 uiuc_warnings_errors(1, *command_line);
247 initParts -> storeCommands (*command_line);
252 if (check_float(linetoken3))
253 token3 >> token_value;
255 uiuc_warnings_errors(1, *command_line);
258 initParts -> storeCommands (*command_line);
263 if (check_float(linetoken3))
264 token3 >> token_value;
266 uiuc_warnings_errors(1, *command_line);
269 initParts -> storeCommands (*command_line);
274 if (check_float(linetoken3))
275 token3 >> token_value;
277 uiuc_warnings_errors(1, *command_line);
279 Altitude = token_value;
280 initParts -> storeCommands (*command_line);
285 if (check_float(linetoken3))
286 token3 >> token_value;
288 uiuc_warnings_errors(1, *command_line);
290 V_north = token_value;
291 initParts -> storeCommands (*command_line);
296 initParts -> storeCommands (*command_line);
297 if (check_float(linetoken3))
298 token3 >> token_value;
300 uiuc_warnings_errors(1, *command_line);
302 V_east = token_value;
307 if (check_float(linetoken3))
308 token3 >> token_value;
310 uiuc_warnings_errors(1, *command_line);
312 V_down = token_value;
313 initParts -> storeCommands (*command_line);
318 if (check_float(linetoken3))
319 token3 >> token_value;
321 uiuc_warnings_errors(1, *command_line);
323 P_body_init_true = true;
324 P_body_init = token_value;
325 initParts -> storeCommands (*command_line);
330 if (check_float(linetoken3))
331 token3 >> token_value;
333 uiuc_warnings_errors(1, *command_line);
335 Q_body_init_true = true;
336 Q_body_init = token_value;
337 initParts -> storeCommands (*command_line);
342 if (check_float(linetoken3))
343 token3 >> token_value;
345 uiuc_warnings_errors(1, *command_line);
347 R_body_init_true = true;
348 R_body_init = token_value;
349 initParts -> storeCommands (*command_line);
354 if (check_float(linetoken3))
355 token3 >> token_value;
357 uiuc_warnings_errors(1, *command_line);
359 Phi_init_true = true;
360 Phi_init = token_value;
361 initParts -> storeCommands (*command_line);
366 if (check_float(linetoken3))
367 token3 >> token_value;
369 uiuc_warnings_errors(1, *command_line);
371 Theta_init_true = true;
372 Theta_init = token_value;
373 initParts -> storeCommands (*command_line);
378 if (check_float(linetoken3))
379 token3 >> token_value;
381 uiuc_warnings_errors(1, *command_line);
383 Psi_init_true = true;
384 Psi_init = token_value;
385 initParts -> storeCommands (*command_line);
390 if (check_float(linetoken3))
391 token3 >> token_value;
393 uiuc_warnings_errors(1, *command_line);
395 Long_trim = token_value;
396 initParts -> storeCommands (*command_line);
399 case recordRate_flag:
401 //can't use check_float since variable is integer
402 token3 >> token_value_recordRate;
403 recordRate = 120 / token_value_recordRate;
406 case recordStartTime_flag:
408 if (check_float(linetoken3))
409 token3 >> token_value;
411 uiuc_warnings_errors(1, *command_line);
413 recordStartTime = token_value;
416 case use_V_rel_wind_2U_flag:
418 use_V_rel_wind_2U = true;
421 case nondim_rate_V_rel_wind_flag:
423 nondim_rate_V_rel_wind = true;
426 case use_abs_U_body_2U_flag:
428 use_abs_U_body_2U = true;
431 case dyn_on_speed_flag:
433 if (check_float(linetoken3))
434 token3 >> token_value;
436 uiuc_warnings_errors(1, *command_line);
438 dyn_on_speed = token_value;
441 case dyn_on_speed_zero_flag:
443 if (check_float(linetoken3))
444 token3 >> token_value;
446 uiuc_warnings_errors(1, *command_line);
448 dyn_on_speed_zero = token_value;
451 case use_dyn_on_speed_curve1_flag:
453 use_dyn_on_speed_curve1 = true;
458 if (check_float(linetoken3))
459 token3 >> token_value;
461 uiuc_warnings_errors(1, *command_line);
463 Alpha_init_true = true;
464 Alpha_init = token_value * DEG_TO_RAD;
469 if (check_float(linetoken3))
470 token3 >> token_value;
472 uiuc_warnings_errors(1, *command_line);
474 Beta_init_true = true;
475 Beta_init = token_value * DEG_TO_RAD;
480 if (check_float(linetoken3))
481 token3 >> token_value;
483 uiuc_warnings_errors(1, *command_line);
485 U_body_init_true = true;
486 U_body_init = token_value;
491 if (check_float(linetoken3))
492 token3 >> token_value;
494 uiuc_warnings_errors(1, *command_line);
496 V_body_init_true = true;
497 V_body_init = token_value;
502 if (check_float(linetoken3))
503 token3 >> token_value;
505 uiuc_warnings_errors(1, *command_line);
507 W_body_init_true = true;
508 W_body_init = token_value;
511 case ignore_unknown_flag:
519 uiuc_warnings_errors(2, *command_line);
525 void parse_geometry( const string& linetoken2, const string& linetoken3,
526 LIST command_line ) {
528 istrstream token3(linetoken3.c_str());
530 switch(geometry_map[linetoken2])
534 if (check_float(linetoken3))
535 token3 >> token_value;
537 uiuc_warnings_errors(1, *command_line);
540 geometryParts -> storeCommands (*command_line);
545 if (check_float(linetoken3))
546 token3 >> token_value;
548 uiuc_warnings_errors(1, *command_line);
551 geometryParts -> storeCommands (*command_line);
556 if (check_float(linetoken3))
557 token3 >> token_value;
559 uiuc_warnings_errors(1, *command_line);
562 geometryParts -> storeCommands (*command_line);
567 if (check_float(linetoken3))
568 token3 >> token_value;
570 uiuc_warnings_errors(1, *command_line);
573 geometryParts -> storeCommands (*command_line);
578 if (check_float(linetoken3))
579 token3 >> token_value;
581 uiuc_warnings_errors(1, *command_line);
584 geometryParts -> storeCommands (*command_line);
589 if (check_float(linetoken3))
590 token3 >> token_value;
592 uiuc_warnings_errors(1, *command_line);
595 geometryParts -> storeCommands (*command_line);
600 if (check_float(linetoken3))
601 token3 >> token_value;
603 uiuc_warnings_errors(1, *command_line);
606 geometryParts -> storeCommands (*command_line);
612 uiuc_warnings_errors(2, *command_line);
618 void parse_controlSurface( const string& linetoken2, const string& linetoken3,
619 const string& linetoken4, const string& linetoken5,
620 const string& linetoken6,
621 const string& aircraft_directory,
622 LIST command_line ) {
624 int token_value_convert1, token_value_convert2;
625 istrstream token3(linetoken3.c_str());
626 istrstream token4(linetoken4.c_str());
627 istrstream token5(linetoken5.c_str());
628 istrstream token6(linetoken6.c_str());
630 switch(controlSurface_map[linetoken2])
634 if (check_float(linetoken3))
635 token3 >> token_value;
637 uiuc_warnings_errors(1, *command_line);
641 if (check_float(linetoken4))
642 token4 >> token_value;
644 uiuc_warnings_errors(1, *command_line);
651 if (check_float(linetoken3))
652 token3 >> token_value;
654 uiuc_warnings_errors(1, *command_line);
658 if (check_float(linetoken4))
659 token4 >> token_value;
661 uiuc_warnings_errors(1, *command_line);
668 if (check_float(linetoken3))
669 token3 >> token_value;
671 uiuc_warnings_errors(1, *command_line);
675 if (check_float(linetoken4))
676 token4 >> token_value;
678 uiuc_warnings_errors(1, *command_line);
683 case set_Long_trim_flag:
685 if (check_float(linetoken3))
686 token3 >> token_value;
688 uiuc_warnings_errors(1, *command_line);
690 set_Long_trim = true;
691 elevator_tab = token_value;
694 case set_Long_trim_deg_flag:
696 if (check_float(linetoken3))
697 token3 >> token_value;
699 uiuc_warnings_errors(1, *command_line);
701 set_Long_trim = true;
702 elevator_tab = token_value * DEG_TO_RAD;
705 case zero_Long_trim_flag:
707 zero_Long_trim = true;
710 case elevator_step_flag:
712 // set step input flag
713 elevator_step = true;
715 // read in step angle in degrees and convert
716 if (check_float(linetoken3))
717 token3 >> token_value;
719 uiuc_warnings_errors(1, *command_line);
721 elevator_step_angle = token_value * DEG_TO_RAD;
723 // read in step start time
724 if (check_float(linetoken4))
725 token4 >> token_value;
727 uiuc_warnings_errors(1, *command_line);
729 elevator_step_startTime = token_value;
732 case elevator_singlet_flag:
734 // set singlet input flag
735 elevator_singlet = true;
737 // read in singlet angle in degrees and convert
738 if (check_float(linetoken3))
739 token3 >> token_value;
741 uiuc_warnings_errors(1, *command_line);
743 elevator_singlet_angle = token_value * DEG_TO_RAD;
745 // read in singlet start time
746 if (check_float(linetoken4))
747 token4 >> token_value;
749 uiuc_warnings_errors(1, *command_line);
751 elevator_singlet_startTime = token_value;
753 // read in singlet duration
754 if (check_float(linetoken5))
755 token5 >> token_value;
757 uiuc_warnings_errors(1, *command_line);
759 elevator_singlet_duration = token_value;
762 case elevator_doublet_flag:
764 // set doublet input flag
765 elevator_doublet = true;
767 // read in doublet angle in degrees and convert
768 if (check_float(linetoken3))
769 token3 >> token_value;
771 uiuc_warnings_errors(1, *command_line);
773 elevator_doublet_angle = token_value * DEG_TO_RAD;
775 // read in doublet start time
776 if (check_float(linetoken4))
777 token4 >> token_value;
779 uiuc_warnings_errors(1, *command_line);
781 elevator_doublet_startTime = token_value;
783 // read in doublet duration
784 if (check_float(linetoken5))
785 token5 >> token_value;
787 uiuc_warnings_errors(1, *command_line);
789 elevator_doublet_duration = token_value;
792 case elevator_input_flag:
794 elevator_input = true;
795 elevator_input_file = aircraft_directory + linetoken3;
796 token4 >> token_value_convert1;
797 token5 >> token_value_convert2;
798 convert_y = uiuc_convert(token_value_convert1);
799 convert_x = uiuc_convert(token_value_convert2);
800 uiuc_1DdataFileReader(elevator_input_file,
801 elevator_input_timeArray,
802 elevator_input_deArray,
803 elevator_input_ntime);
804 token6 >> token_value;
805 elevator_input_startTime = token_value;
808 case aileron_input_flag:
810 aileron_input = true;
811 aileron_input_file = aircraft_directory + linetoken3;
812 token4 >> token_value_convert1;
813 token5 >> token_value_convert2;
814 convert_y = uiuc_convert(token_value_convert1);
815 convert_x = uiuc_convert(token_value_convert2);
816 uiuc_1DdataFileReader(aileron_input_file,
817 aileron_input_timeArray,
818 aileron_input_daArray,
819 aileron_input_ntime);
820 token6 >> token_value;
821 aileron_input_startTime = token_value;
824 case rudder_input_flag:
827 rudder_input_file = aircraft_directory + linetoken3;
828 token4 >> token_value_convert1;
829 token5 >> token_value_convert2;
830 convert_y = uiuc_convert(token_value_convert1);
831 convert_x = uiuc_convert(token_value_convert2);
832 uiuc_1DdataFileReader(rudder_input_file,
833 rudder_input_timeArray,
834 rudder_input_drArray,
836 token6 >> token_value;
837 rudder_input_startTime = token_value;
840 case pilot_elev_no_flag:
842 pilot_elev_no_check = true;
845 case pilot_ail_no_flag:
847 pilot_ail_no_check = true;
850 case pilot_rud_no_flag:
852 pilot_rud_no_check = true;
857 if (check_float(linetoken3))
858 token3 >> token_value;
860 uiuc_warnings_errors(1, *command_line);
862 flap_max = token_value;
867 if (check_float(linetoken3))
868 token3 >> token_value;
870 uiuc_warnings_errors(1, *command_line);
872 flap_rate = token_value;
878 uiuc_warnings_errors(2, *command_line);
884 void parse_mass( const string& linetoken2, const string& linetoken3,
885 LIST command_line ) {
887 istrstream token3(linetoken3.c_str());
889 switch(mass_map[linetoken2])
893 if (check_float(linetoken3))
894 token3 >> token_value;
896 uiuc_warnings_errors(1, *command_line);
898 Weight = token_value;
899 Mass = Weight * INVG;
900 massParts -> storeCommands (*command_line);
905 if (check_float(linetoken3))
906 token3 >> token_value;
908 uiuc_warnings_errors(1, *command_line);
911 massParts -> storeCommands (*command_line);
916 if (check_float(linetoken3))
917 token3 >> token_value;
919 uiuc_warnings_errors(1, *command_line);
922 massParts -> storeCommands (*command_line);
927 if (check_float(linetoken3))
928 token3 >> token_value;
930 uiuc_warnings_errors(1, *command_line);
933 massParts -> storeCommands (*command_line);
938 if (check_float(linetoken3))
939 token3 >> token_value;
941 uiuc_warnings_errors(1, *command_line);
944 massParts -> storeCommands (*command_line);
949 if (check_float(linetoken3))
950 token3 >> token_value;
952 uiuc_warnings_errors(1, *command_line);
955 massParts -> storeCommands (*command_line);
958 case Mass_appMass_ratio_flag:
960 if (check_float(linetoken3))
961 token3 >> token_value;
963 uiuc_warnings_errors(1, *command_line);
965 Mass_appMass_ratio = token_value;
966 massParts -> storeCommands (*command_line);
969 case I_xx_appMass_ratio_flag:
971 if (check_float(linetoken3))
972 token3 >> token_value;
974 uiuc_warnings_errors(1, *command_line);
976 I_xx_appMass_ratio = token_value;
977 massParts -> storeCommands (*command_line);
980 case I_yy_appMass_ratio_flag:
982 if (check_float(linetoken3))
983 token3 >> token_value;
985 uiuc_warnings_errors(1, *command_line);
987 I_yy_appMass_ratio = token_value;
988 massParts -> storeCommands (*command_line);
991 case I_zz_appMass_ratio_flag:
993 if (check_float(linetoken3))
994 token3 >> token_value;
996 uiuc_warnings_errors(1, *command_line);
998 I_zz_appMass_ratio = token_value;
999 massParts -> storeCommands (*command_line);
1002 case Mass_appMass_flag:
1004 if (check_float(linetoken3))
1005 token3 >> token_value;
1007 uiuc_warnings_errors(1, *command_line);
1009 Mass_appMass = token_value;
1010 massParts -> storeCommands (*command_line);
1013 case I_xx_appMass_flag:
1015 if (check_float(linetoken3))
1016 token3 >> token_value;
1018 uiuc_warnings_errors(1, *command_line);
1020 I_xx_appMass = token_value;
1021 massParts -> storeCommands (*command_line);
1024 case I_yy_appMass_flag:
1026 if (check_float(linetoken3))
1027 token3 >> token_value;
1029 uiuc_warnings_errors(1, *command_line);
1031 I_yy_appMass = token_value;
1032 massParts -> storeCommands (*command_line);
1035 case I_zz_appMass_flag:
1037 if (check_float(linetoken3))
1038 token3 >> token_value;
1040 uiuc_warnings_errors(1, *command_line);
1042 I_zz_appMass = token_value;
1043 massParts -> storeCommands (*command_line);
1049 uiuc_warnings_errors(2, *command_line);
1055 void parse_engine( const string& linetoken2, const string& linetoken3,
1056 const string& linetoken4, const string& linetoken5,
1057 const string& linetoken6, const string& aircraft_directory,
1058 LIST command_line ) {
1060 int token_value_convert1, token_value_convert2;
1061 istrstream token3(linetoken3.c_str());
1062 istrstream token4(linetoken4.c_str());
1063 istrstream token5(linetoken5.c_str());
1064 istrstream token6(linetoken6.c_str());
1066 switch(engine_map[linetoken2])
1068 case simpleSingle_flag:
1070 if (check_float(linetoken3))
1071 token3 >> token_value;
1073 uiuc_warnings_errors(1, *command_line);
1075 simpleSingleMaxThrust = token_value;
1076 engineParts -> storeCommands (*command_line);
1081 engineParts -> storeCommands (*command_line);
1086 engineParts -> storeCommands (*command_line);
1089 case Throttle_pct_input_flag:
1091 Throttle_pct_input = true;
1092 Throttle_pct_input_file = aircraft_directory + linetoken3;
1093 token4 >> token_value_convert1;
1094 token5 >> token_value_convert2;
1095 convert_y = uiuc_convert(token_value_convert1);
1096 convert_x = uiuc_convert(token_value_convert2);
1097 uiuc_1DdataFileReader(Throttle_pct_input_file,
1098 Throttle_pct_input_timeArray,
1099 Throttle_pct_input_dTArray,
1100 Throttle_pct_input_ntime);
1101 token6 >> token_value;
1102 Throttle_pct_input_startTime = token_value;
1107 engineParts -> storeCommands (*command_line);
1113 Xp_input_file = aircraft_directory + linetoken3;
1114 token4 >> token_value_convert1;
1115 token5 >> token_value_convert2;
1116 convert_y = uiuc_convert(token_value_convert1);
1117 convert_x = uiuc_convert(token_value_convert2);
1118 uiuc_1DdataFileReader(Xp_input_file,
1122 token6 >> token_value;
1123 Xp_input_startTime = token_value;
1129 Zp_input_file = aircraft_directory + linetoken3;
1130 token4 >> token_value_convert1;
1131 token5 >> token_value_convert2;
1132 convert_y = uiuc_convert(token_value_convert1);
1133 convert_x = uiuc_convert(token_value_convert2);
1134 uiuc_1DdataFileReader(Zp_input_file,
1138 token6 >> token_value;
1139 Zp_input_startTime = token_value;
1145 Mp_input_file = aircraft_directory + linetoken3;
1146 token4 >> token_value_convert1;
1147 token5 >> token_value_convert2;
1148 convert_y = uiuc_convert(token_value_convert1);
1149 convert_x = uiuc_convert(token_value_convert2);
1150 uiuc_1DdataFileReader(Mp_input_file,
1154 token6 >> token_value;
1155 Mp_input_startTime = token_value;
1161 uiuc_warnings_errors(2, *command_line);
1167 void parse_CD( const string& linetoken2, const string& linetoken3,
1168 const string& linetoken4, const string& linetoken5,
1169 const string& linetoken6, const string& linetoken7,
1170 const string& linetoken8, const string& linetoken9,
1171 const string& aircraft_directory,
1172 bool &CXfabetaf_first, bool &CXfadef_first,
1173 bool &CXfaqf_first, LIST command_line ) {
1175 int token_value_convert1, token_value_convert2, token_value_convert3;
1176 double datafile_xArray[100][100], datafile_yArray[100];
1177 double datafile_zArray[100][100];
1178 int datafile_nxArray[100], datafile_ny;
1179 istrstream token3(linetoken3.c_str());
1180 istrstream token4(linetoken4.c_str());
1181 istrstream token5(linetoken5.c_str());
1182 istrstream token6(linetoken6.c_str());
1183 istrstream token7(linetoken7.c_str());
1184 istrstream token8(linetoken8.c_str());
1185 istrstream token9(linetoken9.c_str());
1187 switch(CD_map[linetoken2])
1191 if (check_float(linetoken3))
1192 token3 >> token_value;
1194 uiuc_warnings_errors(1, *command_line);
1198 aeroDragParts -> storeCommands (*command_line);
1203 if (check_float(linetoken3))
1204 token3 >> token_value;
1206 uiuc_warnings_errors(1, *command_line);
1210 aeroDragParts -> storeCommands (*command_line);
1215 if (check_float(linetoken3))
1216 token3 >> token_value;
1218 uiuc_warnings_errors(1, *command_line);
1222 aeroDragParts -> storeCommands (*command_line);
1227 if (check_float(linetoken3))
1228 token3 >> token_value;
1230 uiuc_warnings_errors(1, *command_line);
1232 CD_adot = token_value;
1233 CD_adot_clean = CD_adot;
1234 aeroDragParts -> storeCommands (*command_line);
1239 if (check_float(linetoken3))
1240 token3 >> token_value;
1242 uiuc_warnings_errors(1, *command_line);
1246 aeroDragParts -> storeCommands (*command_line);
1251 if (check_float(linetoken3))
1252 token3 >> token_value;
1254 uiuc_warnings_errors(1, *command_line);
1256 CD_ih = token_value;
1257 aeroDragParts -> storeCommands (*command_line);
1262 if (check_float(linetoken3))
1263 token3 >> token_value;
1265 uiuc_warnings_errors(1, *command_line);
1267 CD_de = token_value;
1268 CD_de_clean = CD_de;
1269 aeroDragParts -> storeCommands (*command_line);
1274 CDfa = aircraft_directory + linetoken3;
1275 token4 >> token_value_convert1;
1276 token5 >> token_value_convert2;
1277 convert_y = uiuc_convert(token_value_convert1);
1278 convert_x = uiuc_convert(token_value_convert2);
1279 /* call 1D File Reader with file name (CDfa) and conversion
1280 factors; function returns array of alphas (aArray) and
1281 corresponding CD values (CDArray) and max number of
1282 terms in arrays (nAlpha) */
1283 uiuc_1DdataFileReader(CDfa,
1287 aeroDragParts -> storeCommands (*command_line);
1292 CDfCL = aircraft_directory + linetoken3;
1293 token4 >> token_value_convert1;
1294 token5 >> token_value_convert2;
1295 convert_y = uiuc_convert(token_value_convert1);
1296 convert_x = uiuc_convert(token_value_convert2);
1297 /* call 1D File Reader with file name (CDfCL) and conversion
1298 factors; function returns array of CLs (CLArray) and
1299 corresponding CD values (CDArray) and max number of
1300 terms in arrays (nCL) */
1301 uiuc_1DdataFileReader(CDfCL,
1305 aeroDragParts -> storeCommands (*command_line);
1310 CDfade = aircraft_directory + linetoken3;
1311 token4 >> token_value_convert1;
1312 token5 >> token_value_convert2;
1313 token6 >> token_value_convert3;
1314 convert_z = uiuc_convert(token_value_convert1);
1315 convert_x = uiuc_convert(token_value_convert2);
1316 convert_y = uiuc_convert(token_value_convert3);
1317 /* call 2D File Reader with file name (CDfade) and
1318 conversion factors; function returns array of
1319 elevator deflections (deArray) and corresponding
1320 alpha (aArray) and delta CD (CDArray) values and
1321 max number of terms in alpha arrays (nAlphaArray)
1322 and deflection array (nde) */
1323 uiuc_2DdataFileReader(CDfade,
1329 aeroDragParts -> storeCommands (*command_line);
1334 CDfdf = aircraft_directory + linetoken3;
1335 token4 >> token_value_convert1;
1336 token5 >> token_value_convert2;
1337 convert_y = uiuc_convert(token_value_convert1);
1338 convert_x = uiuc_convert(token_value_convert2);
1339 /* call 1D File Reader with file name (CDfdf) and conversion
1340 factors; function returns array of dfs (dfArray) and
1341 corresponding CD values (CDArray) and max number of
1342 terms in arrays (ndf) */
1343 uiuc_1DdataFileReader(CDfdf,
1347 aeroDragParts -> storeCommands (*command_line);
1352 CDfadf = aircraft_directory + linetoken3;
1353 token4 >> token_value_convert1;
1354 token5 >> token_value_convert2;
1355 token6 >> token_value_convert3;
1356 convert_z = uiuc_convert(token_value_convert1);
1357 convert_x = uiuc_convert(token_value_convert2);
1358 convert_y = uiuc_convert(token_value_convert3);
1359 /* call 2D File Reader with file name (CDfadf) and
1360 conversion factors; function returns array of
1361 flap deflections (dfArray) and corresponding
1362 alpha (aArray) and delta CD (CDArray) values and
1363 max number of terms in alpha arrays (nAlphaArray)
1364 and deflection array (ndf) */
1365 uiuc_2DdataFileReader(CDfadf,
1371 aeroDragParts -> storeCommands (*command_line);
1376 if (check_float(linetoken3))
1377 token3 >> token_value;
1379 uiuc_warnings_errors(1, *command_line);
1383 aeroDragParts -> storeCommands (*command_line);
1388 if (check_float(linetoken3))
1389 token3 >> token_value;
1391 uiuc_warnings_errors(1, *command_line);
1395 aeroDragParts -> storeCommands (*command_line);
1400 if (check_float(linetoken3))
1401 token3 >> token_value;
1403 uiuc_warnings_errors(1, *command_line);
1407 aeroDragParts -> storeCommands (*command_line);
1412 if (check_float(linetoken3))
1413 token3 >> token_value;
1415 uiuc_warnings_errors(1, *command_line);
1417 CX_a2 = token_value;
1418 CX_a2_clean = CX_a2;
1419 aeroDragParts -> storeCommands (*command_line);
1424 if (check_float(linetoken3))
1425 token3 >> token_value;
1427 uiuc_warnings_errors(1, *command_line);
1429 CX_a3 = token_value;
1430 CX_a3_clean = CX_a3;
1431 aeroDragParts -> storeCommands (*command_line);
1436 if (check_float(linetoken3))
1437 token3 >> token_value;
1439 uiuc_warnings_errors(1, *command_line);
1441 CX_adot = token_value;
1442 CX_adot_clean = CX_adot;
1443 aeroDragParts -> storeCommands (*command_line);
1448 if (check_float(linetoken3))
1449 token3 >> token_value;
1451 uiuc_warnings_errors(1, *command_line);
1455 aeroDragParts -> storeCommands (*command_line);
1460 if (check_float(linetoken3))
1461 token3 >> token_value;
1463 uiuc_warnings_errors(1, *command_line);
1465 CX_de = token_value;
1466 CX_de_clean = CX_de;
1467 aeroDragParts -> storeCommands (*command_line);
1472 if (check_float(linetoken3))
1473 token3 >> token_value;
1475 uiuc_warnings_errors(1, *command_line);
1477 CX_dr = token_value;
1478 CX_dr_clean = CX_dr;
1479 aeroDragParts -> storeCommands (*command_line);
1484 if (check_float(linetoken3))
1485 token3 >> token_value;
1487 uiuc_warnings_errors(1, *command_line);
1489 CX_df = token_value;
1490 CX_df_clean = CX_df;
1491 aeroDragParts -> storeCommands (*command_line);
1496 if (check_float(linetoken3))
1497 token3 >> token_value;
1499 uiuc_warnings_errors(1, *command_line);
1501 CX_adf = token_value;
1502 CX_adf_clean = CX_adf;
1503 aeroDragParts -> storeCommands (*command_line);
1506 case CXfabetaf_flag:
1508 int CXfabetaf_index, i;
1509 string CXfabetaf_file;
1511 CXfabetaf_file = aircraft_directory + linetoken3;
1512 token4 >> CXfabetaf_index;
1513 if (CXfabetaf_index < 1 || CXfabetaf_index >= 30)
1514 uiuc_warnings_errors(1, *command_line);
1515 if (CXfabetaf_index > CXfabetaf_nf)
1516 CXfabetaf_nf = CXfabetaf_index;
1517 token5 >> flap_value;
1518 CXfabetaf_fArray[CXfabetaf_index] = flap_value;
1519 token6 >> token_value_convert1;
1520 token7 >> token_value_convert2;
1521 token8 >> token_value_convert3;
1522 token9 >> CXfabetaf_nice;
1523 convert_z = uiuc_convert(token_value_convert1);
1524 convert_x = uiuc_convert(token_value_convert2);
1525 convert_y = uiuc_convert(token_value_convert3);
1526 /* call 2D File Reader with file name (CXfabetaf_file) and
1527 conversion factors; function returns array of
1528 elevator deflections (deArray) and corresponding
1529 alpha (aArray) and delta CZ (CZArray) values and
1530 max number of terms in alpha arrays (nAlphaArray)
1531 and delfection array (nde) */
1532 uiuc_2DdataFileReader(CXfabetaf_file,
1538 d_2_to_3(datafile_xArray, CXfabetaf_aArray, CXfabetaf_index);
1539 d_1_to_2(datafile_yArray, CXfabetaf_betaArray, CXfabetaf_index);
1540 d_2_to_3(datafile_zArray, CXfabetaf_CXArray, CXfabetaf_index);
1541 i_1_to_2(datafile_nxArray, CXfabetaf_nAlphaArray, CXfabetaf_index);
1542 CXfabetaf_nbeta[CXfabetaf_index] = datafile_ny;
1543 if (CXfabetaf_first==true)
1545 if (CXfabetaf_nice == 1)
1547 CXfabetaf_na_nice = datafile_nxArray[1];
1548 CXfabetaf_nb_nice = datafile_ny;
1549 d_1_to_1(datafile_yArray, CXfabetaf_bArray_nice);
1550 for (i=1; i<=CXfabetaf_na_nice; i++)
1551 CXfabetaf_aArray_nice[i] = datafile_xArray[1][i];
1553 aeroDragParts -> storeCommands (*command_line);
1554 CXfabetaf_first=false;
1560 int CXfadef_index, i;
1561 string CXfadef_file;
1563 CXfadef_file = aircraft_directory + linetoken3;
1564 token4 >> CXfadef_index;
1565 if (CXfadef_index < 0 || CXfadef_index >= 30)
1566 uiuc_warnings_errors(1, *command_line);
1567 if (CXfadef_index > CXfadef_nf)
1568 CXfadef_nf = CXfadef_index;
1569 token5 >> flap_value;
1570 CXfadef_fArray[CXfadef_index] = flap_value;
1571 token6 >> token_value_convert1;
1572 token7 >> token_value_convert2;
1573 token8 >> token_value_convert3;
1574 token9 >> CXfadef_nice;
1575 convert_z = uiuc_convert(token_value_convert1);
1576 convert_x = uiuc_convert(token_value_convert2);
1577 convert_y = uiuc_convert(token_value_convert3);
1578 /* call 2D File Reader with file name (CXfadef_file) and
1579 conversion factors; function returns array of
1580 elevator deflections (deArray) and corresponding
1581 alpha (aArray) and delta CZ (CZArray) values and
1582 max number of terms in alpha arrays (nAlphaArray)
1583 and delfection array (nde) */
1584 uiuc_2DdataFileReader(CXfadef_file,
1590 d_2_to_3(datafile_xArray, CXfadef_aArray, CXfadef_index);
1591 d_1_to_2(datafile_yArray, CXfadef_deArray, CXfadef_index);
1592 d_2_to_3(datafile_zArray, CXfadef_CXArray, CXfadef_index);
1593 i_1_to_2(datafile_nxArray, CXfadef_nAlphaArray, CXfadef_index);
1594 CXfadef_nde[CXfadef_index] = datafile_ny;
1595 if (CXfadef_first==true)
1597 if (CXfadef_nice == 1)
1599 CXfadef_na_nice = datafile_nxArray[1];
1600 CXfadef_nde_nice = datafile_ny;
1601 d_1_to_1(datafile_yArray, CXfadef_deArray_nice);
1602 for (i=1; i<=CXfadef_na_nice; i++)
1603 CXfadef_aArray_nice[i] = datafile_xArray[1][i];
1605 aeroDragParts -> storeCommands (*command_line);
1606 CXfadef_first=false;
1612 int CXfaqf_index, i;
1615 CXfaqf_file = aircraft_directory + linetoken3;
1616 token4 >> CXfaqf_index;
1617 if (CXfaqf_index < 0 || CXfaqf_index >= 30)
1618 uiuc_warnings_errors(1, *command_line);
1619 if (CXfaqf_index > CXfaqf_nf)
1620 CXfaqf_nf = CXfaqf_index;
1621 token5 >> flap_value;
1622 CXfaqf_fArray[CXfaqf_index] = flap_value;
1623 token6 >> token_value_convert1;
1624 token7 >> token_value_convert2;
1625 token8 >> token_value_convert3;
1626 token9 >> CXfaqf_nice;
1627 convert_z = uiuc_convert(token_value_convert1);
1628 convert_x = uiuc_convert(token_value_convert2);
1629 convert_y = uiuc_convert(token_value_convert3);
1630 /* call 2D File Reader with file name (CXfaqf_file) and
1631 conversion factors; function returns array of
1632 elevator deflections (deArray) and corresponding
1633 alpha (aArray) and delta CZ (CZArray) values and
1634 max number of terms in alpha arrays (nAlphaArray)
1635 and delfection array (nde) */
1636 uiuc_2DdataFileReader(CXfaqf_file,
1642 d_2_to_3(datafile_xArray, CXfaqf_aArray, CXfaqf_index);
1643 d_1_to_2(datafile_yArray, CXfaqf_qArray, CXfaqf_index);
1644 d_2_to_3(datafile_zArray, CXfaqf_CXArray, CXfaqf_index);
1645 i_1_to_2(datafile_nxArray, CXfaqf_nAlphaArray, CXfaqf_index);
1646 CXfaqf_nq[CXfaqf_index] = datafile_ny;
1647 if (CXfaqf_first==true)
1649 if (CXfaqf_nice == 1)
1651 CXfaqf_na_nice = datafile_nxArray[1];
1652 CXfaqf_nq_nice = datafile_ny;
1653 d_1_to_1(datafile_yArray, CXfaqf_qArray_nice);
1654 for (i=1; i<=CXfaqf_na_nice; i++)
1655 CXfaqf_aArray_nice[i] = datafile_xArray[1][i];
1657 aeroDragParts -> storeCommands (*command_line);
1665 uiuc_warnings_errors(2, *command_line);
1672 void parse_CL( const string& linetoken2, const string& linetoken3,
1673 const string& linetoken4, const string& linetoken5,
1674 const string& linetoken6, const string& linetoken7,
1675 const string& linetoken8, const string& linetoken9,
1676 const string& aircraft_directory,
1677 bool &CZfabetaf_first, bool &CZfadef_first,
1678 bool &CZfaqf_first, LIST command_line ) {
1680 int token_value_convert1, token_value_convert2, token_value_convert3;
1681 double datafile_xArray[100][100], datafile_yArray[100];
1682 double datafile_zArray[100][100];
1683 int datafile_nxArray[100], datafile_ny;
1684 istrstream token3(linetoken3.c_str());
1685 istrstream token4(linetoken4.c_str());
1686 istrstream token5(linetoken5.c_str());
1687 istrstream token6(linetoken6.c_str());
1688 istrstream token7(linetoken7.c_str());
1689 istrstream token8(linetoken8.c_str());
1690 istrstream token9(linetoken9.c_str());
1692 switch(CL_map[linetoken2])
1696 if (check_float(linetoken3))
1697 token3 >> token_value;
1699 uiuc_warnings_errors(1, *command_line);
1703 aeroLiftParts -> storeCommands (*command_line);
1708 if (check_float(linetoken3))
1709 token3 >> token_value;
1711 uiuc_warnings_errors(1, *command_line);
1715 aeroLiftParts -> storeCommands (*command_line);
1720 if (check_float(linetoken3))
1721 token3 >> token_value;
1723 uiuc_warnings_errors(1, *command_line);
1725 CL_adot = token_value;
1726 CL_adot_clean = CL_adot;
1727 aeroLiftParts -> storeCommands (*command_line);
1732 if (check_float(linetoken3))
1733 token3 >> token_value;
1735 uiuc_warnings_errors(1, *command_line);
1739 aeroLiftParts -> storeCommands (*command_line);
1744 if (check_float(linetoken3))
1745 token3 >> token_value;
1747 uiuc_warnings_errors(1, *command_line);
1749 CL_ih = token_value;
1750 aeroLiftParts -> storeCommands (*command_line);
1755 if (check_float(linetoken3))
1756 token3 >> token_value;
1758 uiuc_warnings_errors(1, *command_line);
1760 CL_de = token_value;
1761 CL_de_clean = CL_de;
1762 aeroLiftParts -> storeCommands (*command_line);
1767 CLfa = aircraft_directory + linetoken3;
1768 token4 >> token_value_convert1;
1769 token5 >> token_value_convert2;
1770 convert_y = uiuc_convert(token_value_convert1);
1771 convert_x = uiuc_convert(token_value_convert2);
1772 /* call 1D File Reader with file name (CLfa) and conversion
1773 factors; function returns array of alphas (aArray) and
1774 corresponding CL values (CLArray) and max number of
1775 terms in arrays (nAlpha) */
1776 uiuc_1DdataFileReader(CLfa,
1780 aeroLiftParts -> storeCommands (*command_line);
1785 CLfade = aircraft_directory + linetoken3;
1786 token4 >> token_value_convert1;
1787 token5 >> token_value_convert2;
1788 token6 >> token_value_convert3;
1789 convert_z = uiuc_convert(token_value_convert1);
1790 convert_x = uiuc_convert(token_value_convert2);
1791 convert_y = uiuc_convert(token_value_convert3);
1792 /* call 2D File Reader with file name (CLfade) and
1793 conversion factors; function returns array of
1794 elevator deflections (deArray) and corresponding
1795 alpha (aArray) and delta CL (CLArray) values and
1796 max number of terms in alpha arrays (nAlphaArray)
1797 and deflection array (nde) */
1798 uiuc_2DdataFileReader(CLfade,
1804 aeroLiftParts -> storeCommands (*command_line);
1809 CLfdf = aircraft_directory + linetoken3;
1810 token4 >> token_value_convert1;
1811 token5 >> token_value_convert2;
1812 convert_y = uiuc_convert(token_value_convert1);
1813 convert_x = uiuc_convert(token_value_convert2);
1814 /* call 1D File Reader with file name (CLfdf) and conversion
1815 factors; function returns array of dfs (dfArray) and
1816 corresponding CL values (CLArray) and max number of
1817 terms in arrays (ndf) */
1818 uiuc_1DdataFileReader(CLfdf,
1822 aeroLiftParts -> storeCommands (*command_line);
1824 // additional variables to streamline flap routine in aerodeflections
1826 int temp_counter = 1;
1827 while (temp_counter <= ndf)
1829 dfArray[temp_counter] = CLfdf_dfArray[temp_counter];
1830 TimeArray[temp_counter] = dfTimefdf_TimeArray[temp_counter];
1837 CLfadf = aircraft_directory + linetoken3;
1838 token4 >> token_value_convert1;
1839 token5 >> token_value_convert2;
1840 token6 >> token_value_convert3;
1841 convert_z = uiuc_convert(token_value_convert1);
1842 convert_x = uiuc_convert(token_value_convert2);
1843 convert_y = uiuc_convert(token_value_convert3);
1844 /* call 2D File Reader with file name (CLfadf) and
1845 conversion factors; function returns array of
1846 flap deflections (dfArray) and corresponding
1847 alpha (aArray) and delta CL (CLArray) values and
1848 max number of terms in alpha arrays (nAlphaArray)
1849 and deflection array (ndf) */
1850 uiuc_2DdataFileReader(CLfadf,
1856 aeroLiftParts -> storeCommands (*command_line);
1861 if (check_float(linetoken3))
1862 token3 >> token_value;
1864 uiuc_warnings_errors(1, *command_line);
1868 aeroLiftParts -> storeCommands (*command_line);
1873 if (check_float(linetoken3))
1874 token3 >> token_value;
1876 uiuc_warnings_errors(1, *command_line);
1880 aeroLiftParts -> storeCommands (*command_line);
1885 if (check_float(linetoken3))
1886 token3 >> token_value;
1888 uiuc_warnings_errors(1, *command_line);
1890 CZ_a2 = token_value;
1891 CZ_a2_clean = CZ_a2;
1892 aeroLiftParts -> storeCommands (*command_line);
1897 if (check_float(linetoken3))
1898 token3 >> token_value;
1900 uiuc_warnings_errors(1, *command_line);
1902 CZ_a3 = token_value;
1903 CZ_a3_clean = CZ_a3;
1904 aeroLiftParts -> storeCommands (*command_line);
1909 if (check_float(linetoken3))
1910 token3 >> token_value;
1912 uiuc_warnings_errors(1, *command_line);
1914 CZ_adot = token_value;
1915 CZ_adot_clean = CZ_adot;
1916 aeroLiftParts -> storeCommands (*command_line);
1921 if (check_float(linetoken3))
1922 token3 >> token_value;
1924 uiuc_warnings_errors(1, *command_line);
1928 aeroLiftParts -> storeCommands (*command_line);
1933 if (check_float(linetoken3))
1934 token3 >> token_value;
1936 uiuc_warnings_errors(1, *command_line);
1938 CZ_de = token_value;
1939 CZ_de_clean = CZ_de;
1940 aeroLiftParts -> storeCommands (*command_line);
1945 if (check_float(linetoken3))
1946 token3 >> token_value;
1948 uiuc_warnings_errors(1, *command_line);
1950 CZ_deb2 = token_value;
1951 CZ_deb2_clean = CZ_deb2;
1952 aeroLiftParts -> storeCommands (*command_line);
1957 if (check_float(linetoken3))
1958 token3 >> token_value;
1960 uiuc_warnings_errors(1, *command_line);
1962 CZ_df = token_value;
1963 CZ_df_clean = CZ_df;
1964 aeroLiftParts -> storeCommands (*command_line);
1969 if (check_float(linetoken3))
1970 token3 >> token_value;
1972 uiuc_warnings_errors(1, *command_line);
1974 CZ_adf = token_value;
1975 CZ_adf_clean = CZ_adf;
1976 aeroLiftParts -> storeCommands (*command_line);
1981 CZfa = aircraft_directory + linetoken3;
1982 token4 >> token_value_convert1;
1983 token5 >> token_value_convert2;
1984 convert_y = uiuc_convert(token_value_convert1);
1985 convert_x = uiuc_convert(token_value_convert2);
1986 /* call 1D File Reader with file name (CZfa) and conversion
1987 factors; function returns array of alphas (aArray) and
1988 corresponding CZ values (CZArray) and max number of
1989 terms in arrays (nAlpha) */
1990 uiuc_1DdataFileReader(CZfa,
1994 aeroLiftParts -> storeCommands (*command_line);
1997 case CZfabetaf_flag:
1999 int CZfabetaf_index, i;
2000 string CZfabetaf_file;
2002 CZfabetaf_file = aircraft_directory + linetoken3;
2003 token4 >> CZfabetaf_index;
2004 if (CZfabetaf_index < 0 || CZfabetaf_index >= 30)
2005 uiuc_warnings_errors(1, *command_line);
2006 if (CZfabetaf_index > CZfabetaf_nf)
2007 CZfabetaf_nf = CZfabetaf_index;
2008 token5 >> flap_value;
2009 CZfabetaf_fArray[CZfabetaf_index] = flap_value;
2010 token6 >> token_value_convert1;
2011 token7 >> token_value_convert2;
2012 token8 >> token_value_convert3;
2013 token9 >> CZfabetaf_nice;
2014 convert_z = uiuc_convert(token_value_convert1);
2015 convert_x = uiuc_convert(token_value_convert2);
2016 convert_y = uiuc_convert(token_value_convert3);
2017 /* call 2D File Reader with file name (CZfabetaf_file) and
2018 conversion factors; function returns array of
2019 beta (betaArray) and corresponding
2020 alpha (aArray) and CZ (CZArray) values and
2021 max number of terms in alpha arrays (nAlphaArray)
2022 and beta array (nbeta) */
2023 uiuc_2DdataFileReader(CZfabetaf_file,
2029 d_2_to_3(datafile_xArray, CZfabetaf_aArray, CZfabetaf_index);
2030 d_1_to_2(datafile_yArray, CZfabetaf_betaArray, CZfabetaf_index);
2031 d_2_to_3(datafile_zArray, CZfabetaf_CZArray, CZfabetaf_index);
2032 i_1_to_2(datafile_nxArray, CZfabetaf_nAlphaArray, CZfabetaf_index);
2033 CZfabetaf_nbeta[CZfabetaf_index] = datafile_ny;
2034 if (CZfabetaf_first==true)
2036 if (CZfabetaf_nice == 1)
2038 CZfabetaf_na_nice = datafile_nxArray[1];
2039 CZfabetaf_nb_nice = datafile_ny;
2040 d_1_to_1(datafile_yArray, CZfabetaf_bArray_nice);
2041 for (i=1; i<=CZfabetaf_na_nice; i++)
2042 CZfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2044 aeroLiftParts -> storeCommands (*command_line);
2045 CZfabetaf_first=false;
2051 int CZfadef_index, i;
2052 string CZfadef_file;
2054 CZfadef_file = aircraft_directory + linetoken3;
2055 token4 >> CZfadef_index;
2056 if (CZfadef_index < 0 || CZfadef_index >= 30)
2057 uiuc_warnings_errors(1, *command_line);
2058 if (CZfadef_index > CZfadef_nf)
2059 CZfadef_nf = CZfadef_index;
2060 token5 >> flap_value;
2061 CZfadef_fArray[CZfadef_index] = flap_value;
2062 token6 >> token_value_convert1;
2063 token7 >> token_value_convert2;
2064 token8 >> token_value_convert3;
2065 token9 >> CZfadef_nice;
2066 convert_z = uiuc_convert(token_value_convert1);
2067 convert_x = uiuc_convert(token_value_convert2);
2068 convert_y = uiuc_convert(token_value_convert3);
2069 /* call 2D File Reader with file name (CZfadef_file) and
2070 conversion factors; function returns array of
2071 elevator deflections (deArray) and corresponding
2072 alpha (aArray) and delta CZ (CZArray) values and
2073 max number of terms in alpha arrays (nAlphaArray)
2074 and delfection array (nde) */
2075 uiuc_2DdataFileReader(CZfadef_file,
2081 d_2_to_3(datafile_xArray, CZfadef_aArray, CZfadef_index);
2082 d_1_to_2(datafile_yArray, CZfadef_deArray, CZfadef_index);
2083 d_2_to_3(datafile_zArray, CZfadef_CZArray, CZfadef_index);
2084 i_1_to_2(datafile_nxArray, CZfadef_nAlphaArray, CZfadef_index);
2085 CZfadef_nde[CZfadef_index] = datafile_ny;
2086 if (CZfadef_first==true)
2088 if (CZfadef_nice == 1)
2090 CZfadef_na_nice = datafile_nxArray[1];
2091 CZfadef_nde_nice = datafile_ny;
2092 d_1_to_1(datafile_yArray, CZfadef_deArray_nice);
2093 for (i=1; i<=CZfadef_na_nice; i++)
2094 CZfadef_aArray_nice[i] = datafile_xArray[1][i];
2096 aeroLiftParts -> storeCommands (*command_line);
2097 CZfadef_first=false;
2103 int CZfaqf_index, i;
2106 CZfaqf_file = aircraft_directory + linetoken3;
2107 token4 >> CZfaqf_index;
2108 if (CZfaqf_index < 0 || CZfaqf_index >= 30)
2109 uiuc_warnings_errors(1, *command_line);
2110 if (CZfaqf_index > CZfaqf_nf)
2111 CZfaqf_nf = CZfaqf_index;
2112 token5 >> flap_value;
2113 CZfaqf_fArray[CZfaqf_index] = flap_value;
2114 token6 >> token_value_convert1;
2115 token7 >> token_value_convert2;
2116 token8 >> token_value_convert3;
2117 token9 >> CZfaqf_nice;
2118 convert_z = uiuc_convert(token_value_convert1);
2119 convert_x = uiuc_convert(token_value_convert2);
2120 convert_y = uiuc_convert(token_value_convert3);
2121 /* call 2D File Reader with file name (CZfaqf_file) and
2122 conversion factors; function returns array of
2123 pitch rate (qArray) and corresponding
2124 alpha (aArray) and delta CZ (CZArray) values and
2125 max number of terms in alpha arrays (nAlphaArray)
2126 and pitch rate array (nq) */
2127 uiuc_2DdataFileReader(CZfaqf_file,
2133 d_2_to_3(datafile_xArray, CZfaqf_aArray, CZfaqf_index);
2134 d_1_to_2(datafile_yArray, CZfaqf_qArray, CZfaqf_index);
2135 d_2_to_3(datafile_zArray, CZfaqf_CZArray, CZfaqf_index);
2136 i_1_to_2(datafile_nxArray, CZfaqf_nAlphaArray, CZfaqf_index);
2137 CZfaqf_nq[CZfaqf_index] = datafile_ny;
2138 if (CZfaqf_first==true)
2140 if (CZfaqf_nice == 1)
2142 CZfaqf_na_nice = datafile_nxArray[1];
2143 CZfaqf_nq_nice = datafile_ny;
2144 d_1_to_1(datafile_yArray, CZfaqf_qArray_nice);
2145 for (i=1; i<=CZfaqf_na_nice; i++)
2146 CZfaqf_aArray_nice[i] = datafile_xArray[1][i];
2148 aeroLiftParts -> storeCommands (*command_line);
2156 uiuc_warnings_errors(2, *command_line);
2163 void parse_Cm( const string& linetoken2, const string& linetoken3,
2164 const string& linetoken4, const string& linetoken5,
2165 const string& linetoken6, const string& linetoken7,
2166 const string& linetoken8, const string& linetoken9,
2167 const string& aircraft_directory,
2168 bool &Cmfabetaf_first, bool &Cmfadef_first,
2169 bool &Cmfaqf_first, LIST command_line ) {
2171 int token_value_convert1, token_value_convert2, token_value_convert3;
2172 double datafile_xArray[100][100], datafile_yArray[100];
2173 double datafile_zArray[100][100];
2174 int datafile_nxArray[100], datafile_ny;
2175 istrstream token3(linetoken3.c_str());
2176 istrstream token4(linetoken4.c_str());
2177 istrstream token5(linetoken5.c_str());
2178 istrstream token6(linetoken6.c_str());
2179 istrstream token7(linetoken7.c_str());
2180 istrstream token8(linetoken8.c_str());
2181 istrstream token9(linetoken9.c_str());
2183 switch(Cm_map[linetoken2])
2187 if (check_float(linetoken3))
2188 token3 >> token_value;
2190 uiuc_warnings_errors(1, *command_line);
2194 aeroPitchParts -> storeCommands (*command_line);
2199 if (check_float(linetoken3))
2200 token3 >> token_value;
2202 uiuc_warnings_errors(1, *command_line);
2206 aeroPitchParts -> storeCommands (*command_line);
2211 if (check_float(linetoken3))
2212 token3 >> token_value;
2214 uiuc_warnings_errors(1, *command_line);
2216 Cm_a2 = token_value;
2217 Cm_a2_clean = Cm_a2;
2218 aeroPitchParts -> storeCommands (*command_line);
2223 if (check_float(linetoken3))
2224 token3 >> token_value;
2226 uiuc_warnings_errors(1, *command_line);
2228 Cm_adot = token_value;
2229 Cm_adot_clean = Cm_adot;
2230 aeroPitchParts -> storeCommands (*command_line);
2235 if (check_float(linetoken3))
2236 token3 >> token_value;
2238 uiuc_warnings_errors(1, *command_line);
2242 aeroPitchParts -> storeCommands (*command_line);
2247 if (check_float(linetoken3))
2248 token3 >> token_value;
2250 uiuc_warnings_errors(1, *command_line);
2252 Cm_ih = token_value;
2253 aeroPitchParts -> storeCommands (*command_line);
2258 if (check_float(linetoken3))
2259 token3 >> token_value;
2261 uiuc_warnings_errors(1, *command_line);
2263 Cm_de = token_value;
2264 Cm_de_clean = Cm_de;
2265 aeroPitchParts -> storeCommands (*command_line);
2270 if (check_float(linetoken3))
2271 token3 >> token_value;
2273 uiuc_warnings_errors(1, *command_line);
2275 Cm_b2 = token_value;
2276 Cm_b2_clean = Cm_b2;
2277 aeroPitchParts -> storeCommands (*command_line);
2282 if (check_float(linetoken3))
2283 token3 >> token_value;
2285 uiuc_warnings_errors(1, *command_line);
2289 aeroPitchParts -> storeCommands (*command_line);
2294 if (check_float(linetoken3))
2295 token3 >> token_value;
2297 uiuc_warnings_errors(1, *command_line);
2299 Cm_df = token_value;
2300 Cm_df_clean = Cm_df;
2301 aeroPitchParts -> storeCommands (*command_line);
2306 Cmfa = aircraft_directory + linetoken3;
2307 token4 >> token_value_convert1;
2308 token5 >> token_value_convert2;
2309 convert_y = uiuc_convert(token_value_convert1);
2310 convert_x = uiuc_convert(token_value_convert2);
2311 /* call 1D File Reader with file name (Cmfa) and conversion
2312 factors; function returns array of alphas (aArray) and
2313 corresponding Cm values (CmArray) and max number of
2314 terms in arrays (nAlpha) */
2315 uiuc_1DdataFileReader(Cmfa,
2319 aeroPitchParts -> storeCommands (*command_line);
2324 Cmfade = aircraft_directory + linetoken3;
2325 token4 >> token_value_convert1;
2326 token5 >> token_value_convert2;
2327 token6 >> token_value_convert3;
2328 convert_z = uiuc_convert(token_value_convert1);
2329 convert_x = uiuc_convert(token_value_convert2);
2330 convert_y = uiuc_convert(token_value_convert3);
2331 /* call 2D File Reader with file name (Cmfade) and
2332 conversion factors; function returns array of
2333 elevator deflections (deArray) and corresponding
2334 alpha (aArray) and delta Cm (CmArray) values and
2335 max number of terms in alpha arrays (nAlphaArray)
2336 and deflection array (nde) */
2337 uiuc_2DdataFileReader(Cmfade,
2343 aeroPitchParts -> storeCommands (*command_line);
2348 Cmfdf = aircraft_directory + linetoken3;
2349 token4 >> token_value_convert1;
2350 token5 >> token_value_convert2;
2351 convert_y = uiuc_convert(token_value_convert1);
2352 convert_x = uiuc_convert(token_value_convert2);
2353 /* call 1D File Reader with file name (Cmfdf) and conversion
2354 factors; function returns array of dfs (dfArray) and
2355 corresponding Cm values (CmArray) and max number of
2356 terms in arrays (ndf) */
2357 uiuc_1DdataFileReader(Cmfdf,
2361 aeroPitchParts -> storeCommands (*command_line);
2366 Cmfadf = aircraft_directory + linetoken3;
2367 token4 >> token_value_convert1;
2368 token5 >> token_value_convert2;
2369 token6 >> token_value_convert3;
2370 convert_z = uiuc_convert(token_value_convert1);
2371 convert_x = uiuc_convert(token_value_convert2);
2372 convert_y = uiuc_convert(token_value_convert3);
2373 /* call 2D File Reader with file name (Cmfadf) and
2374 conversion factors; function returns array of
2375 flap deflections (dfArray) and corresponding
2376 alpha (aArray) and delta Cm (CmArray) values and
2377 max number of terms in alpha arrays (nAlphaArray)
2378 and deflection array (ndf) */
2379 uiuc_2DdataFileReader(Cmfadf,
2385 aeroPitchParts -> storeCommands (*command_line);
2388 case Cmfabetaf_flag:
2390 int Cmfabetaf_index, i;
2391 string Cmfabetaf_file;
2393 Cmfabetaf_file = aircraft_directory + linetoken3;
2394 token4 >> Cmfabetaf_index;
2395 if (Cmfabetaf_index < 0 || Cmfabetaf_index >= 30)
2396 uiuc_warnings_errors(1, *command_line);
2397 if (Cmfabetaf_index > Cmfabetaf_nf)
2398 Cmfabetaf_nf = Cmfabetaf_index;
2399 token5 >> flap_value;
2400 Cmfabetaf_fArray[Cmfabetaf_index] = flap_value;
2401 token6 >> token_value_convert1;
2402 token7 >> token_value_convert2;
2403 token8 >> token_value_convert3;
2404 token9 >> Cmfabetaf_nice;
2405 convert_z = uiuc_convert(token_value_convert1);
2406 convert_x = uiuc_convert(token_value_convert2);
2407 convert_y = uiuc_convert(token_value_convert3);
2408 /* call 2D File Reader with file name (Cmfabetaf_file) and
2409 conversion factors; function returns array of
2410 elevator deflections (deArray) and corresponding
2411 alpha (aArray) and delta CZ (CZArray) values and
2412 max number of terms in alpha arrays (nAlphaArray)
2413 and delfection array (nde) */
2414 uiuc_2DdataFileReader(Cmfabetaf_file,
2420 d_2_to_3(datafile_xArray, Cmfabetaf_aArray, Cmfabetaf_index);
2421 d_1_to_2(datafile_yArray, Cmfabetaf_betaArray, Cmfabetaf_index);
2422 d_2_to_3(datafile_zArray, Cmfabetaf_CmArray, Cmfabetaf_index);
2423 i_1_to_2(datafile_nxArray, Cmfabetaf_nAlphaArray, Cmfabetaf_index);
2424 Cmfabetaf_nbeta[Cmfabetaf_index] = datafile_ny;
2425 if (Cmfabetaf_first==true)
2427 if (Cmfabetaf_nice == 1)
2429 Cmfabetaf_na_nice = datafile_nxArray[1];
2430 Cmfabetaf_nb_nice = datafile_ny;
2431 d_1_to_1(datafile_yArray, Cmfabetaf_bArray_nice);
2432 for (i=1; i<=Cmfabetaf_na_nice; i++)
2433 Cmfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2435 aeroPitchParts -> storeCommands (*command_line);
2436 Cmfabetaf_first=false;
2442 int Cmfadef_index, i;
2443 string Cmfadef_file;
2445 Cmfadef_file = aircraft_directory + linetoken3;
2446 token4 >> Cmfadef_index;
2447 if (Cmfadef_index < 0 || Cmfadef_index >= 30)
2448 uiuc_warnings_errors(1, *command_line);
2449 if (Cmfadef_index > Cmfadef_nf)
2450 Cmfadef_nf = Cmfadef_index;
2451 token5 >> flap_value;
2452 Cmfadef_fArray[Cmfadef_index] = flap_value;
2453 token6 >> token_value_convert1;
2454 token7 >> token_value_convert2;
2455 token8 >> token_value_convert3;
2456 token9 >> Cmfadef_nice;
2457 convert_z = uiuc_convert(token_value_convert1);
2458 convert_x = uiuc_convert(token_value_convert2);
2459 convert_y = uiuc_convert(token_value_convert3);
2460 /* call 2D File Reader with file name (Cmfadef_file) and
2461 conversion factors; function returns array of
2462 elevator deflections (deArray) and corresponding
2463 alpha (aArray) and delta CZ (CZArray) values and
2464 max number of terms in alpha arrays (nAlphaArray)
2465 and delfection array (nde) */
2466 uiuc_2DdataFileReader(Cmfadef_file,
2472 d_2_to_3(datafile_xArray, Cmfadef_aArray, Cmfadef_index);
2473 d_1_to_2(datafile_yArray, Cmfadef_deArray, Cmfadef_index);
2474 d_2_to_3(datafile_zArray, Cmfadef_CmArray, Cmfadef_index);
2475 i_1_to_2(datafile_nxArray, Cmfadef_nAlphaArray, Cmfadef_index);
2476 Cmfadef_nde[Cmfadef_index] = datafile_ny;
2477 if (Cmfadef_first==true)
2479 if (Cmfadef_nice == 1)
2481 Cmfadef_na_nice = datafile_nxArray[1];
2482 Cmfadef_nde_nice = datafile_ny;
2483 d_1_to_1(datafile_yArray, Cmfadef_deArray_nice);
2484 for (i=1; i<=Cmfadef_na_nice; i++)
2485 Cmfadef_aArray_nice[i] = datafile_xArray[1][i];
2487 aeroPitchParts -> storeCommands (*command_line);
2488 Cmfadef_first=false;
2494 int Cmfaqf_index, i;
2497 Cmfaqf_file = aircraft_directory + linetoken3;
2498 token4 >> Cmfaqf_index;
2499 if (Cmfaqf_index < 0 || Cmfaqf_index >= 30)
2500 uiuc_warnings_errors(1, *command_line);
2501 if (Cmfaqf_index > Cmfaqf_nf)
2502 Cmfaqf_nf = Cmfaqf_index;
2503 token5 >> flap_value;
2504 Cmfaqf_fArray[Cmfaqf_index] = flap_value;
2505 token6 >> token_value_convert1;
2506 token7 >> token_value_convert2;
2507 token8 >> token_value_convert3;
2508 token9 >> Cmfaqf_nice;
2509 convert_z = uiuc_convert(token_value_convert1);
2510 convert_x = uiuc_convert(token_value_convert2);
2511 convert_y = uiuc_convert(token_value_convert3);
2512 /* call 2D File Reader with file name (Cmfaqf_file) and
2513 conversion factors; function returns array of
2514 elevator deflections (deArray) and corresponding
2515 alpha (aArray) and delta CZ (CZArray) values and
2516 max number of terms in alpha arrays (nAlphaArray)
2517 and delfection array (nde) */
2518 uiuc_2DdataFileReader(Cmfaqf_file,
2524 d_2_to_3(datafile_xArray, Cmfaqf_aArray, Cmfaqf_index);
2525 d_1_to_2(datafile_yArray, Cmfaqf_qArray, Cmfaqf_index);
2526 d_2_to_3(datafile_zArray, Cmfaqf_CmArray, Cmfaqf_index);
2527 i_1_to_2(datafile_nxArray, Cmfaqf_nAlphaArray, Cmfaqf_index);
2528 Cmfaqf_nq[Cmfaqf_index] = datafile_ny;
2529 if (Cmfaqf_first==true)
2531 if (Cmfaqf_nice == 1)
2533 Cmfaqf_na_nice = datafile_nxArray[1];
2534 Cmfaqf_nq_nice = datafile_ny;
2535 d_1_to_1(datafile_yArray, Cmfaqf_qArray_nice);
2536 for (i=1; i<=Cmfaqf_na_nice; i++)
2537 Cmfaqf_aArray_nice[i] = datafile_xArray[1][i];
2539 aeroPitchParts -> storeCommands (*command_line);
2547 uiuc_warnings_errors(2, *command_line);
2554 void parse_CY( const string& linetoken2, const string& linetoken3,
2555 const string& linetoken4, const string& linetoken5,
2556 const string& linetoken6, const string& linetoken7,
2557 const string& linetoken8, const string& linetoken9,
2558 const string& aircraft_directory,
2559 bool &CYfabetaf_first, bool &CYfadaf_first,
2560 bool &CYfadrf_first, bool &CYfapf_first,
2561 bool &CYfarf_first, LIST command_line ) {
2563 int token_value_convert1, token_value_convert2, token_value_convert3;
2564 double datafile_xArray[100][100], datafile_yArray[100];
2565 double datafile_zArray[100][100];
2566 int datafile_nxArray[100], datafile_ny;
2567 istrstream token3(linetoken3.c_str());
2568 istrstream token4(linetoken4.c_str());
2569 istrstream token5(linetoken5.c_str());
2570 istrstream token6(linetoken6.c_str());
2571 istrstream token7(linetoken7.c_str());
2572 istrstream token8(linetoken8.c_str());
2573 istrstream token9(linetoken9.c_str());
2575 switch(CY_map[linetoken2])
2579 if (check_float(linetoken3))
2580 token3 >> token_value;
2582 uiuc_warnings_errors(1, *command_line);
2586 aeroSideforceParts -> storeCommands (*command_line);
2591 if (check_float(linetoken3))
2592 token3 >> token_value;
2594 uiuc_warnings_errors(1, *command_line);
2596 CY_beta = token_value;
2597 CY_beta_clean = CY_beta;
2598 aeroSideforceParts -> storeCommands (*command_line);
2603 if (check_float(linetoken3))
2604 token3 >> token_value;
2606 uiuc_warnings_errors(1, *command_line);
2610 aeroSideforceParts -> storeCommands (*command_line);
2615 if (check_float(linetoken3))
2616 token3 >> token_value;
2618 uiuc_warnings_errors(1, *command_line);
2622 aeroSideforceParts -> storeCommands (*command_line);
2627 if (check_float(linetoken3))
2628 token3 >> token_value;
2630 uiuc_warnings_errors(1, *command_line);
2632 CY_da = token_value;
2633 CY_da_clean = CY_da;
2634 aeroSideforceParts -> storeCommands (*command_line);
2639 if (check_float(linetoken3))
2640 token3 >> token_value;
2642 uiuc_warnings_errors(2, *command_line);
2644 CY_dr = token_value;
2645 CY_dr_clean = CY_dr;
2646 aeroSideforceParts -> storeCommands (*command_line);
2651 if (check_float(linetoken3))
2652 token3 >> token_value;
2654 uiuc_warnings_errors(2, *command_line);
2656 CY_dra = token_value;
2657 CY_dra_clean = CY_dra;
2658 aeroSideforceParts -> storeCommands (*command_line);
2663 if (check_float(linetoken3))
2664 token3 >> token_value;
2666 uiuc_warnings_errors(2, *command_line);
2668 CY_bdot = token_value;
2669 CY_bdot_clean = CY_bdot;
2670 aeroSideforceParts -> storeCommands (*command_line);
2675 CYfada = aircraft_directory + linetoken3;
2676 token4 >> token_value_convert1;
2677 token5 >> token_value_convert2;
2678 token6 >> token_value_convert3;
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 (CYfada) and
2683 conversion factors; function returns array of
2684 aileron deflections (daArray) and corresponding
2685 alpha (aArray) and delta CY (CYArray) values and
2686 max number of terms in alpha arrays (nAlphaArray)
2687 and deflection array (nda) */
2688 uiuc_2DdataFileReader(CYfada,
2694 aeroSideforceParts -> storeCommands (*command_line);
2697 case CYfbetadr_flag:
2699 CYfbetadr = aircraft_directory + linetoken3;
2700 token4 >> token_value_convert1;
2701 token5 >> token_value_convert2;
2702 token6 >> token_value_convert3;
2703 convert_z = uiuc_convert(token_value_convert1);
2704 convert_x = uiuc_convert(token_value_convert2);
2705 convert_y = uiuc_convert(token_value_convert3);
2706 /* call 2D File Reader with file name (CYfbetadr) and
2707 conversion factors; function returns array of
2708 rudder deflections (drArray) and corresponding
2709 beta (betaArray) and delta CY (CYArray) values and
2710 max number of terms in beta arrays (nBetaArray)
2711 and deflection array (ndr) */
2712 uiuc_2DdataFileReader(CYfbetadr,
2713 CYfbetadr_betaArray,
2716 CYfbetadr_nBetaArray,
2718 aeroSideforceParts -> storeCommands (*command_line);
2721 case CYfabetaf_flag:
2723 int CYfabetaf_index, i;
2724 string CYfabetaf_file;
2726 CYfabetaf_file = aircraft_directory + linetoken3;
2727 token4 >> CYfabetaf_index;
2728 if (CYfabetaf_index < 0 || CYfabetaf_index >= 30)
2729 uiuc_warnings_errors(1, *command_line);
2730 if (CYfabetaf_index > CYfabetaf_nf)
2731 CYfabetaf_nf = CYfabetaf_index;
2732 token5 >> flap_value;
2733 CYfabetaf_fArray[CYfabetaf_index] = flap_value;
2734 token6 >> token_value_convert1;
2735 token7 >> token_value_convert2;
2736 token8 >> token_value_convert3;
2737 token9 >> CYfabetaf_nice;
2738 convert_z = uiuc_convert(token_value_convert1);
2739 convert_x = uiuc_convert(token_value_convert2);
2740 convert_y = uiuc_convert(token_value_convert3);
2741 /* call 2D File Reader with file name (CYfabetaf_file) and
2742 conversion factors; function returns array of
2743 elevator deflections (deArray) and corresponding
2744 alpha (aArray) and delta CZ (CZArray) values and
2745 max number of terms in alpha arrays (nAlphaArray)
2746 and delfection array (nde) */
2747 uiuc_2DdataFileReader(CYfabetaf_file,
2753 d_2_to_3(datafile_xArray, CYfabetaf_aArray, CYfabetaf_index);
2754 d_1_to_2(datafile_yArray, CYfabetaf_betaArray, CYfabetaf_index);
2755 d_2_to_3(datafile_zArray, CYfabetaf_CYArray, CYfabetaf_index);
2756 i_1_to_2(datafile_nxArray, CYfabetaf_nAlphaArray, CYfabetaf_index);
2757 CYfabetaf_nbeta[CYfabetaf_index] = datafile_ny;
2758 if (CYfabetaf_first==true)
2760 if (CYfabetaf_nice == 1)
2762 CYfabetaf_na_nice = datafile_nxArray[1];
2763 CYfabetaf_nb_nice = datafile_ny;
2764 d_1_to_1(datafile_yArray, CYfabetaf_bArray_nice);
2765 for (i=1; i<=CYfabetaf_na_nice; i++)
2766 CYfabetaf_aArray_nice[i] = datafile_xArray[1][i];
2768 aeroSideforceParts -> storeCommands (*command_line);
2769 CYfabetaf_first=false;
2775 int CYfadaf_index, i;
2776 string CYfadaf_file;
2778 CYfadaf_file = aircraft_directory + linetoken3;
2779 token4 >> CYfadaf_index;
2780 if (CYfadaf_index < 0 || CYfadaf_index >= 30)
2781 uiuc_warnings_errors(1, *command_line);
2782 if (CYfadaf_index > CYfadaf_nf)
2783 CYfadaf_nf = CYfadaf_index;
2784 token5 >> flap_value;
2785 CYfadaf_fArray[CYfadaf_index] = flap_value;
2786 token6 >> token_value_convert1;
2787 token7 >> token_value_convert2;
2788 token8 >> token_value_convert3;
2789 token9 >> CYfadaf_nice;
2790 convert_z = uiuc_convert(token_value_convert1);
2791 convert_x = uiuc_convert(token_value_convert2);
2792 convert_y = uiuc_convert(token_value_convert3);
2793 /* call 2D File Reader with file name (CYfadaf_file) and
2794 conversion factors; function returns array of
2795 elevator deflections (deArray) and corresponding
2796 alpha (aArray) and delta CZ (CZArray) values and
2797 max number of terms in alpha arrays (nAlphaArray)
2798 and delfection array (nde) */
2799 uiuc_2DdataFileReader(CYfadaf_file,
2805 d_2_to_3(datafile_xArray, CYfadaf_aArray, CYfadaf_index);
2806 d_1_to_2(datafile_yArray, CYfadaf_daArray, CYfadaf_index);
2807 d_2_to_3(datafile_zArray, CYfadaf_CYArray, CYfadaf_index);
2808 i_1_to_2(datafile_nxArray, CYfadaf_nAlphaArray, CYfadaf_index);
2809 CYfadaf_nda[CYfadaf_index] = datafile_ny;
2810 if (CYfadaf_first==true)
2812 if (CYfadaf_nice == 1)
2814 CYfadaf_na_nice = datafile_nxArray[1];
2815 CYfadaf_nda_nice = datafile_ny;
2816 d_1_to_1(datafile_yArray, CYfadaf_daArray_nice);
2817 for (i=1; i<=CYfadaf_na_nice; i++)
2818 CYfadaf_aArray_nice[i] = datafile_xArray[1][i];
2820 aeroSideforceParts -> storeCommands (*command_line);
2821 CYfadaf_first=false;
2827 int CYfadrf_index, i;
2828 string CYfadrf_file;
2830 CYfadrf_file = aircraft_directory + linetoken3;
2831 token4 >> CYfadrf_index;
2832 if (CYfadrf_index < 0 || CYfadrf_index >= 30)
2833 uiuc_warnings_errors(1, *command_line);
2834 if (CYfadrf_index > CYfadrf_nf)
2835 CYfadrf_nf = CYfadrf_index;
2836 token5 >> flap_value;
2837 CYfadrf_fArray[CYfadrf_index] = flap_value;
2838 token6 >> token_value_convert1;
2839 token7 >> token_value_convert2;
2840 token8 >> token_value_convert3;
2841 token9 >> CYfadrf_nice;
2842 convert_z = uiuc_convert(token_value_convert1);
2843 convert_x = uiuc_convert(token_value_convert2);
2844 convert_y = uiuc_convert(token_value_convert3);
2845 /* call 2D File Reader with file name (CYfadrf_file) and
2846 conversion factors; function returns array of
2847 elevator deflections (deArray) and corresponding
2848 alpha (aArray) and delta CZ (CZArray) values and
2849 max number of terms in alpha arrays (nAlphaArray)
2850 and delfection array (nde) */
2851 uiuc_2DdataFileReader(CYfadrf_file,
2857 d_2_to_3(datafile_xArray, CYfadrf_aArray, CYfadrf_index);
2858 d_1_to_2(datafile_yArray, CYfadrf_drArray, CYfadrf_index);
2859 d_2_to_3(datafile_zArray, CYfadrf_CYArray, CYfadrf_index);
2860 i_1_to_2(datafile_nxArray, CYfadrf_nAlphaArray, CYfadrf_index);
2861 CYfadrf_ndr[CYfadrf_index] = datafile_ny;
2862 if (CYfadrf_first==true)
2864 if (CYfadrf_nice == 1)
2866 CYfadrf_na_nice = datafile_nxArray[1];
2867 CYfadrf_ndr_nice = datafile_ny;
2868 d_1_to_1(datafile_yArray, CYfadrf_drArray_nice);
2869 for (i=1; i<=CYfadrf_na_nice; i++)
2870 CYfadrf_aArray_nice[i] = datafile_xArray[1][i];
2872 aeroSideforceParts -> storeCommands (*command_line);
2873 CYfadrf_first=false;
2879 int CYfapf_index, i;
2882 CYfapf_file = aircraft_directory + linetoken3;
2883 token4 >> CYfapf_index;
2884 if (CYfapf_index < 0 || CYfapf_index >= 30)
2885 uiuc_warnings_errors(1, *command_line);
2886 if (CYfapf_index > CYfapf_nf)
2887 CYfapf_nf = CYfapf_index;
2888 token5 >> flap_value;
2889 CYfapf_fArray[CYfapf_index] = flap_value;
2890 token6 >> token_value_convert1;
2891 token7 >> token_value_convert2;
2892 token8 >> token_value_convert3;
2893 token9 >> CYfapf_nice;
2894 convert_z = uiuc_convert(token_value_convert1);
2895 convert_x = uiuc_convert(token_value_convert2);
2896 convert_y = uiuc_convert(token_value_convert3);
2897 /* call 2D File Reader with file name (CYfapf_file) and
2898 conversion factors; function returns array of
2899 elevator deflections (deArray) and corresponding
2900 alpha (aArray) and delta CZ (CZArray) values and
2901 max number of terms in alpha arrays (nAlphaArray)
2902 and delfection array (nde) */
2903 uiuc_2DdataFileReader(CYfapf_file,
2909 d_2_to_3(datafile_xArray, CYfapf_aArray, CYfapf_index);
2910 d_1_to_2(datafile_yArray, CYfapf_pArray, CYfapf_index);
2911 d_2_to_3(datafile_zArray, CYfapf_CYArray, CYfapf_index);
2912 i_1_to_2(datafile_nxArray, CYfapf_nAlphaArray, CYfapf_index);
2913 CYfapf_np[CYfapf_index] = datafile_ny;
2914 if (CYfapf_first==true)
2916 if (CYfapf_nice == 1)
2918 CYfapf_na_nice = datafile_nxArray[1];
2919 CYfapf_np_nice = datafile_ny;
2920 d_1_to_1(datafile_yArray, CYfapf_pArray_nice);
2921 for (i=1; i<=CYfapf_na_nice; i++)
2922 CYfapf_aArray_nice[i] = datafile_xArray[1][i];
2924 aeroSideforceParts -> storeCommands (*command_line);
2931 int CYfarf_index, i;
2934 CYfarf_file = aircraft_directory + linetoken3;
2935 token4 >> CYfarf_index;
2936 if (CYfarf_index < 0 || CYfarf_index >= 30)
2937 uiuc_warnings_errors(1, *command_line);
2938 if (CYfarf_index > CYfarf_nf)
2939 CYfarf_nf = CYfarf_index;
2940 token5 >> flap_value;
2941 CYfarf_fArray[CYfarf_index] = flap_value;
2942 token6 >> token_value_convert1;
2943 token7 >> token_value_convert2;
2944 token8 >> token_value_convert3;
2945 token9 >> CYfarf_nice;
2946 convert_z = uiuc_convert(token_value_convert1);
2947 convert_x = uiuc_convert(token_value_convert2);
2948 convert_y = uiuc_convert(token_value_convert3);
2949 /* call 2D File Reader with file name (CYfarf_file) and
2950 conversion factors; function returns array of
2951 elevator deflections (deArray) and corresponding
2952 alpha (aArray) and delta CZ (CZArray) values and
2953 max number of terms in alpha arrays (nAlphaArray)
2954 and delfection array (nde) */
2955 uiuc_2DdataFileReader(CYfarf_file,
2961 d_2_to_3(datafile_xArray, CYfarf_aArray, CYfarf_index);
2962 d_1_to_2(datafile_yArray, CYfarf_rArray, CYfarf_index);
2963 d_2_to_3(datafile_zArray, CYfarf_CYArray, CYfarf_index);
2964 i_1_to_2(datafile_nxArray, CYfarf_nAlphaArray, CYfarf_index);
2965 CYfarf_nr[CYfarf_index] = datafile_ny;
2966 if (CYfarf_first==true)
2968 if (CYfarf_nice == 1)
2970 CYfarf_na_nice = datafile_nxArray[1];
2971 CYfarf_nr_nice = datafile_ny;
2972 d_1_to_1(datafile_yArray, CYfarf_rArray_nice);
2973 for (i=1; i<=CYfarf_na_nice; i++)
2974 CYfarf_aArray_nice[i] = datafile_xArray[1][i];
2976 aeroSideforceParts -> storeCommands (*command_line);
2984 uiuc_warnings_errors(2, *command_line);
2990 void parse_Cl( const string& linetoken2, const string& linetoken3,
2991 const string& linetoken4, const string& linetoken5,
2992 const string& linetoken6, const string& linetoken7,
2993 const string& linetoken8, const string& linetoken9,
2994 const string& aircraft_directory,
2995 bool &Clfabetaf_first, bool &Clfadaf_first,
2996 bool &Clfadrf_first, bool &Clfapf_first,
2997 bool &Clfarf_first, LIST command_line ) {
2999 int token_value_convert1, token_value_convert2, token_value_convert3;
3000 double datafile_xArray[100][100], datafile_yArray[100];
3001 double datafile_zArray[100][100];
3002 int datafile_nxArray[100], datafile_ny;
3003 istrstream token3(linetoken3.c_str());
3004 istrstream token4(linetoken4.c_str());
3005 istrstream token5(linetoken5.c_str());
3006 istrstream token6(linetoken6.c_str());
3007 istrstream token7(linetoken7.c_str());
3008 istrstream token8(linetoken8.c_str());
3009 istrstream token9(linetoken9.c_str());
3011 switch(Cl_map[linetoken2])
3015 if (check_float(linetoken3))
3016 token3 >> token_value;
3018 uiuc_warnings_errors(1, *command_line);
3022 aeroRollParts -> storeCommands (*command_line);
3027 if (check_float(linetoken3))
3028 token3 >> token_value;
3030 uiuc_warnings_errors(1, *command_line);
3032 Cl_beta = token_value;
3033 Cl_beta_clean = Cl_beta;
3034 aeroRollParts -> storeCommands (*command_line);
3039 if (check_float(linetoken3))
3040 token3 >> token_value;
3042 uiuc_warnings_errors(1, *command_line);
3046 aeroRollParts -> storeCommands (*command_line);
3051 if (check_float(linetoken3))
3052 token3 >> token_value;
3054 uiuc_warnings_errors(1, *command_line);
3058 aeroRollParts -> storeCommands (*command_line);
3063 if (check_float(linetoken3))
3064 token3 >> token_value;
3066 uiuc_warnings_errors(1, *command_line);
3068 Cl_da = token_value;
3069 Cl_da_clean = Cl_da;
3070 aeroRollParts -> storeCommands (*command_line);
3075 if (check_float(linetoken3))
3076 token3 >> token_value;
3078 uiuc_warnings_errors(1, *command_line);
3080 Cl_dr = token_value;
3081 Cl_dr_clean = Cl_dr;
3082 aeroRollParts -> storeCommands (*command_line);
3087 if (check_float(linetoken3))
3088 token3 >> token_value;
3090 uiuc_warnings_errors(1, *command_line);
3092 Cl_daa = token_value;
3093 Cl_daa_clean = Cl_daa;
3094 aeroRollParts -> storeCommands (*command_line);
3099 Clfada = aircraft_directory + linetoken3;
3100 token4 >> token_value_convert1;
3101 token5 >> token_value_convert2;
3102 token6 >> token_value_convert3;
3103 convert_z = uiuc_convert(token_value_convert1);
3104 convert_x = uiuc_convert(token_value_convert2);
3105 convert_y = uiuc_convert(token_value_convert3);
3106 /* call 2D File Reader with file name (Clfada) and
3107 conversion factors; function returns array of
3108 aileron deflections (daArray) and corresponding
3109 alpha (aArray) and delta Cl (ClArray) values and
3110 max number of terms in alpha arrays (nAlphaArray)
3111 and deflection array (nda) */
3112 uiuc_2DdataFileReader(Clfada,
3118 aeroRollParts -> storeCommands (*command_line);
3121 case Clfbetadr_flag:
3123 Clfbetadr = aircraft_directory + linetoken3;
3124 token4 >> token_value_convert1;
3125 token5 >> token_value_convert2;
3126 token6 >> token_value_convert3;
3127 convert_z = uiuc_convert(token_value_convert1);
3128 convert_x = uiuc_convert(token_value_convert2);
3129 convert_y = uiuc_convert(token_value_convert3);
3130 /* call 2D File Reader with file name (Clfbetadr) and
3131 conversion factors; function returns array of
3132 rudder deflections (drArray) and corresponding
3133 beta (betaArray) and delta Cl (ClArray) values and
3134 max number of terms in beta arrays (nBetaArray)
3135 and deflection array (ndr) */
3136 uiuc_2DdataFileReader(Clfbetadr,
3137 Clfbetadr_betaArray,
3140 Clfbetadr_nBetaArray,
3142 aeroRollParts -> storeCommands (*command_line);
3145 case Clfabetaf_flag:
3147 int Clfabetaf_index, i;
3148 string Clfabetaf_file;
3150 Clfabetaf_file = aircraft_directory + linetoken3;
3151 token4 >> Clfabetaf_index;
3152 if (Clfabetaf_index < 0 || Clfabetaf_index >= 100)
3153 uiuc_warnings_errors(1, *command_line);
3154 if (Clfabetaf_index > Clfabetaf_nf)
3155 Clfabetaf_nf = Clfabetaf_index;
3156 token5 >> flap_value;
3157 Clfabetaf_fArray[Clfabetaf_index] = flap_value;
3158 token6 >> token_value_convert1;
3159 token7 >> token_value_convert2;
3160 token8 >> token_value_convert3;
3161 token9 >> Clfabetaf_nice;
3162 convert_z = uiuc_convert(token_value_convert1);
3163 convert_x = uiuc_convert(token_value_convert2);
3164 convert_y = uiuc_convert(token_value_convert3);
3165 /* call 2D File Reader with file name (Clfabetaf_file) and
3166 conversion factors; function returns array of
3167 elevator deflections (deArray) and corresponding
3168 alpha (aArray) and delta CZ (CZArray) values and
3169 max number of terms in alpha arrays (nAlphaArray)
3170 and delfection array (nde) */
3171 uiuc_2DdataFileReader(Clfabetaf_file,
3177 d_2_to_3(datafile_xArray, Clfabetaf_aArray, Clfabetaf_index);
3178 d_1_to_2(datafile_yArray, Clfabetaf_betaArray, Clfabetaf_index);
3179 d_2_to_3(datafile_zArray, Clfabetaf_ClArray, Clfabetaf_index);
3180 i_1_to_2(datafile_nxArray, Clfabetaf_nAlphaArray, Clfabetaf_index);
3181 Clfabetaf_nbeta[Clfabetaf_index] = datafile_ny;
3182 if (Clfabetaf_first==true)
3184 if (Clfabetaf_nice == 1)
3186 Clfabetaf_na_nice = datafile_nxArray[1];
3187 Clfabetaf_nb_nice = datafile_ny;
3188 d_1_to_1(datafile_yArray, Clfabetaf_bArray_nice);
3189 for (i=1; i<=Clfabetaf_na_nice; i++)
3190 Clfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3192 aeroRollParts -> storeCommands (*command_line);
3193 Clfabetaf_first=false;
3199 int Clfadaf_index, i;
3200 string Clfadaf_file;
3202 Clfadaf_file = aircraft_directory + linetoken3;
3203 token4 >> Clfadaf_index;
3204 if (Clfadaf_index < 0 || Clfadaf_index >= 100)
3205 uiuc_warnings_errors(1, *command_line);
3206 if (Clfadaf_index > Clfadaf_nf)
3207 Clfadaf_nf = Clfadaf_index;
3208 token5 >> flap_value;
3209 Clfadaf_fArray[Clfadaf_index] = flap_value;
3210 token6 >> token_value_convert1;
3211 token7 >> token_value_convert2;
3212 token8 >> token_value_convert3;
3213 token9 >> Clfadaf_nice;
3214 convert_z = uiuc_convert(token_value_convert1);
3215 convert_x = uiuc_convert(token_value_convert2);
3216 convert_y = uiuc_convert(token_value_convert3);
3217 /* call 2D File Reader with file name (Clfadaf_file) and
3218 conversion factors; function returns array of
3219 elevator deflections (deArray) and corresponding
3220 alpha (aArray) and delta CZ (CZArray) values and
3221 max number of terms in alpha arrays (nAlphaArray)
3222 and delfection array (nde) */
3223 uiuc_2DdataFileReader(Clfadaf_file,
3229 d_2_to_3(datafile_xArray, Clfadaf_aArray, Clfadaf_index);
3230 d_1_to_2(datafile_yArray, Clfadaf_daArray, Clfadaf_index);
3231 d_2_to_3(datafile_zArray, Clfadaf_ClArray, Clfadaf_index);
3232 i_1_to_2(datafile_nxArray, Clfadaf_nAlphaArray, Clfadaf_index);
3233 Clfadaf_nda[Clfadaf_index] = datafile_ny;
3234 if (Clfadaf_first==true)
3236 if (Clfadaf_nice == 1)
3238 Clfadaf_na_nice = datafile_nxArray[1];
3239 Clfadaf_nda_nice = datafile_ny;
3240 d_1_to_1(datafile_yArray, Clfadaf_daArray_nice);
3241 for (i=1; i<=Clfadaf_na_nice; i++)
3242 Clfadaf_aArray_nice[i] = datafile_xArray[1][i];
3244 aeroRollParts -> storeCommands (*command_line);
3245 Clfadaf_first=false;
3251 int Clfadrf_index, i;
3252 string Clfadrf_file;
3254 Clfadrf_file = aircraft_directory + linetoken3;
3255 token4 >> Clfadrf_index;
3256 if (Clfadrf_index < 0 || Clfadrf_index >= 100)
3257 uiuc_warnings_errors(1, *command_line);
3258 if (Clfadrf_index > Clfadrf_nf)
3259 Clfadrf_nf = Clfadrf_index;
3260 token5 >> flap_value;
3261 Clfadrf_fArray[Clfadrf_index] = flap_value;
3262 token6 >> token_value_convert1;
3263 token7 >> token_value_convert2;
3264 token8 >> token_value_convert3;
3265 token9 >> Clfadrf_nice;
3266 convert_z = uiuc_convert(token_value_convert1);
3267 convert_x = uiuc_convert(token_value_convert2);
3268 convert_y = uiuc_convert(token_value_convert3);
3269 /* call 2D File Reader with file name (Clfadrf_file) and
3270 conversion factors; function returns array of
3271 elevator deflections (deArray) and corresponding
3272 alpha (aArray) and delta CZ (CZArray) values and
3273 max number of terms in alpha arrays (nAlphaArray)
3274 and delfection array (nde) */
3275 uiuc_2DdataFileReader(Clfadrf_file,
3281 d_2_to_3(datafile_xArray, Clfadrf_aArray, Clfadrf_index);
3282 d_1_to_2(datafile_yArray, Clfadrf_drArray, Clfadrf_index);
3283 d_2_to_3(datafile_zArray, Clfadrf_ClArray, Clfadrf_index);
3284 i_1_to_2(datafile_nxArray, Clfadrf_nAlphaArray, Clfadrf_index);
3285 Clfadrf_ndr[Clfadrf_index] = datafile_ny;
3286 if (Clfadrf_first==true)
3288 if (Clfadrf_nice == 1)
3290 Clfadrf_na_nice = datafile_nxArray[1];
3291 Clfadrf_ndr_nice = datafile_ny;
3292 d_1_to_1(datafile_yArray, Clfadrf_drArray_nice);
3293 for (i=1; i<=Clfadrf_na_nice; i++)
3294 Clfadrf_aArray_nice[i] = datafile_xArray[1][i];
3296 aeroRollParts -> storeCommands (*command_line);
3297 Clfadrf_first=false;
3303 int Clfapf_index, i;
3306 Clfapf_file = aircraft_directory + linetoken3;
3307 token4 >> Clfapf_index;
3308 if (Clfapf_index < 0 || Clfapf_index >= 100)
3309 uiuc_warnings_errors(1, *command_line);
3310 if (Clfapf_index > Clfapf_nf)
3311 Clfapf_nf = Clfapf_index;
3312 token5 >> flap_value;
3313 Clfapf_fArray[Clfapf_index] = flap_value;
3314 token6 >> token_value_convert1;
3315 token7 >> token_value_convert2;
3316 token8 >> token_value_convert3;
3317 token9 >> Clfapf_nice;
3318 convert_z = uiuc_convert(token_value_convert1);
3319 convert_x = uiuc_convert(token_value_convert2);
3320 convert_y = uiuc_convert(token_value_convert3);
3321 /* call 2D File Reader with file name (Clfapf_file) and
3322 conversion factors; function returns array of
3323 elevator deflections (deArray) and corresponding
3324 alpha (aArray) and delta CZ (CZArray) values and
3325 max number of terms in alpha arrays (nAlphaArray)
3326 and delfection array (nde) */
3327 uiuc_2DdataFileReader(Clfapf_file,
3333 d_2_to_3(datafile_xArray, Clfapf_aArray, Clfapf_index);
3334 d_1_to_2(datafile_yArray, Clfapf_pArray, Clfapf_index);
3335 d_2_to_3(datafile_zArray, Clfapf_ClArray, Clfapf_index);
3336 i_1_to_2(datafile_nxArray, Clfapf_nAlphaArray, Clfapf_index);
3337 Clfapf_np[Clfapf_index] = datafile_ny;
3338 if (Clfapf_first==true)
3340 if (Clfapf_nice == 1)
3342 Clfapf_na_nice = datafile_nxArray[1];
3343 Clfapf_np_nice = datafile_ny;
3344 d_1_to_1(datafile_yArray, Clfapf_pArray_nice);
3345 for (i=1; i<=Clfapf_na_nice; i++)
3346 Clfapf_aArray_nice[i] = datafile_xArray[1][i];
3348 aeroRollParts -> storeCommands (*command_line);
3355 int Clfarf_index, i;
3358 Clfarf_file = aircraft_directory + linetoken3;
3359 token4 >> Clfarf_index;
3360 if (Clfarf_index < 0 || Clfarf_index >= 100)
3361 uiuc_warnings_errors(1, *command_line);
3362 if (Clfarf_index > Clfarf_nf)
3363 Clfarf_nf = Clfarf_index;
3364 token5 >> flap_value;
3365 Clfarf_fArray[Clfarf_index] = flap_value;
3366 token6 >> token_value_convert1;
3367 token7 >> token_value_convert2;
3368 token8 >> token_value_convert3;
3369 token9 >> Clfarf_nice;
3370 convert_z = uiuc_convert(token_value_convert1);
3371 convert_x = uiuc_convert(token_value_convert2);
3372 convert_y = uiuc_convert(token_value_convert3);
3373 /* call 2D File Reader with file name (Clfarf_file) and
3374 conversion factors; function returns array of
3375 elevator deflections (deArray) and corresponding
3376 alpha (aArray) and delta CZ (CZArray) values and
3377 max number of terms in alpha arrays (nAlphaArray)
3378 and delfection array (nde) */
3379 uiuc_2DdataFileReader(Clfarf_file,
3385 d_2_to_3(datafile_xArray, Clfarf_aArray, Clfarf_index);
3386 d_1_to_2(datafile_yArray, Clfarf_rArray, Clfarf_index);
3387 d_2_to_3(datafile_zArray, Clfarf_ClArray, Clfarf_index);
3388 i_1_to_2(datafile_nxArray, Clfarf_nAlphaArray, Clfarf_index);
3389 Clfarf_nr[Clfarf_index] = datafile_ny;
3390 if (Clfarf_first==true)
3392 if (Clfarf_nice == 1)
3394 Clfarf_na_nice = datafile_nxArray[1];
3395 Clfarf_nr_nice = datafile_ny;
3396 d_1_to_1(datafile_yArray, Clfarf_rArray_nice);
3397 for (i=1; i<=Clfarf_na_nice; i++)
3398 Clfarf_aArray_nice[i] = datafile_xArray[1][i];
3400 aeroRollParts -> storeCommands (*command_line);
3408 uiuc_warnings_errors(2, *command_line);
3415 void parse_Cn( const string& linetoken2, const string& linetoken3,
3416 const string& linetoken4, const string& linetoken5,
3417 const string& linetoken6, const string& linetoken7,
3418 const string& linetoken8, const string& linetoken9,
3419 const string& aircraft_directory,
3420 bool &Cnfabetaf_first, bool &Cnfadaf_first,
3421 bool &Cnfadrf_first, bool &Cnfapf_first,
3422 bool &Cnfarf_first, LIST command_line ) {
3424 int token_value_convert1, token_value_convert2, token_value_convert3;
3425 double datafile_xArray[100][100], datafile_yArray[100];
3426 double datafile_zArray[100][100];
3427 int datafile_nxArray[100], datafile_ny;
3428 istrstream token3(linetoken3.c_str());
3429 istrstream token4(linetoken4.c_str());
3430 istrstream token5(linetoken5.c_str());
3431 istrstream token6(linetoken6.c_str());
3432 istrstream token7(linetoken7.c_str());
3433 istrstream token8(linetoken8.c_str());
3434 istrstream token9(linetoken9.c_str());
3436 switch(Cn_map[linetoken2])
3440 if (check_float(linetoken3))
3441 token3 >> token_value;
3443 uiuc_warnings_errors(1, *command_line);
3447 aeroYawParts -> storeCommands (*command_line);
3452 if (check_float(linetoken3))
3453 token3 >> token_value;
3455 uiuc_warnings_errors(1, *command_line);
3457 Cn_beta = token_value;
3458 Cn_beta_clean = Cn_beta;
3459 aeroYawParts -> storeCommands (*command_line);
3464 if (check_float(linetoken3))
3465 token3 >> token_value;
3467 uiuc_warnings_errors(1, *command_line);
3471 aeroYawParts -> storeCommands (*command_line);
3476 if (check_float(linetoken3))
3477 token3 >> token_value;
3479 uiuc_warnings_errors(1, *command_line);
3483 aeroYawParts -> storeCommands (*command_line);
3488 if (check_float(linetoken3))
3489 token3 >> token_value;
3491 uiuc_warnings_errors(1, *command_line);
3493 Cn_da = token_value;
3494 Cn_da_clean = Cn_da;
3495 aeroYawParts -> storeCommands (*command_line);
3500 if (check_float(linetoken3))
3501 token3 >> token_value;
3503 uiuc_warnings_errors(1, *command_line);
3505 Cn_dr = token_value;
3506 Cn_dr_clean = Cn_dr;
3507 aeroYawParts -> storeCommands (*command_line);
3512 if (check_float(linetoken3))
3513 token3 >> token_value;
3515 uiuc_warnings_errors(1, *command_line);
3519 aeroYawParts -> storeCommands (*command_line);
3524 if (check_float(linetoken3))
3525 token3 >> token_value;
3527 uiuc_warnings_errors(1, *command_line);
3529 Cn_b3 = token_value;
3530 Cn_b3_clean = Cn_b3;
3531 aeroYawParts -> storeCommands (*command_line);
3536 Cnfada = aircraft_directory + linetoken3;
3537 token4 >> token_value_convert1;
3538 token5 >> token_value_convert2;
3539 token6 >> token_value_convert3;
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 (Cnfada) and
3544 conversion factors; function returns array of
3545 aileron deflections (daArray) and corresponding
3546 alpha (aArray) and delta Cn (CnArray) values and
3547 max number of terms in alpha arrays (nAlphaArray)
3548 and deflection array (nda) */
3549 uiuc_2DdataFileReader(Cnfada,
3555 aeroYawParts -> storeCommands (*command_line);
3558 case Cnfbetadr_flag:
3560 Cnfbetadr = aircraft_directory + linetoken3;
3561 token4 >> token_value_convert1;
3562 token5 >> token_value_convert2;
3563 token6 >> token_value_convert3;
3564 convert_z = uiuc_convert(token_value_convert1);
3565 convert_x = uiuc_convert(token_value_convert2);
3566 convert_y = uiuc_convert(token_value_convert3);
3567 /* call 2D File Reader with file name (Cnfbetadr) and
3568 conversion factors; function returns array of
3569 rudder deflections (drArray) and corresponding
3570 beta (betaArray) and delta Cn (CnArray) values and
3571 max number of terms in beta arrays (nBetaArray)
3572 and deflection array (ndr) */
3573 uiuc_2DdataFileReader(Cnfbetadr,
3574 Cnfbetadr_betaArray,
3577 Cnfbetadr_nBetaArray,
3579 aeroYawParts -> storeCommands (*command_line);
3582 case Cnfabetaf_flag:
3584 int Cnfabetaf_index, i;
3585 string Cnfabetaf_file;
3587 Cnfabetaf_file = aircraft_directory + linetoken3;
3588 token4 >> Cnfabetaf_index;
3589 if (Cnfabetaf_index < 0 || Cnfabetaf_index >= 100)
3590 uiuc_warnings_errors(1, *command_line);
3591 if (Cnfabetaf_index > Cnfabetaf_nf)
3592 Cnfabetaf_nf = Cnfabetaf_index;
3593 token5 >> flap_value;
3594 Cnfabetaf_fArray[Cnfabetaf_index] = flap_value;
3595 token6 >> token_value_convert1;
3596 token7 >> token_value_convert2;
3597 token8 >> token_value_convert3;
3598 token9 >> Cnfabetaf_nice;
3599 convert_z = uiuc_convert(token_value_convert1);
3600 convert_x = uiuc_convert(token_value_convert2);
3601 convert_y = uiuc_convert(token_value_convert3);
3602 /* call 2D File Reader with file name (Cnfabetaf_file) and
3603 conversion factors; function returns array of
3604 elevator deflections (deArray) and corresponding
3605 alpha (aArray) and delta CZ (CZArray) values and
3606 max number of terms in alpha arrays (nAlphaArray)
3607 and delfection array (nde) */
3608 uiuc_2DdataFileReader(Cnfabetaf_file,
3614 d_2_to_3(datafile_xArray, Cnfabetaf_aArray, Cnfabetaf_index);
3615 d_1_to_2(datafile_yArray, Cnfabetaf_betaArray, Cnfabetaf_index);
3616 d_2_to_3(datafile_zArray, Cnfabetaf_CnArray, Cnfabetaf_index);
3617 i_1_to_2(datafile_nxArray, Cnfabetaf_nAlphaArray, Cnfabetaf_index);
3618 Cnfabetaf_nbeta[Cnfabetaf_index] = datafile_ny;
3619 if (Cnfabetaf_first==true)
3621 if (Cnfabetaf_nice == 1)
3623 Cnfabetaf_na_nice = datafile_nxArray[1];
3624 Cnfabetaf_nb_nice = datafile_ny;
3625 d_1_to_1(datafile_yArray, Cnfabetaf_bArray_nice);
3626 for (i=1; i<=Cnfabetaf_na_nice; i++)
3627 Cnfabetaf_aArray_nice[i] = datafile_xArray[1][i];
3629 aeroYawParts -> storeCommands (*command_line);
3630 Cnfabetaf_first=false;
3636 int Cnfadaf_index, i;
3637 string Cnfadaf_file;
3639 Cnfadaf_file = aircraft_directory + linetoken3;
3640 token4 >> Cnfadaf_index;
3641 if (Cnfadaf_index < 0 || Cnfadaf_index >= 100)
3642 uiuc_warnings_errors(1, *command_line);
3643 if (Cnfadaf_index > Cnfadaf_nf)
3644 Cnfadaf_nf = Cnfadaf_index;
3645 token5 >> flap_value;
3646 Cnfadaf_fArray[Cnfadaf_index] = flap_value;
3647 token6 >> token_value_convert1;
3648 token7 >> token_value_convert2;
3649 token8 >> token_value_convert3;
3650 token9 >> Cnfadaf_nice;
3651 convert_z = uiuc_convert(token_value_convert1);
3652 convert_x = uiuc_convert(token_value_convert2);
3653 convert_y = uiuc_convert(token_value_convert3);
3654 /* call 2D File Reader with file name (Cnfadaf_file) and
3655 conversion factors; function returns array of
3656 elevator deflections (deArray) and corresponding
3657 alpha (aArray) and delta CZ (CZArray) values and
3658 max number of terms in alpha arrays (nAlphaArray)
3659 and delfection array (nde) */
3660 uiuc_2DdataFileReader(Cnfadaf_file,
3666 d_2_to_3(datafile_xArray, Cnfadaf_aArray, Cnfadaf_index);
3667 d_1_to_2(datafile_yArray, Cnfadaf_daArray, Cnfadaf_index);
3668 d_2_to_3(datafile_zArray, Cnfadaf_CnArray, Cnfadaf_index);
3669 i_1_to_2(datafile_nxArray, Cnfadaf_nAlphaArray, Cnfadaf_index);
3670 Cnfadaf_nda[Cnfadaf_index] = datafile_ny;
3671 if (Cnfadaf_first==true)
3673 if (Cnfadaf_nice == 1)
3675 Cnfadaf_na_nice = datafile_nxArray[1];
3676 Cnfadaf_nda_nice = datafile_ny;
3677 d_1_to_1(datafile_yArray, Cnfadaf_daArray_nice);
3678 for (i=1; i<=Cnfadaf_na_nice; i++)
3679 Cnfadaf_aArray_nice[i] = datafile_xArray[1][i];
3681 aeroYawParts -> storeCommands (*command_line);
3682 Cnfadaf_first=false;
3688 int Cnfadrf_index, i;
3689 string Cnfadrf_file;
3691 Cnfadrf_file = aircraft_directory + linetoken3;
3692 token4 >> Cnfadrf_index;
3693 if (Cnfadrf_index < 0 || Cnfadrf_index >= 100)
3694 uiuc_warnings_errors(1, *command_line);
3695 if (Cnfadrf_index > Cnfadrf_nf)
3696 Cnfadrf_nf = Cnfadrf_index;
3697 token5 >> flap_value;
3698 Cnfadrf_fArray[Cnfadrf_index] = flap_value;
3699 token6 >> token_value_convert1;
3700 token7 >> token_value_convert2;
3701 token8 >> token_value_convert3;
3702 token9 >> Cnfadrf_nice;
3703 convert_z = uiuc_convert(token_value_convert1);
3704 convert_x = uiuc_convert(token_value_convert2);
3705 convert_y = uiuc_convert(token_value_convert3);
3706 /* call 2D File Reader with file name (Cnfadrf_file) and
3707 conversion factors; function returns array of
3708 elevator deflections (deArray) and corresponding
3709 alpha (aArray) and delta CZ (CZArray) values and
3710 max number of terms in alpha arrays (nAlphaArray)
3711 and delfection array (nde) */
3712 uiuc_2DdataFileReader(Cnfadrf_file,
3718 d_2_to_3(datafile_xArray, Cnfadrf_aArray, Cnfadrf_index);
3719 d_1_to_2(datafile_yArray, Cnfadrf_drArray, Cnfadrf_index);
3720 d_2_to_3(datafile_zArray, Cnfadrf_CnArray, Cnfadrf_index);
3721 i_1_to_2(datafile_nxArray, Cnfadrf_nAlphaArray, Cnfadrf_index);
3722 Cnfadrf_ndr[Cnfadrf_index] = datafile_ny;
3723 if (Cnfadrf_first==true)
3725 if (Cnfadrf_nice == 1)
3727 Cnfadrf_na_nice = datafile_nxArray[1];
3728 Cnfadrf_ndr_nice = datafile_ny;
3729 d_1_to_1(datafile_yArray, Cnfadrf_drArray_nice);
3730 for (i=1; i<=Cnfadrf_na_nice; i++)
3731 Cnfadrf_aArray_nice[i] = datafile_xArray[1][i];
3733 aeroYawParts -> storeCommands (*command_line);
3734 Cnfadrf_first=false;
3740 int Cnfapf_index, i;
3743 Cnfapf_file = aircraft_directory + linetoken3;
3744 token4 >> Cnfapf_index;
3745 if (Cnfapf_index < 0 || Cnfapf_index >= 100)
3746 uiuc_warnings_errors(1, *command_line);
3747 if (Cnfapf_index > Cnfapf_nf)
3748 Cnfapf_nf = Cnfapf_index;
3749 token5 >> flap_value;
3750 Cnfapf_fArray[Cnfapf_index] = flap_value;
3751 token6 >> token_value_convert1;
3752 token7 >> token_value_convert2;
3753 token8 >> token_value_convert3;
3754 token9 >> Cnfapf_nice;
3755 convert_z = uiuc_convert(token_value_convert1);
3756 convert_x = uiuc_convert(token_value_convert2);
3757 convert_y = uiuc_convert(token_value_convert3);
3758 /* call 2D File Reader with file name (Cnfapf_file) and
3759 conversion factors; function returns array of
3760 elevator deflections (deArray) and corresponding
3761 alpha (aArray) and delta CZ (CZArray) values and
3762 max number of terms in alpha arrays (nAlphaArray)
3763 and delfection array (nde) */
3764 uiuc_2DdataFileReader(Cnfapf_file,
3770 d_2_to_3(datafile_xArray, Cnfapf_aArray, Cnfapf_index);
3771 d_1_to_2(datafile_yArray, Cnfapf_pArray, Cnfapf_index);
3772 d_2_to_3(datafile_zArray, Cnfapf_CnArray, Cnfapf_index);
3773 i_1_to_2(datafile_nxArray, Cnfapf_nAlphaArray, Cnfapf_index);
3774 Cnfapf_np[Cnfapf_index] = datafile_ny;
3775 if (Cnfapf_first==true)
3777 if (Cnfapf_nice == 1)
3779 Cnfapf_na_nice = datafile_nxArray[1];
3780 Cnfapf_np_nice = datafile_ny;
3781 d_1_to_1(datafile_yArray, Cnfapf_pArray_nice);
3782 for (i=1; i<=Cnfapf_na_nice; i++)
3783 Cnfapf_aArray_nice[i] = datafile_xArray[1][i];
3785 aeroYawParts -> storeCommands (*command_line);
3792 int Cnfarf_index, i;
3795 Cnfarf_file = aircraft_directory + linetoken3;
3796 token4 >> Cnfarf_index;
3797 if (Cnfarf_index < 0 || Cnfarf_index >= 100)
3798 uiuc_warnings_errors(1, *command_line);
3799 if (Cnfarf_index > Cnfarf_nf)
3800 Cnfarf_nf = Cnfarf_index;
3801 token5 >> flap_value;
3802 Cnfarf_fArray[Cnfarf_index] = flap_value;
3803 token6 >> token_value_convert1;
3804 token7 >> token_value_convert2;
3805 token8 >> token_value_convert3;
3806 token9 >> Cnfarf_nice;
3807 convert_z = uiuc_convert(token_value_convert1);
3808 convert_x = uiuc_convert(token_value_convert2);
3809 convert_y = uiuc_convert(token_value_convert3);
3810 /* call 2D File Reader with file name (Cnfarf_file) and
3811 conversion factors; function returns array of
3812 elevator deflections (deArray) and corresponding
3813 alpha (aArray) and delta CZ (CZArray) values and
3814 max number of terms in alpha arrays (nAlphaArray)
3815 and delfection array (nde) */
3816 uiuc_2DdataFileReader(Cnfarf_file,
3822 d_2_to_3(datafile_xArray, Cnfarf_aArray, Cnfarf_index);
3823 d_1_to_2(datafile_yArray, Cnfarf_rArray, Cnfarf_index);
3824 d_2_to_3(datafile_zArray, Cnfarf_CnArray, Cnfarf_index);
3825 i_1_to_2(datafile_nxArray, Cnfarf_nAlphaArray, Cnfarf_index);
3826 Cnfarf_nr[Cnfarf_index] = datafile_ny;
3827 if (Cnfarf_first==true)
3829 if (Cnfarf_nice == 1)
3831 Cnfarf_na_nice = datafile_nxArray[1];
3832 Cnfarf_nr_nice = datafile_ny;
3833 d_1_to_1(datafile_yArray, Cnfarf_rArray_nice);
3834 for (i=1; i<=Cnfarf_na_nice; i++)
3835 Cnfarf_aArray_nice[i] = datafile_xArray[1][i];
3837 aeroYawParts -> storeCommands (*command_line);
3845 uiuc_warnings_errors(2, *command_line);
3851 void parse_gear( const string& linetoken2, const string& linetoken3,
3852 const string& linetoken4, const int& index,
3853 LIST command_line ) {
3855 istrstream token3(linetoken3.c_str());
3856 istrstream token4(linetoken4.c_str());
3858 switch(gear_map[linetoken2])
3862 if (check_float(linetoken3))
3863 token4 >> token_value;
3865 uiuc_warnings_errors(1, *command_line);
3866 D_gear_v[index][0] = token_value;
3867 gear_model[index] = true;
3872 if (check_float(linetoken3))
3873 token4 >> token_value;
3875 uiuc_warnings_errors(1, *command_line);
3876 D_gear_v[index][1] = token_value;
3877 gear_model[index] = true;
3882 if (check_float(linetoken3))
3883 token4 >> token_value;
3885 uiuc_warnings_errors(1, *command_line);
3886 D_gear_v[index][2] = token_value;
3887 gear_model[index] = true;
3892 if (check_float(linetoken3))
3893 token4 >> token_value;
3895 uiuc_warnings_errors(1, *command_line);
3896 cgear[index] = token_value;
3897 gear_model[index] = true;
3902 if (check_float(linetoken3))
3903 token4 >> token_value;
3905 uiuc_warnings_errors(1, *command_line);
3906 kgear[index] = token_value;
3907 gear_model[index] = true;
3912 if (check_float(linetoken3))
3913 token4 >> token_value;
3915 uiuc_warnings_errors(1, *command_line);
3916 muGear[index] = token_value;
3917 gear_model[index] = true;
3920 case strutLength_flag:
3922 if (check_float(linetoken3))
3923 token4 >> token_value;
3925 uiuc_warnings_errors(1, *command_line);
3926 strutLength[index] = token_value;
3927 gear_model[index] = true;
3933 uiuc_warnings_errors(2, *command_line);
3940 void parse_ice( const string& linetoken2, const string& linetoken3,
3941 const string& linetoken4, LIST command_line ) {
3943 istrstream token3(linetoken3.c_str());
3944 istrstream token4(linetoken4.c_str());
3946 switch(ice_map[linetoken2])
3950 if (check_float(linetoken3))
3951 token3 >> token_value;
3954 uiuc_warnings_errors(1, *command_line);
3957 iceTime = token_value;
3960 case transientTime_flag:
3962 if (check_float(linetoken3))
3963 token3 >> token_value;
3965 uiuc_warnings_errors(1, *command_line);
3967 transientTime = token_value;
3970 case eta_ice_final_flag:
3972 if (check_float(linetoken3))
3973 token3 >> token_value;
3975 uiuc_warnings_errors(1, *command_line);
3977 eta_ice_final = token_value;
3980 case beta_probe_wing_flag:
3982 if (check_float(linetoken3))
3983 token3 >> token_value;
3985 uiuc_warnings_errors(1, *command_line);
3988 x_probe_wing = token_value;
3991 case beta_probe_tail_flag:
3993 if (check_float(linetoken3))
3994 token3 >> token_value;
3996 uiuc_warnings_errors(1, *command_line);
3999 x_probe_tail = token_value;
4004 if (check_float(linetoken3))
4005 token3 >> token_value;
4007 uiuc_warnings_errors(1, *command_line);
4014 if (check_float(linetoken3))
4015 token3 >> token_value;
4017 uiuc_warnings_errors(1, *command_line);
4024 if (check_float(linetoken3))
4025 token3 >> token_value;
4027 uiuc_warnings_errors(1, *command_line);
4029 kCD_a = token_value;
4034 if (check_float(linetoken3))
4035 token3 >> token_value;
4037 uiuc_warnings_errors(1, *command_line);
4039 kCD_adot = token_value;
4044 if (check_float(linetoken3))
4045 token3 >> token_value;
4047 uiuc_warnings_errors(1, *command_line);
4049 kCD_q = token_value;
4054 if (check_float(linetoken3))
4055 token3 >> token_value;
4057 uiuc_warnings_errors(1, *command_line);
4059 kCD_de = token_value;
4064 if (check_float(linetoken3))
4065 token3 >> token_value;
4067 uiuc_warnings_errors(1, *command_line);
4074 if (check_float(linetoken3))
4075 token3 >> token_value;
4077 uiuc_warnings_errors(1, *command_line);
4084 if (check_float(linetoken3))
4085 token3 >> token_value;
4087 uiuc_warnings_errors(1, *command_line);
4089 kCX_a = token_value;
4094 if (check_float(linetoken3))
4095 token3 >> token_value;
4097 uiuc_warnings_errors(1, *command_line);
4099 kCX_a2 = token_value;
4104 if (check_float(linetoken3))
4105 token3 >> token_value;
4107 uiuc_warnings_errors(1, *command_line);
4109 kCX_a3 = token_value;
4114 if (check_float(linetoken3))
4115 token3 >> token_value;
4117 uiuc_warnings_errors(1, *command_line);
4119 kCX_adot = token_value;
4124 if (check_float(linetoken3))
4125 token3 >> token_value;
4127 uiuc_warnings_errors(1, *command_line);
4129 kCX_q = token_value;
4134 if (check_float(linetoken3))
4135 token3 >> token_value;
4137 uiuc_warnings_errors(1, *command_line);
4139 kCX_de = token_value;
4144 if (check_float(linetoken3))
4145 token3 >> token_value;
4147 uiuc_warnings_errors(1, *command_line);
4149 kCX_dr = token_value;
4154 if (check_float(linetoken3))
4155 token3 >> token_value;
4157 uiuc_warnings_errors(1, *command_line);
4159 kCX_df = token_value;
4164 if (check_float(linetoken3))
4165 token3 >> token_value;
4167 uiuc_warnings_errors(1, *command_line);
4169 kCX_adf = token_value;
4174 if (check_float(linetoken3))
4175 token3 >> token_value;
4177 uiuc_warnings_errors(1, *command_line);
4184 if (check_float(linetoken3))
4185 token3 >> token_value;
4187 uiuc_warnings_errors(1, *command_line);
4189 kCL_a = token_value;
4194 if (check_float(linetoken3))
4195 token3 >> token_value;
4197 uiuc_warnings_errors(1, *command_line);
4199 kCL_adot = token_value;
4204 if (check_float(linetoken3))
4205 token3 >> token_value;
4207 uiuc_warnings_errors(1, *command_line);
4209 kCL_q = token_value;
4214 if (check_float(linetoken3))
4215 token3 >> token_value;
4217 uiuc_warnings_errors(1, *command_line);
4219 kCL_de = token_value;
4224 if (check_float(linetoken3))
4225 token3 >> token_value;
4227 uiuc_warnings_errors(1, *command_line);
4234 if (check_float(linetoken3))
4235 token3 >> token_value;
4237 uiuc_warnings_errors(1, *command_line);
4239 kCZ_a = token_value;
4244 if (check_float(linetoken3))
4245 token3 >> token_value;
4247 uiuc_warnings_errors(1, *command_line);
4249 kCZ_a2 = token_value;
4254 if (check_float(linetoken3))
4255 token3 >> token_value;
4257 uiuc_warnings_errors(1, *command_line);
4259 kCZ_a3 = token_value;
4264 if (check_float(linetoken3))
4265 token3 >> token_value;
4267 uiuc_warnings_errors(1, *command_line);
4269 kCZ_adot = token_value;
4274 if (check_float(linetoken3))
4275 token3 >> token_value;
4277 uiuc_warnings_errors(1, *command_line);
4279 kCZ_q = token_value;
4284 if (check_float(linetoken3))
4285 token3 >> token_value;
4287 uiuc_warnings_errors(1, *command_line);
4289 kCZ_de = token_value;
4294 if (check_float(linetoken3))
4295 token3 >> token_value;
4297 uiuc_warnings_errors(1, *command_line);
4299 kCZ_deb2 = token_value;
4304 if (check_float(linetoken3))
4305 token3 >> token_value;
4307 uiuc_warnings_errors(1, *command_line);
4309 kCZ_df = token_value;
4314 if (check_float(linetoken3))
4315 token3 >> token_value;
4317 uiuc_warnings_errors(1, *command_line);
4319 kCZ_adf = token_value;
4324 if (check_float(linetoken3))
4325 token3 >> token_value;
4327 uiuc_warnings_errors(1, *command_line);
4334 if (check_float(linetoken3))
4335 token3 >> token_value;
4337 uiuc_warnings_errors(1, *command_line);
4339 kCm_a = token_value;
4344 if (check_float(linetoken3))
4345 token3 >> token_value;
4347 uiuc_warnings_errors(1, *command_line);
4349 kCm_a2 = token_value;
4354 if (check_float(linetoken3))
4355 token3 >> token_value;
4357 uiuc_warnings_errors(1, *command_line);
4359 kCm_adot = token_value;
4364 if (check_float(linetoken3))
4365 token3 >> token_value;
4367 uiuc_warnings_errors(1, *command_line);
4369 kCm_q = token_value;
4374 if (check_float(linetoken3))
4375 token3 >> token_value;
4377 uiuc_warnings_errors(1, *command_line);
4379 kCm_de = token_value;
4384 if (check_float(linetoken3))
4385 token3 >> token_value;
4387 uiuc_warnings_errors(1, *command_line);
4389 kCm_b2 = token_value;
4394 if (check_float(linetoken3))
4395 token3 >> token_value;
4397 uiuc_warnings_errors(1, *command_line);
4399 kCm_r = token_value;
4404 if (check_float(linetoken3))
4405 token3 >> token_value;
4407 uiuc_warnings_errors(1, *command_line);
4409 kCm_df = token_value;
4414 if (check_float(linetoken3))
4415 token3 >> token_value;
4417 uiuc_warnings_errors(1, *command_line);
4424 if (check_float(linetoken3))
4425 token3 >> token_value;
4427 uiuc_warnings_errors(1, *command_line);
4429 kCY_beta = token_value;
4434 if (check_float(linetoken3))
4435 token3 >> token_value;
4437 uiuc_warnings_errors(1, *command_line);
4439 kCY_p = token_value;
4444 if (check_float(linetoken3))
4445 token3 >> token_value;
4447 uiuc_warnings_errors(1, *command_line);
4449 kCY_r = token_value;
4454 if (check_float(linetoken3))
4455 token3 >> token_value;
4457 uiuc_warnings_errors(1, *command_line);
4459 kCY_da = token_value;
4464 if (check_float(linetoken3))
4465 token3 >> token_value;
4467 uiuc_warnings_errors(1, *command_line);
4469 kCY_dr = token_value;
4474 if (check_float(linetoken3))
4475 token3 >> token_value;
4477 uiuc_warnings_errors(1, *command_line);
4479 kCY_dra = token_value;
4484 if (check_float(linetoken3))
4485 token3 >> token_value;
4487 uiuc_warnings_errors(1, *command_line);
4489 kCY_bdot = token_value;
4494 if (check_float(linetoken3))
4495 token3 >> token_value;
4497 uiuc_warnings_errors(1, *command_line);
4504 if (check_float(linetoken3))
4505 token3 >> token_value;
4507 uiuc_warnings_errors(1, *command_line);
4509 kCl_beta = token_value;
4514 if (check_float(linetoken3))
4515 token3 >> token_value;
4517 uiuc_warnings_errors(1, *command_line);
4519 kCl_p = token_value;
4524 if (check_float(linetoken3))
4525 token3 >> token_value;
4527 uiuc_warnings_errors(1, *command_line);
4529 kCl_r = token_value;
4534 if (check_float(linetoken3))
4535 token3 >> token_value;
4537 uiuc_warnings_errors(1, *command_line);
4539 kCl_da = token_value;
4544 if (check_float(linetoken3))
4545 token3 >> token_value;
4547 uiuc_warnings_errors(1, *command_line);
4549 kCl_dr = token_value;
4554 if (check_float(linetoken3))
4555 token3 >> token_value;
4557 uiuc_warnings_errors(1, *command_line);
4559 kCl_daa = token_value;
4564 if (check_float(linetoken3))
4565 token3 >> token_value;
4567 uiuc_warnings_errors(1, *command_line);
4574 if (check_float(linetoken3))
4575 token3 >> token_value;
4577 uiuc_warnings_errors(1, *command_line);
4579 kCn_beta = token_value;
4584 if (check_float(linetoken3))
4585 token3 >> token_value;
4587 uiuc_warnings_errors(1, *command_line);
4589 kCn_p = token_value;
4594 if (check_float(linetoken3))
4595 token3 >> token_value;
4597 uiuc_warnings_errors(1, *command_line);
4599 kCn_r = token_value;
4604 if (check_float(linetoken3))
4605 token3 >> token_value;
4607 uiuc_warnings_errors(1, *command_line);
4609 kCn_da = token_value;
4614 if (check_float(linetoken3))
4615 token3 >> token_value;
4617 uiuc_warnings_errors(1, *command_line);
4619 kCn_dr = token_value;
4624 if (check_float(linetoken3))
4625 token3 >> token_value;
4627 uiuc_warnings_errors(1, *command_line);
4629 kCn_q = token_value;
4634 if (check_float(linetoken3))
4635 token3 >> token_value;
4637 uiuc_warnings_errors(1, *command_line);
4639 kCn_b3 = token_value;
4645 if (check_float(linetoken4))
4646 token4 >> token_value;
4648 uiuc_warnings_errors(1, *command_line);
4650 if (index < 0 || index >= 20)
4651 uiuc_warnings_errors(1, *command_line);
4652 bootTime[index] = token_value;
4653 bootTrue[index] = true;
4659 uiuc_warnings_errors(2, *command_line);
4666 void parse_fog( const string& linetoken2, const string& linetoken3,
4667 const string& linetoken4, LIST command_line ) {
4669 int token_value_convert1;
4670 istrstream token3(linetoken3.c_str());
4671 istrstream token4(linetoken4.c_str());
4673 switch(fog_map[linetoken2])
4675 case fog_segments_flag:
4677 if (check_float(linetoken3))
4678 token3 >> token_value_convert1;
4680 uiuc_warnings_errors(1, *command_line);
4682 if (token_value_convert1 < 1 || token_value_convert1 > 100)
4683 uiuc_warnings_errors(1, *command_line);
4686 fog_point_index = 0;
4689 fog_segments = token_value_convert1;
4690 fog_time = new double[fog_segments+1];
4692 fog_value = new int[fog_segments+1];
4697 case fog_point_flag:
4699 if (check_float(linetoken3))
4700 token3 >> token_value;
4702 uiuc_warnings_errors(1, *command_line);
4704 if (token_value < 0.1)
4705 uiuc_warnings_errors(1, *command_line);
4707 if (check_float(linetoken4))
4708 token4 >> token_value_convert1;
4710 uiuc_warnings_errors(1, *command_line);
4712 if (token_value_convert1 < -1000 || token_value_convert1 > 1000)
4713 uiuc_warnings_errors(1, *command_line);
4715 if (fog_point_index == fog_segments || fog_point_index == -1)
4716 uiuc_warnings_errors(1, *command_line);
4719 fog_time[fog_point_index] = token_value;
4720 fog_value[fog_point_index] = token_value_convert1;
4727 uiuc_warnings_errors(2, *command_line);
4734 void parse_record( const string& linetoken2, LIST command_line ) {
4736 switch(record_map[linetoken2])
4738 /************************* Time ************************/
4739 case Simtime_record:
4741 recordParts -> storeCommands (*command_line);
4746 recordParts -> storeCommands (*command_line);
4750 /************************* Mass ************************/
4753 recordParts -> storeCommands (*command_line);
4758 recordParts -> storeCommands (*command_line);
4763 recordParts -> storeCommands (*command_line);
4768 recordParts -> storeCommands (*command_line);
4773 recordParts -> storeCommands (*command_line);
4778 recordParts -> storeCommands (*command_line);
4782 /*********************** Geometry **********************/
4783 case Dx_pilot_record:
4785 recordParts -> storeCommands (*command_line);
4788 case Dy_pilot_record:
4790 recordParts -> storeCommands (*command_line);
4793 case Dz_pilot_record:
4795 recordParts -> storeCommands (*command_line);
4800 recordParts -> storeCommands (*command_line);
4805 recordParts -> storeCommands (*command_line);
4810 recordParts -> storeCommands (*command_line);
4814 /********************** Positions **********************/
4815 case Lat_geocentric_record:
4817 recordParts -> storeCommands (*command_line);
4820 case Lon_geocentric_record:
4822 recordParts -> storeCommands (*command_line);
4825 case Radius_to_vehicle_record:
4827 recordParts -> storeCommands (*command_line);
4830 case Latitude_record:
4832 recordParts -> storeCommands (*command_line);
4835 case Longitude_record:
4837 recordParts -> storeCommands (*command_line);
4840 case Altitude_record:
4842 recordParts -> storeCommands (*command_line);
4847 recordParts -> storeCommands (*command_line);
4852 recordParts -> storeCommands (*command_line);
4857 recordParts -> storeCommands (*command_line);
4861 /******************** Accelerations ********************/
4862 case V_dot_north_record:
4864 recordParts -> storeCommands (*command_line);
4867 case V_dot_east_record:
4869 recordParts -> storeCommands (*command_line);
4872 case V_dot_down_record:
4874 recordParts -> storeCommands (*command_line);
4877 case U_dot_body_record:
4879 recordParts -> storeCommands (*command_line);
4882 case V_dot_body_record:
4884 recordParts -> storeCommands (*command_line);
4887 case W_dot_body_record:
4889 recordParts -> storeCommands (*command_line);
4892 case A_X_pilot_record:
4894 recordParts -> storeCommands (*command_line);
4897 case A_Y_pilot_record:
4899 recordParts -> storeCommands (*command_line);
4902 case A_Z_pilot_record:
4904 recordParts -> storeCommands (*command_line);
4909 recordParts -> storeCommands (*command_line);
4914 recordParts -> storeCommands (*command_line);
4919 recordParts -> storeCommands (*command_line);
4922 case N_X_pilot_record:
4924 recordParts -> storeCommands (*command_line);
4927 case N_Y_pilot_record:
4929 recordParts -> storeCommands (*command_line);
4932 case N_Z_pilot_record:
4934 recordParts -> storeCommands (*command_line);
4939 recordParts -> storeCommands (*command_line);
4944 recordParts -> storeCommands (*command_line);
4949 recordParts -> storeCommands (*command_line);
4952 case P_dot_body_record:
4954 recordParts -> storeCommands (*command_line);
4957 case Q_dot_body_record:
4959 recordParts -> storeCommands (*command_line);
4962 case R_dot_body_record:
4964 recordParts -> storeCommands (*command_line);
4968 /********************** Velocities *********************/
4969 case V_north_record:
4971 recordParts -> storeCommands (*command_line);
4976 recordParts -> storeCommands (*command_line);
4981 recordParts -> storeCommands (*command_line);
4984 case V_north_rel_ground_record:
4986 recordParts -> storeCommands (*command_line);
4989 case V_east_rel_ground_record:
4991 recordParts -> storeCommands (*command_line);
4994 case V_down_rel_ground_record:
4996 recordParts -> storeCommands (*command_line);
4999 case V_north_airmass_record:
5001 recordParts -> storeCommands (*command_line);
5004 case V_east_airmass_record:
5006 recordParts -> storeCommands (*command_line);
5009 case V_down_airmass_record:
5011 recordParts -> storeCommands (*command_line);
5014 case V_north_rel_airmass_record:
5016 recordParts -> storeCommands (*command_line);
5019 case V_east_rel_airmass_record:
5021 recordParts -> storeCommands (*command_line);
5024 case V_down_rel_airmass_record:
5026 recordParts -> storeCommands (*command_line);
5031 recordParts -> storeCommands (*command_line);
5036 recordParts -> storeCommands (*command_line);
5041 recordParts -> storeCommands (*command_line);
5046 recordParts -> storeCommands (*command_line);
5051 recordParts -> storeCommands (*command_line);
5056 recordParts -> storeCommands (*command_line);
5059 case V_rel_wind_record:
5061 recordParts -> storeCommands (*command_line);
5064 case V_true_kts_record:
5066 recordParts -> storeCommands (*command_line);
5069 case V_rel_ground_record:
5071 recordParts -> storeCommands (*command_line);
5074 case V_inertial_record:
5076 recordParts -> storeCommands (*command_line);
5079 case V_ground_speed_record:
5081 recordParts -> storeCommands (*command_line);
5084 case V_equiv_record:
5086 recordParts -> storeCommands (*command_line);
5089 case V_equiv_kts_record:
5091 recordParts -> storeCommands (*command_line);
5094 case V_calibrated_record:
5096 recordParts -> storeCommands (*command_line);
5099 case V_calibrated_kts_record:
5101 recordParts -> storeCommands (*command_line);
5104 case P_local_record:
5106 recordParts -> storeCommands (*command_line);
5109 case Q_local_record:
5111 recordParts -> storeCommands (*command_line);
5114 case R_local_record:
5116 recordParts -> storeCommands (*command_line);
5121 recordParts -> storeCommands (*command_line);
5126 recordParts -> storeCommands (*command_line);
5131 recordParts -> storeCommands (*command_line);
5134 case P_total_record:
5136 recordParts -> storeCommands (*command_line);
5139 case Q_total_record:
5141 recordParts -> storeCommands (*command_line);
5144 case R_total_record:
5146 recordParts -> storeCommands (*command_line);
5149 case Phi_dot_record:
5151 recordParts -> storeCommands (*command_line);
5154 case Theta_dot_record:
5156 recordParts -> storeCommands (*command_line);
5159 case Psi_dot_record:
5161 recordParts -> storeCommands (*command_line);
5164 case Latitude_dot_record:
5166 recordParts -> storeCommands (*command_line);
5169 case Longitude_dot_record:
5171 recordParts -> storeCommands (*command_line);
5174 case Radius_dot_record:
5176 recordParts -> storeCommands (*command_line);
5180 /************************ Angles ***********************/
5183 recordParts -> storeCommands (*command_line);
5186 case Alpha_deg_record:
5188 recordParts -> storeCommands (*command_line);
5191 case Alpha_dot_record:
5193 recordParts -> storeCommands (*command_line);
5196 case Alpha_dot_deg_record:
5198 recordParts -> storeCommands (*command_line);
5203 recordParts -> storeCommands (*command_line);
5206 case Beta_deg_record:
5208 recordParts -> storeCommands (*command_line);
5211 case Beta_dot_record:
5213 recordParts -> storeCommands (*command_line);
5216 case Beta_dot_deg_record:
5218 recordParts -> storeCommands (*command_line);
5221 case Gamma_vert_record:
5223 recordParts -> storeCommands (*command_line);
5226 case Gamma_vert_deg_record:
5228 recordParts -> storeCommands (*command_line);
5231 case Gamma_horiz_record:
5233 recordParts -> storeCommands (*command_line);
5236 case Gamma_horiz_deg_record:
5238 recordParts -> storeCommands (*command_line);
5242 /**************** Atmospheric Properties ***************/
5243 case Density_record:
5245 recordParts -> storeCommands (*command_line);
5248 case V_sound_record:
5250 recordParts -> storeCommands (*command_line);
5253 case Mach_number_record:
5255 recordParts -> storeCommands (*command_line);
5258 case Static_pressure_record:
5260 recordParts -> storeCommands (*command_line);
5263 case Total_pressure_record:
5265 recordParts -> storeCommands (*command_line);
5268 case Impact_pressure_record:
5270 recordParts -> storeCommands (*command_line);
5273 case Dynamic_pressure_record:
5275 recordParts -> storeCommands (*command_line);
5278 case Static_temperature_record:
5280 recordParts -> storeCommands (*command_line);
5283 case Total_temperature_record:
5285 recordParts -> storeCommands (*command_line);
5289 /******************** Earth Properties *****************/
5290 case Gravity_record:
5292 recordParts -> storeCommands (*command_line);
5295 case Sea_level_radius_record:
5297 recordParts -> storeCommands (*command_line);
5300 case Earth_position_angle_record:
5302 recordParts -> storeCommands (*command_line);
5305 case Runway_altitude_record:
5307 recordParts -> storeCommands (*command_line);
5310 case Runway_latitude_record:
5312 recordParts -> storeCommands (*command_line);
5315 case Runway_longitude_record:
5317 recordParts -> storeCommands (*command_line);
5320 case Runway_heading_record:
5322 recordParts -> storeCommands (*command_line);
5325 case Radius_to_rwy_record:
5327 recordParts -> storeCommands (*command_line);
5330 case D_pilot_north_of_rwy_record:
5332 recordParts -> storeCommands (*command_line);
5335 case D_pilot_east_of_rwy_record:
5337 recordParts -> storeCommands (*command_line);
5340 case D_pilot_above_rwy_record:
5342 recordParts -> storeCommands (*command_line);
5345 case X_pilot_rwy_record:
5347 recordParts -> storeCommands (*command_line);
5350 case Y_pilot_rwy_record:
5352 recordParts -> storeCommands (*command_line);
5355 case H_pilot_rwy_record:
5357 recordParts -> storeCommands (*command_line);
5360 case D_cg_north_of_rwy_record:
5362 recordParts -> storeCommands (*command_line);
5365 case D_cg_east_of_rwy_record:
5367 recordParts -> storeCommands (*command_line);
5370 case D_cg_above_rwy_record:
5372 recordParts -> storeCommands (*command_line);
5375 case X_cg_rwy_record:
5377 recordParts -> storeCommands (*command_line);
5380 case Y_cg_rwy_record:
5382 recordParts -> storeCommands (*command_line);
5385 case H_cg_rwy_record:
5387 recordParts -> storeCommands (*command_line);
5391 /********************* Engine Inputs *******************/
5392 case Throttle_pct_record:
5394 recordParts -> storeCommands (*command_line);
5397 case Throttle_3_record:
5399 recordParts -> storeCommands (*command_line);
5403 /******************** Control Inputs *******************/
5404 case Long_control_record:
5406 recordParts -> storeCommands (*command_line);
5409 case Long_trim_record:
5411 recordParts -> storeCommands (*command_line);
5414 case Long_trim_deg_record:
5416 recordParts -> storeCommands (*command_line);
5419 case elevator_record:
5421 recordParts -> storeCommands (*command_line);
5424 case elevator_deg_record:
5426 recordParts -> storeCommands (*command_line);
5429 case Lat_control_record:
5431 recordParts -> storeCommands (*command_line);
5434 case aileron_record:
5436 recordParts -> storeCommands (*command_line);
5439 case aileron_deg_record:
5441 recordParts -> storeCommands (*command_line);
5444 case Rudder_pedal_record:
5446 recordParts -> storeCommands (*command_line);
5451 recordParts -> storeCommands (*command_line);
5454 case rudder_deg_record:
5456 recordParts -> storeCommands (*command_line);
5459 case Flap_handle_record:
5461 recordParts -> storeCommands (*command_line);
5466 recordParts -> storeCommands (*command_line);
5469 case flap_deg_record:
5471 recordParts -> storeCommands (*command_line);
5474 case flap_goal_record:
5476 recordParts -> storeCommands (*command_line);
5479 case flap_pos_record:
5481 recordParts -> storeCommands (*command_line);
5485 /****************** Aero Coefficients ******************/
5488 recordParts -> storeCommands (*command_line);
5493 recordParts -> storeCommands (*command_line);
5496 case CDfadeI_record:
5498 recordParts -> storeCommands (*command_line);
5503 recordParts -> storeCommands (*command_line);
5506 case CDfadfI_record:
5508 recordParts -> storeCommands (*command_line);
5513 recordParts -> storeCommands (*command_line);
5516 case CXfabetafI_record:
5518 recordParts -> storeCommands (*command_line);
5521 case CXfadefI_record:
5523 recordParts -> storeCommands (*command_line);
5526 case CXfaqfI_record:
5528 recordParts -> storeCommands (*command_line);
5531 case CDo_save_record:
5533 recordParts -> storeCommands (*command_line);
5536 case CDK_save_record:
5538 recordParts -> storeCommands (*command_line);
5541 case CD_a_save_record:
5543 recordParts -> storeCommands (*command_line);
5546 case CD_adot_save_record:
5548 recordParts -> storeCommands (*command_line);
5551 case CD_q_save_record:
5553 recordParts -> storeCommands (*command_line);
5556 case CD_ih_save_record:
5558 recordParts -> storeCommands (*command_line);
5561 case CD_de_save_record:
5563 recordParts -> storeCommands (*command_line);
5566 case CXo_save_record:
5568 recordParts -> storeCommands (*command_line);
5571 case CXK_save_record:
5573 recordParts -> storeCommands (*command_line);
5576 case CX_a_save_record:
5578 recordParts -> storeCommands (*command_line);
5581 case CX_a2_save_record:
5583 recordParts -> storeCommands (*command_line);
5586 case CX_a3_save_record:
5588 recordParts -> storeCommands (*command_line);
5591 case CX_adot_save_record:
5593 recordParts -> storeCommands (*command_line);
5596 case CX_q_save_record:
5598 recordParts -> storeCommands (*command_line);
5601 case CX_de_save_record:
5603 recordParts -> storeCommands (*command_line);
5606 case CX_dr_save_record:
5608 recordParts -> storeCommands (*command_line);
5611 case CX_df_save_record:
5613 recordParts -> storeCommands (*command_line);
5616 case CX_adf_save_record:
5618 recordParts -> storeCommands (*command_line);
5623 recordParts -> storeCommands (*command_line);
5628 recordParts -> storeCommands (*command_line);
5631 case CLfadeI_record:
5633 recordParts -> storeCommands (*command_line);
5638 recordParts -> storeCommands (*command_line);
5641 case CLfadfI_record:
5643 recordParts -> storeCommands (*command_line);
5648 recordParts -> storeCommands (*command_line);
5653 recordParts -> storeCommands (*command_line);
5656 case CZfabetafI_record:
5658 recordParts -> storeCommands (*command_line);
5661 case CZfadefI_record:
5663 recordParts -> storeCommands (*command_line);
5666 case CZfaqfI_record:
5668 recordParts -> storeCommands (*command_line);
5671 case CLo_save_record:
5673 recordParts -> storeCommands (*command_line);
5676 case CL_a_save_record:
5678 recordParts -> storeCommands (*command_line);
5681 case CL_adot_save_record:
5683 recordParts -> storeCommands (*command_line);
5686 case CL_q_save_record:
5688 recordParts -> storeCommands (*command_line);
5691 case CL_ih_save_record:
5693 recordParts -> storeCommands (*command_line);
5696 case CL_de_save_record:
5698 recordParts -> storeCommands (*command_line);
5701 case CZo_save_record:
5703 recordParts -> storeCommands (*command_line);
5706 case CZ_a_save_record:
5708 recordParts -> storeCommands (*command_line);
5711 case CZ_a2_save_record:
5713 recordParts -> storeCommands (*command_line);
5716 case CZ_a3_save_record:
5718 recordParts -> storeCommands (*command_line);
5721 case CZ_adot_save_record:
5723 recordParts -> storeCommands (*command_line);
5726 case CZ_q_save_record:
5728 recordParts -> storeCommands (*command_line);
5731 case CZ_de_save_record:
5733 recordParts -> storeCommands (*command_line);
5736 case CZ_deb2_save_record:
5738 recordParts -> storeCommands (*command_line);
5741 case CZ_df_save_record:
5743 recordParts -> storeCommands (*command_line);
5746 case CZ_adf_save_record:
5748 recordParts -> storeCommands (*command_line);
5753 recordParts -> storeCommands (*command_line);
5758 recordParts -> storeCommands (*command_line);
5761 case CmfadeI_record:
5763 recordParts -> storeCommands (*command_line);
5768 recordParts -> storeCommands (*command_line);
5771 case CmfadfI_record:
5773 recordParts -> storeCommands (*command_line);
5776 case CmfabetafI_record:
5778 recordParts -> storeCommands (*command_line);
5781 case CmfadefI_record:
5783 recordParts -> storeCommands (*command_line);
5786 case CmfaqfI_record:
5788 recordParts -> storeCommands (*command_line);
5791 case Cmo_save_record:
5793 recordParts -> storeCommands (*command_line);
5796 case Cm_a_save_record:
5798 recordParts -> storeCommands (*command_line);
5801 case Cm_a2_save_record:
5803 recordParts -> storeCommands (*command_line);
5806 case Cm_adot_save_record:
5808 recordParts -> storeCommands (*command_line);
5811 case Cm_q_save_record:
5813 recordParts -> storeCommands (*command_line);
5816 case Cm_ih_save_record:
5818 recordParts -> storeCommands (*command_line);
5821 case Cm_de_save_record:
5823 recordParts -> storeCommands (*command_line);
5826 case Cm_b2_save_record:
5828 recordParts -> storeCommands (*command_line);
5831 case Cm_r_save_record:
5833 recordParts -> storeCommands (*command_line);
5836 case Cm_df_save_record:
5838 recordParts -> storeCommands (*command_line);
5843 recordParts -> storeCommands (*command_line);
5846 case CYfadaI_record:
5848 recordParts -> storeCommands (*command_line);
5851 case CYfbetadrI_record:
5853 recordParts -> storeCommands (*command_line);
5856 case CYfabetafI_record:
5858 recordParts -> storeCommands (*command_line);
5861 case CYfadafI_record:
5863 recordParts -> storeCommands (*command_line);
5866 case CYfadrfI_record:
5868 recordParts -> storeCommands (*command_line);
5871 case CYfapfI_record:
5873 recordParts -> storeCommands (*command_line);
5876 case CYfarfI_record:
5878 recordParts -> storeCommands (*command_line);
5881 case CYo_save_record:
5883 recordParts -> storeCommands (*command_line);
5886 case CY_beta_save_record:
5888 recordParts -> storeCommands (*command_line);
5891 case CY_p_save_record:
5893 recordParts -> storeCommands (*command_line);
5896 case CY_r_save_record:
5898 recordParts -> storeCommands (*command_line);
5901 case CY_da_save_record:
5903 recordParts -> storeCommands (*command_line);
5906 case CY_dr_save_record:
5908 recordParts -> storeCommands (*command_line);
5911 case CY_dra_save_record:
5913 recordParts -> storeCommands (*command_line);
5916 case CY_bdot_save_record:
5918 recordParts -> storeCommands (*command_line);
5923 recordParts -> storeCommands (*command_line);
5926 case ClfadaI_record:
5928 recordParts -> storeCommands (*command_line);
5931 case ClfbetadrI_record:
5933 recordParts -> storeCommands (*command_line);
5936 case ClfabetafI_record:
5938 recordParts -> storeCommands (*command_line);
5941 case ClfadafI_record:
5943 recordParts -> storeCommands (*command_line);
5946 case ClfadrfI_record:
5948 recordParts -> storeCommands (*command_line);
5951 case ClfapfI_record:
5953 recordParts -> storeCommands (*command_line);
5956 case ClfarfI_record:
5958 recordParts -> storeCommands (*command_line);
5961 case Clo_save_record:
5963 recordParts -> storeCommands (*command_line);
5966 case Cl_beta_save_record:
5968 recordParts -> storeCommands (*command_line);
5971 case Cl_p_save_record:
5973 recordParts -> storeCommands (*command_line);
5976 case Cl_r_save_record:
5978 recordParts -> storeCommands (*command_line);
5981 case Cl_da_save_record:
5983 recordParts -> storeCommands (*command_line);
5986 case Cl_dr_save_record:
5988 recordParts -> storeCommands (*command_line);
5991 case Cl_daa_save_record:
5993 recordParts -> storeCommands (*command_line);
5998 recordParts -> storeCommands (*command_line);
6001 case CnfadaI_record:
6003 recordParts -> storeCommands (*command_line);
6006 case CnfbetadrI_record:
6008 recordParts -> storeCommands (*command_line);
6011 case CnfabetafI_record:
6013 recordParts -> storeCommands (*command_line);
6016 case CnfadafI_record:
6018 recordParts -> storeCommands (*command_line);
6021 case CnfadrfI_record:
6023 recordParts -> storeCommands (*command_line);
6026 case CnfapfI_record:
6028 recordParts -> storeCommands (*command_line);
6031 case CnfarfI_record:
6033 recordParts -> storeCommands (*command_line);
6036 case Cno_save_record:
6038 recordParts -> storeCommands (*command_line);
6041 case Cn_beta_save_record:
6043 recordParts -> storeCommands (*command_line);
6046 case Cn_p_save_record:
6048 recordParts -> storeCommands (*command_line);
6051 case Cn_r_save_record:
6053 recordParts -> storeCommands (*command_line);
6056 case Cn_da_save_record:
6058 recordParts -> storeCommands (*command_line);
6061 case Cn_dr_save_record:
6063 recordParts -> storeCommands (*command_line);
6066 case Cn_q_save_record:
6068 recordParts -> storeCommands (*command_line);
6071 case Cn_b3_save_record:
6073 recordParts -> storeCommands (*command_line);
6077 /******************** Ice Detection ********************/
6078 case CL_clean_record:
6080 recordParts -> storeCommands (*command_line);
6083 case CL_iced_record:
6085 recordParts -> storeCommands (*command_line);
6088 case CD_clean_record:
6090 recordParts -> storeCommands (*command_line);
6093 case CD_iced_record:
6095 recordParts -> storeCommands (*command_line);
6098 case Cm_clean_record:
6100 recordParts -> storeCommands (*command_line);
6103 case Cm_iced_record:
6105 recordParts -> storeCommands (*command_line);
6108 case Ch_clean_record:
6110 recordParts -> storeCommands (*command_line);
6113 case Ch_iced_record:
6115 recordParts -> storeCommands (*command_line);
6118 case Cl_clean_record:
6120 recordParts -> storeCommands (*command_line);
6123 case Cl_iced_record:
6125 recordParts -> storeCommands (*command_line);
6128 case CLclean_wing_record:
6130 recordParts -> storeCommands (*command_line);
6133 case CLiced_wing_record:
6135 recordParts -> storeCommands (*command_line);
6138 case CLclean_tail_record:
6140 recordParts -> storeCommands (*command_line);
6143 case CLiced_tail_record:
6145 recordParts -> storeCommands (*command_line);
6148 case Lift_clean_wing_record:
6150 recordParts -> storeCommands (*command_line);
6153 case Lift_iced_wing_record:
6155 recordParts -> storeCommands (*command_line);
6158 case Lift_clean_tail_record:
6160 recordParts -> storeCommands (*command_line);
6163 case Lift_iced_tail_record:
6165 recordParts -> storeCommands (*command_line);
6168 case Gamma_clean_wing_record:
6170 recordParts -> storeCommands (*command_line);
6173 case Gamma_iced_wing_record:
6175 recordParts -> storeCommands (*command_line);
6178 case Gamma_clean_tail_record:
6180 recordParts -> storeCommands (*command_line);
6183 case Gamma_iced_tail_record:
6185 recordParts -> storeCommands (*command_line);
6188 case w_clean_wing_record:
6190 recordParts -> storeCommands (*command_line);
6193 case w_iced_wing_record:
6195 recordParts -> storeCommands (*command_line);
6198 case w_clean_tail_record:
6200 recordParts -> storeCommands (*command_line);
6203 case w_iced_tail_record:
6205 recordParts -> storeCommands (*command_line);
6208 case V_total_clean_wing_record:
6210 recordParts -> storeCommands (*command_line);
6213 case V_total_iced_wing_record:
6215 recordParts -> storeCommands (*command_line);
6218 case V_total_clean_tail_record:
6220 recordParts -> storeCommands (*command_line);
6223 case V_total_iced_tail_record:
6225 recordParts -> storeCommands (*command_line);
6228 case beta_flow_clean_wing_record:
6230 recordParts -> storeCommands (*command_line);
6233 case beta_flow_clean_wing_deg_record:
6235 recordParts -> storeCommands (*command_line);
6238 case beta_flow_iced_wing_record:
6240 recordParts -> storeCommands (*command_line);
6243 case beta_flow_iced_wing_deg_record:
6245 recordParts -> storeCommands (*command_line);
6248 case beta_flow_clean_tail_record:
6250 recordParts -> storeCommands (*command_line);
6253 case beta_flow_clean_tail_deg_record:
6255 recordParts -> storeCommands (*command_line);
6258 case beta_flow_iced_tail_record:
6260 recordParts -> storeCommands (*command_line);
6263 case beta_flow_iced_tail_deg_record:
6265 recordParts -> storeCommands (*command_line);
6268 case Dbeta_flow_wing_record:
6270 recordParts -> storeCommands (*command_line);
6273 case Dbeta_flow_wing_deg_record:
6275 recordParts -> storeCommands (*command_line);
6278 case Dbeta_flow_tail_record:
6280 recordParts -> storeCommands (*command_line);
6283 case Dbeta_flow_tail_deg_record:
6285 recordParts -> storeCommands (*command_line);
6288 case pct_beta_flow_wing_record:
6290 recordParts -> storeCommands (*command_line);
6293 case pct_beta_flow_tail_record:
6295 recordParts -> storeCommands (*command_line);
6298 case eta_ice_record:
6300 recordParts -> storeCommands (*command_line);
6304 /************************ Forces ***********************/
6305 case F_X_wind_record:
6307 recordParts -> storeCommands (*command_line);
6310 case F_Y_wind_record:
6312 recordParts -> storeCommands (*command_line);
6315 case F_Z_wind_record:
6317 recordParts -> storeCommands (*command_line);
6320 case F_X_aero_record:
6322 recordParts -> storeCommands (*command_line);
6325 case F_Y_aero_record:
6327 recordParts -> storeCommands (*command_line);
6330 case F_Z_aero_record:
6332 recordParts -> storeCommands (*command_line);
6335 case F_X_engine_record:
6337 recordParts -> storeCommands (*command_line);
6340 case F_Y_engine_record:
6342 recordParts -> storeCommands (*command_line);
6345 case F_Z_engine_record:
6347 recordParts -> storeCommands (*command_line);
6350 case F_X_gear_record:
6352 recordParts -> storeCommands (*command_line);
6355 case F_Y_gear_record:
6357 recordParts -> storeCommands (*command_line);
6360 case F_Z_gear_record:
6362 recordParts -> storeCommands (*command_line);
6367 recordParts -> storeCommands (*command_line);
6372 recordParts -> storeCommands (*command_line);
6377 recordParts -> storeCommands (*command_line);
6380 case F_north_record:
6382 recordParts -> storeCommands (*command_line);
6387 recordParts -> storeCommands (*command_line);
6392 recordParts -> storeCommands (*command_line);
6396 /*********************** Moments ***********************/
6397 case M_l_aero_record:
6399 recordParts -> storeCommands (*command_line);
6402 case M_m_aero_record:
6404 recordParts -> storeCommands (*command_line);
6407 case M_n_aero_record:
6409 recordParts -> storeCommands (*command_line);
6412 case M_l_engine_record:
6414 recordParts -> storeCommands (*command_line);
6417 case M_m_engine_record:
6419 recordParts -> storeCommands (*command_line);
6422 case M_n_engine_record:
6424 recordParts -> storeCommands (*command_line);
6427 case M_l_gear_record:
6429 recordParts -> storeCommands (*command_line);
6432 case M_m_gear_record:
6434 recordParts -> storeCommands (*command_line);
6437 case M_n_gear_record:
6439 recordParts -> storeCommands (*command_line);
6444 recordParts -> storeCommands (*command_line);
6449 recordParts -> storeCommands (*command_line);
6454 recordParts -> storeCommands (*command_line);
6457 /****************** Flapper Data ***********************/
6458 /* case flapper_freq_record:
6460 recordParts -> storeCommands (*command_line);
6463 case flapper_phi_record:
6465 recordParts -> storeCommands (*command_line);
6468 case flapper_phi_deg_record:
6470 recordParts -> storeCommands (*command_line);
6473 case flapper_Lift_record:
6475 recordParts -> storeCommands (*command_line);
6478 case flapper_Thrust_record:
6480 recordParts -> storeCommands (*command_line);
6483 case flapper_Inertia_record:
6485 recordParts -> storeCommands (*command_line);
6488 case flapper_Moment_record:
6490 recordParts -> storeCommands (*command_line);
6496 uiuc_warnings_errors(2, *command_line);
6503 void parse_misc( const string& linetoken2, const string& linetoken3,
6504 const string& aircraft_directory, LIST command_line ) {
6506 istrstream token3(linetoken3.c_str());
6508 switch(misc_map[linetoken2])
6510 case simpleHingeMomentCoef_flag:
6512 if (check_float(linetoken3))
6513 token3 >> token_value;
6515 uiuc_warnings_errors(1, *command_line);
6517 simpleHingeMomentCoef = token_value;
6520 case dfTimefdf_flag:
6522 dfTimefdf = linetoken3;
6523 /* call 1D File Reader with file name (dfTimefdf);
6524 function returns array of dfs (dfArray) and
6525 corresponding time values (TimeArray) and max
6526 number of terms in arrays (ndf) */
6527 uiuc_1DdataFileReader(dfTimefdf,
6529 dfTimefdf_TimeArray,
6533 /* case flapper_flag:
6537 flap_file = aircraft_directory + "flap.dat";
6538 flapper_model = true;
6539 flapper_data = new FlapData(flap_file.c_str());
6542 case flapper_phi_init_flag:
6544 if (check_float(linetoken3))
6545 token3 >> token_value;
6547 uiuc_warnings_errors(1, *command_line);
6549 flapper_phi_init = token_value*DEG_TO_RAD;
6555 uiuc_warnings_errors(2, *command_line);
6562 void uiuc_menu( string aircraft_name )
6564 string aircraft_directory;
6567 int token_value_recordRate;
6568 int token_value_convert1, token_value_convert2, token_value_convert3;
6580 double datafile_xArray[100][100], datafile_yArray[100];
6581 double datafile_zArray[100][100];
6582 int datafile_nxArray[100], datafile_ny;
6584 bool CXfabetaf_first = true;
6585 bool CXfadef_first = true;
6586 bool CXfaqf_first = true;
6587 bool CZfabetaf_first = true;
6588 bool CZfadef_first = true;
6589 bool CZfaqf_first = true;
6590 bool Cmfabetaf_first = true;
6591 bool Cmfadef_first = true;
6592 bool Cmfaqf_first = true;
6593 bool CYfabetaf_first = true;
6594 bool CYfadaf_first = true;
6595 bool CYfadrf_first = true;
6596 bool CYfapf_first = true;
6597 bool CYfarf_first = true;
6598 bool Clfabetaf_first = true;
6599 bool Clfadaf_first = true;
6600 bool Clfadrf_first = true;
6601 bool Clfapf_first = true;
6602 bool Clfarf_first = true;
6603 bool Cnfabetaf_first = true;
6604 bool Cnfadaf_first = true;
6605 bool Cnfadrf_first = true;
6606 bool Cnfapf_first = true;
6607 bool Cnfarf_first = true;
6609 /* the following default setting should eventually be moved to a default or uiuc_init routine */
6611 recordRate = 1; /* record every time step, default */
6612 recordStartTime = 0; /* record from beginning of simulation */
6614 /* set speed at which dynamic pressure terms will be accounted for,
6615 since if velocity is too small, coefficients will go to infinity */
6616 dyn_on_speed = 33; /* 20 kts, default */
6617 dyn_on_speed_zero = 0.5 * dyn_on_speed; /* only used of use_dyn_on_speed_curve1 is used */
6618 bootindex = 0; // the index for the bootTime
6622 /* Read the file and get the list of commands */
6623 airplane = new ParseFile(aircraft_name); /* struct that includes all lines of the input file */
6624 command_list = airplane -> getCommands();
6625 /* structs to include all parts included in the input file for specific keyword groups */
6626 initParts = new ParseFile();
6627 geometryParts = new ParseFile();
6628 massParts = new ParseFile();
6629 engineParts = new ParseFile();
6630 aeroDragParts = new ParseFile();
6631 aeroLiftParts = new ParseFile();
6632 aeroPitchParts = new ParseFile();
6633 aeroSideforceParts = new ParseFile();
6634 aeroRollParts = new ParseFile();
6635 aeroYawParts = new ParseFile();
6636 gearParts = new ParseFile();
6637 recordParts = new ParseFile();
6639 if (command_list.begin() == command_list.end())
6641 cerr << "UIUC ERROR: File " << aircraft_name <<" does not exist" << endl;
6645 //construct aircraft-directory
6646 aircraft_directory = aircraft_name;
6647 int index_aircraft_dat = aircraft_directory.find("aircraft.dat");
6648 aircraft_directory.erase(index_aircraft_dat,12);
6650 for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
6652 cout << *command_line << endl;
6654 linetoken1 = airplane -> getToken (*command_line, 1);
6655 linetoken2 = airplane -> getToken (*command_line, 2);
6656 linetoken3 = airplane -> getToken (*command_line, 3);
6657 linetoken4 = airplane -> getToken (*command_line, 4);
6658 linetoken5 = airplane -> getToken (*command_line, 5);
6659 linetoken6 = airplane -> getToken (*command_line, 6);
6660 linetoken7 = airplane -> getToken (*command_line, 7);
6661 linetoken8 = airplane -> getToken (*command_line, 8);
6662 linetoken9 = airplane -> getToken (*command_line, 9);
6664 istrstream token3(linetoken3.c_str());
6665 istrstream token4(linetoken4.c_str());
6666 istrstream token5(linetoken5.c_str());
6667 istrstream token6(linetoken6.c_str());
6668 istrstream token7(linetoken7.c_str());
6669 istrstream token8(linetoken8.c_str());
6670 istrstream token9(linetoken9.c_str());
6672 switch (Keyword_map[linetoken1])
6676 parse_init( linetoken2, linetoken3, command_line );
6683 parse_geometry( linetoken2, linetoken3, command_line );
6685 } // end geometry map
6688 case controlSurface_flag:
6690 parse_controlSurface( linetoken2, linetoken3, linetoken4,
6691 linetoken5, linetoken6, aircraft_directory,
6694 } // end controlSurface map
6699 parse_mass( linetoken2, linetoken3, command_line );
6706 parse_engine( linetoken2, linetoken3, linetoken4,
6707 linetoken5, linetoken6, aircraft_directory,
6715 parse_CD( linetoken2, linetoken3, linetoken4,
6716 linetoken5, linetoken6, linetoken7,
6717 linetoken8, linetoken9, aircraft_directory,
6718 CXfabetaf_first, CXfadef_first,
6719 CXfaqf_first, command_line );
6726 parse_CL( linetoken2, linetoken3, linetoken4,
6727 linetoken5, linetoken6, linetoken7,
6728 linetoken8, linetoken9, aircraft_directory,
6729 CZfabetaf_first, CZfadef_first,
6730 CZfaqf_first, command_line );
6737 parse_Cm( linetoken2, linetoken3, linetoken4,
6738 linetoken5, linetoken6, linetoken7,
6739 linetoken8, linetoken9, aircraft_directory,
6740 Cmfabetaf_first, Cmfadef_first,
6741 Cmfaqf_first, command_line );
6748 parse_CY( linetoken2, linetoken3, linetoken4,
6749 linetoken5, linetoken6, linetoken7,
6750 linetoken8, linetoken9, aircraft_directory,
6751 CYfabetaf_first, CYfadaf_first,
6752 CYfadrf_first, CYfapf_first, CYfarf_first,
6760 parse_Cl( linetoken2, linetoken3, linetoken4,
6761 linetoken5, linetoken6, linetoken7,
6762 linetoken8, linetoken9, aircraft_directory,
6763 Clfabetaf_first, Clfadaf_first,
6764 Clfadrf_first, Clfapf_first, Clfarf_first,
6772 parse_Cn( linetoken2, linetoken3, linetoken4,
6773 linetoken5, linetoken6, linetoken7,
6774 linetoken8, linetoken9, aircraft_directory,
6775 Cnfabetaf_first, Cnfadaf_first,
6776 Cnfadrf_first, Cnfapf_first, Cnfarf_first,
6786 if (index < 0 || index >= 16)
6787 uiuc_warnings_errors(1, *command_line);
6788 parse_gear( linetoken2, linetoken3, linetoken4,
6789 index, command_line );
6796 parse_ice( linetoken2, linetoken3, linetoken4,
6804 parse_fog( linetoken2, linetoken3, linetoken4,
6812 static int fout_flag=0;
6816 fout.open("uiuc_record.dat");
6818 parse_record( linetoken2, command_line );
6825 parse_misc( linetoken2, linetoken3, aircraft_directory,
6833 if (linetoken1=="*")
6836 uiuc_warnings_errors(2, *command_line);
6840 } // end keyword map