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.