]> git.mxchange.org Git - flightgear.git/commitdiff
More JSBSim updates.
authorcurt <curt>
Fri, 6 Apr 2001 22:59:31 +0000 (22:59 +0000)
committercurt <curt>
Fri, 6 Apr 2001 22:59:31 +0000 (22:59 +0000)
12 files changed:
src/FDM/JSBSim/FGAircraft.cpp
src/FDM/JSBSim/FGAircraft.h
src/FDM/JSBSim/FGControls.cpp
src/FDM/JSBSim/FGControls.h
src/FDM/JSBSim/FGDefs.h
src/FDM/JSBSim/FGEngine.h
src/FDM/JSBSim/FGOutput.cpp
src/FDM/JSBSim/FGPropulsion.cpp
src/FDM/JSBSim/FGRocket.cpp
src/FDM/JSBSim/FGRocket.h
src/FDM/JSBSim/FGState.cpp
src/FDM/JSBSim/FGThruster.h

index 1ff7e595147549cf3ce22a7b316d42ed607f8484..08d8b1be2b73c73c27b8eee20e498bc25e6f72d9 100644 (file)
@@ -613,6 +613,10 @@ void FGAircraft::ReadOutput(FGConfigFile* AC_cfg) {
       *AC_cfg >> parameter;
       if (parameter == "ON") subsystems += ssFCS;
     }
+    if (parameter == "PROPULSION") {
+      *AC_cfg >> parameter;
+      if (parameter == "ON") subsystems += ssPropulsion;
+    }
   }
 
   Output->SetSubsystems(subsystems);
index db1d62d7c62eae3598e503856becc1a65e681c2d..524eb0f8b2bbf0f99788b8d5b761720c7a04a3a9 100644 (file)
@@ -196,7 +196,8 @@ public:
     /** Subsystem: Coefficients (= 256)      */ ssCoefficients    = 256,
     /** Subsystem: Position (= 512)          */ ssPosition        = 512,
     /** Subsystem: Ground Reactions (= 1024) */ ssGroundReactions = 1024,
-    /** Subsystem: Ground Reactions (= 2048) */ ssFCS             = 2048
+    /** Subsystem: FCS (= 2048)              */ ssFCS             = 2048,
+    /** Subsystem: Propulsion (= 4096)       */ ssPropulsion      = 4096
   } subsystems;
 
 private:
index 2814fa9b0bb09f3976f2f80353acc48457e83ddb..f35d82753a8a614fcde779dbb9a6e293763f2ab1 100644 (file)
@@ -53,9 +53,8 @@ FGControls::~FGControls() {
 
 
 // $Log$
-// Revision 1.24  2001/04/05 19:14:37  curt
-// Synced with latest JSBSim cvs.
-// reinit fix from Norman.
+// Revision 1.25  2001/04/06 20:59:31  curt
+// More JSBSim updates.
 //
 // Revision 1.7  2001/03/22 14:10:24  jberndt
 // Fixed ID comment
index f14da400be56353be52260f4f6f28941864f23f9..3212f9839f4fbea86f4b444407ea1f65af9f106b 100644 (file)
@@ -178,9 +178,8 @@ extern FGControls controls;
 
 
 // $Log$
-// Revision 1.23  2001/04/05 19:14:37  curt
-// Synced with latest JSBSim cvs.
-// reinit fix from Norman.
+// Revision 1.24  2001/04/06 20:59:31  curt
+// More JSBSim updates.
 //
 // Revision 1.10  2001/03/22 14:10:24  jberndt
 // Fixed ID comment
index 076eedb7f43959b0ced3ea2d8a34ff4444d3cee6..30c5d5bbba90f956178935bf4a71828ef0b57b2b 100644 (file)
@@ -97,7 +97,8 @@ enum eParam {
   FG_PITCH_TRIM_CMD,
   FG_LEFT_BRAKE_CMD,
   FG_CENTER_BRAKE_CMD,
-  FG_RIGHT_BRAKE_CMD
+  FG_RIGHT_BRAKE_CMD,
+  FG_SET_LOGGING
 };
 
 enum eAction {
index fb23f9751c2e5d5287a50da7de5afd4e3d5cb91f..becf4a3d8bdd5282be9a35a2da986680540cbffd 100644 (file)
@@ -108,7 +108,7 @@ public:
   FGEngine(FGFDMExec* exec);
   virtual ~FGEngine();
 
-  enum EngineType {etUnknown, etRocket, etPiston, etTurboProp, etTurboJet};
+  enum EngineType {etUnknown, etRocket, etPiston, etTurboProp, etTurboJet, etTurboShaft};
 
   virtual float  GetThrottleMin(void) { return MinThrottle; }
   virtual float  GetThrottleMax(void) { return MaxThrottle; }
index 21d95e9d5e7643ebfa0de8e738f20b202268a57c..cf1afb5b9f0aa71f2e205b5b9614b953e876c202 100644 (file)
@@ -199,6 +199,10 @@ void FGOutput::DelimitedOutput(void)
       cout << ", ";
       cout << Aircraft->GetGroundReactionStrings();
     }
+    if (SubSystems & FGAircraft::ssPropulsion) {
+      cout << ", ";
+      cout << Propulsion->GetPropulsionStrings();
+    }
 
     cout << endl;
     dFirstPass = false;
@@ -268,6 +272,11 @@ void FGOutput::DelimitedOutput(void)
     cout << ", ";
     cout << Aircraft->GetGroundReactionValues();
   }
