There is a poster that displays the results of my latest models, all happily rolled up in its poster tube, sitting in the back seat of my car and waiting to be driven to San Francisco in the morning.
Getting it into that position, however, has probably been the biggest struggle of my conference-poster-making experience so far. Seriously, this whole process has been a veritable checklist of things that can go wrong with numerical modeling, ranging from code idiosyncrasies to outright computer fail to human error.
Allow me to elaborate:
- The new, fast code does not yet support complex fault geometry. It doesn’t even support planar things that aren’t at some multiple of 90 degrees.
- So we decided to use the old code, which is a mid-’90s hack of a code that goes all the way back to the ’60s. The old code requires an ornery old mesher, which was the subject of my entire last blog post. Meshing took almost a week, but it looked very pretty.
- Except for the part where, because the mesher is old and the code is old, sometimes they both get pathological and don’t work with each other. Why this happens is unclear. My advisor is the one who turned the ’60s code into an earthquake dynamics program, and even he is not sure why this happened. It’s happened in his models before. He’s had to abandon some meshes. And it happened in my models. My big beautiful complex mesh, useless. (Maybe because I blogged about it? That would be my luck.)
- So we went back to the new code, in the interest of time. This meant modeling a complex stepover region with bends in the individual strands as…two planar faults. Sigh.
- I ran a suite of models with different nucleation points. Because everyone else was also running models, they went reeeeeeeallly reeeeeeally sloooowly. It became evident that, with the current goal of the poster, there was no way I’d be able to run all of the models I’d need to represent nucleation location – stress state – fault basal depth parameter space.
- So we decided to focus on the different stress states. I ran a bunch of models with fixed nucleation points and different stress drops and fault strengths. I used exactly the same stresses as in the old code. I set up these five models to run overnight.
- The computer turned itself off overnight. The models did not run.
- So I ran them again. They finished. I post-processed them. And none of the model ruptures propagated past the forced nucleation point. As it turns out, the new code forces nucleation in a different way than the old code, and requires higher stress amplitudes to actually work.
- I multiplied all the stresses by three. I checked, by hand, to make sure there would be no issues with the critical patch size required to slip before sustained rupture could occur. I ran the models again.
- The models worked. None of the ruptures jumped, even the ones with extreme stress drops. Then I realized that the coefficients of friction in the macro I’d used to calculate the regional stress field were not the same as in the model input file. They were left over from an older project. Because of this, I hadn’t run the models I’d meant to run, so I needed to run four more.
- I ran them. They worked. I put them on the poster and printed it…in the middle of this afternoon. What deadline?!
- The poster printer stopped working during the next thing to print after my poster. I guess that’s a little luck?
And so here we are. The data is on the poster. The poster is in the car. In the end, this is where things need to be. And in the morning, I will go to where I need to be, and I am very much looking forward to this conference, despite every ounce of frustration that led up to it.