Skip to content

Commit 0855181

Browse files
committed
Some minor adjustments
1 parent ec8217c commit 0855181

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,7 @@ public float LoadPercent
926926
float tempEff = 0;
927927
if (GearBox.CurrentGear != null)
928928
{
929-
tempEff = (((GearBox.CurrentGear.TractiveForceatMaxSpeedN * GearBox.CurrentGear.MaxSpeedMpS / Locomotive.DieselEngines.NumOfActiveEngines) / (DieselTorqueTab[MaxRPM] * MaxRPM / 9.54f)) * 100.0f);
929+
tempEff = ((GearBox.CurrentGear.TractiveForceatMaxSpeedN * GearBox.CurrentGear.MaxSpeedMpS / (DieselTorqueTab[MaxRPM] * MaxRPM / 9.54f)) * 100.0f);
930930
}
931931

932932
return tempEff;
@@ -1441,24 +1441,37 @@ public void Update(float elapsedClockSeconds)
14411441
CurrentDieselOutputPowerW = (RawRpM - IdleRPM) / (MaxRPM - IdleRPM) * MaximumDieselPowerW * (1 - Locomotive.PowerReduction);
14421442
}
14431443

1444-
// For geared locomotives the engine RpM can be higher then the throttle demanded rpm, and this gives an inflated value of power
1445-
// so set output power based upon throttle demanded power
1446-
if (HasGearBox && Locomotive.DieselTransmissionType == MSTSDieselLocomotive.DieselTransmissionTypes.Mechanic)
1447-
{
1448-
// Power(Watts) = Torque(Nm) * rpm / 9.54.
1449-
CurrentDieselOutputPowerW = GearBox.torqueCurveMultiplier * DieselTorqueTab[RealRPM] * RealRPM / 9.54f;
1450-
CurrentDieselOutputPowerW = MathHelper.Clamp(CurrentDieselOutputPowerW, 0, MaximumDieselPowerW); // Clamp throttle setting within bounds
1451-
}
1452-
14531444
if (Locomotive.DieselEngines.NumOfActiveEngines > 0)
14541445
{
14551446

1456-
CurrentDieselOutputPowerW = (CurrentDieselOutputPowerW - Locomotive.DieselPowerSupply.ElectricTrainSupplyPowerW) / Locomotive.DieselEngines.NumOfActiveEngines;
1447+
CurrentDieselOutputPowerW -= Locomotive.DieselPowerSupply.ElectricTrainSupplyPowerW / Locomotive.DieselEngines.NumOfActiveEngines;
14571448
CurrentDieselOutputPowerW = CurrentDieselOutputPowerW < 0f ? 0f : CurrentDieselOutputPowerW;
14581449
}
14591450

14601451
CurrentDieselOutputPowerW = MathHelper.Clamp(CurrentDieselOutputPowerW, 0.0f, CurrentDieselOutputPowerW); // prevent power going -ve
14611452

1453+
// For geared locomotives the engine RpM can be higher then the throttle demanded rpm, and this gives an inflated value of power
1454+
// so set output power based upon rail power
1455+
if (HasGearBox && Locomotive.DieselTransmissionType == MSTSDieselLocomotive.DieselTransmissionTypes.Mechanic)
1456+
{
1457+
if (LoadPercent != 0)
1458+
{
1459+
CurrentDieselOutputPowerW = GearBox.TractiveForceN * Locomotive.AbsSpeedMpS * 100.0f / LoadPercent;
1460+
1461+
if (Locomotive.DieselEngines.NumOfActiveEngines > 0)
1462+
{
1463+
1464+
CurrentDieselOutputPowerW += Locomotive.DieselPowerSupply.ElectricTrainSupplyPowerW / Locomotive.DieselEngines.NumOfActiveEngines;
1465+
}
1466+
1467+
}
1468+
else
1469+
{
1470+
CurrentDieselOutputPowerW = 0;
1471+
}
1472+
CurrentDieselOutputPowerW = MathHelper.Clamp(CurrentDieselOutputPowerW, 0, MaximumDieselPowerW); // Clamp throttle setting within bounds
1473+
}
1474+
14621475
if (State == DieselEngineState.Starting)
14631476
{
14641477
if ((RealRPM > (0.9f * StartingRPM)) && (RealRPM < StartingRPM))

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerTransmissions/GearBox.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -657,8 +657,6 @@ public float TractiveForceN
657657
// During normal operation fuel admission is fixed, and therefore TE follows curve as RpM varies
658658
tractiveForceN = torqueCurveMultiplier * DieselEngine.DieselTorqueTab[DieselEngine.RealRPM] / DieselEngine.DieselTorqueTab.MaxY() * CurrentGear.MaxTractiveForceN;
659659

660-
// Trace.TraceInformation("Tractive Force - CarID {0} Gear {1}, TF {2:N1} lbf, tcm {3:N1}, RpM {4}, Torque@RpM {5}, TorqueMax {6}, MaxTE {7:N1} DieselOutputHp {8:N1} hp", Locomotive.CarID, GearIndication, 0.224809f * tractiveForceN, torqueCurveMultiplier, DieselEngine.RealRPM, DieselEngine.DieselTorqueTab[DieselEngine.RealRPM], DieselEngine.DieselTorqueTab.MaxY(), 0.224809f * CurrentGear.MaxTractiveForceN, 0.00134102f * DieselEngine.CurrentDieselOutputPowerW);
661-
662660
Locomotive.HuDGearMaximumTractiveForce = CurrentGear.MaxTractiveForceN;
663661

664662
if (CurrentSpeedMpS > 0)
@@ -804,24 +802,24 @@ public void Initialize()
804802
if (!GearBoxParams.MaxTEFound)
805803
{
806804
// If user has entered this value then assume that they have already put the maximum torque value in
807-
Gears[i].MaxTractiveForceN = GearBoxParams.GearBoxMaxTractiveForceForGearsN[i];
805+
Gears[i].MaxTractiveForceN = GearBoxParams.GearBoxMaxTractiveForceForGearsN[i] / Locomotive.DieselEngines.Count;
808806
}
809807
else
810808
{
811809
// if they entered the TE at maximum gear speed, then increase the value accordingly
812-
Gears[i].MaxTractiveForceN = GearBoxParams.GearBoxTractiveForceAtSpeedN[i] * DieselEngine.DieselTorqueTab.MaxY() / DieselEngine.DieselTorqueTab[DieselEngine.MaxRPM];
810+
Gears[i].MaxTractiveForceN = (GearBoxParams.GearBoxTractiveForceAtSpeedN[i] * DieselEngine.DieselTorqueTab.MaxY() / DieselEngine.DieselTorqueTab[DieselEngine.MaxRPM]) / Locomotive.DieselEngines.Count;
813811
// Trace.TraceInformation("MaxTractiveForce - CarID {0} MaxTE {1} ")
814812
}
815813
// For purposes of calculating engine efficiency the tractive force at maximum gear speed needs to be used.
816814
if (GearBoxParams.GearBoxTractiveForceAtSpeedN[i] != 0)
817815
{
818816
// Assume that user has entered the TE at max speed already in the Eng
819-
Gears[i].TractiveForceatMaxSpeedN = GearBoxParams.GearBoxTractiveForceAtSpeedN[i];
817+
Gears[i].TractiveForceatMaxSpeedN = GearBoxParams.GearBoxTractiveForceAtSpeedN[i] / Locomotive.DieselEngines.Count;
820818
}
821819
else
822820
{
823821
// Assume that user entered max TE at maximum torque point
824-
Gears[i].TractiveForceatMaxSpeedN = GearBoxParams.GearBoxMaxTractiveForceForGearsN[i] / (DieselEngine.DieselTorqueTab.MaxY() / DieselEngine.DieselTorqueTab[DieselEngine.MaxRPM]);
822+
Gears[i].TractiveForceatMaxSpeedN = (GearBoxParams.GearBoxMaxTractiveForceForGearsN[i] / (DieselEngine.DieselTorqueTab.MaxY() / DieselEngine.DieselTorqueTab[DieselEngine.MaxRPM])) / Locomotive.DieselEngines.Count;
825823
}
826824

827825
Gears[i].OverspeedPercentage = GearBoxParams.GearBoxOverspeedPercentageForFailure;

0 commit comments

Comments
 (0)