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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
88 USA or view http://www.gnu.org/copyleft/gpl.html.
90 **********************************************************************/
96 #include <simgear/compiler.h>
97 #include <simgear/misc/sg_path.hxx>
98 #include <Aircraft/aircraft.hxx>
99 #include <Main/fg_props.hxx>
101 #include "uiuc_recorder.h"
103 SG_USING_STD(endl); // -dw
105 void uiuc_recorder( double dt )
110 static int recordStep = 0;
111 string record_variables = "# ";
113 int modulus = recordStep % recordRate;
115 //static double lat1;
116 //static double long1;
117 //double D_cg_north1;
125 if ((recordStep % recordRate) == 0)
127 command_list = recordParts->getCommands();
131 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
132 record_variables += recordParts->getToken(*command_line,2) + " ";
134 fout << record_variables << endl;
135 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
137 linetoken = recordParts->getToken(*command_line, 2);
139 switch(record_map[linetoken])
141 /************************* Time ************************/
144 fout << Simtime << " ";
153 /************************* Mass ************************/
156 fout << Weight << " ";
185 /*********************** Geometry **********************/
186 case Dx_pilot_record:
188 fout << Dx_pilot << " ";
191 case Dy_pilot_record:
193 fout << Dy_pilot << " ";
196 case Dz_pilot_record:
198 fout << Dz_pilot << " ";
203 fout << Dx_cg << " ";
208 fout << Dy_cg << " ";
213 fout << Dz_cg << " ";
217 /********************** Positions **********************/
218 case Lat_geocentric_record:
220 fout << Lat_geocentric << " ";
223 case Lon_geocentric_record:
225 fout << Lon_geocentric << " ";
228 case Radius_to_vehicle_record:
230 fout << Radius_to_vehicle << " ";
233 case Latitude_record:
235 fout << Latitude << " ";
238 case Longitude_record:
240 fout << Longitude << " ";
243 case Altitude_record:
245 fout << Altitude << " ";
255 fout << Theta << " ";
265 fout << Phi*RAD_TO_DEG << " ";
268 case Theta_deg_record:
270 fout << Theta*RAD_TO_DEG << " ";
275 fout << Psi*RAD_TO_DEG << " ";
279 /******************** Accelerations ********************/
280 case V_dot_north_record:
282 fout << V_dot_north << " ";
285 case V_dot_east_record:
287 fout << V_dot_east << " ";
290 case V_dot_down_record:
292 fout << V_dot_down << " ";
295 case U_dot_body_record:
297 fout << U_dot_body << " ";
300 case V_dot_body_record:
302 fout << V_dot_body << " ";
305 case W_dot_body_record:
307 fout << W_dot_body << " ";
310 case A_X_pilot_record:
312 fout << A_X_pilot << " ";
315 case A_Y_pilot_record:
317 fout << A_Y_pilot << " ";
320 case A_Z_pilot_record:
322 fout << A_Z_pilot << " ";
327 fout << A_X_cg << " ";
332 fout << A_Y_cg << " ";
337 fout << A_Z_cg << " ";
340 case N_X_pilot_record:
342 fout << N_X_pilot << " ";
345 case N_Y_pilot_record:
347 fout << N_Y_pilot << " ";
350 case N_Z_pilot_record:
352 fout << N_Z_pilot << " ";
357 fout << N_X_cg << " ";
362 fout << N_Y_cg << " ";
367 fout << N_Z_cg << " ";
370 case P_dot_body_record:
372 fout << P_dot_body << " ";
375 case Q_dot_body_record:
377 fout << Q_dot_body << " ";
380 case R_dot_body_record:
382 fout << R_dot_body << " ";
386 /********************** Velocities *********************/
389 fout << V_north << " ";
394 fout << V_east << " ";
399 fout << V_down << " ";
402 case V_down_fpm_record:
404 fout << V_down * 60 << " ";
407 case V_north_rel_ground_record:
409 fout << V_north_rel_ground << " ";
412 case V_east_rel_ground_record:
414 fout << V_east_rel_ground << " ";
417 case V_down_rel_ground_record:
419 fout << V_down_rel_ground << " ";
422 case V_north_airmass_record:
424 fout << V_north_airmass << " ";
427 case V_east_airmass_record:
429 fout << V_east_airmass << " ";
432 case V_down_airmass_record:
434 fout << V_down_airmass << " ";
437 case V_north_rel_airmass_record:
439 fout << V_north_rel_airmass << " ";
442 case V_east_rel_airmass_record:
444 fout << V_east_rel_airmass << " ";
447 case V_down_rel_airmass_record:
449 fout << V_down_rel_airmass << " ";
454 fout << U_gust << " ";
459 fout << V_gust << " ";
464 fout << W_gust << " ";
469 fout << U_body << " ";
474 fout << V_body << " ";
479 fout << W_body << " ";
482 case V_rel_wind_record:
484 fout << V_rel_wind << " ";
487 case V_true_kts_record:
489 fout << V_true_kts << " ";
492 case V_rel_ground_record:
494 fout << V_rel_ground << " ";
497 case V_inertial_record:
499 fout << V_inertial << " ";
502 case V_ground_speed_record:
504 fout << V_ground_speed << " ";
509 fout << V_equiv << " ";
512 case V_equiv_kts_record:
514 fout << V_equiv_kts << " ";
517 case V_calibrated_record:
519 fout << V_calibrated << " ";
522 case V_calibrated_kts_record:
524 fout << V_calibrated_kts << " ";
529 fout << P_local << " ";
534 fout << Q_local << " ";
539 fout << R_local << " ";
544 fout << P_body << " ";
549 fout << Q_body << " ";
554 fout << R_body << " ";
559 fout << P_total << " ";
564 fout << Q_total << " ";
569 fout << R_total << " ";
574 fout << Phi_dot << " ";
577 case Theta_dot_record:
579 fout << Theta_dot << " ";
584 fout << Psi_dot << " ";
587 case Latitude_dot_record:
589 fout << Latitude_dot << " ";
592 case Longitude_dot_record:
594 fout << Longitude_dot << " ";
597 case Radius_dot_record:
599 fout << Radius_dot << " ";
603 /************************ Angles ***********************/
606 fout << Std_Alpha << " ";
609 case Alpha_deg_record:
611 fout << Std_Alpha * RAD_TO_DEG << " ";
614 case Alpha_dot_record:
616 fout << Std_Alpha_dot << " ";
619 case Alpha_dot_deg_record:
621 fout << Std_Alpha_dot * RAD_TO_DEG << " ";
626 fout << Std_Beta << " ";
629 case Beta_deg_record:
631 fout << Std_Beta * RAD_TO_DEG << " ";
634 case Beta_dot_record:
636 fout << Std_Beta_dot << " ";
639 case Beta_dot_deg_record:
641 fout << Std_Beta_dot * RAD_TO_DEG << " ";
644 case Gamma_vert_record:
646 fout << Gamma_vert_rad << " ";
649 case Gamma_vert_deg_record:
651 fout << Gamma_vert_rad * RAD_TO_DEG << " ";
654 case Gamma_horiz_record:
656 fout << Gamma_horiz_rad << " ";
659 case Gamma_horiz_deg_record:
661 fout << Gamma_horiz_rad * RAD_TO_DEG << " ";
665 /**************** Atmospheric Properties ***************/
668 fout << Density << " ";
673 fout << V_sound << " ";
676 case Mach_number_record:
678 fout << Mach_number << " ";
681 case Static_pressure_record:
683 fout << Static_pressure << " ";
686 case Total_pressure_record:
688 fout << Total_pressure << " ";
691 case Impact_pressure_record:
693 fout << Impact_pressure << " ";
696 case Dynamic_pressure_record:
698 fout << Dynamic_pressure << " ";
701 case Static_temperature_record:
703 fout << Static_temperature << " ";
706 case Total_temperature_record:
708 fout << Total_temperature << " ";
712 /******************** Earth Properties *****************/
715 fout << Gravity << " ";
718 case Sea_level_radius_record:
720 fout << Sea_level_radius << " ";
723 case Earth_position_angle_record:
725 fout << Earth_position_angle << " ";
728 case Runway_altitude_record:
730 fout << Runway_altitude << " ";
733 case Runway_latitude_record:
735 fout << Runway_latitude << " ";
738 case Runway_longitude_record:
740 fout << Runway_longitude << " ";
743 case Runway_heading_record:
745 fout << Runway_heading << " ";
748 case Radius_to_rwy_record:
750 fout << Radius_to_rwy << " ";
753 case D_pilot_north_of_rwy_record:
755 fout << D_pilot_north_of_rwy << " ";
758 case D_pilot_east_of_rwy_record:
760 fout << D_pilot_east_of_rwy << " ";
763 case D_pilot_above_rwy_record:
765 fout << D_pilot_above_rwy << " ";
768 case X_pilot_rwy_record:
770 fout << X_pilot_rwy << " ";
773 case Y_pilot_rwy_record:
775 fout << Y_pilot_rwy << " ";
778 case H_pilot_rwy_record:
780 fout << H_pilot_rwy << " ";
783 case D_cg_north_of_rwy_record:
785 fout << D_cg_north_of_rwy << " ";
788 case D_cg_east_of_rwy_record:
790 fout << D_cg_east_of_rwy << " ";
793 case D_cg_above_rwy_record:
795 fout << D_cg_above_rwy << " ";
798 case X_cg_rwy_record:
800 fout << X_cg_rwy << " ";
803 case Y_cg_rwy_record:
805 fout << Y_cg_rwy << " ";
808 case H_cg_rwy_record:
810 fout << H_cg_rwy << " ";
814 /********************* Engine Inputs *******************/
815 case Throttle_3_record:
817 fout << Throttle[3] << " ";
820 case Throttle_pct_record:
822 fout << Throttle_pct << " ";
826 /************************ Controls ***********************/
827 case Long_control_record:
829 fout << Long_control << " ";
832 case Long_trim_record:
834 fout << Long_trim << " ";
837 case Long_trim_deg_record:
839 fout << Long_trim * RAD_TO_DEG << " ";
842 case elevator_record:
844 fout << elevator << " ";
847 case elevator_deg_record:
849 fout << elevator * RAD_TO_DEG << " ";
852 case elevator_sas_deg_record:
854 fout << elevator_sas * RAD_TO_DEG << " ";
857 case Lat_control_record:
859 fout << Lat_control << " ";
864 fout << aileron << " ";
867 case aileron_deg_record:
869 fout << aileron * RAD_TO_DEG << " ";
872 case aileron_sas_deg_record:
874 fout << aileron_sas * RAD_TO_DEG << " ";
877 case Rudder_pedal_record:
879 fout << Rudder_pedal << " ";
884 fout << rudder << " ";
887 case rudder_deg_record:
889 fout << rudder * RAD_TO_DEG << " ";
892 case rudder_sas_deg_record:
894 fout << rudder_sas * RAD_TO_DEG << " ";
897 case Flap_handle_record:
899 fout << Flap_handle << " ";
902 case flap_cmd_record:
904 fout << flap_cmd << " ";
907 case flap_cmd_deg_record:
909 fout << flap_cmd * RAD_TO_DEG << " ";
912 case flap_pos_record:
914 fout << flap_pos << " ";
917 case flap_pos_deg_record:
919 fout << flap_pos * RAD_TO_DEG << " ";
922 case flap_pos_norm_record:
924 fout << flap_pos_norm << " ";
927 case Spoiler_handle_record:
929 fout << Spoiler_handle << " ";
932 case spoiler_cmd_record:
934 fout << spoiler_cmd << " ";
937 case spoiler_cmd_deg_record:
939 fout << spoiler_cmd * RAD_TO_DEG << " ";
942 case spoiler_pos_record:
944 fout << spoiler_pos << " ";
947 case spoiler_pos_deg_record:
949 fout << spoiler_pos * RAD_TO_DEG << " ";
952 case spoiler_pos_norm_record:
954 fout << spoiler_pos_norm << " ";
958 /****************** Gear Inputs ************************/
959 case Gear_handle_record:
961 fout << Gear_handle << " ";
964 case gear_cmd_norm_record:
966 fout << gear_cmd_norm << " ";
969 case gear_pos_norm_record:
971 fout << gear_pos_norm << " ";
975 /****************** Aero Coefficients ******************/
983 fout << CDfaI << " ";
988 fout << CDfCLI << " ";
993 fout << CDfadeI << " ";
998 fout << CDfdfI << " ";
1001 case CDfadfI_record:
1003 fout << CDfadfI << " ";
1011 case CXfabetafI_record:
1013 fout << CXfabetafI << " ";
1016 case CXfadefI_record:
1018 fout << CXfadefI << " ";
1021 case CXfaqfI_record:
1023 fout << CXfaqfI << " ";
1026 case CDo_save_record:
1028 fout << CDo_save << " ";
1031 case CDK_save_record:
1033 fout << CDK_save << " ";
1036 case CLK_save_record:
1038 fout << CLK_save << " ";
1041 case CD_a_save_record:
1043 fout << CD_a_save << " ";
1046 case CD_adot_save_record:
1048 fout << CD_adot_save << " ";
1051 case CD_q_save_record:
1053 fout << CD_q_save << " ";
1056 case CD_ih_save_record:
1058 fout << CD_ih_save << " ";
1061 case CD_de_save_record:
1063 fout << CD_de_save << " ";
1066 case CD_dr_save_record:
1068 fout << CD_dr_save << " ";
1071 case CD_da_save_record:
1073 fout << CD_da_save << " ";
1076 case CD_beta_save_record:
1078 fout << CD_beta_save << " ";
1081 case CD_df_save_record:
1083 fout << CD_df_save << " ";
1086 case CD_ds_save_record:
1088 fout << CD_ds_save << " ";
1091 case CD_dg_save_record:
1093 fout << CD_dg_save << " ";
1096 case CXo_save_record:
1098 fout << CXo_save << " ";
1101 case CXK_save_record:
1103 fout << CXK_save << " ";
1106 case CX_a_save_record:
1108 fout << CX_a_save << " ";
1111 case CX_a2_save_record:
1113 fout << CX_a2_save << " ";
1116 case CX_a3_save_record:
1118 fout << CX_a3_save << " ";
1121 case CX_adot_save_record:
1123 fout << CX_adot_save << " ";
1126 case CX_q_save_record:
1128 fout << CX_q_save << " ";
1131 case CX_de_save_record:
1133 fout << CX_de_save << " ";
1136 case CX_dr_save_record:
1138 fout << CX_dr_save << " ";
1141 case CX_df_save_record:
1143 fout << CX_df_save << " ";
1146 case CX_adf_save_record:
1148 fout << CX_adf_save << " ";
1158 fout << CLfaI << " ";
1161 case CLfadeI_record:
1163 fout << CLfadeI << " ";
1168 fout << CLfdfI << " ";
1171 case CLfadfI_record:
1173 fout << CLfadfI << " ";
1183 fout << CZfaI << " ";
1186 case CZfabetafI_record:
1188 fout << CZfabetafI << " ";
1191 case CZfadefI_record:
1193 fout << CZfadefI << " ";
1196 case CZfaqfI_record:
1198 fout << CZfaqfI << " ";
1201 case CLo_save_record:
1203 fout << CLo_save << " ";
1206 case CL_a_save_record:
1208 fout << CL_a_save << " ";
1211 case CL_adot_save_record:
1213 fout << CL_adot_save << " ";
1216 case CL_q_save_record:
1218 fout << CL_q_save << " ";
1221 case CL_ih_save_record:
1223 fout << CL_ih_save << " ";
1226 case CL_de_save_record:
1228 fout << CL_de_save << " ";
1231 case CL_df_save_record:
1233 fout << CL_df_save << " ";
1236 case CL_ds_save_record:
1238 fout << CL_ds_save << " ";
1241 case CL_dg_save_record:
1243 fout << CL_dg_save << " ";
1246 case CZo_save_record:
1248 fout << CZo_save << " ";
1251 case CZ_a_save_record:
1253 fout << CZ_a_save << " ";
1256 case CZ_a2_save_record:
1258 fout << CZ_a2_save << " ";
1261 case CZ_a3_save_record:
1263 fout << CZ_a3_save << " ";
1266 case CZ_adot_save_record:
1268 fout << CZ_adot_save << " ";
1271 case CZ_q_save_record:
1273 fout << CZ_q_save << " ";
1276 case CZ_de_save_record:
1278 fout << CZ_de_save << " ";
1281 case CZ_deb2_save_record:
1283 fout << CZ_deb2_save << " ";
1286 case CZ_df_save_record:
1288 fout << CZ_df_save << " ";
1291 case CZ_adf_save_record:
1293 fout << CZ_adf_save << " ";
1303 fout << CmfaI << " ";
1306 case CmfadeI_record:
1308 fout << CmfadeI << " ";
1313 fout << CmfdfI << " ";
1316 case CmfadfI_record:
1318 fout << CmfadfI << " ";
1321 case CmfabetafI_record:
1323 fout << CmfabetafI << " ";
1326 case CmfadefI_record:
1328 fout << CmfadefI << " ";
1331 case CmfaqfI_record:
1333 fout << CmfaqfI << " ";
1336 case Cmo_save_record:
1338 fout << Cmo_save << " ";
1341 case Cm_a_save_record:
1343 fout << Cm_a_save << " ";
1346 case Cm_a2_save_record:
1348 fout << Cm_a2_save << " ";
1351 case Cm_adot_save_record:
1353 fout << Cm_adot_save << " ";
1356 case Cm_q_save_record:
1358 fout << Cm_q_save << " ";
1361 case Cm_ih_save_record:
1363 fout << Cm_ih_save << " ";
1366 case Cm_de_save_record:
1368 fout << Cm_de_save << " ";
1371 case Cm_b2_save_record:
1373 fout << Cm_b2_save << " ";
1376 case Cm_r_save_record:
1378 fout << Cm_r_save << " ";
1381 case Cm_df_save_record:
1383 fout << Cm_df_save << " ";
1386 case Cm_ds_save_record:
1388 fout << Cm_ds_save << " ";
1391 case Cm_dg_save_record:
1393 fout << Cm_dg_save << " ";
1401 case CYfadaI_record:
1403 fout << CYfadaI << " ";
1406 case CYfbetadrI_record:
1408 fout << CYfbetadrI << " ";
1411 case CYfabetafI_record:
1413 fout << CYfabetafI << " ";
1416 case CYfadafI_record:
1418 fout << CYfadafI << " ";
1421 case CYfadrfI_record:
1423 fout << CYfadrfI << " ";
1426 case CYfapfI_record:
1428 fout << CYfapfI << " ";
1431 case CYfarfI_record:
1433 fout << CYfarfI << " ";
1436 case CYo_save_record:
1438 fout << CYo_save << " ";
1441 case CY_beta_save_record:
1443 fout << CY_beta_save << " ";
1446 case CY_p_save_record:
1448 fout << CY_p_save << " ";
1451 case CY_r_save_record:
1453 fout << CY_r_save << " ";
1456 case CY_da_save_record:
1458 fout << CY_da_save << " ";
1461 case CY_dr_save_record:
1463 fout << CY_dr_save << " ";
1466 case CY_dra_save_record:
1468 fout << CY_dra_save << " ";
1471 case CY_bdot_save_record:
1473 fout << CY_bdot_save << " ";
1481 case ClfadaI_record:
1483 fout << ClfadaI << " ";
1486 case ClfbetadrI_record:
1488 fout << ClfbetadrI << " ";
1491 case ClfabetafI_record:
1493 fout << ClfabetafI << " ";
1496 case ClfadafI_record:
1498 fout << ClfadafI << " ";
1501 case ClfadrfI_record:
1503 fout << ClfadrfI << " ";
1506 case ClfapfI_record:
1508 fout << ClfapfI << " ";
1511 case ClfarfI_record:
1513 fout << ClfarfI << " ";
1516 case Clo_save_record:
1518 fout << Clo_save << " ";
1521 case Cl_beta_save_record:
1523 fout << Cl_beta_save << " ";
1526 case Cl_p_save_record:
1528 fout << Cl_p_save << " ";
1531 case Cl_r_save_record:
1533 fout << Cl_r_save << " ";
1536 case Cl_da_save_record:
1538 fout << Cl_da_save << " ";
1541 case Cl_dr_save_record:
1543 fout << Cl_dr_save << " ";
1546 case Cl_daa_save_record:
1548 fout << Cl_daa_save << " ";
1556 case CnfadaI_record:
1558 fout << CnfadaI << " ";
1561 case CnfbetadrI_record:
1563 fout << CnfbetadrI << " ";
1566 case CnfabetafI_record:
1568 fout << CnfabetafI << " ";
1571 case CnfadafI_record:
1573 fout << CnfadafI << " ";
1576 case CnfadrfI_record:
1578 fout << CnfadrfI << " ";
1581 case CnfapfI_record:
1583 fout << CnfapfI << " ";
1586 case CnfarfI_record:
1588 fout << CnfarfI << " ";
1591 case Cno_save_record:
1593 fout << Cno_save << " ";
1596 case Cn_beta_save_record:
1598 fout << Cn_beta_save << " ";
1601 case Cn_p_save_record:
1603 fout << Cn_p_save << " ";
1606 case Cn_r_save_record:
1608 fout << Cn_r_save << " ";
1611 case Cn_da_save_record:
1613 fout << Cn_da_save << " ";
1616 case Cn_dr_save_record:
1618 fout << Cn_dr_save << " ";
1621 case Cn_q_save_record:
1623 fout << Cn_q_save << " ";
1626 case Cn_b3_save_record:
1628 fout << Cn_b3_save << " ";
1632 /******************** Ice Detection ********************/
1633 case CL_clean_record:
1635 fout << CL_clean << " ";
1638 case CL_iced_record:
1640 fout << CL_iced << " ";
1643 case CD_clean_record:
1645 fout << CD_clean << " ";
1648 case CD_iced_record:
1650 fout << CD_iced << " ";
1653 case Cm_clean_record:
1655 fout << Cm_clean << " ";
1658 case Cm_iced_record:
1660 fout << Cm_iced << " ";
1663 case Ch_clean_record:
1665 fout << Ch_clean << " ";
1668 case Ch_iced_record:
1670 fout << Ch_iced << " ";
1673 case Cl_clean_record:
1675 fout << Cl_clean << " ";
1678 case Cl_iced_record:
1680 fout << Cl_iced << " ";
1683 case CLclean_wing_record:
1685 fout << CLclean_wing << " ";
1688 case CLiced_wing_record:
1690 fout << CLiced_wing << " ";
1693 case CLclean_tail_record:
1695 fout << CLclean_tail << " ";
1698 case CLiced_tail_record:
1700 fout << CLiced_tail << " ";
1703 case Lift_clean_wing_record:
1705 fout << Lift_clean_wing << " ";
1708 case Lift_iced_wing_record:
1710 fout << Lift_iced_wing << " ";
1713 case Lift_clean_tail_record:
1715 fout << Lift_clean_tail << " ";
1718 case Lift_iced_tail_record:
1720 fout << Lift_iced_tail << " ";
1723 case Gamma_clean_wing_record:
1725 fout << Gamma_clean_wing << " ";
1728 case Gamma_iced_wing_record:
1730 fout << Gamma_iced_wing << " ";
1733 case Gamma_clean_tail_record:
1735 fout << Gamma_clean_tail << " ";
1738 case Gamma_iced_tail_record:
1740 fout << Gamma_iced_tail << " ";
1743 case w_clean_wing_record:
1745 fout << w_clean_wing << " ";
1748 case w_iced_wing_record:
1750 fout << w_iced_wing << " ";
1753 case w_clean_tail_record:
1755 fout << w_clean_tail << " ";
1758 case w_iced_tail_record:
1760 fout << w_iced_tail << " ";
1763 case V_total_clean_wing_record:
1765 fout << V_total_clean_wing << " ";
1768 case V_total_iced_wing_record:
1770 fout << V_total_iced_wing << " ";
1773 case V_total_clean_tail_record:
1775 fout << V_total_clean_tail << " ";
1778 case V_total_iced_tail_record:
1780 fout << V_total_iced_tail << " ";
1783 case beta_flow_clean_wing_record:
1785 fout << beta_flow_clean_wing << " ";
1788 case beta_flow_clean_wing_deg_record:
1790 fout << beta_flow_clean_wing * RAD_TO_DEG << " ";
1793 case beta_flow_iced_wing_record:
1795 fout << beta_flow_iced_wing << " ";
1798 case beta_flow_iced_wing_deg_record:
1800 fout << beta_flow_iced_wing * RAD_TO_DEG << " ";
1803 case beta_flow_clean_tail_record:
1805 fout << beta_flow_clean_tail << " ";
1808 case beta_flow_clean_tail_deg_record:
1810 fout << beta_flow_clean_tail * RAD_TO_DEG << " ";
1813 case beta_flow_iced_tail_record:
1815 fout << beta_flow_iced_tail << " ";
1818 case beta_flow_iced_tail_deg_record:
1820 fout << beta_flow_iced_tail * RAD_TO_DEG << " ";
1823 case Dbeta_flow_wing_record:
1825 fout << Dbeta_flow_wing << " ";
1828 case Dbeta_flow_wing_deg_record:
1830 fout << Dbeta_flow_wing * RAD_TO_DEG << " ";
1833 case Dbeta_flow_tail_record:
1835 fout << Dbeta_flow_tail << " ";
1838 case Dbeta_flow_tail_deg_record:
1840 fout << Dbeta_flow_tail * RAD_TO_DEG << " ";
1843 case pct_beta_flow_wing_record:
1845 fout << pct_beta_flow_wing << " ";
1848 case pct_beta_flow_tail_record:
1850 fout << pct_beta_flow_tail << " ";
1853 case eta_ice_record:
1855 fout << eta_ice << " ";
1858 case eta_wing_left_record:
1860 fout << eta_wing_left << " ";
1863 case eta_wing_right_record:
1865 fout << eta_wing_right << " ";
1868 case eta_tail_record:
1870 fout << eta_tail << " ";
1873 case delta_CL_record:
1875 fout << delta_CL << " ";
1878 case delta_CD_record:
1880 fout << delta_CD << " ";
1883 case delta_Cm_record:
1885 fout << delta_Cm << " ";
1888 case delta_Cl_record:
1890 fout << delta_Cl << " ";
1893 case delta_Cn_record:
1895 fout << delta_Cn << " ";
1898 case boot_cycle_tail_record:
1900 fout << boot_cycle_tail << " ";
1903 case boot_cycle_wing_left_record:
1905 fout << boot_cycle_wing_left << " ";
1908 case boot_cycle_wing_right_record:
1910 fout << boot_cycle_wing_right << " ";
1913 case autoIPS_tail_record:
1915 fout << autoIPS_tail << " ";
1918 case autoIPS_wing_left_record:
1920 fout << autoIPS_wing_left << " ";
1923 case autoIPS_wing_right_record:
1925 fout << autoIPS_wing_right << " ";
1928 case eps_pitch_input_record:
1930 fout << eps_pitch_input << " ";
1933 case eps_alpha_max_record:
1935 fout << eps_alpha_max << " ";
1938 case eps_pitch_max_record:
1940 fout << eps_pitch_max << " ";
1943 case eps_pitch_min_record:
1945 fout << eps_pitch_min << " ";
1948 case eps_roll_max_record:
1950 fout << eps_roll_max << " ";
1953 case eps_thrust_min_record:
1955 fout << eps_thrust_min << " ";
1958 case eps_flap_max_record:
1960 fout << eps_flap_max << " ";
1963 case eps_airspeed_max_record:
1965 fout << eps_airspeed_max << " ";
1968 case eps_airspeed_min_record:
1970 fout << eps_airspeed_min << " ";
1974 /****************** Autopilot **************************/
1975 case ap_pah_on_record:
1977 fout << ap_pah_on << " ";
1980 case ap_alh_on_record:
1982 fout << ap_alh_on << " ";
1985 case ap_rah_on_record:
1987 fout << ap_rah_on << " ";
1990 case ap_hh_on_record:
1992 fout << ap_hh_on << " ";
1995 case ap_Theta_ref_deg_record:
1997 fout << ap_Theta_ref_rad*RAD_TO_DEG << " ";
2000 case ap_Theta_ref_rad_record:
2002 fout << ap_Theta_ref_rad << " ";
2005 case ap_alt_ref_ft_record:
2007 fout << ap_alt_ref_ft << " ";
2010 case ap_Phi_ref_deg_record:
2012 fout << ap_Phi_ref_rad*RAD_TO_DEG << " ";
2015 case ap_Phi_ref_rad_record:
2017 fout << ap_Phi_ref_rad << " ";
2020 case ap_Psi_ref_deg_record:
2022 fout << ap_Psi_ref_rad*RAD_TO_DEG << " ";
2025 case ap_Psi_ref_rad_record:
2027 fout << ap_Psi_ref_rad << " ";
2031 /************************ Forces ***********************/
2032 case F_X_wind_record:
2034 fout << F_X_wind << " ";
2037 case F_Y_wind_record:
2039 fout << F_Y_wind << " ";
2042 case F_Z_wind_record:
2044 fout << F_Z_wind << " ";
2047 case F_X_aero_record:
2049 fout << F_X_aero << " ";
2052 case F_Y_aero_record:
2054 fout << F_Y_aero << " ";
2057 case F_Z_aero_record:
2059 fout << F_Z_aero << " ";
2062 case F_X_engine_record:
2064 fout << F_X_engine << " ";
2067 case F_Y_engine_record:
2069 fout << F_Y_engine << " ";
2072 case F_Z_engine_record:
2074 fout << F_Z_engine << " ";
2077 case F_X_gear_record:
2079 fout << F_X_gear << " ";
2082 case F_Y_gear_record:
2084 fout << F_Y_gear << " ";
2087 case F_Z_gear_record:
2089 fout << F_Z_gear << " ";
2107 case F_north_record:
2109 fout << F_north << " ";
2114 fout << F_east << " ";
2119 fout << F_down << " ";
2123 /*********************** Moments ***********************/
2124 case M_l_aero_record:
2126 fout << M_l_aero << " ";
2129 case M_m_aero_record:
2131 fout << M_m_aero << " ";
2134 case M_n_aero_record:
2136 fout << M_n_aero << " ";
2139 case M_l_engine_record:
2141 fout << M_l_engine << " ";
2144 case M_m_engine_record:
2146 fout << M_m_engine << " ";
2149 case M_n_engine_record:
2151 fout << M_n_engine << " ";
2154 case M_l_gear_record:
2156 fout << M_l_gear << " ";
2159 case M_m_gear_record:
2161 fout << M_m_gear << " ";
2164 case M_n_gear_record:
2166 fout << M_n_gear << " ";
2171 fout << M_l_rp << " ";
2176 fout << M_m_rp << " ";
2181 fout << M_n_rp << " ";
2186 fout << M_l_cg << " ";
2191 fout << M_m_cg << " ";
2196 fout << M_n_cg << " ";
2200 /********************* flapper *********************/
2201 case flapper_freq_record:
2203 fout << flapper_freq << " ";
2206 case flapper_phi_record:
2208 fout << flapper_phi << " ";
2211 case flapper_phi_deg_record:
2213 fout << flapper_phi*RAD_TO_DEG << " ";
2216 case flapper_Lift_record:
2218 fout << flapper_Lift << " ";
2221 case flapper_Thrust_record:
2223 fout << flapper_Thrust << " ";
2226 case flapper_Inertia_record:
2228 fout << flapper_Inertia << " ";
2231 case flapper_Moment_record:
2233 fout << flapper_Moment << " ";
2236 /****************Other Variables*******************/
2237 case gyroMomentQ_record:
2239 fout << polarInertia * engineOmega * Q_body << " ";
2242 case gyroMomentR_record:
2244 fout << -polarInertia * engineOmega * R_body << " ";
2249 fout << eta_q << " ";
2254 fout << (engineOmega * 60 / (2 * LS_PI)) << " ";
2257 case w_induced_record:
2259 fout << w_induced << " ";
2262 case downwashAngle_deg_record:
2264 fout << downwashAngle * RAD_TO_DEG << " ";
2267 case alphaTail_deg_record:
2269 fout << alphaTail * RAD_TO_DEG << " ";
2272 case gammaWing_record:
2274 fout << gammaWing << " ";
2279 fout << V_ground_speed/V_down_rel_ground << " ";
2284 fout << -A_Z_cg/32.174 << " ";
2287 case tactilefadefI_record:
2289 fout << tactilefadefI << " ";
2292 /****************Trigger Variables*******************/
2293 case trigger_on_record:
2295 fout << trigger_on << " ";
2298 case trigger_num_record:
2300 fout << trigger_num << " ";
2303 case trigger_toggle_record:
2305 fout << trigger_toggle << " ";
2308 case trigger_counter_record:
2310 fout << trigger_counter << " ";
2313 /*********local to body transformation matrix********/
2314 case T_local_to_body_11_record:
2316 fout << T_local_to_body_11 << " ";
2319 case T_local_to_body_12_record:
2321 fout << T_local_to_body_12 << " ";
2324 case T_local_to_body_13_record:
2326 fout << T_local_to_body_13 << " ";
2329 case T_local_to_body_21_record:
2331 fout << T_local_to_body_21 << " ";
2334 case T_local_to_body_22_record:
2336 fout << T_local_to_body_22 << " ";
2339 case T_local_to_body_23_record:
2341 fout << T_local_to_body_23 << " ";
2344 case T_local_to_body_31_record:
2346 fout << T_local_to_body_31 << " ";
2349 case T_local_to_body_32_record:
2351 fout << T_local_to_body_32 << " ";
2354 case T_local_to_body_33_record:
2356 fout << T_local_to_body_33 << " ";
2360 /********* MSS debug and other data *******************/
2361 /* debug variables for use in probing data */
2362 /* comment out old lines, and add new */
2363 /* only remove code that you have written */
2367 // fout << eta_q_Cm_q_fac << " ";
2368 // fout << eta_q_Cm_adot_fac << " ";
2369 // fout << eta_q_Cmfade_fac << " ";
2370 // fout << eta_q_Cl_dr_fac << " ";
2371 // fout << eta_q_Cm_de_fac << " ";
2373 // fout << eta_q << " ";
2375 // fout << engineOmega * 60 / (2 * LS_PI)<< " ";
2376 // vertical climb rate in fpm
2377 fout << V_down * 60 << " ";
2378 // vertical climb rate in fps
2379 // fout << V_down << " ";
2380 // w_induced downwash at tail due to wing
2381 // fout << gammaWing << " ";
2382 //fout << outside_control << " ";
2387 // Lift to drag ratio
2388 // fout << V_ground_speed/V_down_rel_ground << " ";
2389 // g's through the c.g. of the aircraft
2390 fout << (-A_Z_cg/32.174) << " ";
2391 // L/D via forces (used in 201 class for L/D)
2392 // fout << (F_Z_wind/F_X_wind) << " ";
2393 // gyroscopic moment (see uiuc_wrapper.cpp)
2394 // fout << (polarInertia * engineOmega * Q_body) << " ";
2395 // downwashAngle at tail
2396 // fout << downwashAngle * 57.29 << " ";
2397 // w_induced from engine
2398 // fout << w_induced << " ";
2403 // die off function for eta_q
2404 // fout << (Cos_alpha * Cos_alpha) << " ";
2405 // gyroscopic moment (see uiuc_wrapper.cpp)
2406 // fout << (-polarInertia * engineOmega * R_body) << " ";
2408 // fout << eta_q << " ";
2409 // flapper cycle percentage
2410 fout << (sin(flapper_phi - 3 * LS_PI / 2)) << " ";
2413 /********* RD debug and other data *******************/
2414 /* debug variables for use in probing data */
2415 /* comment out old lines, and add new */
2416 /* only remove code that you have written */
2419 // flapper F_X_aero_flapper
2420 //fout << F_X_aero_flapper << " ";
2422 //fout << ap_pah_on << " ";
2423 //D_cg_north1 = Radius_to_rwy*(Latitude - lat1);
2424 //fout << D_cg_north1 << " ";
2429 // flapper F_Z_aero_flapper
2430 //fout << F_Z_aero_flapper << " ";
2432 //D_cg_east1 = Radius_to_rwy*cos(lat1)*(Longitude - long1);
2433 //fout << D_cg_east1 << " ";
2439 //fout << gear_max << " ";
2440 //fout << sqrt(D_cg_north1*D_cg_north1+D_cg_east1*D_cg_east1) << " ";
2446 fout << debug7 << " ";
2452 fout << debug8 << " ";
2458 fout << debug9 << " ";
2461 case debug10_record:
2464 fout << debug10 << " ";
2469 if (ignore_unknown_keywords) {
2472 // print error message
2473 uiuc_warnings_errors(2, *command_line);
2483 // end uiuc_recorder.cpp