@@ -134,6 +134,7 @@ public class MSTSSteamLocomotive : MSTSLocomotive
134134 public bool SteamBoosterIdleMode = false;
135135 public bool BoosterGearsEngaged = false;
136136 public bool SteamBoosterLatchedLocked = false;
137+ public float SteamBoosterPressurePSI;
137138 float BoosterGearEngageTimeS;
138139 float BoosterIdleHeatingTimerS;
139140 float BoosterIdleHeatingTimePeriodS = 120; // This is the time period that the Booster needs to be idled to heat it up
@@ -143,6 +144,8 @@ public class MSTSSteamLocomotive : MSTSLocomotive
143144 public float HuDBoosterSteamConsumptionLbpS;
144145 public float BoosterSteamConsumptionLbpS;
145146 float BoosterIdleChokeSizeIn;
147+ float BoosterPressureFactor = 0;
148+ float BoosterMaxIdleChokeSizeIn = 0.625f;
146149
147150 /// <summary>
148151 /// Grate limit of locomotive exceedeed?
@@ -1317,22 +1320,27 @@ public override void Initialize()
13171320 if (MaxBoilerPressurePSI > 300)
13181321 {
13191322 BoosterIdleChokeSizeIn = 0.375f;
1323+ BoosterPressureFactor = BoosterIdleChokeSizeIn / BoosterMaxIdleChokeSizeIn;
13201324 }
13211325 else if (MaxBoilerPressurePSI > 275 && MaxBoilerPressurePSI <= 300)
13221326 {
13231327 BoosterIdleChokeSizeIn = 0.4375f;
1328+ BoosterPressureFactor = BoosterIdleChokeSizeIn / BoosterMaxIdleChokeSizeIn;
13241329 }
13251330 else if (MaxBoilerPressurePSI > 250 && MaxBoilerPressurePSI <= 275)
13261331 {
13271332 BoosterIdleChokeSizeIn = 0.5f;
1333+ BoosterPressureFactor = BoosterIdleChokeSizeIn / BoosterMaxIdleChokeSizeIn;
13281334 }
13291335 else if (MaxBoilerPressurePSI > 200 && MaxBoilerPressurePSI <= 250)
13301336 {
13311337 BoosterIdleChokeSizeIn = 0.5625f;
1338+ BoosterPressureFactor = BoosterIdleChokeSizeIn / BoosterMaxIdleChokeSizeIn;
13321339 }
13331340 else
13341341 {
13351342 BoosterIdleChokeSizeIn = 0.625f;
1343+ BoosterPressureFactor = BoosterIdleChokeSizeIn / BoosterMaxIdleChokeSizeIn;
13361344 }
13371345
13381346 // Set crank angle between different sides of the locomotive
@@ -2343,15 +2351,16 @@ public override void Update(float elapsedClockSeconds)
23432351 {
23442352 // In Idle mode steam consumption will be calculated by steam through an orifice.
23452353 // Steam Flow (lb/hr) = 24.24 x Press(BoilerPressure + Atmosphere(psi)) x ChokeDia^2 (in) - this needs to be multiplied by Num Cyls
2346- var BoosterPressurePSI = BoilerPressurePSI + OneAtmospherePSI;
2347- SteamEngines[i].CylinderSteamUsageLBpS = pS.FrompH(SteamEngines[i].NumberCylinders * (24.24f * (BoosterPressurePSI ) * BoosterIdleChokeSizeIn * BoosterIdleChokeSizeIn));
2354+ SteamBoosterPressurePSI = ( BoilerPressurePSI + OneAtmospherePSI) * BoosterPressureFactor ;
2355+ SteamEngines[i].CylinderSteamUsageLBpS = pS.FrompH(SteamEngines[i].NumberCylinders * (24.24f * (SteamBoosterPressurePSI ) * BoosterIdleChokeSizeIn * BoosterIdleChokeSizeIn));
23482356 HuDBoosterSteamConsumptionLbpS = SteamEngines[i].CylinderSteamUsageLBpS;
23492357
23502358 }
23512359 else
23522360 {
23532361 // In run mode steam consumption calculated by cylinder model
23542362 HuDBoosterSteamConsumptionLbpS = SteamEngines[i].CylinderSteamUsageLBpS;
2363+ SteamBoosterPressurePSI = (throttle * InitialPressureDropRatioRpMtoX[pS.TopM(DrvWheelRevRpS)] * BoilerPressurePSI); // equivalent to steam chest pressure
23552364 }
23562365
23572366
@@ -6671,6 +6680,9 @@ public override float GetDataOf(CabViewControl cvc)
66716680 case CABViewControlTypes.STEAMHEAT_PRESSURE:
66726681 data = ConvertFromPSI(cvc, CurrentSteamHeatPressurePSI);
66736682 break;
6683+ case CABViewControlTypes.STEAM_BOOSTER_PRESSURE:
6684+ data = ConvertFromPSI(cvc, SteamChestPressurePSI);
6685+ break;
66746686 case CABViewControlTypes.CUTOFF:
66756687 case CABViewControlTypes.REVERSER_PLATE:
66766688 data = Train.MUReverserPercent / 100f;
0 commit comments