Toplevel overview of scuffem
scuffem is a free, opensource software implementation of the boundaryelement method (BEM) (or the "method of moments") of electromagnetic scattering. (More specifically, scuffem implements the EFIE and PMCHWT formulations of the BEM using RWG basis functions.)
scuffem originated as a specialized tool for using BEM techniques to model fluctuationinduced electromagnetic phenomenasuch as Casimir forces and radiative heat transferand subsequently expanded into a generalpurpose BEM solver targeting a variety of applications in nanophotonics.
scuffem 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.
scuffem stands for Surface CUrrent/Field Formulation of ElectroMagnetism. This is a reference to the underlying solution methodology used by scuffem and other BEM solvers, in which we solve first for surface currents [including both electric (K) and magnetic (N) currents, as cartooned in the scuffem logo], then use these currents to compute the scattered fields or other quantities of interest.
The entire scuffem suite is free software distributed under the GNU GPL. The source code for scuffem may be downloaded from the scuffem GitHub page. The GitHub page is also the right place for questions, bug reports, feature requests, and other discussion of scuffem.
For commercial support and consulting services related to scuffem, please contact SIMPETUS Inc.
Interfaces to scuffem
Access to the scuffem computational engine is available via multiple interfaces.
The commandline interface consists of a large number of commandline applications for running various types of standard calculations in computational physics. Using scuffem in this way requires only that you learn the basic commandline options
The application programming interface consists of C++ and python APIs that allow access to internal scuffem data structures and methods for maximal flexibility in implementing your own customdesigned physics codes.
Inputs to scuffem calculations
Typical inputs to scuffem 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][IncidentFields.md].

Specifications of the output quantities you wish to get back: field components at individual points in space, power/force/torque information, Casimir quantities, heattransfer rates, impedance parameters, capacitances, polarizabilities, etc.
Outputs from scuffem calculations
Typical outputs from scuffem calculations include

textbased data files reporting output quantities

Visualization files written in GMSH postprocessing format.
Commandline Applications
Nanophotonics / electromagnetic scattering

A generalpurpose solver forproblems involving 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.

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

A specialized code for computing the Tmatrices of arbitrary compact scatterers.
Fluctuationinduced interactions

An implementation of the [fluctuatingsurfacecurrent approach to equilibrium Casimir forces][FSCPaper] in compact or extended geometries.

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

An implementation of the fluctuatingsurfacecurrent approach to nonequilibrium fluctuationinduced interactions among compact objects. Available outputs include: frequencyresolved or frequencyintegrated rates of heat radiation or radiative heat transfer; nonequilibrium Casimir forces; selfpropulsion and selfrotation of isolated bodies.
RF / microwave engineering
 scuffRF
A tool for modeling the electromagnetic properties of passive RF devices such as antennas and inductors. Available outputs include: frequencydependent Sparameters for arbitrarilyshaped objects; radiated field patterns for antennas or other objects driven by userspecified currents.
Electrostatics
 [scuffstatic][scuffstatic]
An electrostatic solver. Available outputs include: self and mutualcapacitances of arbitrarilyshaped conductors ; DC polarizabilities of conducting and dielectric bodies; electrostatic fields (at userspecified evaluation points) in the presence of conducting surfaces held at userspecified potentials.
Citing scuffem
If you find scuffem useful for generating results included in publications, please consider citing both (a) one of the papers discussing the implementation of scuffem, 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 scuffem}, a free,
opensource software implementation of the boundaryelement
method~\cite{SCUFF1, SCUFF2}.
Here the SCUFF1
and SCUFF2
references refer to the following .bibtex
entries:
@ARTICLE{SCUFF1,
author = {{Homer Reid}, M.~T. and {Johnson}, S.~G.},
title = "{Efficient Computation of Power, Force, and Torque in
BEM Scattering Calculations}",
journal = {ArXiv eprints},
archivePrefix = "arXiv",
eprint = {1307.2966},
primaryClass = "physics.compph",
keywords = {Physics  Computational Physics, Physics  Classical Physics},
year = 2013,
month = jul,
}
@ARTICLE{SCUFF2,
note="\texttt{http://github.com/homerreid/scuffEM}"
}
[scuffstatic] ../applications/scuffstatic/scuffstatic.md