Implemented in Rust, cellular automata following partial differential equations making pretty patterns.
A few years ago, I ran into this NileRed video of a reaction due to Belousov and Zhabotinsky, which produces beautiful spiraling or pulsing wave patterns. When my course in partial differential equations (MIT 18.300) came to looking for final project topics, I hopped on the train. My idea was to recreate this paper which claimed to model the reaction using cellular automata (grids with rules, like Conway's Game of Life) based on a simplified analytical model.
I stared at the equations a bit, and I was rather skeptical that the model was accurate given the explanation from the NileRed video and my other readings. Still, I went ahead and implemented it in Rust, and indeed the model produces waves. However, an analytical and numerical interrogation of the equations reveals that the system being modeled here is fundamentally different from the accepted reaction model, and isn't quite just a directly "simplified" model. Additionally, I wanted to implement an implicit-explicit (ImEx) scheme to solve the same system, but ended up running out of time.
Overall, it was an interesting experience. If you'd like to read more, learn about the math, and see all the plots, take a look at the project paper!