Symulacja zwierciadeł DFB i siatek Bragga za pomocą metody macierzowej transferu różnic skończonych.
W tym samouczku wykorzystujemy solver macierzowy oparty na metodzie różnic skończonych, dostarczony przez OghmaNano, do symulacji odbicia, transmisji i absorpcji światła w rozproszonym zwierciadle z informacją zwrotną (DFB) lub siatce Bragg’a. Struktury te wykorzystują okresową modulację współczynnika załamania, aby uzyskać silne, selektywne w zakresie długości fali odbicie poprzez spójne, rozproszone odbicie. W naszym poprzednim samouczku dotyczącym filtrów optycznych struktura optyczna była definiowana poprzez epitaksję urządzenia; tutaj zamiast tego używamy skryptów Lua do bezpośredniego tworzenia siatki, co pozwala na zdefiniowanie dowolnych układów i geometrii optycznych. System skryptów jest opisany bardziej szczegółowo w dokumentacji dotyczącej edytora kroków i skryptów. Następnie analizujemy, w jaki sposób siatka DFB o dwóch okresach wpływa na wynikowe widma odbicia, transmisji i absorpcji.
1. Wprowadzenie/Tło/Kontekst
W odróżnieniu od metalowego lustra, które odbija światło na pojedynczej powierzchni, lustro DFB odbija światło poprzez wielokrotne rozpraszanie na okresowej strukturze (patrz ??). Gdy okres siatki spełnia warunek Bragg’a, odbite fale interferują ze sobą w fazie, tworząc silne pasmo odbicia, czyli pasmo blokady. Położenie i szerokość tego pasma są głównie kontrolowane przez okres siatki, kontrast współczynnika załamania i liczbę okresów.
Pasmo odbicia lustra DFB jest zogniskowane na długości fali Bragga \(\lambda_B\), która jest określana przez okres siatki \(\Lambda\) i efektywny współczynnik załamania \(n_{\text{eff}}\) fali rozchodzącej się w strukturze.
\[ m\lambda_B = 2 n_{\text{eff}} \Lambda \]gdzie \(m\) oznacza rząd dyfrakcji. Efektywność siatki dyfrakcyjnej jest określana przez współczynnik sprzężenia \(\kappa\), który mierzy, jak silnie fale rozchodzące się w kierunku do przodu i do tyłu są sprzężone przez modulację współczynnika załamania \(\Delta n\). W przypadku siatki dyfrakcyjnej o w przybliżeniu kwadratowym profilu współczynnika załamania,
\[ \kappa \approx \frac{2\,\Delta n}{\lambda_B} \]Maksymalna wartość współczynnika odbicia dla jednorodnej siatki o długości \(L\) wynika z teorii sprzężonych modów i wyraża się wzorem:
\[ R = \tanh^{2}(\kappa L) \]w taki sposób, że zwiększenie zarówno kontrastu indeksu, jak i długości siatki powoduje, iż współczynnik odbicia zbliża się do wartości 1. Szerokość pasma zatrzymywania jest proporcjonalna do współczynnika sprzężenia.
\[ \Delta\lambda \approx \frac{\lambda_B^{2}\,\kappa}{\pi\, n_{\text{eff}}} \]Wysokokontrastowe struktury okresowe generują szerokie, intensywne pasma odbicia, natomiast struktury o niskim kontraście tworzą wąskie pasma. Te proste zależności wystarczają do określenia położenia pasma zatrzymywania i oszacowania jego intensywności; do dokładnego odtworzenia szczegółowego kształtu widma, jego fluktuacji i zachowania poza pasmem zatrzymywania konieczne jest pełne rozwiązanie elektromagnetyczne.
Klasyczna metoda macierzowa przenoszenia zakłada układ płaskich, nieskończenie okresowych warstw. W rzeczywistości jednak struktury dyfrakcyjne rzadko charakteryzują się idealną okresowością. Aby uwzględnić dowolne, nieokresowe lub celowo zaburzone struktury – takie jak dwuokresowa struktura dyfrakcyjna symulowana w tym samouczku – OghmaNano stosuje formalizm macierzowy przenoszenia do skończonej siatki różnic. Struktura optyczna jest dyskretyzowana w przestrzeni, a propagacja pola w kierunku do przodu i do tyłu jest rozwiązywana sekcyjnie w całej siatce. To podejście oparte na skończonych różnicach w macierzy przenoszenia zachowuje numeryczną wydajność i stabilność klasycznej metody macierzowej przenoszenia, umożliwiając jednocześnie symulację dowolnego rozkładu współczynnika załamania w przestrzeni, w tym struktur dyfrakcyjnych o więcej niż jednym okresie, z modulacją fazową, apodyzacją lub wbudowanymi zaburzeniami.
2. Jak zacząć.
Aby rozpocząć pierwsze obliczenie dla układu zwierciadeł DFB, otwórz okno „Nowa symulacja” w menu „Plik” (patrz ??). Wybierz grupę „Metoda macierzy transferu” i kliknij dwukrotnie przykład „Siatka Bragg’a (1D)” (patrz ??), a następnie zapisz symulację w folderze na dysku. Następnie pojawi się główne okno (patrz ?? i ??), wyświetlające siatkę Bragg’a o dwóch okresach. W przykładzie ładowana jest siatka Bragg’a o dwóch okresach. Odległość między węższymi siatkami wynosi 140 nm, a odległość między nieco szerszymi siatkami wynosi 218 nm. Sama siatka wykonana jest z SiO2, natomiast ośrodkiem otaczającym ją jest w tym przykładzie powietrze. Po otwarciu symulacji można obejrzeć strukturę w głównym oknie (patrz ??).
3. Uruchamianie symulacji DFB.
?? przedstawia to samo urządzenie, ale z nieco innej perspektywy. Kliknij przycisk „Uruchom symulację” (odtwórz), aby obliczyć widma (zobacz ??); po zakończeniu obliczeń wyniki pojawią się w zakładce „Wyniki” (zobacz ??). Po kliknięciu przycisku „Uruchom symulację” solver rozpoczyna iteracyjne przetwarzanie widma optycznego, obliczając wartości dla poszczególnych długości fal (zobacz ??). Każda kolorowa linia w oknie terminala (Solve optical slice at … nm) odpowiada innej długości fali, dla której prowadzone są obliczenia. Jak opisano powyżej, stosowana tutaj metoda jest w zasadzie metodą macierzy przenoszenia, zaimplementowaną na siatce różnic skończonych, co umożliwia analizę dowolnej siatki o dwóch okresach.
3. Analiza wyników.
Po zakończeniu symulacji otwórz zakładkę „Wyniki” (patrz ??), aby wyświetlić pliki wygenerowane przez obliczenia. Główne pliki używane w tym samouczku to device.csv, folder optical_output i folder optical_snapshots. Zacznij od otwarcia device.csv (patrz ??). Wyświetla to trójwymiarową siatkę urządzenia, tak jak jest ona widoczna dla programu obliczeniowego, co pozwala sprawdzić, czy geometria siatki dyfrakcyjnej została poprawnie wygenerowana i podzielona na elementy, zanim przejdziemy do analizy wyników optycznych.
Następnie kliknij dwukrotnie ikonę „optical_output”, aby otworzyć edytor symulacji optycznej. Na karcie „Częstotliwość generowania” (patrz ??) wyświetlane są obszary, w których fotony są absorbowane w strukturze. Obszary o słabej lub zerowej absorpcji odpowiadają głównie otaczającemu powietrzu, natomiast silniejsza absorpcja występuje wewnątrz siatki dyfrakcyjnej.
Zakładka „Światło odbite” (patrz ??) wyświetla długości fal, które są odbijane przez siatkę dyfrakcyjną, przy czym wyraźnie zaznaczone pasma odbicia oddzielone są obszarami o niższej zdolności odbicia. Zakładka „Światło transmitowane” (patrz ??) wyświetla odpowiadające mu spektrum transmisji, z wysoką wartością transmisji w miejscach, gdzie odbicie jest niskie.
4. Edycja materiałów optycznych
Używane w siatce dyfrakcyjnej materiały optyczne można sprawdzić i zmienić w edytorze absorpcji, do którego dostęp uzyskuje się z zakładki „Struktura urządzenia” w głównym oknie. Otwiera to edytor absorpcji (patrz ?? i ??), który wyświetla współczynnik załamania \(n\) i dane dotyczące absorpcji \(\alpha\) zarówno dla SiO2, z którego wykonana jest siatka, jak i dla otaczającego ją powietrza. Zakładka „Obiekt” (patrz ??) wyświetla materiał, z którego wykonana jest sama siatka (Oxides/SiO2), natomiast zakładka „Środowisko” (patrz ??) wyświetla otaczające ją medium (Generic/air). Tutaj można zmienić materiały na dowolne, klikając przycisk „…” w polu „Materiał optyczny”.
5. Modyfikacja struktury kratownicy.
Jeśli klikniesz prawym przyciskiem myszy na strukturze DFB, pojawią się różne opcje, w tym edytor siatki i edytor kryształu (patrz ??). Kliknięcie w edytor siatki (patrz ??) wyświetla wymiary samej siatki. Należy pamiętać, że metoda macierzy przenoszenia jest metodą jednowymiarową, więc nie ma znaczenia, jakie są pozostałe wymiary struktury – liczy się tylko szerokość wzdłuż osi propagacji, niekoniecznie pozostałe wymiary siatki. Jeśli wykonywałbyś symulację FDTD w dwóch wymiarach, drugi wymiar byłby ważniejszy.
Wybierz edytor Crystal z tego samego menu (patrz ??), aby wyświetlić skrypt Lua używany do generowania struktury dyfrakcyjnej. Zamiast definiować każdy element struktury ręcznie, cała struktura jest tworzona programowo. Kliknięcie przycisku „Odśwież” uruchamia ponownie skrypt i regeneruje geometrię. W tym przykładzie math.random wprowadza niewielką zmianę położenia, dzięki czemu struktura dyfrakcyjna nieznacznie zmienia się za każdym razem, gdy jest regenerowana. Efekt ten można zobaczyć w ??, gdzie geometria struktury dyfrakcyjnej jest aktualizowana co dwie sekundy, aby zilustrować losową zmianę wprowadzaną w okresie.
clear_points()
N = 200
radius = 1.5e-6
pitch = 3e-6
turns = 6
for i = 1, N do
t = (i / N) * turns * 2 * math.pi
-- first helix strand
x1 = radius * math.cos(t)
y1 = radius * math.sin(t)
z1 = (i / N) * turns * pitch
add_point(x1, y1, z1)
-- second helix strand offset by pi (opposite side)
x2 = radius * math.cos(t + math.pi)
y2 = radius * math.sin(t + math.pi)
add_point(x2, y2, z1)
end
Skrypt rozpoczyna się od usunięcia wszystkich wcześniej wygenerowanych punktów, a następnie definiuje parametry, które kontrolują geometrię. Główna pętla for iteruje po strukturze, przetwarzając ją element po elemencie. W każdej iteracji aktualna wartość i jest wykorzystywana do obliczenia współrzędnych następnego fragmentu geometrii, a następnie te współrzędne są dodawane do struktury za pomocą add_point(). W tej samej pętli obliczany jest drugi zestaw współrzędnych, który służy do wygenerowania odpowiadającego mu punktu po przeciwnej stronie. W przykładzie z siatką dyfrakcyjną DFB ta sama zasada jest stosowana do sekwencyjnego rozmieszczania każdego elementu siatki. Poprzez zmianę parametrów lub dodanie elementów, takich jak math.random(), skrypt może generować różne okresy, wymiary lub kontrolowane zmiany w siatce.
6. Wybór kierunku oświetlenia
Jedną z przydatnych funkcji programu OghmaNano jest to, że obliczenia macierzy przenoszenia nie ograniczają się do pojedynczego kierunku propagacji. W wielu implementacjach obliczenia dotyczą tylko warstw ułożonych jedna na drugiej, na przykład podczas epitaksji. W programie OghmaNano można natomiast wyraźnie wybrać kierunek oświetlenia, co pozwala na symulację tej samej struktury wzdłuż dowolnej z głównych osi.
Aby wybrać kierunek oświetlenia, otwórz zakładkę „Optyka” (patrz ??) i wybierz opcję „Źródła światła”, aby otworzyć edytor źródeł światła (patrz ??). Na karcie „Konfiguracja” użyj pola „Oświetlaj od”, aby wybrać jedną z opcji: x0, x1, y0, y1, z0 lub z1.
z0, przy czym źródło światła znajduje się na jednym końcu siatki.
z1, przy czym źródło światła zostało przesunięte na przeciwległy koniec.W tym przykładzie zmiana oświetlenia z z0 (patrz ??) na z1 (patrz ??) powoduje jedynie przesunięcie źródła światła na przeciwną stronę siatki. W przypadku tej symetrycznej struktury odpowiedź optyczna jest taka sama niezależnie od kierunku, ale ta opcja jest przydatna podczas badania asymetrycznych struktur lub porównywania propagacji z przeciwnych stron.
7. Podsumowanie
W tym samouczku wykorzystaliśmy OghmaNano do symulacji lustra z rozproszonym sprzężeniem zwrotnym (DFB) oraz siatki Bragg za pomocą metody macierzowej opartej na różnicach skończonych. Dowiedzieliście się, jak generować siatkę o dwóch okresach za pomocą skryptów Lua, wprowadzać kontrolowany element losowy, aby odzwierciedlić tolerancje produkcyjne, uruchamiać obliczenia optyczne i interpretować uzyskane widma odbicia, transmisji i absorpcji. Zobaczyliście również, jak można wybrać kierunek oświetlenia wzdłuż dowolnej z głównych osi, zamiast ograniczać się do ustalonego kierunku wzrostu epitaksjalnego. Te techniki można wykorzystać do badania luster laserowych DFB i DBR, siatek Bragg w światłowodach, filtrów optycznych, luster dielektrycznych i innych fotonicznych struktur selektywnych pod względem długości fali, a także bardziej złożonych siatek zawierających wiele okresów, nieuporządkowanie lub niestandardowe geometrie.