bool FGPropulsion::Run(void) { unsigned int i; if (FGModel::Run()) return true; if (FDMExec->Holding()) return false; RunPreFunctions(); double dt = FDMExec->GetDeltaT(); vForces.InitMatrix(); vMoments.InitMatrix(); for (i=0; i<numEngines; i++) { Engines[i]->Calculate(); vForces += Engines[i]->GetBodyForces(); // sum body frame forces vMoments += Engines[i]->GetMoments(); // sum body frame moments } TotalFuelQuantity = 0.0; for (i=0; i<numTanks; i++) { Tanks[i]->Calculate( dt * rate ); if (Tanks[i]->GetType() == FGTank::ttFUEL) { TotalFuelQuantity += Tanks[i]->GetContents(); } } if (refuel) DoRefuel( dt * rate ); if (dump) DumpFuel( dt * rate ); RunPostFunctions(); return false; }
bool FGPropulsion::Run(bool Holding) { unsigned int i; if (FGModel::Run(Holding)) return true; if (Holding) return false; RunPreFunctions(); vForces.InitMatrix(); vMoments.InitMatrix(); for (i=0; i<numEngines; i++) { Engines[i]->Calculate(); ConsumeFuel(Engines[i]); vForces += Engines[i]->GetBodyForces(); // sum body frame forces vMoments += Engines[i]->GetMoments(); // sum body frame moments } TotalFuelQuantity = 0.0; for (i=0; i<numTanks; i++) { Tanks[i]->Calculate( in.TotalDeltaT, in.TAT_c); if (Tanks[i]->GetType() == FGTank::ttFUEL) { TotalFuelQuantity += Tanks[i]->GetContents(); } } if (refuel) DoRefuel( in.TotalDeltaT ); if (dump) DumpFuel( in.TotalDeltaT ); RunPostFunctions(); return false; }