The mie_lognormal.pro routine performs Mie scattering calculations on a
lognormal distribution of particles of a given refractive index. As with
mie_single.pro, it returns the distribution of
scattered radiation, along with various particle cross sections and the
asymmetry parameter.
mie_lognormal.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):
Nd: The number density of particles in the distribution. This
value must be a scalar quantity greater than zero.
Rm: The median radius of the distribution. This must also be a
positive scalar.
Sg: 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 radiation,
defined as 1/wavelength. This must be a positive scalar and it's
units should match those of Rm (i.e. 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 phase function.
If specified it must be either a scalar quantity, or a vector of such values.
dlm=dlm: If set the IDL DLM version of mie_single (mie_dlm_single) will be used instead of the IDL coded version. Note: This requires the DLM to be set up on your system!
npts=npts: If set, this keyword overrides the default calculation of the quadrature points (which provides points at 0.1 spacing in the size parameter). Note: Great care should be taken when using this keyword, as reducing the number of quadrature points will decrease the accuracy of the result.
xres=xres: This is similar to the npts keyword, accept that it sets the spacing (in the size parameter) of the quadrature points, overiding the default value of 0.1. This keyword is itself overidden by the npts keyword. Note: Great care should be taken when using this keyword, as reducing the number of quadrature points will decrease the accuracy of the result.
The output parameters are:
Bext: The total extinction coefficient of the
distribution. This will be a scalar of type double and the units
will be determined by those of number density and particle size (see
here for further explanation).
Bsca: The total scattering coefficient of the distribution. This is of the same
type and size, and will have the same units as Bext.
w: The single scatter albedo of the distribution. This is of the
same type and size as Bext.
g: The asymmetry parameter. Again, this is of the same type and
size as Bext.
Dph: The phase function. This will only be calculated if
Dqv is specified is of type double and has the same dimensions as
Dqv.
info=info
: If set this keyword returns a structure containing the parameters used in the quadrature. The structure has three members: info.npts = number of quadrature points used, info.minsize = minimum size parameter, info.maxsize = maximum size parameter.
This procedure calls the mie_single.pro procedure or the mie_dlm_single DLM. As a result of this, any distribution
that contains particles with size parameters greater than 12000 will result
in the programme truncating the upper end of the distribution and giving the
warning message "mie_lognormal: Warning! Radius upper bound truncated to
avoid size parameter overflow.".
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.