@@ -1429,8 +1429,28 @@ public void UpdateTrainDerailmentRisk(float elapsedClockSeconds)
14291429
14301430 if ( CurrentCurveRadius != 0 )
14311431 {
1432- var A = MassKG * GravitationalAccelerationMpS2 / numWheels ;
1433- var B1 = ( MassKG / numAxles ) * ( float ) Math . Pow ( Math . Abs ( SpeedMpS ) , 2 ) / CurrentCurveRadius ;
1432+ float A = 0 ;
1433+ float B1 = 0 ;
1434+
1435+ // Prevent NaN if numWheels = 0
1436+ if ( numWheels != 0 )
1437+ {
1438+ A = MassKG * GravitationalAccelerationMpS2 / numWheels ;
1439+ }
1440+ else
1441+ {
1442+ A = MassKG * GravitationalAccelerationMpS2 ;
1443+ }
1444+
1445+ // Prevent NaN if numAxles = 0
1446+ if ( numAxles != 0 )
1447+ {
1448+ B1 = ( MassKG / numAxles ) * ( float ) Math . Pow ( Math . Abs ( SpeedMpS ) , 2 ) / CurrentCurveRadius ;
1449+ }
1450+ else
1451+ {
1452+ B1 = MassKG * ( float ) Math . Pow ( Math . Abs ( SpeedMpS ) , 2 ) / CurrentCurveRadius ;
1453+ }
14341454 var B2 = GravitationalAccelerationMpS2 * ( float ) Math . Cos ( SuperElevationAngleRad ) ;
14351455 var B3 = CentreOfGravityM . Y / TrackGaugeM ;
14361456
@@ -1441,8 +1461,28 @@ public void UpdateTrainDerailmentRisk(float elapsedClockSeconds)
14411461
14421462 if ( CarAhead != null )
14431463 {
1444- var AA1 = CarAhead . CouplerForceU * ( float ) Math . Sin ( WagonCouplerAngleDerailRad ) / WagonNumBogies ;
1445- var BB1 = MassKG / numAxles ;
1464+ float AA1 = 0 ;
1465+ float BB1 = 0 ;
1466+
1467+ // Prevent NaN if WagonNumBogies = 0
1468+ if ( WagonNumBogies != 0 )
1469+ {
1470+ AA1 = CarAhead . CouplerForceU * ( float ) Math . Sin ( WagonCouplerAngleDerailRad ) / WagonNumBogies ;
1471+ }
1472+ else
1473+ {
1474+ AA1 = CarAhead . CouplerForceU * ( float ) Math . Sin ( WagonCouplerAngleDerailRad ) ;
1475+ }
1476+
1477+ // Prevent NaN if numAxles = 0
1478+ if ( numAxles != 0 )
1479+ {
1480+ BB1 = MassKG / numAxles ;
1481+ }
1482+ else
1483+ {
1484+ BB1 = MassKG ;
1485+ }
14461486 var BB2 = ( float ) Math . Pow ( Math . Abs ( SpeedMpS ) , 2 ) / CurrentCurveRadius ;
14471487 var BB3 = GravitationalAccelerationMpS2 * ( float ) Math . Sin ( SuperElevationAngleRad ) ;
14481488
0 commit comments