]> git.mxchange.org Git - flightgear.git/commitdiff
Synced with latest JSBSim.
authorcurt <curt>
Fri, 13 Jul 2001 16:41:23 +0000 (16:41 +0000)
committercurt <curt>
Fri, 13 Jul 2001 16:41:23 +0000 (16:41 +0000)
src/FDM/JSBSim/FGModel.h
src/FDM/JSBSim/FGNozzle.cpp
src/FDM/JSBSim/FGTrim.cpp

index ebf2a510822cfac8807f69c36ba3751c5133ec17..e81a5a932a67990055cf10758aa52eab02e0252e 100644 (file)
@@ -109,7 +109,7 @@ public:
   /** Loads this model.
       @param Config a pointer to the config file instance
       @return true if model is successfully loaded*/
-  virtual bool Load(FGConfigFile* Config) {}
+  virtual bool Load(FGConfigFile* Config) {return true;}
  
   FGModel* NextModel;
   string Name;
index f4cf9339378e48db7abcdb672b054192bf44562c..f4346b531943b9d1459ef7133a0a13b95235ef26 100644 (file)
@@ -35,6 +35,13 @@ HISTORY
 INCLUDES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
+#ifdef FGFS
+#  include <simgear/compiler.h>
+#  include STL_ALGORITHM
+#else
+#  include <algorithm>
+#endif
+
 #include "FGNozzle.h"
 
 static const char *IdSrc = "$Id$";
