1 /**********************************************************************
3 FILENAME: uiuc_recorder.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: outputs variables specified in input file to recorder
10 ----------------------------------------------------------------------
14 ----------------------------------------------------------------------
16 REFERENCES: Liberty, Jesse. "Sam's Teach Yourself C++ in 21 Days,"
19 ----------------------------------------------------------------------
21 HISTORY: 01/31/2000 initial release
22 03/02/2000 (JS) added record options for 1D and 2D
23 interpolated variables
24 04/01/2000 (JS) added throttle, longitudinal, lateral,
25 and rudder inputs to record map
26 04/24/2000 (JS) added rest of variables in
28 07/06/2001 (RD) changed Flap handle output
29 07/20/2001 (RD) fixed Lat_control and Rudder_pedal
30 10/25/2001 (RD) Added new variables needed for the non-
31 linear Twin Otter model at zero flaps
33 11/12/2001 (RD) Added new variables needed for the non-
34 linear Twin Otter model at zero flaps
35 (CxfxxfI). Removed zero flap variables.
36 Added flap_pos and flap_cmd_deg.
37 02/13/2002 (RD) Added variables so linear aero model
38 values can be recorded
39 03/03/2003 (RD) Added flap_cmd_record
40 03/16/2003 (RD) Added trigger record variables
41 07/17/2003 (RD) Added error checking code (default
42 routine) since it was removed from
45 ----------------------------------------------------------------------
47 AUTHOR(S): Jeff Scott http://www.jeffscott.net/
48 Robert Deters <rdeters@uiuc.edu>
49 Michael Selig <m-selig@uiuc.edu>
50 ----------------------------------------------------------------------
54 ----------------------------------------------------------------------
58 ----------------------------------------------------------------------
60 OUTPUTS: -variables recorded in uiuc_recorder.dat
62 ----------------------------------------------------------------------
64 CALLED BY: uiuc_wrapper.cpp
66 ----------------------------------------------------------------------
70 ----------------------------------------------------------------------
72 COPYRIGHT: (C) 2000 by Michael Selig
74 This program is free software; you can redistribute it and/or
75 modify it under the terms of the GNU General Public License
76 as published by the Free Software Foundation.
78 This program is distributed in the hope that it will be useful,
79 but WITHOUT ANY WARRANTY; without even the implied warranty of
80 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
81 GNU General Public License for more details.
83 You should have received a copy of the GNU General Public License
84 along with this program; if not, write to the Free Software
85 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
86 USA or view http://www.gnu.org/copyleft/gpl.html.
88 **********************************************************************/
94 #include <simgear/compiler.h>
95 #include <simgear/misc/sg_path.hxx>
96 #include <Aircraft/aircraft.hxx>
97 #include <Main/fg_props.hxx>
99 #include "uiuc_recorder.h"
101 SG_USING_STD(endl); // -dw
103 void uiuc_recorder( double dt )
108 static int recordStep = 0;
109 string record_variables = "# ";
111 int modulus = recordStep % recordRate;
113 if ((recordStep % recordRate) == 0)
115 command_list = recordParts->getCommands();
119 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
120 record_variables += recordParts->getToken(*command_line,2) + " ";
122 fout << record_variables << endl;
123 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
125 linetoken = recordParts->getToken(*command_line, 2);
127 switch(record_map[linetoken])
129 /************************* Time ************************/
132 fout << Simtime << " ";
141 /************************* Mass ************************/
144 fout << Weight << " ";
173 /*********************** Geometry **********************/
174 case Dx_pilot_record:
176 fout << Dx_pilot << " ";
179 case Dy_pilot_record:
181 fout << Dy_pilot << " ";
184 case Dz_pilot_record:
186 fout << Dz_pilot << " ";
191 fout << Dx_cg << " ";
196 fout << Dy_cg << " ";
201 fout << Dz_cg << " ";
205 /********************** Positions **********************/
206 case Lat_geocentric_record:
208 fout << Lat_geocentric << " ";
211 case Lon_geocentric_record:
213 fout << Lon_geocentric << " ";
216 case Radius_to_vehicle_record:
218 fout << Radius_to_vehicle << " ";
221 case Latitude_record:
223 fout << Latitude << " ";
226 case Longitude_record:
228 fout << Longitude << " ";
231 case Altitude_record:
233 fout << Altitude << " ";
243 fout << Theta << " ";
252 /******************** Accelerations ********************/
253 case V_dot_north_record:
255 fout << V_dot_north << " ";
258 case V_dot_east_record:
260 fout << V_dot_east << " ";
263 case V_dot_down_record:
265 fout << V_dot_down << " ";
268 case U_dot_body_record:
270 fout << U_dot_body << " ";
273 case V_dot_body_record:
275 fout << V_dot_body << " ";
278 case W_dot_body_record:
280 fout << W_dot_body << " ";
283 case A_X_pilot_record:
285 fout << A_X_pilot << " ";
288 case A_Y_pilot_record:
290 fout << A_Y_pilot << " ";
293 case A_Z_pilot_record:
295 fout << A_Z_pilot << " ";
300 fout << A_X_cg << " ";
305 fout << A_Y_cg << " ";
310 fout << A_Z_cg << " ";
313 case N_X_pilot_record:
315 fout << N_X_pilot << " ";
318 case N_Y_pilot_record:
320 fout << N_Y_pilot << " ";
323 case N_Z_pilot_record:
325 fout << N_Z_pilot << " ";
330 fout << N_X_cg << " ";
335 fout << N_Y_cg << " ";
340 fout << N_Z_cg << " ";
343 case P_dot_body_record:
345 fout << P_dot_body << " ";
348 case Q_dot_body_record:
350 fout << Q_dot_body << " ";
353 case R_dot_body_record:
355 fout << R_dot_body << " ";
359 /********************** Velocities *********************/
362 fout << V_north << " ";
367 fout << V_east << " ";
372 fout << V_down << " ";
375 case V_north_rel_ground_record:
377 fout << V_north_rel_ground << " ";
380 case V_east_rel_ground_record:
382 fout << V_east_rel_ground << " ";
385 case V_down_rel_ground_record:
387 fout << V_down_rel_ground << " ";
390 case V_north_airmass_record:
392 fout << V_north_airmass << " ";
395 case V_east_airmass_record:
397 fout << V_east_airmass << " ";
400 case V_down_airmass_record:
402 fout << V_down_airmass << " ";
405 case V_north_rel_airmass_record:
407 fout << V_north_rel_airmass << " ";
410 case V_east_rel_airmass_record:
412 fout << V_east_rel_airmass << " ";
415 case V_down_rel_airmass_record:
417 fout << V_down_rel_airmass << " ";
422 fout << U_gust << " ";
427 fout << V_gust << " ";
432 fout << W_gust << " ";
437 fout << U_body << " ";
442 fout << V_body << " ";
447 fout << W_body << " ";
450 case V_rel_wind_record:
452 fout << V_rel_wind << " ";
455 case V_true_kts_record:
457 fout << V_true_kts << " ";
460 case V_rel_ground_record:
462 fout << V_rel_ground << " ";
465 case V_inertial_record:
467 fout << V_inertial << " ";
470 case V_ground_speed_record:
472 fout << V_ground_speed << " ";
477 fout << V_equiv << " ";
480 case V_equiv_kts_record:
482 fout << V_equiv_kts << " ";
485 case V_calibrated_record:
487 fout << V_calibrated << " ";
490 case V_calibrated_kts_record:
492 fout << V_calibrated_kts << " ";
497 fout << P_local << " ";
502 fout << Q_local << " ";
507 fout << R_local << " ";
512 fout << P_body << " ";
517 fout << Q_body << " ";
522 fout << R_body << " ";
527 fout << P_total << " ";
532 fout << Q_total << " ";
537 fout << R_total << " ";
542 fout << Phi_dot << " ";
545 case Theta_dot_record:
547 fout << Theta_dot << " ";
552 fout << Psi_dot << " ";
555 case Latitude_dot_record:
557 fout << Latitude_dot << " ";
560 case Longitude_dot_record:
562 fout << Longitude_dot << " ";
565 case Radius_dot_record:
567 fout << Radius_dot << " ";
571 /************************ Angles ***********************/
574 fout << Std_Alpha << " ";
577 case Alpha_deg_record:
579 fout << Std_Alpha * RAD_TO_DEG << " ";
582 case Alpha_dot_record:
584 fout << Std_Alpha_dot << " ";
587 case Alpha_dot_deg_record:
589 fout << Std_Alpha_dot * RAD_TO_DEG << " ";
594 fout << Std_Beta << " ";
597 case Beta_deg_record:
599 fout << Std_Beta * RAD_TO_DEG << " ";
602 case Beta_dot_record:
604 fout << Std_Beta_dot << " ";
607 case Beta_dot_deg_record:
609 fout << Std_Beta_dot * RAD_TO_DEG << " ";
612 case Gamma_vert_record:
614 fout << Gamma_vert_rad << " ";
617 case Gamma_vert_deg_record:
619 fout << Gamma_vert_rad * RAD_TO_DEG << " ";
622 case Gamma_horiz_record:
624 fout << Gamma_horiz_rad << " ";
627 case Gamma_horiz_deg_record:
629 fout << Gamma_horiz_rad * RAD_TO_DEG << " ";
633 /**************** Atmospheric Properties ***************/
636 fout << Density << " ";
641 fout << V_sound << " ";
644 case Mach_number_record:
646 fout << Mach_number << " ";
649 case Static_pressure_record:
651 fout << Static_pressure << " ";
654 case Total_pressure_record:
656 fout << Total_pressure << " ";
659 case Impact_pressure_record:
661 fout << Impact_pressure << " ";
664 case Dynamic_pressure_record:
666 fout << Dynamic_pressure << " ";
669 case Static_temperature_record:
671 fout << Static_temperature << " ";
674 case Total_temperature_record:
676 fout << Total_temperature << " ";
680 /******************** Earth Properties *****************/
683 fout << Gravity << " ";
686 case Sea_level_radius_record:
688 fout << Sea_level_radius << " ";
691 case Earth_position_angle_record:
693 fout << Earth_position_angle << " ";
696 case Runway_altitude_record:
698 fout << Runway_altitude << " ";
701 case Runway_latitude_record:
703 fout << Runway_latitude << " ";
706 case Runway_longitude_record:
708 fout << Runway_longitude << " ";
711 case Runway_heading_record:
713 fout << Runway_heading << " ";
716 case Radius_to_rwy_record:
718 fout << Radius_to_rwy << " ";
721 case D_pilot_north_of_rwy_record:
723 fout << D_pilot_north_of_rwy << " ";
726 case D_pilot_east_of_rwy_record:
728 fout << D_pilot_east_of_rwy << " ";
731 case D_pilot_above_rwy_record:
733 fout << D_pilot_above_rwy << " ";
736 case X_pilot_rwy_record:
738 fout << X_pilot_rwy << " ";
741 case Y_pilot_rwy_record:
743 fout << Y_pilot_rwy << " ";
746 case H_pilot_rwy_record:
748 fout << H_pilot_rwy << " ";
751 case D_cg_north_of_rwy_record:
753 fout << D_cg_north_of_rwy << " ";
756 case D_cg_east_of_rwy_record:
758 fout << D_cg_east_of_rwy << " ";
761 case D_cg_above_rwy_record:
763 fout << D_cg_above_rwy << " ";
766 case X_cg_rwy_record:
768 fout << X_cg_rwy << " ";
771 case Y_cg_rwy_record:
773 fout << Y_cg_rwy << " ";
776 case H_cg_rwy_record:
778 fout << H_cg_rwy << " ";
782 /********************* Engine Inputs *******************/
783 case Throttle_3_record:
785 fout << Throttle[3] << " ";
788 case Throttle_pct_record:
790 fout << Throttle_pct << " ";
794 /************************ Controls ***********************/
795 case Long_control_record:
797 fout << Long_control << " ";
800 case Long_trim_record:
802 fout << Long_trim << " ";
805 case Long_trim_deg_record:
807 fout << Long_trim * RAD_TO_DEG << " ";
810 case elevator_record:
812 fout << elevator << " ";
815 case elevator_deg_record:
817 fout << elevator * RAD_TO_DEG << " ";
820 case Lat_control_record:
822 fout << Lat_control << " ";
827 fout << aileron << " ";
830 case aileron_deg_record:
832 fout << aileron * RAD_TO_DEG << " ";
835 case Rudder_pedal_record:
837 fout << Rudder_pedal << " ";
842 fout << rudder << " ";
845 case rudder_deg_record:
847 fout << rudder * RAD_TO_DEG << " ";
850 case Flap_handle_record:
852 fout << Flap_handle << " ";
860 case flap_cmd_record:
862 fout << flap_cmd << " ";
865 case flap_cmd_deg_record:
867 fout << flap_cmd * RAD_TO_DEG << " ";
870 case flap_pos_record:
872 fout << flap_pos << " ";
875 case flap_pos_deg_record:
877 fout << flap_pos * RAD_TO_DEG << " ";
880 case Spoiler_handle_record:
882 fout << Spoiler_handle << " ";
885 case spoiler_cmd_deg_record:
887 fout << spoiler_cmd_deg << " ";
890 case spoiler_pos_deg_record:
892 fout << spoiler_pos_deg << " ";
895 case spoiler_pos_norm_record:
897 fout << spoiler_pos_norm << " ";
900 case spoiler_pos_record:
902 fout << spoiler_pos << " ";
906 /****************** Aero Coefficients ******************/
914 fout << CDfaI << " ";
919 fout << CDfCLI << " ";
924 fout << CDfadeI << " ";
929 fout << CDfdfI << " ";
934 fout << CDfadfI << " ";
942 case CXfabetafI_record:
944 fout << CXfabetafI << " ";
947 case CXfadefI_record:
949 fout << CXfadefI << " ";
954 fout << CXfaqfI << " ";
957 case CDo_save_record:
959 fout << CDo_save << " ";
962 case CDK_save_record:
964 fout << CDK_save << " ";
967 case CLK_save_record:
969 fout << CLK_save << " ";
972 case CD_a_save_record:
974 fout << CD_a_save << " ";
977 case CD_adot_save_record:
979 fout << CD_adot_save << " ";
982 case CD_q_save_record:
984 fout << CD_q_save << " ";
987 case CD_ih_save_record:
989 fout << CD_ih_save << " ";
992 case CD_de_save_record:
994 fout << CD_de_save << " ";
997 case CD_dr_save_record:
999 fout << CD_dr_save << " ";
1002 case CD_da_save_record:
1004 fout << CD_da_save << " ";
1007 case CD_beta_save_record:
1009 fout << CD_beta_save << " ";
1012 case CD_df_save_record:
1014 fout << CD_df_save << " ";
1017 case CD_ds_save_record:
1019 fout << CD_ds_save << " ";
1022 case CD_dg_save_record:
1024 fout << CD_dg_save << " ";
1027 case CXo_save_record:
1029 fout << CXo_save << " ";
1032 case CXK_save_record:
1034 fout << CXK_save << " ";
1037 case CX_a_save_record:
1039 fout << CX_a_save << " ";
1042 case CX_a2_save_record:
1044 fout << CX_a2_save << " ";
1047 case CX_a3_save_record:
1049 fout << CX_a3_save << " ";
1052 case CX_adot_save_record:
1054 fout << CX_adot_save << " ";
1057 case CX_q_save_record:
1059 fout << CX_q_save << " ";
1062 case CX_de_save_record:
1064 fout << CX_de_save << " ";
1067 case CX_dr_save_record:
1069 fout << CX_dr_save << " ";
1072 case CX_df_save_record:
1074 fout << CX_df_save << " ";
1077 case CX_adf_save_record:
1079 fout << CX_adf_save << " ";
1089 fout << CLfaI << " ";
1092 case CLfadeI_record:
1094 fout << CLfadeI << " ";
1099 fout << CLfdfI << " ";
1102 case CLfadfI_record:
1104 fout << CLfadfI << " ";
1114 fout << CZfaI << " ";
1117 case CZfabetafI_record:
1119 fout << CZfabetafI << " ";
1122 case CZfadefI_record:
1124 fout << CZfadefI << " ";
1127 case CZfaqfI_record:
1129 fout << CZfaqfI << " ";
1132 case CLo_save_record:
1134 fout << CLo_save << " ";
1137 case CL_a_save_record:
1139 fout << CL_a_save << " ";
1142 case CL_adot_save_record:
1144 fout << CL_adot_save << " ";
1147 case CL_q_save_record:
1149 fout << CL_q_save << " ";
1152 case CL_ih_save_record:
1154 fout << CL_ih_save << " ";
1157 case CL_de_save_record:
1159 fout << CL_de_save << " ";
1162 case CL_df_save_record:
1164 fout << CL_df_save << " ";
1167 case CL_ds_save_record:
1169 fout << CL_ds_save << " ";
1172 case CL_dg_save_record:
1174 fout << CL_dg_save << " ";
1177 case CZo_save_record:
1179 fout << CZo_save << " ";
1182 case CZ_a_save_record:
1184 fout << CZ_a_save << " ";
1187 case CZ_a2_save_record:
1189 fout << CZ_a2_save << " ";
1192 case CZ_a3_save_record:
1194 fout << CZ_a3_save << " ";
1197 case CZ_adot_save_record:
1199 fout << CZ_adot_save << " ";
1202 case CZ_q_save_record:
1204 fout << CZ_q_save << " ";
1207 case CZ_de_save_record:
1209 fout << CZ_de_save << " ";
1212 case CZ_deb2_save_record:
1214 fout << CZ_deb2_save << " ";
1217 case CZ_df_save_record:
1219 fout << CZ_df_save << " ";
1222 case CZ_adf_save_record:
1224 fout << CZ_adf_save << " ";
1234 fout << CmfaI << " ";
1237 case CmfadeI_record:
1239 fout << CmfadeI << " ";
1244 fout << CmfdfI << " ";
1247 case CmfadfI_record:
1249 fout << CmfadfI << " ";
1252 case CmfabetafI_record:
1254 fout << CmfabetafI << " ";
1257 case CmfadefI_record:
1259 fout << CmfadefI << " ";
1262 case CmfaqfI_record:
1264 fout << CmfaqfI << " ";
1267 case Cmo_save_record:
1269 fout << Cmo_save << " ";
1272 case Cm_a_save_record:
1274 fout << Cm_a_save << " ";
1277 case Cm_a2_save_record:
1279 fout << Cm_a2_save << " ";
1282 case Cm_adot_save_record:
1284 fout << Cm_adot_save << " ";
1287 case Cm_q_save_record:
1289 fout << Cm_q_save << " ";
1292 case Cm_ih_save_record:
1294 fout << Cm_ih_save << " ";
1297 case Cm_de_save_record:
1299 fout << Cm_de_save << " ";
1302 case Cm_b2_save_record:
1304 fout << Cm_b2_save << " ";
1307 case Cm_r_save_record:
1309 fout << Cm_r_save << " ";
1312 case Cm_df_save_record:
1314 fout << Cm_df_save << " ";
1317 case Cm_ds_save_record:
1319 fout << Cm_ds_save << " ";
1322 case Cm_dg_save_record:
1324 fout << Cm_dg_save << " ";
1332 case CYfadaI_record:
1334 fout << CYfadaI << " ";
1337 case CYfbetadrI_record:
1339 fout << CYfbetadrI << " ";
1342 case CYfabetafI_record:
1344 fout << CYfabetafI << " ";
1347 case CYfadafI_record:
1349 fout << CYfadafI << " ";
1352 case CYfadrfI_record:
1354 fout << CYfadrfI << " ";
1357 case CYfapfI_record:
1359 fout << CYfapfI << " ";
1362 case CYfarfI_record:
1364 fout << CYfarfI << " ";
1367 case CYo_save_record:
1369 fout << CYo_save << " ";
1372 case CY_beta_save_record:
1374 fout << CY_beta_save << " ";
1377 case CY_p_save_record:
1379 fout << CY_p_save << " ";
1382 case CY_r_save_record:
1384 fout << CY_r_save << " ";
1387 case CY_da_save_record:
1389 fout << CY_da_save << " ";
1392 case CY_dr_save_record:
1394 fout << CY_dr_save << " ";
1397 case CY_dra_save_record:
1399 fout << CY_dra_save << " ";
1402 case CY_bdot_save_record:
1404 fout << CY_bdot_save << " ";
1412 case ClfadaI_record:
1414 fout << ClfadaI << " ";
1417 case ClfbetadrI_record:
1419 fout << ClfbetadrI << " ";
1422 case ClfabetafI_record:
1424 fout << ClfabetafI << " ";
1427 case ClfadafI_record:
1429 fout << ClfadafI << " ";
1432 case ClfadrfI_record:
1434 fout << ClfadrfI << " ";
1437 case ClfapfI_record:
1439 fout << ClfapfI << " ";
1442 case ClfarfI_record:
1444 fout << ClfarfI << " ";
1447 case Clo_save_record:
1449 fout << Clo_save << " ";
1452 case Cl_beta_save_record:
1454 fout << Cl_beta_save << " ";
1457 case Cl_p_save_record:
1459 fout << Cl_p_save << " ";
1462 case Cl_r_save_record:
1464 fout << Cl_r_save << " ";
1467 case Cl_da_save_record:
1469 fout << Cl_da_save << " ";
1472 case Cl_dr_save_record:
1474 fout << Cl_dr_save << " ";
1477 case Cl_daa_save_record:
1479 fout << Cl_daa_save << " ";
1487 case CnfadaI_record:
1489 fout << CnfadaI << " ";
1492 case CnfbetadrI_record:
1494 fout << CnfbetadrI << " ";
1497 case CnfabetafI_record:
1499 fout << CnfabetafI << " ";
1502 case CnfadafI_record:
1504 fout << CnfadafI << " ";
1507 case CnfadrfI_record:
1509 fout << CnfadrfI << " ";
1512 case CnfapfI_record:
1514 fout << CnfapfI << " ";
1517 case CnfarfI_record:
1519 fout << CnfarfI << " ";
1522 case Cno_save_record:
1524 fout << Cno_save << " ";
1527 case Cn_beta_save_record:
1529 fout << Cn_beta_save << " ";
1532 case Cn_p_save_record:
1534 fout << Cn_p_save << " ";
1537 case Cn_r_save_record:
1539 fout << Cn_r_save << " ";
1542 case Cn_da_save_record:
1544 fout << Cn_da_save << " ";
1547 case Cn_dr_save_record:
1549 fout << Cn_dr_save << " ";
1552 case Cn_q_save_record:
1554 fout << Cn_q_save << " ";
1557 case Cn_b3_save_record:
1559 fout << Cn_b3_save << " ";
1563 /******************** Ice Detection ********************/
1564 case CL_clean_record:
1566 fout << CL_clean << " ";
1569 case CL_iced_record:
1571 fout << CL_iced << " ";
1574 case CD_clean_record:
1576 fout << CD_clean << " ";
1579 case CD_iced_record:
1581 fout << CD_iced << " ";
1584 case Cm_clean_record:
1586 fout << Cm_clean << " ";
1589 case Cm_iced_record:
1591 fout << Cm_iced << " ";
1594 case Ch_clean_record:
1596 fout << Ch_clean << " ";
1599 case Ch_iced_record:
1601 fout << Ch_iced << " ";
1604 case Cl_clean_record:
1606 fout << Cl_clean << " ";
1609 case Cl_iced_record:
1611 fout << Cl_iced << " ";
1614 case CLclean_wing_record:
1616 fout << CLclean_wing << " ";
1619 case CLiced_wing_record:
1621 fout << CLiced_wing << " ";
1624 case CLclean_tail_record:
1626 fout << CLclean_tail << " ";
1629 case CLiced_tail_record:
1631 fout << CLiced_tail << " ";
1634 case Lift_clean_wing_record:
1636 fout << Lift_clean_wing << " ";
1639 case Lift_iced_wing_record:
1641 fout << Lift_iced_wing << " ";
1644 case Lift_clean_tail_record:
1646 fout << Lift_clean_tail << " ";
1649 case Lift_iced_tail_record:
1651 fout << Lift_iced_tail << " ";
1654 case Gamma_clean_wing_record:
1656 fout << Gamma_clean_wing << " ";
1659 case Gamma_iced_wing_record:
1661 fout << Gamma_iced_wing << " ";
1664 case Gamma_clean_tail_record:
1666 fout << Gamma_clean_tail << " ";
1669 case Gamma_iced_tail_record:
1671 fout << Gamma_iced_tail << " ";
1674 case w_clean_wing_record:
1676 fout << w_clean_wing << " ";
1679 case w_iced_wing_record:
1681 fout << w_iced_wing << " ";
1684 case w_clean_tail_record:
1686 fout << w_clean_tail << " ";
1689 case w_iced_tail_record:
1691 fout << w_iced_tail << " ";
1694 case V_total_clean_wing_record:
1696 fout << V_total_clean_wing << " ";
1699 case V_total_iced_wing_record:
1701 fout << V_total_iced_wing << " ";
1704 case V_total_clean_tail_record:
1706 fout << V_total_clean_tail << " ";
1709 case V_total_iced_tail_record:
1711 fout << V_total_iced_tail << " ";
1714 case beta_flow_clean_wing_record:
1716 fout << beta_flow_clean_wing << " ";
1719 case beta_flow_clean_wing_deg_record:
1721 fout << beta_flow_clean_wing * RAD_TO_DEG << " ";
1724 case beta_flow_iced_wing_record:
1726 fout << beta_flow_iced_wing << " ";
1729 case beta_flow_iced_wing_deg_record:
1731 fout << beta_flow_iced_wing * RAD_TO_DEG << " ";
1734 case beta_flow_clean_tail_record:
1736 fout << beta_flow_clean_tail << " ";
1739 case beta_flow_clean_tail_deg_record:
1741 fout << beta_flow_clean_tail * RAD_TO_DEG << " ";
1744 case beta_flow_iced_tail_record:
1746 fout << beta_flow_iced_tail << " ";
1749 case beta_flow_iced_tail_deg_record:
1751 fout << beta_flow_iced_tail * RAD_TO_DEG << " ";
1754 case Dbeta_flow_wing_record:
1756 fout << Dbeta_flow_wing << " ";
1759 case Dbeta_flow_wing_deg_record:
1761 fout << Dbeta_flow_wing * RAD_TO_DEG << " ";
1764 case Dbeta_flow_tail_record:
1766 fout << Dbeta_flow_tail << " ";
1769 case Dbeta_flow_tail_deg_record:
1771 fout << Dbeta_flow_tail * RAD_TO_DEG << " ";
1774 case pct_beta_flow_wing_record:
1776 fout << pct_beta_flow_wing << " ";
1779 case pct_beta_flow_tail_record:
1781 fout << pct_beta_flow_tail << " ";
1784 case eta_ice_record:
1786 fout << eta_ice << " ";
1789 case eta_wing_left_record:
1791 fout << eta_wing_left << " ";
1794 case eta_wing_right_record:
1796 fout << eta_wing_right << " ";
1799 case eta_tail_record:
1801 fout << eta_tail << " ";
1804 case delta_CL_record:
1806 fout << delta_CL << " ";
1809 case delta_CD_record:
1811 fout << delta_CD << " ";
1814 case delta_Cm_record:
1816 fout << delta_Cm << " ";
1819 case delta_Cl_record:
1821 fout << delta_Cl << " ";
1824 case delta_Cn_record:
1826 fout << delta_Cn << " ";
1829 case boot_cycle_tail_record:
1831 fout << boot_cycle_tail << " ";
1834 case boot_cycle_wing_left_record:
1836 fout << boot_cycle_wing_left << " ";
1839 case boot_cycle_wing_right_record:
1841 fout << boot_cycle_wing_right << " ";
1844 case autoIPS_tail_record:
1846 fout << autoIPS_tail << " ";
1849 case autoIPS_wing_left_record:
1851 fout << autoIPS_wing_left << " ";
1854 case autoIPS_wing_right_record:
1856 fout << autoIPS_wing_right << " ";
1859 case eps_pitch_input_record:
1861 fout << eps_pitch_input << " ";
1864 case eps_alpha_max_record:
1866 fout << eps_alpha_max << " ";
1869 case eps_pitch_max_record:
1871 fout << eps_pitch_max << " ";
1874 case eps_pitch_min_record:
1876 fout << eps_pitch_min << " ";
1879 case eps_roll_max_record:
1881 fout << eps_roll_max << " ";
1884 case eps_thrust_min_record:
1886 fout << eps_thrust_min << " ";
1889 case eps_flap_max_record:
1891 fout << eps_flap_max << " ";
1894 case eps_airspeed_max_record:
1896 fout << eps_airspeed_max << " ";
1899 case eps_airspeed_min_record:
1901 fout << eps_airspeed_min << " ";
1904 case tactilefadefI_record:
1906 fout << tactilefadefI << " ";
1910 /*******************Autopilot***************************/
1911 case ap_Theta_ref_deg_record:
1913 fout << ap_Theta_ref_deg << " ";
1916 case ap_pah_on_record:
1918 fout << ap_pah_on << " ";
1922 /************************ Forces ***********************/
1923 case F_X_wind_record:
1925 fout << F_X_wind << " ";
1928 case F_Y_wind_record:
1930 fout << F_Y_wind << " ";
1933 case F_Z_wind_record:
1935 fout << F_Z_wind << " ";
1938 case F_X_aero_record:
1940 fout << F_X_aero << " ";
1943 case F_Y_aero_record:
1945 fout << F_Y_aero << " ";
1948 case F_Z_aero_record:
1950 fout << F_Z_aero << " ";
1953 case F_X_engine_record:
1955 fout << F_X_engine << " ";
1958 case F_Y_engine_record:
1960 fout << F_Y_engine << " ";
1963 case F_Z_engine_record:
1965 fout << F_Z_engine << " ";
1968 case F_X_gear_record:
1970 fout << F_X_gear << " ";
1973 case F_Y_gear_record:
1975 fout << F_Y_gear << " ";
1978 case F_Z_gear_record:
1980 fout << F_Z_gear << " ";
1998 case F_north_record:
2000 fout << F_north << " ";
2005 fout << F_east << " ";
2010 fout << F_down << " ";
2014 /*********************** Moments ***********************/
2015 case M_l_aero_record:
2017 fout << M_l_aero << " ";
2020 case M_m_aero_record:
2022 fout << M_m_aero << " ";
2025 case M_n_aero_record:
2027 fout << M_n_aero << " ";
2030 case M_l_engine_record:
2032 fout << M_l_engine << " ";
2035 case M_m_engine_record:
2037 fout << M_m_engine << " ";
2040 case M_n_engine_record:
2042 fout << M_n_engine << " ";
2045 case M_l_gear_record:
2047 fout << M_l_gear << " ";
2050 case M_m_gear_record:
2052 fout << M_m_gear << " ";
2055 case M_n_gear_record:
2057 fout << M_n_gear << " ";
2062 fout << M_l_rp << " ";
2067 fout << M_m_rp << " ";
2072 fout << M_n_rp << " ";
2076 /********************* flapper variables *********************/
2077 case flapper_freq_record:
2079 fout << flapper_freq << " ";
2082 case flapper_phi_record:
2084 fout << flapper_phi << " ";
2087 case flapper_phi_deg_record:
2089 fout << flapper_phi*RAD_TO_DEG << " ";
2092 case flapper_Lift_record:
2094 fout << flapper_Lift << " ";
2097 case flapper_Thrust_record:
2099 fout << flapper_Thrust << " ";
2102 case flapper_Inertia_record:
2104 fout << flapper_Inertia << " ";
2107 case flapper_Moment_record:
2109 fout << flapper_Moment << " ";
2112 /********* MSS debug and other data *******************/
2113 /* debug variables for use in probing data */
2114 /* comment out old lines, and add new */
2115 /* only remove code that you have written */
2119 // fout << eta_q_Cm_q_fac << " ";
2120 // fout << eta_q_Cm_adot_fac << " ";
2121 // fout << eta_q_Cmfade_fac << " ";
2122 // fout << eta_q_Cl_dr_fac << " ";
2123 // fout << eta_q_Cm_de_fac << " ";
2125 // fout << eta_q << " ";
2127 // fout << engineOmega * 60 / (2 * LS_PI)<< " ";
2128 // vertical climb rate in fpm
2129 fout << V_down * 60 << " ";
2130 // vertical climb rate in fps
2131 // fout << V_down << " ";
2132 // w_induced downwash at tail due to wing
2133 // fout << gammaWing << " ";
2134 //fout << outside_control << " ";
2139 // Lift to drag ratio
2140 // fout << V_ground_speed/V_down_rel_ground << " ";
2141 // g's through the c.g. of the aircraft
2142 fout << (-A_Z_cg/32.174) << " ";
2143 // L/D via forces (used in 201 class for L/D)
2144 // fout << (F_Z_wind/F_X_wind) << " ";
2145 // gyroscopic moment (see uiuc_wrapper.cpp)
2146 // fout << (polarInertia * engineOmega * Q_body) << " ";
2147 // downwashAngle at tail
2148 // fout << downwashAngle * 57.29 << " ";
2149 // w_induced from engine
2150 // fout << w_induced << " ";
2155 // die off function for eta_q
2156 // fout << (Cos_alpha * Cos_alpha) << " ";
2157 // gyroscopic moment (see uiuc_wrapper.cpp)
2158 // fout << (-polarInertia * engineOmega * R_body) << " ";
2160 // fout << eta_q << " ";
2161 // flapper cycle percentage
2162 fout << (sin(flapper_phi - 3 * LS_PI / 2)) << " ";
2165 /********* RD debug and other data *******************/
2166 /* debug variables for use in probing data */
2167 /* comment out old lines, and add new */
2168 /* only remove code that you have written */
2171 // flapper F_X_aero_flapper
2172 fout << F_X_aero_flapper << " ";
2177 // flapper F_Z_aero_flapper
2178 //fout << F_Z_aero_flapper << " ";
2180 fout << gear_rate << " ";
2186 fout << gear_max << " ";
2189 case V_down_fpm_record:
2191 fout << V_down * 60 << " ";
2196 fout << eta_q << " ";
2201 fout << (engineOmega * 60 / (2 * LS_PI)) << " ";
2204 case elevator_sas_deg_record:
2206 fout << elevator_sas * RAD_TO_DEG << " ";
2209 case aileron_sas_deg_record:
2211 fout << aileron_sas * RAD_TO_DEG << " ";
2214 case rudder_sas_deg_record:
2216 fout << rudder_sas * RAD_TO_DEG << " ";
2219 case w_induced_record:
2221 fout << w_induced << " ";
2224 case downwashAngle_deg_record:
2226 fout << downwashAngle * RAD_TO_DEG << " ";
2229 case alphaTail_deg_record:
2231 fout << alphaTail * RAD_TO_DEG << " ";
2234 case gammaWing_record:
2236 fout << gammaWing << " ";
2241 fout << V_ground_speed/V_down_rel_ground << " ";
2246 fout << -A_Z_cg/32.174 << " ";
2249 case gyroMomentQ_record:
2251 fout << polarInertia * engineOmega * Q_body << " ";
2254 case gyroMomentR_record:
2256 fout << -polarInertia * engineOmega * R_body << " ";
2259 case Gear_handle_record:
2261 fout << Gear_handle << " ";
2264 case gear_cmd_norm_record:
2266 fout << gear_cmd_norm << " ";
2269 case gear_pos_norm_record:
2271 fout << gear_pos_norm << " ";
2274 /****************Trigger Variables*******************/
2275 case trigger_on_record:
2277 fout << trigger_on << " ";
2280 case trigger_num_record:
2282 fout << trigger_num << " ";
2285 case trigger_toggle_record:
2287 fout << trigger_toggle << " ";
2290 case trigger_counter_record:
2292 fout << trigger_counter << " ";
2297 if (ignore_unknown_keywords) {
2300 // print error message
2301 uiuc_warnings_errors(2, *command_line);
2311 // end uiuc_recorder.cpp