This page provides descriptions of and access to a comprehensive set of routines for the calculation of light scattering parameters by aerosol particles. Most of the code is written in the IDL language, but there is also a FORTRAN routine available.
The IDL code is available in the directory:
/home/crun/eodg/idl/mie
and is accessible to all users of the AOPP Unix system. In order to be
able to run the IDL code from it's present location you will have to
ensure this location is included in your IDL_PATH environment
variable, i.e. add the following line at the end of your .login
file:
setenv IDL_PATH $IDL_PATH:/home/crun/eodg/idl/mie.
Alternatively,
setenv IDL_PATH $IDL_PATH:+/home/crun/eodg/idl
will give you access to all the IDL code within this directory and
its sub-directories.
Please note that this archive is still in the process of being put together, so don't expect everything to work perfectly just yet.
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 given below. Click on the programme name to see a full description. Each individual routine can be downloaded separately or a tar-gzip archive of all routines is available here.
| 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_lognormal.pro | IDL procedure | Computes the scattering parameters for a lognormal 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 aerosols with a log normal size distribution . |
| 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. Works on both x86 and Alpha architectures. Requires mieext_alpha.so or mieext_x86.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:

(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.
This code has been written so that it containes no assumptions about the units
of input or output variables. Thus, to 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_lognormal 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:

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