Skip to content

Top-level overview of scuff-em

scuff-em is a free, open-source software implementation of the boundary-element method (BEM) (or the "method of moments") of electromagnetic scattering. (More specifically, scuff-em implements the EFIE and PMCHWT formulations of the BEM using RWG basis functions.)

scuff-em originated as a specialized tool for using BEM techniques to model fluctuation-induced electromagnetic phenomena---such as Casimir forces and radiative heat transfer---and subsequently expanded into a general-purpose BEM solver targeting a variety of applications in nanophotonics.

scuff-em consists of a core library, implementing the basic BEM functionality, plus a large number of specialized application modules designed for specific problems in science and engineering.

scuff-em stands for Surface CUrrent/Field Formulation of ElectroMagnetism. This is a reference to the underlying solution methodology used by scuff-em and other BEM solvers, in which we solve first for surface currents [including both electric (K) and magnetic (N) currents, as cartooned in the scuff-em logo], then use these currents to compute the scattered fields or other quantities of interest.

The entire scuff-em suite is free software distributed under the GNU GPL. The source code for scuff-em may be downloaded from the scuff-em GitHub page. The GitHub page is also the right place for questions, bug reports, feature requests, and other discussion of scuff-em.

Interfaces to scuff-em

Access to the scuff-em computational engine is available via multiple interfaces.

The command-line interface consists of a large number of command-line applications for running various types of standard calculations in computational physics. Using scuff-em in this way requires only that you learn the basic command-line options

The application programming interface consists of C++ and python APIs that allow access to internal scuff-em data structures and methods for maximal flexibility in implementing your own custom-designed physics codes.

Inputs to scuff-em calculations

Typical inputs to scuff-em calculations include

  • A geometry file describing the scattering geometry

  • An optional list of geometric transformations to be applied to the geometry, with calculations generally repeated at each transformation

  • Specification of the frequencies (and, for extended geometries, the Bloch vectors) at which you want to perform calculations

  • For scattering codes: a specification of the [incident fields][].

  • Specifications of the output quantities you wish to get back: field components at individual points in space, power/force/torque information, Casimir quantities, heat-transfer rates, impedance parameters, capacitances, polarizabilities, etc.

Outputs from scuff-em calculations

Typical outputs from scuff-em calculations include

  • text-based data files reporting output quantities

  • Visualization files written in GMSH post-processing format.

Command-line Applications

Nanophotonics / electromagnetic scattering

A general-purpose solver for problems involving scattering of known user-specified incident fields from material geometries. Available outputs include: scattered and total fields at arbitrary points in space; visualization of fields and surface currents; absorbed and scattered power; force and torque (radiation pressure); induced dipole or spherical multipole moments; and more.

  • scuff-transmission

    A specialized solver for computing plane-wave transmission in 2D extended geometries: thin films, perforated screens, nanoparticle arrays, etc.

  • scuff-tmatrix

    A specialized code for computing the T-matrices of arbitrary compact scatterers.

Fluctuation-induced interactions

  • scuff-cas3D

    An implementation of the [fluctuating-surface-current approach to equilibrium Casimir forces][FSCPaper] in compact or extended geometries.

  • scuff-caspol

    A tool for computing Casimir-Polder potentials for polarizable molecules in the vicinity of compact or extended material bodies.

  • scuff-neq

    An implementation of the fluctuating-surface-current approach to non-equilibrium fluctuation-induced interactions among compact objects. Available outputs include: frequency-resolved or frequency-integrated rates of heat radiation or radiative heat transfer; non-equilibrium Casimir forces; self-propulsion and self-rotation of isolated bodies.

RF / microwave engineering

  • scuff-rf

    A tool for modeling the electromagnetic properties of passive RF devices such as antennas and inductors. Available outputs include: frequency-dependent S-parameters for arbitrarily-shaped objects; radiated field patterns for antennas or other objects driven by user-specified currents.


  • scuff-static

    An electrostatic solver. Available outputs include: self- and mutual-capacitances of arbitrarily-shaped conductors ; DC polarizabilities of conducting and dielectric bodies; electrostatic fields (at user-specified evaluation points) in the presence of conducting surfaces held at user-specified potentials.

Citing scuff-em

If you find scuff-em useful for generating results included in publications, please consider citing both (a) one of the papers discussing the implementation of scuff-em, and (b) the URL for the code. For example, if you are writing in LaTeX, you might write something like this:

Numerical computations were performed using {\sc scuff-em}, a free,
open-source software implementation of the boundary-element 
method~\cite{SCUFF1, SCUFF2}.

Here the SCUFF1 and SCUFF2 references refer to the following .bibtex entries:

author = {{Homer Reid}, M.~T. and {Johnson}, S.~G.},
title = "{Efficient Computation of Power, Force, and Torque in 
BEM Scattering Calculations}",
journal = {ArXiv e-prints},
archivePrefix = "arXiv",
eprint = {1307.2966},
primaryClass = "physics.comp-ph",
keywords = {Physics - Computational Physics, Physics - Classical Physics},
year = 2013,
month = jul,