RP Fiber Power: Simulations- und Design-Software für Faseroptik, Faserverstärker und Faserlaser
Überblick | Benutzung | Physik | Geschwindigkeit |
Demos | Power Forms | Faser-Daten | Versionen |
Beispiel: Simulation eines Faserkopplers
Hier zeigen wir, wie man mit RP Fiber Power Faserkoppler analysieren und optimieren kann. Wir benutzen die numerische Strahlpropagation, um einen Koppler mit zwei Inputs und zwei Outputs zu untersuchen. Hier kommen zwei Wellenleiter im Koppler nahe genug zusammen, dass ihre evaneszenten Wellen in Kontakt miteinander kommen.
Beschreibung des Modells
Wir müssen zunächst einmal das Brechungsindexprofil des Kopplers festlegen. Wir beginnen mit einer Funktion für die <$y$>-Position eines Wellenleiters als Funktion der <$z$>-Koordinate:
y_c := 10 um { vertical position of core in the coupling region }
y_i := 50 um { vertical position of core in the input / output regions }
L_c := 2 mm { length of the coupling region }
L_i := 10 mm { length of the input and output region }
L_tot := 2 * L_i + L_c { total length }
y_co(z):= { vertical core position vs. z }
if z <= L_i then
y_c + (y_i - y_c) * 0.5 * (1 + cos(pi * z / L_i))
else if z <= L_i + L_c then
y_c
else y_c + (y_i - y_c) * 0.5 * (1 + cos(pi * (L_tot - z) / L_i))
Dann definieren wir das transversale Brechungsindexprofil eines Wellenleiters mit einer Super-Gauß-Funktion:
n_cl := 1.45 { cladding index }
n_co := n_cl + 0.8e-3 { core index }
dn_co(r) := if abs(r) <= r_co then (n_co - n_cl) * exp(-(1.3 * r / r_co)^6)
Hiermit definieren wir das Indexprofil eines einzelnen geraden Wellenleiters:
n_f(r) := n_cl + dn_co(r)
Die gesamte Struktur wird nun durch ein dreidimensionales Brechungsindexprofil definiert und in Abbildung 1 gezeigt:
n_device(x, y, z) :=
n_cl
+ dn_co(sqrt(x^2 + (y - y_co(z))^2)) { upper waveguide }
+ dn_co(sqrt(x^2 + (y + y_co(z))^2)) { lower waveguide }
Natürlich könnte man auch kompliziertere Strukturen definieren, z. B. mit einer Verjüngung der Wellenleiter in der Kopplungsregion oder mit einer Verdrillung.
Wir können nun den mode solver verwenden, um die Moden der einzelnen Wellenleiter zu erhalten, und benutzen diese für den Input des oberen Wellenleiters. Wir nehmen also an, dass das Licht perfekt in die LP01-Mode dieses Wellenleiters eingekoppelt wird:
calc set_n_profile("n_f", r_co)
calc
begin
bp_set_device(1);
bp_set_grid(x_max, N_x, y_max, N_y, z_max, N_z, N_s);
bp_set_channel(lambda);
bp_set_n_z('n_device(x, y,z)', 'trunc(y_co(z) / (0.2 um))');
bp_set_A0('A_lm_xy(0, 1, lambda, x, y - y_i)');
end
Das Indexprofil für die numerische Propagation wird gesetzt mit der Funktion bp_set_n_z()
. Für jeden <$z$>-Wert wird das Indexprofil in der xy-Ebene nur dann neu berechnet, wenn sich die <$y$>-Position der Wellenleiter um mehr als ca. 0,2 μm geändert hat; dies spart etwas Rechenzeit ein.
Mit ein paar mehr Code-Zeilen (hier nicht gezeigt) wird das numerische Gitter definiert. Dieses hat eine Ausdehnung von 50 μm in der <$x$>-Richtung, 160 μm in der <$y$>-Richtung und 22 mm (entsprechend der Gesamtlänge des Kopplers) in der <$z$>-Richtung. Die numerische Auflösung in <$x$>-, <$y$>- und <$z$>-Richtung ist 1,56 μm, 1,25 μm und 10 μm.
Ergebnisse
Nach diesen Definitionen können wir einfach die funktion bp_I(x, y, z)
für die optische Intensität in der Struktur verwenden. Die Quadratwurzel daraus (also die Amplitudeverteilung) wird in Abbildung 2 gezeigt. Man sieht, wie Licht in den unteren Wellenleiter gekoppelt wird.
Auf der rechten Seite werden die Leistungen in den zwei Ausgängen angezeigt. Wir nehmen hierfür nur die Leistung in der LP01-Mode, nicht die in möglichem Streulicht z. B. aufgrund der Biegung der Wellenleiter. Dies ist möglich, indem man den Überlapp der Amplitudenverteilung mit der LP01-Mode mit einem Flächenintegral berechnet:
P_out_1():= { output power of port 1 }
begin
var cy, d, x1, x2, y1, y2;
cy := dy * round(y_i / dy); { center position of the output port }
d := 3 * r_co;
x1 := -dx * round(d / dx);
x2 := +dx * round(d / dx);
y1 := cy - dy * round(d / dy);
y2 := cy + dy * round(d / dy);
abs2(int(int(bp_A%(x, y, z_max) * A_lm_xy(0, 1, lambda, x, y - y_i),
x := x1 to x2 step dx),
y := y1 to y2 step dy));
end
Wegen der effizienten Implementierung der Strahlpropagation in RP Fiber Power kann ein Diagramm wie oben auf einem gewöhnlichen PC innerhalb weniger Sekunden erzeugt werden.
Wir können nun den Abstand der beiden Wellenleiter in der Kopplungsregion von 20 μm auf 16 μm reduzieren. Das Licht koppelt dann weitgehend zum unteren Wellenleiter über:
Für das nächste Diagramm erhöhen wir zusätzlich die Länge der Kopplungsregion von 2 mm auf 10 mm. Wir beobachten dann ein oszillierendes Verhalten in der Kopplungsregion: