@@ -2039,10 +2039,11 @@ public override void Initialize()
20392039 }
20402040
20412041 // Calculate factor of adhesion for display purposes
2042- // Per Engine
2042+ // Per Engine, and set Initial drivewheelweight
20432043 for (int i = 0; i < SteamEngines.Count; i++)
20442044 {
20452045 SteamEngines[i].CalculatedFactorOfAdhesion = Kg.ToLb(SteamEngines[i].AttachedAxle.WheelWeightKg) / SteamEngines[i].MaxTractiveEffortLbf;
2046+ SteamEngines[i].AttachedAxle.InitialDrvWheelWeightKg = SteamEngines[i].AttachedAxle.WheelWeightKg;
20462047 }
20472048
20482049 // Calculate "critical" power of locomotive to determine limit of max IHP
@@ -6338,13 +6339,15 @@ public override void AdvancedAdhesion(float elapsedClockSeconds)
63386339 // geared locomotive or booster locomotive
63396340 {
63406341 // 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);
63416344 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;
63446347 float TotalWheelMomentofInertia = WheelMomentInertia + AxleMomentInertia; // Total MoI for generic wheelset
63456348 float TotalMomentInertia = TotalWheelMomentofInertia;
63466349 axle.InertiaKgm2 = TotalMomentInertia;
6347- axle.DampingNs = linkedEngine.AttachedAxle.AxleWeightN / 200;
6350+
63486351 // Calculate internal resistance - IR = 3.8 * diameter of cylinder^2 * stroke * dia of drivers (all in inches) - This should reduce wheel force
63496352 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)));
63506353 }
@@ -6357,10 +6360,11 @@ public override void AdvancedAdhesion(float elapsedClockSeconds)
63576360 // 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.
63586361 // Moment of Inertia (Wheel and axle) = (Mass x Radius^2) / 2.0
63596362
6360- float AxleWeighKG = Kg.FromLb(1000.0f);
6363+ float wheelMassKG = Kg.FromLb(6000.0f);
6364+ float AxleMassKG = Kg.FromLb(1000.0f);
63616365 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;
63646368 float TotalWheelMomentofInertia = WheelMomentInertia + AxleMomentInertia; // Total MoI for generic wheelset
63656369
63666370 // 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)
63786382
63796383 float TotalMomentInertia = TotalWheelMomentofInertia + RodMomentInertia;
63806384 axle.InertiaKgm2 = TotalMomentInertia;
6385+
63816386 axle.DampingNs = axle.AxleWeightN / 200;
63826387 // Calculate internal resistance - IR = 3.8 * diameter of cylinder^2 * stroke * dia of drivers (all in inches) - This should reduce wheel force
63836388 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