RP Photonics logo
RP Photonics
Modellierungs-Software
Technische Beratung zu Lasern, nichtlineare Optik, Faseroptik etc.
profitieren Sie vom Wissen und der Erfahrung eines Top-Experten!
Leistungsfähige Simulations- und Design-Software.
Nutzen Sie Computermodelle, um Ihre Laser umfassend zu verstehen!
Erfolg resultiert aus Verständnis – in der Wissenschaft wie in der industriellen Entwicklung.
Die berühmte Encyclopedia of Laser Physics and Technology – online kostenlos verfügbar!
Der ideale Ort, um Anbieter für Photonik-Produkte zu finden.
Anbieter: stellen Sie sicher, dass Ihre Produkte hier gezeigt werden!
für die effiziente Laserentwicklung und Forschung
Diese Seite gibt Ihnen einen Überblick über unsere Softwareprodukte.
RP Fiber Calculator ist ein praktisches Tool für Berechnungen zu optischen Fasern.
RP Fiber Power ist ein extrem flexibles Tool für das Design und die Optimierung für Faserlasern, Verstärkern und auch passiven Fasern.
RP Resonator ist ein besonders flexibles Tool für die Entwicklung von Laserresonatoren.
RP ProPulse kann die Pulsausbreitung in modengekoppelten Lasern und synchron gepumpten OPOs simulieren.
RP Coating ist ein besonders flexibles Designwerkzeug für dielektrische Vielschichtsysteme.
RP Q-switch kann die Entwicklung optischer Leistungen in gütegeschalteten Lasern simulieren.
Die meisten unserer Softwareprodukte bieten eine leistungsfähige Skriptsprache, die Ihnen ein ungewöhnliches Maß von Flexibilität gibt.
Hier erfahren Sie über die Software Lizenzbedingungen, Updates und Upgrades etc.
Kompetente technische Unterstützung ist eine der Schlüsselqualitäten der Software von RP Photonics.
RP Photonics hat Distributoren in verschiedenen Ländern.
Die RP Photonics Software News informieren Sie über aktuelle Entwicklungen und geben den Nutzern interessante Hinweise.
Hier können Sie Anfragen absenden, z. B. betreffend technische Details, Preise und Angebote.
en | de

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

Beispiel: Bragg-Spiegel

Hier analysieren wir die Eigenschaften eines einfachen Bragg-Spiegels, der 8 Paare von Schichten mit einer Dicke von λ / 4 enthält.

Wir betrachten zunächst den ziemlich einfachen Code zur Beschreibung dieser Struktur:

d_units: nm
l_units: nm
 
l_Bragg := 1000  { Bragg wavelength }
N_Bragg := 8  { number of layer pairs }
 
beam from superstrate
substrate: BK7
for j := 1 to N_Bragg do
begin
* SiO2, d = l / 4 at l_Bragg
* TiO2, d = l / 4 at l_Bragg
end
superstrate: air

Wir erzeugen zunächst einige Ausgaben in Textform, die in der “output area” des Programmfensters angezeigt werden:

d_tot := get_d(0)  { total thickness }
lambda_t := 0.9 * l_Bragg  { test wavelength }
show "lambda_t: ", lambda_t:f0:"nm"
show "d_tot:    ", d_tot:f0:"nm"
show "R:        ", 100 * R(lambda_t):f0:"%"
show "T_g_r:    ", T_g_r(lambda_t):d3:"s"
show "GDD_r:    ", GDD_r(lambda_t) / fs^2:f0:"fs^2"

Als Nächstes erzeugen wir ein Diagramm, welches die Reflektivitätsprofile für senkrechten Einfall sowie für den Einfall mit einem Winkel und s- bzw. p-Polarisation zeigt:

diagram 1:
 
"Reflectivity Profile"
 
x: 600, 1400
"wavelength (nm)", @x
y: 0, 100
"reflectivity (%)", @y
frame
hx
hy
legpos 420, 150
 
f: 100 * R(x), "normal incidence",
 color = red, width = 3
 
f: 100 * R_s(x, 20 deg), "20 deg s-polarized",
 color = red, width = 1, style = dashed
 
f: 100 * R_p(x, 20 deg), "20 deg p-polarized",
 color = red, width = 1, style = dotdashed

Wenn wir das Skript ausführen, erhalten wir das Folgende:

reflectivity profile of a Bragg mirror

Ein zweites Diagramm ist ein Farbdiagramm, welches die Reflektivitätsspektren für einen variablen Einfallswinkel mit p-Polarisation zeigt:

diagram 2:
 
"Reflectivity for Different Angles of Incidence"
"(for p polarization)"
 
x: 600, 1400
"wavelength (nm)", @x
y: -90, +90
"angle of incidence (°)", @y
frame
hx
hy
 
cp: color_I(R_p(x,y * deg))
reflectivity profile of a Bragg mirror

