@see FGEngine
@see FGTank
@see FGThruster
+ @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGPropulsion.h?rev=HEAD&content-type=text/vnd.viewcvs-markup">
+ Header File </a>
+ @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGPropulsion.cpp?rev=HEAD&content-type=text/vnd.viewcvs-markup">
+ Source File </a>
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGPropulsion : public FGModel {
+class FGPropulsion : public FGModel
+{
public:
+ /// Constructor
FGPropulsion(FGFDMExec*);
+ /// Destructor
~FGPropulsion();
/** Executes the propulsion model.
bool Load(FGConfigFile* AC_cfg);
/// Retrieves the number of engines defined for the aircraft.
- inline unsigned int GetNumEngines(void) {return Engines.size();}
+ inline unsigned int GetNumEngines(void) const {return Engines.size();}
/** Retrieves an engine object pointer from the list of engines.
@param index the engine index within the vector container
if (index <= Engines.size()-1) return Engines[index];
else return 0L; }
+ // Retrieves the number of tanks defined for the aircraft.
+ inline unsigned int GetNumTanks(void) const {return Tanks.size();}
+
/** Retrieves a tank object pointer from the list of tanks.
@param index the tank index within the vector container
@return the address of the specific tank, or zero if no such tank is
else return 0L; }
/** Returns the number of fuel tanks currently actively supplying fuel */
- inline int GetnumSelectedFuelTanks(void) {return numSelectedFuelTanks;}
+ inline int GetnumSelectedFuelTanks(void) const {return numSelectedFuelTanks;}
/** Returns the number of oxidizer tanks currently actively supplying oxidizer */
- inline int GetnumSelectedOxiTanks(void) {return numSelectedOxiTanks;}
+ inline int GetnumSelectedOxiTanks(void) const {return numSelectedOxiTanks;}
/** Loops the engines/thrusters until thrust output steady (used for trimming) */
bool GetSteadyState(void);
string GetPropulsionStrings(void);
string GetPropulsionValues(void);
- inline FGColumnVector3& GetForces(void) {return *Forces; }
- inline double GetForces(int n) { return (*Forces)(n);}
- inline FGColumnVector3& GetMoments(void) {return *Moments;}
- inline double GetMoments(int n) {return (*Moments)(n);}
+ inline FGColumnVector3& GetForces(void) {return vForces; }
+ inline double GetForces(int n) const { return vForces(n);}
+ inline FGColumnVector3& GetMoments(void) {return vMoments;}
+ inline double GetMoments(int n) const {return vMoments(n);}
- FGColumnVector3& GetTanksCG(void);
+ FGColumnVector3& GetTanksMoment(void);
double GetTanksWeight(void);
double GetTanksIxx(const FGColumnVector3& vXYZcg);
double GetTanksIzz(const FGColumnVector3& vXYZcg);
double GetTanksIxz(const FGColumnVector3& vXYZcg);
double GetTanksIxy(const FGColumnVector3& vXYZcg);
-
+
+ void bind();
+ void unbind();
+
private:
vector <FGEngine*> Engines;
vector <FGTank*> Tanks;
unsigned int numTanks;
unsigned int numThrusters;
double dt;
- FGColumnVector3 *Forces;
- FGColumnVector3 *Moments;
+ FGColumnVector3 vForces;
+ FGColumnVector3 vMoments;
FGColumnVector3 vXYZtank;
- void Debug(void);
+ void Debug(int from);
};
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%