NiHu
2.0
|
This tutorial demonstrates the usage of NiHu for solving an exterior acoustic radiation problem in 3D by means of a collocational type boundary element method (BEM). It is well known that the standard BEM formulation, when applied to an exterior radiation problem, does not have a unique solution at the eigenfrequencies of the dual interior problem. This tutorial presents how two mitigation methods,
are applied to handle the problem.
If you are familiar with the CHIEF and Burton Miller formalisms, you should be able to implement the C++ code based on the previous tutorial A Galerkin BEM for the Helmholtz equation. However, it is worth reading this tutorial, because it will demonstrate how the complete solution is assembled in NiHu for both approaches.
The Helmholtz boundary integral equation
\( \displaystyle \frac{1}{2} p({\bf x}) = \left(\mathcal{M}p\right)_S({\bf x}) - \left(\mathcal{L}q\right)_S({\bf x}), \quad \bf{x} \in S \)
when applied to exterior radiation or scattering problems, does not have a unique solution at the eigenfrequencies of the dual interior problem. It can be shown that the interior mode shapes \( p^*_k({\bf y}) \) and their normal derivatives \( q^*_k({\bf y}) = \partial p^*_k({\bf y}) / \partial n_{\bf y} \) satisfy the boundary integral equation, although, obviously, they have no phyiscal relation to the exterior problem.
The two discussed solution methods mitigate the problem by extending the integral equation by other equations that are not satisfied by the modal solution.
The CHIEF method (the name comes from Combined Helmholtz Integral Equation Formalism) utilises the fact that the mode shapes \( p^*_k({\bf y}) \) do not satisfy the Helmholtz integral with source point \( {\bf x} \) inside the interior volume, if the source point coincides with a nodal location of the mode shape. Therefore, the boundary integral equation is extended by a set of additional equations as follows:
\( \displaystyle \frac{1}{2} p({\bf x}) = \left(\mathcal{M}p\right)_S({\bf x}) - \left(\mathcal{L}q\right)_S({\bf x}), \quad {\bf x} \in S, \\ \displaystyle \phantom{\frac{p({\bf x})}{2}} 0 = \left(\mathcal{M}p\right)_S(\tilde{\bf x}_l) - \left(\mathcal{L}q\right)_S(\tilde{\bf x}_l), \quad \tilde{\bf x}_l \in V^{\text{interior}}, \quad l = 1 \dots K \)
Theoretically, one additional equation would be enough to exclude the fictitious solution. However, as it is difficult to estimate where the nodal locations of the interior problem are, the method is usually applied by selecting a number of randomly chosen interior points \( \tilde{\bf x}_l \).
After discretisation, the following overdetermined linear system of equations is to be solved:
\( \displaystyle \left[ \begin{matrix} {\bf M} - {\bf I}/2 \\ {\bf M}' \end{matrix} \right] {\bf p} = \left[ \begin{matrix} {\bf L} \\ {\bf L}' \end{matrix} \right] {\bf q} \)
where
\( \displaystyle L_{ij} = \left< \delta_{{\bf x}_i}, \left(\mathcal{L} w_j\right)_S \right>_S, \quad \displaystyle M_{ij} = \left< \delta_{{\bf x}_i}, \left(\mathcal{M} w_j\right)_S \right>_S \\ \)
are the conventional system matrices ( \(w_j\) denotes the weighting shape function on the surface) of a collocational BEM, and
\( \displaystyle L'_{lj} = \left< \delta_{\tilde{\bf x}_l}, \left(\mathcal{L} w_j\right)_S \right>_S, \quad \displaystyle M'_{lj} = \left< \delta_{\tilde{\bf x}_l}, \left(\mathcal{M} w_j\right)_S \right>_S \)
are the additional matrices originating from the discretised CHIEF equations.
The Burton and Miller method searches for the solution of the original boundary integral equation and its normal derivative with respect to the normal at \( {\bf x} \):
\( \displaystyle \frac{1}{2} p({\bf x}) = \left(\mathcal{M}p\right)_S({\bf x}) - \left(\mathcal{L}q\right)_S({\bf x}), \quad {\bf x} \in S, \\ \displaystyle \frac{1}{2} q({\bf x}) = \left(\mathcal{N}p\right)_S({\bf x}) - \left(\mathcal{M}^{\mathrm{T}}q\right)_S({\bf x}), \quad {\bf x} \in S \)
where
\( \displaystyle \left(\mathcal{M}^{\mathrm{T}}q\right)_S({\bf x}) = \frac{\partial}{\partial n_{\bf x}}\int_S G({\bf x}, {\bf y}) q({\bf y})\mathrm{d}S_{\bf y} \)
is the transpose of \( \left(\mathcal{M}q\right)({\bf x})\), as differentiation is performed with respect to the variable \( {\bf x} \), and the arising
\( \displaystyle \left(\mathcal{N}p\right)_S({\bf x}) = \frac{\partial}{\partial n_{\bf x}}\int_S \frac{\partial}{\partial n_{\bf y}} G({\bf x}, {\bf y}) p({\bf y})\mathrm{d}S_{\bf y} \)
is operator becomes hypersingular.
The differentiated equation suffers from the problem of fictitious eigenfrequencies too. However, as the eigenfrequencies and mode shapes of the original and differentiated equations never coincide, the simultaneous solution is unique. This solution is found by solving the superposition of the two equations using an appropriate coupling constant \( \alpha \)
\( \displaystyle \left(\left[\mathcal{M} - \frac{1}{2}\mathcal{I} + \alpha \mathcal{N} \right]p\right)_S({\bf x}) = \left(\left[\mathcal{L} + \alpha \mathcal{M}^{\mathrm{T}} + \alpha \frac{1}{2} \mathcal{I}\right] q\right)_S({\bf x}), \quad {\bf x} \in S \)
The collocational discretisation of the above equation is straightforward. However, we should take into consideration that the hypersingular operator's kernel has an \( O(1/r^3) \) type singularity, and needs special treatment. This topic is discussed in details in the tutorial Customising singular integrals.
We are going to implement a Matlab-C++ NiHu application, where
The C++ code is going to be called from Matlab as
[L, M, Lchief, Mchief, Mtrans, N] = helmholtz_bem_3d_fict( surf_nodes, surf_elements, chief_nodes, chief_elements, wave_number);
M
and Mtrans
will contain the discretised identity operator too, as required by the conventional and Burton-Miller formalisms.The header of our C++ source file includes the necessary header files and defines some basic types for convenience. We further include library/helmholtz_singular_integrals.hpp that defines the specialised singular integrals of the Helmholtz kernel for constant triangles.
Two meshes will be created:
surf_mesh
) that contains only triangular elementschief_mesh
) that contains only quadrangle elements Next, we create the discretised function spaces of our mesh. The definitions are straightforward, as only constant triangular boundary elements are dealt with. For the definition of the CHIEF mesh, we immediately apply the dirac view.
The number of degrees of freedom on the radiating surface \( S \) and in the field mesh \( F \) are denoted by \( n \) and \( m \), respectively. After the function spaces are built, the number of DOFs are known, and the memory for the system matrices can be preallocated. The surface system matrices \( \mathbf{L} \), \( \mathbf{M} \), \( \mathbf{M}_\mathrm{transpose} \) and \( \mathbf{N} \) are of size \( n \times n \), whereas the matrices describing the CHIEF equations \( \mathbf{M}' \) and \( \mathbf{L}' \) are of size \( m \times n \). The six system matrices are preallocated by means of the following lines of code.
In the next steps, the five integral operators \( \mathcal{L} \), \( \mathcal{M} \), \( \mathcal{M}^\mathrm{T} \), \( \mathcal{N} \) and \( \mathcal{I} \) are defined. Since the kernel functions depend on the wave number \( k \), which is passed as the fifth right hand side parameter of the mex function, the integral operators are created as follows.
Finally, the system matrices are obtained by the evaluation of the integral operators on the function spaces defined above. Note that as a collocational formalism is applied, the Dirac-view of the test function spaces is taken for the boundary integrals.
M_surf
and Mt_surf
contain the evaluation of two integral operators, \( \mathcal{M} \) and \( \mathcal{I} \), or \( \mathcal{M}^{\mathrm{T}} \) and \( \mathcal{I} \) and stores the summed results.The example creates a sphere surface of radius \( R = 1\,\mathrm{m} \) centred at the origin, consisting of triangular elements only. The CHIEF points are located on the surface of a cube, shifted from the origin.
The Neumann boundary conditions are defined by a point source located at the point \( \mathbf{x}_0 \). By this definition the geometry is considered transparent, and the resulting acoustic fields on \( S \) are obtained as the acoustic field of the point source.
The compiled mex file can be called from Matlab, as demonstrated in the example below:
The generated plot looks like
And the resulting errors read as
Conventional log10 error: 0.025 CHIEF log10 error: -2.344 Burton-Miller log10 error: -1.680
The full codes of this tutorial are available here: