An example illustrating the implementation of the Henyey-Greenstein model in ZEMAX may be found in a .ZIP file located at the end of this article (HG-power.zmx). The design consists of a source launching rays at normal incidence to a rectangular volume in which the Henyey-Greenstein scattering distribution has been applied. This distribution is applied to the volume by specifying a user defined DLL (HENYEY-GREENSTEIN-BULK.DLL). The DLL and corresponding source code are located in the directory \ZEMAX\Objects\DLL\BulkScatter\. Inputs to the DLL are the transmission (which describes how much of the input power is attenuated during scattering) and the parameter g. Three small detectors have been placed a uniform distance away from the volume, at angles of 0, 30, and 60 degrees with respect to the incident ray angle:

Layout diagram showing the location of the source ray, scattering volume, and detectors

The system has been setup to explicitly provide only one instance of scattering per incident ray:

Setting up the source to scatter once per incident ray

Scattering can be observed in the NSC 3D Layout Diagram by increasing the number of Layout rays to a large number (e.g. 2000). To isolate those rays which scatter from the volume and hit the detectors, a filter string may be applied to the NSC 3D Layout Diagram, which includes use of the Bn and Hn filters (where Bn is used to determine which rays bulk scatter inside object n, and Hn is used to determine which rays hit object n):

Using filter strings to isolate scattered rays in layout diagram

The resulting NSC 3D Layout Diagram looks like:

Layout diagram showing rays scattered according to the Henyey-Greenstein distribution

The distribution of power landing on each detector is then measured for a case in which 5,000,000 analysis rays are launched with a total power of 1 W (and a transmission factor of unity). The results for g = 0.001 and g = 0.5 and shown in the table below:

 g

 Angle (degrees)

 Power (mW)

 Power/Power(0)

 p(q)/p(0)

 

 

 

 

 

 0.001

 0

 3.185

 1.000

 1.000

 

 30

 3.191

 1.002

 1.000

 

 60

 3.157

 0.991

 0.998

 

 

 

 

 

 0.5

 0

 18.512

 1.000

 1.000

 

 30

 9.861

 0.533

 0.525

 

 60

 3.648

 0.197

 0.192

In both cases the mean-free path was set to be small relative to the thickness of the volume (l = 0.0001 mm, t = 0.1 mm) and the maximum scattering angle was set to 180 degrees. The measured values reproduce those results derived from the theoretical model within statistical error, as we would expect for a case in which each ray is only allowed to scatter once (the results will vary from ray trace to ray trace due to statistics, so you will get different – but very similar – numbers). The measured values were read from the text output of the individual detector viewers, e.g.:

Reading the detector power in the Text listing for the Detector Viewer

Note: If g = 0 is specified as an input, the actual value of g used in the calculations is 10-4. This is due to a singularity in the calculations which arises when g = 0. As seen in the table above, results obtained for small values of g are nearly identical to those expected for g = 0, indicating that this approximation is sufficiently accurate.