@@ -90,7 +97,7 @@ FGNozzle::~FGNozzle()
 float FGNozzle::Calculate(float CfPc)
 {
   float pAtm = fdmex->GetAtmosphere()->GetPressure();
-  Thrust = (CfPc * AreaT + (PE - pAtm)*Area2) * nzlEff;
+  Thrust = max((float)0.0, (CfPc * AreaT + (PE - pAtm)*Area2) * nzlEff);
   vFn(1) = Thrust;
 
   return Thrust;
index d9542e1e568ebece7e32ef5d2f37724043fd9fee..72087c48c477f7108524efea13b79cad65b98667 100644 (file)
@@ -137,7 +137,7 @@ void FGTrim::TrimStats() {
     cout << "    Sub-iterations:" << endl;
     for(current_axis=0; current_axis<TrimAxes.size(); current_axis++) {
       run_sum+=TrimAxes[current_axis]->GetRunCount();
-      sprintf(out,"   %5s: %3.0f average: %5.2f  successful: %3.0f  stability: %5.2f\n",
+      snprintf(out,80,"   %5s: %3.0f average: %5.2f  successful: %3.0f  stability: %5.2f\n",
                   TrimAxes[current_axis]->GetStateName().c_str(),
                   sub_iterations[current_axis],
                   sub_iterations[current_axis]/float(total_its),
@@ -164,65 +164,64 @@ void FGTrim::ReportState(void) {
   char out[80], flap[10], gear[10];
   
   cout << endl << "  JSBSim State" << endl;
-  sprintf(out,"    Weight: %7.0f lbs.  CG: %5.1f, %5.1f, %5.1f inches\n",
+  snprintf(out,80,"    Weight: %7.0f lbs.  CG: %5.1f, %5.1f, %5.1f inches\n",
                    fdmex->GetMassBalance()->GetWeight(),
                    fdmex->GetMassBalance()->GetXYZcg(1),
                    fdmex->GetMassBalance()->GetXYZcg(2),
                    fdmex->GetMassBalance()->GetXYZcg(3));
   cout << out;             
   if( fdmex->GetFCS()->GetDfPos() <= 0.01)
-    sprintf(flap,"Up");
+    snprintf(flap,10,"Up");
   else
-    sprintf(flap,"%2.0f",fdmex->GetFCS()->GetDfPos());
+    snprintf(flap,10,"%2.0f",fdmex->GetFCS()->GetDfPos());
   if(fdmex->GetAircraft()->GetGearUp() == true)
-    sprintf(gear,"Up");
+    snprintf(gear,10,"Up");
   else
-    sprintf(gear,"Down");
-  sprintf(out, "    Flaps: %3s  Gear: %4s\n",flap,gear);
+    snprintf(gear,10,"Down");
+  snprintf(out,80, "    Flaps: %3s  Gear: %4s\n",flap,gear);
   cout << out;
-  sprintf(out, "    Speed: %4.0f KCAS  Mach: %5.2f\n",
+  snprintf(out,80, "    Speed: %4.0f KCAS  Mach: %5.2f\n",
                     fdmex->GetAuxiliary()->GetVcalibratedKTS(),
-                    fdmex->GetState()->GetParameter(FG_MACH),
-                    fdmex->GetPosition()->Geth() );
+                    fdmex->GetState()->GetParameter(FG_MACH) );
   cout << out;
-  sprintf(out, "    Altitude: %7.0f ft.  AGL Altitude: %7.0f ft.\n",
+  snprintf(out,80, "    Altitude: %7.0f ft.  AGL Altitude: %7.0f ft.\n",
                     fdmex->GetPosition()->Geth(),
                     fdmex->GetPosition()->GetDistanceAGL() );
   cout << out;
-  sprintf(out, "    Angle of Attack: %6.2f deg  Pitch Angle: %6.2f deg\n",
+  snprintf(out,80, "    Angle of Attack: %6.2f deg  Pitch Angle: %6.2f deg\n",
                     fdmex->GetState()->GetParameter(FG_ALPHA)*RADTODEG,
                     fdmex->GetRotation()->Gettht()*RADTODEG );
   cout << out;
-  sprintf(out, "    Flight Path Angle: %6.2f deg  Climb Rate: %5.0f ft/min\n",
+  snprintf(out,80, "    Flight Path Angle: %6.2f deg  Climb Rate: %5.0f ft/min\n",
                     fdmex->GetPosition()->GetGamma()*RADTODEG,
                     fdmex->GetPosition()->Gethdot()*60 );
   cout << out;                  
-  sprintf(out, "    Normal Load Factor: %4.2f g's  Pitch Rate: %5.2f deg/s\n",
+  snprintf(out,80, "    Normal Load Factor: %4.2f g's  Pitch Rate: %5.2f deg/s\n",
                     fdmex->GetAerodynamics()->GetNlf(),
                     fdmex->GetState()->GetParameter(FG_PITCHRATE)*RADTODEG );
   cout << out;
-  sprintf(out, "    Heading: %3.0f deg true  Sideslip: %5.2f deg\n",
+  snprintf(out,80, "    Heading: %3.0f deg true  Sideslip: %5.2f deg\n",
                     fdmex->GetRotation()->Getpsi()*RADTODEG,
                     fdmex->GetState()->GetParameter(FG_BETA)*RADTODEG );                  
   cout << out;
-  sprintf(out, "    Bank Angle: %5.2f deg\n",
+  snprintf(out,80, "    Bank Angle: %5.2f deg\n",
                     fdmex->GetRotation()->Getphi()*RADTODEG );
   cout << out;
-  sprintf(out, "    Elevator: %5.2f deg  Left Aileron: %5.2f deg  Rudder: %5.2f deg\n",
+  snprintf(out,80, "    Elevator: %5.2f deg  Left Aileron: %5.2f deg  Rudder: %5.2f deg\n",
                     fdmex->GetState()->GetParameter(FG_ELEVATOR_POS)*RADTODEG,
                     fdmex->GetState()->GetParameter(FG_AILERON_POS)*RADTODEG,
                     fdmex->GetState()->GetParameter(FG_RUDDER_POS)*RADTODEG );
   cout << out;                  
-  sprintf(out, "    Throttle: %5.2f%c\n",
+  snprintf(out,80, "    Throttle: %5.2f%c\n",
                     fdmex->GetFCS()->GetThrottlePos(0),'%' );
   cout << out;
   
-  sprintf(out, "    Wind Components: %5.2f kts head wind, %5.2f kts cross wind\n",
+  snprintf(out,80, "    Wind Components: %5.2f kts head wind, %5.2f kts cross wind\n",
                     fdmex->GetAuxiliary()->GetHeadWind()*jsbFPSTOKTS,
                     fdmex->GetAuxiliary()->GetCrossWind()*jsbFPSTOKTS );
   cout << out; 
   
-  sprintf(out, "    Ground Speed: %4.0f knots , Ground Track: %3.0f deg true\n",
+  snprintf(out,80, "    Ground Speed: %4.0f knots , Ground Track: %3.0f deg true\n",
                     fdmex->GetPosition()->GetVground()*jsbFPSTOKTS,
                     fdmex->GetPosition()->GetGroundTrack()*RADTODEG );
   cout << out;