# BEM3D: Boundary Element Method

The Boundary Element Method (BEM) is a technique for the solution of partial differential equations arising in various physical problems, especially those governed by a potential, such as fluid dynamics and wave problems. The BEM3D library which you can download here gives a set of codes and utilities for the solution of boundary integral problems, with a focus on wave scattering and radiation and quasi-potential aerodynamics.

To install the codes, you will need to first install Stéphane Popinet's GTS library for triangulated surfaces, Aleksandar Samardzic's GNU libmatheval (optional, but some parts of BEM3D will not work without it) and, from this site, WMPI, SISL and, if you want the experimental fast(ish) multipole support, GMC. If you want to solve problems on a geometry more complicated than a sphere, you will probably want to install Christophe Geuzaine and Jean-François Remacle's GMSH, which is also BEM3D's preferred visualization tool.

The codes which are available when you install BEM3D are the solvers
and the various ancillary programs for pre- and post-processing. The
main solvers, which are useful as examples of the coding, do matrix
assembly (`bem3d-assemble`) and solution
(`bem3d-solve`) for Laplace and Helmholtz problems on
arbitrary geometries. If installed, there may also be parallel
versions of these codes, and serial implementations of fast
multipole versions (`bem3d-assemble-fmm`
and `bem3d-solve-fmm`) which have the same user interface,
with some additional options to control the fast multipole
behaviour. Boundary conditions are generated separately by a
ancillary codes.

The second main code in the library is `bem3d-aero`, a
potential aerodynamics code for lifting bodies in arbitrary motion,
including deforming motion. This has already been used to model the
hydrodynamics of swimming fish, as well as some standard aerodynamic
test cases. The examples include the extraction of a pressure
distribution from the surface solution for a standard swept wing
test case.

The ancillary tools available in the library include programs to convert from the GMSH mesh file formats to allow BEM3D to use meshes produced by GMSH; to convert to GMSH's visualization format; to generate boundary conditions for some standard situations; to perform postprocessing and evaluation of functions of solution data.

Sample inputs and results for BEM3D can be found on the examples page, including an aerodynamic calculation for a swept wing and for acoustic scattering by a sphere