Acoustic Simulations via Transmission Line Matrix

Sign in to queue


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.

Transmission Line Matrix for acoustic simulations

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 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...


C#, Coding4Fun, VB.NET

The Discussion

  • User profile image


    This is quite cool, and Im really glad you found it worth your time, even though the 3D is only a viewer Smiley

    I have updated the source code somewhat since you took the screen short, and It can now generate rain drops as well. This brings me to another thing you could do with this code, generate a Boat Wake by following the logic behind this answer on an  unrelated question.

    All you need to do is to replace the commented out code with the snipplet below:

        Dim rand As New Random

        Dim BoatX As Integer = 0
        Dim BoatY As Integer = 50
        Private Function GenerateRandomDropPoint() As Point
            'Generate Rain drop
            'Dim x, y As Integer
            'x = rand.Next(0, TLM.Dimensions - 1)
            'y = rand.Next(0, TLM.Dimensions - 1)
            'Return New Point(x, y)

            'Generate Boat wake
            If BoatX < TLM.Dimensions Then
                BoatX += 2
                BoatX = 0
            End If
            Return New Point(BoatX, BoatY)

        End Function

     Check the box Create Gaussian Raindrops, and play around with the Time step (I set it to 0) and increase adjust the Source Frequency (between 8 and 15 seem to generate a realistic 2D image of a boat wake). Its not quite right as the Gaussian Pulse isnt properly designed as of now, but I would fix that on a later occasion.

    Kenneth Haugland


Add Your 2 Cents