Today's project from Kenneth Haugland is unusual one and not something I would use often (or probably ever), but is still has an appealing, interesting and fun to play with, project.
Simulations of acoustic waves are a topic of intense interest in many circumstances, but they are difficult to achieve with minimal use of computer power. There are several candidates, but they all have pros and cons, as we shall see. One of the most precise simulation techniques is the Transmission Line Matrix, TLM for short, as it is capable of simulating any situation given the right preconditions. Some of the best known available techniques in acoustics are:
- Ray tracing algorithms
- FDTD - Finite Difference Time-Domain
- TLM - Transmission Line Matrix
- FEM - Finite Element Method
- BEM - Boundary Element Method
Ray tracing is normally much used in concert hall acoustics, as the dominant domain (the frequencies it is valid for) often falls within the range where one can apply ray tracing to. In general this is valid for the higher frequency domain, were a sufficiently large portion can be
The so called Finite Difference Time Domain technique (FDTD for short) is actually the exact same for acoustics, as the FD-TD method solves the wave equation while the TLM provides a physical model of propagation, this means that the limitations and advantages are exactly the same for the two. It should be mentioned that the TLM and FDTD can be used both in acoustics and in electrodynamics, as they are both waves that can be modelled by voltage and currents in electromechanic waves, and pressure and particle velocity in acoustics.
The FEM method is quite popular algorithm used in many commercial products, and is especially useful for simulating wave equation at the lower frequency domain, as the method must have points in accordance to the frequency that its simulates. The FEM technique solves the Helmholtz wave equation, were one needs to insert the frequency one wish to solve for first.
The BEM method is quite popular to generate exact solutions for more limited problems, for instance like the propagation of sound waves through slits and other openings. It very quickly gets complicated if the geometry gets more varied, used in simple cases and is an analytical technique at hart.
The goal of this article is to show just how simple a wave simulation could be done by, and how intuitive the process of designing it actually is.
Make sure you click though and read the full article. He provides some great information, details and the math behind this.
The source is also available (in VB.Net and C#), which ran the first time for me. The project structure is simple, allowing you to focus on the true complexity...
One Note: If you grab this, you click on the 2D side. The 3D is display only (can you tell I spent a bit of time clicking away on the 3D tab? :/ )
Also while you can click on the live/running simulation, it's actually more fun to set up before, adding sources, walls, etc and then start it.
So while it might not be something most of you need, the code and the execution is still cool and I'll bet there's a good deal we can learn from this...