]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/models/propulsion/FGPropeller.h
Better fix for a compilation problem with MSVC 2012
[flightgear.git] / src / FDM / JSBSim / models / propulsion / FGPropeller.h
index 500e6798599bf2372f7eedd2f052887525a26f0f..1b353d2cba81a1437cfe90a5f97a3d387c124433 100644 (file)
@@ -45,7 +45,7 @@ INCLUDES
 DEFINITIONS
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-#define ID_PROPELLER "$Id$"
+#define ID_PROPELLER "$Id: FGPropeller.h,v 1.20 2011/10/31 14:54:41 bcoconni Exp $"
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 FORWARD DECLARATIONS
@@ -62,6 +62,7 @@ CLASS DOCUMENTATION
 
 <h3>Configuration File Format:</h3>
 @code
+<sense> {1 | -1} </sense> 
 <propeller name="{string}">
   <ixx> {number} </ixx>
   <diameter unit="IN"> {number} </diameter>
@@ -71,8 +72,8 @@ CLASS DOCUMENTATION
   <maxpitch> {number} </maxpitch>
   <minrpm> {number} </minrpm>
   <maxrpm> {number} </maxrpm>
+  <constspeed> {number} </constspeed>
   <reversepitch> {number} </reversepitch>
-  <sense> {1 | -1} </sense>
   <p_factor> {number} </p_factor>
   <ct_factor> {number} </ct_factor>
   <cp_factor> {number} </cp_factor>
@@ -89,6 +90,19 @@ CLASS DOCUMENTATION
     </tableData>
   </table>
 
+  <table name="CT_MACH" type="internal">
+    <tableData>
+      {numbers}
+    </tableData>
+  </table>
+
+  <table name="CP_MACH" type="internal">
+    <tableData>
+      {numbers}
+    </tableData>
+  </table>
+
+
 </propeller>
 @endcode
 
@@ -102,16 +116,21 @@ CLASS DOCUMENTATION
     \<maxpitch>      - Maximum blade pitch angle.
     \<minrpm>        - Minimum rpm target for constant speed propeller.
     \<maxrpm>        - Maximum rpm target for constant speed propeller.
+    \<constspeed>    - 1 = constant speed mode, 0 = manual pitch mode. 
     \<reversepitch>  - Blade pitch angle for reverse.
     \<sense>         - Direction of rotation (1=clockwise as viewed from cockpit,
-                        -1=anti-clockwise as viewed from cockpit).
+                        -1=anti-clockwise as viewed from cockpit). Sense is
+                       specified in the parent tag of the propeller.
     \<p_factor>      - P factor.
     \<ct_factor>     - A multiplier for the coefficients of thrust.
     \<cp_factor>     - A multiplier for the coefficients of power.
 </pre>
 
     Two tables are needed. One for coefficient of thrust (Ct) and one for
-    coefficient of power (Cp).  
+    coefficient of power (Cp).
+
+    Two tables are optional. They apply a factor to Ct and Cp based on the
+    helical tip Mach.  
     <br>
 
     Several references were helpful, here:<ul>
@@ -123,7 +142,7 @@ CLASS DOCUMENTATION
     <li>Various NACA Technical Notes and Reports</li>
     </ul>
     @author Jon S. Berndt
-    @version $Id$
+    @version $Id: FGPropeller.h,v 1.20 2011/10/31 14:54:41 bcoconni Exp $
     @see FGEngine
     @see FGThruster
 */
@@ -152,8 +171,11 @@ public:
       @param rpm the rotational velocity of the propeller */
   void SetRPM(double rpm) {RPM = rpm;}
 
+  /** Sets the Revolutions Per Minute for the propeller using the engine gear ratio **/
+  void SetEngineRPM(double rpm) {RPM = rpm/GearRatio;}
+
   /// Returns true of this propeller is variable pitch
