M. T. Homer Reid MIT Home Page
Physics Problems Research teaching My Music About Me Miscellany


scuff-em: Free, open-source software for boundary-element analysis of problems in computational physics and engineering

Update, October 2015: The scuff-em documentation has migrated to its new permanent home. I will keep these older legacy documentation pages available for some time, but they may contain out-of-date information. Please change your bookmarks to point to the new permanent home!

scuff-em is a free, open-source software package for analysis of electromagnetic scattering problems using the boundary-element method (BEM). (The BEM is also known as the "method of moments.")

The scuff-em suite consists of two components: a core library that implements the essential algorithms of the boundary-element method, and a set of application programs built atop the core library for solving specific problems in various fields of physics and engineering.

The core library, libscuff, is written in C++ but may also be accessed from python. Extensive documentation of the programming interfaces is available from the links below.

The application programs, implemented as console-based command-line utilities, include tools for (1) general electromagnetic scattering of arbitrary incident fields from compact or periodically extended scatterers; (2) computation of Casimir forces and Casimir-Polder potentials in complex geometric and material configurations; and (3) modeling of RF and microwave devices, including computation of multiport network parameters and radiated fields for antennas, lumped elements, and other RF devices.

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.

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.

For commercial support and consulting services related to scuff-em, please contact SIMPETUS Inc.

Core Library

What scuff-em can do

Main page: A compendium of scuff-em Examples

To give you a taste of the kinds of things you can do with scuff-em, here's a smattering of example calculations. All of these calculations run on a standard desktop workstation in a few minutes.

Downloading and installing scuff-em

Main page: scuff-em Installation

As of October 2014, scuff-em is hosted on GitHub. Installation instructions are available on the scuff-em installation page.

The scuff-em core library

Main page: The scuff-em core library

The core library in scuff-em is written in c++ and may be accessed from programs written in c++ or python. The main features of the library include:

  • Implementation of the EFIE and PMCHW formulations of the boundary-element approach to electromagnetic scattering problems.

  • Support for object surfaces discretized using RWG basis functions (for compact 3D bodies) or 2D rooftop functions (for z-invariant geometries).

  • Support for bodies of arbitrary frequency-dependent (linear, passive, isotropic, spatially homogeneous) dielectric permittivity and magnetic permeability: perfect metals, lossy dielectrics, linear magnetic materials.

  • Nested surfaces (one body fully contained inside another body).

  • Multi-material junctions: points at which three or more homogeneous material regions meet.

  • Bloch-periodic boundary conditions for finite and infinite 1D and 2D arrays of scatterers.

  • Support for calculations at complex or purely imaginary frequencies (ω=iξ), as required for Casimir computations.

  • Optimizations to accelerate computations on the same structure at many different frequencies.

scuff-em Applications

The scuff-em suite includes standalone programs for solving specific problems in a variety of fields of computational physics and engineering.

  • Electromagnetic Scattering Applications
  • scuff-scatter is a comprehensive command-line application for solving problems involving various types of electromagnetic radiation (plane waves, gaussian beams, etc.) scattering off of compact objects of arbitrary shapes and material properties.
    scuff-transmission is a command-line application for computing the transmission and reflection coefficients of thin films, metamaterial sheets, nanoparticle arrays, and similar geometries.
    scuff-tmatrix is a command-line application for computing the T-matrix of an arbitrary compact object.

  • Casimir Applications
  • scuff-cas3d computes Casimir forces, energies, and torques between compact 3D objects of arbitrary shapes and material properties.
    scuff-cas2d computes Casimir forces, energies, and torques between 2D objects (z-invariant objects) of arbitrary shapes and material properties.
    scuff-caspol computes Casimir-Polder potentials for molecules of arbitrary polarizability in the vicinity of surfaces of arbitrary shapes and material properties.

  • RF/Microwave Applications
  • scuff-rf computes multiport network parameters (S- and impedance parameters), as well as radiated fields, for passive RF and microwave structures.

  • Electrostatics Applications
  • scuff-static is a code for solving pure electrostatics problems, including calculations of (a) self- and mutual capacitances (capacitance matrices) of collections of arbitrarily-shaped conducting or dielectric bodies; (b) DC polarizabilities of arbitrarily-shaped conducting or dielectric bodies; (c) the electrostatic potentials and fields inside and outside arbitrarily-shaped conducting or dielectric bodies subject to arbitrary user-specified external fields and/or fixed conductor potentials.

scuff-em Reference

Core Library

scuff-EM: Free, open-source boundary-element software for nanophotonics, Casimir forces, RF/Microwave devices, and more, by Homer Reid
Last Modified: 11/16/16