Startseite Beispiele Screenshots Benutzerhandbuch Bluesky-Logo YouTube ☰
OghmaNano Simulation von organischen/Perowskit-Solarzellen, OFETs und OLEDs DOWNLOAD Quick Start guide

Konfiguration des Drift-Diffusions-Solvers

Der Drift-Diffusions-Solver kann über die Option „Konfigurieren“ im Menüband „Elektrisch“ eingestellt werden. Dadurch wird das Konfigurationsfenster des Solvers geöffnet, in dem numerische Parameter wie Iterationsgrenzwerte, Fehlertoleranzen und Konvergenzstrategien angepasst werden können. Diese Optionen ermöglichen es dem Benutzer, die Leistung und Stabilität des Solvers für verschiedene Geräte-Simulationen zu steuern.

Konfiguration des elektrischen Solvers

Die elektrische Motor-Simulation von OghmaNano löst ein eng miteinander verknüpftes System nichtlinearer Gleichungen (Poisson-Gleichung + Drift-Diffusions-Gleichung sowie alle aktivierten kinetischen Gleichungen). Diese Gleichungen enthalten Exponentialfunktionen und starke Kopplungen, weshalb sie iterativ mithilfe einer Newton-Raphson-Methode auf einer einzigen, globalen Jacobi-Matrix gelöst werden. In der Regel müssen Sie die Standardeinstellungen nicht ändern, aber über das Konfigurationsfeld können Sie schwierige Fälle stabilisieren, einfache Fälle beschleunigen oder untersuchen, wie sich die numerischen Berechnungen verhalten.

Öffnen Sie die Konfiguration, indem Sie zum Reiter „Elektrisch“ gehen, „Drift-Diffusionsmodell“ auswählen und „Konfigurieren“ anklicken – siehe DD-Solver öffnen. Daraufhin wird das in DD-Solver-Fenster gezeigte Fenster geöffnet, in dem Sie einstellen können, wie der Solver iteriert und konvergiert.

Welche Funktionen die einzelnen Abschnitte steuern.

Das Panel ist in vier Hauptbereiche unterteilt, die verschiedene Phasen eines Durchlaufs steuern: Erste Iteration, Folgende Iterationen, Spannungsanhebung und Abbruchstrategie. In allen Phasen ist das Grundprinzip gleich: Beginnend mit einer Schätzung werden die unbekannten Variablen mit Hilfe von Newton-Schritten aktualisiert, und der Prozess wird beendet, wenn der globale Fehler ausreichend klein ist. Eine Begrenzung schränkt die maximale Aktualisierung pro Schritt ein, um zu verhindern, dass der Solver in physikalisch unrealistische Bereiche gelangt. Kleine Begrenzungen → langsamer, aber sehr stabil; große Begrenzungen → schneller, aber potenziell instabil.

Erste Iteration

Spätere Versionen

Spannungsanstieg

Wenn Sie von einem anfänglichen Ruhezustand (z. B. 0 V) zu einem gewünschten Betriebspunkt (möglicherweise einer hohen Spannung) übergehen, sind die Zwischenwerte oft nur Übergangspunkte. Mit diesem Baustein können Sie größere Toleranzen oder andere Begrenzungswerte verwenden, um den Übergang schneller durchzuführen, während die endgültigen Betriebspunktwerte weiterhin streng eingehalten werden.

Ausstiegsstrategie

Art des Solvers und verwendete Werkzeuge

Praktische Anleitungen

Wenn ein Fall besonders empfindlich ist (hohe Dotierung, extreme Felder, starke Injektion), verringern Sie die Klemmkraft und verschärfen Sie die Toleranz für den ersten Schritt. Bei einfachen, unkomplizierten Fällen können Sie die Klemmkraft erhöhen, um die Geschwindigkeit zu steigern. Verwenden Sie den Rampenblock, um schnell zu Ihrem Arbeitspunkt zu gelangen, und setzen Sie dort strengere Toleranzen durch.

Siehe auch: Der in DD Solver Open angezeigte Konfigurationseinstiegspunkt und das vollständige Dialogfenster in DD Solver Window.

Stabilität des Solvers

