# RP Coating – Advanced Software for

Designing Optical Multilayer Structures

Start | Purpose | Model | Interface | Demos |

## Demo File: Dual-wavelength Anti-reflection Coating

Here, we design an anti-reflection coating for two different wavelengths: 1064 nm and 532 nm. As we have no idea for an initial design, we only specify minimum and maximum values for the layer thickness:

d_units: nm l_units: nm beam from superstrate substrate: BK7 for j := 1 to 3 do begin * TiO2, d_min = 10, d_max = l / 2 at 1000 * SiO2, d_min = 10, d_max = l / 2 at 1000 end superstrate: air

Then we define a figure-of-merit function describing the design goal:

FOM() := 1e6 * sum(d := -6 to +6 step 2, R(532 + d)^2 + R(1064 + d)^2)

That function would return 0 if the structure has zero reflectivity for some range of wavelengths around 1064 nm and 532 nm. Any unwanted reflectivities lead to positive “penalties”.

We can then automatically optimize the coating, using the Monte-Carlo technique:

optimize coating for minimum of FOM(), ytol = 1e-4, mctrials = 10000, nobest = 50

Here, 10 000 randomly chosen designs are tested, and the 50 best results are further optimized. The very best end result is finally chosen. The larger number of trials is necessary, because in most cases the local optimization leads to a not satisfactory local optimum. On an ordinary PC, this whole procedure takes only about half a minute.

Next, we make a diagram showing the reflectivity profile. The obtained layer thickness values of our thin-film design are also displayed:

diagram 1: "Reflectivity Profile" ["Merit value: ", FOM():d3] x: 400, 1200 "wavelength (nm)", @x y: 0, 100 "reflectivity (%)", @y frame legpos 600, 200 hx hy f: 100 * R(x), color = red, width = 3 ; display the layers: ["Layer ", j, ": ", get_d(j):f1:"nm":8r], 650, (CS_y2 - 0.06 * (CS_y2 - CS_y1) * j), font = Courier, for j := 1 to nolayers()

When executing the script, we get the following:

A second diagram is made for checking the fabrication tolerances of the obtained design. We modify the layer thickness values by adding random deviations with a certain standard deviation and plot the reflectivity spectra for all these versions:

diagram 2: "Test for Fabrication Tolerance" stddev := 1e-2 ["Standard deviation of layer thickness values: ", 100 * stddev:d3:np:"%"] ; coordinate system: x: 400, 1200 "wavelength (nm)", @x y: 0, 10 "reflectivity (%)", @y frame hx hy ; Save layer data defarray d[1, nolayers()] calc for j := 1 to nolayers() do d[j] := get_d(j) N := 100 { number of trials } ! FOM_sum := 0 ; Plot reflectivity for randomly modified designs: f: 100 * R(x), color = red, init begin for j := 1 to nolayers() do set_d(j, d[j] * (1 + rnd(-stddev))); { randomly modified layers } inc(FOM_sum, FOM()); end, for t := 1 to N ! FOM_av := FOM_sum / N ["Average FOM: ", FOM_av:d3] ! for j := 1 to nolayers() do set_d(j, d[j]) { restore the original design }

There are other designs which have a similar performance when fabricated exactly, but are much more sensitive to fabrication errors. Therefore, it is essential to do such tests before spending money and time on fabricating a coating.

It would not be difficult, of course, to test for the influences of systematic errors as well.