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


Codes





Solving plane-wave transmission problems with scuff-transmission


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 create a 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.

Table Of Contents
1. What scuff-transmission Actually Does
2. scuff-transmission Command-Line Options
2. scuff-transmission Output Files
3. scuff-transmission Examples
3a. Transmission coefficients of a lossy dielectric thin film
3b. Extraordinary optical transmission through a perforated thin film
3c. Transmission through a square array of nanospheres


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, respectively.)

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=ZAbove, while

  • 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.

Here ZAbove and 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 c++, python, or matlab interfaces to libscuff.


Option Description
Options controlling the scattering geometry
--geometry MyGeometry.scuffgeo
Specifies the geometry file describing the scattering geometry. This option is always mandatory.
Options specifying the frequency
 --Omega xx 
Specifies the angular frequency of the scattering problem, in units of 3•1014 rad/s (=c / 1 μm).

The value specified for --Omega may be a complex number.

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 --OmegaFile option discussed below.)

 --OmegaFile xx 
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 #) are ignored.

Options specifying the range of incident angles
--Theta   xx 
    
--ThetaMin xx 
--ThetaMax xx 
--ThetaPoints nn 
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 ThetaMin to ThetaMax, taking a total of ThetaPoints.

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 --Theta 0.

Options controlling the computation of transmitted and reflected power
 --ZAbove xx 
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=ZAbove.

 --ZBelow xx 
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=ZBelow.

Cache options
 --Cache MyCache.cache 
 --ReadCache InCache1.cache 
 --ReadCache InCache2.cache 
 --WriteCache OutCache.cache 
Specifies the names of cache files for geometric data.

The --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.

The --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 --ReadCache files, plus any data that were newly generated during the course of the scuff-transmission run.

The --Cache XX option is equivalent to saying --ReadCache XX --WriteCache XX.

For more information on geometric data caching in scuff-em, see here.

For examples of how caching is used in practical scuff-transmission runs, see this example or this example.

Other options
 --OutFile MyFile.dat
Requests that output be written to the file MyFile.dat.

If this option is not specified, the output is written to a file named Geometry.transmission, where Geometry.scuffgeo was the geometry file you specified with the --geometry option.


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.transmission, where Geometry.scuffgeo was the file you specified with the --geometry option. while the latter will contain information on the total fields.

Each line of the .transmission file 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 parallel polarization.

(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 in the 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 scuff-transmission. (The input files for this example may be found in the share/scuff-em/examples/ThinFilm subdirectory 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 .scuffgeo 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: ThinFilm_58.scuffgeo
LATTICE 
	VECTOR 1 0 
 	VECTOR 0 1 
ENDLATTICE

REGION Exterior      	MATERIAL Vacuum
REGION ThinFilm		MATERIAL CONST_EPS_100
REGION UpperHalfSpace	MATERIAL Vacuum

SURFACE LowerFilmSurface
	MESHFILE Square_58.msh
	REGIONS Exterior ThinFilm
ENDSURFACE

SURFACE UpperFilmSurface
	MESHFILE Square_58.msh
	DISPLACED 0 0 1
	REGIONS ThinFilm UpperHalfSpace
ENDSURFACE
           

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 here.)

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 thin film

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. in 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 share/scuff-em/examples/PerforatedThinFilm subdirectory of the scuff-em distribution.)

The unit cell geometry The innermost 25 cells of the full geometry
The .scuffgeo file: PFT_794.scuffgeo
  LATTICE
    VECTOR 0.75  0
    VECTOR 0.0   0.75
  ENDLATTICE 

  OBJECT UnitCellMesh
    MESHFILE PFT_794.msh
    MATERIAL Gold
  ENDOBJECT
     


3c. Transmission through a square array of nanospheres




scuff-em
Examples
Installation
Core Library
Applications
Reference


Solving plane-wave transmission problems with scuff-transmission, by Homer Reid
Last Modified: 11/16/16