Inspiration
Our project was inspired by a demonstration of resonance on Chladni plates in our Waves and Vibrations class. We were eager to know more about the effects of the boundary conditions as well as the initial conditions on these resonance patterns. Not being able to receive answers at the time, we decided that this was the perfect opportunity to test it for ourselves.
What it does
Our program is designed to simulate the resonance patterns and sounds produced by a membrane of an arbitrary shape that receives an impulse at an arbitrary location on its surface. The shape of the membrane is drawn by the user and can be any 2 dimensional closed shape imaginable. The user can then choose a position on the surface of this shape to send an impulse. These boundary and initial conditions are then solved numerically to output the vibrational eigenfrequencies.
How we built it
We built it entirely using Python. We used the Fenics/Dolfin modules for the back-end and we used the Pygame module for the front-end of our project.
Challenges we ran into
Our main problem was with the Fenics module because we needed to get used to all the proprietary types for meshes and functions. We also had to switch from getfem to Fenix because the getfem library was only giving us the trivial solution to the wave equation, that is, no wave at all. We also had problems with the GUI as it was quite difficult to validate the user input that would be passed to our solver. The difficulty lied in translating linear algebra theory to Python code. In the beginning, we had no idea what type of data would be passed between the front-end and back-end, thus we faced a challenge in ensuring the cooperation between them. Finally, we encountered problems in the calculation of the coefficient for the general solution which means that our animation code is unfinished for when the user strikes the membrane.
Accomplishments that we're proud of
We are very proud to have managed to complete a major part of the project which was solving for arbitrary boundary conditions. As we had next to no experience in programming numerical solvers, we had a mountain of challenges to overcome to achieve this.
What we learned
We learned that it is very difficult to model physical phenomena with computer simulations, especially when trying to model an arbitrary input as we have nothing to compare to.
What's next for The sound of geometry
As we did not manage to implement the arbitrary initial conditions (impulse) in our numerical solver, this is definitely the next step that we will be working on. We are also interested in expanding our program to 3 dimensions. This would be quite the challenge but also a great learning experience.

Log in or sign up for Devpost to join the conversation.