The `mie_single.pro` routine performs single particle Mie scattering calculations, providing the distribution of scattering radiation, as well as various particle cross sections and the asymmetry parameter.

`mie_single.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_single, Dx, Cm [, Dqv=Dqv] [, /DLM] [, mthread=mthread] [, /SILENT], Dqxt, Dqsc, Dqbk, Dg [, Xs1] [, Xs2] [, SPM]`

The input parameters in the above call are:

`Dx`: Particle size parameter(s). This can either be a scalar float/double quantity or a vector of values and must always be greater than zero.`Cm`: Complex refractive index of the particle(s). 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).`/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.

`Dqxt`: Extinction efficiency. This will be a vector of type double, with the same number of elements as`Dx`.`Dqsc`: Scattering efficiency. This is of the same type and size as`Dqxt`.`Dqbk`: Backscattering efficiency. This is of the same type and size as`Dqxt`.`Dg`: Asymmetry parameter. This is of the same type and size as`Dqxt`.`Xs1`: First amplitude function - amplitude of light polarized in the plane perpendicular to the directions of incident light propagation and observation.`Xs1`is a complex array of the same dimension as`Dqv`and is only calculated if`Dqv`is specified.`Xs2`: Second amplitude function - amplitude of light polarized in the plane parallel to the directions of incident light propagation and observation.`Xs2`is a complex array of the same dimension as`Dqv`and is only calculated if`Dqv`is specified.`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`and the 3rd dimension is the same dimension as`Dx`. Only calculated if`Dqv`is specified.

The maximum size parameter allowed by `mie_single.pro` is 1200. Any value larger than this will result in the programme halting with the error message "`Error: Size Parameter Overflow in Mie`".

To allow the use of the `dlm` keyword the IDL DLM `mie_dlm_single` must be compiled.

This procedure is called by the
`mie_size_dist.pro` and
`mie_derivs_ln.pro` procedures.

Maintained by Greg McGarragh