8.3.4 Die Schritte beim Aufbau des Gleichungssystems



next up previous contents
Next: 8.4 Der Gleichungslöser Up: 8.3 Der Aufbau des Previous: 8.3.3 Die Vorelimination

8.3.4 Die Schritte beim Aufbau des Gleichungssystems

Um den Gesamtablauf des Programms zu beschleunigen, ist es notwendig, zuerst die Besetzungsstruktur der Matrix, also die von Null verschiedenen Elemente, zu ermitteln. Man nennt diesen Prozeß die symbolische Assemblierung der Matrix. Jene Elemente der Matrix, die von Null verschieden sind, werden markiert. Aus dieser Information wird dann das ganzzahlige Indexfeld des MCSR-Formats erzeugt. Für die symbolische Elimination kann natürlich aus Platzgründen ebenfalls keine volle Matrix verwendet werden; sie wird mit einer Listenstruktur durchgeführt.

Der Gesamtablauf beim Aufbau des Gleichungssystems sieht folgendermaßen aus:

  1. Ermitteln der zu lösenden Größen.
  2. Ermitteln der Anzahl der Gleichungen.
  3. Erzeugen einer Listenstruktur für den symbolischen Aufbau der Transformationsmatrix und der eigentlichen Systemmatrix.
  4. Eintragen aller Einträge in der symbolischen Transformationsmatrix.
  5. Eintragen aller Einträge in der eigentlichen Systemmatrix, wobei die symbolische Transformationsmatrix benützt wird.
  6. Markieren aller zu eliminierenden Gleichungen.
  7. Sortieren der Gleichungen in nichtzueliminierende und zu eliminierende. Definition eines Permutationsvektors.
  8. Symbolische Elimination.
  9. Erzeugen der Strukturinformation der Transformations- und der Systemmatrix (der Indexfelder).
  10.   Initialisieren der reellen Datenfelder der Transformations- und der Systemmatrix.
  11. Eintragen aller Einträge in die Transformationsmatrix.
  12. Eintragen aller Einträge in die Systemmatrix.
  13. Elimination der markierten Gleichungen.
  14.   Aufruf des (meist iterativen) Lösers für das restliche System.
Von diesen Schritten muß die symbolische Assemblierung nur beim ersten Mal und nach Änderungen des Gitters/der Matrixstruktur durchgeführt werden, die Schritte 10 bis 14 sind dagegen jedesmal notwendig, wenn die Gleichungen gelöst werden sollen.

Falls nicht immer das volle System gelöst werden soll, so wird ein separates Gleichungssystem für jede benötigte Kombination von Gleichungen verwendet. Es kann immer nur ein solches Gleichungssystem gelöst werden; von jenen Gleichungssystemen, die gerade nicht aktiv sind, wird nur die Strukturinformation gespeichert, also das ganzzahlige Feld des MCSR-Formats.

Die Geschwindigkeit der Gleichungsassemblierung reicht dafür aus, daß der Aufbau des Gleichungssystems deutlich weniger Zeit braucht als das Lösen. Durch die symbolische Vorassemblierung wird beim tatsächlichen Aufbau des Gleichungssystems viel Zeit gespart, weil in dem vorsortierten ganzzahligen Feld des MCSR-Formats die Nebendiagonaleinträge schnell gefunden werden können. Diese Suche nach einem Eintrag ist der zeitbestimmende Faktor beim Aufbau der Matrix. Trotz der günstigen Struktur ist eine gewisse Zeit für die Suche notwendig. Im Vergleich zu Programmen mit fester Matrixstruktur, wie MINIMOS, ist daher eine gewisse Verlangsamung festzustellen, die aber bei einer unregelmäßigen Matrixstruktur nicht verhindert werden kann. Ein zahlenmäßiger Vergleich fällt hier schwer, weil in Programmen mit fester Matrixstruktur die Suche nicht kürzer dauert, sondern überhaupt entfällt. Im Vergleich mit den anderen Arbeitsabläufen, nämlich der Berechnung der Matrixeinträge aus den Diskretisierungsvorschriften und dem Lösen des Gleichungssystems, nimmt der Gleichungsaufbau jedenfalls nur einen Bruchteil an Prozessorzeit in Anspruch.



next up previous contents
Next: 8.4 Der Gleichungslöser Up: 8.3 Der Aufbau des Previous: 8.3.3 Die Vorelimination



Martin Stiftinger
Fri Oct 21 18:22:52 MET 1994