Boundary Integral Equations: tutorials and resources
Boundary integral equations (BIEs) are a wonderfully efficient way to solve
PDE boundary value problems (BVPs) or eigenvalue problems (EVPs) with constant (or piecewise-constant) coefficients. This includes elliptic PDE such as the Laplace, Helmholtz, Maxwell, and Stokes equations. Much of my recent research is on better ways to do this. Here are some resources on theory and numerical methods.
Mathematical theory resources
- David Colton and Rainer Kress,
Integral equation methods in scattering theory (Wiley, 1983).
Helmholtz and Maxwell equations in 3D. Chapter 3 has useful proofs
including the "inside-out" trick for existence for the transmission BVP.
- David Colton and Rainer Kress, Inverse acoustic and
electromagnetic scattering theory (Springer, 1998).
Has a good summary for the Helmholtz (including the 2D case, and numerics including the Martensen-Kussmaul spectral quadrature) and Maxwell equations.
- David Colton, Partial Differential Equations: An Introduction
(Random House, 1988). Unusally detailed on Bessel functions and
the Helmholtz equation in 2D. Includes proof of jump relations that
relies on "blurring" the boundary.
- Rainer Kress, Linear Integral Equations (Springer, 1999).
Chapter 6 has potential theory for Laplace equation. Chapter 12 has the Nystrom
method.
- My handwritten class notes for Math 126. Starting at p.25, although the earlier stuff is useful numerical analysis background. This draws from the above Kress and Colton books.
- Andrea Moiola's beautiful and visual 78 pages of course notes on frequency-domain scattering and BIE. They have a variational (ie, Galerkin) flavor and focus on analysis, but have many practical tips for the numerical side too.
Numerical methods and resources for coding schemes yourself
Established numerical methods:
- Computational Tools 2024 Flatiron Institute workshop GitHub site, with many introductory slides and MATLAB codes, including
2D BIE introduction (Barnett and Agocs).
- Review talk on BIE Nystrom quadratures from CSE19 in Spokane, WA:
slides (3.6 MB).
- Go through the homework exercises in Math 126, starting around HW4 #2. Note, there are solution notes.
- My tutorials from our 2014 CBMS conference:
- tutorial
on quadrature for BIEs (with example code bundle and exercises).
This covers mostly Laplace BVPs on smooth curves in 2D,
both global and panel quadratures. The only code currently included for
Helmholtz is based on a simple but somewhat inefficient Kapur-Rokhlin scheme.
- Handwritten notes from the accompanying chalk talk (video).
Sketches the BVP setup and various 2D schemes for handling weakly singular
kernels, mostly for the Helmholtz equation on smooth curves.
- Lectures 5-7 by Rikard Ojala in the course DN2255 at KTH.
- Review and comparison article by myself with Gunnar Martinsson, Sijia Hao, and Patrick Young (2011). Covers mostly the Helmholtz 2D case on smooth curves, which involves logarithmically singular kernels.
More advanced numerical methods and research for BVPs:
Methods specific to eigenvalue problems:
Software packages
This list is necessarily incomplete, and skewed to my own interests and community.
- BEM++ by Timo Betcke and colleagues at UCL. This is a mature and professional low-order high-performance 3D Galerkin code in 3D, including Laplace, Helmholtz and Maxwell. It has evolved from C++ to Py/numba to Rust, each with high-level Python wrappers and example drivers.
Actively in development as of 2022.
- FMM3DBIE by Manas Rachh, Mike O'Neil and colleagues. This is mature Fortran90 code-base for 3D Nystrom discretizations on high-order triangular patches, for Laplace, Helmholtz and Stokes, using the FMM for fast evaluation, with wrappers and example drivers from MATLAB, Python, etc.
Actively in development as of 2022.
- ChunkIE: an object-oriented MATLAB BIE toolbox by Travis Askham, Manas Rachh, Dan Fortunato, and others, for 2D Laplace and Helmholtz BIE, including Helsing RCIP corner quadratures and interface to FMM and the FLAM fast direct solver. Actively in development as of 2022.
- pytential by Andreas Klöckner (UIUC) and collaborators, for fast 2D and 3D general layer potential evaluation in python, via QBX, etc. Actively in development.
- MPSpack includes code for
Laplace and Helmholtz BIEs in 2D, including various quadrature schemes
for smooth curves and corners, periodization methods, and interface to the FMM. The tutorial (Sec. 7-9) has the BIE commands.
Development stopped around 2016, although I maintain it, and it is used by other codes such as TMATROM.
- BIE2D MATLAB/Octave collection of research codes by Alex Barnett, which has Laplace and Stokes global quadratures, including the current best implementation of their barycentric-style close-evaluations. This is far from complete; however, it is simple to find well-documented routines of some use.
- pyBIE2D, David Stein's extension of BIE2D in high performance Python/numba, which has object-oriented construction of boundary objects, etc.
- BIE3D MATLAB/Octave tools (research code) by Alex Barnett, including quad-patch based Laplace high-order quadratures on smooth deformations of a torus, and QFS-based global quadratures on smooth deformations of a torus or a sphere. It also has high-order space-time quadratures for the acoustic wave equation, which is why it was created. It is research code, not a usable package, but you will find well-documented components of some use.
- BIEST by Dhairya Malhotra (Flatiron CCM). High-performance C++ research code for 3D BIE with spectral POU-based quadrature on smooth deformations of a torus, with applications to Taylor states in stellarator design.
This work was enabled in part by NSF grant DMS-1216656.