`mie_dlm_single` is an IDL DLM which is functionally equivalent to `mie_single.pro` (with some minor differences!). The Mie algorithm itself is written in Fortran 77 and the DLM functionality is added by a C wrapper.

**Note:** A *brief* guide to creating IDL DLM's is now
available here.

`mie_dlm_single` is an IDL DLM procedure and can be called with the following command line from the IDL prompt (as long as the both `mie_dlm_single.dlm` and `mie_dlm_single.so` are located somewhere with the path defined by the `IDL_DLM_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**must**be a vector of type double (although it can have only one element).`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). This**must**be of type double complex.`Dqv`: Cosines of the scattering angles at which to calculate the intensity functions etc. If specified it**must**be vector of type double (although it can have only one element).`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.

`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_dlm_single.pro` is 1200. Any value larger than this will result in the programme halting with the error message:

`MIE_DLM_SINGLE: Size Parameter Overflow`.

In order to use the routine you must have both the `mie_dlm_single.dlm` and `mie_dlm_single.so` in the path specified by your `IDL_DLM_PATH` environment variable.

Maintained by Greg McGarragh