Strona główna Przykłady Zrzuty ekranu Instrukcja obsługi Logo Bluesky. YouTube ☰
OghmaNano Platforma do symulacji wielofizycznych procesów zachodzących w optoelektronicznych urządzeniach i systemach fotonicznych. POBIERZ Przewodnik szybkiego uruchomienia

Samouczek FDTD: Rozprzestrzenianie się zielonego światła w przestrzeni wolnej

1. Wprowadzenie: co będziesz symulować.

W tym samouczku przedstawiono silnik Finite-Difference Time-Domain (FDTD) w programie OghmaNano, wykorzystując najprostszy możliwy model fizyczny: propagację fal elektromagnetycznych w próżni. Monochromatyczne źródło zielonego światła o długości fali 530 nm jest wprowadzane do pustej przestrzeni obliczeniowej. Nie ma tam przewodników falowych, rezonatorów ani żadnych innych materiałów poza próżnią. Celem nie jest zademonstrowanie konkretnego urządzenia, lecz ukazanie zasad działania algorytmu numerycznego.

Moduł FDTD rozwiązuje równania Maxwella w dziedzinie czasu bezpośrednio na dyskretnej siatce przestrzennej. W każdym kroku czasowym pola elektryczne i magnetyczne są aktualizowane w całej siatce. Ponieważ algorytm jest wysoce zrównoleglony, OghmaNano wykonuje go przy użyciu OpenCL i automatycznie wykorzystuje dostępną kartę graficzną (GPU). Niniejszy przewodnik służy zatem zarówno jako demonstracja zasad fizycznych, jak i jako pierwsze wprowadzenie do środowiska FDTD zoptymalizowanego pod kątem wykorzystania GPU.

Po przeczytaniu tej strony stworzysz symulację, sprawdzisz rozmiar świata i strukturę siatki przestrzennej, uruchomisz solver i zobaczysz, jak zielone światło rozchodzi się w przestrzeni w trzech wymiarach.

2. Tworzenie symulacji przestrzeni wolnej.

Otwórz okno nowej symulacji i wybierz kategorię przykładów FDTD, a następnie wybierz przykład o nazwie „Przestrzeń swobodna”. Poniżej znajdują się zrzuty ekranu obu okien wyboru.

New simulation window showing the FDTD examples category.
Otwórz przykładowe pliki FDTD z nowego okna symulacji.
FDTD example list showing the Free space simulation.
Wybierz przykład dotyczący wolnej przestrzeni.

Po załadowaniu programu wyświetla się główne okno OghmaNano, prezentujące prostą, trójwymiarową scenę. Początkowo w świecie obliczeniowym znajdują się tylko źródło i obszar detektora. Kliknij prawym przyciskiem myszy w oknie 3D i włącz opcję „Pokaż obszar świata”. Pojawi się czerwona ramka, która wyznacza granice domeny FDTD.

Main OghmaNano window showing the Free space simulation. Checking the show world option.
Główne okno programu OghmaNano wyświetlające symulację wolnej przestrzeni. Sprawdzanie opcji wyświetlania świata.
Main OghmaNano window showing the Free space simulation. Showing the world box that shows the extent of the simulation domain.
Główne okno programu OghmaNano, wyświetlające symulację wolnej przestrzeni. Widoczny jest obszar symulacji, który pokazuje zakres domeny symulacji.
World size editor showing the dimensions of the FDTD simulation domain.
Edytor rozmiaru świata, dostępny poprzez przycisk „Substrate xz-size”.

Rozmiary świata można sprawdzić, klikając przycisk „Substrate xz-size” na lewym pasku narzędzi. Otwiera to edytor rozmiarów świata, w którym definiuje się fizyczne wymiary obszaru symulacji w mikrometrach. W ramach tego samouczka nie trzeba nic zmieniać; obszar został już skonfigurowany tak, aby wygodnie pomieścić kilka długości fal zielonego światła.

3. Sprawdzenie ustawień optycznych i siatki.

Następnie otwórz pasek narzędzi „Opcje” znajdujący się w górnej części okna.

Optical ribbon in OghmaNano showing the Optical mesh button.
Optyczna siatka. Kliknij „Optyczna siatka”, aby sprawdzić dyskretyzację przestrzenną.

Kliknij „Siatka optyczna”, aby otworzyć edytor siatki.

Optical mesh editor showing mesh points and wavelength range between 531 nm and 532 nm.
Ustawienia siatki optycznej, w tym rozdzielczość przestrzenna i zakres długości fal (531–532 nm).

