NiHu  2.0
3D Helmholtz conventional collocational BEM with MEX interface

Table of Contents

Description

This application implements the BEM matrix assembly for 3D Helmholtz problems. The main features of the application are the following:

  • Heterogeneous meshes with triangular or quadrilateral elements
  • Collocational formalism
  • MEX interface for calling the application from Matlab
  • Matrices assembled directly into memory allocated by Matlab

The assembled surface and field BEM matrices are utilized for solving the BEM system of equations and computing the scattered field at the field points.

Note: this application does not implement any techniques for mitigating fictitious eigenfrequencies.

Usage

The application can be called from Matlab as

[Ls, Ms, Lf, Mf] = helmholtz_3d_coll_bem(s_nodes, s_elems, f_nodes, f_elems, k);

Input parameters:

  • s_nodes – Real matrix of type \( N \times 3 \) containing surface node locations ( \( N \) denoting the number of surface nodes)
  • s_elems – Real matrix of type \( E \times 9 \) containing surface element connectivity ( \( E \) denoting the number of elements on the surface). The first column contains the type identifier of each element.
  • f_nodes – Real matrix of type \( M \times 3 \) containing Field mesh node locations, similar to s_nodes
  • f_elems – Real matrix of type \( F \times 9 \) containing field mesh element connectivity, similar to s_elems
  • k – Real scalar wave number

Output:

  • Ls – Single layer potential surface matrix ( \( E \times E \) full complex valued matrix)
  • Ms – Double layer potential surface matrix ( \( E \times E \) full complex valued matrix)
  • Lf – Single layer potential field matrix ( \( F \times F \) full complex valued matrix)
  • Mf – Double layer potential field matrix ( \( F \times F \) full complex valued matrix)

For solving the Neumann problem on the surface one can use

ps = Ms \ (Ls * qs);

Similarly, the Dirichlet problem is solved as

qs = Ls \ (Ms * ps);

with ps and qs denoting the \( E \times 1 \) complex valued column vectors containing the field and its normal derivative in the surface collocation points, respectively.

Finally, using the vectors ps and qs the scattered field at the collocation points of the field mesh is found as

pf = Mf * ps - Lf * qs;

The complex valued, \( F \times 1 \) type vector contains the scattered field at the collocation points of the field mesh.

Example