#include "FGEngine.h"
#include "FGTank.h"
+namespace JSBSim {
+
static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_ENGINE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-FGEngine::FGEngine(FGFDMExec* exec) {
- FDMExec = exec;
- State = FDMExec->GetState();
- Atmosphere = FDMExec->GetAtmosphere();
- FCS = FDMExec->GetFCS();
- Propulsion = FDMExec->GetPropulsion();
- Aircraft = FDMExec->GetAircraft();
- Translation = FDMExec->GetTranslation();
- Rotation = FDMExec->GetRotation();
- Position = FDMExec->GetPosition();
- Auxiliary = FDMExec->GetAuxiliary();
- Output = FDMExec->GetOutput();
-
- Mixture = 1.0; // FIXME: get actual value\r
- Thrust = PctPower = 0.0;
- Starved = Flameout = false;
- Running = true;
-
- if (debug_lvl & 2) cout << "Instantiated: FGEngine" << endl;
- TrimMode = false;
+FGEngine::FGEngine(FGFDMExec* exec)
+ : Name(""),
+ Type(etUnknown),
+ X(0), Y(0), Z(0),
+ EnginePitch(0), EngineYaw(0),
+ SLFuelFlowMax(0), SLOxiFlowMax(0),
+ MaxThrottle(1.0), MinThrottle(0.0),
+ Thrust(0.0),
+ Throttle(0.0),
+ Mixture(1.0),
+ Magnetos(0),
+ Starter(false),
+ FuelNeed(0.0), OxidizerNeed(0.0),
+ Starved(false), Flameout(false), Running(false), Cranking(false),
+ PctPower(0.0),
+ EngineNumber(-1),
+ TrimMode(false),
+ FuelFlow_gph(0.0),
+ ManifoldPressure_inHg(0.0),
+ ExhaustGasTemp_degK(0.0),
+ CylinderHeadTemp_degK(0.0),
+ OilPressure_psi(0.0),
+ OilTemp_degK(0.0),
+ FDMExec(exec),
+ State(FDMExec->GetState()),
+ Atmosphere(FDMExec->GetAtmosphere()),
+ FCS(FDMExec->GetFCS()),
+ Propulsion(FDMExec->GetPropulsion()),
+ Aircraft(FDMExec->GetAircraft()),
+ Translation(FDMExec->GetTranslation()),
+ Rotation(FDMExec->GetRotation()),
+ Position(FDMExec->GetPosition()),
+ Auxiliary(FDMExec->GetAuxiliary()),
+ Output(FDMExec->GetOutput())
+{
+ Debug(0);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FGEngine::~FGEngine()
{
- if (debug_lvl & 2) cout << "Destroyed: FGEngine" << endl;
+ Debug(1);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// This base class method removes fuel from the fuel tanks as appropriate,
// and sets the starved flag if necessary.
-void FGEngine::ConsumeFuel(void) {
- float Fshortage, Oshortage;
+void FGEngine::ConsumeFuel(void)
+{
+ double Fshortage, Oshortage;
FGTank* Tank;
if (TrimMode) return;
-
Fshortage = Oshortage = 0.0;
for (unsigned int i=0; i<SourceTanks.size(); i++) {
Tank = Propulsion->GetTank(i);
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-float FGEngine::CalcFuelNeed(void) {
+double FGEngine::CalcFuelNeed(void) {
FuelNeed = SLFuelFlowMax*PctPower*State->Getdt()*Propulsion->GetRate();
return FuelNeed;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-float FGEngine::CalcOxidizerNeed(void) {
+double FGEngine::CalcOxidizerNeed(void) {
OxidizerNeed = SLOxiFlowMax*PctPower*State->Getdt()*Propulsion->GetRate();
return OxidizerNeed;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGEngine::SetPlacement(float x, float y, float z, float pitch, float yaw) {
+void FGEngine::SetPlacement(double x, double y, double z, double pitch, double yaw) {
X = x;
Y = y;
Z = z;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-void FGEngine::Debug(void)
+// The bitmasked value choices are as follows:
+// unset: In this case (the default) JSBSim would only print
+// out the normally expected messages, essentially echoing
+// the config files as they are read. If the environment
+// variable is not set, debug_lvl is set to 1 internally
+// 0: This requests JSBSim not to output any messages
+// whatsoever.
+// 1: This value explicity requests the normal JSBSim
+// startup messages
+// 2: This value asks for a message to be printed out when
+// a class is instantiated
+// 4: When this value is set, a message is displayed when a
+// FGModel object executes its Run() method
+// 8: When this value is set, various runtime state variables
+// are printed out periodically
+// 16: When set various parameters are sanity checked and
+// a message is printed out when they go out of bounds
+
+void FGEngine::Debug(int from)
{
- //TODO: Add your source code here
-}
+ if (debug_lvl <= 0) return;
+
+ if (debug_lvl & 1) { // Standard console startup message output
+ if (from == 0) { // Constructor
+ }
+ }
+ if (debug_lvl & 2 ) { // Instantiation/Destruction notification
+ if (from == 0) cout << "Instantiated: FGEngine" << endl;
+ if (from == 1) cout << "Destroyed: FGEngine" << endl;
+ }
+ if (debug_lvl & 4 ) { // Run() method entry print for FGModel-derived objects
+ }
+ if (debug_lvl & 8 ) { // Runtime state variables
+ }
+ if (debug_lvl & 16) { // Sanity checking
+ }
+ if (debug_lvl & 64) {
+ if (from == 0) { // Constructor
+ cout << IdSrc << endl;
+ cout << IdHdr << endl;
+ }
+ }
+}
+}