Software … leistungsfähige Tools für Ihre Forschung & Entwicklung!

RP Coating – das Software-Werkzeug für das Design optischer Vielschichtstrukturen

Beispiel: Gires–Tournois-Interferometer (GTI)

Hier analysieren wir die Funktion eines Gires–Tournois-Interferometers, das z. B. für die Dispersionkompensation in einem modengekoppelten Laser eingesetzt werden könnte. Es besteht aus einem Bragg-Spiegel, einer dickeren Schicht und einer weiteren dünnen Schicht an der Oberfläche. Effektiv ist es ähnlich zu einem Fabry–Pérot-Interferometer, welches aber einen hoch reflektierenden hinteren Spiegel hat und in Reflexion betrieben wird. Die gesamte Reflektivität ist dann hoch in einem gewissen Wellenlängenbereich, kaum beeinflusst von den Resonanzen. Durch die Interferenzeffekte erhält man aber eine periodische Variation der Reflexionsphase und daher chromatische Dispersion.

Wir beschreiben zunächst die Struktur:

d_units: nm
l_units: nm

l_Bragg := 1000  { Bragg wavelength }
N_Bragg := 10  { no layer pairs }
d_t := 3.25 * l_Bragg / n_SiO2(l_Bragg * l_units)  { thickness of thick SiO2 layer }

beam from superstrate
substrate: BK7
for j := 1 to N_Bragg do
begin
* TiO2, l / 4 at l_Bragg
* SiO2, l / 4 at l_Bragg
end
* SiO2, d = d_t
* TiO2, l / 4 at l_Bragg
superstrate: air

Das erste Diagramm zeigt das spektrale Profil der Reflektivität:

diagram 1:

"Reflectivity Profile"

x: 800, 1200
"wavelength (nm)", @x
y: 0, 100
"transmissivity (%)", @y
frame
hx
hy

f: 100 * R(x), color = red, width = 3, step = 1
reflectivity profile of a GTI

Das zweite Diagramm zeigt die Gruppenverzögerung als Funktion der Wellenlänge. Sie ist auf den Resonanzen am höchsten:

diagram 2:

"Group Delay in Reflection"

x: 800, 1200
"wavelength (nm)", @x
y: -150, +150
"T_g (fs)", @y
frame
hx
hy
clip

f: T_g_r(x) / fs, color = green, width = 3

f: CS_y1 + R(x) * (CS_y2 - CS_y1), style = dotted

f: 0
group delay at a GTI

Das dritte Diagramm zeigt die Gruppenverzögerungsdispersion (group delay dispersion, GDD) als Funktion der Wellenlänge.

diagram 3:

"Group Delay Dispersion"

x: 800, 1200
"wavelength (nm)", @x
y: -2000, +2000
"GDD (fs^2)", @y
frame
hx
hy
clip

f: GDD_t(x) / fs^2,
  color = blue, width = 3, step = 1, maxconnect = 1

f: CS_y1 + R(x) * (CS_y2 - CS_y1), style = dotted

f: 0
group delay dispersion of a GTI

Als Nächstes betrachten wir die Intensitätsmuster bei verschiedenen Wellenlängen:

diagram 4:

x: 800, 1200
"wavelength (nm)", @x
y: -500, d_tot + 1500
"depth in the mirror structure (nm)", @y
frame

! begin  { show the color scale }
    var x1, x2;
    x1 := CS_x2 + 0.02 * (CS_x2 - CS_x1);
    x2 := CS_x2 + 0.04 * (CS_x2 - CS_x1);
    for y := CS_y1 to CS_y2 step (CS_y2 - CS_y1) / 500 do
    begin
      setcolor(colorscale((y - CS_y1) / (CS_y2 - CS_y1)));
      line(x1 + i * y,x2 + i * y);
    end;
    setcolor(black);
  end

! (set_dir(1); R(lambda_t))

cp: colorscale((R(x); E2(y) / 4))  { color plot }

; Show the layer boundaries:
f: get_z(j), style = solid, color = lightgray, for j := 1 to nolayers()
f: 0
f: get_z(nolayers() + 1)

"substrate", 200c, (-200)c
"superstrate", 150, (d_tot + 200)c
field intensity distribution at a GTI

Man erkennt, wie die Reflexionsphase sich bei den Resonanzen schnell ändert, während sie sonst ziemlich konstant bleibt.

Schließlich simulieren wir, was mit ultrakurzen Pulsen bei der Reflexion am GTI geschieht. Obwohl RP Coating nicht explizit Funktionen hierfür hat, können wir dies mit ein paar Zeilen Skriptcode tun. Wir definieren Felder für die zeit- und frequenzabhängigen komplexen Amplitude, ebenfalls eines für die komplexen elektrischen Feldstärken in der Struktur für alle optischen Frequenzen (für spätere Benutzung). Dann machen wir die eigentliche Berechnung und zeigen den reflektierten Puls an:

