Skip to content

Commit d652a06

Browse files
committed
Adjust Curve Friction Calculations
1 parent c301fa6 commit d652a06

File tree

1 file changed

+15
-2
lines changed
  • Source/Orts.Simulation/Simulation/RollingStocks

1 file changed

+15
-2
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/TrainCar.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2079,10 +2079,23 @@ public virtual void UpdateCurveForce(float elapsedClockSeconds)
20792079
}
20802080
}
20812081

2082-
// Curve Resistance = (Vehicle mass x Coeff Friction) * (Track Gauge + Vehicle Fixed Wheelbase) / (2 * curve radius)
2082+
// References:
2083+
2084+
// i) The modern locomotive by Clarence Edgar Allen – 1912 – pg 82 - https://archive.org/details/modernlocomotive00allerich
2085+
2086+
// ii) Resistance to Traffic of Railway Rolling Stock by P.N.Astakhov – Moscow 1966 – pg 112
2087+
// http://scbist.com/scb/uploaded/1_astahov_p_n_soprotivlenie_dvizheniyu_zheleznodorozhnogo_podv.pdf
2088+
2089+
// The CurveForce is a combination of these two components so that resistance will vary with stock characteristics and speed.
2090+
// These formulas are a mix of imperial and metric expressions so these will be retained and converted to a common UoM in Newtons once calculations are complete.
2091+
2092+
// Base Curve Resistance (from refernce i)) = (Vehicle mass x Coeff Friction) * (Track Gauge + Vehicle Fixed Wheelbase) / (2 * curve radius)
20832093
// Vehicle Fixed Wheel base is the distance between the wheels, ie bogie or fixed wheels
20842094

2085-
CurveForceN = MassKG * Train.WagonCoefficientFriction * (TrackGaugeM + RigidWheelBaseM) / (2.0f * CurrentCurveRadius);
2095+
CurveForceN = N.FromLbf(Kg.ToLb(MassKG) * Train.WagonCoefficientFriction * (Me.ToFt(TrackGaugeM) + Me.ToFt(RigidWheelBaseM)) / (2.0f * Me.ToFt(CurrentCurveRadius)));
2096+
2097+
2098+
20862099
float CurveResistanceSpeedFactor = Math.Abs((MaxCurveEqualLoadSpeedMps - AbsSpeedMpS) / MaxCurveEqualLoadSpeedMps) * StartCurveResistanceFactor;
20872100
CurveForceN *= CurveResistanceSpeedFactor * CurveResistanceZeroSpeedFactor;
20882101
CurveForceN *= GravitationalAccelerationMpS2; // to convert to Newtons

0 commit comments

Comments
 (0)