Edytor siatki pokazuje, ile punktów siatki jest używanych w każdym kierunku przestrzennym. Parametry te określają rozdzielczość przestrzenną obliczeń FDTD. Zakres długości fal jest ustawiony między 531 nm a 532 nm, co odpowiada światłu zielonemu. W tym przykładzie parametry grubości wyświetlane w edytorze siatki są automatycznie skalowane do rozmiaru modelu i można je pominąć. Ważne jest, aby siatka przestrzenna była wystarczająco gęsta, aby zapewnić odpowiednią rozdzielczość dla długości fali elektromagnetycznej.

4. Uruchamianie solvera FDTD z wykorzystaniem akceleracji GPU.

Uruchom symulację, klikając przycisk „Uruchom symulację” lub naciskając klawisz F9. Na karcie „Terminal” będą wyświetlane informacje o solverze.

Terminal output showing the FDTD module initialising and searching for OpenCL devices.
Wyświetlane dane w terminalu podczas działania programu. Moduł FDTD inicjalizuje się, wyświetla informacje o gęstości siatki i długości fali, a następnie wyszukuje dostępne urządzenia OpenCL przed uruchomieniem pętli symulacji w czasie.
Output tab showing simulation result files including detector data and snapshots directory.
Po zakończeniu procesu, na karcie „Wyniki” wyświetlane są wygenerowane pliki, w tym dane z detektora, eksportowane ustawienia konfiguracyjne oraz katalog snapshots/, zawierający dane pomiarowe zebrane w czasie.

W oknie terminala zwróć uwagę na zielony tekst informujący o trwającym procesie wyszukiwania urządzeń OpenCL. Na tym etapie program skanuje system w poszukiwaniu kompatybilnych procesorów graficznych (GPU). W systemach wyposażonych w obsługiwaną kartę graficzną, solver wybierze GPU i uruchomi na nim pętlę obliczeniową. W przedstawionym przykładzie obliczenia są wykonywane na procesorze (CPU), który emuluje urządzenie OpenCL, ale w nowoczesnej stacji roboczej ta sama symulacja automatycznie wykorzysta procesor graficzny do przyspieszenia obliczeń.

5. Sprawdzanie wyników i zdjęć z terenu.

Po zakończeniu procesu przejdź do zakładki „Wyniki”. Wygenerowane pliki zostaną wyświetlone na tej stronie.

Later-time snapshot showing spherical wavefront propagation.
Zdjęcie wykonane w późniejszym momencie, ukazujące rozprzestrzenianie się fali świetlnej o zielonej barwie na zewnątrz.
Snapshot viewer showing green light propagating in free space.
Przeglądarka obrazów: wybierz gęstość mocy i użyj suwaków, aby analizować zmiany w czasie i przestrzeni.

Kliknij dwukrotnie folder zawierający migawki, aby otworzyć program do przeglądania migawek. Z rozwijanej listy u dołu okna wybierz opcję „gęstość mocy”. Kolorowe pole przedstawia chwilową gęstość energii elektromagnetycznej. Użyj poziomego suwaka, aby przesuwać się w czasie do przodu i do tyłu, a suwaków przestrzennych, aby analizować różne przekroje obszaru. Na niektórych komputerach, zwłaszcza podczas pracy z dużymi siatkami, program może potrzebować chwili, aby zareagować, ponieważ ładuje każdy zestaw danych.

Podczas symulacji upływu czasu można zaobserwować rozprzestrzenianie się fali w przestrzeni. W otwartej przestrzeni, bez żadnych granic ani struktur, propagacja jest jednolita i symetryczna, a ogranicza ją jedynie absorpcja na brzegach obszaru obliczeniowego.

6. Wyświetlanie mocy detektora.

Fioletowa siatka widoczna w głównym oknie reprezentuje płaszczyznę detektora umieszczoną wewnątrz obszaru symulacji. Kliknij dwukrotnie detektor 0 w zakładce „Wyniki”, aby otworzyć zapisany wykres jego mocy.

Main window showing the detector plane in purple.
Płaszczyzna detektora (fioletowa siatka) wewnątrz obszaru wolnej przestrzeni.
Detector power versus time plot.
Moc detektora w funkcji czasu.

Otrzymany wykres przedstawia zmianę mocy pola elektromagnetycznego w czasie w danym punkcie. Początkowo detektor rejestruje zerowy sygnał. W momencie, gdy czoło fali dociera do tego punktu, zmierzona moc wzrasta, a następnie stabilizuje się zgodnie z charakterystyką czasową źródła. Ta prosta konfiguracja ułatwia powiązanie wizualnej propagacji fali, widocznej na zdjęciu, z ilościowym pomiarem mocy.