+  if (SubSystems & FGAircraft::ssPropulsion) {
+    cout << ", ";
+    cout << Propulsion->GetPropulsionValues();
+  }
+
   cout << endl;
 }
 
@@ -346,6 +355,10 @@ void FGOutput::DelimitedOutput(string fname)
       datafile << ", ";
       datafile << FCS->GetComponentStrings();
     }
+    if (SubSystems & FGAircraft::ssPropulsion) {
+      datafile << ", ";
+      datafile << Propulsion->GetPropulsionStrings();
+    }
     datafile << endl;
     sFirstPass = false;
   }
@@ -418,6 +431,10 @@ void FGOutput::DelimitedOutput(string fname)
     datafile << ", ";
     datafile << FCS->GetComponentValues();
   }
+  if (SubSystems & FGAircraft::ssPropulsion) {
+    datafile << ", ";
+    datafile << Propulsion->GetPropulsionValues();
+  }
   datafile << endl;
   datafile.flush();
 }
index 68335b4a6cfea1dae6bbebd8f586e6bd796d5122..555887df1b0167ac4f5accfcfc4247b34b576c74 100644 (file)
@@ -295,29 +295,40 @@ string FGPropulsion::GetPropulsionStrings(void)
       PropulsionStrings += ", ";
       firstime = false;
     }
-/*
-    switch(Engines[i].GetType()) {
-    case etPiston:
-      PropulsionStrings += (Engines[i].GetName() + "_PwrAvail, ");
+
+    switch(Engines[i]->GetType()) {
+    case FGEngine::etPiston:
+      PropulsionStrings += (Engines[i]->GetName() + "_PwrAvail");
+      break;
+    case FGEngine::etRocket:
+      PropulsionStrings += (Engines[i]->GetName() + "_ChamberPress");
       break;
-    case etRocket:
+    case FGEngine::etTurboJet:
+    case FGEngine::etTurboProp:
+    case FGEngine::etTurboShaft:
       break;
-    case etTurboJet:
-    case etTurboProp:
-    case etTurboShaft:
+    default:
+      PropulsionStrings += "INVALID ENGINE TYPE";
       break;
     }
 
-    switch(Thrusters[i].GetType()) {
-    case ttNozzle:
-      PropulsionStrings += (Thrusters[i].GetName() + "_Thrust, ");
+    PropulsionStrings += ", ";
+
+    switch(Thrusters[i]->GetType()) {
+    case FGThruster::ttNozzle:
+      PropulsionStrings += (Thrusters[i]->GetName() + "_Thrust");
       break;
-    case ttRotor:
+    case FGThruster::ttRotor:
       break;
-    case ttPropeller:
+    case FGThruster::ttPropeller:
+      PropulsionStrings += (Thrusters[i]->GetName() + "_Torque, ");
+      PropulsionStrings += (Thrusters[i]->GetName() + "_Thrust, ");
+      PropulsionStrings += (Thrusters[i]->GetName() + "_RPM");
       break;
-    }
-*/    
+    default:
+      PropulsionStrings += "INVALID THRUSTER TYPE";
+      break;
+    }    
   }
 
   return PropulsionStrings;
@@ -336,29 +347,34 @@ string FGPropulsion::GetPropulsionValues(void)
       PropulsionValues += ", ";
       firstime = false;
     }
-/*
-    switch(Engines[i].GetType()) {
-    case etPiston:
-      PropulsionValues += (string(gcvt(Thrusters[i].GetPowerAvailable(), 10, buff)) + ", ");
+
+    switch(Engines[i]->GetType()) {
+    case FGEngine::etPiston:
+      PropulsionValues += (string(gcvt(((FGRocket*)Engines[i])->GetPowerAvailable(), 10, buff)));
       break;
-    case etRocket:
+    case FGEngine::etRocket:
+      PropulsionValues += (string(gcvt(((FGRocket*)Engines[i])->GetChamberPressure(), 10, buff)));
       break;
-    case etTurboJet:
-    case etTurboProp:
-    case etTurboShaft:
+    case FGEngine::etTurboJet:
+    case FGEngine::etTurboProp:
+    case FGEngine::etTurboShaft:
       break;
     }
 
-    switch(Thrusters[i].GetType()) {
-    case ttNozzle:
-      PropulsionValues += (string(gcvt(Thrusters[i].GetThrust(), 10, buff)) + ", ");
+    PropulsionValues += ", ";
+
+    switch(Thrusters[i]->GetType()) {
+    case FGThruster::ttNozzle:
+      PropulsionValues += (string(gcvt(((FGNozzle*)Thrusters[i])->GetThrust(), 10, buff)));
       break;
-    case ttRotor:
+    case FGThruster::ttRotor:
       break;
-    case ttPropeller:
+    case FGThruster::ttPropeller:
+      PropulsionValues += (string(gcvt(((FGPropeller*)Thrusters[i])->GetTorque(), 10, buff)) + ", ");
+      PropulsionValues += (string(gcvt(((FGPropeller*)Thrusters[i])->GetThrust(), 10, buff)) + ", ");
+      PropulsionValues += (string(gcvt(((FGPropeller*)Thrusters[i])->GetRPM(), 10, buff)));
       break;
     }
-*/
   }
 
   return PropulsionValues;
