I work on computational algorithms for Mathematica, and I always like to see that what I do is helpful in solving real-world problems.

When I heard about the I-35W bridge collapse, I wanted to see if anything could be learned from computing the mechanics of the bridge with Mathematica.

Large packages have been written for doing structural computations with Mathematica. But I wanted to start from first principles to try to understand the whole picture.

A truss bridge can be thought of as a graph, with trusses as edges and joints as nodes, as in the picture here:

The stress in the trusses is determined by a system of constraint equations that represent the balancing of forces at each node. In Mathematica, it takes just one function to solve this constraint problem: `FindMinimum`. And as it happens, the algorithm that `FindMinimum` selects for this case is one that I wrote.

It’s really easy to display the bridge too, using another function that I’m responsible for: `GraphPlot`.

The picture below shows the computed stresses in a simple 2D model of a truss bridge, with red indicating more stress. There are definitely aspects of the model that are not realistic. For example, the weight of the trusses themselves isn’t included. And, of course, it’s in 2D.

So what happens if one of the trusses weakens?

It’s easy to include this in the computation by adding an upper bound on the stress in that truss. That just adds another inequality—which `FindMinimum` has no problem with.

One can actually compute all this in real time inside `Manipulate`. Here’s an animation of the result:

One sees that when the truss with maximal stress weakens (shown in yellow), the stress spreads out to other parts of the bridge. If one weakens another truss, then the stress propagates further. And when one weakens yet another truss, then the constraints can’t be satisfied at all anymore—so there is no static equilibrium for the bridge, and the bridge cannot stay standing.

Starting from Mathematica and Newton’s equations, it took a couple of hours to come up with this. It’s obvious one could do a much more detailed 3D analysis. But it’s interesting to see how far one can get even with this straightforward model.