Feb 10, 2022
What scattering models are available in OpticStudio?
This blog post provides a summary of the surface and bulk scattering models available in OpticStudio. It describes the bi-directional scattering distribution function (BSDF) used by different built-in scattering models as well as the DLL scattering models. It also provides a general guideline on when to use each scattering model.
In any optical system, light may be scattered at a surface boundary (e.g., due to surface roughness) as well as within the bulk of a volume (e.g., due to light-particle interaction). Both scattering phenomena may be modeled in the Non-Sequential Mode of OpticStudio.
OpticStudio provides several models to describe surface and bulk scattering. This article is meant to provide a summary of these models. More details on each model may be found in the OpticStudio Help File section: “The Setup Tab>Editors Group (Setup Tab)>Non-sequential Component Editor>Non-sequential Overview>Scattering (non-sequential overview)>Available Scatter Models”, as well as in associated Knowledgebase articles.
Surface scattering models
Several models are available to model surface scattering in OpticStudio. These include built-in models as well as user-defined DLL models. The models are generally described in terms of the bi-directional scattering distribution function (BSDF).
where dLs is the scattered radiance, dEi is the incident irradiance, θ is the polar angle as measured from the surface normal, ϕ is the azimuthal angle, and the subscripts i and s refer to the incident and scattered directions, respectively. The BSDF can also be defined in terms of the vector x rather than the polar coordinates θ and ϕ; x represents the vector displacement between the scattered ray and the specular ray in the projected plane:
More details on each model may be found in the OpticStudio help file entitled “Scattering”
Built-in surface scattering models
Model |
BSDF |
Description |
Lambertian |
BSDF = 1/π |
The scattered ray projection vector has equal probability anywhere on the projected plane. This results in a scattered intensity variation of the form cos(θs). The scattered intensity is independent of the incident angle |
Gaussian |
BSDF(x) = A*exp[-|x|2/σ2] |
The scattering distribution is symmetric in direction cosine space, and σ determines the width of the Gaussian distribution on the projected plane. The maximum value allowed for s is 5 (for σ > 5, distribution is nearly Lambertian) |
ABg |
BSDF(x) = A/[B + |x|g] |
Widely used to model scattering due to random isotropic surface roughness. Input values for A, B, and g are provided in an ASCII file (in the <data>\ABg_Data\ directory). Input value limitations: A >= 0, B >= 1.0E-12 (unless g = 0, then B = 0 is allowed) |
DLL surface scattering models
Model |
BSDF |
Description |
Lambertian |
BSDF = 1/π |
Same as built-in Lambertian model; used for illustrating how to write a DLL. |
TwoGaussian |
Combination of Lambertian and Gaussian distributions |
The user specifies the fraction of energy in Lambertian and Gaussian scattering. Two Gaussian distributions are modeled, with independent inputs for the widths (s) and fractional energy. The user is responsible for checking those fractional energies sum to <= 1. |
Gaussian_XY |
Described in terms of a probability distribution, P, rather than a BSDF: P(p,q) = (4/(π*σ_{p}*σ_{q}))*exp[-((p/σ_{p})^{2} + (q/σ_{q})^{2})] |
Represents a Gaussian distribution along axes on the projected plane. p is in the plane of incidence (POI), and q is normal to the POI. The (p,q) axes do not correspond to the (x,y) axes of the system except for special cases. The variables σ_{p}, σ_{q} may be > 0 or < 1 (otherwise use a Lambertian). More details are provided in the article, “How to create a user-defined scattering function." |
K-correlation |
BSDF(x) = A*σ^{2}*cos(θ_{i})*cos(θ_{s})/[1 + (B*|x|/λ)^{2}]^{(s/2)} |
Characterizes scattering due to surface microroughness. Like the ABg model, with an additional small-angle roll-off useful for characterizing many surface finishes. The variable s represents the RMS surface roughness; other inputs are described in the article, “How to model surface scattering via the K-correlation distribution." |
RI_BSDF |
BSDF is given by ASCII input |
Used to model surfaces whose scattering properties have been experimentally measured rather than fit an analytic form. The input data format is described in the article, "BSDF data interchange file format specification." Application of the data in OpticStudio modeling is described in the article, “How to use tabular BSDF data to define the surface scattering distribution." |
If none of the distributions listed above is sufficient to model surface scattering in your system, you may construct your own DLL model, following the instructions provided in the article, “How to create a user-defined scattering function."
Bulk scattering models
Several models are available to model bulk scattering in OpticStudio. These include a built-in model as well as user-defined DLL models. The models are generally described in terms of a probability distribution function (P) for the angle of scattering. In all cases, the probability of a scattering event occurring is given by an exponential.
p(x) = 1.0 - exp[-μ*x]
where x is the distance that light has traveled in the volume, μ = 1/M, and M is the mean-free path for scattering in the volume. During a bulk scattering event, the wavelength may be also altered (in addition to the ray trajectory), allowing users to model fluorescence (see the article entitled "How to model fluorescence using bulk scattering" for a complete description). More details are provided in the OpticStudio help file under: “The Setup Tab>Editors Group (Setup Tab)>Non-sequential Component Editor."
Built-in bulk scattering models
Model |
Probability Distribution |
Description |
Angle |
P(θ) = 1/2 |
The probability of scattering at any angle is constant. The maximum angle for scattering can be set as user input (“Angle” parameter). |
DLL bulk scattering models
Model |
Probability Distribution |
Description |
Bulk_samp_1 |
P(θ) = 1/2 |
Same as built-in Angle model; used for illustrating how to write a DLL. |
Poly_bulk_scat |
P(θ) = ∑c_{i}θ^{i} |
Angular scattering distribution is represented by a polynomial. The range of summation represents a 12^{th} order polynomial where 0 ≤ i ≤ 12. |
Henyey-Greenstein_bulk |
P(θ) = (1/4π)*(1 - g^{2})/[1 + g^{2} – 2g*cos(θ)]^{3/2} |
Characterizes scattering by small particles. This is useful for describing scattering in biological tissue and interstellar dust clouds. Input values for grange from 10^{-4} (uniform angular distribution) to 1.0 (highly peaked about θ = 0). More details are provided in the article, “Using the Henyey-Greenstein distribution to model bulk scattering." |
Rayleigh |
P(θ,λ) = 0.375*(1 + cos^{2}θ)/λ^{4} |
Characterizes scattering by small particles (particle size << wavelength). Mean-free path scaled by wavelength (~ λ^{4}). More details are provided in the article, “Bulk scattering with the Rayleigh model." |
Mie |
A probability distribution is given by the sum over spherical Bessel functions^{1}. |
Characterizes scattering for arbitrary ratios of particle size to wavelength. Used to describe scattering in the atmosphere. More details are provided in the article, “How to simulate atmospheric scattering using a Mie model." |
If none of the distributions listed above is sufficient to model bulk scattering in your system, you may also construct your own DLL model, using the source code provided for the above DLLs as a starting point.
To try out Zemax capabilities please download a free trial here.
Author:Sanjay Gangadhara
R&D Director
Zemax am Ansys Company
References
- Craig F. Bohren and Donald R. Huffman, “Absorption and Scattering of Light by Small Particles”, John Wiley & Sons (1983).