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
29 ----------------------------------------------------------------------
31 AUTHOR(S): Jeff Scott <jscott@mail.com>
33 ----------------------------------------------------------------------
37 ----------------------------------------------------------------------
41 ----------------------------------------------------------------------
43 OUTPUTS: -variables recorded in uiuc_recorder.dat
45 ----------------------------------------------------------------------
47 CALLED BY: uiuc_wrapper.cpp
49 ----------------------------------------------------------------------
53 ----------------------------------------------------------------------
55 COPYRIGHT: (C) 2000 by Michael Selig
57 This program is free software; you can redistribute it and/or
58 modify it under the terms of the GNU General Public License
59 as published by the Free Software Foundation.
61 This program is distributed in the hope that it will be useful,
62 but WITHOUT ANY WARRANTY; without even the implied warranty of
63 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
64 GNU General Public License for more details.
66 You should have received a copy of the GNU General Public License
67 along with this program; if not, write to the Free Software
68 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
69 USA or view http://www.gnu.org/copyleft/gpl.html.
71 **********************************************************************/
73 #include "uiuc_recorder.h"
75 void uiuc_recorder( double dt )
80 static int recordStep = 0;
81 string record_variables = "# ";
83 int modulus = recordStep % recordRate;
85 if ((recordStep % recordRate) == 0)
87 command_list = recordParts->getCommands();
91 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
92 record_variables += recordParts->getToken(*command_line,2) + " ";
94 fout << record_variables << endl;
95 for (command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
97 linetoken = recordParts->getToken(*command_line, 2);
99 switch(record_map[linetoken])
101 /************************* Time ************************/
104 fout << Simtime << " ";
113 /************************* Mass ************************/
116 fout << Weight << " ";
145 /*********************** Geometry **********************/
146 case Dx_pilot_record:
148 fout << Dx_pilot << " ";
151 case Dy_pilot_record:
153 fout << Dy_pilot << " ";
156 case Dz_pilot_record:
158 fout << Dz_pilot << " ";
163 fout << Dx_cg << " ";
168 fout << Dy_cg << " ";
173 fout << Dz_cg << " ";
177 /********************** Positions **********************/
178 case Lat_geocentric_record:
180 fout << Lat_geocentric << " ";
183 case Lon_geocentric_record:
185 fout << Lon_geocentric << " ";
188 case Radius_to_vehicle_record:
190 fout << Radius_to_vehicle << " ";
193 case Latitude_record:
195 fout << Latitude << " ";
198 case Longitude_record:
200 fout << Longitude << " ";
203 case Altitude_record:
205 fout << Altitude << " ";
215 fout << Theta << " ";
224 /******************** Accelerations ********************/
225 case V_dot_north_record:
227 fout << V_dot_north << " ";
230 case V_dot_east_record:
232 fout << V_dot_east << " ";
235 case V_dot_down_record:
237 fout << V_dot_down << " ";
240 case U_dot_body_record:
242 fout << U_dot_body << " ";
245 case V_dot_body_record:
247 fout << V_dot_body << " ";
250 case W_dot_body_record:
252 fout << W_dot_body << " ";
255 case A_X_pilot_record:
257 fout << A_X_pilot << " ";
260 case A_Y_pilot_record:
262 fout << A_Y_pilot << " ";
265 case A_Z_pilot_record:
267 fout << A_Z_pilot << " ";
272 fout << A_X_cg << " ";
277 fout << A_Y_cg << " ";
282 fout << A_Z_cg << " ";
285 case N_X_pilot_record:
287 fout << N_X_pilot << " ";
290 case N_Y_pilot_record:
292 fout << N_Y_pilot << " ";
295 case N_Z_pilot_record:
297 fout << N_Z_pilot << " ";
302 fout << N_X_cg << " ";
307 fout << N_Y_cg << " ";
312 fout << N_Z_cg << " ";
315 case P_dot_body_record:
317 fout << P_dot_body << " ";
320 case Q_dot_body_record:
322 fout << Q_dot_body << " ";
325 case R_dot_body_record:
327 fout << R_dot_body << " ";
331 /********************** Velocities *********************/
334 fout << V_north << " ";
339 fout << V_east << " ";
344 fout << V_down << " ";
347 case V_north_rel_ground_record:
349 fout << V_north_rel_ground << " ";
352 case V_east_rel_ground_record:
354 fout << V_east_rel_ground << " ";
357 case V_down_rel_ground_record:
359 fout << V_down_rel_ground << " ";
362 case V_north_airmass_record:
364 fout << V_north_airmass << " ";
367 case V_east_airmass_record:
369 fout << V_east_airmass << " ";
372 case V_down_airmass_record:
374 fout << V_down_airmass << " ";
377 case V_north_rel_airmass_record:
379 fout << V_north_rel_airmass << " ";
382 case V_east_rel_airmass_record:
384 fout << V_east_rel_airmass << " ";
387 case V_down_rel_airmass_record:
389 fout << V_down_rel_airmass << " ";
394 fout << U_gust << " ";
399 fout << V_gust << " ";
404 fout << W_gust << " ";
409 fout << U_body << " ";
414 fout << V_body << " ";
419 fout << W_body << " ";
422 case V_rel_wind_record:
424 fout << V_rel_wind << " ";
427 case V_true_kts_record:
429 fout << V_true_kts << " ";
432 case V_rel_ground_record:
434 fout << V_rel_ground << " ";
437 case V_inertial_record:
439 fout << V_inertial << " ";
442 case V_ground_speed_record:
444 fout << V_ground_speed << " ";
449 fout << V_equiv << " ";
452 case V_equiv_kts_record:
454 fout << V_equiv_kts << " ";
457 case V_calibrated_record:
459 fout << V_calibrated << " ";
462 case V_calibrated_kts_record:
464 fout << V_calibrated_kts << " ";
469 fout << P_local << " ";
474 fout << Q_local << " ";
479 fout << R_local << " ";
484 fout << P_body << " ";
489 fout << Q_body << " ";
494 fout << R_body << " ";
499 fout << P_total << " ";
504 fout << Q_total << " ";
509 fout << R_total << " ";
514 fout << Phi_dot << " ";
517 case Theta_dot_record:
519 fout << Theta_dot << " ";
524 fout << Psi_dot << " ";
527 case Latitude_dot_record:
529 fout << Latitude_dot << " ";
532 case Longitude_dot_record:
534 fout << Longitude_dot << " ";
537 case Radius_dot_record:
539 fout << Radius_dot << " ";
543 /************************ Angles ***********************/
546 fout << Alpha << " ";
549 case Alpha_deg_record:
551 fout << Alpha * RAD_TO_DEG << " ";
554 case Alpha_dot_record:
556 fout << Alpha_dot << " ";
559 case Alpha_dot_deg_record:
561 fout << Alpha_dot * RAD_TO_DEG << " ";
569 case Beta_deg_record:
571 fout << Beta * RAD_TO_DEG << " ";
574 case Beta_dot_record:
576 fout << Beta_dot << " ";
579 case Beta_dot_deg_record:
581 fout << Beta_dot * RAD_TO_DEG << " ";
584 case Gamma_vert_record:
586 fout << Gamma_vert_rad << " ";
589 case Gamma_vert_deg_record:
591 fout << Gamma_vert_rad * RAD_TO_DEG << " ";
594 case Gamma_horiz_record:
596 fout << Gamma_horiz_rad << " ";
599 case Gamma_horiz_deg_record:
601 fout << Gamma_horiz_rad * RAD_TO_DEG << " ";
605 /**************** Atmospheric Properties ***************/
608 fout << Density << " ";
613 fout << V_sound << " ";
616 case Mach_number_record:
618 fout << Mach_number << " ";
621 case Static_pressure_record:
623 fout << Static_pressure << " ";
626 case Total_pressure_record:
628 fout << Total_pressure << " ";
631 case Impact_pressure_record:
633 fout << Impact_pressure << " ";
636 case Dynamic_pressure_record:
638 fout << Dynamic_pressure << " ";
641 case Static_temperature_record:
643 fout << Static_temperature << " ";
646 case Total_temperature_record:
648 fout << Total_temperature << " ";
652 /******************** Earth Properties *****************/
655 fout << Gravity << " ";
658 case Sea_level_radius_record:
660 fout << Sea_level_radius << " ";
663 case Earth_position_angle_record:
665 fout << Earth_position_angle << " ";
668 case Runway_altitude_record:
670 fout << Runway_altitude << " ";
673 case Runway_latitude_record:
675 fout << Runway_latitude << " ";
678 case Runway_longitude_record:
680 fout << Runway_longitude << " ";
683 case Runway_heading_record:
685 fout << Runway_heading << " ";
688 case Radius_to_rwy_record:
690 fout << Radius_to_rwy << " ";
693 case D_pilot_north_of_rwy_record:
695 fout << D_pilot_north_of_rwy << " ";
698 case D_pilot_east_of_rwy_record:
700 fout << D_pilot_east_of_rwy << " ";
703 case D_pilot_above_rwy_record:
705 fout << D_pilot_above_rwy << " ";
708 case X_pilot_rwy_record:
710 fout << X_pilot_rwy << " ";
713 case Y_pilot_rwy_record:
715 fout << Y_pilot_rwy << " ";
718 case H_pilot_rwy_record:
720 fout << H_pilot_rwy << " ";
723 case D_cg_north_of_rwy_record:
725 fout << D_cg_north_of_rwy << " ";
728 case D_cg_east_of_rwy_record:
730 fout << D_cg_east_of_rwy << " ";
733 case D_cg_above_rwy_record:
735 fout << D_cg_above_rwy << " ";
738 case X_cg_rwy_record:
740 fout << X_cg_rwy << " ";
743 case Y_cg_rwy_record:
745 fout << Y_cg_rwy << " ";
748 case H_cg_rwy_record:
750 fout << H_cg_rwy << " ";
754 /********************* Engine Inputs *******************/
755 case Throttle_3_record:
757 fout << Throttle[3] << " ";
760 case Throttle_pct_record:
762 fout << Throttle_pct << " ";
766 /******************** Control Inputs *******************/
767 case Long_control_record:
769 fout << Long_control << " ";
772 case Long_trim_record:
774 fout << Long_trim << " ";
777 case Long_trim_deg_record:
779 fout << Long_trim * RAD_TO_DEG << " ";
782 case elevator_record:
784 fout << elevator << " ";
787 case elevator_deg_record:
789 fout << elevator * RAD_TO_DEG << " ";
792 case Lat_control_record:
794 fout << Long_control << " ";
799 fout << aileron << " ";
802 case aileron_deg_record:
804 fout << aileron * RAD_TO_DEG << " ";
807 case Rudder_pedal_record:
809 fout << Long_control << " ";
814 fout << rudder << " ";
817 case rudder_deg_record:
819 fout << rudder * RAD_TO_DEG << " ";
822 case Flap_handle_record:
832 case flap_deg_record:
834 fout << flap * RAD_TO_DEG << " ";
838 /****************** Aero Coefficients ******************/
846 fout << CDfaI << " ";
851 fout << CDfCLI << " ";
856 fout << CDfadeI << " ";
861 fout << CDfdfI << " ";
866 fout << CDfadfI << " ";
881 fout << CLfaI << " ";
886 fout << CLfadeI << " ";
891 fout << CLfdfI << " ";
896 fout << CLfadfI << " ";
911 fout << CmfaI << " ";
916 fout << CmfadeI << " ";
921 fout << CmfdfI << " ";
926 fout << CmfadfI << " ";
936 fout << CYfadaI << " ";
939 case CYfbetadrI_record:
941 fout << CYfbetadrI << " ";
951 fout << ClfadaI << " ";
954 case ClfbetadrI_record:
956 fout << ClfbetadrI << " ";
966 fout << CnfadaI << " ";
969 case CnfbetadrI_record:
971 fout << CnfbetadrI << " ";
975 /******************** Ice Detection ********************/
976 case CLclean_wing_record:
978 fout << CLclean_wing << " ";
981 case CLiced_wing_record:
983 fout << CLiced_wing << " ";
986 case CLclean_tail_record:
988 fout << CLclean_tail << " ";
991 case CLiced_tail_record:
993 fout << CLiced_tail << " ";
996 case Lift_clean_wing_record:
998 fout << Lift_clean_wing << " ";
1001 case Lift_iced_wing_record:
1003 fout << Lift_iced_wing << " ";
1006 case Lift_clean_tail_record:
1008 fout << Lift_clean_tail << " ";
1011 case Lift_iced_tail_record:
1013 fout << Lift_iced_tail << " ";
1016 case Gamma_clean_wing_record:
1018 fout << Gamma_clean_wing << " ";
1021 case Gamma_iced_wing_record:
1023 fout << Gamma_iced_wing << " ";
1026 case Gamma_clean_tail_record:
1028 fout << Gamma_clean_tail << " ";
1031 case Gamma_iced_tail_record:
1033 fout << Gamma_iced_tail << " ";
1036 case w_clean_wing_record:
1038 fout << w_clean_wing << " ";
1041 case w_iced_wing_record:
1043 fout << w_iced_wing << " ";
1046 case w_clean_tail_record:
1048 fout << w_clean_tail << " ";
1051 case w_iced_tail_record:
1053 fout << w_iced_tail << " ";
1056 case V_total_clean_wing_record:
1058 fout << V_total_clean_wing << " ";
1061 case V_total_iced_wing_record:
1063 fout << V_total_iced_wing << " ";
1066 case V_total_clean_tail_record:
1068 fout << V_total_clean_tail << " ";
1071 case V_total_iced_tail_record:
1073 fout << V_total_iced_tail << " ";
1076 case beta_flow_clean_wing_record:
1078 fout << beta_flow_clean_wing << " ";
1081 case beta_flow_clean_wing_deg_record:
1083 fout << beta_flow_clean_wing * RAD_TO_DEG << " ";
1086 case beta_flow_iced_wing_record:
1088 fout << beta_flow_iced_wing << " ";
1091 case beta_flow_iced_wing_deg_record:
1093 fout << beta_flow_iced_wing * RAD_TO_DEG << " ";
1096 case beta_flow_clean_tail_record:
1098 fout << beta_flow_clean_tail << " ";
1101 case beta_flow_clean_tail_deg_record:
1103 fout << beta_flow_clean_tail * RAD_TO_DEG << " ";
1106 case beta_flow_iced_tail_record:
1108 fout << beta_flow_iced_tail << " ";
1111 case beta_flow_iced_tail_deg_record:
1113 fout << beta_flow_iced_tail * RAD_TO_DEG << " ";
1116 case Dbeta_flow_wing_record:
1118 fout << Dbeta_flow_wing << " ";
1121 case Dbeta_flow_wing_deg_record:
1123 fout << Dbeta_flow_wing * RAD_TO_DEG << " ";
1126 case Dbeta_flow_tail_record:
1128 fout << Dbeta_flow_tail << " ";
1131 case Dbeta_flow_tail_deg_record:
1133 fout << Dbeta_flow_tail * RAD_TO_DEG << " ";
1136 case pct_beta_flow_wing_record:
1138 fout << pct_beta_flow_wing << " ";
1141 case pct_beta_flow_tail_record:
1143 fout << pct_beta_flow_tail << " ";
1147 /************************ Forces ***********************/
1148 case F_X_wind_record:
1150 fout << F_X_wind << " ";
1153 case F_Y_wind_record:
1155 fout << F_Y_wind << " ";
1158 case F_Z_wind_record:
1160 fout << F_Z_wind << " ";
1163 case F_X_aero_record:
1165 fout << F_X_aero << " ";
1168 case F_Y_aero_record:
1170 fout << F_Y_aero << " ";
1173 case F_Z_aero_record:
1175 fout << F_Z_aero << " ";
1178 case F_X_engine_record:
1180 fout << F_X_engine << " ";
1183 case F_Y_engine_record:
1185 fout << F_Y_engine << " ";
1188 case F_Z_engine_record:
1190 fout << F_Z_engine << " ";
1193 case F_X_gear_record:
1195 fout << F_X_gear << " ";
1198 case F_Y_gear_record:
1200 fout << F_Y_gear << " ";
1203 case F_Z_gear_record:
1205 fout << F_Z_gear << " ";
1223 case F_north_record:
1225 fout << F_north << " ";
1230 fout << F_east << " ";
1235 fout << F_down << " ";
1239 /*********************** Moments ***********************/
1240 case M_l_aero_record:
1242 fout << M_l_aero << " ";
1245 case M_m_aero_record:
1247 fout << M_m_aero << " ";
1250 case M_n_aero_record:
1252 fout << M_n_aero << " ";
1255 case M_l_engine_record:
1257 fout << M_l_engine << " ";
1260 case M_m_engine_record:
1262 fout << M_m_engine << " ";
1265 case M_n_engine_record:
1267 fout << M_n_engine << " ";
1270 case M_l_gear_record:
1272 fout << M_l_gear << " ";
1275 case M_m_gear_record:
1277 fout << M_m_gear << " ";
1280 case M_n_gear_record:
1282 fout << M_n_gear << " ";
1287 fout << M_l_rp << " ";
1292 fout << M_m_rp << " ";
1297 fout << M_n_rp << " ";
1306 // end uiuc_recorder.cpp