CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-FGRocket::FGRocket(FGFDMExec* exec, FGConfigFile* Eng_cfg) : FGEngine(exec)
+FGRocket::FGRocket(FGFDMExec* exec, FGConfigFile* Eng_cfg, int engine_number)
+ : FGEngine(exec, engine_number)
{
string token;
Debug(0);
- EngineNumber = 0;
Type = etRocket;
Flameout = false;
} else {
PctPower = Throttle / MaxThrottle;
PC = maxPC*PctPower * (1.0 + Variance * ((double)rand()/(double)RAND_MAX - 0.5));
+ // The Cf (below) is CF from Eqn. 3-30, "Rocket Propulsion Elements", Fifth Edition,
+ // George P. Sutton. Note that the thruster function GetPowerRequired() might
+ // be better called GetResistance() or something; this function returns the
+ // nozzle exit pressure.
Cf = sqrt(kFactor*(1 - pow(Thruster->GetPowerRequired()/(PC), (SHR-1)/SHR)));
Flameout = false;
}
- return Thruster->Calculate(Cf*maxPC*PctPower*propEff);
+ return Thrust = Thruster->Calculate(Cf*maxPC*PctPower*propEff);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGRocket::GetEngineLabels(void)
+string FGRocket::GetEngineLabels(string delimeter)
{
std::ostringstream buf;
- buf << Name << "_ChamberPress[" << EngineNumber << "], "
- << Thruster->GetThrusterLabels(EngineNumber);
+ buf << Name << "_ChamberPress[" << EngineNumber << "]" << delimeter
+ << Thruster->GetThrusterLabels(EngineNumber, delimeter);
return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGRocket::GetEngineValues(void)
+string FGRocket::GetEngineValues(string delimeter)
{
std::ostringstream buf;
- buf << PC << ", " << Thruster->GetThrusterValues(EngineNumber);
+ buf << PC << delimeter << Thruster->GetThrusterValues(EngineNumber, delimeter);
return buf.str();
}