Author: Jon S. Berndt
Date started: 01/21/99
- ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) -------------
+ ------------- Copyright (C) 1999 Jon S. Berndt (jon@jsbsim.org) -------------
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#ifdef FGFS
-# include <simgear/compiler.h>
-# include STL_STRING
- SG_USING_STD(string);
-# ifdef SG_HAVE_STD_INCLUDES
-# include <vector>
-# else
-# include <vector.h>
-# endif
-#else
-# include <vector>
-# include <string>
-#endif
-
-#include <FGJSBBase.h>
-#include "FGThruster.h"
-#include <input_output/FGPropertyManager.h>
-#include <input_output/FGXMLFileRead.h>
+#include "math/FGModelFunctions.h"
+#include "input_output/FGXMLFileRead.h"
+#include "input_output/FGXMLElement.h"
+#include "models/FGFCS.h"
+#include "math/FGColumnVector3.h"
+#include <vector>
+#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#define ID_ENGINE "$Id$"
-
-using std::string;
-using std::vector;
+#define ID_ENGINE "$Id: FGEngine.h,v 1.21 2010/08/21 17:13:48 jberndt Exp $"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
namespace JSBSim {
class FGFDMExec;
-class FGState;
class FGAtmosphere;
-class FGFCS;
class FGAircraft;
class FGPropagate;
class FGPropulsion;
class FGAuxiliary;
class FGThruster;
class Element;
+class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
@endcode
<pre>
NOTES:
- Engines feed from all tanks equally.
-
+
Not all thruster types can be matched with a given engine type. See the class
documentation for engine and thruster classes.
</pre>
@author Jon S. Berndt
- @version $Id$
+ @version $Id: FGEngine.h,v 1.21 2010/08/21 17:13:48 jberndt Exp $
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGEngine : public FGJSBBase, public FGXMLFileRead
+class FGEngine : public FGModelFunctions, public FGXMLFileRead
{
public:
FGEngine(FGFDMExec* exec, Element* el, int engine_number);
virtual double getFuelFlow_gph () const {return FuelFlow_gph;}
virtual double getFuelFlow_pph () const {return FuelFlow_pph;}
- virtual double GetThrust(void) { return Thrust; }
+ virtual double GetFuelFlowRate(void) const {return FuelFlowRate;}
virtual bool GetStarved(void) { return Starved; }
virtual bool GetRunning(void) const { return Running; }
virtual bool GetCranking(void) { return Cranking; }
virtual void SetRunning(bool bb) { Running=bb; }
virtual void SetName(string name) { Name = name; }
- virtual void AddFeedTank(int tkID);
+ virtual void AddFeedTank(int tkID, int priority);
virtual void SetFuelFreeze(bool f) { FuelFreeze = f; }
virtual void SetStarter(bool s) { Starter = s; }
/** Resets the Engine parameters to the initial conditions */
void ResetToIC(void);
- /** Calculates the thrust of the engine, and other engine functions.
- @return Thrust in pounds */
- virtual double Calculate(void) {return 0.0;}
-
- /** Reduces the fuel in the active tanks by the amount required.
- This function should be called from within the
- derived class' Calculate() function before any other calculations are
- done. This base class method removes fuel from the fuel tanks as
- appropriate, and sets the starved flag if necessary. */
- virtual void ConsumeFuel(void);
-
- /** The fuel need is calculated based on power levels and flow rate for that
- power level. It is also turned from a rate into an actual amount (pounds)
- by multiplying it by the delta T and the rate.
- @return Total fuel requirement for this engine in pounds. */
- virtual double CalcFuelNeed(void);
-
- /** The oxidizer need is calculated based on power levels and flow rate for that
- power level. It is also turned from a rate into an actual amount (pounds)
- by multiplying it by the delta T and the rate.
- @return Total oxidizer requirement for this engine in pounds. */
- virtual double CalcOxidizerNeed(void);
+ /** Calculates the thrust of the engine, and other engine functions. */
+ virtual void Calculate(void) = 0;
/// Sets engine placement information
virtual void SetPlacement(FGColumnVector3& location, FGColumnVector3& orientation);
bool LoadThruster(Element *el);
FGThruster* GetThruster(void) {return Thruster;}
- virtual string GetEngineLabels(string delimeter) = 0;
- virtual string GetEngineValues(string delimeter) = 0;
+ virtual std::string GetEngineLabels(const std::string& delimiter) = 0;
+ virtual std::string GetEngineValues(const std::string& delimiter) = 0;
protected:
+ /** Reduces the fuel in the active tanks by the amount required.
+ This function should be called from within the
+ derived class' Calculate() function before any other calculations are
+ done. This base class method removes fuel from the fuel tanks as
+ appropriate, and sets the starved flag if necessary. */
+ virtual void ConsumeFuel(void);
+
+ /** The fuel need is calculated based on power levels and flow rate for that
+ power level. It is also turned from a rate into an actual amount (pounds)
+ by multiplying it by the delta T and the rate.
+ @return Total fuel requirement for this engine in pounds. */
+ virtual double CalcFuelNeed(void);
+
FGPropertyManager* PropertyManager;
- string Name;
+ std::string Name;
const int EngineNumber;
EngineType Type;
double X, Y, Z;
double EnginePitch;
double EngineYaw;
double SLFuelFlowMax;
- double SLOxiFlowMax;
double MaxThrottle;
double MinThrottle;
- double Thrust;
double Throttle;
double Mixture;
- double FuelNeed;
- double OxidizerNeed;
+ double FuelExpended;
+ double FuelFlowRate;
double PctPower;
bool Starter;
bool Starved;
double FuelFlow_gph;
double FuelFlow_pph;
+ double FuelDensity;
FGFDMExec* FDMExec;
- FGState* State;
FGAtmosphere* Atmosphere;
FGFCS* FCS;
FGPropulsion* Propulsion;
FGAuxiliary* Auxiliary;
FGThruster* Thruster;
- vector <int> SourceTanks;
+ std::vector <int> SourceTanks;
+
void Debug(int from);
};
}
-#include <FGState.h>
-#include <FGFDMExec.h>
-#include <models/FGAtmosphere.h>
-#include <models/FGFCS.h>
-#include <models/FGAircraft.h>
-#include <models/FGPropagate.h>
-#include <models/FGPropulsion.h>
-#include <models/FGAuxiliary.h>
-#include <models/propulsion/FGThruster.h>
-#include <input_output/FGXMLElement.h>
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif