SCATTERLIB
Light Scattering Codes Library


Introduction

SCATTERLIB  is a collection of light scattering codes. Emphasis is on access to source codes. Possible applications include: atmospheric and oceanic radiative transfer, ocean color, flow cytometry, particle sizing, paints, light scattering by non-spherical and spherical particles, radar backscatter. This library is dated now.

Last corrections: November 2005


Mie scattering. Single spheres

Name Author Type Description

bhmie-f

bhmie-c

bhmie-idl

bhmie-matlab

Bohren and Huffman Mie

This code is published in the appendix of Bohren and Huffman light scattering book and is probably one of the most heavily used Mie codes. Well documented and highly recommended. 

The code is available here with slight extension - calculation of asymmetry paremeter (B.T. Draine). The original FORTRAN implementation is available as well as translation to C and IDL (P. J. Flatau). ("zip" and "tar" files contain the same codes). I am not sure if the translations to C and IDL are working well.

For MATLAB users - probably the best way is to use MEX interface to BHMIE. Here are 2 links which can be useful for Matlab users

http://www.igf.fuw.edu.pl/meteo/stacja/kody/mie.m
http://www.igf.fuw.edu.pl/meteo/stacja/kody/mie.mexglx

Visual Basic translation of BHMIE was written by P. Laven for use in MiePlot.

I you have other versions of BHMIE - let me know!

MIEV0 Wiscombe Mie Warren Wiscombe is know to produce very good codes and MIEV0 is one more example. The code comes with extensive set of self-tests and extensive documentation. It is one of the best MIE code available. On the other hand there is some learning curve at first and BHMIE is, I think, working as well.
MiePlot Philip Laven Interface to Bohren and Huffman code with extensions Based on the BHMIE code, this Visual Basic interface offers an easy-to-use interface providing graphs of intensity v. scattering angle, wavelength, radius and refractive index, and other options. But recently Laven incuded some modification to calculate Mie coefficient for complex cases.

 

CAM Wiscombe Approximation

For large size parameters!

A package of routines to calculate the three Mie efficiency factors Q-ext, Q-abs and Q-pr (extinction, absorption, radiation pressure) using CAM approximations. These approximations are only useful (accurate to better than 10% or so) for size parameters above about 20 for Q-ext and above about 100 for Q-abs and Q-pr. Note that the Mie curves have a lot of ripple which makes comparisons at individual size parameters almost useless; you must plot the Mie and approximate curves for a short range of size parameter to see the overall accuracy of the approximations.

Barber and Hill codes. Barber and Hill Mie
  1. S1.for (a) efficiencies (ext.,sca.,abs.) vs size parameter (b) intensity at a scattering angle vs size parameter (c) angular scattering over a plane
  2. S2.for angular scattering in all directions
  3. S3.for scattering matrix calculations
  4. S4.for internal and external coefficients vs size parameter
  5. S5.for angle-averaged intensities, internal and near-field
  6. S6.for surface intensity - internal and external
  7. S7.for internal intensity distribution - 2D and 3D
  8. S8.for external intensity distribution - 2D and 3D

 

Coated spheres

Here is a collection of light scattering codes for spheres and concentric spheres.

Name Author Type Description
BHCOAT Bohren and Huffman coated sphere Well documented and easy to use. This code is published in the appendix of Bohren and Huffman light scattering book.
DMlLAY Toon and Ackerman coated sphere

