# How Bridges Work 5, Exercise 2: fatigue under a mixed railway load # A bridge detail has fatigue category 71 MPa (N = 2e6 cycles at a stress range of # 71 MPa, with N proportional to 1/range^3). Each day 100 light trains cause a # stress range of 45 MPa and 10 heavy trains cause 70 MPa, one cycle per train. # Use Miner's rule: damage per year = sum of (cycles per year / cycles to failure) # for each load; the detail fails when the total damage reaches 1. Find the life # in years, and the life if the heavy trains double to 20 a day. def cycles_to_fail(delta_sigma, category=71): return 2e6 * (category / delta_sigma) ** 3 def life_years(light, heavy): damage = 365 * (light / cycles_to_fail(45) + heavy / cycles_to_fail(70)) return 1 / damage print(round(cycles_to_fail(45)), round(cycles_to_fail(70))) print(round(life_years(100, 10), 1)) print(round(life_years(100, 20), 1)) # Output when run: # 7855385 2086945 # 156.4 # 122.8 # # The light trains' range of 45 MPa gives 7,855,385 cycles to failure, the heavy # trains' 70 MPa gives 2,086,945. With 100 light and 10 heavy trains a day the # summed damage reaches 1 after 156.4 years; doubling the heavy trains to 20 a # day cuts the life to 122.8 years (about 21% less). The rare heavy trains do # disproportionate damage: because N depends on the cube of the stress range, # one 70 MPa cycle uses up as much life as about 3.8 cycles at 45 MPa (7.86 / 2.09). # This is a simplified model (no fatigue limit, one detail category), but it # shows why bridge owners track axle loads as well as train counts.