RP Coating – Advanced Software for
Designing Optical Multilayer Structures
Overview | Purpose | Model | Interface | Demos | Versions |
Demo File: Thin-film Plate Polarizer
With this demo file, we can design thin-film plate polarizers, having a dielectric coating on one side only. The angle of incidence is chosen to be Brewster's angle, such that the reflection for p polarization at the uncoated back side vanishes. We thus need a coating which has a high reflectivity for s polarization at the design wavelength of 1064 nm, and a low reflectivity for p polarization.
In the form, one can select the materials, enter a few design parameters and select some graphical diagrams:
The form and the calculations are not hard-coded, but implemented in the form of a script. In the following, we reveal some details of the implementation.
The basic idea for the coating structure is to use something similar to that of a Bragg mirror, where the design wavelength is within the reflection band for s polarization but just outside that band for p polarization. A real Bragg mirror, however, is not very suitable due to the substantial reflection peaks outside the main reflection band. It is much better to use a long-wave pass filter, which is a slightly modified version of a Bragg mirror: the two outer high-index layers have a thickness of only λ / 8 instead of λ / 4:
l := 1064 { operation wavelength } theta := arctan(n_BK7(l * l_units)) N_Bragg := 10 { no layer pairs } l_B := 1020 { Bragg wavelength for normal incidence } beam from superstrate substrate: BK7 * TiO2, l / 8 at l_B for j := 1 to N_Bragg - 1 do begin * SiO2, l / 4 at l_B * TiO2, l / 4 at l_B end * SiO2, l / 4 at l_B * TiO2, l / 8 at l_B superstrate: air
Then we define a figure-of-merit function describing the design goal:
FOM() := sum(l := 1060 to 1070 step 2, R_p(l,theta)^2 + T_s(l,theta)^2)
As always, that function is made such that it would return 0 for ideal performance, but gives positive “penalties” for any deviations.
We can then use a simple local optimization to further improve the performance:
optimize coating for minimum of FOM()
The first diagram made shows the reflectivity profile:
diagram 1: "Reflectivity Profile" x: 700, 1200 "wavelength (nm)", @x y: 0, 100 "reflectivity (%)", @y frame hx hy legpos 420, 150 f: 100 * R_p(x, theta), "p polarization", color = red, width = 3, step = 1 f: 100 * R_s(x, theta), "s polarization", style = dashed, color = red, width = 3, step = 1 ! begin { indicate the design wavelength } setcolor(gray); line(l, l + i * CS_y2) end
We then test the sensitivity to angle changes:
diagram 2: "Variation of the Angle of Incidence" x: 50, 60 "angle of incidence (°)", @x y: 0, 100 "reflectivity (%)", @y frame hx hy f: 100 * R_s(l, x * deg), "s polarization", color = red, width = 3 f: 100 * R_p(l, x * deg), "p polarization", color = red, width = 3, style = dashed ! begin setcolor(gray); line(theta / deg,theta / deg + i * CS_y2); end
We see that the reflectivity for p polarization would rise for substantially smaller angles, where the reflectivity on the back side of the substrate would also rise.
Finally, we show the design of the obtained structure:
diagram 3: x: -500, get_d(0) + 500 "position (nm)", @x y: 0, 3 "refractive index (nm)", @y frame ! begin for j := 1 to nolayers() do begin var g; g := if get_material$(j) = "TiO2" then 0.8 else 0.9; setcolor(rgb(g, g, g)); box(get_z(j), get_z(j + 1) + i * CS_y2); end; draw_cs(); { draw the coordinate system again } end [get_d(j):f0:"nm"], (get_z(j) + 0.5 * get_d(j))l, (0.03 * CS_y2)c, direction = 90, for j := 1 to nolayers() "substrate", (-200)l, (0.03 * CS_y2)c, direction = 90 "superstrate", (get_d(0) + 200)l, (0.03 * CS_y2)c, direction = 90 f: n(x,l), step = 1, color = blue