public static double CalculateOriginalLengthFromFinalTension(this Wire wire, Creep creep) { double startingCatenaryCosntant = wire.StartingTension / wire.FinalWireLinearWeight; double startingArcLength = WeatherExtensions.CalculateArcLength(wire.StartingSpanLength, wire.StartingElevation, startingCatenaryCosntant); double stressFreeLength = startingArcLength - wire.StartingTension * startingArcLength / (wire.TotalCrossSection * WireExtensions.CalculateWireElasticity(wire)); double creepStrain = CreepExtensions.CalculateCreepStrain(creep, wire); return(stressFreeLength / (1 + creepStrain)); }
public static double CalculateOriginalLengthFromInitialTension(this Wire wire) { //calculate the average tension in the wire then find the initial stress double startingCatenaryCosntant = wire.StartingTension / wire.InitialWireLinearWeight; double LeftVerticalForce = -MathUtility.Sinh(WeatherExtensions.CalculateXc(wire.StartingSpanLength, wire.StartingElevation, startingCatenaryCosntant) / startingCatenaryCosntant) * wire.StartingTension; double LeftTotalTension = Math.Sqrt(Math.Pow(LeftVerticalForce, 2) + Math.Pow(wire.StartingTension, 2)); double RightVerticalForce = -MathUtility.Sinh(WeatherExtensions.CalculateXc(wire.StartingSpanLength, -wire.StartingElevation, startingCatenaryCosntant) / startingCatenaryCosntant) * wire.StartingTension; double RightTotalTension = Math.Sqrt(Math.Pow(RightVerticalForce, 2) + Math.Pow(wire.StartingTension, 2)); double averageTension = (LeftTotalTension + RightTotalTension) / 2 - wire.InitialWireLinearWeight * WeatherExtensions.CalculateSag(startingCatenaryCosntant, wire.StartingSpanLength, wire.StartingElevation) / 2; double initialStress = averageTension / wire.TotalCrossSection; double initialStrain = CalculateStringingStrain(wire, initialStress); double initialArcLength = WeatherExtensions.CalculateArcLength(wire.StartingSpanLength, wire.StartingElevation, startingCatenaryCosntant); return(initialArcLength / (1 + initialStrain)); }