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 a design working well between 900 nm and 1200 nm. First we need to choose the materials. If we choose TiO2 and SiO2 layers in the coating, we need a substrate material with a suitable refractive index 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  { operating 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 substrate index for a MacNeille 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 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", @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

Questions and Comments from Users

Here you can submit questions and comments. As far as they get accepted by the author, they will appear above this paragraph together with the author’s answer. The author will decide on acceptance based on certain criteria. Essentially, the issue must be of sufficiently broad interest.

Please do not enter personal data here. (See also our privacy declaration.) If you wish to receive personal feedback or consultancy from the author, please contact him, e.g. via e-mail.

Spam check:

By submitting the information, you give your consent to the potential publication of your inputs on our website according to our rules. (If you later retract your consent, we will delete those inputs.) As your inputs are first reviewed by the author, they may be published with some delay.