Oxford Physics
Home Oxford Physics University of Oxford Live Weather Getting here Contact

Introduction
  mie_single
  mie_lognormal
  mie_derivs
  mie_derivs_ln
  mie_dlm_single
  mieext_f
AOPP home
Contact

UNIVERSITY HOME

mie_lognormal.pro


Purpose

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.

Calling the procedure

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):

mie_lognormal, Nd, Rm, Sg, Wavenumber, Cm, [Dqv=dqv], [dlm=dlm], [npts=npts], [xres=xres] Bext, Bsca, w, g, ph, [info=info]

The input parameters in the above call are:

  • 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.

Limitations and dependences

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.

Download source code

The source code for this routine can be downloaded in gzip form from here.
Also available:
mie_single.pro.gz.
quadrature.pro.gz.
shift_quadrature.pro.gz
mie_dlm_single.
last updated @16:54 GMT 08-Nov-2010 printable version