A computer program for scattering of light from a sphere using Mie theory & the Debye series
MiePlot was originally designed to provide a simple interface (for PCs using Microsoft Windows) to the classic BHMIE algorithm for Mie scattering from a sphere - as published by Bohren and Huffmann in "Absorption and scattering of light by small particles" (ISBN 0-471-29340-7).
In addition to calculations of Mie scattering for single wavelengths, MiePlot offers calculations for scattering of sunlight - and simulations of atmospheric optical effects (such as rainbows, coronas and
glories). These simulations can be superimposed on digital images of actual optical effects - as shown elsewhere on this web site. Click here to see some examples.
MiePlot also offers the option of calculations using the Debye series. Although Mie theory provides an exact mathematical solution to the problem of scattering of electromagnetic waves from an homogeneous sphere, it does not provide any insight into the physical processes involved in scattering. The Debye series is essentially a reformulation of Mie theory allowing the separation of contributions due to specific ray paths.
Fig. 1 Scattering of unpolarised light of wavelength λ = 0.65 µm by a spherical water drop of radius r = 100 µm
Fig. 1 shows the results of Mie calculations which include all scattering processes, together with the contributions from specific ray paths calculated using the Debye series. This graph demonstrates how the various scattering processes combine to produce the Mie solution. For example, as is well known from geometrical optics, the primary rainbow is caused by rays that have suffered 1 internal reflection (p = 2 rays) and the secondary rainbow is caused by rays that have suffered 2 internal reflections (p = 3 rays). Click here for further graphs of the Debye series generated by MiePlot.
Although Mie theory and the Debye series are rigorous, these calculations can be very time consuming. For simulation of rainbows, Airy theory can provide equivalent results in a small fraction of the time. Other calculation methods, such as ray tracing, are important from the perspective of the history of science - as well as offering insights into the process of scattering. The latest version of MiePlot offers the following additional methods of modelling the scattering of light by a sphere:
Ray tracing (based on geometrical optics)
Ray tracing including the effects of interference between rays
This web site contains many graphs comparing the results given by various mathematical models. Click here for further information.
MiePlot allows the user to select:
the type of scattering sphere and surrounding medium (e.g. water in air, glass in a vacuum, air bubbles in water) - and associated variations of refractive index with wavelength of light.
built-in data for refractive index as a function of wavelength of various materials, including water, air, gold, silver and copper (users can create their own files of refractive index data for any material).
the option of using imaginary values of refractive index for water;
the spectrum of the incident light, derived from various measurements of daylight or based on black body radiation;
the ability to specify the lower and upper limits of wavelength for calculations involving multiple wavelengths;
the option of averaging the results over a specified interval (e.g. over 1°).
MiePlot also offers polar plots of scattered intensity versus scattering angle. The example shown above in Fig. 2 uses a logarithmic scale for intensity (each division represents a 10:1 change in intensity).
Other new features include graphs of scattering cross-sections (Cext, Csca & Cabs) and scattering efficiencies (Qext, Qsca & Qabs) as functions of radius of the scattering sphere, size parameter or wavelength.
One example is shown above in Fig. 3, which is similar to Fig. 24 in H. C. van de Hulst's 1957 book "Light scattering by small particles". The main difference is that, as van de Hulst noted, "not all minor wiggles are shown" on his version: this is understandable because he computed his results using a slide rule!
Many users have asked how to interpret the relative intensity scales used by MiePlot. Although MiePlot follows the conventions used by most authors on the topic of scattering, MiePlot provides the option of a different intensity scale (Watts/sq. m.). In this case, MiePlot calculates the scattered intensity at a specified distance (d measured in metres) from the scattering sphere for a specified intensity of the incident light (measured in Watts/sq. m.). MiePlot also includes the option of plotting the "phase function" which has the important property that its integral over all scattering angles is 1.
The Mie algorithm is applicable to scattering of light from a single sphere, but many users of MiePlot need to simulate scattering from many spheres, generally with slightly differing sizes (i.e. disperse). Previous versions of MiePlot could simulate scattering from a population of spheres with Normal or log-Normal size distributions: in such cases, MiePlot approximates the required statistical distribution by making calculations at, say, 20 discrete values of radius - as indicated by the red lines in Figs. 4A & 4B above. The latest version of MiePlot also permits the use of arbitrary size distributions, such as in histograms derived from experiments. Fig. 4C approximates a Normal distribution using a histogram with "bins" of 1 µm width, whilst Fig. 4D approximates a log-Normal distribution using "bins" of unequal width.
MiePlot 3.3 contains several new features:
Earlier versions of MiePlot were limited to spheres with size parameter x less than about 25,000 (corresponding to r = 2000 µm for scattering of red light). This restriction has now been removed - but note that calculations for very large spheres can be very slow!
The minimum angular resolution of MiePlot is set by default to 0.01° - since this is better than the visual acuity of the human eye. As smaller angular resolutions are needed for some applications (such as very large spheres or experiments involving optical instruments), MiePlot can now accept smaller values of angular resolution - but the resulting requirements for computer memory (RAM) can be very large.
Users can now specify the size of the sphere in terms of its radius, diameter or size parameter x.
The phase of the scattered light can be depicted in two graphical forms:
(a) separate rectangular graphs of intensity and phase and (b) parametric curves on polar plots showing amplitude and phase - as shown in Fig. 5 below for scattering from sphere of radius r = 10 µm for scattering angles between 0° and 120°.
New features in MiePlot 3.4 include:
Debye series calculations for complex values of refractive index - thus allowing calculations for absorbing spheres, as shown here;
Approximate calculations of the intensity of surface waves;
Plots of the asymmetry parameter g for Mie theory calculations as a function of radius, size parameter x and wavelength;
Plots of albedo for Mie theory calculations as a function of radius, size parameter x and wavelength;
False colour maps showing scattered intensity as a function of scattering angle and of (a) the refractive index of the sphere, (b) the radius of the sphere or (c) the wavelength of the light.
New features in MiePlot 3.5 include:
False colour maps showing the variation of scattering cross-sections (Qsca, Qext and Qabs) as a function of:
(a) real part of the refractive index and size parameter x;
(b) imaginary part of the refractive index and size parameter x;
(c) real part of the refractive index and imaginary part of the refractive index.
Additional size distributions for the scattering sphere: "Cumulus cloud" and "Haze" as defined in the paper “Scattering and Polarization Properties of Water Clouds and Hazes in the Visible and Infrared” by D. Deirmendjian published in Applied Optics, Vol. 3, No. 2, pp.187-196 (February 1964).;
The refractive index values are now shown separately for the sphere and for the surrounding medium;
An error in calculations of asymmetry parameter g in MiePlot v3.4 has been corrected;
An error in the built-in refractive index data for Gold at wavelengths between 276 and 292 nm has been corrected.
New features in MiePlot 4.0 include:
Calculations for scattering of Gaussian beams are now possible for Mie theory and Debye series (see Fig. 7 above for an example)
Calculations for scattering of Gaussian and "top hat" beams are now possible for ray tracing methods
Graphs of scattered power v. radius, diameter and wavelength
Graphs of scattering cross-sections Qsca, Qext and Qabs v. diameter" and Csca, Cext and Cabs v. diameter
The option to "fix" the refractive index for sphere and for the medium so that it does not vary with wavelength
Statistical distributions now include Gamma distribution and the option of multimodal distributions (e.g. combining up to 3 independent Normal or Log-Normal distributions)
Refractive index of materials can now be specified using Sellmeier coefficients
New features in MiePlot 4.1 include:
Mueller Matrix calculations (as shown in Fig. 8 above)
Use of the Fast Fourier Transform (FFT) to generate plots of frequency spectra corresponding to, for example, plots of intensity v. scattering angle (as shown in Fig. 9 above)
Calculations of "Asymmetry parameter v. wavelength" are now available for various size distributions
New features in MiePlot 4.2 include:
Calculations of the impulse response of a sphere for scattering of extremely short pulses (e.g. 10 femtoseconds) - as described here.
Calculations of backscattering coefficents Qback and Qradar as a function of radius, diameter, size parameter x and wavelength
New features in MiePlot 4.3 include:
Calculations for coated spheres - as described here.
Calculations of scattering matrix as a function of wavelength - similar to Fig. 8 above.
New features in MiePlot 4.4 include:
Calculations for inhomogeneous spheres in which the refractive index is a user-defined function of radius r as illustrated below
New features in MiePlot 4.5 include:
extended Help files based on the .chm format (instead of the obsolete .hlp format used by earlier versions of MiePlot).
New features in MiePlot 4.6 include:
calculations for coated spheres can now handle complex values of refractive index (previous versions of MiePlot were restricted to real values of refractive index);
a set of files giving refractive index data as a function of wavelength for various materials, including several data sets for gold (Au), silver (Ag) and copper (Cu) – thus facilitating comparisons between MiePlot results for the different data sets;
results of MiePlot calculations for multiple wavelengths (e.g. for rainbows, glories, etc.) can now be superimposed on CIE chromaticity diagrams as illustrated below:
CIE x-y chromaticity diagram with a parametric curve representing the colours of the primary rainbow as a function of θ between 138° and 145° caused by the scattering of sunlight by a water droplet of radius r = 150 μm. Note that the parametric curve has markers at intervals of 0.1°.
Many examples of MiePlot's graphical outputs and simulations of atmospheric optical effects are available elsewhere on this web site.
Download MiePlot v4.6
MiePlot4613.zip (file size: 2.12 MBytes = 2,284 kBytes = 2,338,5679 bytes) contains MiePlot version 4.6, together with the associated Help and data files.
Download MiePlot4613.zip and extract the archived files into an appropriate directory on your computer (e.g. C:\Program Files\MiePlot).
To run MiePlot, simply run MiePlot v4613.exe (e.g. by double clicking on this file using Windows Explorer).
Note that MiePlot was originally designed for displays with 1024 x 768 pixels.
Although the basic features work on 800 x 600 displays, 1024 x 768 displays (or larger) will give much better results.
If you are still using a display with 640 x 480 pixels, MiePlot will not be usable at this resolution - sorry!
For displays using more than 1024 x 768 pixels, MiePlot adjusts the layout to fit the screen size and now adjusts the graph size if the window is resized. This feature has been tested on various displays up to 1920 x 1080 pixels. Please let me know if you experience any problems with this feature.
If you are using Windows 8/8.1 or Windows 10 with an HD display (e.g. 1920 x 1080 pixels or more), you may find that MiePlot looks blurred. To overcome this problem, locate "MiePlot v4600.exe" (or a subsequent version) using Windows Explorer, use your mouse to right-click on this file and select "Properties". Under the tab marked "Compatibility", check the box labelled "Disable display scaling on high DPI settings" and click "OK". When you next open MiePlot, you will find that the details in the MiePlot window now look much sharper - indeed, MiePlot is now able to use the full resolution of your display!
Help files: MiePlot's Help files now use the .chm format (Microsoft Compiled HTML Help). Some users of MiePlot have reported that they can see the section headings in MiePlot's help file, but they cannot not see the text. If you have this problem, use Windows Explorer to right-click on the file "MiePlot.chm" to access the properties dialog box and then click on the "Unblock" button. Another reported problem occurs if the "MiePlot.chm" file is accessed via a local network: the solution is to copy all of your MiePlot files into a "local" directory on your computer (e.g. the C: or D: drive).
Users of PCs configured in languages other than English may find that MiePlot fails to start correctly - giving an error message about "international" versions of Windows expecting "," (rather than ".") as the decimal symbol. For example, MiePlot assumes that numbers will be entered in the form "1.25", not "1,25". In fact, error-checking routines will automatically convert such entries into the form expected by MiePlot.
To overcome this problem in Windows 10, you should select “Control Panel” from the Windows Start menu, followed by “Region” and then "Formats". Click on "Additional settings" and then under the “Numbers” tab, select “.” as the “Decimal symbol”.
To overcome this problem in Windows 8, you should select "Control Panel" from the Start menu, followed by "Clock, Language and region", then click on "Region and language options". Click the "Formats" tab and then, in the "Current format" list, select "." as the "Decimal symbol".
To overcome this problem in Windows 7, you should select "Control Panel" from the Start menu, followed by "Region and language". Under the "Formats" tab, you should select "Additional settings" and then select "." as the "Decimal symbol".
To overcome this problem in Windows Vista, you should select "Settings" from the Start menu, followed by "Control Panel" and "Regional and language options". Under the "Formats" tab, you should select "Customize this format" and and then select "." as the "Decimal symbol".
To overcome this problem in Windows XP, you should select “Settings” from the Windows Start menu, followed by “Control Panel”, “Regional and language options” and then select “.” as the “Decimal symbol”.
To overcome this problem in Windows 2000, you should select “Settings” from the Windows Start menu, followed by “Control Panel”, “Regional options” and then under “Numbers” select “.” as the “Decimal symbol”.
N.B. Missing Files As MiePlot was written in Visual Basic, some additional files may need to be installed on your PC.
If you see an error message regarding MSVBVM60.DLL, you can install all of the Microsoft Visual Basic 6.0 run-time files by downloading and running vbrun60sp6.exe. This file can be downloaded from Microsoft's web site.
Most PCs already include the required files, but please let me know if you have any problems installing or running MiePlot.
Legal mumbo jumbo!
The MiePlot computer program is available free of charge for non-commercial use. You may not sell it, but you can distribute it free of charge to others. Please include the Help files. However, this program is offered on the explicit understanding that no modifications may be made to it. Although this program has been tested on Microsoft Windows 98, NT, 2000, XP, Vista, Windows 7, Windows 8/8.1 and Windows 10, no warranty is offered!
I would like to thank everybody who has reported bugs or made suggestions for improvements to MiePlot. I hope that MiePlot v4 includes most of the requested facilities - but if you have any additional suggestions, please contact me. Your feedback is welcome!