if (Stalled) phase = tpStall;
if (Seized) phase = tpSeize;
+ double CT = 0.0;
switch (phase) {
case tpOff: Thrust = Off(); break;
- case tpRun: Thrust = Run(); break;
+ case tpRun: Thrust = Run(CT); break;
case tpSpinUp: Thrust = SpinUp(); break;
case tpStart: Thrust = Start(); break;
case tpStall: Thrust = Stall(); break;
case tpSeize: Thrust = Seize(); break;
- case tpTrim: Thrust = Trim(); break;
+ case tpTrim: Thrust = Trim(CT); break;
default: Thrust = Off();
}
+ Thruster->SetThrustCoefficient(CT);
+
return Thruster->Calculate(Thrust);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-double FGTurbine::Run(void)
+double FGTurbine::Run(double &TC)
{
double idlethrust, milthrust, thrust;
double N2norm; // 0.0 = idle N2, 1.0 = maximum N2
- idlethrust = MilThrust * ThrustTables[0]->TotalValue();
- milthrust = (MilThrust - idlethrust) * ThrustTables[1]->TotalValue();
+
+ idlethrust = ThrustTables[0]->TotalValue();
+ milthrust = (1.0 - idlethrust) * ThrustTables[1]->TotalValue();
Running = true;
Starter = false;
N2 = Seek(&N2, IdleN2 + ThrottlePos * N2_factor, delay, delay * 3.0);
N1 = Seek(&N1, IdleN1 + ThrottlePos * N1_factor, delay, delay * 2.4);
N2norm = (N2 - IdleN2) / N2_factor;
- thrust = idlethrust + (milthrust * N2norm * N2norm);
+ TC = idlethrust + (milthrust * N2norm * N2norm);
+ thrust = TC * MilThrust;
EGT_degC = TAT + 363.1 + ThrottlePos * 357.1;
OilPressure_psi = N2 * 0.62;
OilTemp_degK = Seek(&OilTemp_degK, 366.0, 1.2, 0.1);
FuelFlow_pph = Seek(&FuelFlow_pph, thrust * correctedTSFC, 1000.0, 100000);
if (FuelFlow_pph < IdleFF) FuelFlow_pph = IdleFF;
NozzlePosition = Seek(&NozzlePosition, 1.0 - N2norm, 0.8, 0.8);
- thrust = thrust * (1.0 - BleedDemand);
- EPR = 1.0 + thrust/MilThrust;
+ TC = TC * (1.0 - BleedDemand);
+ EPR = 1.0 + TC;
}
if (AugMethod == 1) {
}
if ((Augmented == 1) && Augmentation && (AugMethod < 2)) {
- thrust = MaxThrust * ThrustTables[2]->TotalValue();
+ TC = ThrustTables[2]->TotalValue();
+ thrust = TC * MaxThrust;
FuelFlow_pph = Seek(&FuelFlow_pph, thrust * ATSFC, 5000.0, 10000.0);
NozzlePosition = Seek(&NozzlePosition, 1.0, 0.8, 0.8);
}
if (AugMethod == 2) {
if (AugmentCmd > 0.0) {
Augmentation = true;
- double tdiff = (MaxThrust * ThrustTables[2]->TotalValue()) - thrust;
- thrust += (tdiff * AugmentCmd);
+ double tdiff = ThrustTables[2]->TotalValue() - TC;
+ TC += (tdiff * AugmentCmd);
+ thrust = TC * MaxThrust;
FuelFlow_pph = Seek(&FuelFlow_pph, thrust * ATSFC, 5000.0, 10000.0);
NozzlePosition = Seek(&NozzlePosition, 1.0, 0.8, 0.8);
} else {
}
}
- if ((Injected == 1) && Injection)
+ if ((Injected == 1) && Injection) {
+ TC = TC * ThrustTables[3]->TotalValue();
thrust = thrust * ThrustTables[3]->TotalValue();
+ }
ConsumeFuel();
if (Cutoff) phase = tpOff;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-double FGTurbine::Trim(void)
+double FGTurbine::Trim(double &TC)
{
double idlethrust, milthrust, thrust, tdiff;
- idlethrust = MilThrust * ThrustTables[0]->TotalValue();
- milthrust = (MilThrust - idlethrust) * ThrustTables[1]->TotalValue();
- thrust = (idlethrust + (milthrust * ThrottlePos * ThrottlePos)) * (1.0 - BleedDemand);
+ idlethrust = ThrustTables[0]->TotalValue();;
+ milthrust = (1.0 - TC) * ThrustTables[1]->TotalValue();
+ TC = (idlethrust + (milthrust * ThrottlePos * ThrottlePos))
+ * (1.0 - BleedDemand);
if (AugmentCmd > 0.0) {
- tdiff = (MaxThrust * ThrustTables[2]->TotalValue()) - thrust;
- thrust += (tdiff * AugmentCmd);
- }
+ tdiff = ThrustTables[2]->TotalValue() - TC;
+ TC += (tdiff * AugmentCmd);
+ thrust = TC * MaxThrust;
+
+ } else
+ thrust = TC * MilThrust;
+
return thrust;
}