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 <config.h>
#endif
+#include <iostream>
+#include <cstring>
+
#include <simgear/compiler.h>
#include <simgear/misc/sg_path.hxx>
-#include <Aircraft/aircraft.hxx>
#include <Main/fg_props.hxx>
#include "uiuc_aircraft.h"
-#include "uiuc_aircraftdir.h"
#include "uiuc_coefficients.h"
#include "uiuc_getwind.h"
#include "uiuc_engine.h"
//#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 ();
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);
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)
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;
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;
- // gear_model[MAX_GEAR] = 0;
- use_gear = 0;
- ice_model = 0;
- ice_on = 0;
- beta_model = 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,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 = 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;
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 <string,int> maps
uiuc_menu(path.str()); // Read the specified aircraft file
}
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)
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