RP Photonics

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

English

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

Das physikalische Modell

In einer optischen Vielschichtstruktur, bestehend aus einer Folge von dünnen Schichten aus unterschiedlichen Materialien, führt der Brechungsindexunterschied an den Grenzflächen zwischen den Schichten zu optischen Reflexionen. Diese Reflexionen interferieren alle miteinander, und insgesamt kann man eine ziemlich komplexe Situation erhalten. Abhängig von den jeweiligen Wellenlängen und Polarisationsrichtungen kann das optische Verhalten der Struktur sehr unterschiedlich ausfallen.

RP Coating benutzt einen effizienten Matrixformalismus, um die genannten Interferenzeffekte zu berechnen. Als Benutzer kommt man damit jedoch nicht in Berührung; man muss lediglich eine Beschreibung der Schichtstruktur liefern sowie weitere Inputs, um z. B. Optimierungen und grafische Ausgaben festzulegen.

Es gibt hierbei kaum Begrenzungen:

  • Die Berechnungen können im gesamten Wellenlängenbereich erfolgen, für den Brechungsindexdaten verfügbar sind.
  • Große Einfallswinkel, für die Totalreflexion auftritt, sind kein Problem.
  • Alle Materialien können optische Absorption aufweisen, außer dem Medium, von dem der einfallende Strahl kommt.
  • Alle Materialien müssen optisch isotrop sein, oder andernfalls so ausgerichtet sein, dass sie mit einem einfachen Brechungsindex beschrieben werden können.

Das Modell erlaubt die Verwendung optischer Materialien, bei denen der Brechungsindex von einem zusätzlichen Parameter abhängt – beispielsweise einer Packungsdichte oder einer chemischen Zusammensetzung. Dies erlaubt einem z. B. das Design von Rugate-Filtern, bei denen der Brechungsindex kontinuierlich (anstatt in festen Schritten) verläuft.

Materialdaten

Die Software wird geliefert mit Brechungsindexdaten für diverse gebräuchliche Materialien.

Durch die hohe Flexibilität der verwendeten Skriptsprache kann man als Benutzer einfach weitere Materialdaten hinzufügen. Für jedes Material definiert man eine Funktion für den wellenlängenabhängigen Brechungsindex, und ggf. eine weitere Funktion für die Absorption. Beispielsweise kann der Brechungsindex des SF8-Glases von Schott wie folgt definiert werden:

n_SF8(lambda) := 
   { high-index Schott glass, data from Schott catalog }
   begin
   const B1 = 1.49514446,
         B2 = 2.62529687e-1,
         B3 = 9.69567597e-1,
         C1 = 1.14990201e-2,
         C2 = 5.17170156e-2,
         C3 = 1.13458641e2;
   var l2;
   l2 := (lambda / 1e-6)^2;
   sqrt(B1 * l2 / (l2 - C1) + B2 * l2 / (l2 - C2) + B3 * l2 / (l2 - C3) + 1);
   end

Natürlich ist es auch kein Problem, tabellierte Werte zu verwenden. Man kann beispielsweise solche Daten aus einer Textdatei in ein Feld einlesen und eine Funktion definieren, die die Werte daraus nimmt und dabei interpoliert.

Hier ist ein Beispiel für ein Halbleitermaterial (AlxGa1−xAs) mit einem zusätzlichen Parameter x für die chemische Zusammensetzung:

n_AlGaAs(l,x) := 
  { Refractive index of AlGaAs for wavelength l in nm; x = content of Al (e.g. 0.25 for 25%). }
    Data from M. A. Afromowitz, Solid State Commun. 15, 59 (1974). }
  begin
  var E0, Ed, Eg2, eta, Ef2, M1, M3, E2;
  E0 := 3.65 + 0.871 * x + 0.179 * x^2;
  Ed := 36.1 - 2.45 * x;
  Eg2 := (1.424 + 1.266 * x + 0.26 * x^2)^2;
  eta := pi * Ed / (2 * E0^3 * (E0^2 - Eg2));
  Ef2 := (2 * E0^2 - Eg2);
  M1 := (Ef2^2 - Eg2^2) * eta / (2 * pi);
  M3 := (Ef2 - Eg2) * eta / pi;
  E2 := (h * c / (l * 1e-9) / e)^2;  { photon energy }
  sqrt(1 + M1 + M3 * E2 + eta / pi * E2^2 * ln((Ef2 - E2) / (Eg2 - E2)));
  end

Natürlich kann der x-Wert für jede Schicht anders sein.

Hohe Rechengeschwindigkeit

RP Coating ist nicht nur für eine praktische Anwendung, sondern auch für hohe Geschwindigkeit der numerischen Berechnungen optimiert. Dies wurde erzielt durch die Verwendung optimierter Algorithmen, die effizient implementiert wurden. Längere Rechenzeiten ergeben sich nur bei numerischen Optimierungen, bei denen eine große Zahl von Parametern variiert werden muss.

arrow