Konfiguracja solvera wykorzystującego metody dryfu i dyfuzji
Rozwiązywacz oparty na modelu dryfu i dyfuzji można skonfigurować, wybierając opcję „Konfiguruj” na pasku narzędzi „Elektryczne”. Otwiera to okno konfiguracji, w którym można dostosować parametry numeryczne, takie jak limity iteracji, dopuszczalne wartości błędów i strategie konwergencji. Te opcje pozwalają użytkownikowi kontrolować wydajność i stabilność rozwiązywacza w różnych symulacjach urządzeń.
Konfiguracja modułu obliczeniowego dla układów elektrycznych.
Silnik elektryczny firmy OghmaNano rozwiązuje ściśle powiązany zestaw nieliniowych równań (równanie Poissona + równanie dyfuzji, a także wszelkie włączone równania kinetyczne). Równania te zawierają funkcje wykładnicze i silne zależności, dlatego są rozwiązywane iteracyjnie za pomocą metody Newtona-Raphsona na jednym, globalnym jakobianie. Zazwyczaj nie będzie konieczne zmienianie domyślnych ustawień, ale panel konfiguracyjny umożliwia stabilizację trudnych przypadków, przyspieszenie rozwiązywania prostych przypadków lub analizę zachowania obliczeń.
Otwórz okno konfiguracji, przechodząc do zakładki „Electrical”, wybierając opcję „Drift–diffusion”, a następnie klikając „Configure” – zobacz DD Solver Open. Spowoduje to wyświetlenie okna przedstawionego na ilustracji DD Solver Window, w którym można dostosować sposób działania solvera i jego proces iteracji oraz konwergencji.
Za co odpowiada każda sekcja.
Panel podzielony jest na cztery główne bloki, które kontrolują różne etapy działania: pierwsza iteracja, kolejne iteracje, regulacja napięcia i strategia zakończenia. We wszystkich etapach podstawowa zasada jest taka sama: rozpoczynamy od przybliżonego rozwiązania, aktualizujemy nieznane wartości za pomocą kroków Newtona i zatrzymujemy się, gdy globalny błąd jest wystarczająco mały. Ogranicznik kontroluje maksymalną zmianę w każdym kroku, aby zapobiec przejściu solvera do obszarów, w których wyniki nie mają sensu fizycznego. Małe ograniczniki → wolniejsze, ale bardzo stabilne działanie; duże ograniczniki → szybsze, ale potencjalnie mniej stabilne.
Pierwsza iteracja
- Maksymalna liczba iteracji elektrycznych (pierwszy etap) – górna granica liczby kroków Newtona podczas pierwszego rozwiązania (często przy napięciu 0 V w ciemności). Większa wartość pomaga w trudnych sytuacjach podczas uruchamiania w niskiej temperaturze.
- Elektryczny zacisk (pierwszy krok) – określa maksymalną wartość zmiany w jednostkach Newtona w pierwszym kroku. Ogólna zasada: wartość 0,1 jest bardzo bezpieczna (powolna), 1,0 to dobra wartość domyślna, ≥2,0 może być szybka, ale mniej stabilna.
- Pożądany dopuszczalny błąd rozwiązania (pierwszy krok) – wymagana dokładność rozwiązania w pierwszym kroku (mniejsza wartość = większa dokładność, ale wolniejsze obliczenia). Typowa wartość: nie gorsza niż \(1\times10^{-5}\); dla bardziej stabilnych obliczeń można ustawić wartość w zakresie \(1\times10^{-8}\)–\(1\times10^{-9}\).
Późniejsze wersje/edycje.
- Maksymalna liczba iteracji elektrycznych – limit iteracji dla wszystkich kolejnych rozwiązań, licząc od pierwszego.
- Elektryczna obejma – podobnie jak w poprzednim przypadku, ale stosowana do każdego etapu, z wyjątkiem pierwszego. W celu przyspieszenia procesu można często zastosować mniejszy nacisk w porównaniu z pierwszym etapem.
- Pożądany margines błędu — docelowy poziom zbieżności dla poszczególnych kroków algorytmu. Należy go dostosować do wymaganej dokładności; wartości \(1\times10^{-6}\)–\(1\times10^{-8}\) są powszechnie stosowane.
Zmiana napięcia w czasie.
Podczas przechodzenia z początkowego punktu odniesienia (np. 0 V) do docelowego punktu pracy (który może wymagać wysokiego napięcia), pośrednie wartości są często jedynie punktami pośrednimi. Ten moduł umożliwia stosowanie szerszych tolerancji lub innych ograniczeń, co pozwala szybciej przechodzić przez zakres zmian, przy jednoczesnym zachowaniu ścisłych wymagań dotyczących ostatecznego punktu pracy.
- Maksymalna liczba iteracji elektrycznych (wzrost) – limit dla każdego kroku wzrostu.
- Elektryczny zacisk (rampa) — regulacja wielkości kroku podczas zmiany napięcia.
- Pożądany dopuszczalny błąd (wartość progowa) — wartość, do której dąży się w trakcie iteracji, stosowana tylko w fazie „rozbiegu”.
- Minimalna liczba iteracji metody Newtona – należy zapewnić wykonanie co najmniej takiej liczby iteracji, aby algorytm nie zakończył działania przedwcześnie tylko dlatego, że początkowa wartość reszty jest mała.
Plan wyjścia z sytuacji/inwestycji.
- Inteligentne zakończenie obliczeń metodą Newtona – jeśli reszta „oscyluje w szumie” (w górę i w dół bez wyraźnego trendu), należy przerwać iteracje i zaakceptować dotychczasowy najlepszy wynik.
- Rozwiąż prawo Kirchhoffa dotyczące prądów w programie Newton – uwzględnij ograniczenia wynikające z prawa Kirchhoffa bezpośrednio w macierzy Jacobiego, aby zapewnić lepszą ciągłość prądów.
- Zakończ obliczenia w przypadku problemów z konwergencją / Zakończ obliczenia w przypadku odwróconego poziomu Fermiego – wprowadź mechanizmy zapobiegające wystąpieniu oczywistych błędów.
Typ i narzędzia rozwiązywania problemów
- Wybierz algorytm do użycia w solverze Newtona:
none— Brak rozwiązania elektrycznego (wyłącznie rozwiązanie optyczne/termiczne).newton— Standardowy algorytm Newtona do rozwiązywania równań w jednej zmiennej.
- Rozwiązywacz macierzy / Rozwiązywacz macierzy zespolonych — wybierz silnik do rozwiązywania układów równań liniowych.
- Slotboom T0 / D0 / n0 – parametry dla
newtonnorm. - Użyj pamięci podręcznej Newtona (wersja eksperymentalna) — zapisuj duże ilości danych pośrednich na dysku, aby zmniejszyć obciążenie pamięci (wersja eksperymentalna).
- Poziom szczegółowości informacji o postępie — określa, ile informacji o przebiegu działania ma być wyświetlanych.
Praktyczne wskazówki.
Jeśli dany przypadek jest problematyczny (wysokie stężenie domieszek, ekstremalne pola, silne wstrzykiwanie), obniż zacisk i zaostrz tolerancję pierwszego kroku. W przypadku łatwych, dobrze zachowujących się przypadków, podnieś zacisk, aby zwiększyć szybkość. Użyj bloku rampowego, aby szybko przejść do pożądanego punktu pracy, a następnie zastosuj tam bardziej rygorystyczne tolerancje.
Zobacz także: punkt początkowy konfiguracji wyświetlany w DD Solver Open oraz pełne okno dialogowe w DD Solver Window.
Stabilność algorytmu rozwiązywania.
OghmaNano to program do symulacji numerycznych, który rozwiązuje zestaw ściśle powiązanych równań różniczkowych opisujących ładunek, potencjał i rekombinację. Podobnie jak każdy program do rozwiązywania problemów numerycznych, wymaga on realistycznych parametrów wejściowych, aby symulacja zakończyła się pomyślnie. Wartości dokładnie równe zero, nieskończenie duże lub rozłożone na zbyt szerokim zakresie mogą spowodować niestabilność podstawowych operacji macierzowych. Aby pomóc w uniknięciu tych problemów, w tej sekcji omówiono kilka praktycznych aspektów, które należy wziąć pod uwagę podczas konfigurowania symulacji.
Unikanie bardzo dużych i bardzo małych liczb.
Uruchom program MATLAB (lub Octave w systemie Linux) i wpisz następujące wyrażenie: \(((1e-1+1e1)-1e1)/1e-1\). Zanim naciśniesz Enter, oblicz je w pamięci: \(1e1\) i \(-1e1\) się znoszą, pozostawiając \(\frac{1e-1}{1e-1}=1\). Teraz zastąp potęgi liczby 10 przez 19 i spróbuj: \(((1e-19+1e19)-1e19)/1e-19\). Ponownie, na papierze wynik powinien wynosić \(1\).
Jednak gdy pozwolisz komputerowi na wykonanie obliczeń, wynikiem będzie \(0\), a nie \(1\). Dzieje się tak, ponieważ komputery przechowują liczby z ograniczoną precyzją (około 15–16 cyfr dziesiętnych w nowoczesnym urządzeniu). Dodając \(1e-19\) do \(1e19\), mniejsza wartość jest tracona podczas zaokrąglania, więc komputer widzi \(1.000000000000000e19\) zamiast \(1.0000000000000000001e19\). Odjęcie \(1e19\) daje dokładnie zero, a wpływ \(1e-19\) znika.
Precyzja obliczeń ma znaczenie.
Jeśli w symulacji używasz parametrów o zbyt szerokim zakresie wartości, algorytm może zacząć generować niedokładne wyniki. Staraj się unikać skrajnych wartości, zwłaszcza w przypadku parametrów związanych z mobilnością lub gęstością stanów, aby zapewnić stabilność symulacji.
Na wszystkie komputery wpływa ten problem, niezależnie od ich mocy obliczeniowej. W przypadku symulacji urządzeń oznacza to, że należy unikać zakresów parametrów, które prowadzą do tworzenia macierzy zawierających obok siebie bardzo duże i bardzo małe liczby. Na przykład, zestawienie ruchliwości \(1e-19\) i \(1e5\) spowoduje problemy numeryczne. Jest to szczególnie ważne podczas symulacji izolatorów.
Unikaj używania zer.
Wartości zerowe powodują błędy związane z dzieleniem przez zero. Nie należy ustawiać wartości zerowych dla parametrów takich jak: ruchliwość, przekrój czynny, nachylenie krzywej rozkładu lub gęstość stanów. Można natomiast stosować wartość zero dla stałych rekombinacji.
⚠️ Unikaj wartości dokładnie równych zero.
Zastąp zera bardzo małymi wartościami (np. \(1e-30\)), aby zapobiec problemom z niestabilnością numeryczną, zachowując jednocześnie przybliżenie wartości „bliskiej zeru”.
Bardzo duże zmiany w szerokości pasma wzbronionego.
Duże skoki energii w paśmie zabronionym generują gęstości nośników, które są albo bardzo małe, albo bardzo duże, co bezpośrednio prowadzi do tych samych problemów z precyzją, o których mowa w Unikanie bardzo dużych i bardzo małych liczb. Należy zapewnić wystarczająco drobny podział energii, aby uniknąć niefizycznych skoków.
🔍 Sprawdź swoją siatkę.
Jeśli dyskretyzacja przerw energetycznych jest zbyt gruba, możesz uzyskać nierealistyczne wartości gęstości nośników. Zastosuj bardziej szczegółową siatkę, aby wartości mieściły się w numerycznie stabilnym zakresie.