- Introduction
- News and developments
- Download
- A list of available routines
- A note on notation
- A note on units
- Other scattering code available online

This page provides descriptions of and access to a comprehensive set of routines for the calculation of light scattering parameters by particles. Most of the code is written in the IDL language, but there is also a FORTRAN routine available.

16/09/21:

Tidying and couple of bug fixes when using mie_size_dist without the phase matrix output.

15/09/15:

Added support to output the 11, 33, 12, and 34 elements of the 4x4 single scattering phase matrix F, where F21 = F12 and F43 = -F34 and support for a modified gamma distribution of particles as defined in Hansen and Travis 1974.

21/06/13:

Converted pages to use the EODG version of the departmental website
style.

2/08/12:

Another bug in the calculation of backscattering efficiency has been corrected. In addition, the code can now be run for considerably larger size parameters than earlier versions

1/07/08:

A bug was discovered in `mie_single` and `mie_dlm_single` which effected the value of backscattering efficiency calculated. This has now been corrected. Thanks to Lin Tian for spotting and reporting the problem.

22/11/06:

Both `mie_single.pro` and `mie_dlm_single` have been updated. Both now calculate the backscattering efficiency from the An and Bn functions directly, rather than from the intensity at 180 degrees and will return a value even when the `Dqv` keyword is not set. Additionally, `mie_single.pro` has a small bug fix which makes passing Dqv when using the `DLM` keyword work properly

9/05/05:

New versions of the procedures for log-normal particle distributions (`mie_lognormal.pro` and `mie_derivs_ln.pro`) have been developed. These new versions make use of a much more accurate method for determining the quadrature points for the integration over particle size.

Also, a new version of the mie_dlm_single is available. This new version no longer returns the phase function, as this was causing random segmentation faults for some reason. The phase function can still be calculated from the two complex scattering functions `s1` and `s2`. Additionally, the maximum number of scattering angles which can be passed to the routine has been increased to 10,000.

11/04/05:

New versions of `mie_single.pro` and `mie_lognormal.pro` have been written that use a `dlm` keyword to allow the use of the new DLM. In addition, `mie_single.pro` now returns the correct value of the backscatter coefficient regardless of whether the `Dqv` is set or not.

30/03/05:

A DLM version of `mie_single` has been added. This offers considerable speed advantages over the IDL coded version.

1/10/04:

The algorithm used in `mie_derivs.pro` and `mie_derivs_ln.pro` has been published: Grainger *et al.*, "Calculation of Mie Derivatives", *Appl. Opt.*, 43(28): 5386-5393, **2004**.

17/02/04:

`mie_derivs.pro` and `mie_single` have been updated so that double precision floating point numbers are explicitly used in all calculations. In the case of `mie_derivs.pro` in particular, this results in a considerable improvement in accuracy for very large particle sizes. Thanks to Dr James Graham (University of California, Berkeley) for suggesting this improvement.

The routines currently available are listed below. Click on the programme name to see a full description.

Name | Type | Description |

mie_single.pro |
IDL procedure | Computes scattering parameters for single particle, Mie scattering. Accepts an array of particle size parameters and returns the scattering parameters for each one individually. |

mie_size_dist.pro |
IDL procedure | Computes the scattering parameters for a log-normal or modified gamma distribution of particles using Mie scattering. |

mie_derivs.pro |
IDL procedure | Uses Mie scattering to compute the scattering parameters and their derivatives (analytically) for a single particle. |

mie_derivs_ln.pro |
IDL procedure | Uses Mie scattering to compute the scattering parameters and their derivatives (analytically) for a log normal size distribution of particles. |

mie_dlm_single DLM |
IDL DLM procedure | Calls an IDL DLM version of the mie_single routine. Much faster than the IDL only version! |

mieext_f.pro |
IDL procedure | Calls a compiled FORTRAN version of the basic Mie code (similar to mie_single.pro) using the IDL CALL_EXTERNAL function. Requires mieext.so. |

The notation used in describing the properties of a log normal distribution in these pages (and the associated routines) is as follows. A log normal distribution is described by the equation:

where:

(or n(r)) = the number density of particles as a function of radius,

(or No) = the total number density of particles,

(or r) = particle radius,

(or rm) = the MEDIAN particle radius of the distribution,

(or S) = the SPREAD of the distribution where standard deviation of the radius in log space is equal to the log of S. i.e.

In both routines involving log normal distributions available here, No, rm and S are used to define the distribution described above.

This code has been written so that it contains no assumptions about the units of input or output variables. Thus, it is up to the user to work out the units of the output variables from the units of their inputs.

This approach, while ensuring the code is flexible and self consistent, can lead to some traps for the unwary. For example, if one uses the mie_size_dist routine to calculate the extinction coefficient and assumes typical units for particle radius (i.e. microns) and particle number density (i.e. number per cm^3), the units of the resulting extinction coefficient will be:

In other words, you'd be a factor of 1000 off if you were to assume that the extinction was being returned in the more standard units of 1/km.

You have been warned!

The following links should help to find Mie or other scattering code available on the web. This list is by no means comprehensive!

- SCATTERLIB: A collection of links to light scattering codes maintained by UC San Diego.
- Scattport: A scattering meta-site for articles, books, conferences, code etc relating to light scattering.
- Michael Mishchenko and Larry Travis' scattering site at NASA GISS.
- An online Mie scattering calculator by Scott Prahl.
- MieCalc: A Java based online Mie scattering calculator by Bernhard Michel.

Maintained by Greg McGarragh