Flush toilets 🚽 are unsung heroes of modern life. Not only are they super practical; but they can be exciting as well from a fluid mechanics perspective! Let’s postpone the easy jokes for a minute 😉, and give them the Computation Fluid Dynamics (CFD) treatment they deserve.
In the video, a CFD simulation of the flushing process is presented. It was created in OpenFOAM, using a fine hex-core mesh (through snappyHexMesh) and the isoAdvector method (thanks Johan Rønby!), which allows for precise tracking of the free surface.
Creating the toilet geometry was tricky, because of the complexity of the shapes involved (especially for a OnShape beginner like me). And even though I started from a reference picture, it took me three tries until the flow started working as expected; it turns out that details matter in these things!
But I think it was worth it! The results are interesting to look at, and they taught me a few things along the way. It’s nice to see the hidden flow inside the body of the toilet; I’ve never noticed before that there’s usually an internal channel going all around the perimeter. Also interesting to see when and how the siphon activates and deactivates.
Keep in mind the simulation represents a relatively primitive toilet; I saw quite a few pictures of small innovations that more modern toilets have to improve their performance, flush faster, and use less water. It may be interesting for future simulations!
If you are curious, I have uploaded the source code for this case to GitHub:
https://github.com/nicolasbadano/Toilet
What do you think? Did you learn anything new from this? I bet you’ll have a couple of jokes about this as well.