The mie_derivs_ln.pro procedure performs Mie scattering
calculations on aerosol with a log normal size distribution and provides
analytically derived derivatives, with respect to the properties of the
distribution, of all output parameters. The procedure provides the
distribution of scattering radiation (in the form of the Mie intensity
functions), the volume extinction and scattering coefficients and their
derivatives.
A the derivation of expressions for the analytical derivatives
of Mie scattering terms is covered by:
Grainger, R.G., J. Lucas, G.E. Thomas, G. Ewan, "The Calculation of
Mie Derivatives", Appl. Opt., 43(28), 5286-5393, 2004.
mie_derivs_ln.pro is an IDL procedure and can be called with
the following command line from the IDL prompt (as long as the source
file lies within your IDL_PATH environment variable):
N: The number density of the particle distribution.
Rm: The median radius of the particle distribution
(in microns).
S: The spread of the distribution, where is is defined
so that the standard deviation of ln(radius) is ln(S).
Wavenumber: The wavenumber of the incident light, defined
as 1/wavelength. This must be a positive scalar and it's units
should match those of Rm (ie. if Rm is in
microns, Wavenumber should be in 1/microns).
Cm: The complex refractive index of the particles. Only one
refractive index value can be used in each call to the procedure and
must take the form complex(a,-b) (where a is the real part of the
refractive index, and b is the imaginary (or absorpative) part, and
is either zero or negative).
Dqv=dqv: This is an optional keyword parameter which
specifies the cosine of the scattering angles at which to calculate
the intensity functions. If specified it must be either a scalar
quantity, or a vector of such values.
The output parameters are:
Bext: The volume extinction coefficient.
Bsca: The volume scattering coefficient.
dBextdN: Derivative of the extinction coefficient with
respect to the number density.
dBextdRm: Derivative of the extinction coefficient with
respect to the mean radius.
dBextdS: Derivative of the extinction coefficient with
respect to the spread.
dBscadN: Derivative of the scattering coefficient with
respect to the number density.
dBscadRm: Derivative of the scattering coefficient with
respect to the mean radius.
dBscadS: Derivative of the scattering coefficient with
respect to the spread.
Note: All of the above output variables are scalars of type double.
i1: The first intensity function - intensity of light
polarized in the plane perpendicular to the directions of incident light
propagation and observation.
i2: The second intensity function - intensity of light
polarized in the plane parallel to the directions of incident light
propagation and observation.
di1dN: Derivatives of the first intensity function with
respect to the number density.
di1dRm: Derivatives of the first intensity function with
respect to the mean radius.
di1dS: Derivatives of the first intensity function with
respect to the spread.
di2dN: Derivatives of the second intensity function with
respect to the number density.
di2dRm: Derivatives of the second intensity function with
respect to the mean radius.
di2dS: Derivatives of the second intensity function with
respect to the spread.
Note: All of these output variables will be vectors of type double, with
the same number of elements as Dqv and will only be calculated if
Dqv is specified.
It should be noted that is a very new routine and has yet to be
extensively tested.
This procedure calls the mie_single.pro
procedure.As a result of this, any distribution
that contains particles with size parameters greater than 12000 will result
in the programme exiting with the error message "Error: Size Parameter
Overflow in Mie".
This procedure also calls the quadrature.pro and shift_quadrature.pro procedures (click to download). Quadrature is called with the command line: quadrature, 'g', Npts, abs, wght
the string 'g' can be either 'g' for Gaussian quadrature,
'l' for Lobatto quadrature, 'r' for Radau quadrature, 's' for Simson's rule or 't' for the Trapezium rule. Npts specifies the number of quadrature points required and the routine returns the abscissa and weighting values in abs and wght respectively.
shift_quadrature.pro is called with the command line: shift_quadrature,abscissa,weights,A,B,new_abscissa,new_weights
and simply transforms the abscissa and weights from the interval [-1,1] to [A,B], place the new values in new_abscissa and new_weights.