diff --git a/src/FDM/LaRCsim.cxx b/src/FDM/LaRCsim.cxx index 20dfb738c..0cadfdd4c 100644 --- a/src/FDM/LaRCsim.cxx +++ b/src/FDM/LaRCsim.cxx @@ -79,8 +79,6 @@ FGLaRCsim::~FGLaRCsim(void) { void FGLaRCsim::init() { //do init common to all FDM's common_init(); - - //now do any specific to LaRCsim } @@ -566,20 +564,6 @@ void FGLaRCsim::set_ls(void) { V_down_airmass = lsic->GetVdownAirmassFpsIC(); ls_loop(0.0,-1); copy_from_LaRCsim(); - SG_LOG( SG_FLIGHT, SG_INFO, " FGLaRCsim::set_ls(): " ); - SG_LOG( SG_FLIGHT, SG_INFO, " Phi: " << Phi ); - SG_LOG( SG_FLIGHT, SG_INFO, " Theta: " << Theta ); - SG_LOG( SG_FLIGHT, SG_INFO, " Psi: " << Psi ); - SG_LOG( SG_FLIGHT, SG_INFO, " V_north: " << V_north ); - SG_LOG( SG_FLIGHT, SG_INFO, " V_east: " << V_east ); - SG_LOG( SG_FLIGHT, SG_INFO, " V_down: " << V_down ); - SG_LOG( SG_FLIGHT, SG_INFO, " Altitude: " << Altitude ); - SG_LOG( SG_FLIGHT, SG_INFO, " Latitude: " << Latitude ); - SG_LOG( SG_FLIGHT, SG_INFO, " Longitude: " << Longitude ); - SG_LOG( SG_FLIGHT, SG_INFO, " Runway_altitude: " << Runway_altitude ); - SG_LOG( SG_FLIGHT, SG_INFO, " V_north_airmass: " << V_north_airmass ); - SG_LOG( SG_FLIGHT, SG_INFO, " V_east_airmass: " << V_east_airmass ); - SG_LOG( SG_FLIGHT, SG_INFO, " V_down_airmass: " << V_down_airmass ); } void FGLaRCsim::snap_shot(void) { @@ -601,6 +585,7 @@ void FGLaRCsim::snap_shot(void) { void FGLaRCsim::set_Latitude(double lat) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Latitude: " << lat ); snap_shot(); + _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET ); lsic->SetLatitudeGDRadIC(lat); set_ls(); copy_from_LaRCsim(); //update the bus @@ -609,6 +594,8 @@ void FGLaRCsim::set_Latitude(double lat) { void FGLaRCsim::set_Longitude(double lon) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Longitude: " << lon ); snap_shot(); + + _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET ); lsic->SetLongitudeRadIC(lon); set_ls(); copy_from_LaRCsim(); //update the bus @@ -617,6 +604,7 @@ void FGLaRCsim::set_Longitude(double lon) { void FGLaRCsim::set_Altitude(double alt) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Altitude: " << alt ); snap_shot(); + _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET ); lsic->SetAltitudeFtIC(alt); set_ls(); copy_from_LaRCsim(); //update the bus @@ -687,14 +675,6 @@ void FGLaRCsim::set_Gamma_vert_rad( double gamma) { copy_from_LaRCsim(); //update the bus } -void FGLaRCsim::set_Runway_altitude(double ralt) { - SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Runway_altitude: " << ralt ); - snap_shot(); - lsic->SetRunwayAltitudeFtIC(ralt); - set_ls(); - copy_from_LaRCsim(); //update the bus -} - void FGLaRCsim::set_AltitudeAGL(double altagl) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_AltitudeAGL: " << altagl ); snap_shot(); diff --git a/src/FDM/LaRCsim.hxx b/src/FDM/LaRCsim.hxx index 078579621..f5299c974 100644 --- a/src/FDM/LaRCsim.hxx +++ b/src/FDM/LaRCsim.hxx @@ -80,7 +80,6 @@ public: void set_Gamma_vert_rad( double gamma); // Earth - void set_Runway_altitude(double ralt); void set_Static_pressure(double p); void set_Static_temperature(double T); void set_Density(double rho); diff --git a/src/FDM/LaRCsimIC.cxx b/src/FDM/LaRCsimIC.cxx index 5ec1db499..4e689fc25 100644 --- a/src/FDM/LaRCsimIC.cxx +++ b/src/FDM/LaRCsimIC.cxx @@ -99,15 +99,11 @@ void LaRCsimIC::SetClimbRateFpmIC( SCALAR tt) { void LaRCsimIC::SetClimbRateFpsIC( SCALAR tt) { vtg=vt+vw; - cout << "vtg: " << vtg << endl; if(vtg > 0.1) { hdot = tt - vdownwind; gamma=asin(hdot/vtg); getTheta(); vdown=-1*hdot; - cout << "hdot: " << hdot << endl; - cout << "gamma: " << gamma*SGD_RADIANS_TO_DEGREES << endl; - cout << "vdown: " << vdown << endl; } } @@ -116,7 +112,6 @@ void LaRCsimIC::SetFlightPathAngleRadIC( SCALAR tt) { getTheta(); vtg=vt+vw; hdot=vtg*sin(tt); - cout << "hdot: " << hdot << endl; vdown=-1*hdot; } diff --git a/src/FDM/YASim/YASim.cxx b/src/FDM/YASim/YASim.cxx index 3253715a5..166b56656 100644 --- a/src/FDM/YASim/YASim.cxx +++ b/src/FDM/YASim/YASim.cxx @@ -227,7 +227,7 @@ void YASim::copyToYASim(bool copyState) // The ground elevation doesn't come from FGInterface; query it // from the scenery and set it for others to find. double ground = scenery.get_cur_elev(); - set_Runway_altitude(ground * FT2M); + _set_Runway_altitude(ground * FT2M); // cout << "YASIM: ground = " << ground << endl; // You'd this this would work, but it doesn't. These values are diff --git a/src/FDM/flight.cxx b/src/FDM/flight.cxx index a0b7c4e59..9bc133c08 100644 --- a/src/FDM/flight.cxx +++ b/src/FDM/flight.cxx @@ -188,10 +188,6 @@ FGInterface::common_init () SG_LOG( SG_FLIGHT, SG_INFO, "...initializing ground elevation to " << ground_elev_ft << "ft..." ); - SG_LOG( SG_FLIGHT, SG_INFO, "common_init(): set ground elevation " - << ground_elev_ft ); - base_fdm_state.set_Runway_altitude( ground_elev_ft ); - set_Runway_altitude( ground_elev_ft ); // Set sea-level radius SG_LOG( SG_FLIGHT, SG_INFO, "...initializing sea-level radius..." ); @@ -204,7 +200,7 @@ FGInterface::common_init () * SGD_DEGREES_TO_RADIANS, fgGetDouble("/position/altitude-ft") * SG_FEET_TO_METER, &sea_level_radius_meters, &lat_geoc ); - set_Sea_level_radius( sea_level_radius_meters * SG_METER_TO_FEET ); + _set_Sea_level_radius( sea_level_radius_meters * SG_METER_TO_FEET ); // Set initial velocities SG_LOG( SG_FLIGHT, SG_INFO, "...initializing velocities..." ); @@ -358,6 +354,14 @@ FGInterface::bind () &FGInterface::get_Climb_Rate); // read-only fgTie("/velocities/side-slip-rad", this, &FGInterface::get_Beta); // read-only + fgTie("/velocities/side-slip-deg", this, + &FGInterface::get_Beta_deg); // read-only + fgTie("/velocities/alpha-deg", this, + &FGInterface::get_Alpha_deg); // read-only + fgTie("/accelerations/nlf", this, + &FGInterface::get_Nlf); // read-only + + } @@ -392,6 +396,10 @@ FGInterface::unbind () fgUntie("/velocities/wBody-fps"); fgUntie("/velocities/vertical-speed-fps"); fgUntie("/velocities/side-slip-rad"); + fgUntie("/velocities/side-slip-deg"); + fgUntie("/velocities/alpha-deg"); + fgUntie("/accelerations/nlf"); + } /** @@ -540,35 +548,6 @@ void FGInterface::extrapolate( int time_offset ) { geocentric_position_v[2] = radius; } - -// Set the altitude (force) -void fgFDMForceAltitude(const string &model, double alt_meters) { - SG_LOG(SG_FLIGHT,SG_INFO, "fgFDMForceAltitude: " << alt_meters ); - - double sea_level_radius_meters; - double lat_geoc; - - // Set the FG variables first - sgGeodToGeoc( base_fdm_state.get_Latitude(), alt_meters, - &sea_level_radius_meters, &lat_geoc); - - base_fdm_state.set_Altitude( alt_meters * SG_METER_TO_FEET ); - base_fdm_state.set_Sea_level_radius( sea_level_radius_meters * - SG_METER_TO_FEET ); - - cur_fdm_state->set_Altitude( alt_meters * SG_METER_TO_FEET ); - cur_fdm_state->set_Sea_level_radius( sea_level_radius_meters * - SG_METER_TO_FEET ); - cur_fdm_state->set_Runway_altitude( scenery.get_cur_elev() * - SG_METER_TO_FEET ); - - // additional work needed for some flight models - if ( model == "larcsim" ) { - ls_ForceAltitude( base_fdm_state.get_Altitude() ); - } -} - - // Positions void FGInterface::set_Latitude(double lat) { geodetic_position_v[0] = lat; @@ -629,15 +608,6 @@ void FGInterface::set_Gamma_vert_rad( double gamma) { gamma_vert_rad = gamma; } -// Earth -void FGInterface::set_Sea_level_radius(double slr) { - sea_level_radius = slr; -} - -void FGInterface::set_Runway_altitude(double ralt) { - runway_altitude = ralt; -} - void FGInterface::set_Static_pressure(double p) { static_pressure = p; } void FGInterface::set_Static_temperature(double T) { static_temperature = T; } void FGInterface::set_Density(double rho) { density = rho; } diff --git a/src/FDM/flight.hxx b/src/FDM/flight.hxx index b68482d79..fe0a11edd 100644 --- a/src/FDM/flight.hxx +++ b/src/FDM/flight.hxx @@ -513,8 +513,6 @@ public: virtual void set_Gamma_vert_rad( double gamma); // Earth - virtual void set_Sea_level_radius(double slr); - virtual void set_Runway_altitude(double ralt); virtual void set_Static_pressure(double p); virtual void set_Static_temperature(double T); @@ -693,7 +691,7 @@ public: // n_pilot_body_v[2] = z; // } - inline double get_Nlf(void) { return nlf; } + inline double get_Nlf(void) const { return nlf; } // inline double * get_Omega_dot_body_v() { return omega_dot_body_v; } // inline double get_P_dot_body() const { return omega_dot_body_v[0]; } @@ -912,7 +910,9 @@ public: // } inline double get_Alpha() const { return alpha; } + inline double get_Alpha_deg() const { return alpha * SGD_RADIANS_TO_DEGREES; } inline double get_Beta() const { return beta; } + inline double get_Beta_deg() const { return beta * SGD_RADIANS_TO_DEGREES; } inline double get_Alpha_dot() const { return alpha_dot; } // inline void set_Alpha_dot( double ad ) { alpha_dot = ad; } inline double get_Beta_dot() const { return beta_dot; } @@ -1081,8 +1081,6 @@ extern FGInterface * cur_fdm_state; // General interface to the flight model routines -// Set the altitude (force) -void fgFDMForceAltitude(const string &model, double alt_meters); // Toggle data logging on/off void fgToggleFDMdataLogging(void); diff --git a/src/Main/fg_init.cxx b/src/Main/fg_init.cxx index 09748891a..631b3f2be 100644 --- a/src/Main/fg_init.cxx +++ b/src/Main/fg_init.cxx @@ -1017,6 +1017,10 @@ void fgReInitSubsystems( void ) #endif fgInitFDM(); + + // allocates structures so must happen before any of the flight + // model or control parameters are set + fgAircraftInit(); // In the future this might not be the case. fgInitView(); diff --git a/src/Main/main.cxx b/src/Main/main.cxx index 6d91652fd..fe96a00f7 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -883,7 +883,7 @@ void fgUpdateTimeDepCalcs() { static const SGPropertyNode *master_freeze = fgGetNode("/sim/freeze/master"); - // cout << "Updating time dep calcs()" << endl; + //SG_LOG(SG_FLIGHT,SG_INFO, "Updating time dep calcs()"); fgLIGHT *l = &cur_light_params; int i; @@ -897,7 +897,8 @@ void fgUpdateTimeDepCalcs() { // << " cur_elev = " << scenery.get_cur_elev() << endl; if ( !cur_fdm_state->get_inited() && scenery.get_cur_elev() > -9990 ) { - cout << "Finally initializing fdm" << endl; + SG_LOG(SG_FLIGHT,SG_INFO, "Finally initializing fdm"); + cur_fdm_state->init(); if ( cur_fdm_state->get_bound() ) { cur_fdm_state->unbind(); @@ -1061,8 +1062,8 @@ static void fgMainLoop( void ) { cur_fdm_state->get_Altitude() * SG_FEET_TO_METER, scenery.get_cur_elev() + alt_adjust_m - 3.0, scenery.get_cur_elev() + alt_adjust_m ); - fgFDMForceAltitude( fgGetString("/sim/flight-model"), - scenery.get_cur_elev() + alt_adjust_m ); + cur_fdm_state->set_Altitude( scenery.get_cur_elev() + + alt_adjust_m ); SG_LOG( SG_ALL, SG_DEBUG, "<*> resetting altitude to " @@ -1716,7 +1717,7 @@ int mainLoop( int argc, char **argv ) { // build our custom render states fgBuildRenderStates(); - + // pass control off to the master GLUT event handler glutMainLoop();