Skip to content

Commit 1f1bd0f

Browse files
committed
Automatic merge of T1.6-186-g21d9ada29 and 13 pull requests
- Pull request #1082 at 6550dab: Allow variable water level in glass gauge - Pull request #1057 at 85bde8e: Switchable brake system - Pull request #1081 at a8127a1: Brake cuts power unification - Pull request #1091 at 378be55: Automatic speed control - Pull request #1122 at 73c47b4: Wagon Size and Centering Controls - Pull request #1124 at e241a0d: Built-in PBL2 brake controller - Pull request #1128 at b6c197f: Particle Emitter Overhaul - Pull request #1158 at 2599bfe: Temporary fix for bug 2121985: F9 TCO out-of-range after resume - Pull request #1169 at 906f204: Revise TrainCar.SetUpWheels to Better Handle Unusual Rolling Stock - Pull request #1175 at d28315e: Make Data Logger interval configurable - Pull request #1176 at 4cd961b: Remove Implicit Requirement for Engine Name to Come After "Engine (" - Pull request #1178 at 015769e: Fix Diesel RPM Rate of Change - Pull request #1183 at 41911f1: docs: Add code guidelines for translations
15 parents 7bec8be + 21d9ada + 6550dab + 85bde8e + a8127a1 + 378be55 + 73c47b4 + e241a0d + b6c197f + 2599bfe + 906f204 + d28315e + 4cd961b + 015769e + 41911f1 commit 1f1bd0f

File tree

9 files changed

+1853
-619
lines changed

9 files changed

+1853
-619
lines changed

Source/Documentation/Manual/physics.rst

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,6 +1595,54 @@ ii) Cylinder Cocks Exhaust - the exhaust out of the cylinder drainage cocks,
15951595
The following CAB controls have been defined, ``STEAM_BOOSTER_AIR``, ``STEAM_BOOSTER_IDLE``,
15961596
``STEAM_BOOSTER_LATCH``, ``STEAM_BOOSTER_PRESSURE``.
15971597

1598+
Boiler Water and Water Gauge
1599+
............................
1600+
1601+
The management of boiler water on a steam locomotive is important for maintaining steam productions as
1602+
well as ensuring that water levels do not drop far enough to expose the firebox crown and the fusible plugs.
1603+
1604+
The Water Glass is the primary indication used by the fireman to manage boiler water levels, however as the
1605+
locomotive goes up and down grades, the water level will appear to significantly change. The amount of variation
1606+
will be determined by a number of factors, and principal amongst them are the following.
1607+
1608+
``ORTSBoilerLength`` - length of the boiler (UoM distance)
1609+
``ORTSWaterGaugeGlassHeight`` - length of the water gauge (UoM Distance)
1610+
``ORTSBoilerDiameter`` - diameter of the boiler (UoM Distance)
1611+
``ORTSBoilerCrownHeight`` - Height of boiler crown above centre line of the boiler (UoM Distance)
1612+
``ORTSBoilerCrownCoverageHeight`` - Amount of water required to cover the crown (UoM Distance)
1613+
1614+
To display the changing water level in the Cab, use ``BOILER_WATER_GRADE``.
1615+
1616+
Steam Water Injectors
1617+
.....................
1618+
1619+
Water injectors are typically modelled by default, and sizes and injection rates will be calculated automatically by OR.
1620+
1621+
If desired the user may customise some of the default values by using the following parameters:
1622+
1623+
``InjectorTypes ( x, y )`` - will allow the user to set up a combination of exhaust or live steam injectors for the
1624+
locomotive. Use 0 = Live steam and 1 = Exhaust steam in either of the x or y positions.
1625+
1626+
``ORTSInjectorSize ( x, y )`` - the size of each injector can be indicated in this parameter. The values will be in
1627+
mm, and typically should not be greater then 19mm.
1628+
1629+
1630+
Locomotive Back Pressure
1631+
........................
1632+
1633+
OR calculates a default back pressure value for the exhaust steam emitted from the cylinder.
1634+
1635+
The user may customise the default value where appropriate values are known, ie from test reports, etc.
1636+
1637+
To customise the backpressure curve use:
1638+
1639+
``ORTSCylinderBackPressureVsSteamOutput ( x, y )`` - where x = series of cylinder steam usage rates in lb/h, and y = back
1640+
pressure in psig.
1641+
1642+
Note: The older parameter ``ortscylinderbackpressure`` is inaccurate and no longer supported in OR. An error message will
1643+
display if OR detects the use of this parameter.
1644+
1645+
15981646
Locomotive Types
15991647
................
16001648

