An open source implementation of the Fourier pseudospectral time-domain (PSTD) method for computing the propagation of sound is presented, which is geared towards applications in the built environment. Being a wave-based method, PSTD captures phenomena like diffraction, but maintains efficiency in processing time and memory usage as it allows to spatially sample close to the Nyquist criterion, thus keeping both the required spatial and temporal resolution coarse. In the implementation it has been opted to model the physical geometry as a composition of rectangular two-dimensional subdomains, hence initially restricting the implementation to orthogonal and two-dimensional situations. The strategy of using subdomains divides the problem domain into local subsets, which enables the simulation software to be built according to Object-Oriented Programming best practices and allows room for further computational parallelization. The software is built using the open source components, Blender, Numpy and Python, and has been published under an open source license itself as well. For accelerating the software, an option has been included to accelerate the calculations by a partial implementation of the code on the Graphical Processing Unit (GPU), which increases the throughput by up to fifteen times. The details of the implementation are reported, as well as the accuracy of the code. Program summaryProgram title: openPSTD v1.1 (v1.0 is the version without the GPU acceleration)Catalogue identifier: AFAA_v1_0Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AFAA_v1_0.htmlProgram obtainable from: CPC Program Library, Queen’s University, Belfast, N. IrelandLicensing provisions: GNU General Public License, version 3No. of lines in distributed program, including test data, etc.: 45339No. of bytes in distributed program, including test data, etc.: 4139815Distribution format: tar.gzProgramming language: Python (as comes with Blender 2.72).Computer: Variable.Operating system: Windows, Linux, Mac OS X.RAM: From 250 MB for a typical geometry up to 1 GB for large geometries (with about 4M grid points)Classification: 4.3, 12.External routines: Blender 2.72, NumPy, SciPy, PyFFT, PyOpenCL, PyCUDANature of problem: Sound propagationSolution method: Fourier pseudospectral time-domain methodRestrictions: Structured grid, two dimensions, real-valued boundary conditions onlyUnusual features: Implementation of code using Blender/Python including GPU acceleration; subdomain modelling within Fourier pseudospectral methodRunning time: Depending on the dimension of the problem, calculation times take minutes up to hours
Read full abstract