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
44 08/20/2003 (RD) Changed spoiler variables to match
45 flap convention. Added flap_pos_norm
47 ----------------------------------------------------------------------
49 AUTHOR(S): Jeff Scott http://www.jeffscott.net/
50 Robert Deters <rdeters@uiuc.edu>
51 Michael Selig <m-selig@uiuc.edu>
52 ----------------------------------------------------------------------
56 ----------------------------------------------------------------------
60 ----------------------------------------------------------------------
62 OUTPUTS: -variables recorded in uiuc_recorder.dat
64 ----------------------------------------------------------------------
66 CALLED BY: uiuc_wrapper.cpp
68 ----------------------------------------------------------------------
72 ----------------------------------------------------------------------
74 COPYRIGHT: (C) 2000 by Michael Selig
76 This program is free software; you can redistribute it and/or
77 modify it under the terms of the GNU General Public License
78 as published by the Free Software Foundation.
80 This program is distributed in the hope that it will be useful,
81 but WITHOUT ANY WARRANTY; without even the implied warranty of
82 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83 GNU General Public License for more details.
85 You should have received a copy of the GNU General Public License
86 along with this program; if not, write to the Free Software
87 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
89 **********************************************************************/
95 #include <simgear/compiler.h>
96 #include <simgear/misc/sg_path.hxx>
97 #include <Aircraft/aircraft.hxx>
98 #include <Main/fg_props.hxx>
100 #include "uiuc_recorder.h"
102 using std::endl; // -dw
104 void uiuc_recorder( double dt )
109 static int recordStep = 0;
110 string record_variables = "# ";
112 int modulus = recordStep % recordRate;
114 //static double lat1;
115 //static double long1;
116 //double D_cg_north1;
124 if ((recordStep % recordRate) == 0)
126 command_list = recordParts->getCommands();
130 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
131 record_variables += recordParts->getToken(*command_line,2) + " ";
133 fout << record_variables << endl;
134 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
136 linetoken = recordParts->getToken(*command_line, 2);
138 switch(record_map[linetoken])
140 /************************* Time ************************/
143 fout << Simtime << " ";
152 /************************* Mass ************************/
155 fout << Weight << " ";
184 /*********************** Geometry **********************/
185 case Dx_pilot_record:
187 fout << Dx_pilot << " ";
190 case Dy_pilot_record:
192 fout << Dy_pilot << " ";
195 case Dz_pilot_record:
197 fout << Dz_pilot << " ";
202 fout << Dx_cg << " ";
207 fout << Dy_cg << " ";
212 fout << Dz_cg << " ";
216 /********************** Positions **********************/
217 case Lat_geocentric_record:
219 fout << Lat_geocentric << " ";
222 case Lon_geocentric_record:
224 fout << Lon_geocentric << " ";
227 case Radius_to_vehicle_record:
229 fout << Radius_to_vehicle << " ";
232 case Latitude_record:
234 fout << Latitude << " ";
237 case Longitude_record:
239 fout << Longitude << " ";
242 case Altitude_record:
244 fout << Altitude << " ";
254 fout << Theta << " ";
264 fout << Phi*RAD_TO_DEG << " ";
267 case Theta_deg_record:
269 fout << Theta*RAD_TO_DEG << " ";
274 fout << Psi*RAD_TO_DEG << " ";
278 /******************** Accelerations ********************/
279 case V_dot_north_record:
281 fout << V_dot_north << " ";
284 case V_dot_east_record:
286 fout << V_dot_east << " ";
289 case V_dot_down_record:
291 fout << V_dot_down << " ";
294 case U_dot_body_record:
296 fout << U_dot_body << " ";
299 case V_dot_body_record:
301 fout << V_dot_body << " ";
304 case W_dot_body_record:
306 fout << W_dot_body << " ";
309 case A_X_pilot_record:
311 fout << A_X_pilot << " ";
314 case A_Y_pilot_record:
316 fout << A_Y_pilot << " ";
319 case A_Z_pilot_record:
321 fout << A_Z_pilot << " ";
326 fout << A_X_cg << " ";
331 fout << A_Y_cg << " ";
336 fout << A_Z_cg << " ";
339 case N_X_pilot_record:
341 fout << N_X_pilot << " ";
344 case N_Y_pilot_record:
346 fout << N_Y_pilot << " ";
349 case N_Z_pilot_record:
351 fout << N_Z_pilot << " ";
356 fout << N_X_cg << " ";
361 fout << N_Y_cg << " ";
366 fout << N_Z_cg << " ";
369 case P_dot_body_record:
371 fout << P_dot_body << " ";
374 case Q_dot_body_record:
376 fout << Q_dot_body << " ";
379 case R_dot_body_record:
381 fout << R_dot_body << " ";
385 /********************** Velocities *********************/
388 fout << V_north << " ";
393 fout << V_east << " ";
398 fout << V_down << " ";
401 case V_down_fpm_record:
403 fout << V_down * 60 << " ";
406 case V_north_rel_ground_record:
408 fout << V_north_rel_ground << " ";
411 case V_east_rel_ground_record:
413 fout << V_east_rel_ground << " ";
416 case V_down_rel_ground_record:
418 fout << V_down_rel_ground << " ";
421 case V_north_airmass_record:
423 fout << V_north_airmass << " ";
426 case V_east_airmass_record:
428 fout << V_east_airmass << " ";
431 case V_down_airmass_record:
433 fout << V_down_airmass << " ";
436 case V_north_rel_airmass_record:
438 fout << V_north_rel_airmass << " ";
441 case V_east_rel_airmass_record:
443 fout << V_east_rel_airmass << " ";
446 case V_down_rel_airmass_record:
448 fout << V_down_rel_airmass << " ";
453 fout << U_gust << " ";
458 fout << V_gust << " ";
463 fout << W_gust << " ";
468 fout << U_body << " ";
473 fout << V_body << " ";
478 fout << W_body << " ";
481 case V_rel_wind_record:
483 fout << V_rel_wind << " ";
486 case V_true_kts_record:
488 fout << V_true_kts << " ";
491 case V_rel_ground_record:
493 fout << V_rel_ground << " ";
496 case V_inertial_record:
498 fout << V_inertial << " ";
501 case V_ground_speed_record:
503 fout << V_ground_speed << " ";
508 fout << V_equiv << " ";
511 case V_equiv_kts_record:
513 fout << V_equiv_kts << " ";
516 case V_calibrated_record:
518 fout << V_calibrated << " ";
521 case V_calibrated_kts_record:
523 fout << V_calibrated_kts << " ";
528 fout << P_local << " ";
533 fout << Q_local << " ";
538 fout << R_local << " ";
543 fout << P_body << " ";
548 fout << Q_body << " ";
553 fout << R_body << " ";
558 fout << P_total << " ";
563 fout << Q_total << " ";
568 fout << R_total << " ";
573 fout << Phi_dot << " ";
576 case Theta_dot_record:
578 fout << Theta_dot << " ";
583 fout << Psi_dot << " ";
586 case Latitude_dot_record:
588 fout << Latitude_dot << " ";
591 case Longitude_dot_record:
593 fout << Longitude_dot << " ";
596 case Radius_dot_record:
598 fout << Radius_dot << " ";
602 /************************ Angles ***********************/
605 fout << Std_Alpha << " ";
608 case Alpha_deg_record:
610 fout << Std_Alpha * RAD_TO_DEG << " ";
613 case Alpha_dot_record:
615 fout << Std_Alpha_dot << " ";
618 case Alpha_dot_deg_record:
620 fout << Std_Alpha_dot * RAD_TO_DEG << " ";
625 fout << Std_Beta << " ";
628 case Beta_deg_record:
630 fout << Std_Beta * RAD_TO_DEG << " ";
633 case Beta_dot_record:
635 fout << Std_Beta_dot << " ";
638 case Beta_dot_deg_record:
640 fout << Std_Beta_dot * RAD_TO_DEG << " ";
643 case Gamma_vert_record:
645 fout << Gamma_vert_rad << " ";
648 case Gamma_vert_deg_record:
650 fout << Gamma_vert_rad * RAD_TO_DEG << " ";
653 case Gamma_horiz_record:
655 fout << Gamma_horiz_rad << " ";
658 case Gamma_horiz_deg_record:
660 fout << Gamma_horiz_rad * RAD_TO_DEG << " ";
664 /**************** Atmospheric Properties ***************/
667 fout << Density << " ";
672 fout << V_sound << " ";
675 case Mach_number_record:
677 fout << Mach_number << " ";
680 case Static_pressure_record:
682 fout << Static_pressure << " ";
685 case Total_pressure_record:
687 fout << Total_pressure << " ";
690 case Impact_pressure_record:
692 fout << Impact_pressure << " ";
695 case Dynamic_pressure_record:
697 fout << Dynamic_pressure << " ";
700 case Static_temperature_record:
702 fout << Static_temperature << " ";
705 case Total_temperature_record:
707 fout << Total_temperature << " ";
711 /******************** Earth Properties *****************/
714 fout << Gravity << " ";
717 case Sea_level_radius_record:
719 fout << Sea_level_radius << " ";
722 case Earth_position_angle_record:
724 fout << Earth_position_angle << " ";
727 case Runway_altitude_record:
729 fout << Runway_altitude << " ";
732 case Runway_latitude_record:
734 fout << Runway_latitude << " ";
737 case Runway_longitude_record:
739 fout << Runway_longitude << " ";
742 case Runway_heading_record:
744 fout << Runway_heading << " ";
747 case Radius_to_rwy_record:
749 fout << Radius_to_rwy << " ";
752 case D_pilot_north_of_rwy_record:
754 fout << D_pilot_north_of_rwy << " ";
757 case D_pilot_east_of_rwy_record:
759 fout << D_pilot_east_of_rwy << " ";
762 case D_pilot_above_rwy_record:
764 fout << D_pilot_above_rwy << " ";
767 case X_pilot_rwy_record:
769 fout << X_pilot_rwy << " ";
772 case Y_pilot_rwy_record:
774 fout << Y_pilot_rwy << " ";
777 case H_pilot_rwy_record:
779 fout << H_pilot_rwy << " ";
782 case D_cg_north_of_rwy_record:
784 fout << D_cg_north_of_rwy << " ";
787 case D_cg_east_of_rwy_record:
789 fout << D_cg_east_of_rwy << " ";
792 case D_cg_above_rwy_record:
794 fout << D_cg_above_rwy << " ";
797 case X_cg_rwy_record:
799 fout << X_cg_rwy << " ";
802 case Y_cg_rwy_record:
804 fout << Y_cg_rwy << " ";
807 case H_cg_rwy_record:
809 fout << H_cg_rwy << " ";
813 /********************* Engine Inputs *******************/
814 case Throttle_3_record:
816 fout << Throttle[3] << " ";
819 case Throttle_pct_record:
821 fout << Throttle_pct << " ";
825 /************************ Controls ***********************/
826 case Long_control_record:
828 fout << Long_control << " ";
831 case Long_trim_record:
833 fout << Long_trim << " ";
836 case Long_trim_deg_record:
838 fout << Long_trim * RAD_TO_DEG << " ";
841 case elevator_record:
843 fout << elevator << " ";
846 case elevator_deg_record:
848 fout << elevator * RAD_TO_DEG << " ";
851 case elevator_sas_deg_record:
853 fout << elevator_sas * RAD_TO_DEG << " ";
856 case Lat_control_record:
858 fout << Lat_control << " ";
863 fout << aileron << " ";
866 case aileron_deg_record:
868 fout << aileron * RAD_TO_DEG << " ";
871 case aileron_sas_deg_record:
873 fout << aileron_sas * RAD_TO_DEG << " ";
876 case Rudder_pedal_record:
878 fout << Rudder_pedal << " ";
883 fout << rudder << " ";
886 case rudder_deg_record:
888 fout << rudder * RAD_TO_DEG << " ";
891 case rudder_sas_deg_record:
893 fout << rudder_sas * RAD_TO_DEG << " ";
896 case Flap_handle_record:
898 fout << Flap_handle << " ";
901 case flap_cmd_record:
903 fout << flap_cmd << " ";
906 case flap_cmd_deg_record:
908 fout << flap_cmd * RAD_TO_DEG << " ";
911 case flap_pos_record:
913 fout << flap_pos << " ";
916 case flap_pos_deg_record:
918 fout << flap_pos * RAD_TO_DEG << " ";
921 case flap_pos_norm_record:
923 fout << flap_pos_norm << " ";
926 case Spoiler_handle_record:
928 fout << Spoiler_handle << " ";
931 case spoiler_cmd_record:
933 fout << spoiler_cmd << " ";
936 case spoiler_cmd_deg_record:
938 fout << spoiler_cmd * RAD_TO_DEG << " ";
941 case spoiler_pos_record:
943 fout << spoiler_pos << " ";
946 case spoiler_pos_deg_record:
948 fout << spoiler_pos * RAD_TO_DEG << " ";
951 case spoiler_pos_norm_record:
953 fout << spoiler_pos_norm << " ";
957 /****************** Gear Inputs ************************/
958 case Gear_handle_record:
960 fout << Gear_handle << " ";
963 case gear_cmd_norm_record:
965 fout << gear_cmd_norm << " ";
968 case gear_pos_norm_record:
970 fout << gear_pos_norm << " ";
974 /****************** Aero Coefficients ******************/
982 fout << CDfaI << " ";
987 fout << CDfCLI << " ";
992 fout << CDfadeI << " ";
997 fout << CDfdfI << " ";
1000 case CDfadfI_record:
1002 fout << CDfadfI << " ";
1010 case CXfabetafI_record:
1012 fout << CXfabetafI << " ";
1015 case CXfadefI_record:
1017 fout << CXfadefI << " ";
1020 case CXfaqfI_record:
1022 fout << CXfaqfI << " ";
1025 case CDo_save_record:
1027 fout << CDo_save << " ";
1030 case CDK_save_record:
1032 fout << CDK_save << " ";
1035 case CLK_save_record:
1037 fout << CLK_save << " ";
1040 case CD_a_save_record:
1042 fout << CD_a_save << " ";
1045 case CD_adot_save_record:
1047 fout << CD_adot_save << " ";
1050 case CD_q_save_record:
1052 fout << CD_q_save << " ";
1055 case CD_ih_save_record:
1057 fout << CD_ih_save << " ";
1060 case CD_de_save_record:
1062 fout << CD_de_save << " ";
1065 case CD_dr_save_record:
1067 fout << CD_dr_save << " ";
1070 case CD_da_save_record:
1072 fout << CD_da_save << " ";
1075 case CD_beta_save_record:
1077 fout << CD_beta_save << " ";
1080 case CD_df_save_record:
1082 fout << CD_df_save << " ";
1085 case CD_ds_save_record:
1087 fout << CD_ds_save << " ";
1090 case CD_dg_save_record:
1092 fout << CD_dg_save << " ";
1095 case CXo_save_record:
1097 fout << CXo_save << " ";
1100 case CXK_save_record:
1102 fout << CXK_save << " ";
1105 case CX_a_save_record:
1107 fout << CX_a_save << " ";
1110 case CX_a2_save_record:
1112 fout << CX_a2_save << " ";
1115 case CX_a3_save_record:
1117 fout << CX_a3_save << " ";
1120 case CX_adot_save_record:
1122 fout << CX_adot_save << " ";
1125 case CX_q_save_record:
1127 fout << CX_q_save << " ";
1130 case CX_de_save_record:
1132 fout << CX_de_save << " ";
1135 case CX_dr_save_record:
1137 fout << CX_dr_save << " ";
1140 case CX_df_save_record:
1142 fout << CX_df_save << " ";
1145 case CX_adf_save_record:
1147 fout << CX_adf_save << " ";
1157 fout << CLfaI << " ";
1160 case CLfadeI_record:
1162 fout << CLfadeI << " ";
1167 fout << CLfdfI << " ";
1170 case CLfadfI_record:
1172 fout << CLfadfI << " ";
1182 fout << CZfaI << " ";
1185 case CZfabetafI_record:
1187 fout << CZfabetafI << " ";
1190 case CZfadefI_record:
1192 fout << CZfadefI << " ";
1195 case CZfaqfI_record:
1197 fout << CZfaqfI << " ";
1200 case CLo_save_record:
1202 fout << CLo_save << " ";
1205 case CL_a_save_record:
1207 fout << CL_a_save << " ";
1210 case CL_adot_save_record:
1212 fout << CL_adot_save << " ";
1215 case CL_q_save_record:
1217 fout << CL_q_save << " ";
1220 case CL_ih_save_record:
1222 fout << CL_ih_save << " ";
1225 case CL_de_save_record:
1227 fout << CL_de_save << " ";
1230 case CL_df_save_record:
1232 fout << CL_df_save << " ";
1235 case CL_ds_save_record:
1237 fout << CL_ds_save << " ";
1240 case CL_dg_save_record:
1242 fout << CL_dg_save << " ";
1245 case CZo_save_record:
1247 fout << CZo_save << " ";
1250 case CZ_a_save_record:
1252 fout << CZ_a_save << " ";
1255 case CZ_a2_save_record:
1257 fout << CZ_a2_save << " ";
1260 case CZ_a3_save_record:
1262 fout << CZ_a3_save << " ";
1265 case CZ_adot_save_record:
1267 fout << CZ_adot_save << " ";
1270 case CZ_q_save_record:
1272 fout << CZ_q_save << " ";
1275 case CZ_de_save_record:
1277 fout << CZ_de_save << " ";
1280 case CZ_deb2_save_record:
1282 fout << CZ_deb2_save << " ";
1285 case CZ_df_save_record:
1287 fout << CZ_df_save << " ";
1290 case CZ_adf_save_record:
1292 fout << CZ_adf_save << " ";
1302 fout << CmfaI << " ";
1305 case CmfadeI_record:
1307 fout << CmfadeI << " ";
1312 fout << CmfdfI << " ";
1315 case CmfadfI_record:
1317 fout << CmfadfI << " ";
1320 case CmfabetafI_record:
1322 fout << CmfabetafI << " ";
1325 case CmfadefI_record:
1327 fout << CmfadefI << " ";
1330 case CmfaqfI_record:
1332 fout << CmfaqfI << " ";
1335 case Cmo_save_record:
1337 fout << Cmo_save << " ";
1340 case Cm_a_save_record:
1342 fout << Cm_a_save << " ";
1345 case Cm_a2_save_record:
1347 fout << Cm_a2_save << " ";
1350 case Cm_adot_save_record:
1352 fout << Cm_adot_save << " ";
1355 case Cm_q_save_record:
1357 fout << Cm_q_save << " ";
1360 case Cm_ih_save_record:
1362 fout << Cm_ih_save << " ";
1365 case Cm_de_save_record:
1367 fout << Cm_de_save << " ";
1370 case Cm_b2_save_record:
1372 fout << Cm_b2_save << " ";
1375 case Cm_r_save_record:
1377 fout << Cm_r_save << " ";
1380 case Cm_df_save_record:
1382 fout << Cm_df_save << " ";
1385 case Cm_ds_save_record:
1387 fout << Cm_ds_save << " ";
1390 case Cm_dg_save_record:
1392 fout << Cm_dg_save << " ";
1400 case CYfadaI_record:
1402 fout << CYfadaI << " ";
1405 case CYfbetadrI_record:
1407 fout << CYfbetadrI << " ";
1410 case CYfabetafI_record:
1412 fout << CYfabetafI << " ";
1415 case CYfadafI_record:
1417 fout << CYfadafI << " ";
1420 case CYfadrfI_record:
1422 fout << CYfadrfI << " ";
1425 case CYfapfI_record:
1427 fout << CYfapfI << " ";
1430 case CYfarfI_record:
1432 fout << CYfarfI << " ";
1435 case CYo_save_record:
1437 fout << CYo_save << " ";
1440 case CY_beta_save_record:
1442 fout << CY_beta_save << " ";
1445 case CY_p_save_record:
1447 fout << CY_p_save << " ";
1450 case CY_r_save_record:
1452 fout << CY_r_save << " ";
1455 case CY_da_save_record:
1457 fout << CY_da_save << " ";
1460 case CY_dr_save_record:
1462 fout << CY_dr_save << " ";
1465 case CY_dra_save_record:
1467 fout << CY_dra_save << " ";
1470 case CY_bdot_save_record:
1472 fout << CY_bdot_save << " ";
1480 case ClfadaI_record:
1482 fout << ClfadaI << " ";
1485 case ClfbetadrI_record:
1487 fout << ClfbetadrI << " ";
1490 case ClfabetafI_record:
1492 fout << ClfabetafI << " ";
1495 case ClfadafI_record:
1497 fout << ClfadafI << " ";
1500 case ClfadrfI_record:
1502 fout << ClfadrfI << " ";
1505 case ClfapfI_record:
1507 fout << ClfapfI << " ";
1510 case ClfarfI_record:
1512 fout << ClfarfI << " ";
1515 case Clo_save_record:
1517 fout << Clo_save << " ";
1520 case Cl_beta_save_record:
1522 fout << Cl_beta_save << " ";
1525 case Cl_p_save_record:
1527 fout << Cl_p_save << " ";
1530 case Cl_r_save_record:
1532 fout << Cl_r_save << " ";
1535 case Cl_da_save_record:
1537 fout << Cl_da_save << " ";
1540 case Cl_dr_save_record:
1542 fout << Cl_dr_save << " ";
1545 case Cl_daa_save_record:
1547 fout << Cl_daa_save << " ";
1555 case CnfadaI_record:
1557 fout << CnfadaI << " ";
1560 case CnfbetadrI_record:
1562 fout << CnfbetadrI << " ";
1565 case CnfabetafI_record:
1567 fout << CnfabetafI << " ";
1570 case CnfadafI_record:
1572 fout << CnfadafI << " ";
1575 case CnfadrfI_record:
1577 fout << CnfadrfI << " ";
1580 case CnfapfI_record:
1582 fout << CnfapfI << " ";
1585 case CnfarfI_record:
1587 fout << CnfarfI << " ";
1590 case Cno_save_record:
1592 fout << Cno_save << " ";
1595 case Cn_beta_save_record:
1597 fout << Cn_beta_save << " ";
1600 case Cn_p_save_record:
1602 fout << Cn_p_save << " ";
1605 case Cn_r_save_record:
1607 fout << Cn_r_save << " ";
1610 case Cn_da_save_record:
1612 fout << Cn_da_save << " ";
1615 case Cn_dr_save_record:
1617 fout << Cn_dr_save << " ";
1620 case Cn_q_save_record:
1622 fout << Cn_q_save << " ";
1625 case Cn_b3_save_record:
1627 fout << Cn_b3_save << " ";
1631 /******************** Ice Detection ********************/
1632 case CL_clean_record:
1634 fout << CL_clean << " ";
1637 case CL_iced_record:
1639 fout << CL_iced << " ";
1642 case CD_clean_record:
1644 fout << CD_clean << " ";
1647 case CD_iced_record:
1649 fout << CD_iced << " ";
1652 case Cm_clean_record:
1654 fout << Cm_clean << " ";
1657 case Cm_iced_record:
1659 fout << Cm_iced << " ";
1662 case Ch_clean_record:
1664 fout << Ch_clean << " ";
1667 case Ch_iced_record:
1669 fout << Ch_iced << " ";
1672 case Cl_clean_record:
1674 fout << Cl_clean << " ";
1677 case Cl_iced_record:
1679 fout << Cl_iced << " ";
1682 case CLclean_wing_record:
1684 fout << CLclean_wing << " ";
1687 case CLiced_wing_record:
1689 fout << CLiced_wing << " ";
1692 case CLclean_tail_record:
1694 fout << CLclean_tail << " ";
1697 case CLiced_tail_record:
1699 fout << CLiced_tail << " ";
1702 case Lift_clean_wing_record:
1704 fout << Lift_clean_wing << " ";
1707 case Lift_iced_wing_record:
1709 fout << Lift_iced_wing << " ";
1712 case Lift_clean_tail_record:
1714 fout << Lift_clean_tail << " ";
1717 case Lift_iced_tail_record:
1719 fout << Lift_iced_tail << " ";
1722 case Gamma_clean_wing_record:
1724 fout << Gamma_clean_wing << " ";
1727 case Gamma_iced_wing_record:
1729 fout << Gamma_iced_wing << " ";
1732 case Gamma_clean_tail_record:
1734 fout << Gamma_clean_tail << " ";
1737 case Gamma_iced_tail_record:
1739 fout << Gamma_iced_tail << " ";
1742 case w_clean_wing_record:
1744 fout << w_clean_wing << " ";
1747 case w_iced_wing_record:
1749 fout << w_iced_wing << " ";
1752 case w_clean_tail_record:
1754 fout << w_clean_tail << " ";
1757 case w_iced_tail_record:
1759 fout << w_iced_tail << " ";
1762 case V_total_clean_wing_record:
1764 fout << V_total_clean_wing << " ";
1767 case V_total_iced_wing_record:
1769 fout << V_total_iced_wing << " ";
1772 case V_total_clean_tail_record:
1774 fout << V_total_clean_tail << " ";
1777 case V_total_iced_tail_record:
1779 fout << V_total_iced_tail << " ";
1782 case beta_flow_clean_wing_record:
1784 fout << beta_flow_clean_wing << " ";
1787 case beta_flow_clean_wing_deg_record:
1789 fout << beta_flow_clean_wing * RAD_TO_DEG << " ";
1792 case beta_flow_iced_wing_record:
1794 fout << beta_flow_iced_wing << " ";
1797 case beta_flow_iced_wing_deg_record:
1799 fout << beta_flow_iced_wing * RAD_TO_DEG << " ";
1802 case beta_flow_clean_tail_record:
1804 fout << beta_flow_clean_tail << " ";
1807 case beta_flow_clean_tail_deg_record:
1809 fout << beta_flow_clean_tail * RAD_TO_DEG << " ";
1812 case beta_flow_iced_tail_record:
1814 fout << beta_flow_iced_tail << " ";
1817 case beta_flow_iced_tail_deg_record:
1819 fout << beta_flow_iced_tail * RAD_TO_DEG << " ";
1822 case Dbeta_flow_wing_record:
1824 fout << Dbeta_flow_wing << " ";
1827 case Dbeta_flow_wing_deg_record:
1829 fout << Dbeta_flow_wing * RAD_TO_DEG << " ";
1832 case Dbeta_flow_tail_record:
1834 fout << Dbeta_flow_tail << " ";
1837 case Dbeta_flow_tail_deg_record:
1839 fout << Dbeta_flow_tail * RAD_TO_DEG << " ";
1842 case pct_beta_flow_wing_record:
1844 fout << pct_beta_flow_wing << " ";
1847 case pct_beta_flow_tail_record:
1849 fout << pct_beta_flow_tail << " ";
1852 case eta_ice_record:
1854 fout << eta_ice << " ";
1857 case eta_wing_left_record:
1859 fout << eta_wing_left << " ";
1862 case eta_wing_right_record:
1864 fout << eta_wing_right << " ";
1867 case eta_tail_record:
1869 fout << eta_tail << " ";
1872 case delta_CL_record:
1874 fout << delta_CL << " ";
1877 case delta_CD_record:
1879 fout << delta_CD << " ";
1882 case delta_Cm_record:
1884 fout << delta_Cm << " ";
1887 case delta_Cl_record:
1889 fout << delta_Cl << " ";
1892 case delta_Cn_record:
1894 fout << delta_Cn << " ";
1897 case boot_cycle_tail_record:
1899 fout << boot_cycle_tail << " ";
1902 case boot_cycle_wing_left_record:
1904 fout << boot_cycle_wing_left << " ";
1907 case boot_cycle_wing_right_record:
1909 fout << boot_cycle_wing_right << " ";
1912 case autoIPS_tail_record:
1914 fout << autoIPS_tail << " ";
1917 case autoIPS_wing_left_record:
1919 fout << autoIPS_wing_left << " ";
1922 case autoIPS_wing_right_record:
1924 fout << autoIPS_wing_right << " ";
1927 case eps_pitch_input_record:
1929 fout << eps_pitch_input << " ";
1932 case eps_alpha_max_record:
1934 fout << eps_alpha_max << " ";
1937 case eps_pitch_max_record:
1939 fout << eps_pitch_max << " ";
1942 case eps_pitch_min_record:
1944 fout << eps_pitch_min << " ";
1947 case eps_roll_max_record:
1949 fout << eps_roll_max << " ";
1952 case eps_thrust_min_record:
1954 fout << eps_thrust_min << " ";
1957 case eps_flap_max_record:
1959 fout << eps_flap_max << " ";
1962 case eps_airspeed_max_record:
1964 fout << eps_airspeed_max << " ";
1967 case eps_airspeed_min_record:
1969 fout << eps_airspeed_min << " ";
1973 /****************** Autopilot **************************/
1974 case ap_pah_on_record:
1976 fout << ap_pah_on << " ";
1979 case ap_alh_on_record:
1981 fout << ap_alh_on << " ";
1984 case ap_rah_on_record:
1986 fout << ap_rah_on << " ";
1989 case ap_hh_on_record:
1991 fout << ap_hh_on << " ";
1994 case ap_Theta_ref_deg_record:
1996 fout << ap_Theta_ref_rad*RAD_TO_DEG << " ";
1999 case ap_Theta_ref_rad_record:
2001 fout << ap_Theta_ref_rad << " ";
2004 case ap_alt_ref_ft_record:
2006 fout << ap_alt_ref_ft << " ";
2009 case ap_Phi_ref_deg_record:
2011 fout << ap_Phi_ref_rad*RAD_TO_DEG << " ";
2014 case ap_Phi_ref_rad_record:
2016 fout << ap_Phi_ref_rad << " ";
2019 case ap_Psi_ref_deg_record:
2021 fout << ap_Psi_ref_rad*RAD_TO_DEG << " ";
2024 case ap_Psi_ref_rad_record:
2026 fout << ap_Psi_ref_rad << " ";
2030 /************************ Forces ***********************/
2031 case F_X_wind_record:
2033 fout << F_X_wind << " ";
2036 case F_Y_wind_record:
2038 fout << F_Y_wind << " ";
2041 case F_Z_wind_record:
2043 fout << F_Z_wind << " ";
2046 case F_X_aero_record:
2048 fout << F_X_aero << " ";
2051 case F_Y_aero_record:
2053 fout << F_Y_aero << " ";
2056 case F_Z_aero_record:
2058 fout << F_Z_aero << " ";
2061 case F_X_engine_record:
2063 fout << F_X_engine << " ";
2066 case F_Y_engine_record:
2068 fout << F_Y_engine << " ";
2071 case F_Z_engine_record:
2073 fout << F_Z_engine << " ";
2076 case F_X_gear_record:
2078 fout << F_X_gear << " ";
2081 case F_Y_gear_record:
2083 fout << F_Y_gear << " ";
2086 case F_Z_gear_record:
2088 fout << F_Z_gear << " ";
2106 case F_north_record:
2108 fout << F_north << " ";
2113 fout << F_east << " ";
2118 fout << F_down << " ";
2122 /*********************** Moments ***********************/
2123 case M_l_aero_record:
2125 fout << M_l_aero << " ";
2128 case M_m_aero_record:
2130 fout << M_m_aero << " ";
2133 case M_n_aero_record:
2135 fout << M_n_aero << " ";
2138 case M_l_engine_record:
2140 fout << M_l_engine << " ";
2143 case M_m_engine_record:
2145 fout << M_m_engine << " ";
2148 case M_n_engine_record:
2150 fout << M_n_engine << " ";
2153 case M_l_gear_record:
2155 fout << M_l_gear << " ";
2158 case M_m_gear_record:
2160 fout << M_m_gear << " ";
2163 case M_n_gear_record:
2165 fout << M_n_gear << " ";
2170 fout << M_l_rp << " ";
2175 fout << M_m_rp << " ";
2180 fout << M_n_rp << " ";
2185 fout << M_l_cg << " ";
2190 fout << M_m_cg << " ";
2195 fout << M_n_cg << " ";
2199 /********************* flapper *********************/
2200 case flapper_freq_record:
2202 fout << flapper_freq << " ";
2205 case flapper_phi_record:
2207 fout << flapper_phi << " ";
2210 case flapper_phi_deg_record:
2212 fout << flapper_phi*RAD_TO_DEG << " ";
2215 case flapper_Lift_record:
2217 fout << flapper_Lift << " ";
2220 case flapper_Thrust_record:
2222 fout << flapper_Thrust << " ";
2225 case flapper_Inertia_record:
2227 fout << flapper_Inertia << " ";
2230 case flapper_Moment_record:
2232 fout << flapper_Moment << " ";
2235 /****************Other Variables*******************/
2236 case gyroMomentQ_record:
2238 fout << polarInertia * engineOmega * Q_body << " ";
2241 case gyroMomentR_record:
2243 fout << -polarInertia * engineOmega * R_body << " ";
2248 fout << eta_q << " ";
2253 fout << (engineOmega * 60 / (2 * LS_PI)) << " ";
2256 case w_induced_record:
2258 fout << w_induced << " ";
2261 case downwashAngle_deg_record:
2263 fout << downwashAngle * RAD_TO_DEG << " ";
2266 case alphaTail_deg_record:
2268 fout << alphaTail * RAD_TO_DEG << " ";
2271 case gammaWing_record:
2273 fout << gammaWing << " ";
2278 fout << V_ground_speed/V_down_rel_ground << " ";
2283 fout << -A_Z_cg/32.174 << " ";
2286 case tactilefadefI_record:
2288 fout << tactilefadefI << " ";
2291 /****************Trigger Variables*******************/
2292 case trigger_on_record:
2294 fout << trigger_on << " ";
2297 case trigger_num_record:
2299 fout << trigger_num << " ";
2302 case trigger_toggle_record:
2304 fout << trigger_toggle << " ";
2307 case trigger_counter_record:
2309 fout << trigger_counter << " ";
2312 /*********local to body transformation matrix********/
2313 case T_local_to_body_11_record:
2315 fout << T_local_to_body_11 << " ";
2318 case T_local_to_body_12_record:
2320 fout << T_local_to_body_12 << " ";
2323 case T_local_to_body_13_record:
2325 fout << T_local_to_body_13 << " ";
2328 case T_local_to_body_21_record:
2330 fout << T_local_to_body_21 << " ";
2333 case T_local_to_body_22_record:
2335 fout << T_local_to_body_22 << " ";
2338 case T_local_to_body_23_record:
2340 fout << T_local_to_body_23 << " ";
2343 case T_local_to_body_31_record:
2345 fout << T_local_to_body_31 << " ";
2348 case T_local_to_body_32_record:
2350 fout << T_local_to_body_32 << " ";
2353 case T_local_to_body_33_record:
2355 fout << T_local_to_body_33 << " ";
2359 /********* MSS debug and other data *******************/
2360 /* debug variables for use in probing data */
2361 /* comment out old lines, and add new */
2362 /* only remove code that you have written */
2366 // fout << eta_q_Cm_q_fac << " ";
2367 // fout << eta_q_Cm_adot_fac << " ";
2368 // fout << eta_q_Cmfade_fac << " ";
2369 // fout << eta_q_Cl_dr_fac << " ";
2370 // fout << eta_q_Cm_de_fac << " ";
2372 // fout << eta_q << " ";
2374 // fout << engineOmega * 60 / (2 * LS_PI)<< " ";
2375 // vertical climb rate in fpm
2376 fout << V_down * 60 << " ";
2377 // vertical climb rate in fps
2378 // fout << V_down << " ";
2379 // w_induced downwash at tail due to wing
2380 // fout << gammaWing << " ";
2381 //fout << outside_control << " ";
2386 // Lift to drag ratio
2387 // fout << V_ground_speed/V_down_rel_ground << " ";
2388 // g's through the c.g. of the aircraft
2389 fout << (-A_Z_cg/32.174) << " ";
2390 // L/D via forces (used in 201 class for L/D)
2391 // fout << (F_Z_wind/F_X_wind) << " ";
2392 // gyroscopic moment (see uiuc_wrapper.cpp)
2393 // fout << (polarInertia * engineOmega * Q_body) << " ";
2394 // downwashAngle at tail
2395 // fout << downwashAngle * 57.29 << " ";
2396 // w_induced from engine
2397 // fout << w_induced << " ";
2402 // die off function for eta_q
2403 // fout << (Cos_alpha * Cos_alpha) << " ";
2404 // gyroscopic moment (see uiuc_wrapper.cpp)
2405 // fout << (-polarInertia * engineOmega * R_body) << " ";
2407 // fout << eta_q << " ";
2408 // flapper cycle percentage
2409 fout << (sin(flapper_phi - 3 * LS_PI / 2)) << " ";
2412 /********* RD debug and other data *******************/
2413 /* debug variables for use in probing data */
2414 /* comment out old lines, and add new */
2415 /* only remove code that you have written */
2418 // flapper F_X_aero_flapper
2419 //fout << F_X_aero_flapper << " ";
2421 //fout << ap_pah_on << " ";
2422 //D_cg_north1 = Radius_to_rwy*(Latitude - lat1);
2423 //fout << D_cg_north1 << " ";
2428 // flapper F_Z_aero_flapper
2429 //fout << F_Z_aero_flapper << " ";
2431 //D_cg_east1 = Radius_to_rwy*cos(lat1)*(Longitude - long1);
2432 //fout << D_cg_east1 << " ";
2438 //fout << gear_max << " ";
2439 //fout << sqrt(D_cg_north1*D_cg_north1+D_cg_east1*D_cg_east1) << " ";
2445 fout << debug7 << " ";
2451 fout << debug8 << " ";
2457 fout << debug9 << " ";
2460 case debug10_record:
2463 fout << debug10 << " ";
2468 if (ignore_unknown_keywords) {
2471 // print error message
2472 uiuc_warnings_errors(2, *command_line);
2482 // end uiuc_recorder.cpp