Mie theory, also called Lorenz-Mie theory or Lorenz-Mie-Debye theory, is an analytical solution of Maxwell's equations for the scattering of electromagnetic radiation by spherical particles (also called Mie scattering) in terms of infinite series. The Mie solution is named after its developer, German physicist Gustav Mie. However, Danish physicist Ludvig Lorenz and others independently developed the theory of electromagnetic plane wave scattering by a dielectric sphere.

The term "Mie solution" is sometimes used more generically for any analytical solution in terms of infinite series, for example in case of concentric spheres, or cluster of spheres, or infinite cylinders. However, here we consider only homogeneous spheres.

See also
Wikipedia article on Mie scattering

Here is my interview with Warren Wiscombe which I posted on Arxiv
Interview with Warren Wiscombe on scientific programing and his contributions to atmospheric science tool making or get local copy)

Bohren and Huffman and related

This code was originally published in the Appendix of "Absorption and Scattering of Light by Small Particles" by Bohren, Craig F., Huffman, Donald R, 1983, Wiley, New York, 530 pages. It is one of the most used Mie code.
Name Author Type Language Description
Appendix 2 Documentation
bhmie f77 Bohren and Huffman Mie Fortran This code is published in the appendix of Bohren, Craig F., and Donald R. Huffman. Absorption and scattering of light by small particles. John Wiley & Sons, 2008. The code is available here with slight extension; calculation of asymmetry parameter (by B. T. Draine of Princeton University)
bhmie C Bohren and Huffman Mie C Translation of Bohren and Huffman code
bhmie IDL Bohren and Huffman Mie IDL Translation by Piotr Flatau
bhmie Matlab Bohren and Huffman Mie Matlab Translation
Python version Bohren and Huffman Mie Python Herbert Kaiser (University of Konstanz, Germany)


Name Author Type Language Description
MiePlot Philip Laven Mie Visual Basic Based on the BHMIE code, this Visual Basic interface offers an easy-to-use interface providing graphs of intensity v. scattering angle, wavelength, radius and refractive index, etc. Very nice. http://www.philiplaven.com/mieplot.htm

Other Mie codes

Name Author Type Language Description
MIEV0 W. Wiscombe Mie Fortran Warren Wiscombe is know to produce very good codes and MIEV0 is one more example. The code comes with extensive set of self-tests and extensive documentation. It is one of the best MIE code available. On the other hand there is some learning curve at first and BHMIE is, I think, working as well.
CAM Wiscombe Approximation Fortran For large size parameters! A package of routines to calculate the three Mie efficiency factors Q-ext, Q-abs and Q-pr (extinction, absorption, radiation pressure) using CAM approximations. These approximations are only useful (accurate to better than 10% or so) for size parameters above about 20 for Q-ext and above about 100 for Q-abs and Q-pr. Note that the Mie curves have a lot of ripple which makes comparisons at individual size parameters almost useless; you must plot the Mie and approximate curves for a short range of size parameter to see the overall accuracy of the approximations.
Barber and Hill codes Mie Barber and Hill Fortran S1.for (a) efficiencies (ext.,sca.,abs.) vs size parameter (b) intensity at a scattering angle vs size parameter (c) angular scattering over a plane; S2.for angular scattering in all directions ; S3.for scattering matrix calculations ; S4.for internal and external coefficients vs size parameter ; S5.for angle-averaged intensities, internal and near-field ; S6.for surface intensity - internal and external ; S7.for internal intensity distribution - 2D and 3D ; S8.for external intensity distribution - 2D and 3D

Other codes (no source)



Ramsauer approach to Mie scattering of light on spherical particles

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License