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.
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.
Computes scattering parameters for single
particle, Mie scattering. Accepts an array of particle size
parameters and returns the scattering parameters for each one
individually.
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:
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 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:
In otherwords, 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!