@@ -260,7 +260,7 @@ public enum SlipControlType
260260 public float TrackSanderSandConsumptionReverseM3pS = 0 ;
261261 public float SandWeightKgpM3 = 1600 ; // One cubic metre of sand weighs about 1.54-1.78 tonnes.
262262 public float TrackSanderSteamConsumptionForwardLbpS ;
263- public float TrackSanderSteamConsumptionReverseLbpS ;
263+ public float TrackSanderSteamConsumptionReverseLbpS = 0 ;
264264
265265
266266 // Vacuum Braking parameters
@@ -1785,15 +1785,9 @@ public override void Initialize()
17851785
17861786 if ( TrackSanderSteamConsumptionForwardLbpS == 0 && SandingSystemType == SandingSystemTypes . Steam )
17871787 {
1788- TrackSanderSteamConsumptionForwardLbpS = 300f / 3600f ; // Default value - 300lbs/hr
1788+ TrackSanderSteamConsumptionForwardLbpS = 300f / 3600f ; // Default value - 300lbs/hr - this value is un confirmed at this stage.
17891789 }
17901790
1791- if ( TrackSanderSteamConsumptionReverseLbpS == 0 && SandingSystemType == SandingSystemTypes . Steam )
1792- {
1793- TrackSanderSteamConsumptionReverseLbpS = 300f / 3600f ; // Default value - 300lbs/hr
1794- }
1795-
1796-
17971791 base . Initialize ( ) ;
17981792 if ( DynamicBrakeBlendingEnabled ) airPipeSystem = BrakeSystem as AirSinglePipe ;
17991793
@@ -3271,15 +3265,35 @@ public void UpdateTrackSander(float elapsedClockSeconds)
32713265 // Calculate steam, air or gravity consumption for different sander modes
32723266 if ( SandingSystemType == SandingSystemTypes . Steam )
32733267 {
3268+ float sandingSteamConsumptionLbpS = 0.0f ;
3269+ float sandingSandConsumptionM3pS = 0.0f ;
3270+
32743271 if ( Direction == Direction . Reverse )
32753272 {
3276- SandingSteamUsageLBpS = TrackSanderSteamConsumptionReverseLbpS ;
3273+ sandingSteamConsumptionLbpS = TrackSanderSteamConsumptionReverseLbpS ;
3274+ sandingSandConsumptionM3pS = TrackSanderSandConsumptionReverseM3pS ;
32773275 }
32783276 else
32793277 {
3280- SandingSteamUsageLBpS = TrackSanderSteamConsumptionForwardLbpS ;
3278+ sandingSteamConsumptionLbpS = TrackSanderSteamConsumptionForwardLbpS ;
3279+ sandingSandConsumptionM3pS = TrackSanderSandConsumptionForwardM3pS ;
32813280 }
32823281
3282+ // Calculate steam consumption
3283+ SandingSteamUsageLBpS = ( BoilerPressurePSI / MaxBoilerPressurePSI ) * sandingSteamConsumptionLbpS * elapsedClockSeconds ;
3284+
3285+ // Calculate sand consumption for sander
3286+ if ( CurrentTrackSandBoxCapacityM3 > 0.0 ) // if sand still in sandbox then sanding is available
3287+ {
3288+ // Calculate consumption of sand, and drop in sand box level
3289+ CurrentTrackSanderSandConsumptionM3pS = ( BoilerPressurePSI / MaxBoilerPressurePSI ) * sandingSandConsumptionM3pS * elapsedClockSeconds ;
3290+ CurrentTrackSandBoxCapacityM3 -= CurrentTrackSanderSandConsumptionM3pS ;
3291+ CurrentTrackSandBoxCapacityM3 = MathHelper . Clamp ( CurrentTrackSandBoxCapacityM3 , 0.0f , MaxTrackSandBoxCapacityM3 ) ;
3292+ if ( CurrentTrackSandBoxCapacityM3 <= 0.0 )
3293+ {
3294+ Simulator . Confirmer . Message ( ConfirmLevel . Warning , Simulator . Catalog . GetString ( "Sand supply has been exhausted" ) ) ;
3295+ }
3296+ }
32833297 }
32843298 else // air consumption
32853299 {
@@ -3298,7 +3312,7 @@ public void UpdateTrackSander(float elapsedClockSeconds)
32983312 }
32993313
33003314 // Calculate air consumption and change in main air reservoir pressure
3301- CurrentTrackSanderAirConsumptionM3pS = ( MainResPressurePSI * MaxMainResPressurePSI ) * pS . FrompM ( sandingAirConsumptionM3pS ) * elapsedClockSeconds ;
3315+ CurrentTrackSanderAirConsumptionM3pS = ( MainResPressurePSI / MaxMainResPressurePSI ) * sandingAirConsumptionM3pS * elapsedClockSeconds ;
33023316 float SanderPressureDiffPSI = CurrentTrackSanderAirConsumptionM3pS / Me3 . ToFt3 ( MainResVolumeM3 ) ;
33033317 MainResPressurePSI -= SanderPressureDiffPSI ;
33043318 MainResPressurePSI = MathHelper . Clamp ( MainResPressurePSI , 0.001f , MaxMainResPressurePSI ) ;
@@ -3307,7 +3321,7 @@ public void UpdateTrackSander(float elapsedClockSeconds)
33073321 if ( CurrentTrackSandBoxCapacityM3 > 0.0 ) // if sand still in sandbox then sanding is available
33083322 {
33093323 // Calculate consumption of sand, and drop in sand box level
3310- CurrentTrackSanderSandConsumptionM3pS = ( MainResPressurePSI * MaxMainResPressurePSI ) * pS . FrompH ( sandingSandConsumptionM3pS ) * elapsedClockSeconds ;
3324+ CurrentTrackSanderSandConsumptionM3pS = ( MainResPressurePSI / MaxMainResPressurePSI ) * sandingSandConsumptionM3pS * elapsedClockSeconds ;
33113325 CurrentTrackSandBoxCapacityM3 -= CurrentTrackSanderSandConsumptionM3pS ;
33123326 CurrentTrackSandBoxCapacityM3 = MathHelper . Clamp ( CurrentTrackSandBoxCapacityM3 , 0.0f , MaxTrackSandBoxCapacityM3 ) ;
33133327 if ( CurrentTrackSandBoxCapacityM3 <= 0.0 )
0 commit comments