Ukończyłeś właśnie swoją pierwszą symulację metodą FDTD w programie OghmaNano. Chociaż w systemie nie zdefiniowano żadnych materiałów ani urządzeń, zademonstrowano w nim pełen proces obliczeniowy: definiowanie przestrzeni, tworzenie siatki, wybór urządzenia GPU, symulacja w czasie, wizualizacja pola i odczyt danych z detektora. W kolejnych samouczkach te same narzędzia zostaną wykorzystane do modelowania bardziej złożonych systemów fotonicznych i optoelektronicznych.

7. Przyspieszenie symulacji poprzez przełączenie na tryb 2D (płaszczyzna XZ).

Często nie ma potrzeby stosowania w pełni trójwymiarowych symulacji, aby zrozumieć strukturę i działanie urządzeń, zwłaszcza gdy zasady fizyczne są zasadniczo niezmienne w jednym kierunku. W takich przypadkach można znacznie przyspieszyć obliczenia, ograniczając problem do dwóch wymiarów. Na przykład, w przypadku symulacji w przestrzeni swobodnej, przejście z modelu 3D do symulacji w płaszczyźnie XZ eliminuje cały wymiar Y z siatki obliczeniowej. W rezultacie otrzymujemy mniejszą liczbę punktów siatki, mniej danych dotyczących pola i znacznie krótszy czas obliczeń – zazwyczaj na tyle krótki, że ponowne uruchomienie symulacji staje się w praktyce interaktywne.

Aby to zrobić, wróć do zakładki „Optyka”, otwórz „Siatkę optyczną” i wybierz konfigurację siatki 2D, jak pokazano na ilustracji ??. Kluczową zmianą jest wyłączenie osi Y, dzięki czemu symulacja odbywa się w płaszczyźnie XZ.

Optical mesh editor configured for a 2D XZ simulation by suppressing the Y dimension.
Siatka optyczna skonfigurowana do symulacji 2D: wyłącz oś Y, aby przeprowadzić symulację w płaszczyźnie XZ.
Snapshot viewer in 2D showing the wave propagating in the XZ plane.
W programie do przeglądania danych w formacie 2D można szybko wyświetlić i łatwo przeanalizować zmiany pola w płaszczyźnie XZ.
FDTD editor showing output verbosity to disk set to write everything to disk.
Aby zapewnić płynniejsze odtwarzanie, zwiększ gęstość tworzonych migawek, ustawiając poziom szczegółowości danych wyjściowych na „Zapisz wszystko na dysku”.

Po zredukowaniu siatki do dwóch wymiarów, uruchom ponownie symulację. Powinieneś od razu zauważyć, że proces obliczeń kończy się niemal natychmiast, w porównaniu z modelem trójwymiarowym. Otwórz ponownie katalog snapshots/ i przeglądaj kolejne etapy symulacji w przeglądarce obrazów (??). Ponieważ zbiór danych jest znacznie mniejszy, przeglądarka nie tylko szybciej się ładuje, ale także szybciej reaguje na zmiany, gdy przesuwasz suwak czasu lub modyfikujesz ustawienia przekroju przestrzennego.

Należy pamiętać o jednej ważnej rzeczy: postrzegana płynność animacji może się zmieniać. W przypadku animacji 2D symulacja przebiega bardzo szybko, a liczba generowanych klatek jest zazwyczaj mniejsza, więc podczas przeglądania animacji w czasie może się wydawać, że jest ona nieco „szarpana” – po prostu dlatego, że między kolejnymi momentami czasowymi zapisano mniej klatek. Jeśli chcesz dokładniej prześledzić rozprzestrzenianie się fali, zwiększ ilość danych zapisywanych na dysku.

Aby to zrobić, przejdź ponownie do zakładki „Optyka”, kliknij przycisk „Symulacja FDTD”, aby otworzyć okno konfiguracji FDTD, i zmień opcję „Szczegółowość danych wyjściowych” z „Zapisuj wszystko na dysku co 8 krok” na „Zapisuj wszystko na dysku (??)”. Dzięki temu za każdym krokiem symulacji będzie tworzony migawkowy obraz. Po ponownym otwarciu okna przeglądarki migawek będziesz mógł bardzo dokładnie śledzić rozchodzenie się fali w czasie, uzyskując znacznie lepszą rozdzielczość czasową podczas odtwarzania i przewijania.