The BEM-based engineering library

View the Project on GitHub temf/bembel


License: GPL v3 GitHub release (latest by date) DOI coverage report

Table of contents

  1. Introduction
  2. What is a Bembel?
  3. Features
  4. How to Run our Code
  5. Structure of the Repository
  6. Documentation
  7. Known Bugs and Upcoming Features
  8. Publications, Preprints, and how to cite
  9. Contributers
  10. About the People
  11. Funding

1. Introduction

Bembel is the Boundary Element Method Based Engineering Library written in C++ to solve boundary value problems governed by the Laplace, Helmholtz or electric wave equation within the isogeometric framework [6,7,8,9]. It was developed as part of a cooperation between the TU Darmstadt and the University of Basel, coordinated by H. Harbrecht, S. Kurz and S. Schöps. The code is based on the Laplace BEM of J. Dölz, H. Harbrecht, and M. Multerer, [5,13] as well as the spline and geometry framework of F. Wolf. The code was extended by J. Dölz and F. Wolf in early 2018 to cover electromagnetic applications [8,9]. An introduction to the code has been published in [6]. If you utilise our code as part of a publication, we would appreciate it if you cite [6].

2. What is a Bembel?

A traditional Hessian ceramic, as depicted in our logo. Quoting Wikipedia:

Most establishments also serve Apfelwein by the Bembel (a specific Apfelwein jug), much like how beer can be purchased by the pitcher in many countries. The paunchy Bembel (made from salt-glazed stoneware) usually has a basic grey colour with blue-painted detailing.

3. Features

Current key features include

4. How to Run our Code

You need to install the Eigen3 library, see Eigen’s Documentation for help. We do not rely on any other external libraries, except for the standard template library. Thus, having installed Eigen, Bembel should run out of the box. If you want to use Bembel as part of your application, simply add the Bembel/ directory to your includes.

If you want to run the provided examples and tests, you can utilize the provided CMakeLists.txt. Compile the code with:

$ cmake -B build .
$ cmake --build build --config release

There also exist a debug config.

The CMake-File checks for installations of Eigen via the corresponding Eigen3Config.cmake. On Unix you may run apt install libeigen3-dev, or on Mac with Homebrew brew install eigen, and everything should work. Alternatively, you can delete the line find_package (Eigen3 3.3 REQUIRED NO_MODULE) and all lines of the type target_link_librarires(... Eigen3::Eigen) from CMakeLists.txt, and give a path to the eigen headers as an include directory manually.

Then, the examples and tests should compile without any issues. You may run all tests by calling ctest from the build/ directory after a successful compilation.

The geometry files required to run the examples can be found in the geo/ folder.

5. Structure of the Repository

The general structure of the repository looks as follows.

The Bembel/src/ directory leads to folders corresponding to these modules, which include the actual implementation. The folder examples/ contains short and well documented examples for Bembels functionality and tests/ contains the tests for Bembel.

6. Documentation

A good place to start are the examples in the examples/ folder, together with publication [6]. Apart from that, a Doxygen documentation is available.

7. Known Bugs and Upcoming Features

For a list of known bugs and upcoming features, please have a look at the issue tracker on github.

8. Contributing to Bembel

Any contribution to this project in fixing a bug or implementing a feature is welcome. Create a fork of this repository and create a pull request after your finished the implementation of the feature. To successfully merge your pull request you should follow our Coding Guidelines

9. Publications, Preprints, and how to cite

The following articles and preprints influenced the development of Bembel. We appreciate a citation of [6] if you use it in one of your articles.

[1] A. Buffa, J. Dölz, S. Kurz, S. Schöps, R. Vázques, and F. Wolf. Multipatch approximation of the de Rham sequence and its traces in isogeometric analysis. In: Numer. Math., 144, 201-236, 2020. To the paper. To the preprint.

