Software … powerful tools for your research & development!

RP Coating – Advanced Software for
Designing Optical Multilayer Structures

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.

polarizing cube

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
reflectivity profile of a thin-film polarizing cube

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
angular sensitivity of a thin-film polarizing cube

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
design of a thin-film polarizing cube