Skip to content

Commit 0cbbc61

Browse files
committed
Further corrections regarding main res pressure
1 parent 89e82a8 commit 0cbbc61

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -766,9 +766,11 @@ protected static void PropagateBrakeLinePressures(float elapsedClockSeconds, Tra
766766
// reduce pressure in lead brake line if brake pipe pressure is above equalising pressure - apply brakes
767767
else if (lead.BrakeSystem.BrakeLine1PressurePSI > train.EqualReservoirPressurePSIorInHg)
768768
{
769-
float ServiceVariationFactor = (1 - trainPipeTimeVariationS / serviceTimeFactor);
770-
ServiceVariationFactor = MathHelper.Clamp(ServiceVariationFactor, 0.05f, 1.0f); // Keep factor within acceptable limits - prevent value from going negative
771-
lead.BrakeSystem.BrakeLine1PressurePSI *= ServiceVariationFactor;
769+
float serviceVariationFactor = Math.Min(trainPipeTimeVariationS / serviceTimeFactor, 0.95f);
770+
float pressureDiffPSI = serviceTimeFactor * lead.BrakeSystem.BrakeLine1PressurePSI;
771+
if (lead.BrakeSystem.BrakeLine1PressurePSI > train.EqualReservoirPressurePSIorInHg)
772+
pressureDiffPSI = lead.BrakeSystem.BrakeLine1PressurePSI - train.EqualReservoirPressurePSIorInHg;
773+
lead.BrakeSystem.BrakeLine1PressurePSI -= pressureDiffPSI;
772774
}
773775
}
774776

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/Controllers/MSTSBrakeController.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,13 @@ public override void UpdatePressure(ref float pressureBar, float elapsedClockSec
124124
switch (type)
125125
{
126126
case ControllerState.Release:
127-
IncreasePressure(ref pressureBar, MaxPressureBar(), ReleaseRateBarpS(), elapsedClockSeconds);
127+
IncreasePressure(ref pressureBar, Math.Min(MaxPressureBar(), MainReservoirPressureBar()), ReleaseRateBarpS(), elapsedClockSeconds);
128128
DecreasePressure(ref pressureBar, MaxPressureBar(), OverchargeEliminationRateBarpS(), elapsedClockSeconds);
129129
epState = -1;
130130
break;
131131
case ControllerState.FullQuickRelease:
132132
case ControllerState.SMEReleaseStart:
133-
IncreasePressure(ref pressureBar, MaxPressureBar(), QuickReleaseRateBarpS(), elapsedClockSeconds);
133+
IncreasePressure(ref pressureBar, Math.Min(MaxPressureBar(), MainReservoirPressureBar()), QuickReleaseRateBarpS(), elapsedClockSeconds);
134134
DecreasePressure(ref pressureBar, MaxPressureBar(), OverchargeEliminationRateBarpS(), elapsedClockSeconds);
135135
epState = -1;
136136
break;
@@ -207,15 +207,15 @@ public override void UpdatePressure(ref float pressureBar, float elapsedClockSec
207207
x = MaxPressureBar() - MinReductionBar() * (1 - x) - FullServReductionBar() * x;
208208
DecreasePressure(ref pressureBar, x, ApplyRateBarpS(), elapsedClockSeconds);
209209
if (ForceControllerReleaseGraduated || notch.Type == ControllerState.GSelfLap)
210-
IncreasePressure(ref pressureBar, x, ReleaseRateBarpS(), elapsedClockSeconds);
210+
IncreasePressure(ref pressureBar, Math.Min(x, MainReservoirPressureBar()), ReleaseRateBarpS(), elapsedClockSeconds);
211211
break;
212212
case ControllerState.Emergency:
213213
pressureBar -= EmergencyRateBarpS() * elapsedClockSeconds;
214214
epState = 1;
215215
break;
216216
case ControllerState.Dummy:
217217
x = MaxPressureBar() - FullServReductionBar() * (notch.Smooth ? x : CurrentValue());
218-
IncreasePressure(ref pressureBar, x, ReleaseRateBarpS(), elapsedClockSeconds);
218+
IncreasePressure(ref pressureBar, Math.Min(x, MainReservoirPressureBar()), ReleaseRateBarpS(), elapsedClockSeconds);
219219
DecreasePressure(ref pressureBar, x, ApplyRateBarpS(), elapsedClockSeconds);
220220
epState = -1;
221221
break;

0 commit comments

Comments
 (0)