OghmaNano ist ein numerischer Simulator, der ein eng gekoppeltes System von Differentialgleichungen für Ladung, Potential und Rekombination löst. Wie jeder numerische Solver benötigt auch dieser physikalisch realistische Eingangsparameter, um erfolgreich zu konvergieren. Werte, die exakt null, unendlich groß sind oder über zu viele Größenordnungen verteilt sind, können dazu führen, dass die zugrunde liegenden Matrixoperationen instabil werden. Um Ihnen zu helfen, diese Probleme zu vermeiden, werden in diesem Abschnitt einige praktische Aspekte bei der Konfiguration Ihrer Simulationen erläutert.

Sehr große und sehr kleine Zahlen vermeiden

Öffnen Sie MATLAB (oder Octave unter Linux) und geben Sie den folgenden Ausdruck ein: \(((1e-1+1e1)-1e1)/1e-1\). Bevor Sie die Eingabetaste drücken, überlegen Sie sich das Ergebnis: \(1e1\) und \(-1e1\) heben sich auf, sodass \(\frac{1e-1}{1e-1}=1\) übrig bleibt. Ersetzen Sie nun die Zehnerpotenzen durch 19 und versuchen Sie Folgendes: \(((1e-19+1e19)-1e19)/1e-19\). Auch hier sollte das Ergebnis auf dem Papier \(1\) sein.

Wenn Sie jedoch den Computer die Berechnung durchführen lassen, ist das Ergebnis \(0\) und nicht \(1\). Das liegt daran, dass Computer Zahlen mit begrenzter Genauigkeit speichern (etwa 15–16 Dezimalstellen auf einem modernen Gerät). Wenn Sie \(1e-19\) zu \(1e19\) addieren, geht der kleinere Wert beim Runden verloren, sodass der Computer stattdessen \(1.000000000000000e19\) anzeigt, anstatt \(1.0000000000000000001e19\). Wenn Sie dann \(1e19\) subtrahieren, ergibt sich genau Null, und der Beitrag von \(1e-19\) verschwindet.

Die Genauigkeit bei der numerischen Darstellung ist wichtig.

Wenn Ihre Simulation Parameter umfasst, die über einen zu großen Wertebereich verteilt sind, kann die Genauigkeit des Solvers beeinträchtigt werden. Versuchen Sie, extreme Verhältnisse zu vermeiden, insbesondere bei der Mobilität oder der Zustandsdichte, um die Stabilität zu gewährleisten.

Alle Computer sind davon betroffen, unabhängig von ihrer Leistung. Für Geräte­simulationen bedeutet dies, dass Sie Parameterbereiche vermeiden sollten, die Matrizen mit sehr großen und sehr kleinen Zahlen nebeneinander erzeugen. Beispielsweise führen die Mobilitäten von \(1e-19\) zusammen mit \(1e5\) zu numerischen Problemen. Dies ist besonders wichtig bei der Simulation von Isolatoren.

Vermeiden Sie Nullen.

Nullwerte führen zu Fehlern, die durch Division durch Null entstehen. Stellen Sie die Mobilität, den Wirkungsquerschnitt für die Einfangreaktion, die Form der Enden der Verteilung oder die Zustandsdichte nicht exakt auf Null ein. Es ist jedoch zulässig, Null für Rekombinationskonstanten zu verwenden.

⚠️ Verwenden Sie keine exakten Nullen.

Ersetzen Sie Nullen durch sehr kleine Werte (z. B. \(1e-30\)), um numerische Instabilitäten zu vermeiden und gleichzeitig eine gute Annäherung an „fast Null“ zu gewährleisten.

Sehr große Veränderungen in der Bandlücke

Große Energiesprünge innerhalb der Bandlücke führen zu Trägerdichten, die entweder extrem gering oder extrem hoch sind, was direkt zu den gleichen Präzisionsproblemen führt, die in Vermeidung sehr großer und sehr kleiner Zahlen beschrieben werden. Achten Sie darauf, die Energie ausreichend fein zu diskretisieren, um physikalisch unplausible Sprünge zu vermeiden.

🔍 Überprüfen Sie Ihr Netz.

Wenn die Diskretisierung Ihrer Bandlücke zu grob ist, können unrealistische Trägerdichten entstehen. Verfeinern Sie das Netz, um die Werte innerhalb eines numerisch stabilen Bereichs zu halten.