You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Source/Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs
+76-67Lines changed: 76 additions & 67 deletions
Original file line number
Diff line number
Diff line change
@@ -294,7 +294,9 @@ public class MSTSSteamLocomotive : MSTSLocomotive
294
294
SmoothedData FuelRateStoker = new SmoothedData(15); // Stoker is more responsive and only takes x seconds to fully react to changing needs.
295
295
SmoothedData FuelRateCoal = new SmoothedData(45); // Automatic fireman takes x seconds to fully react to changing needs for coal firing.
296
296
SmoothedData CoalBurnRateSmoothKGpS = new SmoothedData(150); // Changes in BurnRate take x seconds to fully react to changing needs - models increase and decrease in heat.
297
-
SmoothedData OilBurnRateSmoothKGpS = new SmoothedData(3); // Changes in Oil BurnRate take x seconds to fully react to changing needs - models increase and decrease in heat. Oil faster then steam
297
+
SmoothedData OilBurnRateSmoothKGpS = new SmoothedData(6); // Changes in Oil BurnRate take x seconds to fully react to changing needs - models increase and decrease in heat. Oil faster then steam
298
+
SmoothedData OilBurnRateReductionSmoothKGpS = new SmoothedData(0.25f); // When in reduction we would expect the heat to drop off rapidly for an oil fire
// This allows for situation where boiler heat has gone beyond safety valve heat, and is reducing, but steam will be required shortly so don't allow fire to go too low
3765
3772
{
3766
-
// burnrate will be the radiation loss @ rest & then related to heat usage as a factor of the maximum boiler output
3767
-
// ignores total bolier heat to allow burn rate to increase if boiler heat usage is exceeding input
BurnRateRawKGpS = (W.ToKW(W.FromBTUpS(PreviousBoilerHeatOutBTUpS - BoilerHeatExceptionsBtupS)) / FuelCalorificKJpKG) * AIFiremanStartingBurnFactor; // Calculate the amount of coal that should be burnt based upon heat used by boiler
// This allows for situation where boiler heat has gone beyond safety valve heat, and is reducing, but steam will be required shortly so don't allow fire to go too low
3775
-
{
3776
-
// Burn Rate rate if Boiler Heat is too high
3777
-
BurnRateRawKGpS = (W.ToKW(W.FromBTUpS(PreviousBoilerHeatOutBTUpS - BoilerHeatExceptionsBtupS)) / FuelCalorificKJpKG) * AIFiremanStartingBurnFactor; // Calculate the amount of coal that should be burnt based upon heat used by boiler
// AIFireOverride flag set to challenge driver if boiler AI fireman is overriden - ie steam safety valves will be set and blow if pressure is excessive
3787
-
if (SetFireOn || SetFireOff) // indicate that AI fireman override is in use
3788
-
{
3789
-
AIFireOverride = true; // Set whenever SetFireOn or SetFireOff are selected
AIFireOverride = false; // Reset if pressure and heat back to "normal"
3794
-
}
3783
+
// AIFireOverride flag set to challenge driver if boiler AI fireman is overriden - ie steam safety valves will be set and blow if pressure is excessive
3784
+
if (SetFireOn || SetFireOff) // indicate that AI fireman override is in use
3785
+
{
3786
+
AIFireOverride = true; // Set whenever SetFireOn or SetFireOff are selected
SetFireOn = false; // Disable FireOn if bolierpressure and boilerheat back to "normal"
3820
-
}
3821
-
BurnRateRawKGpS = 0.9f * pS.FrompH(Kg.FromLb(NewBurnRateSteamToCoalLbspH[pS.TopH(TheoreticalMaxSteamOutputLBpS)])); // AI fire on goes to approx 100% of fire needed to maintain full boiler steam generation
3816
+
SetFireOn = false; // Disable FireOn if bolierpressure and boilerheat back to "normal"
3822
3817
}
3818
+
BurnRateRawKGpS = 0.9f * pS.FrompH(Kg.FromLb(NewBurnRateSteamToCoalLbspH[pS.TopH(TheoreticalMaxSteamOutputLBpS)])); // AI fire on goes to approx 100% of fire needed to maintain full boiler steam generation
0 commit comments