We have received a lot of questions and concerns recently by clients about Olive Tree Lab taking a lot of time to calculate results. Indeed, acoustics calculations in Olive Tree Lab usually take more time than on any other typical noise mapping or room acoustics tool. So, is Olive Tree Lab a slow software application? Well, it is an imperative that it always takes time to do things properly! Quality is not achieved with shortcomings. But does that mean that Olive Tree Lab users are doomed to eternal waiting? No, they are not! Of course, they will need to master their tool. Wild horses need great stallions and great tools need great users. It does not make sense for a Ferrari to be driven by my grandma.
In this post I will elaborate on some best practices on how to make calculations in Olive Tree Lab more efficient and spend less time in waiting. Before i get into these practices, i would like to mention that we do our best from our side to make the calculations as fast as possible without compromising on accuracy and without introducing physically unfounded methods. We use smart detection algorithms that use techniques like visibility tracing, prioritized tracing and hybrid tracing to accelerate image source detection and diffraction path detection. We are actively engaged in research in the area of accelerating path detection algorithms with relevant publications. We use parallel programming wherever this is possible and we have also developed GPU based acoustic calculations, waiting to be introduced as soon as we feel that the technology is mature enough for mainstream use.
Now let's see how we can make our calculations in Olive Tree Lab faster. First of all, in order to speed up the calculation process, we need to understand why it is taking so long. The most important bottleneck in the calculation process is the path detection process. All exhaustive path detection algorithms are of exponential complexity, where the exponent is the order of reflection or diffraction that needs to be detected. This means that the calculation steps increase exponentially as we increase the orders in each case. The number that is raised to this exponent is the number of surfaces or edges respectively. So the basic quantities we need to deal with in this case is the number of surfaces and the order of reflections and diffractions. The less are both quantities the much faster the calculations will be.
Other factors that affect the calculation time, not in an exponential way though but in a linear way, are the following a) Source-Receiver combinations. Calculations need to be executed for each source-receiver combination. So a model with 10 sources and 10 receivers will take 100 times more time to be calculated than a model with a source and a receiver. b) Sound Paths to be calculated. The less paths you need to calculate the faster the calculation will finish. c) Spectrum Analysis. The number of frequencies to be calculated affects linearly the sound path calculation stage.
Now that we have gone through the major parameters that affect calculation time, let's see how we can optimize it.
An important engineering principle in Olive Tree Lab calculations is that as we increase the calculation complexity, the results do not approach the solution in the same rate that the complexity increases. In computational terms the relation of accuracy increase to calculation complexity increase is a sublinear function. As a result, an OTL user should find the fine balance between accuracy and calculation time. In other words he/she should make the calculations as complicated as the expected accuracy justifies them to be.
So how do we achieve the above? Let me outline my approach on this in a typical large project. Let's suppose a project with 500 surfaces, 10 sound sources and sound receivers. I would do the following.
1) Make all the obviously irrelevant surfaces in the model inactive (walls that will obviously not contribute to the sound field).
2)Choose a representative Source-Receiver combination and deactivate the rest.
3)Run a simple calculation with a very basic complexity e.g. first order reflections, first order diffractions and 1/3 octave calculations.
4)Progressively increase the calculation complexity and recalculate.
5)Compare subsequent calculation times and calculation results. Evaluate if the increase in accuracy justifies the extra cost in calculation time. Let's suppose that a calculation which took 2 minutes yields an SPL 0.5db higher than a calculation that took 10 seconds. In this case I might decide that it is not worth the additional time. While thinking about the time that I consider valuable, I can make some projections about the final calculation time e.g. with 2 minutes for a source receiver combination, we can estimate 200 minutes for 100 combinations compared to 10 seconds x 100, which is around 14 minutes.
6)As soon as I decide where i want to compromise between accuracy and calculation time, I enable all my sources and receivers and I execute my full calculation.
The above procedure can be changed slightly based on the project requirements but it generally highlights what the way of thinking should be about getting optimal calculation times in Olive Tree Lab.
In the future, I will post more ideas on how to make OTL sound propagation calculations more efficient.