Für die Behandlung von Randbedingungen wurde in Abschnitt 6.5.5 ein allgemeingültiges Schema angegeben, in dem etwas unscharf von ,,Weiterleiten`` von Gleichungsbeiträgen, von ,,Abschwächen`` und von ,,Ersatzgleichungen`` die Rede ist. Diese Begriffe können nun hier präzisiert werden, indem die Methode der Zeilentransformation vorgestellt wird, die alle mit Randbedingungen und ähnlichen Problemen zusammenhängenden Fragen auf elegante Weise beantwortet.
Die Matrix eines Gleichungssystems wird dabei aus zwei Teilen
überlagert, nämlich einem direkten Teil
(B wie boundary) und einem transformierten Teil
(S wie
segment). Der letztere wird, bevor er Bestandteil der
Systemmatrix wird, von links mit einer allgemeinen Matrix, der
sogenannten Zeilentransformationsmatrix
, multipliziert:
In ebensolcher Weise setzt sich der Rechte-Seite-Vektor
zusammen:
Die folgenden Operationen werden immer gemeinsam für die Matrix des Systems und den dazugehörigen Rechte-Seite-Vektor durchgeführt. Dabei enthält immer die rechte Seite Werte von Kontrollfunktionen, die Matrix enthält deren negative Ableitungen nach den Variablen.
Die Überlagerung (8.2, 8.3) geschieht gleich beim
Aufbau der Systemmatrix . Vom Gleichungsassembler werden drei
Arten von Funktionen zur Verfügung gestellt:
Aus den ursprünglichen Kontrollfunktionen, die im
Kapitel 2.4.2 definiert wurden, entstehen durch die
Zeilentransformation Teile der sogenannten Gesamtkontrollfunktionen,
die dann durch die Matrix zu den vollständigen
Gesamtkontrollfunktionen ergänzt werden.
An den Punkten innerhalb der Segmente ist im allgemeinen keine
besondere Zeilentransformation definiert. Dadurch, daß die
Transformationsmatrix als Einheitsmatrix vorbelegt ist, werden die
Zeilen von direkt auf
abgebildet.
Für Punkte im Segmentsinneren ist also jene Kontrollfunktion, die
Bestandteil der Matrix
ist, gleichzeitig die
Gesamtkontrollfunktion.
An Randpunkten wird der Diagonaleintrag der Transformationsmatrix
dazu benützt, die ursprüngliche Kontrollfunktion
abzuschwächen. Diese Abschwächung kann dazu dienen, um
die Einträge in der Gesamtmatrix
in die gleiche
Größenordnung zu bringen, die Gleichung also so zu skalieren, daß
sie gegenüber den anderen Gleichungen der Matrix keine extrem großen
Koeffizienten enthält. Je nach dem verwendeten Skalierer und
Präkonditionierer bei der Gleichungslösung des Gesamtsystems kann
das günstige Einflüsse auf die Konvergenzgeschwindigkeit haben.
Wenn der Diagonaleintrag der Transformationsmatrix Null ist, dann
gelangen die Einträge der zugeordneten Zeile in der Matrix
nie in die ensprechenden Zeile der Gesamtmatrix
. In diesem
Fall muß das Randbedingungsmodell, das die Abschwächung mit dem
Faktor 0, also die Auslöschung, veranlaßt hat, eine Ersatzgleichung
für diese Zeile der Matrix
in der Matrix
eintragen.
Wird dagegen die Zeile mit einem Faktor, der von Null verschieden ist,
abgeschwächt, so entsprechen die Einträge in der parallelen Zeile
der Matrix einem zusätzlichen Flußterm, der zu der
abgeschwächten Kontrollfunktion dieser Zeile addiert wird.
Nebendiagonaleinträge einer Spalte der Transformationsmatrix sorgen
für eine Weiterleitung der entsprechenden Kontrollfunktionen. So kann
zum Beispiel die Gleichung für den Elektronenstrom am Ohmschen
Kontakt nach der Vorschrift (6.31) gebildet werden, indem bei
allen angrenzenden Halbleiterboxen ein entsprechender Eintrag in die
Transformationsmatrix erfolgt, der die Kontrollfunktion der
Elektronenkonzentration in der Halbleiterrandbox zur Gleichung für den
Elektronenstrom am Kontakt weiterleitet.
Die Transformationsmatrix und die nicht transformierte Matrix
werden beide von den Modellen für die Randbedingungen
belegt, die Matrix
von den Modellen für das Segmentsinnere.
Damit ist eine funktionale Trennung in unabhängige Programmteile erreicht,
und trotzdem setzt sich die Systemmatrix aus beiden Teilbereichen
korrekt zusammen.