diagram 5:

"Reflection of Ultrashort Pulse"

x: -200, +200
"time (fs)", @x
y: -1, 1
"electric field strength (a. u.)", @y
frame
hx
hy

; Parameters of the test pulse:
A0 := 0.9 { peak amplitude }
tau0 := 10 fs { FWHM duration }
l0 := 1000 nm { center wavelength }
f0 := c / l0 { center frequency }
A0%(t) := A0 / cosh(1.7627 * t / tau0) { complex amplitude in time domain }
E0(t) := Re(A0%(t) * expi(-2pi * f0 * t)) { electric field }

["l0 = ", l0:d3:"(n)m",
  ", tau0 = ", tau0:d3:"s",
  ", T_g = ", T_g_r(l0 / l_units):d3:"s",
  ", GDD = ", GDD_r(l0 / l_units) / fs^2:f0:"fs^2"]

; Numerical parameters:
T := 3000 fs
N := 2^10
dt := T / N
t1 := -T / 2 + dt
t2 := T / 2
df := 1 / T
f2 := (N / 2) * df
f1 := -f2 + df
f_max := 1 / dt - df
defarray A%[0, T - dt, dt] (periodic) { amplitudes in time domain }
defarray A0_f%[0, f_max, df] (periodic) { amplitudes in frequency domain }
defarray A_f%[0, f_max, df] (periodic) { amplitudes in frequency domain }

z_max := d_tot * d_units + 3 um
dz := 30 nm
dz := z_max / round(z_max / dz)
defarray E%[0, z_max, dz; f1, f2, df]

calc
  begin
    for t := t1 to t2 step dt do A%[t] := A0%(t);
    FFT_n(A%[], A0_f%[], +1);
    for f := f1 to f2 step df do
    begin
      A_f%[f] := r%(c / (f0 + f) / l_units) * A0_f%[f];
      for z := 0 to z_max step dz
      do E%[z,f] := E_plus%(z / d_units) + E_minus%(z / d_units);
    end;
    FFT_n(A_f%[], A%[], -1);
  end

A%(t) := A%~[t] { final amplitude }
E(t) := Re(A%(t) * expi(-2pi * f0 * t))

I(z,t) := 
  { intensity at position z and time t }
  begin
    var E%;
    E% := sum(f := f1 to f2 step df,
            A0_f%[f] * E%[z,f] * expi(-2pi * (f0 + f) * t));
    abs2(E%) / N;
  end

f: E0(x * fs), color = lightgray, step = 1
f: E(x * fs), color = blue, step = 1

f: abs(A0%(x * fs)), color = lightgray, step = 1 { envelope of initial pulse }
f: -abs(A0%(x * fs)), color = lightgray, step = 1

f: abs(A%(x * fs)), color = blue, step = 1 { envelope of final pulse }
f: -abs(A%(x * fs)), color = blue, step = 1

Da der gewählte Puls (blaue Kurve) ziemlich kurz ist, erhalten wir eine Folge von Pulsen in Reflexion:

ultrashort pulse reflected on a GTI

Das letzte Diagramm zeigt die zeitaufgelöste Feldintensitätsverteilung:

diagram 6:

"Ultrashort Pulse in the GTI Structure"

x: -50, +100
"t (fs)", @x
y: 0, z_max / um
"z (µm)", @y
frame
hx
hy

! I_max := maxf(I(z,0), z in [0, z_max], xtol = 0.1 nm, divide = round(10 * z_max / l0))
cp: colorscale(I(y * um,x * fs) / I_max)

"air", 100, (d_tot * nm / um + 0.3)c
f: d_tot * nm / um { indicate the surface of the GTI }
"GTI", 100, (d_tot * nm / um - 0.3)c
ultrashort pulse in a GTI

Man kann erkennen, wie der einfallende Puls (oben links) zunächst einen an der Oberfläche reflektierten Puls erzeugt, dann einen intensiveren Puls durch Reflexion am Bragg-Spiegel, und schließlich schwächere Pulse, die mehrere Umläufe in der Struktur machen. Für den gegebenen sehr kurzen Puls bleiben die reflektierten Pulse zeitlich klar getrennt. Normalerweise würde ein GTI aber mit viel längeren Pulsen betrieben werden, so dass die reflektierten Pulse zeitlich stark überlappen. In dieser Situation wäre die Bandbreite des Pulses kleiner als die Bandbreite der Resonanzen des GTIs.