X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FUIUCModel%2Fuiuc_wrapper.cpp;h=c776a2f1e72b95425488fa2dbc5836fcdbd8f82e;hb=7289eaa8baafac56a3e32dedd5b77d3534d61c4a;hp=ceaa2dad673dadb96d635ce011f5b342ccc30078;hpb=1784ad74b6de724606910d5605e4257a853d759d;p=flightgear.git diff --git a/src/FDM/UIUCModel/uiuc_wrapper.cpp b/src/FDM/UIUCModel/uiuc_wrapper.cpp index ceaa2dad6..c776a2f1e 100644 --- a/src/FDM/UIUCModel/uiuc_wrapper.cpp +++ b/src/FDM/UIUCModel/uiuc_wrapper.cpp @@ -27,7 +27,11 @@ 02/24/2002 (GD) Added uiuc_network_routine() 03/27/2002 (RD) Changed how forces are calculated when body-axis is used - + 12/11/2002 (RD) Divided uiuc_network_routine into + uiuc_network_recv_routine and + uiuc_network_send_routine + 03/16/2003 (RD) Added trigger lines in recorder area + ---------------------------------------------------------------------- AUTHOR(S): Bipin Sehgal @@ -75,6 +79,10 @@ **********************************************************************/ +#ifdef HAVE_CONFIG_H +# include +#endif + #include #include #include @@ -83,6 +91,7 @@ #include "uiuc_aircraft.h" #include "uiuc_aircraftdir.h" #include "uiuc_coefficients.h" +#include "uiuc_getwind.h" #include "uiuc_engine.h" #include "uiuc_gear.h" #include "uiuc_aerodeflections.h" @@ -93,21 +102,21 @@ //#include "Main/simple_udp.h" #include "uiuc_fog.h" //321654 //#include "uiuc_network.h" -//#include "uiuc_get_flapper.h" +#include "uiuc_get_flapper.h" -#if !defined (SG_HAVE_NATIVE_SGI_COMPILERS) SG_USING_STD(cout); SG_USING_STD(endl); -#endif +extern "C" void uiuc_initial_init (); +extern "C" void uiuc_vel_init (); extern "C" void uiuc_init_aeromodel (); extern "C" void uiuc_force_moment(double dt); extern "C" void uiuc_engine_routine(); +extern "C" void uiuc_wind_routine(); extern "C" void uiuc_gear_routine(); extern "C" void uiuc_record_routine(double dt); -extern "C" void uiuc_network_routine(); -extern "C" void uiuc_vel_init (); -extern "C" void uiuc_initial_init (); +extern "C" void uiuc_network_recv_routine(); +extern "C" void uiuc_network_send_routine(); AIRCRAFT *aircraft_ = new AIRCRAFT; AIRCRAFTDIR *aircraftdir_ = new AIRCRAFTDIR; @@ -190,10 +199,6 @@ void uiuc_force_moment(double dt) uiuc_aerodeflections(dt); uiuc_coefficients(dt); - //if (flapper_model) - // { - // uiuc_get_flapper(dt); - // } /* Calculate the forces */ if (CX && CZ) @@ -204,9 +209,17 @@ void uiuc_force_moment(double dt) } else { + // Cos_beta * Cos_beta corrects V_rel_wind to get normal q onto wing, + // hence Cos_beta * Cos_beta term included. + // Same thing is done w/ moments below. + // Without this "die-off" function, lift would be produced in a 90 deg sideslip, when + // that should not be the case. See FGFS notes 021105 F_X_wind = -CD * qS * Cos_beta * Cos_beta; - F_Y_wind = CY * qS * Cos_beta * Cos_beta; + F_Y_wind = CY * qS; F_Z_wind = -CL * qS * Cos_beta * Cos_beta; + // F_X_wind = -CD * qS * Cos_beta * Cos_beta; + // F_Y_wind = CY * qS * Cos_beta * Cos_beta; + // F_Z_wind = -CL * qS * Cos_beta * Cos_beta; // wind-axis to body-axis transformation F_X_aero = F_X_wind * Cos_alpha * Cos_beta - F_Y_wind * Cos_alpha * Sin_beta - F_Z_wind * Sin_alpha; @@ -214,9 +227,12 @@ void uiuc_force_moment(double dt) F_Z_aero = F_X_wind * Sin_alpha * Cos_beta - F_Y_wind * Sin_alpha * Sin_beta + F_Z_wind * Cos_alpha; } // Moment calculations - M_l_aero = Cl * qSb * Cos_beta * Cos_beta; + M_l_aero = Cl * qSb ; M_m_aero = Cm * qScbar * Cos_beta * Cos_beta; - M_n_aero = Cn * qSb * Cos_beta * Cos_beta; + M_n_aero = Cn * qSb ; + // M_l_aero = Cl * qSb * Cos_beta * Cos_beta; + // M_m_aero = Cm * qScbar * Cos_beta * Cos_beta; + // M_n_aero = Cn * qSb * Cos_beta * Cos_beta; // Adding in apparent mass effects if (Mass_appMass_ratio) @@ -245,12 +261,13 @@ void uiuc_force_moment(double dt) M_m_aero += -polarInertia * engineOmega * R_body; // ornithopter support - //if (flapper_model) - // { - // F_X_aero += F_X_aero_flapper; - // F_Z_aero += F_Z_aero_flapper; - // M_m_aero += flapper_Moment; - // } + if (flapper_model) + { + uiuc_get_flapper(dt); + F_X_aero += F_X_aero_flapper; + F_Z_aero += F_Z_aero_flapper; + M_m_aero += flapper_Moment; + } // fog field update Fog = 0; @@ -291,6 +308,11 @@ void uiuc_force_moment(double dt) } +void uiuc_wind_routine() +{ + uiuc_getwind(); +} + void uiuc_engine_routine() { uiuc_engine(); @@ -303,12 +325,31 @@ void uiuc_gear_routine () void uiuc_record_routine(double dt) { + if (trigger_last_time_step == 0 && trigger_on == 1) { + if (trigger_toggle == 0) + trigger_toggle = 1; + else + trigger_toggle = 0; + trigger_num++; + if (trigger_num % 2 != 0) + trigger_counter++; + } + if (Simtime >= recordStartTime) uiuc_recorder(dt); + + trigger_last_time_step = trigger_on; } -//void uiuc_network_routine() -//{ -// uiuc_network(); -//} +void uiuc_network_recv_routine() +{ + //if (use_uiuc_network) + //uiuc_network(1); +} + +void uiuc_network_send_routine() +{ + //if (use_uiuc_network) + //uiuc_network(2); +} //end uiuc_wrapper.cpp