This subroutine computes electromagnetic scattering by a stratified sphere (a particle with a spherical core surrounded by a spherical shell.

Applied Optics, 20, 3657, 1981
IFCS LSCCS Thomas Kaiser coated sphere compute the internal field inside a coated sphere and the scattered field of a sphere with 0, 1 or 2 coatings. Reference: T. Kaiser and G. Schweiger: Stable algorithm for the computation of Mie coefficients for scattered and transmitted fields of a coated sphere. Comput. Phys. 1993, vol. 7(6), 682-686.

 

Multispheres

Name Author Type Description
GMM

Xu multisphere


Fortran codes which calculate (exactly) electromagnetic scattering by an aggregate of spheres in a single orientation or at an average over individual orientations (these codes were previously available on http://www.astro.ufl.edu/~xu/codes.htm)

The whole GMM package.
Documentation.
Papers

Mackowski Mackowski multiplesphere

Codes for calculation of the scattering matrix and cross sections of neighboring, non-intersecting spheres.

Dan Mackowski's papers on multisphere are one of the most comprehensive.

 

 

 

Light scattering on Spheroids (modal and T-matrix)

Here is a collection of light scattering codes on spheroids. It is possible to attack the problem using separation of variables ("Mie"-type analysis), or using other techniques such as T-matrix - for homogeneous or "concentric" distribution of refractive index; or volume methods such as discrete dipole approximation (for medium size parameters).

I think this section is getting obolete. There may be more codes available but I did not follow last several years development (2005). Home page of Thomas Wriedt may have more information.

 

Light scattering on infinite cylinders.

Here is a collection of light scattering codes for the case of infinite cylinder.

 

Name Author Type Description
BHCYL Bohren and Huffman cylinder Well documented and easy to use. This code is published in the appendix of Bohren and Huffman light scattering book.
Mackowski Mackowski cylinder, oblique incidence

Dan Mackowski, Auburn University. Advantage is that his codes calculate efficiencies for slant incidence.

Barber and Hill Barber and Hill coated sphere Seven computer programs from the text, Light Scattering by Particles: Computational Methods by P.W. Barber and S.C. Hill, may be used to calculate the light scattered by a cylinder when a plane wave is incident perpendicular to the cylinder axis.

 

Slab scattering

Here is a collection of scattering codes for slabs.


Discrete Dipole Approximation

In the discrete dipole approximation the target is replaced by an array of point dipoles; the electromagnetic scattering problem for the array of point dipoles is then solved essentially exactly. This method is also called method of momets, coupled dipole approximation, digitized Green's function. These codes work for 3D problems up to size parameter x=10-20 (x=2pi r/lambda). The method compares well with scattering efficiencies for spheres (with Mie solution). Review paper by Draine and Flatau (Applied Optics, 1994) is related to DDSCA (see also references to this paper (on "google scholar" of "web of science").  There are also some important new developments in the last 5 years (2000-2005): (a) work by Mackowski to derive analytical orientational averaging using T-matrix approach in DDA approximation; (b) calculation of periodic structures (i.e. of inifinite extend) using variant of DDA; (c) extensions to calculate particles placed on surfaces.

 

DDA - List of Solvers

Name Author Type Description
ADDA Maxim A. Yurkin and Alfons G. Hoekstra DDA

Amsterdam DDA (ADDA) code. ADDA simulates elastic light scattering from finite 3D objects of arbitrary shape and composition in vacuum or non-absorbing homogenous media. ADDA allows execution on a multiprocessor system, using MPI (Message Passing Interface), parallelizing a single DDA calculation.

http://www.science.uva.nl /research/scs/Software/adda/

DDSCAT Draine and Flatau DDA

DDSCAT is a FORTRAN program to calculate scattering and absorption of electromagnetic radiation by arbitrary targets. Current version has MPI interface. The method works well for medium size parameter. FFT method is employed. The DDSCAT code is available from

ftp://astrp.princeton.edu/draine/scat/ddscat

Mackowski Mackowski DDA and T-matrix DDA merged with T-matrix
MarCodes Markel DDA Markel's Coupled Dipole Equation Solvers) solve light scattering by an arbitrary cluster of point dipoles (monomers) using the conjugate gradient method (iterative) and the LU expension method (direct method).

 


T-matrix.

Here is a collection of "T-matrix" scattering codes.

The codes of Mackowski and Mishchenko are popular these days (circa 2005). See Mishchenko's home page. Also look at home page of Thomas Wriedt.

Anomalous diffraction approximation


Anomalous diffraction approximation, van de Hulst approximation, eikonal approximation, high energy approximation, soft particle approximation.

Anomalous diffraction approximation (ADT) offers very approximate but computationally fast technique to calculate extinction, scattering, and absorption efficiencies. It agrees well with the "Mie" (modal) calculations for spheres, cylinders, spheroids, and coated spheres. Absolute value of refractive index has to be close to 1, and size parameter should be large. However, semi-empirical extensions to small size parameter, and larger refractive index are possible. It is NOT possible to calculate full range of phase function or asymmetry parameter - g in this approximation. The main advantage of the ADT is that one can (a) Calculate, in closed form, extinction, scattering, and absorption efficiencies for many typical size distributions; (b) Find solution to the inverse problem of predicting size distribution from light scattering experiments (several wavelengths); (c) For parameterization purposes of single scattering (inherent) optical properties in radiative transfer codes. One older review is Mahood, Robert W. "The application of vector diffraction to the scalar anomalous diffraction approximation of van de Hulst", 1987, Thesis (M.S.)--Pennsylvania State University. In recent years (circa 2005) more ADT papers were published, particlly because the calculations are very simple. But, more importantly there are now papers which compare ADT with exact methods for non-spherical particles - inevitable development, considering that ADT is very approximate.

Related sites

Probably the best site which is direct competitor to this one (and much more comprehensive I may add)
A list of electromagnetic scattering programmes supported by Thomas Wriedt

Other sites (but there must be many more now)

Related numerical methods

Conjugate gradient methods. This technique to solve linear system of complex equations is often employed together with the discrete dipole approximation or method of moments. When coupled with FFT to solve the convolution problem it is called CG-FFT. In the DDSCAT code we use excellent package by Rudnei Dias da Cunha and Tim Hopkins.

  1. The Parallel Iterative Methods (PIM) by Rudnei Dias da Cunha (rdd@ukc.ac.uk) and Tim Hopkins (trh@ukc.ac.uk) is a collection of Fortran 77 routines designed to solve systems of linear equations (SLEs) on parallel computers using a variety of iterative methods.
  2. Complex and real conjugate gradient package by Flatau, Evans, and Schneider.
  3. Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods. See also NETLIB for the source code of templates.
  4. Conjugate Gradient Method Without Agonizing Pain by Jonathan R. Shewchuk [PostScript].
  5. Mathematical Optimization textbook.

 

pflatau@ucsd.edu