Bulk scattering with the Rayleigh model

This article illustrates use of the Rayleigh distribution to model bulk scattering.

Authored By Sanjay Gangadhara


Article Attachments


The Rayleigh model describes scattering of light by particles whose size is much smaller than the wavelength of the light. This scatter model is applicable to many situations, the most common of which is scattering of sun light in the Earth’s atmosphere.

In this article, we will show how to model bulk scattering using the Rayleigh model in Non-Sequential mode. 

The Rayleigh model

In the Rayleigh model, the distribution of scattered light for an input beam which is unpolarized is given by:

where λ is the wavelength and θ is the angle of the scattered ray with respect to the specular ray; θ= 0º refers to scattering along the specular ray in the forward direction, and θ = 180º refers to scattering along the specular ray in the backward direction.

The coefficient of 0.375 is needed to ensure the following equation:

Modeling Rayleigh scattering in OpticStudio

The Rayleigh scattering distribution may be applied to any Non-Sequential volume object using a user defined DLL (RAYLEIGH.DLL) that has been provided with the OpticStudio installation ({Zemax}\DLL\BulkScatter\RAYLEIGH.DLL). Tests have been conducted to investigate both the distribution of power and the angular distribution of the scattering model in OpticStudio, and they confirm that the Rayleigh model has been properly implemented. These tests are identical to those described in the Knowledgebase article “Using the Henyey-Greenstein distribution to model bulk scattering”.

A test has also been conducted to validate the wavelength dependence of the scattering model. The test file (Rayleigh_WaveTest.ZMX) is attached to this article.

The test design consists of a source launching rays at normal incidence to a rectangular volume in which the Rayleigh scattering model has been applied. Inputs to the DLL are the reference wavelength and the transmission:

Properties Wavelength

The reference wavelength (l0) is specified in microns; it is the wavelength associated with the input value of scattering mean free path (M), as provided in the “Mean Path” input of the dialog box. Thus, in the example shown above the scattering mean free path is 1.0 mm (M is always specified in lens units) at a wavelength of 0.55 mm. The mean free path varies with wavelength as:

The transmission parameter describes how much of the input power is attenuated during scattering.

Rays that pass through the rectangular volume are then recorded on a Detector Rectangle object. For arbitrary values of the mean free path (M) and the length of the volume (L), some rays may pass through the volume without undergoing bulk scattering. The fraction of “unscattered” rays can be determined from the fact that rays which travel a distance x within the volume have an integrated probability of having been scattered given by:

As described in the OpticStudio Help System: The Setup Tab...Editors Group (Setup Tab)...Non-sequential Component Editor...Non-sequential Overview...Scattering (non-sequential overview)...Bulk Scattering. Thus, the integrated probability of a ray traveling a distance x within the volume and not undergoing scattering is given by 1 - p(x) = e-x/M. Setting x = L, we find that the probability of a ray traveling through the full volume and not being scattered is e-L/M.

In our example, L = 1.0 mm and M = 1.0 mm at a reference wavelength of 0.55 mm, which is also the wavelength of the source rays. For this case, the fraction of unscattered rays is simply:

Validating the wavelength dependence of the Rayleigh model

A ray trace may be performed, in which the results are saved to a ray database file:


This file is used to filter the ray data that is obtained from the Detector Viewer. Specifically, we are only interested in those rays which do not undergo bulk scattering. The filter string “!B2” can be used to isolate all the rays which are not scattered:


The total number of rays which do not undergo scattering and hit the detector is about 36800 (the actual number will vary for any given ray trace).

When the filter is applied, all of the associated rays only strike the center pixel of the detector, which is why emission is not seen elsewhere. According to the equations given in the previous section, when the length of the volume equals the input mean free path and the source wavelength is the same as the reference wavelength – as they are in this case – the fraction of unscattered rays is 0.368. In this test 100,000 rays were launched towards the volume, so we would expect 0.368*100,000 = 36800 rays to pass through the volume without undergoing scattering. This is indeed the case!

Since the mean-free path for scattering varies with wavelength, the fraction of unscattered rays will also vary with wavelength. For example, if the input mean free path is 1.0 mm at a reference wavelength of 0.55 mm, then at a wavelength of 0.65 mm the actual mean free path is 1.95 mm. If the length of the volume is still 1.0 mm, then the fraction of unscattered rays is e-1.0/1.95 = 0.599. For 100,000 source rays, the number of rays which pass through the volume without scattering should be 59900.

If we change the system wavelength (= source ray wavelength) to 0.65 mm, and re-run the ray trace (making sure to save the results to a .ZRD file, so that a filter string may be applied in the Detector Viewer), we find that the number of rays which pass through the volume unscattered is about 60000:


The actual number will vary from ray trace to ray trace, but in all cases the agreement with the expected value is excellent (within < 1%). This has been confirmed for multiple values of λ and L, indicating that the wavelength variation of the Rayleigh model is correctly implemented in the DLL.


Was this article helpful?
2 out of 2 found this helpful



Please sign in to leave a comment.