Solving electromagnetic scattering problems with buff-scatter
buff-scatter is a tool within the buff-em code suite for solving classical scattering problems involving user-specified incident fields impinging on a material geometry.
To run a scattering calculation in buff-scatter, you will
-
Create a buff-em geometry file describing your geometry. This will involve generating tetrahedral mesh representations of each object in your geometry and possibly writing a
.SVTensor
file to describe any objects with anisotropic and/or inhomogeneous permittivity. -
Specify the incident field that will impinge on your objects: a plane wave, a gaussian beam, a point dipole radiator, or some combination.
-
Run buff-scatter with command-line options specifying the geometry, the incident fields, the frequencies at which you wish to calculate, and the types of output you want to get back.
The types of output you can request from buff-scatter include
-
The components of the scattered and total electric and magnetic fields at an arbitrary list of evaluation points you provide.
-
The absorbed power, scattered power, force, and torque for each object in the geometry.
-
Data on the electric and magnetic dipole moments induced by the incident field on each object.
-
Visualization files plotting the distribution of induced current within each object.
1. buff-scatter command-line options
Common options
buff-scatter recognizes the following subset of the list of commonly accepted options to buff-em command-line codes; these all have the same meaning as the [corresponding options in scuff-em][scuffOptions]. (In general, almost everything mentioned in the General reference for scuff-em command-line applications pertains to buff-em command-line applications as well.)
--geometry
--Omega
--OmegaFile
Options defining the incident field
The options for specifying incident fields in buff-scatter are identical to those in scuff-scatter, as described in detail on the page Incident fields in scuff-em. Here we only summarize the available options without commentary.
--pwDirection nx ny nz
--pwPolarization Ex Ey Ez
--psStrength Px Py Pz
--psLocation xx yy zz
--gbDirection nx ny nz
--gbPolarization Ex Ey Ez
--gbCenter Cx Cy Cz
--gbWaist W
(As in scuff-scatter, these options may occur multiple times to define superpositions of multiple types of incident field.)
Options requesting scattered and total fields
--EPFile MyEPFile
Specifies a list of evaluation points at which to compute and report components of the scattered and total fields. This option may be specified more than once to define multiple sets of field evaluation points.
The --EPFile
in buff-scatter is identical to
that in scuff-scatter; for details, see the
scuff-scatter documentation
Options requesting power, force, and torque (PFT) data
--PFTFile MyFile.PFT
Requests that data on the absorbed and scattered power,
force, and torque for all bodies in the geometry be
written to the file MyFile.PFT
. See the file header
in the output file for details on how to interpret its
contents.
--OPFTFile MyFile.OPFT
--JDEPFTFile MyFile.JDEPFT
--DSIPFTFile MyFile.DSIPFT
These options are similar to --PFTFile
, but they
request PFT calculations by specific algorithms:
the "overlap" (OPFT) method, the "J dot E" (JDEPFT)
method, or the "displaced surface-integral" (DSIPFT)
method. Note that JDEPFT is the default, so
the options --PFTFile
and --JDEPFTFile
are
actually synonymous (if you specify both, only
one output file will be produced).
--DSIRadius 5.0
--DSIPoints 302
--DSIMesh MyBoundingMesh.msh
These options control the behavior of DSIPFT calculations. The surface integral may be evaluated in one of two ways: (a) by Lebedev cubature over a bounding sphere surrounding the object, or (b) using a user-supplied bounding surface mesh.
For case (a), the bounding sphere radius is set
by --DSIRadius
, while the number of cubature points
is set by --DSIPoints
. Type buff-scatter --help
to see list of allowed values for --DSIPoints.
For case (b), MyBoundingMesh.msh
should be a
gmsh mesh file describing a closed bounding
surface discretized into triangles.
Lebedev cubature generally yields better accuracy for
the same number of cubature points; however, if your
geometry contains closely-spaced objects
which cannot be enclosed in a bounding sphere without
also encompassing other objects, you will need to
use --DSIMesh.