RP Coating – Advanced Software for
Designing Optical Multilayer Structures
Overview | Purpose | Model | Interface | Demos | Versions |
Demo File: Polarizing Cube of MacNeille Design
Here, we design a thin-film polarizer in the form of a polarizing cube, where the multilayer thin-film coating is embedded between two 45° prisms.
The basic idea of the common MacNeille cube design is to eliminate the reflection for p polarization by having Brewster's angle at all internal interfaces. It is then easy to obtain high reflectivity for s polarization with a simple Bragg mirror design without introducing a significant reflection for p polarization. The Brewster angle condition requires that a substrate material with suitable refractive index (for given coating materials) is chosen. For the outer interfaces, one requires anti-reflection coatings, which are not considered here.
We seek for a design working well between 900 nm and 1200 nm. First we need to choose the materials. If we decide for TiO2 and SiO2 layers in the coating, we need a substrate material with a suitable refractive index in order to meet the above-mentioned Brewster condition. We use an equation for calculating the optimum substrate index, and have found that Schott SF11 glass comes relatively close:
d_units: nm l_units: nm l := 1064 { operation wavelength } n_L := n_SiO2(l * l_units) n_H := n_TiO2(l * l_units) n_S_opt := n_H * n_L / sqrt(n_H^2 + n_L^2) / sin(theta) { optimum substate index for a MaxNeille polarizer } show "n_S_opt: ", n_S_opt:f3 n_S(l) := n_SF11(l) { chosen substrate material } n_S := n_S(l * l_units) show "n_S: ", n_S:f3
We then implement the basic design:
theta_L := arcsin(n_S * sin(theta) / n_L) d_L := (l / n_L / 4) / cos(theta_L) theta_H := arcsin(n_S * sin(theta) / n_H) d_H := (l / n_H / 4) / cos(theta_H) N_Bragg := 4 { number of layer pairs } beam from superstrate substrate: S for j := 1 to N_Bragg do begin * SiO2, d = d_L, d_max = 2 * d_L * TiO2, d = d_H, d_max = 2 * d_H end * SiO2, d = d_L, d_max = 2 * d_L superstrate: S
Then we define a figure-of-merit function describing the design goal:
FOM() := sum(l := 900 to 1200 step 5, sum(dtheta := -2 deg to +2 deg step 0.5 deg, R_p(l,theta + dtheta)^2 + 10 * T_s(l,theta + dtheta)^2))
Here, we consider some range of angles, and use a 10 times larger weight for the transmission for s polarization. (Such parameters can depend on the concrete requirements.)
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" ["Merit value: ", FOM():d3] x: 400, 2000 "wavelength (nm)", @x, size = %5 y: 0, 100 "reflectivity (%)", @y, size = %5 frame hx hy legpos 420, 150 f: 100 * R_s(x, theta), "s polarization", color = red, width = 3, step = 1 f: 100 * R_p(x, theta), "p polarization", style = dashed, color = red, width = 3, step = 1 ! begin 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: 40, 50 "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
We see that a good performance is obtained only in a relatively narrow range of angles, which is typical for such designs.
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.1 * CS_y2)c, direction = 90, for j := 1 to nolayers() "substrate", (-200)l, (0.1 * CS_y2)c, direction = 90 "superstrate", (get_d(0) + 200)l, (0.1 * CS_y2)c, direction = 90 f: n(x,l), step = 1, color = blue