Source/Orts.Formats.Msts/CabViewFile.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,12 @@ public enum CABViewControlTypes
140140
WATER_INJECTOR1,
141141
WATER_INJECTOR2,
142142
SMALL_EJECTOR,
143+
BACK_PR,
143144
STEAM_PR,
144145
STEAMCHEST_PR,
145146
TENDER_WATER,
146147
BOILER_WATER,
148+
BOILER_WATER_GRADE,
147149
REVERSER_PLATE,
148150
STEAMHEAT_PRESSURE,
149151
FIREBOX,

Source/Orts.Simulation/Common/SteamTable.cs

Lines changed: 929 additions & 267 deletions
Large diffs are not rendered by default.

Source/Orts.Simulation/Simulation/Physics/Train.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2494,7 +2494,7 @@ public void UpdateCarSteamHeat(float elapsedClockSeconds)
24942494
car.CarHeatCompartmentPipeAreaM2 = CarCompartmentPipeAreaM2 + CarDoorPipeAreaM2;
24952495

24962496
// Pipe convection heat produced - steam is reduced to atmospheric pressure when it is injected into compartment
2497-
float CompartmentSteamPipeTempC = C.FromF(mstsLocomotive.SteamHeatPressureToTemperaturePSItoF[0]);
2497+
float CompartmentSteamPipeTempC = C.FromF(mstsLocomotive.SaturatedSteamHeatPressureToTemperaturePSItoF[0]);
24982498
car.CarCompartmentSteamPipeHeatConvW = (PipeHeatTransCoeffWpM2K * car.CarHeatCompartmentPipeAreaM2 * (CompartmentSteamPipeTempC - car.CarInsideTempC));
24992499

25002500
// Pipe radiation heat produced
@@ -2513,7 +2513,7 @@ public void UpdateCarSteamHeat(float elapsedClockSeconds)
25132513
float HeatTransCoeffConnectHoseBTUpFt2pHrpF = 0.04f * car.ConvectionFactor; // rubber connecting hoses - BTU / sq.ft. / hr / l in / °F. TO BE CHECKED
25142514

25152515
// Calculate Length of carriage and heat loss in main steam pipe
2516-
float CarMainSteamPipeTempF = mstsLocomotive.SteamHeatPressureToTemperaturePSItoF[car.CarSteamHeatMainPipeSteamPressurePSI];
2516+
float CarMainSteamPipeTempF = mstsLocomotive.SaturatedSteamHeatPressureToTemperaturePSItoF[car.CarSteamHeatMainPipeSteamPressurePSI];
25172517
car.CarHeatSteamMainPipeHeatLossBTU = Me.ToFt(car.CarLengthM) * (MathHelper.Pi * Me.ToFt(car.MainSteamHeatPipeOuterDiaM)) * HeatTransCoeffMainPipeBTUpFt2pHrpF * (CarMainSteamPipeTempF - C.ToF(car.CarOutsideTempC));
25182518

25192519
// calculate steam connecting hoses heat loss - assume 1.5" hose
@@ -2561,7 +2561,7 @@ public void UpdateCarSteamHeat(float elapsedClockSeconds)
25612561
}
25622562

25632563
// Calculate steam flow rates and steam used
2564-
SteamFlowRateLbpHr = (ProgressiveHeatAlongTrainBTU / mstsLocomotive.SteamHeatPSItoBTUpLB[mstsLocomotive.CurrentSteamHeatPressurePSI]) + pS.TopH(car.CarHeatSteamTrapUsageLBpS) + pS.TopH(car.CarHeatConnectingSteamHoseLeakageLBpS);
2564+
SteamFlowRateLbpHr = (ProgressiveHeatAlongTrainBTU / mstsLocomotive.SaturatedSteamHeatPSItoBTUpLB[mstsLocomotive.CurrentSteamHeatPressurePSI]) + pS.TopH(car.CarHeatSteamTrapUsageLBpS) + pS.TopH(car.CarHeatConnectingSteamHoseLeakageLBpS);
25652565
mstsLocomotive.CalculatedCarHeaterSteamUsageLBpS = pS.FrompH(SteamFlowRateLbpHr);
25662566

25672567
// Calculate Net steam heat loss or gain for each compartment in the car

Source/Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ public override string GetDebugStatus()
916916
Simulator.Catalog.GetString("Press"),
917917
FormatStrings.FormatPressure(CurrentSteamHeatPressurePSI, PressureUnit.PSI, MainPressureUnit, true),
918918
Simulator.Catalog.GetString("StTemp"),
919-
FormatStrings.FormatTemperature(C.FromF(SteamHeatPressureToTemperaturePSItoF[CurrentSteamHeatPressurePSI]), IsMetric, false),
919+
FormatStrings.FormatTemperature(C.FromF(SaturatedSteamHeatPressureToTemperaturePSItoF[CurrentSteamHeatPressurePSI]), IsMetric, false),
920920
Simulator.Catalog.GetString("StUse"),
921921
FormatStrings.FormatMass(pS.TopH(Kg.FromLb(CalculatedCarHeaterSteamUsageLBpS)), IsMetric),
922922
FormatStrings.h,

Source/Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ public override string GetDebugStatus()
416416
Simulator.Catalog.GetString("Press"),
417417
FormatStrings.FormatPressure(CurrentSteamHeatPressurePSI, PressureUnit.PSI, MainPressureUnit, true),
418418
Simulator.Catalog.GetString("StTemp"),
419-
FormatStrings.FormatTemperature(C.FromF(SteamHeatPressureToTemperaturePSItoF[CurrentSteamHeatPressurePSI]), IsMetric, false),
419+
FormatStrings.FormatTemperature(C.FromF(SaturatedSteamHeatPressureToTemperaturePSItoF[CurrentSteamHeatPressurePSI]), IsMetric, false),
420420
Simulator.Catalog.GetString("StUse"),
421421
FormatStrings.FormatMass(pS.TopH(Kg.FromLb(CalculatedCarHeaterSteamUsageLBpS)), IsMetric),
422422
FormatStrings.h,

Source/Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,9 @@ public float CurrentLocomotiveSteamHeatBoilerWaterCapacityL
225225

226226
// Carriage Steam Heating Parameters
227227
public float MaxSteamHeatPressurePSI; // Maximum Steam heating pressure
228-
public Interpolator SteamHeatPressureToTemperaturePSItoF;
228+
public Interpolator SaturatedSteamHeatPressureToTemperaturePSItoF;
229229
public Interpolator SteamDensityPSItoLBpFT3; // saturated steam density given pressure
230-
public Interpolator SteamHeatPSItoBTUpLB; // total heat in saturated steam given pressure
230+
public Interpolator SaturatedSteamHeatPSItoBTUpLB; // total heat in saturated steam given pressure
231231
public bool IsSteamHeatingBoilerFitted = false; // Flag to indicate when steam heat boiler van is fitted
232232
public float CalculatedCarHeaterSteamUsageLBpS;
233233

@@ -1625,9 +1625,9 @@ public override void Initialize()
16251625
IsSteamHeatFitted = true;
16261626
}
16271627

1628-
SteamHeatPressureToTemperaturePSItoF = SteamTable.SteamHeatPressureToTemperatureInterpolatorPSItoF();
1628+
SaturatedSteamHeatPressureToTemperaturePSItoF = SteamTable.SaturatedSteamHeatPressureToTemperatureInterpolatorPSItoF();
16291629
SteamDensityPSItoLBpFT3 = SteamTable.SteamDensityInterpolatorPSItoLBpFT3();
1630-
SteamHeatPSItoBTUpLB = SteamTable.SteamHeatInterpolatorPSItoBTUpLB();
1630+
SaturatedSteamHeatPSItoBTUpLB = SteamTable.SaturatedSteamHeatInterpolatorPSItoBTUpLB();
16311631

16321632
// Check to see if water scoop elements have been configured
16331633
if (WaterScoopFillElevationM == 0)

0 commit comments

Comments
 (0)