1 /*************************************************************************** 2 3 TITLE: ls_generic.h 4 5 ---------------------------------------------------------------------------- 6 7 FUNCTION: LaRCSim generic parameters header file 8 9 ---------------------------------------------------------------------------- 10 11 MODULE STATUS: developmental 12 13 ---------------------------------------------------------------------------- 14 15 GENEALOGY: Created 15 DEC 1993 by Bruce Jackson; 16 was part of old ls_eom.h header 17 18 ---------------------------------------------------------------------------- 19 20 DESIGNED BY: B. Jackson 21 22 CODED BY: B. Jackson 23 24 MAINTAINED BY: guess who 25 26 ---------------------------------------------------------------------------- 27 28 MODIFICATION HISTORY: 29 30 DATE PURPOSE BY 31 32 33 ---------------------------------------------------------------------------- 34 35 REFERENCES: 36 37 [ 1] McFarland, Richard E.: "A Standard Kinematic Model 38 for Flight Simulation at NASA-Ames", NASA CR-2497, 39 January 1975 40 41 [ 2] ANSI/AIAA R-004-1992 "Recommended Practice: Atmos- 42 pheric and Space Flight Vehicle Coordinate Systems", 43 February 1992 44 45 [ 3] Beyer, William H., editor: "CRC Standard Mathematical 46 Tables, 28th edition", CRC Press, Boca Raton, FL, 1987, 47 ISBN 0-8493-0628-0 48 49 [ 4] Dowdy, M. C.; Jackson, E. B.; and Nichols, J. H.: 50 "Controls Analysis and Simulation Test Loop Environ- 51 ment (CASTLE) Programmer's Guide, Version 1.3", 52 NATC TM 89-11, 30 March 1989. 53 54 [ 5] Halliday, David; and Resnick, Robert: "Fundamentals 55 of Physics, Revised Printing", Wiley and Sons, 1974. 56 ISBN 0-471-34431-1 57 58 [ 6] Anon: "U. S. Standard Atmosphere, 1962" 59 60 [ 7] Anon: "Aeronautical Vest Pocket Handbook, 17th edition", 61 Pratt & Whitney Aircraft Group, Dec. 1977 62 63 [ 8] Stevens, Brian L.; and Lewis, Frank L.: "Aircraft 64 Control and Simulation", Wiley and Sons, 1992. 65 ISBN 0-471-61397-5 66 67 --------------------------------------------------------------------------*/ 68 69 70 #ifndef _LS_GENERIC_H 71 #define _LS_GENERIC_H 72 73 74 #ifdef __cplusplus 75 extern "C" { 76 #endif 77 78 79 #include "ls_types.h" 80 81 82 typedef struct { 83 84 /*================== Mass properties and geometry values ==================*/ 85 86 DATA mass, i_xx, i_yy, i_zz, i_xz; /* Inertias */ 87 #define Mass generic_.mass 88 #define I_xx generic_.i_xx 89 #define I_yy generic_.i_yy 90 #define I_zz generic_.i_zz 91 #define I_xz generic_.i_xz 92 93 VECTOR_3 d_pilot_rp_body_v; /* Pilot location rel to ref pt */ 94 #define D_pilot_rp_body_v generic_.d_pilot_rp_body_v 95 #define Dx_pilot generic_.d_pilot_rp_body_v[0] 96 #define Dy_pilot generic_.d_pilot_rp_body_v[1] 97 #define Dz_pilot generic_.d_pilot_rp_body_v[2] 98 99 VECTOR_3 d_cg_rp_body_v; /* CG position w.r.t. ref. point */ 100 #define D_cg_rp_body_v generic_.d_cg_rp_body_v 101 #define Dx_cg generic_.d_cg_rp_body_v[0] 102 #define Dy_cg generic_.d_cg_rp_body_v[1] 103 #define Dz_cg generic_.d_cg_rp_body_v[2] 104 105 /*================================ Forces =================================*/ 106 107 VECTOR_3 f_body_total_v; 108 #define F_body_total_v generic_.f_body_total_v 109 #define F_X generic_.f_body_total_v[0] 110 #define F_Y generic_.f_body_total_v[1] 111 #define F_Z generic_.f_body_total_v[2] 112 113 VECTOR_3 f_local_total_v; 114 #define F_local_total_v generic_.f_local_total_v 115 #define F_north generic_.f_local_total_v[0] 116 #define F_east generic_.f_local_total_v[1] 117 #define F_down generic_.f_local_total_v[2] 118 119 VECTOR_3 f_aero_v; 120 #define F_aero_v generic_.f_aero_v 121 #define F_X_aero generic_.f_aero_v[0] 122 #define F_Y_aero generic_.f_aero_v[1] 123 #define F_Z_aero generic_.f_aero_v[2] 124 125 VECTOR_3 f_engine_v; 126 #define F_engine_v generic_.f_engine_v 127 #define F_X_engine generic_.f_engine_v[0] 128 #define F_Y_engine generic_.f_engine_v[1] 129 #define F_Z_engine generic_.f_engine_v[2] 130 131 int use_external_engine; 132 #define Use_External_Engine generic_.use_external_engine 133 134 VECTOR_3 f_gear_v; 135 #define F_gear_v generic_.f_gear_v 136 #define F_X_gear generic_.f_gear_v[0] 137 #define F_Y_gear generic_.f_gear_v[1] 138 #define F_Z_gear generic_.f_gear_v[2] 139 140 /*================================ Moments ================================*/ 141 142 VECTOR_3 m_total_rp_v; 143 #define M_total_rp_v generic_.m_total_rp_v 144 #define M_l_rp generic_.m_total_rp_v[0] 145 #define M_m_rp generic_.m_total_rp_v[1] 146 #define M_n_rp generic_.m_total_rp_v[2] 147 148 VECTOR_3 m_total_cg_v; 149 #define M_total_cg_v generic_.m_total_cg_v 150 #define M_l_cg generic_.m_total_cg_v[0] 151 #define M_m_cg generic_.m_total_cg_v[1] 152 #define M_n_cg generic_.m_total_cg_v[2] 153 154 VECTOR_3 m_aero_v; 155 #define M_aero_v generic_.m_aero_v 156 #define M_l_aero generic_.m_aero_v[0] 157 #define M_m_aero generic_.m_aero_v[1] 158 #define M_n_aero generic_.m_aero_v[2] 159 160 VECTOR_3 m_engine_v; 161 #define M_engine_v generic_.m_engine_v 162 #define M_l_engine generic_.m_engine_v[0] 163 #define M_m_engine generic_.m_engine_v[1] 164 #define M_n_engine generic_.m_engine_v[2] 165 166 VECTOR_3 m_gear_v; 167 #define M_gear_v generic_.m_gear_v 168 #define M_l_gear generic_.m_gear_v[0] 169 #define M_m_gear generic_.m_gear_v[1] 170 #define M_n_gear generic_.m_gear_v[2] 171 172 /*============================== Accelerations ============================*/ 173 174 VECTOR_3 v_dot_local_v; 175 #define V_dot_local_v generic_.v_dot_local_v 176 #define V_dot_north generic_.v_dot_local_v[0] 177 #define V_dot_east generic_.v_dot_local_v[1] 178 #define V_dot_down generic_.v_dot_local_v[2] 179 180 VECTOR_3 v_dot_body_v; 181 #define V_dot_body_v generic_.v_dot_body_v 182 #define U_dot_body generic_.v_dot_body_v[0] 183 #define V_dot_body generic_.v_dot_body_v[1] 184 #define W_dot_body generic_.v_dot_body_v[2] 185 186 VECTOR_3 a_cg_body_v; 187 #define A_cg_body_v generic_.a_cg_body_v 188 #define A_X_cg generic_.a_cg_body_v[0] 189 #define A_Y_cg generic_.a_cg_body_v[1] 190 #define A_Z_cg generic_.a_cg_body_v[2] 191 192 VECTOR_3 a_pilot_body_v; 193 #define A_pilot_body_v generic_.a_pilot_body_v 194 #define A_X_pilot generic_.a_pilot_body_v[0] 195 #define A_Y_pilot generic_.a_pilot_body_v[1] 196 #define A_Z_pilot generic_.a_pilot_body_v[2] 197 198 VECTOR_3 n_cg_body_v; 199 #define N_cg_body_v generic_.n_cg_body_v 200 #define N_X_cg generic_.n_cg_body_v[0] 201 #define N_Y_cg generic_.n_cg_body_v[1] 202 #define N_Z_cg generic_.n_cg_body_v[2] 203 204 VECTOR_3 n_pilot_body_v; 205 #define N_pilot_body_v generic_.n_pilot_body_v 206 #define N_X_pilot generic_.n_pilot_body_v[0] 207 #define N_Y_pilot generic_.n_pilot_body_v[1] 208 #define N_Z_pilot generic_.n_pilot_body_v[2] 209 210 VECTOR_3 omega_dot_body_v; 211 #define Omega_dot_body_v generic_.omega_dot_body_v 212 #define P_dot_body generic_.omega_dot_body_v[0] 213 #define Q_dot_body generic_.omega_dot_body_v[1] 214 #define R_dot_body generic_.omega_dot_body_v[2] 215 216 217 /*============================== Velocities ===============================*/ 218 219 VECTOR_3 v_local_v; 220 #define V_local_v generic_.v_local_v 221 #define V_north generic_.v_local_v[0] 222 #define V_east generic_.v_local_v[1] 223 #define V_down generic_.v_local_v[2] 224 225 VECTOR_3 v_local_rel_ground_v; /* V rel w.r.t. earth surface */ 226 #define V_local_rel_ground_v generic_.v_local_rel_ground_v 227 #define V_north_rel_ground generic_.v_local_rel_ground_v[0] 228 #define V_east_rel_ground generic_.v_local_rel_ground_v[1] 229 #define V_down_rel_ground generic_.v_local_rel_ground_v[2] 230 231 VECTOR_3 v_local_airmass_v; /* velocity of airmass (steady winds) */ 232 #define V_local_airmass_v generic_.v_local_airmass_v 233 #define V_north_airmass generic_.v_local_airmass_v[0] 234 #define V_east_airmass generic_.v_local_airmass_v[1] 235 #define V_down_airmass generic_.v_local_airmass_v[2] 236 237 VECTOR_3 v_local_rel_airmass_v; /* velocity of veh. relative to airmass */ 238 #define V_local_rel_airmass_v generic_.v_local_rel_airmass_v 239 #define V_north_rel_airmass generic_.v_local_rel_airmass_v[0] 240 #define V_east_rel_airmass generic_.v_local_rel_airmass_v[1] 241 #define V_down_rel_airmass generic_.v_local_rel_airmass_v[2] 242 243 VECTOR_3 v_local_gust_v; /* linear turbulence components, L frame */ 244 #define V_local_gust_v generic_.v_local_gust_v 245 #define U_gust generic_.v_local_gust_v[0] 246 #define V_gust generic_.v_local_gust_v[1] 247 #define W_gust generic_.v_local_gust_v[2] 248 249 VECTOR_3 v_wind_body_v; /* Wind-relative velocities in body axis */ 250 #define V_wind_body_v generic_.v_wind_body_v 251 #define U_body generic_.v_wind_body_v[0] 252 #define V_body generic_.v_wind_body_v[1] 253 #define W_body generic_.v_wind_body_v[2] 254 255 DATA v_rel_wind, v_true_kts, v_rel_ground, v_inertial; 256 DATA v_ground_speed, v_equiv, v_equiv_kts; 257 DATA v_calibrated, v_calibrated_kts; 258 #define V_rel_wind generic_.v_rel_wind 259 #define V_true_kts generic_.v_true_kts 260 #define V_rel_ground generic_.v_rel_ground 261 #define V_inertial generic_.v_inertial 262 #define V_ground_speed generic_.v_ground_speed 263 #define V_equiv generic_.v_equiv 264 #define V_equiv_kts generic_.v_equiv_kts 265 #define V_calibrated generic_.v_calibrated 266 #define V_calibrated_kts generic_.v_calibrated_kts 267 268 VECTOR_3 omega_body_v; /* Angular B rates */ 269 #define Omega_body_v generic_.omega_body_v 270 #define P_body generic_.omega_body_v[0] 271 #define Q_body generic_.omega_body_v[1] 272 #define R_body generic_.omega_body_v[2] 273 274 VECTOR_3 omega_local_v; /* Angular L rates */ 275 #define Omega_local_v generic_.omega_local_v 276 #define P_local generic_.omega_local_v[0] 277 #define Q_local generic_.omega_local_v[1] 278 #define R_local generic_.omega_local_v[2] 279 280 VECTOR_3 omega_total_v; /* Diff btw B & L */ 281 #define Omega_total_v generic_.omega_total_v 282 #define P_total generic_.omega_total_v[0] 283 #define Q_total generic_.omega_total_v[1] 284 #define R_total generic_.omega_total_v[2] 285 286 VECTOR_3 euler_rates_v; 287 #define Euler_rates_v generic_.euler_rates_v 288 #define Phi_dot generic_.euler_rates_v[0] 289 #define Theta_dot generic_.euler_rates_v[1] 290 #define Psi_dot generic_.euler_rates_v[2] 291 292 VECTOR_3 geocentric_rates_v; /* Geocentric linear velocities */ 293 #define Geocentric_rates_v generic_.geocentric_rates_v 294 #define Latitude_dot generic_.geocentric_rates_v[0] 295 #define Longitude_dot generic_.geocentric_rates_v[1] 296 #define Radius_dot generic_.geocentric_rates_v[2] 297 298 /*=============================== Positions ===============================*/ 299 300 VECTOR_3 geocentric_position_v; 301 #define Geocentric_position_v generic_.geocentric_position_v 302 #define Lat_geocentric generic_.geocentric_position_v[0] 303 #define Lon_geocentric generic_.geocentric_position_v[1] 304 #define Radius_to_vehicle generic_.geocentric_position_v[2] 305 306 VECTOR_3 geodetic_position_v; 307 #define Geodetic_position_v generic_.geodetic_position_v 308 #define Latitude generic_.geodetic_position_v[0] 309 #define Longitude generic_.geodetic_position_v[1] 310 #define Altitude generic_.geodetic_position_v[2] 311 312 VECTOR_3 euler_angles_v; 313 #define Euler_angles_v generic_.euler_angles_v 314 #define Phi generic_.euler_angles_v[0] 315 #define Theta generic_.euler_angles_v[1] 316 #define Psi generic_.euler_angles_v[2] 317 318 /*======================= Miscellaneous quantities ========================*/ 319 320 DATA t_local_to_body_m[3][3]; /* Transformation matrix L to B */ 321 #define T_local_to_body_m generic_.t_local_to_body_m 322 #define T_local_to_body_11 generic_.t_local_to_body_m[0][0] 323 #define T_local_to_body_12 generic_.t_local_to_body_m[0][1] 324 #define T_local_to_body_13 generic_.t_local_to_body_m[0][2] 325 #define T_local_to_body_21 generic_.t_local_to_body_m[1][0] 326 #define T_local_to_body_22 generic_.t_local_to_body_m[1][1] 327 #define T_local_to_body_23 generic_.t_local_to_body_m[1][2] 328 #define T_local_to_body_31 generic_.t_local_to_body_m[2][0] 329 #define T_local_to_body_32 generic_.t_local_to_body_m[2][1] 330 #define T_local_to_body_33 generic_.t_local_to_body_m[2][2] 331 332 DATA gravity; /* Local acceleration due to G */ 333 #define Gravity generic_.gravity 334 335 DATA centrifugal_relief; /* load factor reduction due to speed */ 336 #define Centrifugal_relief generic_.centrifugal_relief 337 338 DATA alpha, beta, alpha_dot, beta_dot; /* in radians */ 339 #define Std_Alpha generic_.alpha 340 #define Std_Beta generic_.beta 341 #define Std_Alpha_dot generic_.alpha_dot 342 #define Std_Beta_dot generic_.beta_dot 343 344 DATA cos_alpha, sin_alpha, cos_beta, sin_beta; 345 #define Cos_alpha generic_.cos_alpha 346 #define Sin_alpha generic_.sin_alpha 347 #define Cos_beta generic_.cos_beta 348 #define Sin_beta generic_.sin_beta 349 350 DATA cos_phi, sin_phi, cos_theta, sin_theta, cos_psi, sin_psi; 351 #define Cos_phi generic_.cos_phi 352 #define Sin_phi generic_.sin_phi 353 #define Cos_theta generic_.cos_theta 354 #define Sin_theta generic_.sin_theta 355 #define Cos_psi generic_.cos_psi 356 #define Sin_psi generic_.sin_psi 357 358 DATA gamma_vert_rad, gamma_horiz_rad; /* Flight path angles */ 359 #define Gamma_vert_rad generic_.gamma_vert_rad 360 #define Gamma_horiz_rad generic_.gamma_horiz_rad 361 362 DATA sigma, density, v_sound, mach_number; 363 #define Sigma generic_.sigma 364 #define Density generic_.density 365 #define V_sound generic_.v_sound 366 #define Mach_number generic_.mach_number 367 368 DATA static_pressure, total_pressure, impact_pressure, dynamic_pressure; 369 #define Static_pressure generic_.static_pressure 370 #define Total_pressure generic_.total_pressure 371 #define Impact_pressure generic_.impact_pressure 372 #define Dynamic_pressure generic_.dynamic_pressure 373 374 DATA static_temperature, total_temperature; 375 #define Static_temperature generic_.static_temperature 376 #define Total_temperature generic_.total_temperature 377 378 DATA sea_level_radius, earth_position_angle; 379 #define Sea_level_radius generic_.sea_level_radius 380 #define Earth_position_angle generic_.earth_position_angle 381 382 DATA runway_altitude, runway_latitude, runway_longitude, runway_heading; 383 #define Runway_altitude generic_.runway_altitude 384 #define Runway_latitude generic_.runway_latitude 385 #define Runway_longitude generic_.runway_longitude 386 #define Runway_heading generic_.runway_heading 387 388 DATA radius_to_rwy; 389 #define Radius_to_rwy generic_.radius_to_rwy 390 391 VECTOR_3 d_cg_rwy_local_v; /* CG rel. to rwy in local coords */ 392 #define D_cg_rwy_local_v generic_.d_cg_rwy_local_v 393 #define D_cg_north_of_rwy generic_.d_cg_rwy_local_v[0] 394 #define D_cg_east_of_rwy generic_.d_cg_rwy_local_v[1] 395 #define D_cg_above_rwy generic_.d_cg_rwy_local_v[2] 396 397 VECTOR_3 d_cg_rwy_rwy_v; /* CG relative to runway, in rwy coordinates */ 398 #define D_cg_rwy_rwy_v generic_.d_cg_rwy_rwy_v 399 #define X_cg_rwy generic_.d_cg_rwy_rwy_v[0] 400 #define Y_cg_rwy generic_.d_cg_rwy_rwy_v[1] 401 #define H_cg_rwy generic_.d_cg_rwy_rwy_v[2] 402 403 VECTOR_3 d_pilot_rwy_local_v; /* pilot rel. to rwy in local coords */ 404 #define D_pilot_rwy_local_v generic_.d_pilot_rwy_local_v 405 #define D_pilot_north_of_rwy generic_.d_pilot_rwy_local_v[0] 406 #define D_pilot_east_of_rwy generic_.d_pilot_rwy_local_v[1] 407 #define D_pilot_above_rwy generic_.d_pilot_rwy_local_v[2] 408 409 VECTOR_3 d_pilot_rwy_rwy_v; /* pilot rel. to rwy, in rwy coords. */ 410 #define D_pilot_rwy_rwy_v generic_.d_pilot_rwy_rwy_v 411 #define X_pilot_rwy generic_.d_pilot_rwy_rwy_v[0] 412 #define Y_pilot_rwy generic_.d_pilot_rwy_rwy_v[1] 413 #define H_pilot_rwy generic_.d_pilot_rwy_rwy_v[2] 414 415 416 } GENERIC; 417 418 extern GENERIC generic_; /* usually defined in ls_main.c */ 419 420 421 #ifdef __cplusplus 422 } 423 #endif 424 425 426 #endif /* _LS_GENERIC_H */ 427 428 429 /*--------------------------- end of ls_generic.h ------------------------*/ 430