Navigation: Tutorials and Examples > Partial Coherence - Diffractometer

 

Partial Coherence - Diffractometer

 

Contact Us: fredsupport@photonengr.com

 

 

 

Description


A partially coherent source implemented in FRED consists of a collection of coherent point sources each with a different spatial position and wavelength.  When calculating irradiance, FRED individually determines the irradiance of each source coherently then sums the collection incoherently.

 

Accompanying file:

<install dir>\Resources\Samples\Tutorials & Examples\examplePartialCoherenceDiffractometer.frd

 

 

Implementation


This implementation is based upon the original diffractometer experiment published by Thompson1 and discussed by Born & Wolf2.

The experimental layout can be seen in the Figure below. An extended, incoherent source s0 is imaged by lens L0 onto pinhole s1. The light emerging from s1 is collimated by lens L1 and brought again to focus by Lens L2 at plane F.  An opaque screen A containing two apertures P1 and P2 is placed between L1 and L2. The apertures P1 and P2 can be any size, shape and position.

 

 

The portion of this layout consisting of light source s0, lens L0 and pinhole s1 can be replaced by a collection of randomly positioned point sources of differing wavelengths located within a circular area equal to that of the pinhole area s1. This collection of sources meets the definition of a quasi-monochromatic source given by Born & Wolf2. In the plane F, each wavelength component of the source independently produces an interference pattern as a result of coherent summation. By design, FRED sums like wavelengths coherently and different wavelengths incoherently. Thus, the total irradiance pattern at F  becomes an incoherent summation of the various coherent components.

 

The only practical method of creating a partially coherent source is with the script language since entering the required number of sources would be impractical in the GUI. The code shown below is borrowed from our implementation of the diffractometer. Find the complete FRED file examplePartialCoherenceDiffractometer.frd in <intsall dir>\Resources\Samples\Tutorials & Examples\. Note that the parameters for the model are listed and set in the Global Variables dialog. Those parameters are: spacing between pinholes (g_xspc), offset of the pinhole pair (g_ofst), the radii of the pinholes (g_hrad), the number of rays across each grid (g_nr), the number of sources (g_nSources), the center wavelength (g_wcent) and the wavelength line width (g_wdelta).

 

After dimensioning the required structures, the first step is to delete any existing sources:

 

Dim op As T_OPERATION
Dim ent As T_ENTITY
Dim tw As T_WAVELENGTHSPEC
Dim prop As T_SOURCEPROPSPEC
Dim pol As T_SOURCEPOLARIZATION
Dim tr As T_RAY

Dim g_xspc#, g_ofst#, g_hrad#, g_nr&, g_nSources&, g_wcent#, g_wdelta#  'Global Variables dialog

 

'delete all sources (backwards)
For i = GetEntityCount() - 1 To 0 Step -1
 If IsSource(i) Then DeleteEntity(i)
Next i
Update
 

The next step is to set the focal length for L1 and radius of pinhole s1:

 

'lens focal lengths
fl=1505.41795665
'radius of source pinhole "sigma 1"
rho=0.045
 

In this case, ray grids will be created at the position of pinholes P1 and P2. This is preferable to creating a single grid in which case most of the rays will be blocked by the aperture A . Here we compute and print the ray spacing. Controlling spacing is important when setting up coherent grids (see Coherent Source Introduction).


Print "ray spacing in mm = " & 2*g_hrad/nr
 

Since the grids are created at the aperture A , rays must be propagated back to the plane of s1 before tracing. The structure T_SOURCEPROPSPEC makes this possible (see the Post-Creation Ray Propagation Specification option on the Source Tab of the Detailed Source).

 

'set source propagation structure
prop.x=0
prop.y=0
prop.z=-fl
prop.r=0
prop.kind="byz"
 

We also set the Beam overlap factor and power scaling grid density to assure a smooth beam and accurate evaluation of source power, respectively:


'set beamlet overlap and power scaling grid density
ovrlp=1.6
xysamp=125
 

The T_SOURCEPOLARIZATION structure can be used to set source polarization characteristics. Here, the sources are unpolarized as would be the case with an incoherent source.

 

'set source polarization
pol.isPolarized=False
pol.randomizeEllipticity=True
pol.randomizeAngle=True
pol.randomizeHandedness=True
 

Knowing the initial position of the grids are at the global origin and that these grids should be placed to the left of L1, we set up the T_OPERATION structure (except for the x-value) with a general Shift command. The x-value will be set below depending upon whether the grid is on P1 or P2 which are separated in x.


'set source shift structure
op.parent=1
op.type="Shift"
op.val2=0
op.val3=-8.26
 

As sources are created, they must be place in the Optical Sources folder. T_ENTITY is required when creating or editing the name of any FRED entity:


'initalize T_ENTITY and set parent to Optical Sources
InitEntity ent
ent.parent=1
 

We now loop over the number of sources. Wavelengths are chosen with equal spacing and the T_WAVELENGTHSPEC structure is populated accordingly. Rays are colored for drawing (RGB) according to wavelength. Next a random x-y position for the point source is chosen inside the circle defined by s1. Finally, sources are added for both the upper (P1) and lower (P2) pinhole positions.

 

For m=1 To g_nSources

'compute wavelengths (evenly spaced)
wave=wlower+(m-1)*(wupper-wlower)/(g_nSources-1)
WavelengthToRGB wave, wr, wg, wb
tw.wavelen=wave: tw.weight=1: tw.colorR=wr: tw.colorG=wg: tw.colorB=wb

'choose random xy point inside source pinhole "sigma 1"
x=rho:y=rho
rad=Sqr(x^2+y^2)
While rad>rho
x=rho*(2*Rnd()-1):y=rho*(2*Rnd()-1)
rad=Sqr(x^2+y^2)
Wend

'add Coherent Point Source in upper mask aperture
ent.name="Top Source " & m & " " & Format(wave,"0.0000#")
idst=AddSource(ent)
SetSourcePosGrid idst, g_hrad, g_hrad, g_nr, g_nr, True
SetSourceDirFocus idst, x-g_xspc/2+g_ofst, y, -fl, False
SetSourceCoherence idst, True
SetSourceBeamOverlap idst, ovrlp
SetSourcePower idst, 0.5/g_nSources
SetSourcePolarization idst, pol
SetSourceIthWavelengthSpec idst, 0, tw
SetSourcePropagationSpec idst, prop
SetSourceCoherentPowerSampling idst, xysamp, xysamp
op.val1=g_xspc/2+g_ofst
AddOperation idst, op

'add Coherent Point Source in lower mask aperture
ent.name="Bottom Source " & m & " " & Format(wave,"0.0000#")
idsb=AddSource(ent)
SetSourcePosGrid idsb, g_hrad, g_hrad, g_nr, g_nr, True
SetSourceDirFocus idsb, x+g_xspc/2+g_ofst, y, -fl, False
SetSourceCoherence idsb, True
SetSourceBeamOverlap idsb, ovrlp
SetSourcePower idsb, 0.5/g_nSources
SetSourcePolarization idsb, pol
SetSourceIthWavelengthSpec idsb, 0, tw
SetSourcePropagationSpec idsb, prop
SetSourceCoherentPowerSampling idsb, xysamp, xysamp
op.val1=-g_xspc/2+g_ofst
AddOperation idsb, op

Next m
 

 

References


B.J. Thompson & E. Wolf, J. Opt. Soc. Amer., 47 (1957), p.895

Born & Wolfe, Principles of Optics (6th Ed), Pergamon Press, Ch. 10, Sec. 4.3, p.513

 

 

 

 

 

 

 

Copyright © Photon Engineering, LLC