[2] J. Dölz. A Higher Order Perturbation Approach for Electromagnetic Scattering Problems on Random Domains. In: SIAM/ASA J. UQ, 2020, 8(2). To the paper.

[3] J. Dölz. Data sparse multilevel covariance estimation in optimal complexity. Preprint available, 2023. To the preprint.

[4] J. Dölz, H. Harbrecht, C. Jerez-Hanckes and M. Multerer. Isogeometric multilevel quadrature for forward and inverse random acoustic scattering. In: Comput. Methods Appl. Mech. Engrg., 388, 114242, 2022. To the paper.

[5] J. Dölz, H. Harbrecht, and M. Peters. An interpolation-based fast multipole method for higher-order boundary elements on parametric surfaces. In: Int. J. Numer. Meth. Eng., 108(13):1705-1728, 2016. To the paper.

[6] J. Dölz, H. Harbrecht, S. Kurz, M. Multerer, S. Schöps, and F. Wolf. Bembel: The Fast Isogeometric Boundary Element C++ Library for Laplace, Helmholtz, and Electric Wave Equation. In: SoftwareX, 11, 10476. To the paper.

[7] J. Dölz, H. Harbrecht, S. Kurz, S. Schöps, and F. Wolf. A fast isogeometric BEM for the three dimensional Laplace- and Helmholtz problems. In: Comput. Methods Appl. Mech. Engrg., 330:83-101, 2018. To the paper. To the preprint.

[8] J. Dölz, S. Kurz, S. Schöps, and F. Wolf. Isogeometric Boundary Elements in Electromagnetism: Rigorous Analysis, Fast Methods, and Examples. In: SIAM J. Sci. Comput., 41(5), B983-B1010, 2019. To the paper. To the preprint.

[9] J. Dölz, S. Kurz, S. Schöps, and F. Wolf. A Numerical Comparison of an Isogeometric and a Parametric Higher Order Raviart–Thomas Approach to the Electric Field Integral Equation. In: IEEE Trans. Antenn. Prop., 68(1), 593–597, 2020. To the paper. To the preprint.

[10] J. Dölz, O. Palii and M. Schlottbom. On robustly convergent and efficient iterative methods for anisotropic radiative transfer. In: J. Sci. Comput., 2022, 90(3). To the paper.

[11] M. Elasmi, C. Erath and S. Kurz. Non-symmetric isogeometric FEM-BEM couplings. In: Adv. Appl. Math. Mech., 2021, 47(61). To the paper.

[12] H. Harbrecht, M. Multerer and R. von Rickenbach. Isogeometric shape optimization of periodic structures in three dimensions. In: Comput. Methods Appl. Mech. Engrg., 391, 114552, 2022. To the paper.

[13] H. Harbrecht and M. Peters. Comparison of fast boundary element methods on parametric surfaces. In: Comput. Methods Appl. Mech. Engrg., 261-262:39-55, 2013. To the paper.

[14] W. Huang and M. Multerer. Isogeometric analysis of diffusion problems on random surfaces. In: APNUM, 179, 50-65, 2022. To the paper.

[15] S. Kurz, S. Schöps, G. Unger and F. Wolf. Solving Maxwell’s Eigenvalue Problem via Isogeometric Boundary Elements and a Contour Integral Method. In: Math. Meth. Appl. Sci., 2021, 44(13). To the paper.

[16] M. Liebsch, S. Russenschuck and S. Kurz. BEM-Based Magnetic Field Reconstruction by Ensemble Kálmán Filtering. In: Comput. Methods Appl. Mech. Engrg., 2022, forthcoming. To the paper.

[17] R. Torchio, M. Nolte, S. Schöps and A. E. Ruehli. A spline-based partial element equivalent circuit method for electrostatics. In: IEEE Trans. Dielectr. Electr. Insul., 2022, forthcoming. To the paper.

10. Contributors

Contributors include (alphabetically):

11. About the People

12. Funding

Work on Bembel was conducted with the following financial support (alphabetically):