Monthly Archives: January 2016

Room modes in 3D using sketchup and FEM

In this post, I’m examining the low frequency response of my living room. I’m going to compare it to a theoretical model obtained using FEM and see how much useful information FEM gives me.

I’m going to do the following:

  • Model the room using sketchup
  • Import it into python
  • Place the subwoofer in the corner
  • Calculate the response at the listening position using FEM
  • Measure the real response at the same position and compare it with the result of the model

The setup

My living room

My living room

My living room has two open doorways without a door, which means that the geometry will usually be like the one to the left (with all other doors closed). I was really curious as to what the effect of the two “chambers” (the entryway and the kitchen) have on the response of the room.


The mesh

The mesh

I divided the model into tetrahedrons using MeshPy, resulting in the figure you can see above. The mesh is quite coarse, but dense enough for the purpose. In addition, I used linear elements. The room modes took about a second to calculate once the mesh was done (with the meshing only taking a few seconds), which I found impressive.

I added a tiny amount of damping to the system and assumed that the boundaries were perfectly rigid.

The measurement

I recorded the signal in the middle of the room and applied the popular exponential sine sweep technique by Farina.

The results

The rigid assumption resulted in the resonant response being slightly “higher up” as compared to the measured one. Still, I find the correlation between the responses below 100 Hz fantastic. Apparently there are some details above 100 Hz which should be taken into account (probably furniture, and also less damping), but below 100 Hz there are a lot of similarities. Additionally, I’m thinking that the mesh with linear elements might not be dense enough for over 100 Hz. The speaker I used has a poor response below 50 Hz, so the sharp peaks there were regrettably not visible in the measurement. Note that I wasn’t really measuring the response at 170 dB 🙂 .


The modes

I tried a few different techniques to visualize the modes, and found it surprisingly difficult to get a nice looking result.

Using iso surfaces in mayavi resulted in a result I think looks decent. Here’s the mode representing the peak you can see at about 50 Hz, with the surfaces showing constant pressure values. As you can see, the whole room is actively participating in the mode.

Mode at ~50 Hz

Mode at ~50 Hz

Another interesting mode is the lowest mode at ~20 Hz. It’s far lower than one would estimate using just the rectangular part of the room (37 Hz). It’s fascinating how the gradient of the pressure field goes from one chamber to the other.

Lowest mode at ~20 Hz

Lowest mode at ~20 Hz


The living room seems to be a prime example of a room where FEM gives very nice results. I would argue that there would be absolutely no point in trying to deduce the lowest modes from the rectangular dimensions of the room, when the real room modes are so specific to the whole geometry. This analysis is also really quick to do, so it doesn’t add that much extra time to a project.