Acoustic Boundary Element Solver.

















Dr Dan J. O’Boy






All rights reserved.


This manual is provided for reference and may not be copied and / or altered without the permission of the author. References to the manual should be made whenever material is used.


The manual provides guidance and information in order to use the Sonitus BE program and may be altered without notice being provided. No responsibility is assumed or given for any damage, commitments, liabilities or inaccuracies incurred as a result of the information provided.


All material is the intellectual property of this company through the owner Dr Dan J. O'Boy, who applies the property rights.

The terms and conditions are applied through and in accordance with English law and any disputes will be subject to the jurisdiction of the courts of England and Wales of the United Kingdom.




Revision 1


Copyright ©2008


Dr Dan J O’Boy

4 The Green






United Kingdom




Sonitus BE                 V1


I.            Introduction


Sonitus BE is a versatile boundary element solver for acoustic engineering problems. It can provide the sound pressure, fluid velocity or intensity in an enclosure or in the free field for a range of problems.


Boundary Element Methods (BEM) are a class of numerical solution method which are efficient for the solution of acoustic problems and differ when compared to finite element methods as they do not require a volume mesh to be generated, only a surface mesh, reducing the complexity of the problem domain.


This document details some of the technical code comprising the Sonitus BE program, including subroutine calls. The program is available in Windows or Linux specific versions. Sonitus BE is the numerical solver that takes the input data files describing the acoustic problem and constructs the matrix problem. It then automatically solves this matrix problem and uses the data recovery points specified in the input file to generate a results file.


The program runs as a standalone application, without graphics interface. This deliberately allows the user to choose the graphical user interface and results processing software from a range of sources.


·         Commercial CAD packages.

·         Commercial meshing packages.

·         Matlab standalone code for input geometry.                    (Recommended)

·         Sonitus Pre-BE input file processor.                                 (Recommended)

·         Commercial result processing software.

·         Matlab standalone code for results processing.                (Recommended)

·         Sonitus Post-BE result processing software.                    (Recommended)


In this manual, the requirements of the boundary element program are provided in terms of the minimum recommended specifications in section II. A background of the different methods available for the study of acoustic problems is provided in section III, which shows the advantages (and disadvantages) of the boundary element method.


As the boundary element method is described in this manual is mathematical terms, a nomenclature is provided in section IV and a terminology page summarising important concepts in section V.


The mathematical formulation of a boundary integral method is then described in section VI, specifically the indirect boundary element method, the method of discretising the surface of the geometry in the acoustic domain, the mathematical routines used to integrate a surface element (both quadrilateral and triangular). The source location and amplitude are then described as are the data recovery parameters. A numerical routine for the solution to the matrix problem is briefly summarised.


As the Sonitus BE program is a stand-alone console based program, the input and output file definitions are described in sections VII and VIII respectively.


An overview of the program code is provided, so that a user may understand the organisational hierarchy of the program (section IX), functions and subroutines (section X).


A number of sample files are provided for reference and are detailed in section XI. Notes on the program are found in section XII. A summary of this manual is provided in section XV.


II.            Requirements


The requirements are highly dependent on the geometry size, mesh density and frequency range which is required. The program runs as a standalone application, without graphics interface and can therefore run either as a background activity or offline, monitored through a network connection on a server. The recommended starting points are shown in Table 1.


For pre-processing requirements, Table 1 provides useful guidance, however for other commercial packages, their minimum specifications should be consulted.


For post-processing in Matlab in Linux, it is recommended that a good graphics card be included, with OpenGL support.



Minimum specification

Microsoft Windows


Windows XP, Service Pack 3


Opensuse 10.0

Memory (dependent on geometry size and mesh density)

2Gb RAM minimum

Disk storage size for output files



Intel Core 2 Duo CPU2GHz

Graphics (for postprocessing)

Matlab V7

Table 1 Minimum recommended computer specifications


To compile the source code in Linux, type “make” at the console.

To compile the source code in Windows using MinGW type “g++ SonitusBE.cpp -o SonitusBE.exe

            Alternatively, type “make” at the console.

To compile using operating specific directives (used for pausing the screen to show an error message), include the flag –dWINDOWS or –dLINUX in the compile command string. See makefile for example.


Under Windows XP and using the MinGW gcc compiler, it is possible to create a structure which is large enough to cause memory issues. The solution is to increase the available stack size by supplying the linker with a sufficiently large maximum memory allocation so that a stack overflow never occurs. This is currently available for MinGW by including the flag -Wl,--stack=1073741824 at compile time. This option leads to a maximum Windows stack size of 1Gb.


Note that due to dynamic allocation, Linux does not require this maximum stack size to be increased. The computer code has been written using dynamically allocated memory rather than static matrix sizes, and through passing a memory reference (pointer) to subroutines rather than copying variables, however, engineering problems typically require the solution of large matrices. While there are methods to decompose large matrices into smaller sizes for more appropriate handling, this requires application specific analysis which can often lead to longer development time for diminishing returns.


For compiler recommendations using modified source code, see Table 2.


Operating system


Microsoft Windows


MinGw porting gcc


gcc (C++ implementation)

Table 2 Compiler recommendations for source code modification


The command line is SonitusBE INPUTFILE OUTPUTFILE


For Microsoft Windows, running in a console, the typical output would be

SonitusBE.exe SampleFiles\FreeField.dat output.rslt            or

SonitusBE.out SampleFiles\FreeField.dat output.rslt


The output is directed to the screen by default. To direct this to an output file,

SonitusBE.exe SampleFiles\FreeField.dat output.rslt > screenoutput.txt