NiHu
2.0
|
NiHu is an open source C++ and Matlab toolbox used for solving boundary value problems of partial differential equations by means of the boundary element method (BEM).
The core modul of the toolbox provides a general framework to numerically evaluate weighted residual integrals of the form
\( \displaystyle W_{ij} = \left<t_i, \left(\mathcal{K}d_j\right)_S\right>_F = \int_F t_i({\bf x}) \int_S K({\bf x}, {\bf y}) d_j({\bf y}) \mathrm{d} S_{{\bf y}} \mathrm{d} F_{{\bf x}} \)
where \( S \) denotes a boundary surface, \( t_i \) and \( d_j \) denote base functions of discretised function spaces, and \( \mathcal{K} \) denotes an integral operator defined by its kernel function \( K \). Such integrals frequently arise when the numerical solution of boundary value problems is formalised using the finite or boundary element methods (see for example An introductory BEM example).
The fast multipole extension of the toolbox provides a programming environment to evaluate weighted residual matrix-vector products of the type
\( \displaystyle f_{i} = \sum_{j} \left<t_i, \left(\mathcal{K}d_j\right)_S\right>_F \sigma_j = \sum_{j} \int_F t_i({\bf x}) \int_S K({\bf x}, {\bf y}) d_j({\bf y}) \mathrm{d} S_{{\bf y}} \mathrm{d} F_{{\bf x}} \sigma_j \)
where \( \sigma_j \) denotes an element of the discretized excitation. Matrix vector products of the above type are accelerated using the fast multipole method applied to the specific kernel function \( K({\bf x}, {\bf y}) \).
The main motivation of developing NiHu is to provide a unified open source software framework for BEM problems of different kinds. Our implementation is capable to generate BEM executables
The main C++ core of NiHu can be considered as a skeleton that defines different BEM problems in a general way, by reflecting mathematics behind boundary elements in the C++ code. The C++ code snippet below demonstrates the capabilities of NiHu's application layer:
The 7-line code snippet defines a collocational 3D BEM for the Laplace equation, implemented with constant triangular and quadrilateral elements, and computes the system matrices of the discretised boundary integrals.
Specific aspects of BEM implementations are developed in C++ libraries designed to be easily customisable by researchers and developers. Developers may customise
in order to adapt NiHu to their specific problems.
The Matlab shell layer provides extensive pre- and post processing features like
and makes integration with other software tools straightforward.
The introduced concept allows a beneficial application of the toolbox in