Hier wurde eine selbst definierte Farbskala verwendet. Diese basiert auf RGB-Farbwerten für einige Intensitätsstufen, die dann interpoliert werden.

Zwei weitere Diagramme, die hier nicht gezeigt sind, enthalten Plots der Gruppenverzögerung und der Gruppengeschwindigkeitsdispersion (GDD) als Funktionen der Wellenlänge.

Das nächste Diagramm zeigt, wie die optische Feldintensität innerhalb der Spiegelstruktur variiert:

optical intensities within a Bragg mirror

Als Nächstes erzeugen wir ein weiteres Farbdiagramm für das Eindringen der optischen Intensität bei verschiedenen Wellenlängen. Für eine bessere Orientierung zeigen wir auch die Grenzflächen zwischen den Schichten an:

diagram 6:
 
"Field Penetration"
 
x: 700, 1300
"wavelength (nm)", @x
y: -500, +3500
"depth in the mirror structure (nm)", @y
frame
 
! begin { show the color scale on the right side of the coordinate system }
    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(color_I / ((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: color_I((R(x); E2(y) / 4))  { color plot }
 
; Show the layer boundaries:
f: 0
f: get_z(j), style = solid, color = lightgray,
  for j := 2 to nolayers()
f: d_tot
 
"substrate", 150, (-200)c
"superstrate", 150, (d_tot + 200)c
optical intensities within a Bragg mirror

Schließlich möchten wir sehen, wie sich das Reflektivitätsprofil während des Wachstums der Struktur entwickelt. Dies benötigt ein wenig Skriptprogrammierung: Wir müssen die ursprünglichen Schichtdicken speichern und sie dann während des Plots variieren:

diagram 7:
 
"Development of Reflectivity During Fabrication"
 
x: 600, 1400
"wavelength (nm)", @x, color = labelgray
y: 0, get_d(0)
"thickness (nm)", @y, color = labelgray
frame
 
; Save thickness values in an array:
N := nolayers()
defarray d[1,N]
calc
  for j := 1 to N do d[j] := get_d(j)
 
set_d_g(d) := 
  { set the layers for growth up to a total thickness d }
  begin
    var d_tot;
    d_tot := 0;
    for j := 1 to N do
    begin
      var d_j;
      d_j := minr(d[j], d - d_tot);  { thickness of the layer }
      set_d(j, d_j);
      inc(d_tot, d_j);
    end;
  end
 
d_l := -1  { last d value set }
R_g(l,d):=  { reflectivity for a total growth thickness d }
  begin
    if d <> d_l
    then begin
         set_d_g(d);
         d_l := d;
         end;
    R(l);
  end
 
cp: color_I(R_g(x,y))
 
; Indicate layer boundaries:
f: get_z(j), color = gray, style = dashed, for j := 2 to N
reflectivity evolution of a Bragg mirror during growth

Wenn erst die ersten beiden Schichten gewachsen sind, erhalten wir eine schwache und breitbandige Reflexion. Weitere Schichtpaare erhöhen die Reflektivität, aber nur in einer begrenzten Bandbreite.

Sie sehen, dass man mit ein paar Zeilen Skriptcode alle Arten von Diagrammen erzeugen kann – nicht nur solche, die der Entwickler vorgesehen hat. Natürlich können Sie den technischen Support einsetzen, wenn Sie Hilfe bei der Erstellung neuer Arten von Diagrammen benötigen.

Ein maßgeschneidertes Formular

Für diesen Demo-Fall haben wir auch ein maßgeschneidertes Formular. Der Bildschirm sieht damit so aus:

custom form for designing Bragg mirrors

Im Folgenden sehen Sie den Anfang des Codes (im Skript), welcher das Formular definiert:

Custom form:
--------------------------------------------------------------
$font: "Arial", bold, size = 24
Bragg Mirror
$font: "Courier New", size = 11, space = 2.1
$def pwidth := 505
$box "Inputs", size = (pwidth, 0):
Material 1:             ##################
$input (combobox: "SiO2", "TiO2", "HfO2", "ZrO2") material1$
Material 2:             ##################
$input (combobox: "SiO2", "TiO2", "HfO2", "ZrO2") material2$
Bragg wavelength:       #############
$input l_Bragg_m:d6:"(n)m", min = 100e-9, max = 10e-6
Number of layer payers: ############# 
$input N_Bragg:f0, min = 0, max = 1000

Dies wird also gebraucht, um die Überschrift und die ersten vier Eingabefelder zu definieren.

Die Arbeit mit einem solchen Formular ist sehr einfach. Sie tragen einfach die Eingabewerte in die entsprechenden Felder ein und führen die Berechnungen z. B. mit der F8-Taste aus. Dann werden manche Werte in den grauen Ausgabefeldern angezeigt, und zusätzlich gibt es grafische Ausgaben (entsprechend den Formulareingaben).

arrow