X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FUIUCModel%2Fuiuc_wrapper.cpp;h=47897560e644e1d9e919b437116e4b4c866dc62b;hb=f04d5f8758ef4b5524a9396a84351bf86db6763e;hp=ba2333889681d30b1653be4028b20fc9838975f0;hpb=bd5ea959a01d3f4cfa5332b159e6a5ca4e0cdf30;p=flightgear.git diff --git a/src/FDM/UIUCModel/uiuc_wrapper.cpp b/src/FDM/UIUCModel/uiuc_wrapper.cpp index ba2333889..47897560e 100644 --- a/src/FDM/UIUCModel/uiuc_wrapper.cpp +++ b/src/FDM/UIUCModel/uiuc_wrapper.cpp @@ -71,25 +71,25 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA or view http://www.gnu.org/copyleft/gpl.html. - + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + **********************************************************************/ #ifdef HAVE_CONFIG_H # include #endif +#include +#include + #include #include -#include #include
#include "uiuc_aircraft.h" -#include "uiuc_aircraftdir.h" #include "uiuc_coefficients.h" #include "uiuc_getwind.h" #include "uiuc_engine.h" @@ -104,9 +104,6 @@ //#include "uiuc_network.h" #include "uiuc_get_flapper.h" -SG_USING_STD(cout); -SG_USING_STD(endl); - extern "C" void uiuc_initial_init (); extern "C" void uiuc_defaults_inits (); extern "C" void uiuc_vel_init (); @@ -119,8 +116,7 @@ extern "C" void uiuc_record_routine(double dt); extern "C" void uiuc_network_recv_routine(); extern "C" void uiuc_network_send_routine(); -AIRCRAFT *aircraft_ = new AIRCRAFT; -AIRCRAFTDIR *aircraftdir_ = new AIRCRAFTDIR; +AIRCRAFT *aircraft_ = 0; // SendArray testarray(4950); @@ -134,9 +130,11 @@ AIRCRAFTDIR *aircraftdir_ = new AIRCRAFTDIR; void uiuc_initial_init () { - // This function called from both ls_step and ls_model(uiuc model side). - // Apply brute force initializations, which override ls_step and ls_aux values - // for the first time step. + // This function is called from uiuc_init_2_wrapper (uiuc_aero.c in LaRCsim) + // which is called from ls_step and ls_model. + // Apply brute force initializations, which override unwanted changes + // performed by LaRCsim. + // Used during initialization (while Simtime=0). if (P_body_init_true) P_body = P_body_init; if (Q_body_init_true) @@ -161,7 +159,10 @@ void uiuc_initial_init () void uiuc_defaults_inits () { - // set defaults and initialize (called from ls_step.c at Simtime=0) + if (aircraft_ == 0) + aircraft_ = new AIRCRAFT; + + // set defaults and initialize (called once from uiuc_init_2_wrapper) //fog inits fog_field = 0; @@ -173,105 +174,124 @@ void uiuc_defaults_inits () fog_current_segment = 0; Fog = 0; - use_V_rel_wind_2U = 0; - nondim_rate_V_rel_wind = 0; - use_abs_U_body_2U = 0; - use_dyn_on_speed_curve1 = 0; - use_Alpha_dot_on_speed = 0; - use_gamma_horiz_on_speed = 0; - b_downwashMode = 0; - P_body_init_true = 0; - Q_body_init_true = 0; - R_body_init_true = 0; - Phi_init_true = 0; - Theta_init_true = 0; - Psi_init_true = 0; - Alpha_init_true = 0; - Beta_init_true = 0; - U_body_init_true = 0; - V_body_init_true = 0; - W_body_init_true = 0; - trim_case_2 = 0; - use_uiuc_network = 0; - old_flap_routine = 0; - icing_demo = 0; - outside_control = 0; - set_Long_trim = 0; - zero_Long_trim = 0; - elevator_step = 0; - elevator_singlet = 0; - elevator_doublet = 0; - elevator_input = 0; - aileron_input = 0; - rudder_input = 0; - pilot_elev_no = 0; - pilot_elev_no_check = 0; - pilot_ail_no = 0; - pilot_ail_no_check = 0; - pilot_rud_no = 0; - pilot_rud_no_check = 0; - use_flaps = 0; - use_spoilers = 0; - flap_pos_input = 0; - use_elevator_sas_type1 = 0; - use_elevator_sas_max = 0; - use_elevator_sas_min = 0; - use_elevator_stick_gain = 0; - use_aileron_sas_type1 = 0; - use_aileron_sas_max = 0; - use_aileron_stick_gain = 0; - use_rudder_sas_type1 = 0; - use_rudder_sas_max = 0; - use_rudder_stick_gain = 0; - simpleSingleModel = 0; - Throttle_pct_input = 0; - gyroForce_Q_body = 0; - gyroForce_R_body = 0; - b_slipstreamEffects = 0; - Xp_input = 0; - Zp_input = 0; - Mp_input = 0; - b_CLK = 0; + use_V_rel_wind_2U = false; + nondim_rate_V_rel_wind = false; + use_abs_U_body_2U = false; + use_dyn_on_speed_curve1 = false; + use_Alpha_dot_on_speed = false; + use_gamma_horiz_on_speed = false; + b_downwashMode = false; + P_body_init_true = false; + Q_body_init_true = false; + R_body_init_true = false; + Phi_init_true = false; + Theta_init_true = false; + Psi_init_true = false; + Alpha_init_true = false; + Beta_init_true = false; + U_body_init_true = false; + V_body_init_true = false; + W_body_init_true = false; + trim_case_2 = false; + use_uiuc_network = false; + icing_demo = false; + outside_control = false; + set_Long_trim = false; + zero_Long_trim = false; + elevator_step = false; + elevator_singlet = false; + elevator_doublet = false; + elevator_input = false; + elevator_input_ntime = 0; + aileron_input = false; + aileron_input_ntime = 0; + rudder_input = false; + rudder_input_ntime = 0; + pilot_elev_no = false; + pilot_elev_no_check = false; + pilot_ail_no = false; + pilot_ail_no_check = false; + pilot_rud_no = false; + pilot_rud_no_check = false; + use_flaps = false; + use_spoilers = false; + flap_pos_input = false; + flap_pos_input_ntime = 0; + use_elevator_sas_type1 = false; + use_elevator_sas_max = false; + use_elevator_sas_min = false; + use_elevator_stick_gain = false; + use_aileron_sas_type1 = false; + use_aileron_sas_max = false; + use_aileron_stick_gain = false; + use_rudder_sas_type1 = false; + use_rudder_sas_max = false; + use_rudder_stick_gain = false; + simpleSingleModel = false; + Throttle_pct_input = false; + Throttle_pct_input_ntime = 0; + gyroForce_Q_body = false; + gyroForce_R_body = false; + b_slipstreamEffects = false; + Xp_input = false; + Xp_input_ntime = 0; + Zp_input = false; + Zp_input_ntime = 0; + Mp_input = false; + Mp_input_ntime = 0; + b_CLK = false; // gear_model[MAX_GEAR] - memset(gear_model,0,MAX_GEAR*sizeof(gear_model[0])); - use_gear = 0; + memset(gear_model,false,MAX_GEAR*sizeof(gear_model[0])); + use_gear = false; // start with gear down if it is ultimately used gear_pos_norm = 1; - ice_model = 0; - ice_on = 0; - beta_model = 0; + ice_model = false; + ice_on = false; + beta_model = false; // bootTrue[20] = 0; - eta_from_file = 0; - eta_wing_left_input = 0; - eta_wing_right_input = 0; - eta_tail_input = 0; - demo_eps_alpha_max = 0; - demo_eps_pitch_max = 0; - demo_eps_pitch_min = 0; - demo_eps_roll_max = 0; - demo_eps_thrust_min = 0; - demo_eps_airspeed_max = 0; - demo_eps_airspeed_min = 0; - demo_eps_flap_max = 0; - demo_boot_cycle_tail = 0; - demo_boot_cycle_wing_left = 0; - demo_boot_cycle_wing_right = 0; - demo_eps_pitch_input = 0; - tactilefadef = 0; - demo_ap_pah_on = 0; - demo_ap_Theta_ref_deg = 0; - demo_tactile = 0; - demo_ice_tail = 0; - demo_ice_left = 0; - demo_ice_right = 0; - flapper_model = 0; - ignore_unknown_keywords = 0; - pilot_throttle_no = 0; + memset(bootTrue,false,20*sizeof(gear_model[0])); + eta_from_file = false; + eta_wing_left_input = false; + eta_wing_right_input = false; + eta_tail_input = false; + demo_eps_alpha_max = false; + demo_eps_pitch_max = false; + demo_eps_pitch_min = false; + demo_eps_roll_max = false; + demo_eps_thrust_min = false; + demo_eps_airspeed_max = false; + demo_eps_airspeed_min = false; + demo_eps_flap_max = false; + demo_boot_cycle_tail = false; + demo_boot_cycle_wing_left = false; + demo_boot_cycle_wing_right = false; + demo_eps_pitch_input = false; + tactilefadef = false; + demo_ap_pah_on = false; + demo_ap_alh_on = false; + demo_ap_Theta_ref = false; + demo_ap_alt_ref = false; + demo_tactile = false; + demo_ice_tail = false; + demo_ice_left = false; + demo_ice_right = false; + flapper_model = false; + ignore_unknown_keywords = false; + pilot_throttle_no = false; + Dx_cg = 0.0; + Dy_cg = 0.0; + Dz_cg = 0.0; + ap_pah_on = 0; + ap_alh_on = 0; } void uiuc_vel_init () { + // Calculates the local velocity (V_north, V_east, V_down) from the body + // velocities. + // Called from uiuc_local_vel_init which is called from ls_step. + // Used during initialization (while Simtime=0) if (U_body_init_true && V_body_init_true && W_body_init_true) { double det_T_l_to_b, cof11, cof12, cof13, cof21, cof22, cof23, cof31, cof32, cof33; @@ -297,10 +317,12 @@ void uiuc_vel_init () void uiuc_init_aeromodel () { + // Initializes the UIUC aircraft model. + // Called once from uiuc_init_2_wrapper SGPath path(globals->get_fg_root()); - path.append(aircraft_dir); + path.append(fgGetString("/sim/aircraft-dir")); path.append("aircraft.dat"); - cout << "We are using "<< path.str() << endl; + std::cout << "We are using "<< path.str() << std::endl; uiuc_initializemaps(); // Initialize the maps uiuc_menu(path.str()); // Read the specified aircraft file } @@ -358,6 +380,10 @@ void uiuc_force_moment(double dt) if (I_zz_appMass_ratio) M_n_aero += -(I_zz_appMass_ratio * I_zz) * R_dot_body; + // adding in apparent mass in body axis X direction + // F_X_aero += -(0.05 * Mass) * U_dot_body; + + if (Mass_appMass) F_Z_aero += -Mass_appMass * W_dot_body; if (I_xx_appMass) @@ -458,12 +484,12 @@ void uiuc_record_routine(double dt) void uiuc_network_recv_routine() { //if (use_uiuc_network) - //uiuc_network(1); + // uiuc_network(1); } void uiuc_network_send_routine() { //if (use_uiuc_network) - //uiuc_network(2); + // uiuc_network(2); } //end uiuc_wrapper.cpp