scuff-transmission is a tool within the
scuff-em code suite for computing the
transmission and reflection coefficients of thin films, metamaterial
arrays, and similar structures.
To use scuff-transmission, you will first
scuff-em geometry file describing an extended
scattering geometry. Then you will run
scuff-transmission from the command line
with options specifying the frequencies and the incident angles
at which you want to assess the transmission properties of your structure.
You will get back a data file reporting the transmitted and reflected
flux, for both parallel and perpendicular polarizations, at the
frequencies and incident angles you requested.
1. What scuff-transmission Actually Does
The actual calculation that scuff-transmission performs
is depicted schematically in this figure:
Your geometry is illuminated from below with a plane wave at a given frequency
and incident angle. The incident wavevector lies in the xz plane.
We consider two distinct polarizations for the plane wave:
- perpendicular polarization, in which case the E field
points in the y direction and the H field lies in
the xz plane; and
- parallel polarization, in which case the H field
points in the y direction and the E field lies in
the xz plane.
(At normal incidence, i.e. Θ=0, the perpendicular polarization
has E and H pointing in the y and -x directions,
respectively, while the parallel polarization
has E and H pointing in the x and y directions,
For each polarization at each frequency and each incident angle,
scuff-transmission solves the scattering
problem and computes the transmitted and reflected power flux
(power per unit area) by integrating
the Poynting vector over the unit cell. More specifically,
- the transmitted flux is obtained by integrating the
+z component of the Poynting vector over the plane of the
unit cell at height z=
- the reflected flux is obtained by integrating the
-z component of the Poynting vector over the plane of the
unit cell at height z=
ZBelow are values you specify
on the command line based on a knowledge of the extents of your structure
in the z direction.
The quantities reported in the scuff-transmission
output file are the transmitted and reflected flux, for each polarization,
normalized by the incident flux, so that if your geometry were
transparent the transmitted and reflected flux ratios would be 1 and 0,
respectively, at all frequencies, incident angles, and polarizations.
2. scuff-transmission Command-Line Options
The following table summarizes all command-line options
currently available in scuff-transmission.
As is true for all programs in the
scuff-em suite, command-line
options may be specified in a text file catted to standard
input; see here
for an example of how this works.
Note that, if you find yourself needing more flexibility than
can be achieved with these command-line options, then you have
probably graduated from using prefab command-line programs
to writing your own applications using the
interfaces to libscuff.
Options controlling the scattering geometry
| Specifies the
describing the scattering geometry.
This option is always mandatory.
Options specifying the frequency
Specifies the angular frequency of the
scattering problem, in units of
3•1014 rad/s (=c / 1 μm).
The value specified for
may be a
You may request computations at more than one frequency
by using the
--Omega option more than once,
i.e. you may say
--Omega 1e-2 --Omega 1e-1 --Omega 1 --Omega 10
(However, for more than a few frequencies it is more
convenient to use the
option discussed below.)
Specifies the name of a file containing a list
of frequencies at which to do computations.
The file should contain one frequency per line; blank
lines and comments (lines beginning with
Options specifying the range of incident angles
The first option here specifies a single incident
angle at which to calculate transmission and reflection.
The second set of options requests that the
angle of incidence be scanned from
ThetaMax, taking a total of
Theta values are specified in degrees, not radians,
so the full range of incident angles is covered by saying
--ThetaMin 0 --ThetaMax 90 .
If none of these options are specified, the default is
to do calculations at the single incident angle of 0
degrees (i.e. normal incidence), equivalent to saying
Options controlling the computation of transmitted and
|| Specifies the Z coordinate at which the
upward-directed Poynting vector is evaluated to obtain the
transmitted flux. (See the figure above.)
The transmitted flux is calculated by integrating the
upward-directed Poynting vector over the area of the unit
cell at Z=
|| Specifies the Z coordinate at which the integral of the
downward-directed Poynting vector is evaluated to obtain the
reflected flux. (See the figure above.)
The reflected flux is calculated by integrating the
downward-directed Poynting vector over the area of the unit
cell at Z=
| Specifies the names of
cache files for geometric data.
--ReadCache option allows you to specify a
file from which geometric data will be preloaded before
the calculation begins. This option may be specified
any number of times. If the specified file does not exist,
the option is silently ignored.
--WriteCache option allows you to specify
a file to which geometric data will be written after the
calculation has completed. The resulting cache file will
contain any data that were preloaded from
files, plus any data that were newly generated during the
course of the scuff-transmission run.
--Cache XX option is equivalent to saying
--ReadCache XX --WriteCache XX.
For more information on geometric data caching in
For examples of how caching is used in practical
|| Requests that output be written to the file
If this option is not specified, the output is written to
a file named
Geometry.scuffgeo was the geometry file you
specified with the
2. scuff-transmission Output File
scuff-transmission generates an output
file containing transmission and reflection data versus
frequency and incident angle.
If you did not specify a name for this file using the
--OutFile command-line option, it will be written
by default to a file named
Geometry.scuffgeo was the file you specified with
while the latter will contain information on the total fields.
Each line of the
corresponds to a single frequency and a single incident angle.
There will be 6 numbers on each line, separated by spaces, as follows:
Omega Theta tPerp rPerp tPar rPar
where Omega is the angular frequency in units of
3•1014 rad/s (=c / 1 μm),
Theta is the incident angle in degrees,
tPerp and rPerp are the squared magnitudes of the
transmission and reflection coefficients for perpendicular
polarization, and tPar and rPar are the squared
magnitudes of the transmission and reflection magnitudes for
(As noted above, the t and r numbers here are
calculated as the ratio of the transmitted/reflected power
to the incident power.)
4. scuff-transmission Examples
Here are some examples of calculations you can do with
scuff-transmission. Input files and
command-line runscripts for all these examples are included
share/scuff-em/examples subdirectory of
the scuff-em installation.
3a. Transmission coefficients of a dielectric thin film
Among the simplest possible scattering geometries is a thin
dielectric film. If the film has thickness T and
relative dielectric constant εr
(which for simplicity we take to be independent of frequency)
then it is straightforward to work out that the reflection and
transmission coefficients, at normal incidence, depend on
the frequency according to
We will now attempt to reproduce this behavior using
(The input files for this example may be found in the
of the scuff-em installation.)
To create a
scuff-em extended geometry
for this configuration we need only mesh the upper and lower
surfaces of the film, and then only within the
unit cell of the lattice, which we will choose here to be a
square lattice with lattice vectors
L1=(1μm, 0), L2=(0, 1μm).
Then our entire mesh consists of two meshed squares, displaced
from one another by a distance of 1 μm; the
file and a picture of the unit-cell geometry look like this.
(The blue wire frame in the figure is not actually part of the geometry,
but serves only to indicate the extents of the unit cell in the
x and y directions, as well as the upper and lower
surfaces over which we will integrate the Poynting vector to compute
the transmitted and reflected flux.)
| The unit cell geometry
|| The geometry file:
VECTOR 1 0
VECTOR 0 1
REGION Exterior MATERIAL Vacuum
REGION ThinFilm MATERIAL CONST_EPS_100
REGION UpperHalfSpace MATERIAL Vacuum
REGIONS Exterior ThinFilm
DISPLACED 0 0 1
REGIONS ThinFilm UpperHalfSpace
We'll run scuff-transmission on this geometry
to investigate its transmission properties over a range of frequencies.
(We'll list the angular frequencies we want in a file named
OmegaList; this file contains one angular frequency per line,
specified in units of c / 1 μm = 3 •1014 rad/s.)
Notice that we don't specify any arguments governing the incident angle;
this means that we'll be doing calculations at normal incidence only.
scuff-transmission --geometry ThinFilm_58.scuffgeo --OmegaFile OmegaList --cache ThinFilm.cache
(Since we're only doing a single run with this geometry, we don't really
need to specify a
--Cache file; caching is only useful for
reusing data on a given geometry across multiple runs, as explained
This produces a file named
ThinFilm.transmission. (We could
also have used the
--OutFile option to specify a different
output filename.) Plotting the third and fourth columns of this data
file vs. the first yields the behavior of the transmission and
reflection coefficients as a function of frequency:
Notice that we get excellent agreement with theory even up to fairly
high frequencies despite the relative coarseness of the mesh.
3b. Extraordinary optical transmission through a perforated
In this example we'll consider the transmission properties of
a thin gold film perforated with circular holes. We'll design
our geometry following that studied by Martin-Moreno et al.
Physical Review Letters 86 1114 (2001).
The unit-cell mesh, the
.scuffgeo file, and an
graphical representation of the innermost 25 cells of the
lattice are indicated in the table below. (The files for
this example can be found in the
subdirectory of the scuff-em
| The unit cell geometry
|| The innermost 25 cells of the full geometry
VECTOR 0.75 0
VECTOR 0.0 0.75
3c. Transmission through a square array of nanospheres