RP ProPulse – Simulation der Ausbreitung ultrakurzer Pulse
Überblick | Anwendung | Modell | Benutzung | Demos | Versionen |
Beispiel: Adiabatische Solitonen-Kompression
Wir untersuchen hier die adiabatische Solitonen-Kompression in einer photonic crystal fiber, bei der die chromatische Dispersion entlang der Faserstrecke immer mehr abnimmt. Hierdurch nimmt ebenfalls die Solitonen-Dauer ab. Er wird ebenfalls berücksichtigt, dass die Faser Dispersion höherer Ordnung hat, und die Nichtlinearität der Faser wird mit Berücksichtigung von self-steepening und stimulierter Raman-Streuung (SRS) modelliert.
resonator: ring
* FiberPiece [split = maxr(1,round(gamma_f(rt * dL) * dL * P_p() / phi_nl_max))]:
GDD(l) = GVD_f(l,rt * dL) * dL,
nlpol = gamma_f(rt * dL) * dL [f = f_R, h(t) = h(t), T = t_max_R, ss = 1]
resonator end
Die Faser wird in gleiche Abschnitte der Länge dL (1 cm) unterteilt. Diese Abschnitte werden formell als Element eines Resonators betrachtet, so dass die Resonatorumläufe aufeinanderfolgenden Faserstücken entsprechen. Die chromatische Dispersion wird ortsabhängig gemacht, indem man eine entsprechende GVD-Funktion einsetzt. Diese wird berechnet durch lineare Interpolation zwischen den Eigenschaften zweier verschiedener Fasern. Dieselbe Methode wird für die Nichtlinearität der Faser angewandt. Der folgende Skriptcode zeigt, wie einfach solche Dinge in RP ProPulse implementiert werden können:
; General fiber parameters:
n2_f := 2.5e-20 { m^2 / W }
include "Raman h(t) for silica.inc" { Raman response function of silica }
; Fiber 1:
n_f1 := 1.5
w_f1 := 1.4 um / 2
A_f1 := pi * w_f1^2
gamma_f1 := (2pi / lambda_ref) * n2_f / A_f1 { rad / (W * m) }
defarray D_f1[600, 1600, 100]
readlist l, D_f1[l]:
600, -120
700, -40
800, 24
900, 60
1000, 82
1100, 92
1200, 100
1300, 105
1400, 108
1500, 110
1600, 111
D_f1(l) := (if l < 600 nm then -120 else if l > 1600 nm then 111 else D_f1~~[l / nm]) * ps / (nm * km)
GVD_f1(l) := (-l^2 / (2 * pi * c)) * D_f1(l)
E_s1 := 2 * abs(GVD_f1(lambda_ref)) / (gamma_f1 * (tau0 / 1.7627))
{ soliton energy for tau0 }
z_s1 := pi * (tau0 / 1.7627)^2 / (2 * abs(GVD_f1(lambda_ref)))
; Fiber 2:
n_f2 := 1.5
w_f2 := 1.4 um / 2
A_f2 := pi * w_f2^2
gamma_f2 := (2pi / lambda_ref) * n2_f / A_f2 { rad / (W * m) }
defarray D_f2[600, 1600, 100]
readlist l, D_f2[l]:
600, -220
700, -140
800, -68
900, -25
1000, 3
1100, 22
1200, 35
1300, 45
1400, 53
1500, 57
1600, 60
D_f2(l) := (if l < 600 nm then -220 else if l > 1600 nm then 60 else D_f2~~[l / nm]) * ps / (nm * km)
GVD_f2(l) := (-l^2 / (2 * pi * c)) * D_f2(l)
; Combined fiber with adiabatic transition of parameters:
L := 2 { length in which the parameters of fiber 2 are reached }
D_f(l,z) := (1 - z / L) * D_f1(l) + (z / L) * D_f2(l)
GVD_f(l,z) := (1 - z / L) * GVD_f1(l) + (z / L) * GVD_f2(l)
gamma_f(z) := (1 - z / L) * gamma_f1 + (z / L) * gamma_f2
Das folgende Diagramm zeigt, wie die Pulsparameter sich in der Faser entwickeln. Wenn die Pulse sich augenblicklich auf die lokalen Faserparameter einstellen könnten, würde die Pulsdauer linear abfallen, wie von der gestrichelten Kurve gezeigt wird. In der Realität ist jedoch die Entwicklung nicht vollständig adiabatisch – insbesondere am Anfang, wenn die Solitonenperiode noch relativ lang ist (0,38 m). Außerdem verhindern die Dispersion dritter Ordnung und die stimulierte Ramanstreuung, dass die Pulse beliebig kurz werden. Die Ramanstreuung führt ebenfalls zu einer gewissen Verschiebung des Spektrums zu längeren Wellenlängen.
Wir können ebenfalls den resultierenden Puls mit dem interaktiven Fenster inspizieren und finden, dass seine spektrale Form verzerrt wurde:
Das Spektrum der ursprünglichen Pulse war um 1060 nm zentriert, und die stimulierte Ramanstreuung erzeugt einen starken Ausläufer des Spektrums bei längeren Wellenlängen.