-  bool IsVPitch(void) {return MaxPitch != MinPitch;}
+  bool IsVPitch(void) const {return MaxPitch != MinPitch;}
 
   /** This commands the pitch of the blade to change to the value supplied.
       This call is meant to be issued either from the cockpit or by the flight
@@ -169,6 +191,9 @@ public:
   /// Sets the P-Factor constant
   void SetPFactor(double pf) {P_Factor = pf;}
 
+  /// Sets propeller into constant speed mode, or manual pitch mode
+  void SetConstantSpeed(int mode) {ConstantSpeed = mode;} 
+
   /// Sets coefficient of thrust multiplier
   void SetCtFactor(double ctf) {CtFactor = ctf;}
 
@@ -182,30 +207,38 @@ public:
   void SetSense(double s) { Sense = s;}
 
   /// Retrieves the pitch of the propeller in degrees.
-  double GetPitch(void)         { return Pitch;         }
+  double GetPitch(void) const     { return Pitch;         }
 
   /// Retrieves the RPMs of the propeller
-  double GetRPM(void)     const { return RPM;           } 
+  double GetRPM(void) const       { return RPM;           } 
+
+  /// Calculates the RPMs of the engine based on gear ratio
+  double GetEngineRPM(void) const { return RPM * GearRatio;  } 
 
   /// Retrieves the propeller moment of inertia
-  double GetIxx(void)           { return Ixx;           }
+  double GetIxx(void) const       { return Ixx;           }
 
   /// Retrieves the coefficient of thrust multiplier
-  double GetCtFactor(void)      { return CtFactor;      }
+  double GetCtFactor(void) const  { return CtFactor;      }
 
   /// Retrieves the coefficient of power multiplier
-  double GetCpFactor(void)      { return CpFactor;      }
+  double GetCpFactor(void) const  { return CpFactor;      }
 
   /// Retrieves the propeller diameter
-  double GetDiameter(void)      { return Diameter;      }
+  double GetDiameter(void) const  { return Diameter;      }
 
   /// Retrieves propeller thrust table
   FGTable* GetCThrustTable(void) const { return cThrust;}
   /// Retrieves propeller power table
   FGTable* GetCPowerTable(void)  const { return cPower; }
 
+  /// Retrieves propeller thrust Mach effects factor
+  FGTable* GetCtMachTable(void) const { return CtMach; }
+  /// Retrieves propeller power Mach effects factor
+  FGTable* GetCpMachTable(void) const { return CpMach; }
+
   /// Retrieves the Torque in foot-pounds (Don't you love the English system?)
-  double GetTorque(void)        { return vTorque(eX);    }
+  double GetTorque(void) const  { return vTorque(eX); }
 
   /** Retrieves the power required (or "absorbed") by the propeller -
       i.e. the power required to keep spinning the propeller at the current
@@ -221,18 +254,22 @@ public:
       accelerate the prop. It could be negative, dictating that the propeller
       would be slowed.
       @return the thrust in pounds */
-  double Calculate(double PowerAvailable);
-  FGColumnVector3 GetPFactor(void);
-  string GetThrusterLabels(int id, string delimeter);
-  string GetThrusterValues(int id, string delimeter);
+  double Calculate(double EnginePower);
+  FGColumnVector3 GetPFactor(void) const;
+  string GetThrusterLabels(int id, const string& delimeter);
+  string GetThrusterValues(int id, const string& delimeter);
 
   void   SetReverseCoef (double c) { Reverse_coef = c; }
-  double GetReverseCoef (void) { return Reverse_coef; }
+  double GetReverseCoef (void) const { return Reverse_coef; }
   void   SetReverse (bool r) { Reversed = r; }
-  bool   GetReverse (void) { return Reversed; }
+  bool   GetReverse (void) const { return Reversed; }
   void   SetFeather (bool f) { Feathered = f; }
-  bool   GetFeather (void) { return Feathered; }
+  bool   GetFeather (void) const { return Feathered; }
   double GetThrustCoefficient(void) const {return ThrustCoeff;}
+  double GetHelicalTipMach(void) const {return HelicalTipMach;}
+  int    GetConstantSpeed(void) const {return ConstantSpeed;}
+  void   SetInducedVelocity(double Vi) {Vinduced = Vi;}
+  double GetInducedVelocity(void) const {return Vinduced;}
 
 private:
   int   numBlades;
@@ -251,14 +288,19 @@ private:
   double ExcessTorque;
   double D4;
   double D5;
+  double HelicalTipMach;
+  double Vinduced;
   FGColumnVector3 vTorque;
   FGTable *cThrust;
   FGTable *cPower;
+  FGTable *CtMach;
+  FGTable *CpMach;
   double CtFactor;
   double CpFactor;
+  int    ConstantSpeed;
   void Debug(int from);
   double ReversePitch; // Pitch, when fully reversed
-  bool   Reversed;              // true, when propeller is reversed
+  bool   Reversed;     // true, when propeller is reversed
   double Reverse_coef; // 0 - 1 defines AdvancePitch (0=MIN_PITCH 1=REVERSE_PITCH)
   bool   Feathered;    // true, if feather command
 };