index 3b38c0d495a0b55d9b0da6ef0253f7c0128a0fc5..0befe8c775e1918db29ea6dcbf79a01497a07bc5 100644 (file)
@@ -88,6 +88,7 @@ FGRocket::FGRocket(FGFDMExec* exec, FGConfigFile* Eng_cfg) : FGEngine(exec)
   }
 
   EngineNumber = 0;
+  Type = etRocket;
 
   kFactor = (2.0*SHR*SHR/(SHR-1.0))*pow(2.0/(SHR+1), (SHR+1)/(SHR-1));
 
@@ -107,7 +108,6 @@ float FGRocket::Calculate(float pe)
 {
   float lastThrust;
   float Cf;
-  float chamberPress;
 
   ConsumeFuel();
 
@@ -119,8 +119,8 @@ float FGRocket::Calculate(float pe)
     Flameout = true;
   } else {
     PctPower = Throttle / MaxThrottle;
-    chamberPress = maxPC*PctPower * (1.0 + Variance * ((float)rand()/(float)RAND_MAX - 0.5));
-    Cf = sqrt(kFactor*(1 - pow(pe/(chamberPress), (SHR-1)/SHR)));
+    PC = maxPC*PctPower * (1.0 + Variance * ((float)rand()/(float)RAND_MAX - 0.5));
+    Cf = sqrt(kFactor*(1 - pow(pe/(PC), (SHR-1)/SHR)));
     Flameout = false;
   }
 
index c99446c55e35864c3c20a33e1eb2b356405b6c98..db4c2700fac3c550e3bc7ec47d128407fd5e15f5 100644 (file)
@@ -117,6 +117,10 @@ public:
       @param pe nozzle exit pressure
       @return thrust coefficient times chamber pressure */
   float Calculate(float pe);
+  
+  /** Gets the chamber pressure.
+      @return chamber pressure in psf. */
+  float GetChamberPressure(void) {return PC;}
 
 private:
   float SHR;
@@ -124,6 +128,7 @@ private:
   float propEff;
   float kFactor;
   float Variance;
+  float PC;
   void Debug(void);
 };
 
index f4b4f2e6b5ef61f1d531a758e2ea568565b34273..4d930ece693541a43f9ff3456b3e6f20c06cc4a8 100644 (file)
@@ -134,6 +134,7 @@ FGState::FGState(FGFDMExec* fdex) : mTb2l(3,3),
   RegisterVariable(FG_LEFT_BRAKE_CMD, " left_brake_cmd " );
   RegisterVariable(FG_RIGHT_BRAKE_CMD," right_brake_cmd ");
   RegisterVariable(FG_CENTER_BRAKE_CMD," center_brake_cmd ");
+  RegisterVariable(FG_SET_LOGGING,    " data_logging "   );
 
   if (debug_lvl & 2) cout << "Instantiated: FGState" << endl;
 }
@@ -300,6 +301,12 @@ void FGState::SetParameter(eParam val_idx, float val) {
     FDMExec->GetFCS()->SetRBrake(val);
     break;
 
+  case FG_SET_LOGGING:
+    if      (val < -0.01) FDMExec->GetOutput()->Disable();
+    else if (val >  0.01) FDMExec->GetOutput()->Enable();
+    else                  FDMExec->GetOutput()->Toggle();
+    break;
+
   default:
     cerr << "Parameter '" << val_idx << "' (" << paramdef[val_idx] << ") not handled" << endl;
   }
index fc9389c95e0d39abe6e46d3b4024bc31a524b1d8..723a09fc68dcd10137ab7ba32512a425a1d04716 100644 (file)
@@ -57,15 +57,18 @@ public:
   FGThruster(FGFDMExec *FDMExec);
   virtual ~FGThruster();
 
-  enum Type {ttNozzle, ttRotor, ttPropeller};
+  enum eType {ttNozzle, ttRotor, ttPropeller};
 
   virtual float Calculate(float) {return 0.0;}
   void SetName(string name) {Name = name;}
   virtual float GetPowerRequired(void) {return 0.0;}
   virtual void SetdeltaT(float dt) {deltaT = dt;}
   float GetThrust(void) {return Thrust;}
+  eType GetType(void) {return Type;}
+  string GetName(void) {return Name;}
 
 protected:
+  eType Type;
   string Name;
   float Thrust;
   float PowerRequired;