Top-level overview of buff-em
buff-em is a free, open-source software implementation of the frequency-domain volume-integral-equation (VIE) method of classical electromagnetic scattering using SWG basis functions.
buff-em is similar in many ways to scuff-em, which solves similar problems using the alternative surface-integral-equation (SIE) formalism. Some key differences between these codes are
-
buff-em can handle bodies with inhomogeneous and/or anisotropic dielectric permittivity. In contrast, scuff-em can only handle homogeneous isotropic materials.
-
buff-em requires scatterers to be described by volume (tetrahedral) meshes instead of the surface (triangle) meshes used by scuff-em.
-
buff-em does not aspire to solve the same breadth of problems that scuff-em does. More specifically, buff-em is primarily intended for just two classes of problem: (a) classical scattering of known incident fields from compact bodies (implemented by the command-line code buff-scatter, and (b) non-equilibrium fluctuational electrodynamics in the fluctuating-volume-current approach---including radiative heat transfer, thermal self propulsion/rotation, and non-equilibrium Casimir forces---for one or more compact bodies (implemented by the command-line code buff-neq).
(For more on similarities and differences between the two codes, see the document Key differences between buff-em and scuff-em).
Like scuff-em, buff-em consists of a core library, implementing the basic VIE functionality, plus the two specialized application modules mentioned above for scattering and non-equilibrium fluctuations.
buff-em stands for BUlk Field Formulation of ElectroMagnetism. This is a reference to the underlying solution methodology used by buff-em and other VIE solvers, in which the primary goal of the solver is to compute the volume electric current distribution throughout a compact body (which is locally proportional to the local bulk electric field, whereupon the name).
Like scuff-em, the entire buff-em suite is free software distributed under the GNU GPL. The source code for buff-em may be downloaded from the buff-em GitHub page. The GitHub page is also the right place for questions, bug reports, feature requests, and other discussion of buff-em.
Note that buff-em requires scuff-em, so you will need a working scuff-em installation on your system before you can start using buff-em.
Interfaces to buff-em
As is true for scuff-em, the core computational engine in buff-em may be accessed via multiple interfaces.
The command-line interface consists of specialized command-line applications for running specific calculations in computational physics. Using buff-em in this way requires only that you learn some basic command-line options; it should be possible to come quickly up to speed by following these tutorial examples.
The application programming interface consists of a C++ API that allows access to internal buff-em data structures and methods for maximal flexibility in implementing your own custom-designed physics codes.
Inputs to buff-em calculations
Typical inputs to scuff-em calculations include
-
A geometry file describing the scattering geometry
-
For anisotropic or inhomogeneous bodies, an
.SVTensor
file describing the spatially-varying components of the permittivity tensor. ("SVTensor" stands for "spatially-varying tensor.") -
Specification of the frequencies at which you want to perform calculations.
-
An optional list of geometric transformations to be applied to the geometry, with calculations generally repeated at each transformation. (The usage and syntax of transformations in buff-em is identical to that in scuff-em.)
-
For scattering codes: a specification of the Incident fields. (Incident fields in in buff-em are handled the same way as in scuff-em.)
-
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, etc.
Outputs from buff-em calculations
Typical outputs from buff-em calculations include
-
text-based data files reporting output quantities
-
Visualization files written in GMSH post-processing format.
Command-line Applications
Nanophotonics / electromagnetic scattering
- buff-scatter
A general-purpose solver for problems involving the scattering of known incident fields from one or more compact objects. Available outputs include: scattered and total fields at arbitrary points in space; absorbed and scattered power; force and torque (radiation pressure); and induced multipole moments.
Fluctuation-induced interactions
- buff-neq
An implementation of the fluctuating-volume-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.
Citing buff-em
If you find buff-em useful for generating results included in publications, please consider citing both (a) one of the papers discussing the implementation of buff-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 buff-em}, a free,
open-source software implementation of the
volume-integral-equation method~\cite{BUFF1, BUFF2}.
Here the BUFF1
and BUFF2
references refer to the following .bibtex
entries:
@ARTICLE{BUFF1,
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,
}
@ARTICLE{BUFF2,
note="\texttt{https://github.com/HomerReid/buff-em}"
}