]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/JSBSim.cxx
Updates from JSBSim, including new turbine engine model from David Culp
[flightgear.git] / src / FDM / JSBSim / JSBSim.cxx
index 7535294056536ceae52798f4432089b07d445bd2..aaa08ef87bfb2e461a8e7d4bd45afa0c8272b432 100644 (file)
 // $Id$
 
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include <simgear/compiler.h>
 
 #ifdef SG_MATH_EXCEPTION_CLASH
@@ -87,7 +91,7 @@ FGJSBsim::FGJSBsim( double dt )
     Aerodynamics    = fdmex->GetAerodynamics();
     GroundReactions = fdmex->GetGroundReactions(); 
     
-    fgic=new FGInitialCondition(fdmex);
+    fgic=fdmex->GetIC();
     needTrim=true;
   
     SGPath aircraft_path( globals->get_fg_root() );
@@ -141,7 +145,7 @@ FGJSBsim::FGJSBsim( double dt )
     fgSetDouble("/fdm/trim/aileron",    FCS->GetDaCmd());
     fgSetDouble("/fdm/trim/rudder",     FCS->GetDrCmd());
 
-    startup_trim = fgGetNode("/sim/startup/trim", true);
+    startup_trim = fgGetNode("/sim/presets/trim", true);
 
     trimmed = fgGetNode("/fdm/trim/trimmed", true);
     trimmed->setBoolValue(false);
@@ -151,8 +155,7 @@ FGJSBsim::FGJSBsim( double dt )
     aileron_trim = fgGetNode("/fdm/trim/aileron", true );
     rudder_trim = fgGetNode("/fdm/trim/rudder", true );
     
-    
-    stall_warning = fgGetNode("/sim/aero/alarms/stall-warning",true);
+    stall_warning = fgGetNode("/sim/alarms/stall-warning",true);
     stall_warning->setDoubleValue(0);
     
 
@@ -175,6 +178,7 @@ FGJSBsim::FGJSBsim( double dt )
     temperature = fgGetNode("/environment/temperature-degc",true);
     pressure = fgGetNode("/environment/pressure-inhg",true);
     density = fgGetNode("/environment/density-slugft3",true);
+    turbulence = fgGetNode("environment/turbulence-norm",true);
     
     wind_from_north= fgGetNode("/environment/wind-from-north-fps",true);
     wind_from_east = fgGetNode("/environment/wind-from-east-fps" ,true);
@@ -184,10 +188,7 @@ FGJSBsim::FGJSBsim( double dt )
 }
 /******************************************************************************/
 FGJSBsim::~FGJSBsim(void) {
-    if (fdmex != NULL) {
-        delete fdmex; fdmex=NULL;
-        delete fgic; fgic=NULL;
-    }  
+        delete fdmex;
 }
 
 /******************************************************************************/
@@ -211,6 +212,9 @@ void FGJSBsim::init() {
                   9.0/5.0*(temperature->getDoubleValue()+273.15) );
       Atmosphere->SetExPressure(pressure->getDoubleValue()*70.726566);
       Atmosphere->SetExDensity(density->getDoubleValue());
+      Atmosphere->SetTurbGain(turbulence->getDoubleValue() *
+                              turbulence->getDoubleValue() *
+                              100.0);
     } else {
       Atmosphere->UseInternal();
     }
@@ -231,7 +235,7 @@ void FGJSBsim::init() {
     copy_to_JSBsim();
     
 
-    fdmex->RunIC(fgic); //loop JSBSim once w/o integrating
+    fdmex->RunIC(); //loop JSBSim once w/o integrating
     copy_from_JSBsim(); //update the bus
 
     SG_LOG( SG_FLIGHT, SG_INFO, "  Initialized JSBSim with:" );
@@ -315,7 +319,7 @@ FGJSBsim::update( double dt ) {
         fgic->SetTerrainAltitudeFtIC( cur_fdm_state->get_ground_elev_ft() );
         do_trim();
       } else {
-        fdmex->RunIC(fgic);  //apply any changes made through the set_ functions
+        fdmex->RunIC();  //apply any changes made through the set_ functions
       }
       needTrim = false;  
     }    
@@ -398,6 +402,9 @@ bool FGJSBsim::copy_to_JSBsim() {
                   9.0/5.0*(temperature->getDoubleValue()+273.15) );
     Atmosphere->SetExPressure(pressure->getDoubleValue()*70.726566);
     Atmosphere->SetExDensity(density->getDoubleValue());
+    Atmosphere->SetTurbGain(turbulence->getDoubleValue() *
+                            turbulence->getDoubleValue() *
+                            100.0);
 
     Atmosphere->SetWindNED( wind_from_north->getDoubleValue(),
                             wind_from_east->getDoubleValue(),
@@ -754,11 +761,11 @@ void FGJSBsim::update_gear(void) {
 void FGJSBsim::do_trim(void) {
 
         FGTrim *fgtrim;
-        if( fgGetBool("/sim/startup/onground") ) {
+        if( fgGetBool("/sim/presets/onground") ) {
             fgic->SetVcalibratedKtsIC(0.0);
-            fgtrim=new FGTrim(fdmex,fgic,tGround);
+            fgtrim=new FGTrim(fdmex,tGround);
         } else {
-            fgtrim=new FGTrim(fdmex,fgic,tLongitudinal);
+            fgtrim=new FGTrim(fdmex,tLongitudinal);
         }
         if( !fgtrim->DoTrim() ) {
             fgtrim->Report();
@@ -796,3 +803,4 @@ void FGJSBsim::update_ic(void) {
      fgic->SetClimbRateFpsIC( get_Climb_Rate() );
    }  
 }
+