The mie_size_dist.pro routine performs Mie scattering calculations on a size 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_size_dist.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):
distname: Name of the size distribution. 'log_normal' or 'modified_gamma' according to Hansen and Travis 1974.
Nd: Number density of particles in the distribution. This value must be a scalar quantity greater than zero.
params: Array of size distribution parameters.
For 'log_normal':
params[0] Median radius of the particle distribution
params[1] Spread of the distribution, such that the standard deviation of ln(r) is ln(S)
For 'modified_gamma':
params[0] : a
params[1] : b
params[2] : Minimum radius in the distribution
params[3] : Maximum radius in the distribution
wavenumber: Wavenumber of light. 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: Complex refractive index. 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 absorptive) part, and is either zero or negative).
Dqv: Cosines of the scattering angles at which to calculate the intensity functions etc. If specified it must be vector of type float or double (although it can have only one element).
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: Sets the spacing of the quadrature points (in size parameter). Overridden by Npts. Default is 0.1.. Note: Great care should be taken when using this keyword, as reducing the number of quadrature points will decrease the accuracy of the result.
/DLM: If set the IDL DLM version of the algorithm (mie_dlm_single) will be used instead of the IDL coded version. Note: This requires the DLM to be compiled.
mthread=mthread: Controls the number of threads which will be utilised by the DLM version of the algorithm. If not set by default the code will use 1 thread. See the procedure header for more information.
/SILENT: If set all warning messages issued by the code will be suppressed.
The output parameters are:
Bext: 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: Total scattering coefficient of the distribution. This is of the same type and size, and will have the same units as Bext.
w: Single scatter albedo of the distribution. This is of the same type and size as Bext.
g: Asymmetry parameter of the distribution. This is of the same type and size as Bext.
SPM: Scattering phase matrix elements F11 (F[0,*]), F33 (F[1,*]), F12 (F[2,*]), F34 (F[3,*]), where the 2nd dimension is the same dimension as Dqv. This will only be calculated if Dqv is specified.
Bbac: Total backscatter coefficient of the distribution.
Gavg: Average projected area per particle of the distribution.
Vavg: Average volume per particle of the distribution.
Ravg: Average radius of the distribution.
RVW: Volume-weighted average radius of the distribution.
info: Named variable that, on return, will contain a structure containing the number of abscissa points and the maximum and minimum size parameters used.
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_size_dist: Warning! Radius upper bound truncated to void 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.
The source code for this routine and supporting routines is part of the EODG Mie scattering distribution which may be downloaded as a gzipped tar file here.