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 summary Program title: openPSTD v1.1 (v1.0 is the version without the GPU acceleration) Catalogue identifier: AFAA-v1-0 Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AFAA-v1-0.html Program obtainable from: CPC Program Library, Queen's University, Belfast, N. Ireland Licensing provisions: GNU General Public License, version 3 No. of lines in distributed program, including test data, etc.: 45339 No. of bytes in distributed program, including test data, etc.: 4139815 Distribution format: tar.gz Programming 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, PyCUDA Nature of problem: Sound propagation Solution method: Fourier pseudospectral time-domain method Restrictions: Structured grid, two dimensions, real-valued boundary conditions only Unusual features: Implementation of code using Blender/Python including GPU acceleration; subdomain modelling within Fourier pseudospectral method Running time: Depending on the dimension of the problem, calculation times take minutes up to hours.
- Fourier pseudospectral method
- Linearized Euler equations