@@ -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