Theory#
Lorenz-Mie Theory (LMT)#
Note
Lorenz-Mie Theory (LMT) provides the exact solution for the scattering of a plane wave by a spherical or cylindrical scatterer. The solution is expressed as an infinite summation, which is truncated in practical applications. PyMieSim solves these equations to retrieve several key scattering properties, such as scattering efficiencies and far-field intensities.
From theory to constructor arguments#
For a homogeneous sphere in a real-index surrounding medium, use:
Symbol |
Meaning |
API argument or output |
|---|---|---|
\(\lambda_0\) |
Vacuum wavelength, with length units |
|
\(d=2r\) |
Sphere diameter, with length units |
|
\(n_p\) |
Particle refractive index, possibly complex |
|
\(n_m\) |
Surrounding medium refractive index |
|
\(M=n_p/n_m\) |
Relative index used by the Mie coefficients |
Computed from |
\(x=\pi d n_m/\lambda_0\) |
Size parameter, dimensionless |
|
\(A=\pi d^2/4\) |
Projected sphere area |
|
The wavelength in the coefficient equations below is the medium wavelength \(\lambda=\lambda_0/n_m\). Pass the vacuum wavelength to the API; do not rescale it yourself. Material models are also evaluated at the vacuum wavelength. For core-shell particles, distinguish core diameter from shell thickness using the constructor reference.
Angles and coordinates#
Scattering angle \(\alpha\) is measured from the incident direction. Zero is forward scattering and \(\pi\) is backward scattering.#
Simulation.get_s1s2(angles=...) accepts unit-bearing scattering angles
\(\alpha\), for example [0, 90, 180] * ureg.degree. Polarization angle
sets the incident transverse polarization; it is a separate constructor input.
Angular field APIs use phi and theta rather than the one-dimensional
scattering angle. In the native Spherical coordinate conversion,
\(\theta\) is azimuth in the x-y plane and \(\phi\) is elevation:
Thus the polar angle from positive z is \(\alpha=\pi/2-\phi\).
Use the returned mesh for structured field arrays: plotting helpers and
structured meshes can use their own angular layout. Do not substitute a
get_s1s2 scattering-angle vector directly for a field mesh coordinate.
Detector phi_offset and gamma_offset orient the acceptance cone;
use simulation.plot_system() to inspect its orientation.
Normalization and physical meaning#
For spheres, efficiencies satisfy \(C_i=Q_i A\); Qsca and Qext are
not fractions of incident source power and can exceed one. Cross sections
carry area units. Infinite-cylinder cross sections use the backend’s cylinder
normalization; do not apply the sphere projected-area formula to them.
coupling is detector-collected power in watts for the configured source.
A plot of field magnitude, squared field magnitude, or a normalized angular pattern has different units and normalization. In particular, the SPF surface representation is not automatically a probability density whose solid-angle integral equals one. The phase-function example explicitly normalizes its unpolarized angular intensity by its solid-angle integral, so its curves have units of inverse steradians. Consult Measure reference for integrated observables and the relevant API docstring for field units.
Key Relations Governing PyMieSim#
The following are some of the core relations used in PyMieSim to compute the scattered fields and related parameters.
Stokes Parameters:
These parameters describe the polarization state of the scattered light:
Scattering Properties#
Several important properties of the scatterer can be computed using PyMieSim. These include:
Scattering efficiency
Extinction efficiency
Absorption efficiency
Back-scattering efficiency
Forward-to-back scattering ratio
Radiation pressure efficiency
Anisotropy factor \(g\)
These properties are computed as follows:
The cross-sectional areas can be computed as:
Where: - \(r\) is the sphere radius and \(A_s\) its projected area. - \(\sigma_{\text{sca}}\), \(\sigma_{\text{ext}}\), and \(\sigma_{\text{abs}}\) are the scattering, extinction, and absorption cross-sections, respectively.
An and Bn Coefficients#
The Lorenz-Mie theory also defines the coefficients \(a_n\) and \(b_n\), which characterize the scattered fields. These coefficients vary depending on the scatterer’s geometry.
Sphere#
For a spherical scatterer, the \(a_n\) and \(b_n\) coefficients are given by:
With:
\(\psi_n\) and \(\xi_n\) being spherical Bessel and Hankel functions.
\(M = \frac{k_{\text{sp}}}{k}\) is the relative complex refractive index.
\(x = \frac{\pi d}{\lambda}\) is the size parameter.
\(\lambda\) is the wavelength in the surrounding medium.
Note: PyMieSim assumes \(\mu_{\text{sp}} = \mu\) for now, but this may change in future updates.
Cylinder#
For cylindrical scatterers, the coefficients are:
Where: - \(M\) is the refractive index of the scatterer. - \(m\) is the refractive index of the medium. - \(H_n\) is the Hankel function of the first kind of order \(n\).
Core/Shell Sphere#
For core/shell spheres, the coefficients \(a_n\) and \(b_n\) are given by more complex expressions:
With: - \(x = \frac{2\pi R_{\text{core}}}{\lambda}\) and \(y = \frac{2\pi R_{\text{shell}}}{\lambda}\) - \(m_1 = \frac{n_{\text{core}}}{n_{\text{medium}}}\) and \(m_2 = \frac{n_{\text{shell}}}{n_{\text{medium}}}\)
Generalized Lorenz-Mie Theory (GLMT)#
Note
Coming soon — Future updates will cover the extension of LMT to more complex scatterers using GLMT.
Coupling Mechanisms#
There are two main coupling mechanisms for light collection: coherent coupling and non-coherent coupling.
Coherent coupling involves interference and usually results in less light being collected but offers additional information about the sample. Non-coherent coupling collects light without interference and is used by instruments like photodiodes.
The mathematical definitions are:
Centered Coupling assumes the scatterer is perfectly aligned with the detector. For non-centered scenarios, the footprint of the scatterer is defined by:
The mean coupling can be calculated as: