@@ -2039,10 +2039,11 @@ public override void Initialize()
2039
2039
}
2040
2040
2041
2041
// Calculate factor of adhesion for display purposes
2042
- // Per Engine
2042
+ // Per Engine, and set Initial drivewheelweight
2043
2043
for (int i = 0; i < SteamEngines.Count; i++)
2044
2044
{
2045
2045
SteamEngines[i].CalculatedFactorOfAdhesion = Kg.ToLb(SteamEngines[i].AttachedAxle.WheelWeightKg) / SteamEngines[i].MaxTractiveEffortLbf;
2046
+ SteamEngines[i].AttachedAxle.InitialDrvWheelWeightKg = SteamEngines[i].AttachedAxle.WheelWeightKg;
2046
2047
}
2047
2048
2048
2049
// Calculate "critical" power of locomotive to determine limit of max IHP
@@ -6338,13 +6339,15 @@ public override void AdvancedAdhesion(float elapsedClockSeconds)
6338
6339
// geared locomotive or booster locomotive
6339
6340
{
6340
6341
// Moment of Inertia (Wheel and axle) = (Mass x Radius^2) / 2.0
6342
+ float wheelMassKG = Kg.FromLb(6000.0f);
6343
+ float AxleMassKG = Kg.FromLb(1000.0f);
6341
6344
float AxleRadiusM = Me.FromIn(8.0f / 2.0f);
6342
- float WheelMomentInertia = (linkedEngine.AttachedAxle.WheelWeightKg * linkedEngine.AttachedAxle.WheelRadiusM * linkedEngine.AttachedAxle.WheelRadiusM) / 2.0f;
6343
- float AxleMomentInertia = (linkedEngine.AttachedAxle.WheelWeightKg * AxleRadiusM * AxleRadiusM) / 2.0f;
6345
+ float WheelMomentInertia = (wheelMassKG * linkedEngine.AttachedAxle.WheelRadiusM * linkedEngine.AttachedAxle.WheelRadiusM) / 2.0f;
6346
+ float AxleMomentInertia = (AxleMassKG * AxleRadiusM * AxleRadiusM) / 2.0f;
6344
6347
float TotalWheelMomentofInertia = WheelMomentInertia + AxleMomentInertia; // Total MoI for generic wheelset
6345
6348
float TotalMomentInertia = TotalWheelMomentofInertia;
6346
6349
axle.InertiaKgm2 = TotalMomentInertia;
6347
- axle.DampingNs = linkedEngine.AttachedAxle.AxleWeightN / 200;
6350
+
6348
6351
// Calculate internal resistance - IR = 3.8 * diameter of cylinder^2 * stroke * dia of drivers (all in inches) - This should reduce wheel force
6349
6352
axle.FrictionN = N.FromLbf(3.8f * Me.ToIn(linkedEngine.CylindersDiameterM) * Me.ToIn(linkedEngine.CylindersDiameterM) * Me.ToIn(linkedEngine.CylindersStrokeM) / (Me.ToIn(linkedEngine.AttachedAxle.WheelRadiusM * 2.0f)));
6350
6353
}
@@ -6357,10 +6360,11 @@ public override void AdvancedAdhesion(float elapsedClockSeconds)
6357
6360
// Generic wheel assumptions are - 80 inch drive wheels ( 2.032 metre), a pair of drive wheels weighs approx 6,000lbs, axle weighs 1,000 lbs, and has a diameter of 8 inches.
6358
6361
// Moment of Inertia (Wheel and axle) = (Mass x Radius^2) / 2.0
6359
6362
6360
- float AxleWeighKG = Kg.FromLb(1000.0f);
6363
+ float wheelMassKG = Kg.FromLb(6000.0f);
6364
+ float AxleMassKG = Kg.FromLb(1000.0f);
6361
6365
float AxleRadiusM = Me.FromIn(8.0f / 2.0f);
6362
- float WheelMomentInertia = (linkedEngine.AttachedAxle.WheelWeightKg * linkedEngine.AttachedAxle.WheelRadiusM * linkedEngine.AttachedAxle.WheelRadiusM) / 2.0f;
6363
- float AxleMomentInertia = (linkedEngine.AttachedAxle.WheelWeightKg * AxleRadiusM * AxleRadiusM) / 2.0f;
6366
+ float WheelMomentInertia = (wheelMassKG * linkedEngine.AttachedAxle.WheelRadiusM * linkedEngine.AttachedAxle.WheelRadiusM) / 2.0f;
6367
+ float AxleMomentInertia = (AxleMassKG * AxleRadiusM * AxleRadiusM) / 2.0f;
6364
6368
float TotalWheelMomentofInertia = WheelMomentInertia + AxleMomentInertia; // Total MoI for generic wheelset
6365
6369
6366
6370
// The moment of inertia needs to be increased by the number of wheels in each set
@@ -6378,6 +6382,7 @@ public override void AdvancedAdhesion(float elapsedClockSeconds)
6378
6382
6379
6383
float TotalMomentInertia = TotalWheelMomentofInertia + RodMomentInertia;
6380
6384
axle.InertiaKgm2 = TotalMomentInertia;
6385
+
6381
6386
axle.DampingNs = axle.AxleWeightN / 200;
6382
6387
// Calculate internal resistance - IR = 3.8 * diameter of cylinder^2 * stroke * dia of drivers (all in inches) - This should reduce wheel force
6383
6388
axle.FrictionN = N.FromLbf(3.8f * Me.ToIn(linkedEngine.CylindersDiameterM) * Me.ToIn(linkedEngine.CylindersDiameterM) * Me.ToIn(linkedEngine.CylindersStrokeM) / (Me.ToIn(linkedEngine.AttachedAxle.WheelRadiusM * 2.0f)));
0 commit comments