A sphere of radius and refractive index sits in a host of index , lit by a plane wave of vacuum wavelength . Two numbers decide everything that follows: the size parameter and the relative index,
Gustav Mie solved this problem exactly in 1908, to explain why colloidal gold is red, violet or blue depending on the size of its particles (Lorenz had the solution in 1890 and Debye in 1909, which is why the theory carries three names in the older literature). The same solution describes a raindrop, a silicon nanoparticle and a biological cell under an infrared microscope, and it is the single-interface case of the multilayered sphere that PyStratify solves in general.
The plane wave as a sum of multipoles
In spherical coordinates the vector wave equation separates (the Foundations table). The fields inside and outside the sphere become sums of vector spherical harmonics, each labelled by an angular order (dipole, quadrupole, …) and by its character: electric (transverse magnetic, TM) or magnetic (transverse electric, TE). The first step, and the one that makes the whole method work, is to write the incident plane wave in the same language. A plane wave polarized along and travelling along is (Bohren and Huffman Eq. 4.37)
a sum over orders of the regular (-based) magnetic and electric multipoles with only, with the coefficients . Only appears because a plane wave has one axis; a dipole source off the centre excites every . The radial dependence of every term obeys the spherical Bessel equation, a second-order linear equation, so in each region it is a combination of two independent solutions. We use the Riccati–Bessel functions
regular at the centre and outgoing at infinity respectively: inside the sphere only is allowed, outside the scattered field is pure , and the incident field is .
Two boundary conditions per order
At the tangential components of and are continuous. Because the harmonics are orthogonal on the sphere, the conditions hold order by order and character by character: for each and each of TM and TE this gives two linear equations in two unknowns (the internal amplitude and the scattered one), the same structure as a single interface of a thin film. Solving them gives the scattering coefficients of a non-magnetic sphere (time dependence ):
is the electric multipole of order , the magnetic one, and the two differ only in where the relative index sits, exactly as and of a film differ in where sits. For a magnetic sphere () in the numerators and denominators is replaced by or in the appropriate places (Kerker's book), which is how a sphere with comes to have , the origin of the Kerker conditions of the next section. The resonances of the sphere live in the denominators: where one nearly vanishes, its coefficient peaks and the sphere radiates strongly in that multipole. Add shells and each interface contributes one more matrix; that is the transfer-matrix solution of the multilayered sphere, and what PyStratify computes for any number of layers.
Efficiencies and the far field
Dividing the cross sections by the geometric area gives the efficiencies:
and . Each term of the sums is the share of one multipole, which is how the calculator splits a spectrum into its electric and magnetic orders. The extinction formula is the optical theorem in disguise: is the forward-scattering amplitude's imaginary part, so the light removed from the beam is measured by what is scattered exactly forward, whether the sphere absorbs or not. The angular distribution comes from the two amplitude functions
with and the angular functions; the scattered intensity for light polarized perpendicular and parallel to the scattering plane is and over , and the polarization, the asymmetry parameter and the Mueller matrix all follow from them. Checks of the engine's , against Bohren and Huffman's own BHMIE and against two other Mie codes are on the Verification page.
A silicon sphere
Silicon has an index near 4 across the visible. Inside so dense a particle the wavelength shrinks to , and when it becomes comparable to the diameter the field inside circulates: a loop of displacement current, the magnetic dipole . It is the lowest resonance of a high-index sphere, longer in wavelength than the electric dipole that follows it, and it gives such particles their colours (Kuznetsov et al., 2012).
Code
import numpy as np
import pystratify as ps
from pystratify.docs import material # n + ik of a refractiveindex.info page
lam = (430 + 2 * np.arange(186)) * 1e-3 # wavelength, µm
N = np.column_stack([material('crosscheck/classics/data/Si_Green-2008.yml', lam), np.full(lam.shape, (1+0j))]) # n + ik: core, then the host
cs = ps.cross_sections(ps.solve([0.075], N, lam)) # outer radii, µm
q_ext, q_sca = cs.q_ext, cs.q_sca
b1 = cs.sca_by_order[:, ps.TE, 0] / cs.geometric # magnetic dipole part of Q_sca
- agrees magnetic-dipole peak, radius 75 nm (nm): 610 against 607 ± 15 (Kuznetsov et al., Sci. Rep. 2, 492 (2012), Fig. 3c(iv), read)
Move the radius from 50 to 135 nm and the magnetic dipole walks across the visible spectrum; the electric dipole and then the magnetic quadrupole follow it at shorter wavelengths.
Where the series stops
The sums converge once exceeds the size parameter by a few terms: a partial wave of order has its angular momentum at an impact parameter , and orders with miss the sphere. Wiscombe's rule
is accurate for far-field quantities to about ; the term is the width of the edge region where grazing partial waves are diffracted. For a high-index core the internal size parameter matters as well, so PyStratify, and the calculator through it, take the larger of the two; a field evaluated at the surface, or a dipole close to it, needs more still, and the engine extends the order until the quantity converges.
The numerics every Mie code lives by
Mie's formulas are exact and innocent-looking, and most of the published Mie codes that give wrong answers fail in the Riccati–Bessel functions, not in the physics. Three facts matter. computed by upward recurrence in is unstable for (the errors grow like the ratio of the two solutions, which is huge there), so the standard trick since Deirmendjian is to compute the logarithmic derivative by downward recurrence from a starting order well above , or by Lentz's continued fraction (1976), and to write and in terms of alone; this is BHMIE's algorithm. For complex the function itself grows like , and the coefficients are ratios of numbers that overflow long before the sums converge, which is where a logarithmic representation of the amplitudes, carried through the transfer-matrix recursion (Moroz 2005), keeps a metal sphere or a thin absorbing shell safe at any order. And for the coefficients fall like , so a sum that is stopped early is wrong by the first dropped term, not by a rounding error; a coefficient of must be representable, or set to exactly zero, never to garbage. The Verification page compares the engine's coefficients with the same formulas evaluated in 60-digit arithmetic over forty orders of a thin nanoshell, and with BHMIE to ; one of those comparisons found BHMIE's own double-precision recurrence drifting at large for a weakly absorbing sphere.
Two limits worth knowing
For a sphere much smaller than the wavelength () only survives, with , and
Rayleigh's law for scattering, and an absorption that goes as the volume, so that small absorbing particles absorb far more than they scatter. For a metal the denominator vanishes near : that is the localized surface plasmon of a small gold or silver particle, at 520 nm for gold in water, the colour of the ruby glass that started Mie on the problem. For a sphere much larger than the wavelength, : the sphere removes twice the light that falls on its cross section, half by absorption or reflection and half by diffraction around its edge, the extinction paradox, resolved by noting that the diffracted half is scattered into so narrow a forward cone that any real detector collects it and measures . Between the two limits a weakly refracting sphere (, ) follows van de Hulst's anomalous-diffraction approximation, with the phase lag : a slow oscillation in wavelength, with its first maximum near , that a cell or a nucleus of a few micrometres imprints on its infrared spectrum, and which is routinely mistaken for a baseline.
References
- G. Mie, Ann. Phys. 330, 377 (1908), doi:10.1002/andp.19083300302
- C. F. Bohren and D. R. Huffman, Absorption and Scattering of Light by Small Particles (Wiley, 1983), ch. 4, doi:10.1002/9783527618156
- H. C. van de Hulst, Light Scattering by Small Particles (Wiley, 1957; Dover, 1981), ch. 9 and 11
- M. Kerker, The Scattering of Light and Other Electromagnetic Radiation (Academic Press, 1969), ch. 3
- W. J. Wiscombe, Appl. Opt. 19, 1505 (1980), doi:10.1364/AO.19.001505
- W. J. Lentz, Appl. Opt. 15, 668 (1976), doi:10.1364/AO.15.000668
- A. Moroz, Ann. Phys. 315, 352 (2005), doi:10.1016/j.aop.2004.07.002
- A. I. Kuznetsov et al., Sci. Rep. 2, 492 (2012), doi:10.1038/srep00492