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 <Main/fg_props.hxx>
99 #include "uiuc_recorder.h"
101 using std::endl; // -dw
103 void uiuc_recorder( double dt )
107 // static int init = 0;
108 static int recordStep = 0;
109 string record_variables = "# ";
111 // int modulus = recordStep % recordRate;
113 //static double lat1;
114 //static double long1;
115 //double D_cg_north1;
123 if ((recordStep % recordRate) == 0)
125 command_list = recordParts->getCommands();
129 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
130 record_variables += recordParts->getToken(*command_line,2) + " ";
132 fout << record_variables << endl;
133 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
135 linetoken = recordParts->getToken(*command_line, 2);
137 switch(record_map[linetoken])
139 /************************* Time ************************/
142 fout << Simtime << " ";
151 /************************* Mass ************************/
154 fout << Weight << " ";
183 /*********************** Geometry **********************/
184 case Dx_pilot_record:
186 fout << Dx_pilot << " ";
189 case Dy_pilot_record:
191 fout << Dy_pilot << " ";
194 case Dz_pilot_record:
196 fout << Dz_pilot << " ";
201 fout << Dx_cg << " ";
206 fout << Dy_cg << " ";
211 fout << Dz_cg << " ";
215 /********************** Positions **********************/
216 case Lat_geocentric_record:
218 fout << Lat_geocentric << " ";
221 case Lon_geocentric_record:
223 fout << Lon_geocentric << " ";
226 case Radius_to_vehicle_record:
228 fout << Radius_to_vehicle << " ";
231 case Latitude_record:
233 fout << Latitude << " ";
236 case Longitude_record:
238 fout << Longitude << " ";
241 case Altitude_record:
243 fout << Altitude << " ";
253 fout << Theta << " ";
263 fout << Phi*RAD_TO_DEG << " ";
266 case Theta_deg_record:
268 fout << Theta*RAD_TO_DEG << " ";
273 fout << Psi*RAD_TO_DEG << " ";
277 /******************** Accelerations ********************/
278 case V_dot_north_record:
280 fout << V_dot_north << " ";
283 case V_dot_east_record:
285 fout << V_dot_east << " ";
288 case V_dot_down_record:
290 fout << V_dot_down << " ";
293 case U_dot_body_record:
295 fout << U_dot_body << " ";
298 case V_dot_body_record:
300 fout << V_dot_body << " ";
303 case W_dot_body_record:
305 fout << W_dot_body << " ";
308 case A_X_pilot_record:
310 fout << A_X_pilot << " ";
313 case A_Y_pilot_record:
315 fout << A_Y_pilot << " ";
318 case A_Z_pilot_record:
320 fout << A_Z_pilot << " ";
325 fout << A_X_cg << " ";
330 fout << A_Y_cg << " ";
335 fout << A_Z_cg << " ";
338 case N_X_pilot_record:
340 fout << N_X_pilot << " ";
343 case N_Y_pilot_record:
345 fout << N_Y_pilot << " ";
348 case N_Z_pilot_record:
350 fout << N_Z_pilot << " ";
355 fout << N_X_cg << " ";
360 fout << N_Y_cg << " ";
365 fout << N_Z_cg << " ";
368 case P_dot_body_record:
370 fout << P_dot_body << " ";
373 case Q_dot_body_record:
375 fout << Q_dot_body << " ";
378 case R_dot_body_record:
380 fout << R_dot_body << " ";
384 /********************** Velocities *********************/
387 fout << V_north << " ";
392 fout << V_east << " ";
397 fout << V_down << " ";
400 case V_down_fpm_record:
402 fout << V_down * 60 << " ";
405 case V_north_rel_ground_record:
407 fout << V_north_rel_ground << " ";
410 case V_east_rel_ground_record:
412 fout << V_east_rel_ground << " ";
415 case V_down_rel_ground_record:
417 fout << V_down_rel_ground << " ";
420 case V_north_airmass_record:
422 fout << V_north_airmass << " ";
425 case V_east_airmass_record:
427 fout << V_east_airmass << " ";
430 case V_down_airmass_record:
432 fout << V_down_airmass << " ";
435 case V_north_rel_airmass_record:
437 fout << V_north_rel_airmass << " ";
440 case V_east_rel_airmass_record:
442 fout << V_east_rel_airmass << " ";
445 case V_down_rel_airmass_record:
447 fout << V_down_rel_airmass << " ";
452 fout << U_gust << " ";
457 fout << V_gust << " ";
462 fout << W_gust << " ";
467 fout << U_body << " ";
472 fout << V_body << " ";
477 fout << W_body << " ";
480 case V_rel_wind_record:
482 fout << V_rel_wind << " ";
485 case V_true_kts_record:
487 fout << V_true_kts << " ";
490 case V_rel_ground_record:
492 fout << V_rel_ground << " ";
495 case V_inertial_record:
497 fout << V_inertial << " ";
500 case V_ground_speed_record:
502 fout << V_ground_speed << " ";
507 fout << V_equiv << " ";
510 case V_equiv_kts_record:
512 fout << V_equiv_kts << " ";
515 case V_calibrated_record:
517 fout << V_calibrated << " ";
520 case V_calibrated_kts_record:
522 fout << V_calibrated_kts << " ";
527 fout << P_local << " ";
532 fout << Q_local << " ";
537 fout << R_local << " ";
542 fout << P_body << " ";
547 fout << Q_body << " ";
552 fout << R_body << " ";
557 fout << P_total << " ";
562 fout << Q_total << " ";
567 fout << R_total << " ";
572 fout << Phi_dot << " ";
575 case Theta_dot_record:
577 fout << Theta_dot << " ";
582 fout << Psi_dot << " ";
585 case Latitude_dot_record:
587 fout << Latitude_dot << " ";
590 case Longitude_dot_record:
592 fout << Longitude_dot << " ";
595 case Radius_dot_record:
597 fout << Radius_dot << " ";
601 /************************ Angles ***********************/
604 fout << Std_Alpha << " ";
607 case Alpha_deg_record:
609 fout << Std_Alpha * RAD_TO_DEG << " ";
612 case Alpha_dot_record:
614 fout << Std_Alpha_dot << " ";
617 case Alpha_dot_deg_record:
619 fout << Std_Alpha_dot * RAD_TO_DEG << " ";
624 fout << Std_Beta << " ";
627 case Beta_deg_record:
629 fout << Std_Beta * RAD_TO_DEG << " ";
632 case Beta_dot_record:
634 fout << Std_Beta_dot << " ";
637 case Beta_dot_deg_record:
639 fout << Std_Beta_dot * RAD_TO_DEG << " ";
642 case Gamma_vert_record:
644 fout << Gamma_vert_rad << " ";
647 case Gamma_vert_deg_record:
649 fout << Gamma_vert_rad * RAD_TO_DEG << " ";
652 case Gamma_horiz_record:
654 fout << Gamma_horiz_rad << " ";
657 case Gamma_horiz_deg_record:
659 fout << Gamma_horiz_rad * RAD_TO_DEG << " ";
663 /**************** Atmospheric Properties ***************/
666 fout << Density << " ";
671 fout << V_sound << " ";
674 case Mach_number_record:
676 fout << Mach_number << " ";
679 case Static_pressure_record:
681 fout << Static_pressure << " ";
684 case Total_pressure_record:
686 fout << Total_pressure << " ";
689 case Impact_pressure_record:
691 fout << Impact_pressure << " ";
694 case Dynamic_pressure_record:
696 fout << Dynamic_pressure << " ";
699 case Static_temperature_record:
701 fout << Static_temperature << " ";
704 case Total_temperature_record:
706 fout << Total_temperature << " ";
710 /******************** Earth Properties *****************/
713 fout << Gravity << " ";
716 case Sea_level_radius_record:
718 fout << Sea_level_radius << " ";
721 case Earth_position_angle_record:
723 fout << Earth_position_angle << " ";
726 case Runway_altitude_record:
728 fout << Runway_altitude << " ";
731 case Runway_latitude_record:
733 fout << Runway_latitude << " ";
736 case Runway_longitude_record:
738 fout << Runway_longitude << " ";
741 case Runway_heading_record:
743 fout << Runway_heading << " ";
746 case Radius_to_rwy_record:
748 fout << Radius_to_rwy << " ";
751 case D_pilot_north_of_rwy_record:
753 fout << D_pilot_north_of_rwy << " ";
756 case D_pilot_east_of_rwy_record:
758 fout << D_pilot_east_of_rwy << " ";
761 case D_pilot_above_rwy_record:
763 fout << D_pilot_above_rwy << " ";
766 case X_pilot_rwy_record:
768 fout << X_pilot_rwy << " ";
771 case Y_pilot_rwy_record:
773 fout << Y_pilot_rwy << " ";
776 case H_pilot_rwy_record:
778 fout << H_pilot_rwy << " ";
781 case D_cg_north_of_rwy_record:
783 fout << D_cg_north_of_rwy << " ";
786 case D_cg_east_of_rwy_record:
788 fout << D_cg_east_of_rwy << " ";
791 case D_cg_above_rwy_record:
793 fout << D_cg_above_rwy << " ";
796 case X_cg_rwy_record:
798 fout << X_cg_rwy << " ";
801 case Y_cg_rwy_record:
803 fout << Y_cg_rwy << " ";
806 case H_cg_rwy_record:
808 fout << H_cg_rwy << " ";
812 /********************* Engine Inputs *******************/
813 case Throttle_3_record:
815 fout << Throttle[3] << " ";
818 case Throttle_pct_record:
820 fout << Throttle_pct << " ";
824 /************************ Controls ***********************/
825 case Long_control_record:
827 fout << Long_control << " ";
830 case Long_trim_record:
832 fout << Long_trim << " ";
835 case Long_trim_deg_record:
837 fout << Long_trim * RAD_TO_DEG << " ";
840 case elevator_record:
842 fout << elevator << " ";
845 case elevator_deg_record:
847 fout << elevator * RAD_TO_DEG << " ";
850 case elevator_sas_deg_record:
852 fout << elevator_sas * RAD_TO_DEG << " ";
855 case Lat_control_record:
857 fout << Lat_control << " ";
862 fout << aileron << " ";
865 case aileron_deg_record:
867 fout << aileron * RAD_TO_DEG << " ";
870 case aileron_sas_deg_record:
872 fout << aileron_sas * RAD_TO_DEG << " ";
875 case Rudder_pedal_record:
877 fout << Rudder_pedal << " ";
882 fout << rudder << " ";
885 case rudder_deg_record:
887 fout << rudder * RAD_TO_DEG << " ";
890 case rudder_sas_deg_record:
892 fout << rudder_sas * RAD_TO_DEG << " ";
895 case Flap_handle_record:
897 fout << Flap_handle << " ";
900 case flap_cmd_record:
902 fout << flap_cmd << " ";
905 case flap_cmd_deg_record:
907 fout << flap_cmd * RAD_TO_DEG << " ";
910 case flap_pos_record:
912 fout << flap_pos << " ";
915 case flap_pos_deg_record:
917 fout << flap_pos * RAD_TO_DEG << " ";
920 case flap_pos_norm_record:
922 fout << flap_pos_norm << " ";
925 case Spoiler_handle_record:
927 fout << Spoiler_handle << " ";
930 case spoiler_cmd_record:
932 fout << spoiler_cmd << " ";
935 case spoiler_cmd_deg_record:
937 fout << spoiler_cmd * RAD_TO_DEG << " ";
940 case spoiler_pos_record:
942 fout << spoiler_pos << " ";
945 case spoiler_pos_deg_record:
947 fout << spoiler_pos * RAD_TO_DEG << " ";
950 case spoiler_pos_norm_record:
952 fout << spoiler_pos_norm << " ";
956 /****************** Gear Inputs ************************/
957 case Gear_handle_record:
959 fout << Gear_handle << " ";
962 case gear_cmd_norm_record:
964 fout << gear_cmd_norm << " ";
967 case gear_pos_norm_record:
969 fout << gear_pos_norm << " ";
973 /****************** Aero Coefficients ******************/
981 fout << CDfaI << " ";
986 fout << CDfCLI << " ";
991 fout << CDfadeI << " ";
996 fout << CDfdfI << " ";
1001 fout << CDfadfI << " ";
1009 case CXfabetafI_record:
1011 fout << CXfabetafI << " ";
1014 case CXfadefI_record:
1016 fout << CXfadefI << " ";
1019 case CXfaqfI_record:
1021 fout << CXfaqfI << " ";
1024 case CDo_save_record:
1026 fout << CDo_save << " ";
1029 case CDK_save_record:
1031 fout << CDK_save << " ";
1034 case CLK_save_record:
1036 fout << CLK_save << " ";
1039 case CD_a_save_record:
1041 fout << CD_a_save << " ";
1044 case CD_adot_save_record:
1046 fout << CD_adot_save << " ";
1049 case CD_q_save_record:
1051 fout << CD_q_save << " ";
1054 case CD_ih_save_record:
1056 fout << CD_ih_save << " ";
1059 case CD_de_save_record:
1061 fout << CD_de_save << " ";
1064 case CD_dr_save_record:
1066 fout << CD_dr_save << " ";
1069 case CD_da_save_record:
1071 fout << CD_da_save << " ";
1074 case CD_beta_save_record:
1076 fout << CD_beta_save << " ";
1079 case CD_df_save_record:
1081 fout << CD_df_save << " ";
1084 case CD_ds_save_record:
1086 fout << CD_ds_save << " ";
1089 case CD_dg_save_record:
1091 fout << CD_dg_save << " ";
1094 case CXo_save_record:
1096 fout << CXo_save << " ";
1099 case CXK_save_record:
1101 fout << CXK_save << " ";
1104 case CX_a_save_record:
1106 fout << CX_a_save << " ";
1109 case CX_a2_save_record:
1111 fout << CX_a2_save << " ";
1114 case CX_a3_save_record:
1116 fout << CX_a3_save << " ";
1119 case CX_adot_save_record:
1121 fout << CX_adot_save << " ";
1124 case CX_q_save_record:
1126 fout << CX_q_save << " ";
1129 case CX_de_save_record:
1131 fout << CX_de_save << " ";
1134 case CX_dr_save_record:
1136 fout << CX_dr_save << " ";
1139 case CX_df_save_record:
1141 fout << CX_df_save << " ";
1144 case CX_adf_save_record:
1146 fout << CX_adf_save << " ";
1156 fout << CLfaI << " ";
1159 case CLfadeI_record:
1161 fout << CLfadeI << " ";
1166 fout << CLfdfI << " ";
1169 case CLfadfI_record:
1171 fout << CLfadfI << " ";
1181 fout << CZfaI << " ";
1184 case CZfabetafI_record:
1186 fout << CZfabetafI << " ";
1189 case CZfadefI_record:
1191 fout << CZfadefI << " ";
1194 case CZfaqfI_record:
1196 fout << CZfaqfI << " ";
1199 case CLo_save_record:
1201 fout << CLo_save << " ";
1204 case CL_a_save_record:
1206 fout << CL_a_save << " ";
1209 case CL_adot_save_record:
1211 fout << CL_adot_save << " ";
1214 case CL_q_save_record:
1216 fout << CL_q_save << " ";
1219 case CL_ih_save_record:
1221 fout << CL_ih_save << " ";
1224 case CL_de_save_record:
1226 fout << CL_de_save << " ";
1229 case CL_df_save_record:
1231 fout << CL_df_save << " ";
1234 case CL_ds_save_record:
1236 fout << CL_ds_save << " ";
1239 case CL_dg_save_record:
1241 fout << CL_dg_save << " ";
1244 case CZo_save_record:
1246 fout << CZo_save << " ";
1249 case CZ_a_save_record:
1251 fout << CZ_a_save << " ";
1254 case CZ_a2_save_record:
1256 fout << CZ_a2_save << " ";
1259 case CZ_a3_save_record:
1261 fout << CZ_a3_save << " ";
1264 case CZ_adot_save_record:
1266 fout << CZ_adot_save << " ";
1269 case CZ_q_save_record:
1271 fout << CZ_q_save << " ";
1274 case CZ_de_save_record:
1276 fout << CZ_de_save << " ";
1279 case CZ_deb2_save_record:
1281 fout << CZ_deb2_save << " ";
1284 case CZ_df_save_record:
1286 fout << CZ_df_save << " ";
1289 case CZ_adf_save_record:
1291 fout << CZ_adf_save << " ";
1301 fout << CmfaI << " ";
1304 case CmfadeI_record:
1306 fout << CmfadeI << " ";
1311 fout << CmfdfI << " ";
1314 case CmfadfI_record:
1316 fout << CmfadfI << " ";
1319 case CmfabetafI_record:
1321 fout << CmfabetafI << " ";
1324 case CmfadefI_record:
1326 fout << CmfadefI << " ";
1329 case CmfaqfI_record:
1331 fout << CmfaqfI << " ";
1334 case Cmo_save_record:
1336 fout << Cmo_save << " ";
1339 case Cm_a_save_record:
1341 fout << Cm_a_save << " ";
1344 case Cm_a2_save_record:
1346 fout << Cm_a2_save << " ";
1349 case Cm_adot_save_record:
1351 fout << Cm_adot_save << " ";
1354 case Cm_q_save_record:
1356 fout << Cm_q_save << " ";
1359 case Cm_ih_save_record:
1361 fout << Cm_ih_save << " ";
1364 case Cm_de_save_record:
1366 fout << Cm_de_save << " ";
1369 case Cm_b2_save_record:
1371 fout << Cm_b2_save << " ";
1374 case Cm_r_save_record:
1376 fout << Cm_r_save << " ";
1379 case Cm_df_save_record:
1381 fout << Cm_df_save << " ";
1384 case Cm_ds_save_record:
1386 fout << Cm_ds_save << " ";
1389 case Cm_dg_save_record:
1391 fout << Cm_dg_save << " ";
1399 case CYfadaI_record:
1401 fout << CYfadaI << " ";
1404 case CYfbetadrI_record:
1406 fout << CYfbetadrI << " ";
1409 case CYfabetafI_record:
1411 fout << CYfabetafI << " ";
1414 case CYfadafI_record:
1416 fout << CYfadafI << " ";
1419 case CYfadrfI_record:
1421 fout << CYfadrfI << " ";
1424 case CYfapfI_record:
1426 fout << CYfapfI << " ";
1429 case CYfarfI_record:
1431 fout << CYfarfI << " ";
1434 case CYo_save_record:
1436 fout << CYo_save << " ";
1439 case CY_beta_save_record:
1441 fout << CY_beta_save << " ";
1444 case CY_p_save_record:
1446 fout << CY_p_save << " ";
1449 case CY_r_save_record:
1451 fout << CY_r_save << " ";
1454 case CY_da_save_record:
1456 fout << CY_da_save << " ";
1459 case CY_dr_save_record:
1461 fout << CY_dr_save << " ";
1464 case CY_dra_save_record:
1466 fout << CY_dra_save << " ";
1469 case CY_bdot_save_record:
1471 fout << CY_bdot_save << " ";
1479 case ClfadaI_record:
1481 fout << ClfadaI << " ";
1484 case ClfbetadrI_record:
1486 fout << ClfbetadrI << " ";
1489 case ClfabetafI_record:
1491 fout << ClfabetafI << " ";
1494 case ClfadafI_record:
1496 fout << ClfadafI << " ";
1499 case ClfadrfI_record:
1501 fout << ClfadrfI << " ";
1504 case ClfapfI_record:
1506 fout << ClfapfI << " ";
1509 case ClfarfI_record:
1511 fout << ClfarfI << " ";
1514 case Clo_save_record:
1516 fout << Clo_save << " ";
1519 case Cl_beta_save_record:
1521 fout << Cl_beta_save << " ";
1524 case Cl_p_save_record:
1526 fout << Cl_p_save << " ";
1529 case Cl_r_save_record:
1531 fout << Cl_r_save << " ";
1534 case Cl_da_save_record:
1536 fout << Cl_da_save << " ";
1539 case Cl_dr_save_record:
1541 fout << Cl_dr_save << " ";
1544 case Cl_daa_save_record:
1546 fout << Cl_daa_save << " ";
1554 case CnfadaI_record:
1556 fout << CnfadaI << " ";
1559 case CnfbetadrI_record:
1561 fout << CnfbetadrI << " ";
1564 case CnfabetafI_record:
1566 fout << CnfabetafI << " ";
1569 case CnfadafI_record:
1571 fout << CnfadafI << " ";
1574 case CnfadrfI_record:
1576 fout << CnfadrfI << " ";
1579 case CnfapfI_record:
1581 fout << CnfapfI << " ";
1584 case CnfarfI_record:
1586 fout << CnfarfI << " ";
1589 case Cno_save_record:
1591 fout << Cno_save << " ";
1594 case Cn_beta_save_record:
1596 fout << Cn_beta_save << " ";
1599 case Cn_p_save_record:
1601 fout << Cn_p_save << " ";
1604 case Cn_r_save_record:
1606 fout << Cn_r_save << " ";
1609 case Cn_da_save_record:
1611 fout << Cn_da_save << " ";
1614 case Cn_dr_save_record:
1616 fout << Cn_dr_save << " ";
1619 case Cn_q_save_record:
1621 fout << Cn_q_save << " ";
1624 case Cn_b3_save_record:
1626 fout << Cn_b3_save << " ";
1630 /******************** Ice Detection ********************/
1631 case CL_clean_record:
1633 fout << CL_clean << " ";
1636 case CL_iced_record:
1638 fout << CL_iced << " ";
1641 case CD_clean_record:
1643 fout << CD_clean << " ";
1646 case CD_iced_record:
1648 fout << CD_iced << " ";
1651 case Cm_clean_record:
1653 fout << Cm_clean << " ";
1656 case Cm_iced_record:
1658 fout << Cm_iced << " ";
1661 case Ch_clean_record:
1663 fout << Ch_clean << " ";
1666 case Ch_iced_record:
1668 fout << Ch_iced << " ";
1671 case Cl_clean_record:
1673 fout << Cl_clean << " ";
1676 case Cl_iced_record:
1678 fout << Cl_iced << " ";
1681 case CLclean_wing_record:
1683 fout << CLclean_wing << " ";
1686 case CLiced_wing_record:
1688 fout << CLiced_wing << " ";
1691 case CLclean_tail_record:
1693 fout << CLclean_tail << " ";
1696 case CLiced_tail_record:
1698 fout << CLiced_tail << " ";
1701 case Lift_clean_wing_record:
1703 fout << Lift_clean_wing << " ";
1706 case Lift_iced_wing_record:
1708 fout << Lift_iced_wing << " ";
1711 case Lift_clean_tail_record:
1713 fout << Lift_clean_tail << " ";
1716 case Lift_iced_tail_record:
1718 fout << Lift_iced_tail << " ";
1721 case Gamma_clean_wing_record:
1723 fout << Gamma_clean_wing << " ";
1726 case Gamma_iced_wing_record:
1728 fout << Gamma_iced_wing << " ";
1731 case Gamma_clean_tail_record:
1733 fout << Gamma_clean_tail << " ";
1736 case Gamma_iced_tail_record:
1738 fout << Gamma_iced_tail << " ";
1741 case w_clean_wing_record:
1743 fout << w_clean_wing << " ";
1746 case w_iced_wing_record:
1748 fout << w_iced_wing << " ";
1751 case w_clean_tail_record:
1753 fout << w_clean_tail << " ";
1756 case w_iced_tail_record:
1758 fout << w_iced_tail << " ";
1761 case V_total_clean_wing_record:
1763 fout << V_total_clean_wing << " ";
1766 case V_total_iced_wing_record:
1768 fout << V_total_iced_wing << " ";
1771 case V_total_clean_tail_record:
1773 fout << V_total_clean_tail << " ";
1776 case V_total_iced_tail_record:
1778 fout << V_total_iced_tail << " ";
1781 case beta_flow_clean_wing_record:
1783 fout << beta_flow_clean_wing << " ";
1786 case beta_flow_clean_wing_deg_record:
1788 fout << beta_flow_clean_wing * RAD_TO_DEG << " ";
1791 case beta_flow_iced_wing_record:
1793 fout << beta_flow_iced_wing << " ";
1796 case beta_flow_iced_wing_deg_record:
1798 fout << beta_flow_iced_wing * RAD_TO_DEG << " ";
1801 case beta_flow_clean_tail_record:
1803 fout << beta_flow_clean_tail << " ";
1806 case beta_flow_clean_tail_deg_record:
1808 fout << beta_flow_clean_tail * RAD_TO_DEG << " ";
1811 case beta_flow_iced_tail_record:
1813 fout << beta_flow_iced_tail << " ";
1816 case beta_flow_iced_tail_deg_record:
1818 fout << beta_flow_iced_tail * RAD_TO_DEG << " ";
1821 case Dbeta_flow_wing_record:
1823 fout << Dbeta_flow_wing << " ";
1826 case Dbeta_flow_wing_deg_record:
1828 fout << Dbeta_flow_wing * RAD_TO_DEG << " ";
1831 case Dbeta_flow_tail_record:
1833 fout << Dbeta_flow_tail << " ";
1836 case Dbeta_flow_tail_deg_record:
1838 fout << Dbeta_flow_tail * RAD_TO_DEG << " ";
1841 case pct_beta_flow_wing_record:
1843 fout << pct_beta_flow_wing << " ";
1846 case pct_beta_flow_tail_record:
1848 fout << pct_beta_flow_tail << " ";
1851 case eta_ice_record:
1853 fout << eta_ice << " ";
1856 case eta_wing_left_record:
1858 fout << eta_wing_left << " ";
1861 case eta_wing_right_record:
1863 fout << eta_wing_right << " ";
1866 case eta_tail_record:
1868 fout << eta_tail << " ";
1871 case delta_CL_record:
1873 fout << delta_CL << " ";
1876 case delta_CD_record:
1878 fout << delta_CD << " ";
1881 case delta_Cm_record:
1883 fout << delta_Cm << " ";
1886 case delta_Cl_record:
1888 fout << delta_Cl << " ";
1891 case delta_Cn_record:
1893 fout << delta_Cn << " ";
1896 case boot_cycle_tail_record:
1898 fout << boot_cycle_tail << " ";
1901 case boot_cycle_wing_left_record:
1903 fout << boot_cycle_wing_left << " ";
1906 case boot_cycle_wing_right_record:
1908 fout << boot_cycle_wing_right << " ";
1911 case autoIPS_tail_record:
1913 fout << autoIPS_tail << " ";
1916 case autoIPS_wing_left_record:
1918 fout << autoIPS_wing_left << " ";
1921 case autoIPS_wing_right_record:
1923 fout << autoIPS_wing_right << " ";
1926 case eps_pitch_input_record:
1928 fout << eps_pitch_input << " ";
1931 case eps_alpha_max_record:
1933 fout << eps_alpha_max << " ";
1936 case eps_pitch_max_record:
1938 fout << eps_pitch_max << " ";
1941 case eps_pitch_min_record:
1943 fout << eps_pitch_min << " ";
1946 case eps_roll_max_record:
1948 fout << eps_roll_max << " ";
1951 case eps_thrust_min_record:
1953 fout << eps_thrust_min << " ";
1956 case eps_flap_max_record:
1958 fout << eps_flap_max << " ";
1961 case eps_airspeed_max_record:
1963 fout << eps_airspeed_max << " ";
1966 case eps_airspeed_min_record:
1968 fout << eps_airspeed_min << " ";
1972 /****************** Autopilot **************************/
1973 case ap_pah_on_record:
1975 fout << ap_pah_on << " ";
1978 case ap_alh_on_record:
1980 fout << ap_alh_on << " ";
1983 case ap_rah_on_record:
1985 fout << ap_rah_on << " ";
1988 case ap_hh_on_record:
1990 fout << ap_hh_on << " ";
1993 case ap_Theta_ref_deg_record:
1995 fout << ap_Theta_ref_rad*RAD_TO_DEG << " ";
1998 case ap_Theta_ref_rad_record:
2000 fout << ap_Theta_ref_rad << " ";
2003 case ap_alt_ref_ft_record:
2005 fout << ap_alt_ref_ft << " ";
2008 case ap_Phi_ref_deg_record:
2010 fout << ap_Phi_ref_rad*RAD_TO_DEG << " ";
2013 case ap_Phi_ref_rad_record:
2015 fout << ap_Phi_ref_rad << " ";
2018 case ap_Psi_ref_deg_record:
2020 fout << ap_Psi_ref_rad*RAD_TO_DEG << " ";
2023 case ap_Psi_ref_rad_record:
2025 fout << ap_Psi_ref_rad << " ";
2029 /************************ Forces ***********************/
2030 case F_X_wind_record:
2032 fout << F_X_wind << " ";
2035 case F_Y_wind_record:
2037 fout << F_Y_wind << " ";
2040 case F_Z_wind_record:
2042 fout << F_Z_wind << " ";
2045 case F_X_aero_record:
2047 fout << F_X_aero << " ";
2050 case F_Y_aero_record:
2052 fout << F_Y_aero << " ";
2055 case F_Z_aero_record:
2057 fout << F_Z_aero << " ";
2060 case F_X_engine_record:
2062 fout << F_X_engine << " ";
2065 case F_Y_engine_record:
2067 fout << F_Y_engine << " ";
2070 case F_Z_engine_record:
2072 fout << F_Z_engine << " ";
2075 case F_X_gear_record:
2077 fout << F_X_gear << " ";
2080 case F_Y_gear_record:
2082 fout << F_Y_gear << " ";
2085 case F_Z_gear_record:
2087 fout << F_Z_gear << " ";
2105 case F_north_record:
2107 fout << F_north << " ";
2112 fout << F_east << " ";
2117 fout << F_down << " ";
2121 /*********************** Moments ***********************/
2122 case M_l_aero_record:
2124 fout << M_l_aero << " ";
2127 case M_m_aero_record:
2129 fout << M_m_aero << " ";
2132 case M_n_aero_record:
2134 fout << M_n_aero << " ";
2137 case M_l_engine_record:
2139 fout << M_l_engine << " ";
2142 case M_m_engine_record:
2144 fout << M_m_engine << " ";
2147 case M_n_engine_record:
2149 fout << M_n_engine << " ";
2152 case M_l_gear_record:
2154 fout << M_l_gear << " ";
2157 case M_m_gear_record:
2159 fout << M_m_gear << " ";
2162 case M_n_gear_record:
2164 fout << M_n_gear << " ";
2169 fout << M_l_rp << " ";
2174 fout << M_m_rp << " ";
2179 fout << M_n_rp << " ";
2184 fout << M_l_cg << " ";
2189 fout << M_m_cg << " ";
2194 fout << M_n_cg << " ";
2198 /********************* flapper *********************/
2199 case flapper_freq_record:
2201 fout << flapper_freq << " ";
2204 case flapper_phi_record:
2206 fout << flapper_phi << " ";
2209 case flapper_phi_deg_record:
2211 fout << flapper_phi*RAD_TO_DEG << " ";
2214 case flapper_Lift_record:
2216 fout << flapper_Lift << " ";
2219 case flapper_Thrust_record:
2221 fout << flapper_Thrust << " ";
2224 case flapper_Inertia_record:
2226 fout << flapper_Inertia << " ";
2229 case flapper_Moment_record:
2231 fout << flapper_Moment << " ";
2234 /****************Other Variables*******************/
2235 case gyroMomentQ_record:
2237 fout << polarInertia * engineOmega * Q_body << " ";
2240 case gyroMomentR_record:
2242 fout << -polarInertia * engineOmega * R_body << " ";
2247 fout << eta_q << " ";
2252 fout << (engineOmega * 60 / (2 * LS_PI)) << " ";
2255 case w_induced_record:
2257 fout << w_induced << " ";
2260 case downwashAngle_deg_record:
2262 fout << downwashAngle * RAD_TO_DEG << " ";
2265 case alphaTail_deg_record:
2267 fout << alphaTail * RAD_TO_DEG << " ";
2270 case gammaWing_record:
2272 fout << gammaWing << " ";
2277 fout << V_ground_speed/V_down_rel_ground << " ";
2282 fout << -A_Z_cg/32.174 << " ";
2285 case tactilefadefI_record:
2287 fout << tactilefadefI << " ";
2290 /****************Trigger Variables*******************/
2291 case trigger_on_record:
2293 fout << trigger_on << " ";
2296 case trigger_num_record:
2298 fout << trigger_num << " ";
2301 case trigger_toggle_record:
2303 fout << trigger_toggle << " ";
2306 case trigger_counter_record:
2308 fout << trigger_counter << " ";
2311 /*********local to body transformation matrix********/
2312 case T_local_to_body_11_record:
2314 fout << T_local_to_body_11 << " ";
2317 case T_local_to_body_12_record:
2319 fout << T_local_to_body_12 << " ";
2322 case T_local_to_body_13_record:
2324 fout << T_local_to_body_13 << " ";
2327 case T_local_to_body_21_record:
2329 fout << T_local_to_body_21 << " ";
2332 case T_local_to_body_22_record:
2334 fout << T_local_to_body_22 << " ";
2337 case T_local_to_body_23_record:
2339 fout << T_local_to_body_23 << " ";
2342 case T_local_to_body_31_record:
2344 fout << T_local_to_body_31 << " ";
2347 case T_local_to_body_32_record:
2349 fout << T_local_to_body_32 << " ";
2352 case T_local_to_body_33_record:
2354 fout << T_local_to_body_33 << " ";
2358 /********* MSS debug and other data *******************/
2359 /* debug variables for use in probing data */
2360 /* comment out old lines, and add new */
2361 /* only remove code that you have written */
2365 // fout << eta_q_Cm_q_fac << " ";
2366 // fout << eta_q_Cm_adot_fac << " ";
2367 // fout << eta_q_Cmfade_fac << " ";
2368 // fout << eta_q_Cl_dr_fac << " ";
2369 // fout << eta_q_Cm_de_fac << " ";
2371 // fout << eta_q << " ";
2373 // fout << engineOmega * 60 / (2 * LS_PI)<< " ";
2374 // vertical climb rate in fpm
2375 fout << V_down * 60 << " ";
2376 // vertical climb rate in fps
2377 // fout << V_down << " ";
2378 // w_induced downwash at tail due to wing
2379 // fout << gammaWing << " ";
2380 //fout << outside_control << " ";
2385 // Lift to drag ratio
2386 // fout << V_ground_speed/V_down_rel_ground << " ";
2387 // g's through the c.g. of the aircraft
2388 fout << (-A_Z_cg/32.174) << " ";
2389 // L/D via forces (used in 201 class for L/D)
2390 // fout << (F_Z_wind/F_X_wind) << " ";
2391 // gyroscopic moment (see uiuc_wrapper.cpp)
2392 // fout << (polarInertia * engineOmega * Q_body) << " ";
2393 // downwashAngle at tail
2394 // fout << downwashAngle * 57.29 << " ";
2395 // w_induced from engine
2396 // fout << w_induced << " ";
2401 // die off function for eta_q
2402 // fout << (Cos_alpha * Cos_alpha) << " ";
2403 // gyroscopic moment (see uiuc_wrapper.cpp)
2404 // fout << (-polarInertia * engineOmega * R_body) << " ";
2406 // fout << eta_q << " ";
2407 // flapper cycle percentage
2408 fout << (sin(flapper_phi - 3 * LS_PI / 2)) << " ";
2411 /********* RD debug and other data *******************/
2412 /* debug variables for use in probing data */
2413 /* comment out old lines, and add new */
2414 /* only remove code that you have written */
2417 // flapper F_X_aero_flapper
2418 //fout << F_X_aero_flapper << " ";
2420 //fout << ap_pah_on << " ";
2421 //D_cg_north1 = Radius_to_rwy*(Latitude - lat1);
2422 //fout << D_cg_north1 << " ";
2427 // flapper F_Z_aero_flapper
2428 //fout << F_Z_aero_flapper << " ";
2430 //D_cg_east1 = Radius_to_rwy*cos(lat1)*(Longitude - long1);
2431 //fout << D_cg_east1 << " ";
2437 //fout << gear_max << " ";
2438 //fout << sqrt(D_cg_north1*D_cg_north1+D_cg_east1*D_cg_east1) << " ";
2444 fout << debug7 << " ";
2450 fout << debug8 << " ";
2456 fout << debug9 << " ";
2459 case debug10_record:
2462 fout << debug10 << " ";
2467 if (ignore_unknown_keywords) {
2470 // print error message
2471 uiuc_warnings_errors(2, *command_line);
2481 // end uiuc_recorder.cpp